call-engine-wx 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs.js +1 -1
- package/dist/index.esm.mjs +2 -2
- package/dist/index.mp.js +1 -1
- package/dist/index.umd.js +2 -2
- package/dist/index.umd.min.js +1 -1
- package/dist/index.umd.min.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
5
|
|
|
6
6
|
var TRTCCloud = require('@tencentcloud/trtc-component-wx');
|
|
7
|
-
var TencentCloudChat = require('@tencentcloud/lite-chat');
|
|
7
|
+
var TencentCloudChat = require('@tencentcloud/lite-chat/basic');
|
|
8
8
|
|
|
9
9
|
class EventEmitter {
|
|
10
10
|
constructor() {
|
package/dist/index.esm.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*! call-engine-wx | (c) 2024 Tencent | MIT */
|
|
2
2
|
import TRTCCloud from '@tencentcloud/trtc-component-wx';
|
|
3
|
-
import TencentCloudChat from '@tencentcloud/lite-chat';
|
|
4
|
-
export { default as TencentCloudChat } from '@tencentcloud/lite-chat';
|
|
3
|
+
import TencentCloudChat from '@tencentcloud/lite-chat/basic';
|
|
4
|
+
export { default as TencentCloudChat } from '@tencentcloud/lite-chat/basic';
|
|
5
5
|
|
|
6
6
|
class EventEmitter {
|
|
7
7
|
constructor() {
|
package/dist/index.mp.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! call-engine-wx | (c) 2024 Tencent | MIT */
|
|
2
|
-
"use strict";function t(t,e){const s={Title:(t=t||{}).title||"",Sound:t.iosSound||"",BadgeMode:t.ignoreIosBadge?1:0,IsVoipPush:t.iosPushType||0,ContentAvailable:t.enableIosBackgroundNotification?1:0,InterruptionLevel:t.iosInterruptionLevel||"",Image:t.iosImage||""},i={Sound:t.androidSound||"",Title:t.title||"",OPPOChannelID:t.androidOppoChannelId||"",OPPOCategory:t.oppoCategory||"IM",OPPONotifyLevel:t.oppoNotifyLevel||0,GoogleChannelID:t.androidFcmChannelId||"",GoogleImage:t.fcmImage||"",XiaoMiChannelID:t.androidXiaomiChannelId||"",VIVOClassification:t.androidVivoClassification||0,VIVOCategory:t.vivoCategory||"IM",HuaWeiCategory:t.androidHuaweiCategory||"IM",HuaWeiImage:t.huaweiImage||"",HonorImportance:t.honorImportance||"NORMAL",HonorImage:t.honorImage||""},r={entity:{action:2},timPushFeatures:{fcmPushType:0,fcmNotificationType:1},voip_ext:{voip_type:"call",voip_media_type:e===exports.CallMediaType.VIDEO?"video":"audio"}};return{Title:t.title||"",Description:t.description||"",Ext:JSON.stringify(r),AndroidInfo:i,ApnsInfo:s}}function e(){B&&(clearInterval(B),B=null),k="",j=0}async function s(t,e){const s=t||{},i=s.chat;if(!i||!R(i.callExperimentalAPI))return{errCode:H,errMsg:"chat.callExperimentalAPI is not available"};if(!s.callId)return{errCode:H,errMsg:"callId is required"};if(!s.terminalId)return{errCode:H,errMsg:"terminalId is required"};let r=b;e===_.Hangup&&(r=P);const o=((t,e,s,i)=>({Body:{CallId:t||"",TerminalId:e||"",ActionType:s>>>0},Head:T(i)}))(s.callId,s.terminalId,e,r);try{const t={serviceCommand:r,data:JSON.stringify(o)},e=await i.callExperimentalAPI(S,t),s=e&&e.data||e||{},n=L(s.ErrorCode)?s.ErrorCode:L(s.errorCode)?s.errorCode:0;return 0!==n?{errCode:n,errMsg:s.ErrorInfo||s.errorInfo||""}:{errCode:0,errMsg:""}}catch(t){return{errCode:t&&(t.code||t.errorCode)||H,errMsg:t&&(t.message||t.errorInfo)||"send failed"}}}function i(t){switch(t){case exports.LayoutTemplate.FLOAT:return"float";case exports.LayoutTemplate.GRID:return"grid";default:return"float"}}function r(){return{template:exports.LayoutTemplate.FLOAT,canvas:{w:Y,h:q},primaryUser:{userId:"",isLocal:0},secondaryUser:null,showRemoteInfo:0}}function o(t){const e=C&&C.EVENT||{};switch(t){case"SDK_READY":return e.SDK_READY||"sdkStateReady";case"KICKED_OUT":return e.KICKED_OUT||"kickedOut";case"USER_SIG_EXPIRED":return e.USER_SIG_EXPIRED||"userSigExpired";case"ROOM_CUSTOM_DATA_RECEIVED":return e.ROOM_CUSTOM_DATA_RECEIVED;default:return null}}function n(t,e){const s=Error(e);return s.code=t,s}Object.defineProperty(exports,"__esModule",{value:1});var a,c,h,l,u,d,f,p,I,y,m=require("@tencentcloud/trtc-component-wx"),C=require("@tencentcloud/lite-chat");class w{constructor(){this.t=new Map}on(t,e){if("function"!=typeof e)return this;let s=this.t.get(t);return s||(s=[],this.t.set(t,s)),s.push({fn:e,once:0}),this}once(t,e){if("function"!=typeof e)return this;let s=this.t.get(t);return s||(s=[],this.t.set(t,s)),s.push({fn:e,once:1}),this}off(t,e){if(!t)return this.t.clear(),this;const s=this.t.get(t);if(!s)return this;if(!e)return this.t.delete(t),this;const i=s.filter(t=>t.fn!==e);return 0===i.length?this.t.delete(t):this.t.set(t,i),this}emit(t,...e){const s=this.t.get(t);if(!s||0===s.length)return 0;const i=s.slice();for(const s of i){try{s.fn.apply(null,e)}catch(t){}s.once&&this.off(t,s.fn)}return 1}removeAllListeners(t){return t?this.t.delete(t):this.t.clear(),this}listenerCount(t){const e=this.t.get(t);return e?e.length:0}}exports.CallStatus=void 0,(a=exports.CallStatus||(exports.CallStatus={}))[a.NONE=0]="NONE",a[a.WAITING=1]="WAITING",a[a.CALLING=2]="CALLING",exports.CallRole=void 0,(c=exports.CallRole||(exports.CallRole={}))[c.NONE=0]="NONE",c[c.CALLER=1]="CALLER",c[c.CALLEE=2]="CALLEE",exports.CallMediaType=void 0,(h=exports.CallMediaType||(exports.CallMediaType={}))[h.UNKNOWN=0]="UNKNOWN",h[h.AUDIO=1]="AUDIO",h[h.VIDEO=2]="VIDEO",exports.CallScene=void 0,(l=exports.CallScene||(exports.CallScene={}))[l.NONE=0]="NONE",l[l.GROUP=1]="GROUP",l[l.MULTI=2]="MULTI",l[l.SINGLE=3]="SINGLE",exports.IOSOfflinePushType=void 0,(u=exports.IOSOfflinePushType||(exports.IOSOfflinePushType={}))[u.APNs=0]="APNs",u[u.VoIP=1]="VoIP",exports.CallInvitationResultCodeType=void 0,(d=exports.CallInvitationResultCodeType||(exports.CallInvitationResultCodeType={}))[d.SUCCESS=0]="SUCCESS",d[d.INVITED=1]="INVITED",d[d.LINE_BUSY=2]="LINE_BUSY",exports.CallEndReason=void 0,(f=exports.CallEndReason||(exports.CallEndReason={}))[f.UNKNOWN=0]="UNKNOWN",f[f.HANGUP=1]="HANGUP",f[f.REJECT=2]="REJECT",f[f.NO_RESPONSE=3]="NO_RESPONSE",f[f.OFFLINE=4]="OFFLINE",f[f.LINE_BUSY=5]="LINE_BUSY",f[f.CANCELED=6]="CANCELED",f[f.OTHER_DEVICE_ACCEPTED=7]="OTHER_DEVICE_ACCEPTED",f[f.OTHER_DEVICE_REJECT=8]="OTHER_DEVICE_REJECT",f[f.END_BY_SERVER=9]="END_BY_SERVER",exports.LOG_LEVEL=void 0,(p=exports.LOG_LEVEL||(exports.LOG_LEVEL={}))[p.DEBUG=0]="DEBUG",p[p.INFO=1]="INFO",p[p.WARN=2]="WARN",p[p.ERROR=3]="ERROR",p[p.NONE=4]="NONE",exports.CameraPosition=void 0,(I=exports.CameraPosition||(exports.CameraPosition={}))[I.FRONT=1]="FRONT",I[I.BACK=0]="BACK",exports.AudioPlayBackDevice=void 0,(y=exports.AudioPlayBackDevice||(exports.AudioPlayBackDevice={}))[y.SPEAKER=0]="SPEAKER",y[y.EAR=1]="EAR";const _=Object.freeze({None:0,AcceptedByInvitee:1,RejectedByInvitee:2,NoResponseUntilTimeout:3,Hangup:4,Join:5,Offline:6,InviteUser:7}),x=Object.freeze({ERR_FAILED:-1}),E=Object.freeze({ERROR:"onError",SDK_READY:"sdkReady",KICKED_OUT:"onKickedOffline",onUserSigExpired:"onUserSigExpired",ON_CALL_BEGIN:"onCallBegin",ON_CALL_END:"onCallEnd",ON_CALL_RECEIVED:"onCallReceived",ON_CALL_CANCELED:"onCallCanceled",ON_CALL_NOT_CONNECTED:"onCallNotConnected",INVITED:"onInvited",USER_ENTER:"onUserJoin",USER_LEAVE:"onUserLeave",VIEW_LAYOUT_CHANGED:"viewLayoutChanged"}),g="function",L=t=>"number"==typeof t,v=t=>typeof Array.isArray===g?Array.isArray(t):"array"===A(t),R=t=>typeof t===g,A=t=>({}.toString.call(t).match(/^\[object (.*)\]$/)[1].toLowerCase());let N=null;const T=t=>{const e=(()=>{if(N)return N;const t={osName:"Unknown",osVersion:"0.0.0",deviceName:"Unknown"};try{const e="undefined"!=typeof wx?wx:null,s="undefined"!=typeof uni?uni:null;if(e&&"function"==typeof e.getSystemInfoSync){const s=e.getSystemInfoSync()||{},[i="Unknown",r="0.0.0"]=((s.system||"")+"").split(" ");t.osName=i,t.osVersion=r,t.deviceName=s.model||s.brand||"Unknown"}else if(s&&"function"==typeof s.getSystemInfoSync){const e=s.getSystemInfoSync()||{},[i="Unknown",r="0.0.0"]=((e.system||"")+"").split(" ");t.osName=i,t.osVersion=r,t.deviceName=e.model||e.brand||"Unknown"}else if("undefined"!=typeof navigator&&navigator.userAgent){const e=navigator.userAgent;if(/Mac OS X/i.test(e)){t.osName="MacOS";const s=e.match(/Mac OS X ([\d_\.]+)/);t.osVersion=s?s[1].replace(/_/g,"."):"0.0.0",t.deviceName="Mac"}else if(/Windows/i.test(e)){t.osName="Windows";const s=e.match(/Windows NT ([\d\.]+)/);t.osVersion=s?s[1]:"0.0.0",t.deviceName="PC"}else if(/Android/i.test(e)){t.osName="Android";const s=e.match(/Android ([\d\.]+)/);t.osVersion=s?s[1]:"0.0.0",t.deviceName="Android"}else if(/iPhone|iPad|iPod/i.test(e)){t.osName="iOS";const s=e.match(/OS ([\d_]+)/);t.osVersion=s?s[1].replace(/_/g,"."):"0.0.0",t.deviceName=/iPad/i.test(e)?"iPad":"iPhone"}}}catch(t){}return N=t,t})();return{Command:t,DeviceName:e.deviceName,LongPollingKey:"",OSName:e.osName,OSVersion:e.osVersion,RoomId:"",SdkVersion:"1.0.0.0",Version:2}},O=(t={})=>{let e=exports.CallScene.NONE;const s=t.userIDList||[];return s.length>1&&(e=exports.CallScene.MULTI),1===s.length&&(e=exports.CallScene.SINGLE),{callId:t.callId||"",roomId:{strRoomId:t.strRoomID||t.strRoomId||"",intRoomId:t.roomID||t.roomId||0},inviter:t.inviter||"",inviteeList:s,groupId:t.chatGroupID||"",mediaType:t.type,status:t.status||exports.CallStatus.NONE,role:t.role||exports.CallRole.NONE,scene:e,callStartTime:0}},D=Object.freeze({IntRoomId:1,StrRoomId:2}),S="sendTRTCCustomData",M="call_engine_srv.start_call",U="call_engine_srv.heart_beat",b="call_engine_srv.handle_call",P="call_engine_srv.hangup",V="call_engine_srv.cancel_invite",G="call_engine_srv.get_invitation",H=-1,K={errCode:0,errMsg:"",inviteId:"",callResultList:[]};let B=null,k="",j=0;const F={CMD_START_CALL:M,CMD_HEART_BEAT:U,CMD_HANDLE_CALL:b,CMD_HANGUP_CALL:P,CMD_CANCEL_CALL:V,CMD_GET_INVITATION:G,HEARTBEAT_INTERVAL_MS:2e3,HEARTBEAT_FAIL_RETRY_DEFAULT:5,HEARTBEAT_FAIL_INTERVAL_MS:2e3,async startCall(e){const s=e||{},i=s.chat;if(!i||!R(i.callExperimentalAPI))return{...K,errCode:H,errMsg:"chat.callExperimentalAPI is not available"};if(!s.inviter)return{...K,errCode:H,errMsg:"inviter is required"};if(!v(s.userIdList)||0===s.userIdList.length)return{...K,errCode:H,errMsg:"userIdList cannot be empty"};if(s.mediaType!==exports.CallMediaType.AUDIO&&s.mediaType!==exports.CallMediaType.VIDEO)return{...K,errCode:H,errMsg:"invalid mediaType"};const r={roomId:s.roomId||{},timeout:s.timeout,userData:s.userData,isEphemeralCall:!!s.isEphemeralCall,offlinePushInfo:s.offlinePushInfo},o=((e,s,i,r,o)=>{const n=r||{},a=n.roomId||{},c={CallId:"",CallMediaType:i>>>0};"number"==typeof a.intRoomId&&a.intRoomId>0?(c.RoomId=a.intRoomId+"",c.RoomIdType=D.IntRoomId):a.intRoomId&&0!==a.intRoomId||"string"!=typeof a.strRoomId||0>=a.strRoomId.length||(c.RoomId=a.strRoomId,c.RoomIdType=D.StrRoomId),c.ExcludeFromHistoryMessage=0,c.GroupId=o||"",c.IsEphemeralCall=!!n.isEphemeralCall;const h="number"==typeof n.timeout?n.timeout:30;return{Body:{Caller_Account:e,CalleeList_Account:(s||[]).slice(),CallInfo:c,Timeout:1e3*h,UserData:n.userData||"",OfflinePushInfo:t(n.offlinePushInfo,i)},Head:T("call_engine_srv.start_call")}})(s.inviter,s.userIdList,s.mediaType,r,s.groupId||"");let n;try{const t={serviceCommand:M,data:JSON.stringify(o)};n=await i.callExperimentalAPI(S,t)}catch(t){const e=t&&(t.code||t.errorCode)||H,s=t&&(t.message||t.errorInfo)||"send failed";return{...K,errCode:e,errMsg:s}}const a=n&&n.data||n||{};return 0!==a.ErrorCode?{...K,errCode:a.ErrorCode,errMsg:a.ErrorInfo}:{errCode:a?.ErrorCode||0,errMsg:a?.errMsg||"",inviteId:a?.Response?.CallId||"",callResultList:a?.Response?.CallResult||[]}},startHeartBeat(t){const s=t||{},{chat:i,callId:r,userId:o}=s;if(!i||!R(i.callExperimentalAPI))return;if(!r||!o)return;e();const n=L(s.intervalMs)&&s.intervalMs>0?s.intervalMs:2e3,a=L(s.retryCount)&&s.retryCount>0?s.retryCount:5;k=r,B=setInterval(async()=>{if(!k||k!==r)return;const t=await(async(t,e,s)=>{const i={Body:{User_Account:s,CallId:e},Head:T(U)};try{const e={serviceCommand:U,data:JSON.stringify(i)},s=await t.callExperimentalAPI(S,e),r=s&&s.data||s||{},o=L(r.ErrorCode)?r.ErrorCode:L(r.errorCode)?r.errorCode:0;return 0!==o?{errCode:o,errMsg:r.ErrorInfo||r.errorInfo||""}:{errCode:0,errMsg:""}}catch(t){return{errCode:t&&(t.code||t.errorCode)||H,errMsg:t&&(t.message||t.errorInfo)||"send failed"}}})(i,r,o);if(k&&k===r)if(0!==t.errCode){if(j+=1,j>=a){const t=k;if(e(),"function"==typeof s.onTimeout)try{s.onTimeout(t)}catch(t){}}}else j=0},n)},stopHeartBeat:e,async accept(t){return s(t,_.AcceptedByInvitee)},async reject(t){return s(t,_.RejectedByInvitee)},async hangup(t){return s(t,_.Hangup)},async cancel(t){const e=t||{},s=e.chat;if(!s||!R(s.callExperimentalAPI))return{errCode:H,errMsg:"chat.callExperimentalAPI is not available"};if(!e.callId)return{errCode:H,errMsg:"callId is required"};if(!e.inviter)return{errCode:H,errMsg:"inviter is required"};if(!v(e.calleeList)||0===e.calleeList.length)return{errCode:H,errMsg:"calleeList cannot be empty"};const i=(r=e.inviter,o=e.callId,n=e.calleeList,a=V,{Body:{CallId:o||"",Operator_Account:r||"",CalleeList_Account:Array.isArray(n)?n.filter(Boolean):[]},Head:T(a)});var r,o,n,a;try{const t={serviceCommand:V,data:JSON.stringify(i)},e=await s.callExperimentalAPI(S,t),r=e&&e.data||e||{},o=L(r.ErrorCode)?r.ErrorCode:L(r.ErrorCode)?r.errorCode:0;return 0!==o?{errCode:o,errMsg:r.ErrorInfo||r.errorInfo||""}:{errCode:0,errMsg:""}}catch(t){return{errCode:t&&(t.code||t.errorCode)||H,errMsg:t&&(t.message||t.errorInfo)||"send failed"}}},async getInvitation(t){const e=t||{},s=e.chat;if(!s||!R(s.callExperimentalAPI))return{errCode:H,errMsg:"chat.callExperimentalAPI is not available",data:null};if(!e.userId)return{errCode:H,errMsg:"userId is required",data:null};const i={Body:{User_Account:e.userId||""},Head:T(G)};var r;try{const t={serviceCommand:G,data:JSON.stringify(i)},e=await s.callExperimentalAPI(S,t),o=e&&e.data||e||{},n=L(o.ErrorCode)?o.ErrorCode:L(o.ErrorCode)?o.errorCode:0;if(0!==n)return{errCode:n,errMsg:o.ErrorInfo||o.errorInfo||"",data:null};const a=o?.Response;return a&&null!==(r=a)&&"object"==typeof r&&0!==Object.keys(a).length?{errCode:0,errMsg:"",data:a}:{errCode:0,errMsg:"",data:null}}catch(t){return{errCode:t&&(t.code||t.errorCode)||H,errMsg:t&&(t.message||t.errorInfo)||"send failed",data:null}}}};var W,J;exports.LayoutTemplate=void 0,(W=exports.LayoutTemplate||(exports.LayoutTemplate={}))[W.FLOAT=0]="FLOAT",W[W.GRID=1]="GRID",(t=>{t[t.NONE=0]="NONE",t[t.WAITING=1]="WAITING",t[t.CALLING=2]="CALLING"})(J||(J={}));const Y=720,q=1280,$={x:480,y:80,w:200,h:300};class X{constructor(){this.currentTemplate=exports.LayoutTemplate.FLOAT,this.largeViewUserId="",this.isViewReversed=0,this.currentLayout=r(),this.previousLayout=r()}setLayoutTemplate(t){this.currentTemplate=t,this.largeViewUserId="",this.isViewReversed=0}setLargeViewUser(t){this.largeViewUserId===t?this.largeViewUserId="":this.largeViewUserId=t}toggleViewReversed(){this.isViewReversed=!this.isViewReversed}getCurrentTemplate(){return this.currentTemplate}getCurrentLayout(){return this.currentLayout}recalculate(t){switch(this.previousLayout=this.currentLayout,this.currentTemplate){case exports.LayoutTemplate.FLOAT:this.currentLayout=this.calculateFloatLayout(t);break;case exports.LayoutTemplate.GRID:this.currentLayout=this.calculateGridLayout(t)}return this.isLayoutChanged()}toJson(){return JSON.stringify(this.toJsonObject())}toJsonObject(){const t=this.currentLayout,e={template:i(t.template)};return t.template===exports.LayoutTemplate.FLOAT?(e.canvas={w:t.canvas.w,h:t.canvas.h},e.primaryUser={userId:t.primaryUser.userId,isLocal:t.primaryUser.isLocal},t.secondaryUser?e.secondaryUser={userId:t.secondaryUser.userId,isLocal:t.secondaryUser.isLocal,frame:{...t.secondaryUser.frame}}:e.secondaryUser=null,e.showRemoteInfo=t.showRemoteInfo):(e.canvas={w:t.canvas.w,h:t.canvas.h},e.participants=t.participants.map(t=>({userId:t.userId,frame:{...t.frame},isLocal:t.isLocal,showName:t.showName}))),e}isLayoutChanged(){const t=this.previousLayout,e=this.currentLayout;if(t.template!==e.template)return 1;if(e.template===exports.LayoutTemplate.FLOAT&&t.template===exports.LayoutTemplate.FLOAT)return t.primaryUser.userId!==e.primaryUser.userId||(t.secondaryUser?t.secondaryUser.userId:"")!==(e.secondaryUser?e.secondaryUser.userId:"")||t.showRemoteInfo!==e.showRemoteInfo?1:0;if(e.template===exports.LayoutTemplate.GRID&&t.template===exports.LayoutTemplate.GRID){if(t.participants.length!==e.participants.length)return 1;for(let s=0;s<e.participants.length;s++){const i=t.participants[s],r=e.participants[s];if(i.userId!==r.userId)return 1;if(i.frame.x!==r.frame.x)return 1;if(i.frame.y!==r.frame.y)return 1;if(i.frame.w!==r.frame.w)return 1;if(i.frame.h!==r.frame.h)return 1;if(i.showName!==r.showName)return 1}return 0}return 1}calculateFloatLayout(t){const e=t.selfId;let s="";for(const i of t.allParticipants)if(i.id!==e){s=i.id;break}const i=t.selfStatus===J.CALLING,r=t.mediaType===exports.CallMediaType.AUDIO;let o,n,a,c;return i||r?!i&&r||r?(o=s,n=0,a=null,c=1):(this.isViewReversed?(o=e,n=1,a={userId:s,isLocal:0,frame:{...$}}):(o=s,n=0,a={userId:e,isLocal:1,frame:{...$}}),c=0):(o=e,n=1,a=null,c=1),{template:exports.LayoutTemplate.FLOAT,canvas:{w:Y,h:q},primaryUser:{userId:o,isLocal:n},secondaryUser:a,showRemoteInfo:c}}calculateGridLayout(t){const e=new Map;for(const s of t.allParticipants)e.set(s.id,s.status);const s=[];if(t.inviter){const i=e.get(t.inviter);void 0!==i&&i!==J.NONE&&s.push(t.inviter)}for(const i of t.inviteeList){const t=e.get(i);void 0!==t&&t!==J.NONE&&s.push(i)}const i=this.calculateGridPositions(s.length,s,t.selfId);return{template:exports.LayoutTemplate.GRID,canvas:{w:Y,h:q},participants:i}}calculateGridPositions(t,e,s){const i=[];if(0>=t)return i;const r=240,o=360;let n=-1;if(this.largeViewUserId)for(let s=0;t>s;s++)if(e[s]===this.largeViewUserId){n=s;break}if(n>=0&&4>=t){const o=[n];for(let e=0;t>e;e++)e!==n&&o.push(e);const a=r,c=t-1,h=[{x:0,y:0,w:Y,h:Y}],l=Y;for(let t=0;c>t;t++)h.push({x:t*a,y:l,w:a,h:a});for(let t=0;t<o.length&&t<h.length;t++){const r=e[o[t]];i.push({userId:r,frame:h[t],isLocal:r===s,showName:0===t})}return i}if(n>=0&&t>4){const o=480,a=480,c=[n];for(let e=0;t>e;e++)e!==n&&c.push(e);{const t=e[c[0]];i.push({userId:t,frame:{x:0,y:0,w:o,h:a},isLocal:t===s,showName:1})}let h=1;if(h<c.length){const t=e[c[h]];i.push({userId:t,frame:{x:o,y:0,w:r,h:r},isLocal:t===s,showName:0}),h++}if(h<c.length){const t=e[c[h]];i.push({userId:t,frame:{x:o,y:r,w:r,h:r},isLocal:t===s,showName:0}),h++}let l=a;for(;h<c.length;){for(let t=0;3>t&&h<c.length;t++){const o=e[c[h]];i.push({userId:o,frame:{x:t*r,y:l,w:r,h:r},isLocal:o===s,showName:0}),h++}l+=r}return i}if(1===t)i.push({userId:e[0],frame:{x:0,y:0,w:Y,h:q},isLocal:e[0]===s,showName:0});else if(2===t)i.push({userId:e[0],frame:{x:0,y:0,w:o,h:o},isLocal:e[0]===s,showName:0}),i.push({userId:e[1],frame:{x:o,y:0,w:o,h:o},isLocal:e[1]===s,showName:0});else if(3===t)i.push({userId:e[0],frame:{x:0,y:0,w:o,h:o},isLocal:e[0]===s,showName:0}),i.push({userId:e[1],frame:{x:o,y:0,w:o,h:o},isLocal:e[1]===s,showName:0}),i.push({userId:e[2],frame:{x:180,y:o,w:o,h:o},isLocal:e[2]===s,showName:0});else if(4===t)i.push({userId:e[0],frame:{x:0,y:0,w:o,h:o},isLocal:e[0]===s,showName:0}),i.push({userId:e[1],frame:{x:o,y:0,w:o,h:o},isLocal:e[1]===s,showName:0}),i.push({userId:e[2],frame:{x:0,y:o,w:o,h:o},isLocal:e[2]===s,showName:0}),i.push({userId:e[3],frame:{x:o,y:o,w:o,h:o},isLocal:e[3]===s,showName:0});else{let o=0;for(let n=0;t>n;n+=3){const a=Math.min(3,t-n);for(let t=0;a>t;t++){const a=n+t;i.push({userId:e[a],frame:{x:t*r,y:o,w:r,h:r},isLocal:e[a]===s,showName:0})}o+=r}}return i}}const Q=new w,z=Object.freeze(["onEnterRoom","onExitRoom","onSwitchRole","onError","onWarnning","onRemoteUserEnterRoom","onRemoteUserLeaveRoom","onUserVideoAvailable","onUserSubStreamAvailable","onUserAudioAvailable","onUserVoiceVolume","onNetworkQuality","onFirstVideoFrame","onSendFirstLocalVideoFrame","onSendFirstLocalAudioFrame","onMicDidReady"]);class Z{constructor(t){const e=t||{};this.i=new w,this.o=e.SDKAppID||e.sdkAppID||0,this.l="",this.u="",this.p=0,this.I=0,this.m=null,this.C=0,this._=null,this.L=O(),this.v=0,this.R="",this.A=new X;const s=e.chat||e.tim;s&&(this.p=1,this.N=s)}static createInstance(t){return Z.instance||(Z.instance=new Z(t)),Z.instance}static once(t,e){"ready"===t?"function"==typeof e&&Promise.resolve().then(()=>{try{e()}catch(t){}}):Q.once(t,e)}async login(t){const e=t||{},s=e.userID,i=e.userSig,r=e.sdkAppID||e.SDKAppID||this.o;if(!s||!i)throw n(x.ERR_FAILED,"login: userID and userSig are required");!this.o&&r&&(this.o=r),this.l=s,this.u=i,this.T();try{if(this.N=C.create({SDKAppID:this.o,devMode:1}),this.O())return void this.D();let t;try{t=await this.N.login({userID:s,userSig:i});try{this.getTRTCCloudInstance()}catch(t){}}catch(t){const e=t&&t.code,s=t&&t.message||"";if(2024===e||2025===e)return void this.D();if(this.S&&(/timeout/i.test(s)||"NETWORK_TIMEOUT"===e))return void this.D();throw t}if(t&&t.data&&t.data.repeatLogin)return void this.D();this.D()}catch(t){const e=t&&t.code||x.ERR_FAILED,s=t&&t.message||"login failed";throw this.i.emit(E.ERROR,{code:e,message:s}),n(e,s)}}async logout(){this.M();try{this.N&&"function"==typeof this.N.logout&&await this.N.logout()}finally{this.l="",this.u=""}}async destroyInstance(){Z.instance=null;try{await this.logout()}catch(t){}this.U(),this.P(),this.i.removeAllListeners(),this.m=null}on(t,e){this.i.on(t,e)}off(t,e){this.i.off(t,e)}once(t,e){this.i.once(t,e)}getTim(){return this.N}getTRTCCloudInstance(){if(this.m)return this.m;if(!m||"function"!=typeof m.getTRTCShareInstance)throw n(x.ERR_FAILED,"[call-engine-wx] @tencentcloud/trtc-component-wx is not installed or does not expose getTRTCShareInstance().");return this.m=m.getTRTCShareInstance(),this.V(),this.m}setLogLevel(t){try{this.N&&"function"==typeof this.N.setLogLevel&&this.N.setLogLevel(t)}catch(t){}}async calls(t){if(!this.O()&&!this.S)throw n(x.ERR_FAILED,"calls: not logged in. Call login() first and wait for SDK_READY.");if(this.v)throw n(x.ERR_FAILED,"calls: a previous calls() is still in progress");if(this.L.status!==exports.CallStatus.NONE)throw n(x.ERR_FAILED,"calls: there is an active call already; hang up before starting a new one");if(!v(t?.userIDList)||0===t?.userIDList?.length)throw n(x.ERR_FAILED,"calls: userIDList cannot be empty");if(t?.type!==exports.CallMediaType.AUDIO&&t?.type!==exports.CallMediaType.VIDEO)throw n(x.ERR_FAILED,"calls: invalid mediaType");const e=this.G();if(!e)throw n(x.ERR_FAILED,"calls: cannot resolve login user id");var s;this.L=O({...t,strRoomId:(s=t?.strRoomID,s||"roomId_"+Math.floor(1e6*Math.random())),status:exports.CallStatus.WAITING,role:exports.CallRole.CALLER,inviter:e}),this.v=1;let i=0;try{try{await this.H(),i=1}catch(t){this.K();const e=t&&t.code||x.ERR_FAILED,s=t&&t.message||"enter TRTC room failed";throw this.i.emit(E.ERROR,{code:e,message:s}),n(e,s)}const t=await F.startCall({chat:this.N,...this.L,userIdList:this.L.inviteeList});if(0!==t.errCode)throw this.K(),i=0,this.i.emit(E.ERROR,{code:t.errCode,message:t.errMsg}),n(t.errCode,t.errMsg||"start_call failed");this.L.callId=t.inviteId,this.L.callStartTime=Date.now();let e=0;for(const s of t.callResultList)switch(s.resultCode){case exports.CallInvitationResultCodeType.INVITED:this.i.emit(E.USER_ENTER,s.userId);break;case exports.CallInvitationResultCodeType.SUCCESS:this.i.emit("onUserInviting",s.userId);break;case exports.CallInvitationResultCodeType.LINE_BUSY:this.i.emit("onUserLineBusy",s.userId),e++}if(e>=this.L.inviteeList.length){const e=t.callResultList[t.callResultList.length-1];return this.K(),i=0,this.i.emit(E.ON_CALL_NOT_CONNECTED,{callInfo:{...this.L},userId:e?e.userId:"",reason:exports.CallEndReason.LINE_BUSY}),this.M(),{inviteId:t.inviteId,roomId:this.L,callResultList:t.callResultList}}return F.startHeartBeat({chat:this.N,callId:this.L.callId,userId:this.L.inviter,onTimeout:t=>{this.L.callId===t&&(this.i.emit(E.ON_CALL_NOT_CONNECTED,{callInfo:{...this.L},userId:this.L.inviter,reason:exports.CallEndReason.LINE_BUSY}),this.K(),this.M())}}),{inviteId:t.inviteId,roomId:this.L,callResultList:t.callResultList}}catch(t){throw i&&this.K(),this.M(),t}finally{this.v=0}}async accept(){if(!this.O()&&!this.S)throw n(x.ERR_FAILED,"accept: not logged in. Call login() first and wait for SDK_READY.");if(this.L.role!==exports.CallRole.CALLEE)throw n(x.ERR_FAILED,"accept: current role is not CALLEE");if(this.L.status!==exports.CallStatus.WAITING)throw n(x.ERR_FAILED,`accept: invalid call status ${this.L.status}; expected WAITING`);const t=this.L.callId;if(!t)throw n(x.ERR_FAILED,"accept: no active invitation (callId is empty)");let e=0;try{await this.H(),e=1;const s=this.B(),i=await F.accept({chat:this.N,callId:t,terminalId:s});if(0!==i.errCode)throw n(i.errCode,i.errMsg||"handle_call(accept) failed");return this.L.status=exports.CallStatus.CALLING,this.L.callStartTime=Date.now(),this.i.emit(E.ON_CALL_BEGIN,{callInfo:{...this.L}}),F.startHeartBeat({chat:this.N,callId:this.L.callId,userId:this.G(),onTimeout:t=>{this.L.callId===t&&(this.i.emit(E.ON_CALL_NOT_CONNECTED,{callInfo:{...this.L},userId:this.G(),reason:exports.CallEndReason.LINE_BUSY}),this.K(),this.M())}}),{callId:t,roomId:this.L.roomId}}catch(t){e&&this.K(),this.M();const s=t&&t.code||x.ERR_FAILED,i=t&&t.message||"accept failed";throw this.i.emit(E.ERROR,{code:s,message:i}),n(s,i)}}async reject(){if(!this.O()&&!this.S)throw n(x.ERR_FAILED,"reject: not logged in. Call login() first and wait for SDK_READY.");if(this.L.role!==exports.CallRole.CALLEE)throw n(x.ERR_FAILED,"reject: current role is not CALLEE");if(this.L.status!==exports.CallStatus.WAITING)throw n(x.ERR_FAILED,`reject: invalid call status ${this.L.status}; expected WAITING`);const t=this.L.callId;if(!t)throw n(x.ERR_FAILED,"reject: no active invitation (callId is empty)");const e={...this.L};try{const s=this.B();return(await F.reject({chat:this.N,callId:t,terminalId:s})).errCode,this.i.emit(E.ON_CALL_END,{callInfo:e,reason:exports.CallEndReason.REJECT,userId:this.G()}),{callId:t}}finally{this.M()}}async hangup(){if(!this.O()&&!this.S)throw n(x.ERR_FAILED,"hangup: not logged in. Call login() first and wait for SDK_READY.");if(this.L.status!==exports.CallStatus.CALLING&&this.L.status!==exports.CallStatus.WAITING)throw n(x.ERR_FAILED,`hangup: invalid call status ${this.L.status}; expected CALLING or WAITING`);const t=this.L.callId;if(!t)throw n(x.ERR_FAILED,"hangup: no active call (callId is empty)");const e=this.L.role===exports.CallRole.CALLER&&this.L.status===exports.CallStatus.WAITING,s={...this.L};try{if(e){const e=this.L.inviter||this.G(),s=Array.isArray(this.L.inviteeList)?this.L.inviteeList.slice():[];s.length>0&&(await F.cancel({chat:this.N,inviter:e,callId:t,calleeList:s})).errCode}else{const e=this.B();(await F.hangup({chat:this.N,callId:t,terminalId:e})).errCode}return this.K(),this.i.emit(E.ON_CALL_END,{callInfo:s,reason:e?exports.CallEndReason.CANCELED:exports.CallEndReason.HANGUP,userId:this.G()}),{callId:t}}finally{this.M()}}setLayoutTemplate(t){this.A.setLayoutTemplate(t),this.k()}setLargeViewUser(t){this.A.setLargeViewUser(t),this.k()}toggleViewReversed(){this.A.toggleViewReversed(),this.k()}j(){const t=this.G()||"",e=this.L||{},s=e.inviter||"",i=Array.isArray(e.inviteeList)?e.inviteeList:[],r="number"==typeof e.status?e.status:J.NONE,o=new Set,n=[],a=(t,e)=>{t&&!o.has(t)&&(o.add(t),n.push({id:t,status:e}))};a(t,r),s&&a(s,r);for(const t of i)a(t,r);return{selfId:t,selfStatus:r,mediaType:"number"==typeof e.mediaType?e.mediaType:exports.CallMediaType.VIDEO,allParticipants:n,inviter:s,inviteeList:i}}k(){try{this.A.recalculate(this.j())&&this.i.emit(E.VIEW_LAYOUT_CHANGED,this.A.toJsonObject())}catch(t){}}async openCamera(t,e){let s;if(s=void 0===e?-1:e?1:0,R(this?.m?.startLocalPreview))return this.m.startLocalPreview(t,s)}async closeCamera(){if(R(this?.m?.stopLocalPreview))return this.m.stopLocalPreview()}async switchCamera(t){R(this?.m?.switchCamera)&&await this.m.switchCamera(!!t)}async openMicrophone(){R(this?.m?.startLocalAudio)&&await this.m.startLocalAudio()}async closeMicrophone(){R(this?.m?.stopLocalAudio)&&await this.m.stopLocalAudio()}async selectAudioPlaybackDevice(t){if(!R(this?.m?.setAudioRoute))return;const e=t===exports.AudioPlayBackDevice.EAR||1===t?exports.AudioPlayBackDevice.EAR:exports.AudioPlayBackDevice.SPEAKER;await this.m.setAudioRoute(e)}async startRemoteView(t){if(!this.m||"function"!=typeof this.m.startRemoteView)return;const{userId:e,view:s,streamType:i=0}=t||{};return this.m.startRemoteView(e,s,i)}async stopRemoteView(t){if(!this.m||"function"!=typeof this.m.stopRemoteView)return;const{userId:e,streamType:s=0}=t||{};return this.m.stopRemoteView(e,s)}T(){if(this.I||!this.N||"function"!=typeof this.N.on)return;const t=o("SDK_READY"),e=o("KICKED_OUT"),s=o("USER_SIG_EXPIRED"),i=o("ROOM_CUSTOM_DATA_RECEIVED");this.F=()=>{this.S=1,this.D()},this.W=t=>{this.i.emit(E.KICKED_OUT,t||{})},this.J=()=>{this.i.emit(E.onUserSigExpired,{})},this.Y=t=>{const{Data:e={},Head:s={}}=JSON.parse(t.data);if("call_engine_srv.invite_user_notify"===s?.Command){const{CallInfo:t={}}=e;let s={intRoomId:0,strRoomId:""};if(1===t.RoomIdType)s.intRoomId=+t.RoomId;else{if(2!==t.RoomIdType)return;s.strRoomId=t.RoomId}this.L=O({userIDList:e?.CalleeList_Account||[],callId:e?.CallInfo?.CallId||"",inviter:e?.Caller_Account||"",roomId:s.intRoomId||0,strRoomId:s.strRoomId||"",groupId:e?.CallInfo?.GroupId||"",type:e?.CallInfo?.CallMediaType,status:exports.CallStatus.WAITING,role:exports.CallRole.CALLEE}),this.i.emit(E.ON_CALL_RECEIVED,{callId:this.L.callId,inviter:this.L.inviter,inviteeList:this.L.inviteeList,groupId:this.L.groupId,mediaType:this.L.mediaType,roomId:this.L.roomId,userData:e?.UserData||"",callInfo:{...this.L}})}},t&&this.N.on(t,this.F),e&&this.N.on(e,this.W),s&&this.N.on(s,this.J),i&&this.N.on(i,this.Y),this.I=1}U(){if(!this.I||!this.N||"function"!=typeof this.N.off)return;const t=o("SDK_READY"),e=o("KICKED_OUT"),s=o("USER_SIG_EXPIRED"),i=o("ROOM_CUSTOM_DATA_RECEIVED");try{t&&this.F&&this.N.off(t,this.F)}catch(t){}try{e&&this.W&&this.N.off(e,this.W)}catch(t){}try{s&&this.J&&this.N.off(s,this.J)}catch(t){}try{i&&this.Y&&this.N.off(i,this.Y)}catch(t){}this.I=0}V(){if(this.C||!this.m)return;const t=this.m;if("function"!=typeof t.on)return;const e={},s=t=>(...e)=>{try{this.i.emit(t,...e)}catch(t){}};for(const i of z){let r;if("onRemoteUserEnterRoom"===i){const t=s(i);r=(...e)=>{try{this.L&&this.L.callId&&this.L.status===exports.CallStatus.WAITING&&(this.L.status=exports.CallStatus.CALLING,this.L.callStartTime||(this.L.callStartTime=Date.now()),this.i.emit(E.ON_CALL_BEGIN,{callInfo:{...this.L}}))}catch(t){}t(...e)}}else r=s(i);e[i]=r;try{t.on(i,r)}catch(t){}}this._=e,this.C=1}P(){if(!this.C)return;const t=this.m,e=this._||{};if(t&&"function"==typeof t.off)for(const s of Object.keys(e))try{t.off(s,e[s])}catch(t){}this._=null,this.C=0}D(){this.q||(this.q=1,this.i.emit(E.SDK_READY,{name:"sdk_ready"}),this.$().catch(t=>{}))}async $(){if(!this.N||!this.O())return;if(this.L&&this.L.callId)return;const t=this.G();if(!t)return;let e;try{e=await F.getInvitation({chat:this.N,userId:t})}catch(t){return}if(e&&0===e.errCode&&e.data)try{const t={data:JSON.stringify({Data:e.data,Head:{Command:"call_engine_srv.invite_user_notify"}})};R(this.Y)&&this.Y(t)}catch(t){}}O(){try{if(!this.N)return 0;if("function"==typeof this.N.getLoginUser)return!!this.N.getLoginUser()}catch(t){}return 0}G(){return this.l?this.l:R(this?.N?.getLoginUser)&&this.N.getLoginUser()||""}async H(){try{F.stopHeartBeat()}catch(t){}if(this.L.callType===exports.CallMediaType.UNKNOWN)throw n(-1,"call type is none");const{roomId:t}=this.L;if(0===t.intRoomId&&""===t.strRoomId)throw n(-1,"room id is empty");const e={sdkAppId:this.o,userId:this.G(),userSig:this.u,role:20};t.intRoomId>0?e.roomId=t.intRoomId:e.strRoomId=t.strRoomId;const s=this.L.mediaType===exports.CallMediaType.VIDEO?0:2,i=this.getTRTCCloudInstance();await new Promise((t,r)=>{let o=0,a=null;const c=()=>{a&&(clearTimeout(a),a=null);try{this.i.off("onEnterRoom",h)}catch(t){}},h=e=>{o||(o=1,c(),"number"==typeof e&&e>0?t():r(n("number"==typeof e?e:-1,"enterRoom failed: "+e)))};this.i.on("onEnterRoom",h),a=setTimeout(()=>{o||(o=1,c(),r(n(-1,"enterRoom timeout")))},1e4);try{const t=i.enterRoom(e,s);t&&"function"==typeof t.catch&&t.catch(t=>{o||(o=1,c(),r(t))})}catch(t){if(o)return;o=1,c(),r(t)}})}K(){try{this.m&&"function"==typeof this.m.exitRoom&&this.m.exitRoom()}catch(t){}}M(){try{F.stopHeartBeat()}catch(t){}this.L=O()}B(){return this.R||(this.R=(()=>{const t=Array(16),e="undefined"!=typeof crypto&&crypto||null;if(e&&"function"==typeof e.getRandomValues){const s=new Uint8Array(16);e.getRandomValues(s);for(let e=0;16>e;e++)t[e]=s[e]}else for(let e=0;16>e;e++)t[e]=Math.floor(256*Math.random());const s=t.map(t=>t.toString(16).padStart(2,"0")).join("").toUpperCase();return`${s.slice(0,8)}-${s.slice(8,12)}-${s.slice(12,16)}-${s.slice(16,20)}-${s.slice(20,32)}`})()),this.R}}Z.instance=null,exports.TencentCloudChat=C,exports.CallInvitationRespondedType=_,exports.TUICallEngine=Z,exports.TUICallEvent=E,exports.TUIErrorCode=x,exports.default=Z;
|
|
2
|
+
"use strict";function t(t,e){const s={Title:(t=t||{}).title||"",Sound:t.iosSound||"",BadgeMode:t.ignoreIosBadge?1:0,IsVoipPush:t.iosPushType||0,ContentAvailable:t.enableIosBackgroundNotification?1:0,InterruptionLevel:t.iosInterruptionLevel||"",Image:t.iosImage||""},i={Sound:t.androidSound||"",Title:t.title||"",OPPOChannelID:t.androidOppoChannelId||"",OPPOCategory:t.oppoCategory||"IM",OPPONotifyLevel:t.oppoNotifyLevel||0,GoogleChannelID:t.androidFcmChannelId||"",GoogleImage:t.fcmImage||"",XiaoMiChannelID:t.androidXiaomiChannelId||"",VIVOClassification:t.androidVivoClassification||0,VIVOCategory:t.vivoCategory||"IM",HuaWeiCategory:t.androidHuaweiCategory||"IM",HuaWeiImage:t.huaweiImage||"",HonorImportance:t.honorImportance||"NORMAL",HonorImage:t.honorImage||""},r={entity:{action:2},timPushFeatures:{fcmPushType:0,fcmNotificationType:1},voip_ext:{voip_type:"call",voip_media_type:e===exports.CallMediaType.VIDEO?"video":"audio"}};return{Title:t.title||"",Description:t.description||"",Ext:JSON.stringify(r),AndroidInfo:i,ApnsInfo:s}}function e(){B&&(clearInterval(B),B=null),k="",j=0}async function s(t,e){const s=t||{},i=s.chat;if(!i||!R(i.callExperimentalAPI))return{errCode:H,errMsg:"chat.callExperimentalAPI is not available"};if(!s.callId)return{errCode:H,errMsg:"callId is required"};if(!s.terminalId)return{errCode:H,errMsg:"terminalId is required"};let r=b;e===_.Hangup&&(r=P);const o=((t,e,s,i)=>({Body:{CallId:t||"",TerminalId:e||"",ActionType:s>>>0},Head:T(i)}))(s.callId,s.terminalId,e,r);try{const t={serviceCommand:r,data:JSON.stringify(o)},e=await i.callExperimentalAPI(S,t),s=e&&e.data||e||{},n=L(s.ErrorCode)?s.ErrorCode:L(s.errorCode)?s.errorCode:0;return 0!==n?{errCode:n,errMsg:s.ErrorInfo||s.errorInfo||""}:{errCode:0,errMsg:""}}catch(t){return{errCode:t&&(t.code||t.errorCode)||H,errMsg:t&&(t.message||t.errorInfo)||"send failed"}}}function i(t){switch(t){case exports.LayoutTemplate.FLOAT:return"float";case exports.LayoutTemplate.GRID:return"grid";default:return"float"}}function r(){return{template:exports.LayoutTemplate.FLOAT,canvas:{w:Y,h:q},primaryUser:{userId:"",isLocal:0},secondaryUser:null,showRemoteInfo:0}}function o(t){const e=C&&C.EVENT||{};switch(t){case"SDK_READY":return e.SDK_READY||"sdkStateReady";case"KICKED_OUT":return e.KICKED_OUT||"kickedOut";case"USER_SIG_EXPIRED":return e.USER_SIG_EXPIRED||"userSigExpired";case"ROOM_CUSTOM_DATA_RECEIVED":return e.ROOM_CUSTOM_DATA_RECEIVED;default:return null}}function n(t,e){const s=Error(e);return s.code=t,s}Object.defineProperty(exports,"__esModule",{value:1});var a,c,h,l,u,d,f,p,I,y,m=require("@tencentcloud/trtc-component-wx"),C=require("@tencentcloud/lite-chat/basic");class w{constructor(){this.t=new Map}on(t,e){if("function"!=typeof e)return this;let s=this.t.get(t);return s||(s=[],this.t.set(t,s)),s.push({fn:e,once:0}),this}once(t,e){if("function"!=typeof e)return this;let s=this.t.get(t);return s||(s=[],this.t.set(t,s)),s.push({fn:e,once:1}),this}off(t,e){if(!t)return this.t.clear(),this;const s=this.t.get(t);if(!s)return this;if(!e)return this.t.delete(t),this;const i=s.filter(t=>t.fn!==e);return 0===i.length?this.t.delete(t):this.t.set(t,i),this}emit(t,...e){const s=this.t.get(t);if(!s||0===s.length)return 0;const i=s.slice();for(const s of i){try{s.fn.apply(null,e)}catch(t){}s.once&&this.off(t,s.fn)}return 1}removeAllListeners(t){return t?this.t.delete(t):this.t.clear(),this}listenerCount(t){const e=this.t.get(t);return e?e.length:0}}exports.CallStatus=void 0,(a=exports.CallStatus||(exports.CallStatus={}))[a.NONE=0]="NONE",a[a.WAITING=1]="WAITING",a[a.CALLING=2]="CALLING",exports.CallRole=void 0,(c=exports.CallRole||(exports.CallRole={}))[c.NONE=0]="NONE",c[c.CALLER=1]="CALLER",c[c.CALLEE=2]="CALLEE",exports.CallMediaType=void 0,(h=exports.CallMediaType||(exports.CallMediaType={}))[h.UNKNOWN=0]="UNKNOWN",h[h.AUDIO=1]="AUDIO",h[h.VIDEO=2]="VIDEO",exports.CallScene=void 0,(l=exports.CallScene||(exports.CallScene={}))[l.NONE=0]="NONE",l[l.GROUP=1]="GROUP",l[l.MULTI=2]="MULTI",l[l.SINGLE=3]="SINGLE",exports.IOSOfflinePushType=void 0,(u=exports.IOSOfflinePushType||(exports.IOSOfflinePushType={}))[u.APNs=0]="APNs",u[u.VoIP=1]="VoIP",exports.CallInvitationResultCodeType=void 0,(d=exports.CallInvitationResultCodeType||(exports.CallInvitationResultCodeType={}))[d.SUCCESS=0]="SUCCESS",d[d.INVITED=1]="INVITED",d[d.LINE_BUSY=2]="LINE_BUSY",exports.CallEndReason=void 0,(f=exports.CallEndReason||(exports.CallEndReason={}))[f.UNKNOWN=0]="UNKNOWN",f[f.HANGUP=1]="HANGUP",f[f.REJECT=2]="REJECT",f[f.NO_RESPONSE=3]="NO_RESPONSE",f[f.OFFLINE=4]="OFFLINE",f[f.LINE_BUSY=5]="LINE_BUSY",f[f.CANCELED=6]="CANCELED",f[f.OTHER_DEVICE_ACCEPTED=7]="OTHER_DEVICE_ACCEPTED",f[f.OTHER_DEVICE_REJECT=8]="OTHER_DEVICE_REJECT",f[f.END_BY_SERVER=9]="END_BY_SERVER",exports.LOG_LEVEL=void 0,(p=exports.LOG_LEVEL||(exports.LOG_LEVEL={}))[p.DEBUG=0]="DEBUG",p[p.INFO=1]="INFO",p[p.WARN=2]="WARN",p[p.ERROR=3]="ERROR",p[p.NONE=4]="NONE",exports.CameraPosition=void 0,(I=exports.CameraPosition||(exports.CameraPosition={}))[I.FRONT=1]="FRONT",I[I.BACK=0]="BACK",exports.AudioPlayBackDevice=void 0,(y=exports.AudioPlayBackDevice||(exports.AudioPlayBackDevice={}))[y.SPEAKER=0]="SPEAKER",y[y.EAR=1]="EAR";const _=Object.freeze({None:0,AcceptedByInvitee:1,RejectedByInvitee:2,NoResponseUntilTimeout:3,Hangup:4,Join:5,Offline:6,InviteUser:7}),x=Object.freeze({ERR_FAILED:-1}),E=Object.freeze({ERROR:"onError",SDK_READY:"sdkReady",KICKED_OUT:"onKickedOffline",onUserSigExpired:"onUserSigExpired",ON_CALL_BEGIN:"onCallBegin",ON_CALL_END:"onCallEnd",ON_CALL_RECEIVED:"onCallReceived",ON_CALL_CANCELED:"onCallCanceled",ON_CALL_NOT_CONNECTED:"onCallNotConnected",INVITED:"onInvited",USER_ENTER:"onUserJoin",USER_LEAVE:"onUserLeave",VIEW_LAYOUT_CHANGED:"viewLayoutChanged"}),g="function",L=t=>"number"==typeof t,v=t=>typeof Array.isArray===g?Array.isArray(t):"array"===A(t),R=t=>typeof t===g,A=t=>({}.toString.call(t).match(/^\[object (.*)\]$/)[1].toLowerCase());let N=null;const T=t=>{const e=(()=>{if(N)return N;const t={osName:"Unknown",osVersion:"0.0.0",deviceName:"Unknown"};try{const e="undefined"!=typeof wx?wx:null,s="undefined"!=typeof uni?uni:null;if(e&&"function"==typeof e.getSystemInfoSync){const s=e.getSystemInfoSync()||{},[i="Unknown",r="0.0.0"]=((s.system||"")+"").split(" ");t.osName=i,t.osVersion=r,t.deviceName=s.model||s.brand||"Unknown"}else if(s&&"function"==typeof s.getSystemInfoSync){const e=s.getSystemInfoSync()||{},[i="Unknown",r="0.0.0"]=((e.system||"")+"").split(" ");t.osName=i,t.osVersion=r,t.deviceName=e.model||e.brand||"Unknown"}else if("undefined"!=typeof navigator&&navigator.userAgent){const e=navigator.userAgent;if(/Mac OS X/i.test(e)){t.osName="MacOS";const s=e.match(/Mac OS X ([\d_\.]+)/);t.osVersion=s?s[1].replace(/_/g,"."):"0.0.0",t.deviceName="Mac"}else if(/Windows/i.test(e)){t.osName="Windows";const s=e.match(/Windows NT ([\d\.]+)/);t.osVersion=s?s[1]:"0.0.0",t.deviceName="PC"}else if(/Android/i.test(e)){t.osName="Android";const s=e.match(/Android ([\d\.]+)/);t.osVersion=s?s[1]:"0.0.0",t.deviceName="Android"}else if(/iPhone|iPad|iPod/i.test(e)){t.osName="iOS";const s=e.match(/OS ([\d_]+)/);t.osVersion=s?s[1].replace(/_/g,"."):"0.0.0",t.deviceName=/iPad/i.test(e)?"iPad":"iPhone"}}}catch(t){}return N=t,t})();return{Command:t,DeviceName:e.deviceName,LongPollingKey:"",OSName:e.osName,OSVersion:e.osVersion,RoomId:"",SdkVersion:"1.0.0.0",Version:2}},O=(t={})=>{let e=exports.CallScene.NONE;const s=t.userIDList||[];return s.length>1&&(e=exports.CallScene.MULTI),1===s.length&&(e=exports.CallScene.SINGLE),{callId:t.callId||"",roomId:{strRoomId:t.strRoomID||t.strRoomId||"",intRoomId:t.roomID||t.roomId||0},inviter:t.inviter||"",inviteeList:s,groupId:t.chatGroupID||"",mediaType:t.type,status:t.status||exports.CallStatus.NONE,role:t.role||exports.CallRole.NONE,scene:e,callStartTime:0}},D=Object.freeze({IntRoomId:1,StrRoomId:2}),S="sendTRTCCustomData",M="call_engine_srv.start_call",U="call_engine_srv.heart_beat",b="call_engine_srv.handle_call",P="call_engine_srv.hangup",V="call_engine_srv.cancel_invite",G="call_engine_srv.get_invitation",H=-1,K={errCode:0,errMsg:"",inviteId:"",callResultList:[]};let B=null,k="",j=0;const F={CMD_START_CALL:M,CMD_HEART_BEAT:U,CMD_HANDLE_CALL:b,CMD_HANGUP_CALL:P,CMD_CANCEL_CALL:V,CMD_GET_INVITATION:G,HEARTBEAT_INTERVAL_MS:2e3,HEARTBEAT_FAIL_RETRY_DEFAULT:5,HEARTBEAT_FAIL_INTERVAL_MS:2e3,async startCall(e){const s=e||{},i=s.chat;if(!i||!R(i.callExperimentalAPI))return{...K,errCode:H,errMsg:"chat.callExperimentalAPI is not available"};if(!s.inviter)return{...K,errCode:H,errMsg:"inviter is required"};if(!v(s.userIdList)||0===s.userIdList.length)return{...K,errCode:H,errMsg:"userIdList cannot be empty"};if(s.mediaType!==exports.CallMediaType.AUDIO&&s.mediaType!==exports.CallMediaType.VIDEO)return{...K,errCode:H,errMsg:"invalid mediaType"};const r={roomId:s.roomId||{},timeout:s.timeout,userData:s.userData,isEphemeralCall:!!s.isEphemeralCall,offlinePushInfo:s.offlinePushInfo},o=((e,s,i,r,o)=>{const n=r||{},a=n.roomId||{},c={CallId:"",CallMediaType:i>>>0};"number"==typeof a.intRoomId&&a.intRoomId>0?(c.RoomId=a.intRoomId+"",c.RoomIdType=D.IntRoomId):a.intRoomId&&0!==a.intRoomId||"string"!=typeof a.strRoomId||0>=a.strRoomId.length||(c.RoomId=a.strRoomId,c.RoomIdType=D.StrRoomId),c.ExcludeFromHistoryMessage=0,c.GroupId=o||"",c.IsEphemeralCall=!!n.isEphemeralCall;const h="number"==typeof n.timeout?n.timeout:30;return{Body:{Caller_Account:e,CalleeList_Account:(s||[]).slice(),CallInfo:c,Timeout:1e3*h,UserData:n.userData||"",OfflinePushInfo:t(n.offlinePushInfo,i)},Head:T("call_engine_srv.start_call")}})(s.inviter,s.userIdList,s.mediaType,r,s.groupId||"");let n;try{const t={serviceCommand:M,data:JSON.stringify(o)};n=await i.callExperimentalAPI(S,t)}catch(t){const e=t&&(t.code||t.errorCode)||H,s=t&&(t.message||t.errorInfo)||"send failed";return{...K,errCode:e,errMsg:s}}const a=n&&n.data||n||{};return 0!==a.ErrorCode?{...K,errCode:a.ErrorCode,errMsg:a.ErrorInfo}:{errCode:a?.ErrorCode||0,errMsg:a?.errMsg||"",inviteId:a?.Response?.CallId||"",callResultList:a?.Response?.CallResult||[]}},startHeartBeat(t){const s=t||{},{chat:i,callId:r,userId:o}=s;if(!i||!R(i.callExperimentalAPI))return;if(!r||!o)return;e();const n=L(s.intervalMs)&&s.intervalMs>0?s.intervalMs:2e3,a=L(s.retryCount)&&s.retryCount>0?s.retryCount:5;k=r,B=setInterval(async()=>{if(!k||k!==r)return;const t=await(async(t,e,s)=>{const i={Body:{User_Account:s,CallId:e},Head:T(U)};try{const e={serviceCommand:U,data:JSON.stringify(i)},s=await t.callExperimentalAPI(S,e),r=s&&s.data||s||{},o=L(r.ErrorCode)?r.ErrorCode:L(r.errorCode)?r.errorCode:0;return 0!==o?{errCode:o,errMsg:r.ErrorInfo||r.errorInfo||""}:{errCode:0,errMsg:""}}catch(t){return{errCode:t&&(t.code||t.errorCode)||H,errMsg:t&&(t.message||t.errorInfo)||"send failed"}}})(i,r,o);if(k&&k===r)if(0!==t.errCode){if(j+=1,j>=a){const t=k;if(e(),"function"==typeof s.onTimeout)try{s.onTimeout(t)}catch(t){}}}else j=0},n)},stopHeartBeat:e,async accept(t){return s(t,_.AcceptedByInvitee)},async reject(t){return s(t,_.RejectedByInvitee)},async hangup(t){return s(t,_.Hangup)},async cancel(t){const e=t||{},s=e.chat;if(!s||!R(s.callExperimentalAPI))return{errCode:H,errMsg:"chat.callExperimentalAPI is not available"};if(!e.callId)return{errCode:H,errMsg:"callId is required"};if(!e.inviter)return{errCode:H,errMsg:"inviter is required"};if(!v(e.calleeList)||0===e.calleeList.length)return{errCode:H,errMsg:"calleeList cannot be empty"};const i=(r=e.inviter,o=e.callId,n=e.calleeList,a=V,{Body:{CallId:o||"",Operator_Account:r||"",CalleeList_Account:Array.isArray(n)?n.filter(Boolean):[]},Head:T(a)});var r,o,n,a;try{const t={serviceCommand:V,data:JSON.stringify(i)},e=await s.callExperimentalAPI(S,t),r=e&&e.data||e||{},o=L(r.ErrorCode)?r.ErrorCode:L(r.ErrorCode)?r.errorCode:0;return 0!==o?{errCode:o,errMsg:r.ErrorInfo||r.errorInfo||""}:{errCode:0,errMsg:""}}catch(t){return{errCode:t&&(t.code||t.errorCode)||H,errMsg:t&&(t.message||t.errorInfo)||"send failed"}}},async getInvitation(t){const e=t||{},s=e.chat;if(!s||!R(s.callExperimentalAPI))return{errCode:H,errMsg:"chat.callExperimentalAPI is not available",data:null};if(!e.userId)return{errCode:H,errMsg:"userId is required",data:null};const i={Body:{User_Account:e.userId||""},Head:T(G)};var r;try{const t={serviceCommand:G,data:JSON.stringify(i)},e=await s.callExperimentalAPI(S,t),o=e&&e.data||e||{},n=L(o.ErrorCode)?o.ErrorCode:L(o.ErrorCode)?o.errorCode:0;if(0!==n)return{errCode:n,errMsg:o.ErrorInfo||o.errorInfo||"",data:null};const a=o?.Response;return a&&null!==(r=a)&&"object"==typeof r&&0!==Object.keys(a).length?{errCode:0,errMsg:"",data:a}:{errCode:0,errMsg:"",data:null}}catch(t){return{errCode:t&&(t.code||t.errorCode)||H,errMsg:t&&(t.message||t.errorInfo)||"send failed",data:null}}}};var W,J;exports.LayoutTemplate=void 0,(W=exports.LayoutTemplate||(exports.LayoutTemplate={}))[W.FLOAT=0]="FLOAT",W[W.GRID=1]="GRID",(t=>{t[t.NONE=0]="NONE",t[t.WAITING=1]="WAITING",t[t.CALLING=2]="CALLING"})(J||(J={}));const Y=720,q=1280,$={x:480,y:80,w:200,h:300};class X{constructor(){this.currentTemplate=exports.LayoutTemplate.FLOAT,this.largeViewUserId="",this.isViewReversed=0,this.currentLayout=r(),this.previousLayout=r()}setLayoutTemplate(t){this.currentTemplate=t,this.largeViewUserId="",this.isViewReversed=0}setLargeViewUser(t){this.largeViewUserId===t?this.largeViewUserId="":this.largeViewUserId=t}toggleViewReversed(){this.isViewReversed=!this.isViewReversed}getCurrentTemplate(){return this.currentTemplate}getCurrentLayout(){return this.currentLayout}recalculate(t){switch(this.previousLayout=this.currentLayout,this.currentTemplate){case exports.LayoutTemplate.FLOAT:this.currentLayout=this.calculateFloatLayout(t);break;case exports.LayoutTemplate.GRID:this.currentLayout=this.calculateGridLayout(t)}return this.isLayoutChanged()}toJson(){return JSON.stringify(this.toJsonObject())}toJsonObject(){const t=this.currentLayout,e={template:i(t.template)};return t.template===exports.LayoutTemplate.FLOAT?(e.canvas={w:t.canvas.w,h:t.canvas.h},e.primaryUser={userId:t.primaryUser.userId,isLocal:t.primaryUser.isLocal},t.secondaryUser?e.secondaryUser={userId:t.secondaryUser.userId,isLocal:t.secondaryUser.isLocal,frame:{...t.secondaryUser.frame}}:e.secondaryUser=null,e.showRemoteInfo=t.showRemoteInfo):(e.canvas={w:t.canvas.w,h:t.canvas.h},e.participants=t.participants.map(t=>({userId:t.userId,frame:{...t.frame},isLocal:t.isLocal,showName:t.showName}))),e}isLayoutChanged(){const t=this.previousLayout,e=this.currentLayout;if(t.template!==e.template)return 1;if(e.template===exports.LayoutTemplate.FLOAT&&t.template===exports.LayoutTemplate.FLOAT)return t.primaryUser.userId!==e.primaryUser.userId||(t.secondaryUser?t.secondaryUser.userId:"")!==(e.secondaryUser?e.secondaryUser.userId:"")||t.showRemoteInfo!==e.showRemoteInfo?1:0;if(e.template===exports.LayoutTemplate.GRID&&t.template===exports.LayoutTemplate.GRID){if(t.participants.length!==e.participants.length)return 1;for(let s=0;s<e.participants.length;s++){const i=t.participants[s],r=e.participants[s];if(i.userId!==r.userId)return 1;if(i.frame.x!==r.frame.x)return 1;if(i.frame.y!==r.frame.y)return 1;if(i.frame.w!==r.frame.w)return 1;if(i.frame.h!==r.frame.h)return 1;if(i.showName!==r.showName)return 1}return 0}return 1}calculateFloatLayout(t){const e=t.selfId;let s="";for(const i of t.allParticipants)if(i.id!==e){s=i.id;break}const i=t.selfStatus===J.CALLING,r=t.mediaType===exports.CallMediaType.AUDIO;let o,n,a,c;return i||r?!i&&r||r?(o=s,n=0,a=null,c=1):(this.isViewReversed?(o=e,n=1,a={userId:s,isLocal:0,frame:{...$}}):(o=s,n=0,a={userId:e,isLocal:1,frame:{...$}}),c=0):(o=e,n=1,a=null,c=1),{template:exports.LayoutTemplate.FLOAT,canvas:{w:Y,h:q},primaryUser:{userId:o,isLocal:n},secondaryUser:a,showRemoteInfo:c}}calculateGridLayout(t){const e=new Map;for(const s of t.allParticipants)e.set(s.id,s.status);const s=[];if(t.inviter){const i=e.get(t.inviter);void 0!==i&&i!==J.NONE&&s.push(t.inviter)}for(const i of t.inviteeList){const t=e.get(i);void 0!==t&&t!==J.NONE&&s.push(i)}const i=this.calculateGridPositions(s.length,s,t.selfId);return{template:exports.LayoutTemplate.GRID,canvas:{w:Y,h:q},participants:i}}calculateGridPositions(t,e,s){const i=[];if(0>=t)return i;const r=240,o=360;let n=-1;if(this.largeViewUserId)for(let s=0;t>s;s++)if(e[s]===this.largeViewUserId){n=s;break}if(n>=0&&4>=t){const o=[n];for(let e=0;t>e;e++)e!==n&&o.push(e);const a=r,c=t-1,h=[{x:0,y:0,w:Y,h:Y}],l=Y;for(let t=0;c>t;t++)h.push({x:t*a,y:l,w:a,h:a});for(let t=0;t<o.length&&t<h.length;t++){const r=e[o[t]];i.push({userId:r,frame:h[t],isLocal:r===s,showName:0===t})}return i}if(n>=0&&t>4){const o=480,a=480,c=[n];for(let e=0;t>e;e++)e!==n&&c.push(e);{const t=e[c[0]];i.push({userId:t,frame:{x:0,y:0,w:o,h:a},isLocal:t===s,showName:1})}let h=1;if(h<c.length){const t=e[c[h]];i.push({userId:t,frame:{x:o,y:0,w:r,h:r},isLocal:t===s,showName:0}),h++}if(h<c.length){const t=e[c[h]];i.push({userId:t,frame:{x:o,y:r,w:r,h:r},isLocal:t===s,showName:0}),h++}let l=a;for(;h<c.length;){for(let t=0;3>t&&h<c.length;t++){const o=e[c[h]];i.push({userId:o,frame:{x:t*r,y:l,w:r,h:r},isLocal:o===s,showName:0}),h++}l+=r}return i}if(1===t)i.push({userId:e[0],frame:{x:0,y:0,w:Y,h:q},isLocal:e[0]===s,showName:0});else if(2===t)i.push({userId:e[0],frame:{x:0,y:0,w:o,h:o},isLocal:e[0]===s,showName:0}),i.push({userId:e[1],frame:{x:o,y:0,w:o,h:o},isLocal:e[1]===s,showName:0});else if(3===t)i.push({userId:e[0],frame:{x:0,y:0,w:o,h:o},isLocal:e[0]===s,showName:0}),i.push({userId:e[1],frame:{x:o,y:0,w:o,h:o},isLocal:e[1]===s,showName:0}),i.push({userId:e[2],frame:{x:180,y:o,w:o,h:o},isLocal:e[2]===s,showName:0});else if(4===t)i.push({userId:e[0],frame:{x:0,y:0,w:o,h:o},isLocal:e[0]===s,showName:0}),i.push({userId:e[1],frame:{x:o,y:0,w:o,h:o},isLocal:e[1]===s,showName:0}),i.push({userId:e[2],frame:{x:0,y:o,w:o,h:o},isLocal:e[2]===s,showName:0}),i.push({userId:e[3],frame:{x:o,y:o,w:o,h:o},isLocal:e[3]===s,showName:0});else{let o=0;for(let n=0;t>n;n+=3){const a=Math.min(3,t-n);for(let t=0;a>t;t++){const a=n+t;i.push({userId:e[a],frame:{x:t*r,y:o,w:r,h:r},isLocal:e[a]===s,showName:0})}o+=r}}return i}}const Q=new w,z=Object.freeze(["onEnterRoom","onExitRoom","onSwitchRole","onError","onWarnning","onRemoteUserEnterRoom","onRemoteUserLeaveRoom","onUserVideoAvailable","onUserSubStreamAvailable","onUserAudioAvailable","onUserVoiceVolume","onNetworkQuality","onFirstVideoFrame","onSendFirstLocalVideoFrame","onSendFirstLocalAudioFrame","onMicDidReady"]);class Z{constructor(t){const e=t||{};this.i=new w,this.o=e.SDKAppID||e.sdkAppID||0,this.l="",this.u="",this.p=0,this.I=0,this.m=null,this.C=0,this._=null,this.L=O(),this.v=0,this.R="",this.A=new X;const s=e.chat||e.tim;s&&(this.p=1,this.N=s)}static createInstance(t){return Z.instance||(Z.instance=new Z(t)),Z.instance}static once(t,e){"ready"===t?"function"==typeof e&&Promise.resolve().then(()=>{try{e()}catch(t){}}):Q.once(t,e)}async login(t){const e=t||{},s=e.userID,i=e.userSig,r=e.sdkAppID||e.SDKAppID||this.o;if(!s||!i)throw n(x.ERR_FAILED,"login: userID and userSig are required");!this.o&&r&&(this.o=r),this.l=s,this.u=i,this.T();try{if(this.N=C.create({SDKAppID:this.o,devMode:1}),this.O())return void this.D();let t;try{t=await this.N.login({userID:s,userSig:i});try{this.getTRTCCloudInstance()}catch(t){}}catch(t){const e=t&&t.code,s=t&&t.message||"";if(2024===e||2025===e)return void this.D();if(this.S&&(/timeout/i.test(s)||"NETWORK_TIMEOUT"===e))return void this.D();throw t}if(t&&t.data&&t.data.repeatLogin)return void this.D();this.D()}catch(t){const e=t&&t.code||x.ERR_FAILED,s=t&&t.message||"login failed";throw this.i.emit(E.ERROR,{code:e,message:s}),n(e,s)}}async logout(){this.M();try{this.N&&"function"==typeof this.N.logout&&await this.N.logout()}finally{this.l="",this.u=""}}async destroyInstance(){Z.instance=null;try{await this.logout()}catch(t){}this.U(),this.P(),this.i.removeAllListeners(),this.m=null}on(t,e){this.i.on(t,e)}off(t,e){this.i.off(t,e)}once(t,e){this.i.once(t,e)}getTim(){return this.N}getTRTCCloudInstance(){if(this.m)return this.m;if(!m||"function"!=typeof m.getTRTCShareInstance)throw n(x.ERR_FAILED,"[call-engine-wx] @tencentcloud/trtc-component-wx is not installed or does not expose getTRTCShareInstance().");return this.m=m.getTRTCShareInstance(),this.V(),this.m}setLogLevel(t){try{this.N&&"function"==typeof this.N.setLogLevel&&this.N.setLogLevel(t)}catch(t){}}async calls(t){if(!this.O()&&!this.S)throw n(x.ERR_FAILED,"calls: not logged in. Call login() first and wait for SDK_READY.");if(this.v)throw n(x.ERR_FAILED,"calls: a previous calls() is still in progress");if(this.L.status!==exports.CallStatus.NONE)throw n(x.ERR_FAILED,"calls: there is an active call already; hang up before starting a new one");if(!v(t?.userIDList)||0===t?.userIDList?.length)throw n(x.ERR_FAILED,"calls: userIDList cannot be empty");if(t?.type!==exports.CallMediaType.AUDIO&&t?.type!==exports.CallMediaType.VIDEO)throw n(x.ERR_FAILED,"calls: invalid mediaType");const e=this.G();if(!e)throw n(x.ERR_FAILED,"calls: cannot resolve login user id");var s;this.L=O({...t,strRoomId:(s=t?.strRoomID,s||"roomId_"+Math.floor(1e6*Math.random())),status:exports.CallStatus.WAITING,role:exports.CallRole.CALLER,inviter:e}),this.v=1;let i=0;try{try{await this.H(),i=1}catch(t){this.K();const e=t&&t.code||x.ERR_FAILED,s=t&&t.message||"enter TRTC room failed";throw this.i.emit(E.ERROR,{code:e,message:s}),n(e,s)}const t=await F.startCall({chat:this.N,...this.L,userIdList:this.L.inviteeList});if(0!==t.errCode)throw this.K(),i=0,this.i.emit(E.ERROR,{code:t.errCode,message:t.errMsg}),n(t.errCode,t.errMsg||"start_call failed");this.L.callId=t.inviteId,this.L.callStartTime=Date.now();let e=0;for(const s of t.callResultList)switch(s.resultCode){case exports.CallInvitationResultCodeType.INVITED:this.i.emit(E.USER_ENTER,s.userId);break;case exports.CallInvitationResultCodeType.SUCCESS:this.i.emit("onUserInviting",s.userId);break;case exports.CallInvitationResultCodeType.LINE_BUSY:this.i.emit("onUserLineBusy",s.userId),e++}if(e>=this.L.inviteeList.length){const e=t.callResultList[t.callResultList.length-1];return this.K(),i=0,this.i.emit(E.ON_CALL_NOT_CONNECTED,{callInfo:{...this.L},userId:e?e.userId:"",reason:exports.CallEndReason.LINE_BUSY}),this.M(),{inviteId:t.inviteId,roomId:this.L,callResultList:t.callResultList}}return F.startHeartBeat({chat:this.N,callId:this.L.callId,userId:this.L.inviter,onTimeout:t=>{this.L.callId===t&&(this.i.emit(E.ON_CALL_NOT_CONNECTED,{callInfo:{...this.L},userId:this.L.inviter,reason:exports.CallEndReason.LINE_BUSY}),this.K(),this.M())}}),{inviteId:t.inviteId,roomId:this.L,callResultList:t.callResultList}}catch(t){throw i&&this.K(),this.M(),t}finally{this.v=0}}async accept(){if(!this.O()&&!this.S)throw n(x.ERR_FAILED,"accept: not logged in. Call login() first and wait for SDK_READY.");if(this.L.role!==exports.CallRole.CALLEE)throw n(x.ERR_FAILED,"accept: current role is not CALLEE");if(this.L.status!==exports.CallStatus.WAITING)throw n(x.ERR_FAILED,`accept: invalid call status ${this.L.status}; expected WAITING`);const t=this.L.callId;if(!t)throw n(x.ERR_FAILED,"accept: no active invitation (callId is empty)");let e=0;try{await this.H(),e=1;const s=this.B(),i=await F.accept({chat:this.N,callId:t,terminalId:s});if(0!==i.errCode)throw n(i.errCode,i.errMsg||"handle_call(accept) failed");return this.L.status=exports.CallStatus.CALLING,this.L.callStartTime=Date.now(),this.i.emit(E.ON_CALL_BEGIN,{callInfo:{...this.L}}),F.startHeartBeat({chat:this.N,callId:this.L.callId,userId:this.G(),onTimeout:t=>{this.L.callId===t&&(this.i.emit(E.ON_CALL_NOT_CONNECTED,{callInfo:{...this.L},userId:this.G(),reason:exports.CallEndReason.LINE_BUSY}),this.K(),this.M())}}),{callId:t,roomId:this.L.roomId}}catch(t){e&&this.K(),this.M();const s=t&&t.code||x.ERR_FAILED,i=t&&t.message||"accept failed";throw this.i.emit(E.ERROR,{code:s,message:i}),n(s,i)}}async reject(){if(!this.O()&&!this.S)throw n(x.ERR_FAILED,"reject: not logged in. Call login() first and wait for SDK_READY.");if(this.L.role!==exports.CallRole.CALLEE)throw n(x.ERR_FAILED,"reject: current role is not CALLEE");if(this.L.status!==exports.CallStatus.WAITING)throw n(x.ERR_FAILED,`reject: invalid call status ${this.L.status}; expected WAITING`);const t=this.L.callId;if(!t)throw n(x.ERR_FAILED,"reject: no active invitation (callId is empty)");const e={...this.L};try{const s=this.B();return(await F.reject({chat:this.N,callId:t,terminalId:s})).errCode,this.i.emit(E.ON_CALL_END,{callInfo:e,reason:exports.CallEndReason.REJECT,userId:this.G()}),{callId:t}}finally{this.M()}}async hangup(){if(!this.O()&&!this.S)throw n(x.ERR_FAILED,"hangup: not logged in. Call login() first and wait for SDK_READY.");if(this.L.status!==exports.CallStatus.CALLING&&this.L.status!==exports.CallStatus.WAITING)throw n(x.ERR_FAILED,`hangup: invalid call status ${this.L.status}; expected CALLING or WAITING`);const t=this.L.callId;if(!t)throw n(x.ERR_FAILED,"hangup: no active call (callId is empty)");const e=this.L.role===exports.CallRole.CALLER&&this.L.status===exports.CallStatus.WAITING,s={...this.L};try{if(e){const e=this.L.inviter||this.G(),s=Array.isArray(this.L.inviteeList)?this.L.inviteeList.slice():[];s.length>0&&(await F.cancel({chat:this.N,inviter:e,callId:t,calleeList:s})).errCode}else{const e=this.B();(await F.hangup({chat:this.N,callId:t,terminalId:e})).errCode}return this.K(),this.i.emit(E.ON_CALL_END,{callInfo:s,reason:e?exports.CallEndReason.CANCELED:exports.CallEndReason.HANGUP,userId:this.G()}),{callId:t}}finally{this.M()}}setLayoutTemplate(t){this.A.setLayoutTemplate(t),this.k()}setLargeViewUser(t){this.A.setLargeViewUser(t),this.k()}toggleViewReversed(){this.A.toggleViewReversed(),this.k()}j(){const t=this.G()||"",e=this.L||{},s=e.inviter||"",i=Array.isArray(e.inviteeList)?e.inviteeList:[],r="number"==typeof e.status?e.status:J.NONE,o=new Set,n=[],a=(t,e)=>{t&&!o.has(t)&&(o.add(t),n.push({id:t,status:e}))};a(t,r),s&&a(s,r);for(const t of i)a(t,r);return{selfId:t,selfStatus:r,mediaType:"number"==typeof e.mediaType?e.mediaType:exports.CallMediaType.VIDEO,allParticipants:n,inviter:s,inviteeList:i}}k(){try{this.A.recalculate(this.j())&&this.i.emit(E.VIEW_LAYOUT_CHANGED,this.A.toJsonObject())}catch(t){}}async openCamera(t,e){let s;if(s=void 0===e?-1:e?1:0,R(this?.m?.startLocalPreview))return this.m.startLocalPreview(t,s)}async closeCamera(){if(R(this?.m?.stopLocalPreview))return this.m.stopLocalPreview()}async switchCamera(t){R(this?.m?.switchCamera)&&await this.m.switchCamera(!!t)}async openMicrophone(){R(this?.m?.startLocalAudio)&&await this.m.startLocalAudio()}async closeMicrophone(){R(this?.m?.stopLocalAudio)&&await this.m.stopLocalAudio()}async selectAudioPlaybackDevice(t){if(!R(this?.m?.setAudioRoute))return;const e=t===exports.AudioPlayBackDevice.EAR||1===t?exports.AudioPlayBackDevice.EAR:exports.AudioPlayBackDevice.SPEAKER;await this.m.setAudioRoute(e)}async startRemoteView(t){if(!this.m||"function"!=typeof this.m.startRemoteView)return;const{userId:e,view:s,streamType:i=0}=t||{};return this.m.startRemoteView(e,s,i)}async stopRemoteView(t){if(!this.m||"function"!=typeof this.m.stopRemoteView)return;const{userId:e,streamType:s=0}=t||{};return this.m.stopRemoteView(e,s)}T(){if(this.I||!this.N||"function"!=typeof this.N.on)return;const t=o("SDK_READY"),e=o("KICKED_OUT"),s=o("USER_SIG_EXPIRED"),i=o("ROOM_CUSTOM_DATA_RECEIVED");this.F=()=>{this.S=1,this.D()},this.W=t=>{this.i.emit(E.KICKED_OUT,t||{})},this.J=()=>{this.i.emit(E.onUserSigExpired,{})},this.Y=t=>{const{Data:e={},Head:s={}}=JSON.parse(t.data);if("call_engine_srv.invite_user_notify"===s?.Command){const{CallInfo:t={}}=e;let s={intRoomId:0,strRoomId:""};if(1===t.RoomIdType)s.intRoomId=+t.RoomId;else{if(2!==t.RoomIdType)return;s.strRoomId=t.RoomId}this.L=O({userIDList:e?.CalleeList_Account||[],callId:e?.CallInfo?.CallId||"",inviter:e?.Caller_Account||"",roomId:s.intRoomId||0,strRoomId:s.strRoomId||"",groupId:e?.CallInfo?.GroupId||"",type:e?.CallInfo?.CallMediaType,status:exports.CallStatus.WAITING,role:exports.CallRole.CALLEE}),this.i.emit(E.ON_CALL_RECEIVED,{callId:this.L.callId,inviter:this.L.inviter,inviteeList:this.L.inviteeList,groupId:this.L.groupId,mediaType:this.L.mediaType,roomId:this.L.roomId,userData:e?.UserData||"",callInfo:{...this.L}})}},t&&this.N.on(t,this.F),e&&this.N.on(e,this.W),s&&this.N.on(s,this.J),i&&this.N.on(i,this.Y),this.I=1}U(){if(!this.I||!this.N||"function"!=typeof this.N.off)return;const t=o("SDK_READY"),e=o("KICKED_OUT"),s=o("USER_SIG_EXPIRED"),i=o("ROOM_CUSTOM_DATA_RECEIVED");try{t&&this.F&&this.N.off(t,this.F)}catch(t){}try{e&&this.W&&this.N.off(e,this.W)}catch(t){}try{s&&this.J&&this.N.off(s,this.J)}catch(t){}try{i&&this.Y&&this.N.off(i,this.Y)}catch(t){}this.I=0}V(){if(this.C||!this.m)return;const t=this.m;if("function"!=typeof t.on)return;const e={},s=t=>(...e)=>{try{this.i.emit(t,...e)}catch(t){}};for(const i of z){let r;if("onRemoteUserEnterRoom"===i){const t=s(i);r=(...e)=>{try{this.L&&this.L.callId&&this.L.status===exports.CallStatus.WAITING&&(this.L.status=exports.CallStatus.CALLING,this.L.callStartTime||(this.L.callStartTime=Date.now()),this.i.emit(E.ON_CALL_BEGIN,{callInfo:{...this.L}}))}catch(t){}t(...e)}}else r=s(i);e[i]=r;try{t.on(i,r)}catch(t){}}this._=e,this.C=1}P(){if(!this.C)return;const t=this.m,e=this._||{};if(t&&"function"==typeof t.off)for(const s of Object.keys(e))try{t.off(s,e[s])}catch(t){}this._=null,this.C=0}D(){this.q||(this.q=1,this.i.emit(E.SDK_READY,{name:"sdk_ready"}),this.$().catch(t=>{}))}async $(){if(!this.N||!this.O())return;if(this.L&&this.L.callId)return;const t=this.G();if(!t)return;let e;try{e=await F.getInvitation({chat:this.N,userId:t})}catch(t){return}if(e&&0===e.errCode&&e.data)try{const t={data:JSON.stringify({Data:e.data,Head:{Command:"call_engine_srv.invite_user_notify"}})};R(this.Y)&&this.Y(t)}catch(t){}}O(){try{if(!this.N)return 0;if("function"==typeof this.N.getLoginUser)return!!this.N.getLoginUser()}catch(t){}return 0}G(){return this.l?this.l:R(this?.N?.getLoginUser)&&this.N.getLoginUser()||""}async H(){try{F.stopHeartBeat()}catch(t){}if(this.L.callType===exports.CallMediaType.UNKNOWN)throw n(-1,"call type is none");const{roomId:t}=this.L;if(0===t.intRoomId&&""===t.strRoomId)throw n(-1,"room id is empty");const e={sdkAppId:this.o,userId:this.G(),userSig:this.u,role:20};t.intRoomId>0?e.roomId=t.intRoomId:e.strRoomId=t.strRoomId;const s=this.L.mediaType===exports.CallMediaType.VIDEO?0:2,i=this.getTRTCCloudInstance();await new Promise((t,r)=>{let o=0,a=null;const c=()=>{a&&(clearTimeout(a),a=null);try{this.i.off("onEnterRoom",h)}catch(t){}},h=e=>{o||(o=1,c(),"number"==typeof e&&e>0?t():r(n("number"==typeof e?e:-1,"enterRoom failed: "+e)))};this.i.on("onEnterRoom",h),a=setTimeout(()=>{o||(o=1,c(),r(n(-1,"enterRoom timeout")))},1e4);try{const t=i.enterRoom(e,s);t&&"function"==typeof t.catch&&t.catch(t=>{o||(o=1,c(),r(t))})}catch(t){if(o)return;o=1,c(),r(t)}})}K(){try{this.m&&"function"==typeof this.m.exitRoom&&this.m.exitRoom()}catch(t){}}M(){try{F.stopHeartBeat()}catch(t){}this.L=O()}B(){return this.R||(this.R=(()=>{const t=Array(16),e="undefined"!=typeof crypto&&crypto||null;if(e&&"function"==typeof e.getRandomValues){const s=new Uint8Array(16);e.getRandomValues(s);for(let e=0;16>e;e++)t[e]=s[e]}else for(let e=0;16>e;e++)t[e]=Math.floor(256*Math.random());const s=t.map(t=>t.toString(16).padStart(2,"0")).join("").toUpperCase();return`${s.slice(0,8)}-${s.slice(8,12)}-${s.slice(12,16)}-${s.slice(16,20)}-${s.slice(20,32)}`})()),this.R}}Z.instance=null,exports.TencentCloudChat=C,exports.CallInvitationRespondedType=_,exports.TUICallEngine=Z,exports.TUICallEvent=E,exports.TUIErrorCode=x,exports.default=Z;
|
package/dist/index.umd.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*! call-engine-wx | (c) 2024 Tencent | MIT */
|
|
2
2
|
(function (global, factory) {
|
|
3
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@tencentcloud/trtc-component-wx'), require('@tencentcloud/lite-chat')) :
|
|
4
|
-
typeof define === 'function' && define.amd ? define(['exports', '@tencentcloud/trtc-component-wx', '@tencentcloud/lite-chat'], factory) :
|
|
3
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@tencentcloud/trtc-component-wx'), require('@tencentcloud/lite-chat/basic')) :
|
|
4
|
+
typeof define === 'function' && define.amd ? define(['exports', '@tencentcloud/trtc-component-wx', '@tencentcloud/lite-chat/basic'], factory) :
|
|
5
5
|
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.CallsEngineWX = {}, global.TRTCComponentWX, global.TencentCloudChat));
|
|
6
6
|
})(this, (function (exports, TRTCCloud, TencentCloudChat) { 'use strict';
|
|
7
7
|
|
package/dist/index.umd.min.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/*! call-engine-wx | (c) 2024 Tencent | MIT */
|
|
2
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@tencentcloud/trtc-component-wx"),require("@tencentcloud/lite-chat")):"function"==typeof define&&define.amd?define(["exports","@tencentcloud/trtc-component-wx","@tencentcloud/lite-chat"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).CallsEngineWX={},e.TRTCComponentWX,e.TencentCloudChat)}(this,function(e,t,r){"use strict";class a{constructor(){this._handlers=new Map}on(e,t){if("function"!=typeof t)return this;let r=this._handlers.get(e);return r||(r=[],this._handlers.set(e,r)),r.push({fn:t,once:!1}),this}once(e,t){if("function"!=typeof t)return this;let r=this._handlers.get(e);return r||(r=[],this._handlers.set(e,r)),r.push({fn:t,once:!0}),this}off(e,t){if(!e)return this._handlers.clear(),this;const r=this._handlers.get(e);if(!r)return this;if(!t)return this._handlers.delete(e),this;const a=r.filter(e=>e.fn!==t);return 0===a.length?this._handlers.delete(e):this._handlers.set(e,a),this}emit(e,...t){const r=this._handlers.get(e);if(!r||0===r.length)return!1;const a=r.slice();for(const r of a){try{r.fn.apply(null,t)}catch(e){console.error("[call-engine-wx] listener threw:",e)}r.once&&this.off(e,r.fn)}return!0}removeAllListeners(e){return e?this._handlers.delete(e):this._handlers.clear(),this}listenerCount(e){const t=this._handlers.get(e);return t?t.length:0}}var o,i,s,n,l,c,d,h,u,I;e.CallStatus=void 0,(o=e.CallStatus||(e.CallStatus={}))[o.NONE=0]="NONE",o[o.WAITING=1]="WAITING",o[o.CALLING=2]="CALLING",e.CallRole=void 0,(i=e.CallRole||(e.CallRole={}))[i.NONE=0]="NONE",i[i.CALLER=1]="CALLER",i[i.CALLEE=2]="CALLEE",e.CallMediaType=void 0,(s=e.CallMediaType||(e.CallMediaType={}))[s.UNKNOWN=0]="UNKNOWN",s[s.AUDIO=1]="AUDIO",s[s.VIDEO=2]="VIDEO",e.CallScene=void 0,(n=e.CallScene||(e.CallScene={}))[n.NONE=0]="NONE",n[n.GROUP=1]="GROUP",n[n.MULTI=2]="MULTI",n[n.SINGLE=3]="SINGLE",e.IOSOfflinePushType=void 0,(l=e.IOSOfflinePushType||(e.IOSOfflinePushType={}))[l.APNs=0]="APNs",l[l.VoIP=1]="VoIP",e.CallInvitationResultCodeType=void 0,(c=e.CallInvitationResultCodeType||(e.CallInvitationResultCodeType={}))[c.SUCCESS=0]="SUCCESS",c[c.INVITED=1]="INVITED",c[c.LINE_BUSY=2]="LINE_BUSY",e.CallEndReason=void 0,(d=e.CallEndReason||(e.CallEndReason={}))[d.UNKNOWN=0]="UNKNOWN",d[d.HANGUP=1]="HANGUP",d[d.REJECT=2]="REJECT",d[d.NO_RESPONSE=3]="NO_RESPONSE",d[d.OFFLINE=4]="OFFLINE",d[d.LINE_BUSY=5]="LINE_BUSY",d[d.CANCELED=6]="CANCELED",d[d.OTHER_DEVICE_ACCEPTED=7]="OTHER_DEVICE_ACCEPTED",d[d.OTHER_DEVICE_REJECT=8]="OTHER_DEVICE_REJECT",d[d.END_BY_SERVER=9]="END_BY_SERVER",e.LOG_LEVEL=void 0,(h=e.LOG_LEVEL||(e.LOG_LEVEL={}))[h.DEBUG=0]="DEBUG",h[h.INFO=1]="INFO",h[h.WARN=2]="WARN",h[h.ERROR=3]="ERROR",h[h.NONE=4]="NONE",e.CameraPosition=void 0,(u=e.CameraPosition||(e.CameraPosition={}))[u.FRONT=1]="FRONT",u[u.BACK=0]="BACK",e.AudioPlayBackDevice=void 0,(I=e.AudioPlayBackDevice||(e.AudioPlayBackDevice={}))[I.SPEAKER=0]="SPEAKER",I[I.EAR=1]="EAR";const f=Object.freeze({None:0,AcceptedByInvitee:1,RejectedByInvitee:2,NoResponseUntilTimeout:3,Hangup:4,Join:5,Offline:6,InviteUser:7}),_=Object.freeze({ERR_FAILED:-1}),m=Object.freeze({ERROR:"onError",SDK_READY:"sdkReady",KICKED_OUT:"onKickedOffline",onUserSigExpired:"onUserSigExpired",ON_CALL_BEGIN:"onCallBegin",ON_CALL_END:"onCallEnd",ON_CALL_RECEIVED:"onCallReceived",ON_CALL_CANCELED:"onCallCanceled",ON_CALL_NOT_CONNECTED:"onCallNotConnected",INVITED:"onInvited",USER_ENTER:"onUserJoin",USER_LEAVE:"onUserLeave",VIEW_LAYOUT_CHANGED:"viewLayoutChanged"}),C="number",y="object",E="array",p="function",L=function(e){return typeof e===C},R=function(e){return typeof Array.isArray===p?Array.isArray(e):T(e)===E},g=function(e){return typeof e===p},T=function(e){return Object.prototype.toString.call(e).match(/^\[object (.*)\]$/)[1].toLowerCase()};let A=null;const v=function(e){const t=function(){if(A)return A;const e={osName:"Unknown",osVersion:"0.0.0",deviceName:"Unknown"};try{const t="undefined"!=typeof wx?wx:null,r="undefined"!=typeof uni?uni:null;if(t&&"function"==typeof t.getSystemInfoSync){const r=t.getSystemInfoSync()||{},[a="Unknown",o="0.0.0"]=String(r.system||"").split(" ");e.osName=a,e.osVersion=o,e.deviceName=r.model||r.brand||"Unknown"}else if(r&&"function"==typeof r.getSystemInfoSync){const t=r.getSystemInfoSync()||{},[a="Unknown",o="0.0.0"]=String(t.system||"").split(" ");e.osName=a,e.osVersion=o,e.deviceName=t.model||t.brand||"Unknown"}else if("undefined"!=typeof navigator&&navigator.userAgent){const t=navigator.userAgent;if(/Mac OS X/i.test(t)){e.osName="MacOS";const r=t.match(/Mac OS X ([\d_\.]+)/);e.osVersion=r?r[1].replace(/_/g,"."):"0.0.0",e.deviceName="Mac"}else if(/Windows/i.test(t)){e.osName="Windows";const r=t.match(/Windows NT ([\d\.]+)/);e.osVersion=r?r[1]:"0.0.0",e.deviceName="PC"}else if(/Android/i.test(t)){e.osName="Android";const r=t.match(/Android ([\d\.]+)/);e.osVersion=r?r[1]:"0.0.0",e.deviceName="Android"}else if(/iPhone|iPad|iPod/i.test(t)){e.osName="iOS";const r=t.match(/OS ([\d_]+)/);e.osVersion=r?r[1].replace(/_/g,"."):"0.0.0",e.deviceName=/iPad/i.test(t)?"iPad":"iPhone"}}}catch(e){}return A=e,e}();return{Command:e,DeviceName:t.deviceName,LongPollingKey:"",OSName:t.osName,OSVersion:t.osVersion,RoomId:"",SdkVersion:"1.0.0.0",Version:2}},w=function(t={}){let r=e.CallScene.NONE;const a=t.userIDList||[];return a.length>1&&(r=e.CallScene.MULTI),1===a.length&&(r=e.CallScene.SINGLE),{callId:t.callId||"",roomId:{strRoomId:t.strRoomID||t.strRoomId||"",intRoomId:t.roomID||t.roomId||0},inviter:t.inviter||"",inviteeList:a,groupId:t.chatGroupID||"",mediaType:t.type,status:t.status||e.CallStatus.NONE,role:t.role||e.CallRole.NONE,scene:r,callStartTime:0}},N=Object.freeze({IntRoomId:1,StrRoomId:2});function O(t,r){const a={Title:(t=t||{}).title||"",Sound:t.iosSound||"",BadgeMode:t.ignoreIosBadge?1:0,IsVoipPush:t.iosPushType||0,ContentAvailable:t.enableIosBackgroundNotification?1:0,InterruptionLevel:t.iosInterruptionLevel||"",Image:t.iosImage||""},o={Sound:t.androidSound||"",Title:t.title||"",OPPOChannelID:t.androidOppoChannelId||"",OPPOCategory:t.oppoCategory||"IM",OPPONotifyLevel:t.oppoNotifyLevel||0,GoogleChannelID:t.androidFcmChannelId||"",GoogleImage:t.fcmImage||"",XiaoMiChannelID:t.androidXiaomiChannelId||"",VIVOClassification:t.androidVivoClassification||0,VIVOCategory:t.vivoCategory||"IM",HuaWeiCategory:t.androidHuaweiCategory||"IM",HuaWeiImage:t.huaweiImage||"",HonorImportance:t.honorImportance||"NORMAL",HonorImage:t.honorImage||""},i={entity:{action:2},timPushFeatures:{fcmPushType:0,fcmNotificationType:1},voip_ext:{voip_type:"call",voip_media_type:r===e.CallMediaType.VIDEO?"video":"audio"}};return{Title:t.title||"",Description:t.description||"",Ext:JSON.stringify(i),AndroidInfo:o,ApnsInfo:a}}const D="sendTRTCCustomData",S="call_engine_srv.start_call",U="call_engine_srv.heart_beat",M="call_engine_srv.handle_call",P="call_engine_srv.hangup",V="call_engine_srv.cancel_invite",x="call_engine_srv.get_invitation",F=-1,b={errCode:0,errMsg:"",inviteId:"",callResultList:[]};let G=null,B="",k=0;function H(){G&&(clearInterval(G),G=null),B="",k=0}async function K(e,t){const r=e||{},a=r.chat;if(!a||!g(a.callExperimentalAPI))return{errCode:F,errMsg:"chat.callExperimentalAPI is not available"};if(!r.callId)return{errCode:F,errMsg:"callId is required"};if(!r.terminalId)return{errCode:F,errMsg:"terminalId is required"};let o=M;t===f.Hangup&&(o=P);const i=function(e,t,r,a){return{Body:{CallId:e||"",TerminalId:t||"",ActionType:r>>>0},Head:v(a)}}(r.callId,r.terminalId,t,o);try{const e={serviceCommand:o,data:JSON.stringify(i)},t=await a.callExperimentalAPI(D,e),r=t&&t.data||t||{},s=L(r.ErrorCode)?r.ErrorCode:L(r.errorCode)?r.errorCode:0;return 0!==s?{errCode:s,errMsg:r.ErrorInfo||r.errorInfo||""}:{errCode:0,errMsg:""}}catch(e){return{errCode:e&&(e.code||e.errorCode)||F,errMsg:e&&(e.message||e.errorInfo)||"send failed"}}}const W={CMD_START_CALL:S,CMD_HEART_BEAT:U,CMD_HANDLE_CALL:M,CMD_HANGUP_CALL:P,CMD_CANCEL_CALL:V,CMD_GET_INVITATION:x,HEARTBEAT_INTERVAL_MS:2e3,HEARTBEAT_FAIL_RETRY_DEFAULT:5,HEARTBEAT_FAIL_INTERVAL_MS:2e3,startCall:async function(t){const r=t||{},a=r.chat;if(!a||!g(a.callExperimentalAPI))return{...b,errCode:F,errMsg:"chat.callExperimentalAPI is not available"};if(!r.inviter)return{...b,errCode:F,errMsg:"inviter is required"};if(!R(r.userIdList)||0===r.userIdList.length)return{...b,errCode:F,errMsg:"userIdList cannot be empty"};if(r.mediaType!==e.CallMediaType.AUDIO&&r.mediaType!==e.CallMediaType.VIDEO)return{...b,errCode:F,errMsg:"invalid mediaType"};const o={roomId:r.roomId||{},timeout:r.timeout,userData:r.userData,isEphemeralCall:!!r.isEphemeralCall,offlinePushInfo:r.offlinePushInfo},i=function(e,t,r,a,o){const i=a||{},s=i.roomId||{},n={CallId:"",CallMediaType:r>>>0};"number"==typeof s.intRoomId&&s.intRoomId>0?(n.RoomId=String(s.intRoomId),n.RoomIdType=N.IntRoomId):(!s.intRoomId||0===s.intRoomId)&&"string"==typeof s.strRoomId&&s.strRoomId.length>0&&(n.RoomId=s.strRoomId,n.RoomIdType=N.StrRoomId),n.ExcludeFromHistoryMessage=!1,n.GroupId=o||"",n.IsEphemeralCall=!!i.isEphemeralCall;const l="number"==typeof i.timeout?i.timeout:30;return{Body:{Caller_Account:e,CalleeList_Account:(t||[]).slice(),CallInfo:n,Timeout:1e3*l,UserData:i.userData||"",OfflinePushInfo:O(i.offlinePushInfo,r)},Head:v("call_engine_srv.start_call")}}(r.inviter,r.userIdList,r.mediaType,o,r.groupId||"");let s;try{const e={serviceCommand:S,data:JSON.stringify(i)};s=await a.callExperimentalAPI(D,e)}catch(e){const t=e&&(e.code||e.errorCode)||F,r=e&&(e.message||e.errorInfo)||"send failed";return{...b,errCode:t,errMsg:r}}const n=s&&s.data||s||{};return 0!==n.ErrorCode?{...b,errCode:n.ErrorCode,errMsg:n.ErrorInfo}:{errCode:n?.ErrorCode||0,errMsg:n?.errMsg||"",inviteId:n?.Response?.CallId||"",callResultList:n?.Response?.CallResult||[]}},startHeartBeat:function(e){const t=e||{},{chat:r,callId:a,userId:o}=t;if(!r||!g(r.callExperimentalAPI))return void console.warn("[SSOChannel] startHeartBeat: chat.callExperimentalAPI unavailable");if(!a||!o)return void console.warn("[SSOChannel] startHeartBeat: callId and userId are required");H();const i=L(t.intervalMs)&&t.intervalMs>0?t.intervalMs:2e3,s=L(t.retryCount)&&t.retryCount>0?t.retryCount:5;B=a,G=setInterval(async()=>{if(!B||B!==a)return;const e=await async function(e,t,r){const a={Body:{User_Account:r,CallId:t},Head:v(U)};try{const t={serviceCommand:U,data:JSON.stringify(a)},r=await e.callExperimentalAPI(D,t),o=r&&r.data||r||{},i=L(o.ErrorCode)?o.ErrorCode:L(o.errorCode)?o.errorCode:0;return 0!==i?{errCode:i,errMsg:o.ErrorInfo||o.errorInfo||""}:{errCode:0,errMsg:""}}catch(e){return{errCode:e&&(e.code||e.errorCode)||F,errMsg:e&&(e.message||e.errorInfo)||"send failed"}}}(r,a,o);if(B&&B===a)if(0!==e.errCode){if(k+=1,console.warn("[SSOChannel] heartbeat failed",k,e.errCode,e.errMsg),k>=s){const e=B;if(H(),"function"==typeof t.onTimeout)try{t.onTimeout(e)}catch(e){}}}else k=0},i)},stopHeartBeat:H,accept:async function(e){return K(e,f.AcceptedByInvitee)},reject:async function(e){return K(e,f.RejectedByInvitee)},hangup:async function(e){return K(e,f.Hangup)},cancel:async function(e){const t=e||{},r=t.chat;if(!r||!g(r.callExperimentalAPI))return{errCode:F,errMsg:"chat.callExperimentalAPI is not available"};if(!t.callId)return{errCode:F,errMsg:"callId is required"};if(!t.inviter)return{errCode:F,errMsg:"inviter is required"};if(!R(t.calleeList)||0===t.calleeList.length)return{errCode:F,errMsg:"calleeList cannot be empty"};const a=(o=t.inviter,i=t.callId,s=t.calleeList,n=V,{Body:{CallId:i||"",Operator_Account:o||"",CalleeList_Account:Array.isArray(s)?s.filter(Boolean):[]},Head:v(n)});var o,i,s,n;try{const e={serviceCommand:V,data:JSON.stringify(a)},t=await r.callExperimentalAPI(D,e),o=t&&t.data||t||{},i=L(o.ErrorCode)?o.ErrorCode:L(o.ErrorCode)?o.errorCode:0;return 0!==i?{errCode:i,errMsg:o.ErrorInfo||o.errorInfo||""}:{errCode:0,errMsg:""}}catch(e){return{errCode:e&&(e.code||e.errorCode)||F,errMsg:e&&(e.message||e.errorInfo)||"send failed"}}},getInvitation:async function(e){const t=e||{},r=t.chat;if(!r||!g(r.callExperimentalAPI))return{errCode:F,errMsg:"chat.callExperimentalAPI is not available",data:null};if(!t.userId)return{errCode:F,errMsg:"userId is required",data:null};const a={Body:{User_Account:t.userId||""},Head:v(x)};var o;try{const e={serviceCommand:x,data:JSON.stringify(a)},t=await r.callExperimentalAPI(D,e),i=t&&t.data||t||{},s=L(i.ErrorCode)?i.ErrorCode:L(i.ErrorCode)?i.errorCode:0;if(0!==s)return{errCode:s,errMsg:i.ErrorInfo||i.errorInfo||"",data:null};const n=i?.Response;return n&&(null!==(o=n)&&typeof o===y)&&0!==Object.keys(n).length?{errCode:0,errMsg:"",data:n}:{errCode:0,errMsg:"",data:null}}catch(e){return{errCode:e&&(e.code||e.errorCode)||F,errMsg:e&&(e.message||e.errorInfo)||"send failed",data:null}}}};var j,Y;e.LayoutTemplate=void 0,(j=e.LayoutTemplate||(e.LayoutTemplate={}))[j.FLOAT=0]="FLOAT",j[j.GRID=1]="GRID",function(e){e[e.NONE=0]="NONE",e[e.WAITING=1]="WAITING",e[e.CALLING=2]="CALLING"}(Y||(Y={}));const J=720,q=1280,$={x:480,y:80,w:200,h:300};class X{constructor(){this.currentTemplate=e.LayoutTemplate.FLOAT,this.largeViewUserId="",this.isViewReversed=!1,this.currentLayout=Q(),this.previousLayout=Q()}setLayoutTemplate(e){this.currentTemplate=e,this.largeViewUserId="",this.isViewReversed=!1}setLargeViewUser(e){this.largeViewUserId===e?this.largeViewUserId="":this.largeViewUserId=e}toggleViewReversed(){this.isViewReversed=!this.isViewReversed}getCurrentTemplate(){return this.currentTemplate}getCurrentLayout(){return this.currentLayout}recalculate(t){switch(this.previousLayout=this.currentLayout,this.currentTemplate){case e.LayoutTemplate.FLOAT:this.currentLayout=this.calculateFloatLayout(t);break;case e.LayoutTemplate.GRID:this.currentLayout=this.calculateGridLayout(t)}return this.isLayoutChanged()}toJson(){return JSON.stringify(this.toJsonObject())}toJsonObject(){const t=this.currentLayout,r={template:z(t.template)};return t.template===e.LayoutTemplate.FLOAT?(r.canvas={w:t.canvas.w,h:t.canvas.h},r.primaryUser={userId:t.primaryUser.userId,isLocal:t.primaryUser.isLocal},t.secondaryUser?r.secondaryUser={userId:t.secondaryUser.userId,isLocal:t.secondaryUser.isLocal,frame:{...t.secondaryUser.frame}}:r.secondaryUser=null,r.showRemoteInfo=t.showRemoteInfo):(r.canvas={w:t.canvas.w,h:t.canvas.h},r.participants=t.participants.map(e=>({userId:e.userId,frame:{...e.frame},isLocal:e.isLocal,showName:e.showName}))),r}isLayoutChanged(){const t=this.previousLayout,r=this.currentLayout;if(t.template!==r.template)return!0;if(r.template===e.LayoutTemplate.FLOAT&&t.template===e.LayoutTemplate.FLOAT){if(t.primaryUser.userId!==r.primaryUser.userId)return!0;return(t.secondaryUser?t.secondaryUser.userId:"")!==(r.secondaryUser?r.secondaryUser.userId:"")||t.showRemoteInfo!==r.showRemoteInfo}if(r.template===e.LayoutTemplate.GRID&&t.template===e.LayoutTemplate.GRID){if(t.participants.length!==r.participants.length)return!0;for(let e=0;e<r.participants.length;e++){const a=t.participants[e],o=r.participants[e];if(a.userId!==o.userId)return!0;if(a.frame.x!==o.frame.x)return!0;if(a.frame.y!==o.frame.y)return!0;if(a.frame.w!==o.frame.w)return!0;if(a.frame.h!==o.frame.h)return!0;if(a.showName!==o.showName)return!0}return!1}return!0}calculateFloatLayout(t){const r=t.selfId;let a="";for(const e of t.allParticipants)if(e.id!==r){a=e.id;break}const o=t.selfStatus===Y.CALLING,i=t.mediaType===e.CallMediaType.AUDIO;let s,n,l,c;return o||i?!o&&i||i?(s=a,n=!1,l=null,c=!0):(this.isViewReversed?(s=r,n=!0,l={userId:a,isLocal:!1,frame:{...$}}):(s=a,n=!1,l={userId:r,isLocal:!0,frame:{...$}}),c=!1):(s=r,n=!0,l=null,c=!0),{template:e.LayoutTemplate.FLOAT,canvas:{w:J,h:q},primaryUser:{userId:s,isLocal:n},secondaryUser:l,showRemoteInfo:c}}calculateGridLayout(t){const r=new Map;for(const e of t.allParticipants)r.set(e.id,e.status);const a=[];if(t.inviter){const e=r.get(t.inviter);void 0!==e&&e!==Y.NONE&&a.push(t.inviter)}for(const e of t.inviteeList){const t=r.get(e);void 0!==t&&t!==Y.NONE&&a.push(e)}const o=this.calculateGridPositions(a.length,a,t.selfId);return{template:e.LayoutTemplate.GRID,canvas:{w:J,h:q},participants:o}}calculateGridPositions(e,t,r){const a=[];if(e<=0)return a;const o=240,i=360;let s=-1;if(this.largeViewUserId)for(let r=0;r<e;r++)if(t[r]===this.largeViewUserId){s=r;break}if(s>=0&&e<=4){const i=[s];for(let t=0;t<e;t++)t!==s&&i.push(t);const n=o,l=e-1,c=[{x:0,y:0,w:J,h:J}],d=J;for(let e=0;e<l;e++)c.push({x:e*n,y:d,w:n,h:n});for(let e=0;e<i.length&&e<c.length;e++){const o=t[i[e]];a.push({userId:o,frame:c[e],isLocal:o===r,showName:0===e})}return a}if(s>=0&&e>4){const i=480,n=480,l=[s];for(let t=0;t<e;t++)t!==s&&l.push(t);{const e=t[l[0]];a.push({userId:e,frame:{x:0,y:0,w:i,h:n},isLocal:e===r,showName:!0})}let c=1;if(c<l.length){const e=t[l[c]];a.push({userId:e,frame:{x:i,y:0,w:o,h:o},isLocal:e===r,showName:!1}),c++}if(c<l.length){const e=t[l[c]];a.push({userId:e,frame:{x:i,y:o,w:o,h:o},isLocal:e===r,showName:!1}),c++}let d=n;for(;c<l.length;){for(let e=0;e<3&&c<l.length;e++){const i=t[l[c]];a.push({userId:i,frame:{x:e*o,y:d,w:o,h:o},isLocal:i===r,showName:!1}),c++}d+=o}return a}if(1===e)a.push({userId:t[0],frame:{x:0,y:0,w:J,h:q},isLocal:t[0]===r,showName:!1});else if(2===e)a.push({userId:t[0],frame:{x:0,y:0,w:i,h:i},isLocal:t[0]===r,showName:!1}),a.push({userId:t[1],frame:{x:i,y:0,w:i,h:i},isLocal:t[1]===r,showName:!1});else if(3===e)a.push({userId:t[0],frame:{x:0,y:0,w:i,h:i},isLocal:t[0]===r,showName:!1}),a.push({userId:t[1],frame:{x:i,y:0,w:i,h:i},isLocal:t[1]===r,showName:!1}),a.push({userId:t[2],frame:{x:180,y:i,w:i,h:i},isLocal:t[2]===r,showName:!1});else if(4===e)a.push({userId:t[0],frame:{x:0,y:0,w:i,h:i},isLocal:t[0]===r,showName:!1}),a.push({userId:t[1],frame:{x:i,y:0,w:i,h:i},isLocal:t[1]===r,showName:!1}),a.push({userId:t[2],frame:{x:0,y:i,w:i,h:i},isLocal:t[2]===r,showName:!1}),a.push({userId:t[3],frame:{x:i,y:i,w:i,h:i},isLocal:t[3]===r,showName:!1});else{let i=0;for(let s=0;s<e;s+=3){const n=Math.min(3,e-s);for(let e=0;e<n;e++){const n=s+e;a.push({userId:t[n],frame:{x:e*o,y:i,w:o,h:o},isLocal:t[n]===r,showName:!1})}i+=o}}return a}}function z(t){switch(t){case e.LayoutTemplate.FLOAT:return"float";case e.LayoutTemplate.GRID:return"grid";default:return"float"}}function Q(){return{template:e.LayoutTemplate.FLOAT,canvas:{w:J,h:q},primaryUser:{userId:"",isLocal:!1},secondaryUser:null,showRemoteInfo:!1}}const Z=new a,ee=Object.freeze(["onEnterRoom","onExitRoom","onSwitchRole","onError","onWarnning","onRemoteUserEnterRoom","onRemoteUserLeaveRoom","onUserVideoAvailable","onUserSubStreamAvailable","onUserAudioAvailable","onUserVoiceVolume","onNetworkQuality","onFirstVideoFrame","onSendFirstLocalVideoFrame","onSendFirstLocalAudioFrame","onMicDidReady"]);function te(e){const t=r&&r.EVENT||{};switch(e){case"SDK_READY":return t.SDK_READY||"sdkStateReady";case"KICKED_OUT":return t.KICKED_OUT||"kickedOut";case"USER_SIG_EXPIRED":return t.USER_SIG_EXPIRED||"userSigExpired";case"ROOM_CUSTOM_DATA_RECEIVED":return t.ROOM_CUSTOM_DATA_RECEIVED;default:return null}}class re{constructor(e){const t=e||{};this._emitter=new a,this._sdkAppId=t.SDKAppID||t.sdkAppID||0,this._userId="",this._userSig="",this._isExternalChat=!1,this._chatListenersBound=!1,this._trtcCloud=null,this._trtcListenersBound=!1,this._trtcListenerHandlers=null,this._callInfo=w(),this._callsInFlight=!1,this._terminalId="",this._viewLayout=new X;const r=t.chat||t.tim;r&&(this._isExternalChat=!0,this._chat=r)}static createInstance(e){return re.instance||(re.instance=new re(e)),re.instance}static once(e,t){"ready"===e?"function"==typeof t&&Promise.resolve().then(()=>{try{t()}catch(e){console.error("[call-engine-wx] ready callback threw:",e)}}):Z.once(e,t)}async login(e){const t=e||{},a=t.userID,o=t.userSig,i=t.sdkAppID||t.SDKAppID||this._sdkAppId;if(!a||!o)throw ae(_.ERR_FAILED,"login: userID and userSig are required");!this._sdkAppId&&i&&(this._sdkAppId=i),this._userId=a,this._userSig=o,this._bindChatListenersOnce();try{if(this._chat=r.create({SDKAppID:this._sdkAppId,devMode:!0}),this._isLogined())return void this._emitOnceReady();let e;try{e=await this._chat.login({userID:a,userSig:o});try{this.getTRTCCloudInstance()}catch(e){}}catch(e){const t=e&&e.code,r=e&&e.message||"";if(2024===t||2025===t)return console.warn("[call-engine-wx] login: tolerated lite-chat code",t,r),void this._emitOnceReady();if(this._chatReadyFired&&(/timeout/i.test(r)||"NETWORK_TIMEOUT"===t))return console.warn("[call-engine-wx] login: chat.login() rejected with",r||t,"AFTER SDK_READY — treating as success"),void this._emitOnceReady();throw e}if(e&&e.data&&e.data.repeatLogin)return void this._emitOnceReady();this._emitOnceReady()}catch(e){const t=e&&e.code||_.ERR_FAILED,r=e&&e.message||"login failed";throw this._emitter.emit(m.ERROR,{code:t,message:r}),ae(t,r)}}async logout(){this._clearCallInfo();try{this._chat&&"function"==typeof this._chat.logout&&await this._chat.logout()}finally{this._userId="",this._userSig=""}}async destroyInstance(){re.instance=null;try{await this.logout()}catch(e){}this._unbindChatListeners(),this._unbindTRTCListeners(),this._emitter.removeAllListeners(),this._trtcCloud=null}on(e,t){this._emitter.on(e,t)}off(e,t){this._emitter.off(e,t)}once(e,t){this._emitter.once(e,t)}getTim(){return this._chat}getTRTCCloudInstance(){if(this._trtcCloud)return this._trtcCloud;if(!t||"function"!=typeof t.getTRTCShareInstance)throw ae(_.ERR_FAILED,"[call-engine-wx] @tencentcloud/trtc-component-wx is not installed or does not expose getTRTCShareInstance().");return this._trtcCloud=t.getTRTCShareInstance(),this._bindTRTCListenersOnce(),this._trtcCloud}setLogLevel(e){try{this._chat&&"function"==typeof this._chat.setLogLevel&&this._chat.setLogLevel(e)}catch(e){}}async calls(t){if(console.warn("---\x3e calls 入参 ",JSON.stringify(t)),!this._isLogined()&&!this._chatReadyFired)throw ae(_.ERR_FAILED,"calls: not logged in. Call login() first and wait for SDK_READY.");if(this._callsInFlight)throw ae(_.ERR_FAILED,"calls: a previous calls() is still in progress");if(this._callInfo.status!==e.CallStatus.NONE)throw ae(_.ERR_FAILED,"calls: there is an active call already; hang up before starting a new one");if(!R(t?.userIDList)||0===t?.userIDList?.length)throw ae(_.ERR_FAILED,"calls: userIDList cannot be empty");if(t?.type!==e.CallMediaType.AUDIO&&t?.type!==e.CallMediaType.VIDEO)throw ae(_.ERR_FAILED,"calls: invalid mediaType");const r=this._getLoginUserId();if(!r)throw ae(_.ERR_FAILED,"calls: cannot resolve login user id");var a;this._callInfo=w({...t,strRoomId:(a=t?.strRoomID,a||`roomId_${Math.floor(1e6*Math.random())}`),status:e.CallStatus.WAITING,role:e.CallRole.CALLER,inviter:r}),this._callsInFlight=!0;let o=!1;try{try{await this._enterTRTCRoom(),o=!0}catch(e){this._safeLeaveTRTCRoom();const t=e&&e.code||_.ERR_FAILED,r=e&&e.message||"enter TRTC room failed";throw this._emitter.emit(m.ERROR,{code:t,message:r}),ae(t,r)}const t=await W.startCall({chat:this._chat,...this._callInfo,userIdList:this._callInfo.inviteeList});if(0!==t.errCode)throw this._safeLeaveTRTCRoom(),o=!1,this._emitter.emit(m.ERROR,{code:t.errCode,message:t.errMsg}),ae(t.errCode,t.errMsg||"start_call failed");this._callInfo.callId=t.inviteId,this._callInfo.callStartTime=Date.now();let r=0;for(const a of t.callResultList)switch(a.resultCode){case e.CallInvitationResultCodeType.INVITED:this._emitter.emit(m.USER_ENTER,a.userId);break;case e.CallInvitationResultCodeType.SUCCESS:this._emitter.emit("onUserInviting",a.userId);break;case e.CallInvitationResultCodeType.LINE_BUSY:this._emitter.emit("onUserLineBusy",a.userId),r++}if(r>=this._callInfo.inviteeList.length){const r=t.callResultList[t.callResultList.length-1];return this._safeLeaveTRTCRoom(),o=!1,this._emitter.emit(m.ON_CALL_NOT_CONNECTED,{callInfo:{...this._callInfo},userId:r?r.userId:"",reason:e.CallEndReason.LINE_BUSY}),this._clearCallInfo(),{inviteId:t.inviteId,roomId:this._callInfo,callResultList:t.callResultList}}return W.startHeartBeat({chat:this._chat,callId:this._callInfo.callId,userId:this._callInfo.inviter,onTimeout:t=>{this._callInfo.callId===t&&(this._emitter.emit(m.ON_CALL_NOT_CONNECTED,{callInfo:{...this._callInfo},userId:this._callInfo.inviter,reason:e.CallEndReason.LINE_BUSY}),this._safeLeaveTRTCRoom(),this._clearCallInfo())}}),{inviteId:t.inviteId,roomId:this._callInfo,callResultList:t.callResultList}}catch(e){throw o&&this._safeLeaveTRTCRoom(),this._clearCallInfo(),e}finally{this._callsInFlight=!1}}async accept(){if(!this._isLogined()&&!this._chatReadyFired)throw ae(_.ERR_FAILED,"accept: not logged in. Call login() first and wait for SDK_READY.");if(this._callInfo.role!==e.CallRole.CALLEE)throw ae(_.ERR_FAILED,"accept: current role is not CALLEE");if(this._callInfo.status!==e.CallStatus.WAITING)throw ae(_.ERR_FAILED,`accept: invalid call status ${this._callInfo.status}; expected WAITING`);const t=this._callInfo.callId;if(!t)throw ae(_.ERR_FAILED,"accept: no active invitation (callId is empty)");let r=!1;try{await this._enterTRTCRoom(),r=!0;const a=this._getOrCreateTerminalId(),o=await W.accept({chat:this._chat,callId:t,terminalId:a});if(0!==o.errCode)throw ae(o.errCode,o.errMsg||"handle_call(accept) failed");return this._callInfo.status=e.CallStatus.CALLING,this._callInfo.callStartTime=Date.now(),this._emitter.emit(m.ON_CALL_BEGIN,{callInfo:{...this._callInfo}}),W.startHeartBeat({chat:this._chat,callId:this._callInfo.callId,userId:this._getLoginUserId(),onTimeout:t=>{this._callInfo.callId===t&&(this._emitter.emit(m.ON_CALL_NOT_CONNECTED,{callInfo:{...this._callInfo},userId:this._getLoginUserId(),reason:e.CallEndReason.LINE_BUSY}),this._safeLeaveTRTCRoom(),this._clearCallInfo())}}),{callId:t,roomId:this._callInfo.roomId}}catch(e){r&&this._safeLeaveTRTCRoom(),this._clearCallInfo();const t=e&&e.code||_.ERR_FAILED,a=e&&e.message||"accept failed";throw this._emitter.emit(m.ERROR,{code:t,message:a}),ae(t,a)}}async reject(){if(!this._isLogined()&&!this._chatReadyFired)throw ae(_.ERR_FAILED,"reject: not logged in. Call login() first and wait for SDK_READY.");if(this._callInfo.role!==e.CallRole.CALLEE)throw ae(_.ERR_FAILED,"reject: current role is not CALLEE");if(this._callInfo.status!==e.CallStatus.WAITING)throw ae(_.ERR_FAILED,`reject: invalid call status ${this._callInfo.status}; expected WAITING`);const t=this._callInfo.callId;if(!t)throw ae(_.ERR_FAILED,"reject: no active invitation (callId is empty)");const r={...this._callInfo};try{const a=this._getOrCreateTerminalId(),o=await W.reject({chat:this._chat,callId:t,terminalId:a});return 0!==o.errCode&&console.warn("[call-engine-wx] reject: backend reported error",o.errCode,o.errMsg),this._emitter.emit(m.ON_CALL_END,{callInfo:r,reason:e.CallEndReason.REJECT,userId:this._getLoginUserId()}),{callId:t}}finally{this._clearCallInfo()}}async hangup(){if(!this._isLogined()&&!this._chatReadyFired)throw ae(_.ERR_FAILED,"hangup: not logged in. Call login() first and wait for SDK_READY.");if(this._callInfo.status!==e.CallStatus.CALLING&&this._callInfo.status!==e.CallStatus.WAITING)throw ae(_.ERR_FAILED,`hangup: invalid call status ${this._callInfo.status}; expected CALLING or WAITING`);const t=this._callInfo.callId;if(!t)throw ae(_.ERR_FAILED,"hangup: no active call (callId is empty)");const r=this._callInfo.role===e.CallRole.CALLER&&this._callInfo.status===e.CallStatus.WAITING,a={...this._callInfo};try{if(r){const e=this._callInfo.inviter||this._getLoginUserId(),r=Array.isArray(this._callInfo.inviteeList)?this._callInfo.inviteeList.slice():[];if(r.length>0){const a=await W.cancel({chat:this._chat,inviter:e,callId:t,calleeList:r});0!==a.errCode&&console.warn("[call-engine-wx] hangup(cancel): backend reported error",a.errCode,a.errMsg)}}else{const e=this._getOrCreateTerminalId(),r=await W.hangup({chat:this._chat,callId:t,terminalId:e});0!==r.errCode&&console.warn("[call-engine-wx] hangup: backend reported error",r.errCode,r.errMsg)}return this._safeLeaveTRTCRoom(),this._emitter.emit(m.ON_CALL_END,{callInfo:a,reason:r?e.CallEndReason.CANCELED:e.CallEndReason.HANGUP,userId:this._getLoginUserId()}),{callId:t}}finally{this._clearCallInfo()}}setLayoutTemplate(e){this._viewLayout.setLayoutTemplate(e),this._recalcAndEmitLayout()}setLargeViewUser(e){this._viewLayout.setLargeViewUser(e),this._recalcAndEmitLayout()}toggleViewReversed(){this._viewLayout.toggleViewReversed(),this._recalcAndEmitLayout()}_buildLayoutState(){const t=this._getLoginUserId()||"",r=this._callInfo||{},a=r.inviter||"",o=Array.isArray(r.inviteeList)?r.inviteeList:[],i="number"==typeof r.status?r.status:Y.NONE,s=new Set,n=[],l=(e,t)=>{e&&!s.has(e)&&(s.add(e),n.push({id:e,status:t}))};l(t,i),a&&l(a,i);for(const e of o)l(e,i);return{selfId:t,selfStatus:i,mediaType:"number"==typeof r.mediaType?r.mediaType:e.CallMediaType.VIDEO,allParticipants:n,inviter:a,inviteeList:o}}_recalcAndEmitLayout(){try{this._viewLayout.recalculate(this._buildLayoutState())&&this._emitter.emit(m.VIEW_LAYOUT_CHANGED,this._viewLayout.toJsonObject())}catch(e){console.warn("[call-engine-wx] _recalcAndEmitLayout failed:",e&&e.message)}}async openCamera(e,t){let r;if(r=void 0===t?-1:t?1:0,g(this?._trtcCloud?.startLocalPreview))return this._trtcCloud.startLocalPreview(e,r)}async closeCamera(){if(g(this?._trtcCloud?.stopLocalPreview))return this._trtcCloud.stopLocalPreview()}async switchCamera(e){g(this?._trtcCloud?.switchCamera)&&await this._trtcCloud.switchCamera(!!e)}async openMicrophone(){g(this?._trtcCloud?.startLocalAudio)&&await this._trtcCloud.startLocalAudio()}async closeMicrophone(){g(this?._trtcCloud?.stopLocalAudio)&&await this._trtcCloud.stopLocalAudio()}async selectAudioPlaybackDevice(t){if(!g(this?._trtcCloud?.setAudioRoute))return;const r=t===e.AudioPlayBackDevice.EAR||1===t?e.AudioPlayBackDevice.EAR:e.AudioPlayBackDevice.SPEAKER;await this._trtcCloud.setAudioRoute(r)}async startRemoteView(e){if(!this._trtcCloud||"function"!=typeof this._trtcCloud.startRemoteView)return;const{userId:t,view:r,streamType:a=0}=e||{};return this._trtcCloud.startRemoteView(t,r,a)}async stopRemoteView(e){if(!this._trtcCloud||"function"!=typeof this._trtcCloud.stopRemoteView)return;const{userId:t,streamType:r=0}=e||{};return this._trtcCloud.stopRemoteView(t,r)}_bindChatListenersOnce(){if(this._chatListenersBound||!this._chat||"function"!=typeof this._chat.on)return;const t=te("SDK_READY"),r=te("KICKED_OUT"),a=te("USER_SIG_EXPIRED"),o=te("ROOM_CUSTOM_DATA_RECEIVED");this._onChatReady=()=>{this._chatReadyFired=!0,this._emitOnceReady()},this._onChatKickedOut=e=>{this._emitter.emit(m.KICKED_OUT,e||{})},this._onChatUserSigExpired=()=>{this._emitter.emit(m.onUserSigExpired,{})},this._onChatRoomCustomDataReceived=t=>{const{Data:r={},Head:a={}}=JSON.parse(t.data);if("call_engine_srv.invite_user_notify"===a?.Command){const{CallInfo:t={}}=r;let a={intRoomId:0,strRoomId:""};if(1===t.RoomIdType)a.intRoomId=Number(t.RoomId);else{if(2!==t.RoomIdType)return;a.strRoomId=t.RoomId}this._callInfo=w({userIDList:r?.CalleeList_Account||[],callId:r?.CallInfo?.CallId||"",inviter:r?.Caller_Account||"",roomId:a.intRoomId||0,strRoomId:a.strRoomId||"",groupId:r?.CallInfo?.GroupId||"",type:r?.CallInfo?.CallMediaType,status:e.CallStatus.WAITING,role:e.CallRole.CALLEE}),this._emitter.emit(m.ON_CALL_RECEIVED,{callId:this._callInfo.callId,inviter:this._callInfo.inviter,inviteeList:this._callInfo.inviteeList,groupId:this._callInfo.groupId,mediaType:this._callInfo.mediaType,roomId:this._callInfo.roomId,userData:r?.UserData||"",callInfo:{...this._callInfo}})}},t&&this._chat.on(t,this._onChatReady),r&&this._chat.on(r,this._onChatKickedOut),a&&this._chat.on(a,this._onChatUserSigExpired),o&&this._chat.on(o,this._onChatRoomCustomDataReceived),this._chatListenersBound=!0}_unbindChatListeners(){if(!this._chatListenersBound||!this._chat||"function"!=typeof this._chat.off)return;const e=te("SDK_READY"),t=te("KICKED_OUT"),r=te("USER_SIG_EXPIRED"),a=te("ROOM_CUSTOM_DATA_RECEIVED");try{e&&this._onChatReady&&this._chat.off(e,this._onChatReady)}catch(e){}try{t&&this._onChatKickedOut&&this._chat.off(t,this._onChatKickedOut)}catch(e){}try{r&&this._onChatUserSigExpired&&this._chat.off(r,this._onChatUserSigExpired)}catch(e){}try{a&&this._onChatRoomCustomDataReceived&&this._chat.off(a,this._onChatRoomCustomDataReceived)}catch(e){}this._chatListenersBound=!1}_bindTRTCListenersOnce(){if(this._trtcListenersBound||!this._trtcCloud)return;const t=this._trtcCloud;if("function"!=typeof t.on)return;const r={},a=e=>(...t)=>{try{this._emitter.emit(e,...t)}catch(t){console.warn("[call-engine-wx] listener for",e,"threw:",t)}};for(const o of ee){let i;if("onRemoteUserEnterRoom"===o){const t=a(o);i=(...r)=>{try{this._callInfo&&this._callInfo.callId&&this._callInfo.status===e.CallStatus.WAITING&&(this._callInfo.status=e.CallStatus.CALLING,this._callInfo.callStartTime||(this._callInfo.callStartTime=Date.now()),this._emitter.emit(m.ON_CALL_BEGIN,{callInfo:{...this._callInfo}}))}catch(e){console.warn("[call-engine-wx] ON_CALL_BEGIN gate threw:",e)}t(...r)}}else i=a(o);r[o]=i;try{t.on(o,i)}catch(e){}}this._trtcListenerHandlers=r,this._trtcListenersBound=!0}_unbindTRTCListeners(){if(!this._trtcListenersBound)return;const e=this._trtcCloud,t=this._trtcListenerHandlers||{};if(e&&"function"==typeof e.off)for(const r of Object.keys(t))try{e.off(r,t[r])}catch(e){}this._trtcListenerHandlers=null,this._trtcListenersBound=!1}_emitOnceReady(){this._readyEmitted||(this._readyEmitted=!0,this._emitter.emit(m.SDK_READY,{name:"sdk_ready"}),this._fetchPendingInvitation().catch(e=>{console.warn("[call-engine-wx] _fetchPendingInvitation: unexpected error",e)}))}async _fetchPendingInvitation(){if(!this._chat||!this._isLogined())return;if(this._callInfo&&this._callInfo.callId)return;const e=this._getLoginUserId();if(!e)return;let t;try{t=await W.getInvitation({chat:this._chat,userId:e})}catch(e){return void console.warn("[call-engine-wx] getInvitation request threw:",e)}if(t&&0===t.errCode&&t.data)try{const e={data:JSON.stringify({Data:t.data,Head:{Command:"call_engine_srv.invite_user_notify"}})};g(this._onChatRoomCustomDataReceived)&&this._onChatRoomCustomDataReceived(e)}catch(e){console.warn("[call-engine-wx] replay pending invitation failed:",e)}}_isLogined(){try{if(!this._chat)return!1;if("function"==typeof this._chat.getLoginUser)return!!this._chat.getLoginUser()}catch(e){}return!1}_getLoginUserId(){return this._userId?this._userId:g(this?._chat?.getLoginUser)&&this._chat.getLoginUser()||""}async _enterTRTCRoom(){try{W.stopHeartBeat()}catch(e){}if(this._callInfo.callType===e.CallMediaType.UNKNOWN)throw ae(-1,"call type is none");const{roomId:t}=this._callInfo;if(0===t.intRoomId&&""===t.strRoomId)throw ae(-1,"room id is empty");const r={sdkAppId:this._sdkAppId,userId:this._getLoginUserId(),userSig:this._userSig,role:20};t.intRoomId>0?r.roomId=t.intRoomId:r.strRoomId=t.strRoomId;const a=this._callInfo.mediaType===e.CallMediaType.VIDEO?0:2,o=this.getTRTCCloudInstance();await new Promise((e,t)=>{let i=!1,s=null;const n=()=>{s&&(clearTimeout(s),s=null);try{this._emitter.off("onEnterRoom",l)}catch(e){}},l=r=>{i||(i=!0,n(),"number"==typeof r&&r>0?e():t(ae("number"==typeof r?r:-1,`enterRoom failed: ${r}`)))};this._emitter.on("onEnterRoom",l),s=setTimeout(()=>{i||(i=!0,n(),t(ae(-1,"enterRoom timeout")))},1e4);try{const e=o.enterRoom(r,a);e&&"function"==typeof e.catch&&e.catch(e=>{i||(i=!0,n(),t(e))})}catch(e){if(i)return;i=!0,n(),t(e)}})}_safeLeaveTRTCRoom(){try{this._trtcCloud&&"function"==typeof this._trtcCloud.exitRoom&&this._trtcCloud.exitRoom()}catch(e){}}_clearCallInfo(){try{W.stopHeartBeat()}catch(e){}this._callInfo=w()}_getOrCreateTerminalId(){return this._terminalId||(this._terminalId=function(){const e=new Array(16),t="undefined"!=typeof crypto&&crypto||null;if(t&&"function"==typeof t.getRandomValues){const r=new Uint8Array(16);t.getRandomValues(r);for(let t=0;t<16;t++)e[t]=r[t]}else for(let t=0;t<16;t++)e[t]=Math.floor(256*Math.random());const r=e.map(e=>e.toString(16).padStart(2,"0")).join("").toUpperCase();return`${r.slice(0,8)}-${r.slice(8,12)}-${r.slice(12,16)}-${r.slice(16,20)}-${r.slice(20,32)}`}()),this._terminalId}}function ae(e,t){const r=new Error(t);return r.code=e,r}re.instance=null,e.TencentCloudChat=r,e.CallInvitationRespondedType=f,e.TUICallEngine=re,e.TUICallEvent=m,e.TUIErrorCode=_,e.default=re,Object.defineProperty(e,"__esModule",{value:!0})});
|
|
2
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@tencentcloud/trtc-component-wx"),require("@tencentcloud/lite-chat/basic")):"function"==typeof define&&define.amd?define(["exports","@tencentcloud/trtc-component-wx","@tencentcloud/lite-chat/basic"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).CallsEngineWX={},e.TRTCComponentWX,e.TencentCloudChat)}(this,function(e,t,r){"use strict";class a{constructor(){this._handlers=new Map}on(e,t){if("function"!=typeof t)return this;let r=this._handlers.get(e);return r||(r=[],this._handlers.set(e,r)),r.push({fn:t,once:!1}),this}once(e,t){if("function"!=typeof t)return this;let r=this._handlers.get(e);return r||(r=[],this._handlers.set(e,r)),r.push({fn:t,once:!0}),this}off(e,t){if(!e)return this._handlers.clear(),this;const r=this._handlers.get(e);if(!r)return this;if(!t)return this._handlers.delete(e),this;const a=r.filter(e=>e.fn!==t);return 0===a.length?this._handlers.delete(e):this._handlers.set(e,a),this}emit(e,...t){const r=this._handlers.get(e);if(!r||0===r.length)return!1;const a=r.slice();for(const r of a){try{r.fn.apply(null,t)}catch(e){console.error("[call-engine-wx] listener threw:",e)}r.once&&this.off(e,r.fn)}return!0}removeAllListeners(e){return e?this._handlers.delete(e):this._handlers.clear(),this}listenerCount(e){const t=this._handlers.get(e);return t?t.length:0}}var o,i,s,n,l,c,d,h,u,I;e.CallStatus=void 0,(o=e.CallStatus||(e.CallStatus={}))[o.NONE=0]="NONE",o[o.WAITING=1]="WAITING",o[o.CALLING=2]="CALLING",e.CallRole=void 0,(i=e.CallRole||(e.CallRole={}))[i.NONE=0]="NONE",i[i.CALLER=1]="CALLER",i[i.CALLEE=2]="CALLEE",e.CallMediaType=void 0,(s=e.CallMediaType||(e.CallMediaType={}))[s.UNKNOWN=0]="UNKNOWN",s[s.AUDIO=1]="AUDIO",s[s.VIDEO=2]="VIDEO",e.CallScene=void 0,(n=e.CallScene||(e.CallScene={}))[n.NONE=0]="NONE",n[n.GROUP=1]="GROUP",n[n.MULTI=2]="MULTI",n[n.SINGLE=3]="SINGLE",e.IOSOfflinePushType=void 0,(l=e.IOSOfflinePushType||(e.IOSOfflinePushType={}))[l.APNs=0]="APNs",l[l.VoIP=1]="VoIP",e.CallInvitationResultCodeType=void 0,(c=e.CallInvitationResultCodeType||(e.CallInvitationResultCodeType={}))[c.SUCCESS=0]="SUCCESS",c[c.INVITED=1]="INVITED",c[c.LINE_BUSY=2]="LINE_BUSY",e.CallEndReason=void 0,(d=e.CallEndReason||(e.CallEndReason={}))[d.UNKNOWN=0]="UNKNOWN",d[d.HANGUP=1]="HANGUP",d[d.REJECT=2]="REJECT",d[d.NO_RESPONSE=3]="NO_RESPONSE",d[d.OFFLINE=4]="OFFLINE",d[d.LINE_BUSY=5]="LINE_BUSY",d[d.CANCELED=6]="CANCELED",d[d.OTHER_DEVICE_ACCEPTED=7]="OTHER_DEVICE_ACCEPTED",d[d.OTHER_DEVICE_REJECT=8]="OTHER_DEVICE_REJECT",d[d.END_BY_SERVER=9]="END_BY_SERVER",e.LOG_LEVEL=void 0,(h=e.LOG_LEVEL||(e.LOG_LEVEL={}))[h.DEBUG=0]="DEBUG",h[h.INFO=1]="INFO",h[h.WARN=2]="WARN",h[h.ERROR=3]="ERROR",h[h.NONE=4]="NONE",e.CameraPosition=void 0,(u=e.CameraPosition||(e.CameraPosition={}))[u.FRONT=1]="FRONT",u[u.BACK=0]="BACK",e.AudioPlayBackDevice=void 0,(I=e.AudioPlayBackDevice||(e.AudioPlayBackDevice={}))[I.SPEAKER=0]="SPEAKER",I[I.EAR=1]="EAR";const f=Object.freeze({None:0,AcceptedByInvitee:1,RejectedByInvitee:2,NoResponseUntilTimeout:3,Hangup:4,Join:5,Offline:6,InviteUser:7}),_=Object.freeze({ERR_FAILED:-1}),m=Object.freeze({ERROR:"onError",SDK_READY:"sdkReady",KICKED_OUT:"onKickedOffline",onUserSigExpired:"onUserSigExpired",ON_CALL_BEGIN:"onCallBegin",ON_CALL_END:"onCallEnd",ON_CALL_RECEIVED:"onCallReceived",ON_CALL_CANCELED:"onCallCanceled",ON_CALL_NOT_CONNECTED:"onCallNotConnected",INVITED:"onInvited",USER_ENTER:"onUserJoin",USER_LEAVE:"onUserLeave",VIEW_LAYOUT_CHANGED:"viewLayoutChanged"}),C="number",y="object",E="array",p="function",L=function(e){return typeof e===C},R=function(e){return typeof Array.isArray===p?Array.isArray(e):T(e)===E},g=function(e){return typeof e===p},T=function(e){return Object.prototype.toString.call(e).match(/^\[object (.*)\]$/)[1].toLowerCase()};let A=null;const v=function(e){const t=function(){if(A)return A;const e={osName:"Unknown",osVersion:"0.0.0",deviceName:"Unknown"};try{const t="undefined"!=typeof wx?wx:null,r="undefined"!=typeof uni?uni:null;if(t&&"function"==typeof t.getSystemInfoSync){const r=t.getSystemInfoSync()||{},[a="Unknown",o="0.0.0"]=String(r.system||"").split(" ");e.osName=a,e.osVersion=o,e.deviceName=r.model||r.brand||"Unknown"}else if(r&&"function"==typeof r.getSystemInfoSync){const t=r.getSystemInfoSync()||{},[a="Unknown",o="0.0.0"]=String(t.system||"").split(" ");e.osName=a,e.osVersion=o,e.deviceName=t.model||t.brand||"Unknown"}else if("undefined"!=typeof navigator&&navigator.userAgent){const t=navigator.userAgent;if(/Mac OS X/i.test(t)){e.osName="MacOS";const r=t.match(/Mac OS X ([\d_\.]+)/);e.osVersion=r?r[1].replace(/_/g,"."):"0.0.0",e.deviceName="Mac"}else if(/Windows/i.test(t)){e.osName="Windows";const r=t.match(/Windows NT ([\d\.]+)/);e.osVersion=r?r[1]:"0.0.0",e.deviceName="PC"}else if(/Android/i.test(t)){e.osName="Android";const r=t.match(/Android ([\d\.]+)/);e.osVersion=r?r[1]:"0.0.0",e.deviceName="Android"}else if(/iPhone|iPad|iPod/i.test(t)){e.osName="iOS";const r=t.match(/OS ([\d_]+)/);e.osVersion=r?r[1].replace(/_/g,"."):"0.0.0",e.deviceName=/iPad/i.test(t)?"iPad":"iPhone"}}}catch(e){}return A=e,e}();return{Command:e,DeviceName:t.deviceName,LongPollingKey:"",OSName:t.osName,OSVersion:t.osVersion,RoomId:"",SdkVersion:"1.0.0.0",Version:2}},w=function(t={}){let r=e.CallScene.NONE;const a=t.userIDList||[];return a.length>1&&(r=e.CallScene.MULTI),1===a.length&&(r=e.CallScene.SINGLE),{callId:t.callId||"",roomId:{strRoomId:t.strRoomID||t.strRoomId||"",intRoomId:t.roomID||t.roomId||0},inviter:t.inviter||"",inviteeList:a,groupId:t.chatGroupID||"",mediaType:t.type,status:t.status||e.CallStatus.NONE,role:t.role||e.CallRole.NONE,scene:r,callStartTime:0}},N=Object.freeze({IntRoomId:1,StrRoomId:2});function O(t,r){const a={Title:(t=t||{}).title||"",Sound:t.iosSound||"",BadgeMode:t.ignoreIosBadge?1:0,IsVoipPush:t.iosPushType||0,ContentAvailable:t.enableIosBackgroundNotification?1:0,InterruptionLevel:t.iosInterruptionLevel||"",Image:t.iosImage||""},o={Sound:t.androidSound||"",Title:t.title||"",OPPOChannelID:t.androidOppoChannelId||"",OPPOCategory:t.oppoCategory||"IM",OPPONotifyLevel:t.oppoNotifyLevel||0,GoogleChannelID:t.androidFcmChannelId||"",GoogleImage:t.fcmImage||"",XiaoMiChannelID:t.androidXiaomiChannelId||"",VIVOClassification:t.androidVivoClassification||0,VIVOCategory:t.vivoCategory||"IM",HuaWeiCategory:t.androidHuaweiCategory||"IM",HuaWeiImage:t.huaweiImage||"",HonorImportance:t.honorImportance||"NORMAL",HonorImage:t.honorImage||""},i={entity:{action:2},timPushFeatures:{fcmPushType:0,fcmNotificationType:1},voip_ext:{voip_type:"call",voip_media_type:r===e.CallMediaType.VIDEO?"video":"audio"}};return{Title:t.title||"",Description:t.description||"",Ext:JSON.stringify(i),AndroidInfo:o,ApnsInfo:a}}const D="sendTRTCCustomData",S="call_engine_srv.start_call",U="call_engine_srv.heart_beat",M="call_engine_srv.handle_call",P="call_engine_srv.hangup",V="call_engine_srv.cancel_invite",x="call_engine_srv.get_invitation",b=-1,F={errCode:0,errMsg:"",inviteId:"",callResultList:[]};let G=null,B="",k=0;function H(){G&&(clearInterval(G),G=null),B="",k=0}async function K(e,t){const r=e||{},a=r.chat;if(!a||!g(a.callExperimentalAPI))return{errCode:b,errMsg:"chat.callExperimentalAPI is not available"};if(!r.callId)return{errCode:b,errMsg:"callId is required"};if(!r.terminalId)return{errCode:b,errMsg:"terminalId is required"};let o=M;t===f.Hangup&&(o=P);const i=function(e,t,r,a){return{Body:{CallId:e||"",TerminalId:t||"",ActionType:r>>>0},Head:v(a)}}(r.callId,r.terminalId,t,o);try{const e={serviceCommand:o,data:JSON.stringify(i)},t=await a.callExperimentalAPI(D,e),r=t&&t.data||t||{},s=L(r.ErrorCode)?r.ErrorCode:L(r.errorCode)?r.errorCode:0;return 0!==s?{errCode:s,errMsg:r.ErrorInfo||r.errorInfo||""}:{errCode:0,errMsg:""}}catch(e){return{errCode:e&&(e.code||e.errorCode)||b,errMsg:e&&(e.message||e.errorInfo)||"send failed"}}}const W={CMD_START_CALL:S,CMD_HEART_BEAT:U,CMD_HANDLE_CALL:M,CMD_HANGUP_CALL:P,CMD_CANCEL_CALL:V,CMD_GET_INVITATION:x,HEARTBEAT_INTERVAL_MS:2e3,HEARTBEAT_FAIL_RETRY_DEFAULT:5,HEARTBEAT_FAIL_INTERVAL_MS:2e3,startCall:async function(t){const r=t||{},a=r.chat;if(!a||!g(a.callExperimentalAPI))return{...F,errCode:b,errMsg:"chat.callExperimentalAPI is not available"};if(!r.inviter)return{...F,errCode:b,errMsg:"inviter is required"};if(!R(r.userIdList)||0===r.userIdList.length)return{...F,errCode:b,errMsg:"userIdList cannot be empty"};if(r.mediaType!==e.CallMediaType.AUDIO&&r.mediaType!==e.CallMediaType.VIDEO)return{...F,errCode:b,errMsg:"invalid mediaType"};const o={roomId:r.roomId||{},timeout:r.timeout,userData:r.userData,isEphemeralCall:!!r.isEphemeralCall,offlinePushInfo:r.offlinePushInfo},i=function(e,t,r,a,o){const i=a||{},s=i.roomId||{},n={CallId:"",CallMediaType:r>>>0};"number"==typeof s.intRoomId&&s.intRoomId>0?(n.RoomId=String(s.intRoomId),n.RoomIdType=N.IntRoomId):(!s.intRoomId||0===s.intRoomId)&&"string"==typeof s.strRoomId&&s.strRoomId.length>0&&(n.RoomId=s.strRoomId,n.RoomIdType=N.StrRoomId),n.ExcludeFromHistoryMessage=!1,n.GroupId=o||"",n.IsEphemeralCall=!!i.isEphemeralCall;const l="number"==typeof i.timeout?i.timeout:30;return{Body:{Caller_Account:e,CalleeList_Account:(t||[]).slice(),CallInfo:n,Timeout:1e3*l,UserData:i.userData||"",OfflinePushInfo:O(i.offlinePushInfo,r)},Head:v("call_engine_srv.start_call")}}(r.inviter,r.userIdList,r.mediaType,o,r.groupId||"");let s;try{const e={serviceCommand:S,data:JSON.stringify(i)};s=await a.callExperimentalAPI(D,e)}catch(e){const t=e&&(e.code||e.errorCode)||b,r=e&&(e.message||e.errorInfo)||"send failed";return{...F,errCode:t,errMsg:r}}const n=s&&s.data||s||{};return 0!==n.ErrorCode?{...F,errCode:n.ErrorCode,errMsg:n.ErrorInfo}:{errCode:n?.ErrorCode||0,errMsg:n?.errMsg||"",inviteId:n?.Response?.CallId||"",callResultList:n?.Response?.CallResult||[]}},startHeartBeat:function(e){const t=e||{},{chat:r,callId:a,userId:o}=t;if(!r||!g(r.callExperimentalAPI))return void console.warn("[SSOChannel] startHeartBeat: chat.callExperimentalAPI unavailable");if(!a||!o)return void console.warn("[SSOChannel] startHeartBeat: callId and userId are required");H();const i=L(t.intervalMs)&&t.intervalMs>0?t.intervalMs:2e3,s=L(t.retryCount)&&t.retryCount>0?t.retryCount:5;B=a,G=setInterval(async()=>{if(!B||B!==a)return;const e=await async function(e,t,r){const a={Body:{User_Account:r,CallId:t},Head:v(U)};try{const t={serviceCommand:U,data:JSON.stringify(a)},r=await e.callExperimentalAPI(D,t),o=r&&r.data||r||{},i=L(o.ErrorCode)?o.ErrorCode:L(o.errorCode)?o.errorCode:0;return 0!==i?{errCode:i,errMsg:o.ErrorInfo||o.errorInfo||""}:{errCode:0,errMsg:""}}catch(e){return{errCode:e&&(e.code||e.errorCode)||b,errMsg:e&&(e.message||e.errorInfo)||"send failed"}}}(r,a,o);if(B&&B===a)if(0!==e.errCode){if(k+=1,console.warn("[SSOChannel] heartbeat failed",k,e.errCode,e.errMsg),k>=s){const e=B;if(H(),"function"==typeof t.onTimeout)try{t.onTimeout(e)}catch(e){}}}else k=0},i)},stopHeartBeat:H,accept:async function(e){return K(e,f.AcceptedByInvitee)},reject:async function(e){return K(e,f.RejectedByInvitee)},hangup:async function(e){return K(e,f.Hangup)},cancel:async function(e){const t=e||{},r=t.chat;if(!r||!g(r.callExperimentalAPI))return{errCode:b,errMsg:"chat.callExperimentalAPI is not available"};if(!t.callId)return{errCode:b,errMsg:"callId is required"};if(!t.inviter)return{errCode:b,errMsg:"inviter is required"};if(!R(t.calleeList)||0===t.calleeList.length)return{errCode:b,errMsg:"calleeList cannot be empty"};const a=(o=t.inviter,i=t.callId,s=t.calleeList,n=V,{Body:{CallId:i||"",Operator_Account:o||"",CalleeList_Account:Array.isArray(s)?s.filter(Boolean):[]},Head:v(n)});var o,i,s,n;try{const e={serviceCommand:V,data:JSON.stringify(a)},t=await r.callExperimentalAPI(D,e),o=t&&t.data||t||{},i=L(o.ErrorCode)?o.ErrorCode:L(o.ErrorCode)?o.errorCode:0;return 0!==i?{errCode:i,errMsg:o.ErrorInfo||o.errorInfo||""}:{errCode:0,errMsg:""}}catch(e){return{errCode:e&&(e.code||e.errorCode)||b,errMsg:e&&(e.message||e.errorInfo)||"send failed"}}},getInvitation:async function(e){const t=e||{},r=t.chat;if(!r||!g(r.callExperimentalAPI))return{errCode:b,errMsg:"chat.callExperimentalAPI is not available",data:null};if(!t.userId)return{errCode:b,errMsg:"userId is required",data:null};const a={Body:{User_Account:t.userId||""},Head:v(x)};var o;try{const e={serviceCommand:x,data:JSON.stringify(a)},t=await r.callExperimentalAPI(D,e),i=t&&t.data||t||{},s=L(i.ErrorCode)?i.ErrorCode:L(i.ErrorCode)?i.errorCode:0;if(0!==s)return{errCode:s,errMsg:i.ErrorInfo||i.errorInfo||"",data:null};const n=i?.Response;return n&&(null!==(o=n)&&typeof o===y)&&0!==Object.keys(n).length?{errCode:0,errMsg:"",data:n}:{errCode:0,errMsg:"",data:null}}catch(e){return{errCode:e&&(e.code||e.errorCode)||b,errMsg:e&&(e.message||e.errorInfo)||"send failed",data:null}}}};var j,Y;e.LayoutTemplate=void 0,(j=e.LayoutTemplate||(e.LayoutTemplate={}))[j.FLOAT=0]="FLOAT",j[j.GRID=1]="GRID",function(e){e[e.NONE=0]="NONE",e[e.WAITING=1]="WAITING",e[e.CALLING=2]="CALLING"}(Y||(Y={}));const J=720,q=1280,$={x:480,y:80,w:200,h:300};class X{constructor(){this.currentTemplate=e.LayoutTemplate.FLOAT,this.largeViewUserId="",this.isViewReversed=!1,this.currentLayout=Q(),this.previousLayout=Q()}setLayoutTemplate(e){this.currentTemplate=e,this.largeViewUserId="",this.isViewReversed=!1}setLargeViewUser(e){this.largeViewUserId===e?this.largeViewUserId="":this.largeViewUserId=e}toggleViewReversed(){this.isViewReversed=!this.isViewReversed}getCurrentTemplate(){return this.currentTemplate}getCurrentLayout(){return this.currentLayout}recalculate(t){switch(this.previousLayout=this.currentLayout,this.currentTemplate){case e.LayoutTemplate.FLOAT:this.currentLayout=this.calculateFloatLayout(t);break;case e.LayoutTemplate.GRID:this.currentLayout=this.calculateGridLayout(t)}return this.isLayoutChanged()}toJson(){return JSON.stringify(this.toJsonObject())}toJsonObject(){const t=this.currentLayout,r={template:z(t.template)};return t.template===e.LayoutTemplate.FLOAT?(r.canvas={w:t.canvas.w,h:t.canvas.h},r.primaryUser={userId:t.primaryUser.userId,isLocal:t.primaryUser.isLocal},t.secondaryUser?r.secondaryUser={userId:t.secondaryUser.userId,isLocal:t.secondaryUser.isLocal,frame:{...t.secondaryUser.frame}}:r.secondaryUser=null,r.showRemoteInfo=t.showRemoteInfo):(r.canvas={w:t.canvas.w,h:t.canvas.h},r.participants=t.participants.map(e=>({userId:e.userId,frame:{...e.frame},isLocal:e.isLocal,showName:e.showName}))),r}isLayoutChanged(){const t=this.previousLayout,r=this.currentLayout;if(t.template!==r.template)return!0;if(r.template===e.LayoutTemplate.FLOAT&&t.template===e.LayoutTemplate.FLOAT){if(t.primaryUser.userId!==r.primaryUser.userId)return!0;return(t.secondaryUser?t.secondaryUser.userId:"")!==(r.secondaryUser?r.secondaryUser.userId:"")||t.showRemoteInfo!==r.showRemoteInfo}if(r.template===e.LayoutTemplate.GRID&&t.template===e.LayoutTemplate.GRID){if(t.participants.length!==r.participants.length)return!0;for(let e=0;e<r.participants.length;e++){const a=t.participants[e],o=r.participants[e];if(a.userId!==o.userId)return!0;if(a.frame.x!==o.frame.x)return!0;if(a.frame.y!==o.frame.y)return!0;if(a.frame.w!==o.frame.w)return!0;if(a.frame.h!==o.frame.h)return!0;if(a.showName!==o.showName)return!0}return!1}return!0}calculateFloatLayout(t){const r=t.selfId;let a="";for(const e of t.allParticipants)if(e.id!==r){a=e.id;break}const o=t.selfStatus===Y.CALLING,i=t.mediaType===e.CallMediaType.AUDIO;let s,n,l,c;return o||i?!o&&i||i?(s=a,n=!1,l=null,c=!0):(this.isViewReversed?(s=r,n=!0,l={userId:a,isLocal:!1,frame:{...$}}):(s=a,n=!1,l={userId:r,isLocal:!0,frame:{...$}}),c=!1):(s=r,n=!0,l=null,c=!0),{template:e.LayoutTemplate.FLOAT,canvas:{w:J,h:q},primaryUser:{userId:s,isLocal:n},secondaryUser:l,showRemoteInfo:c}}calculateGridLayout(t){const r=new Map;for(const e of t.allParticipants)r.set(e.id,e.status);const a=[];if(t.inviter){const e=r.get(t.inviter);void 0!==e&&e!==Y.NONE&&a.push(t.inviter)}for(const e of t.inviteeList){const t=r.get(e);void 0!==t&&t!==Y.NONE&&a.push(e)}const o=this.calculateGridPositions(a.length,a,t.selfId);return{template:e.LayoutTemplate.GRID,canvas:{w:J,h:q},participants:o}}calculateGridPositions(e,t,r){const a=[];if(e<=0)return a;const o=240,i=360;let s=-1;if(this.largeViewUserId)for(let r=0;r<e;r++)if(t[r]===this.largeViewUserId){s=r;break}if(s>=0&&e<=4){const i=[s];for(let t=0;t<e;t++)t!==s&&i.push(t);const n=o,l=e-1,c=[{x:0,y:0,w:J,h:J}],d=J;for(let e=0;e<l;e++)c.push({x:e*n,y:d,w:n,h:n});for(let e=0;e<i.length&&e<c.length;e++){const o=t[i[e]];a.push({userId:o,frame:c[e],isLocal:o===r,showName:0===e})}return a}if(s>=0&&e>4){const i=480,n=480,l=[s];for(let t=0;t<e;t++)t!==s&&l.push(t);{const e=t[l[0]];a.push({userId:e,frame:{x:0,y:0,w:i,h:n},isLocal:e===r,showName:!0})}let c=1;if(c<l.length){const e=t[l[c]];a.push({userId:e,frame:{x:i,y:0,w:o,h:o},isLocal:e===r,showName:!1}),c++}if(c<l.length){const e=t[l[c]];a.push({userId:e,frame:{x:i,y:o,w:o,h:o},isLocal:e===r,showName:!1}),c++}let d=n;for(;c<l.length;){for(let e=0;e<3&&c<l.length;e++){const i=t[l[c]];a.push({userId:i,frame:{x:e*o,y:d,w:o,h:o},isLocal:i===r,showName:!1}),c++}d+=o}return a}if(1===e)a.push({userId:t[0],frame:{x:0,y:0,w:J,h:q},isLocal:t[0]===r,showName:!1});else if(2===e)a.push({userId:t[0],frame:{x:0,y:0,w:i,h:i},isLocal:t[0]===r,showName:!1}),a.push({userId:t[1],frame:{x:i,y:0,w:i,h:i},isLocal:t[1]===r,showName:!1});else if(3===e)a.push({userId:t[0],frame:{x:0,y:0,w:i,h:i},isLocal:t[0]===r,showName:!1}),a.push({userId:t[1],frame:{x:i,y:0,w:i,h:i},isLocal:t[1]===r,showName:!1}),a.push({userId:t[2],frame:{x:180,y:i,w:i,h:i},isLocal:t[2]===r,showName:!1});else if(4===e)a.push({userId:t[0],frame:{x:0,y:0,w:i,h:i},isLocal:t[0]===r,showName:!1}),a.push({userId:t[1],frame:{x:i,y:0,w:i,h:i},isLocal:t[1]===r,showName:!1}),a.push({userId:t[2],frame:{x:0,y:i,w:i,h:i},isLocal:t[2]===r,showName:!1}),a.push({userId:t[3],frame:{x:i,y:i,w:i,h:i},isLocal:t[3]===r,showName:!1});else{let i=0;for(let s=0;s<e;s+=3){const n=Math.min(3,e-s);for(let e=0;e<n;e++){const n=s+e;a.push({userId:t[n],frame:{x:e*o,y:i,w:o,h:o},isLocal:t[n]===r,showName:!1})}i+=o}}return a}}function z(t){switch(t){case e.LayoutTemplate.FLOAT:return"float";case e.LayoutTemplate.GRID:return"grid";default:return"float"}}function Q(){return{template:e.LayoutTemplate.FLOAT,canvas:{w:J,h:q},primaryUser:{userId:"",isLocal:!1},secondaryUser:null,showRemoteInfo:!1}}const Z=new a,ee=Object.freeze(["onEnterRoom","onExitRoom","onSwitchRole","onError","onWarnning","onRemoteUserEnterRoom","onRemoteUserLeaveRoom","onUserVideoAvailable","onUserSubStreamAvailable","onUserAudioAvailable","onUserVoiceVolume","onNetworkQuality","onFirstVideoFrame","onSendFirstLocalVideoFrame","onSendFirstLocalAudioFrame","onMicDidReady"]);function te(e){const t=r&&r.EVENT||{};switch(e){case"SDK_READY":return t.SDK_READY||"sdkStateReady";case"KICKED_OUT":return t.KICKED_OUT||"kickedOut";case"USER_SIG_EXPIRED":return t.USER_SIG_EXPIRED||"userSigExpired";case"ROOM_CUSTOM_DATA_RECEIVED":return t.ROOM_CUSTOM_DATA_RECEIVED;default:return null}}class re{constructor(e){const t=e||{};this._emitter=new a,this._sdkAppId=t.SDKAppID||t.sdkAppID||0,this._userId="",this._userSig="",this._isExternalChat=!1,this._chatListenersBound=!1,this._trtcCloud=null,this._trtcListenersBound=!1,this._trtcListenerHandlers=null,this._callInfo=w(),this._callsInFlight=!1,this._terminalId="",this._viewLayout=new X;const r=t.chat||t.tim;r&&(this._isExternalChat=!0,this._chat=r)}static createInstance(e){return re.instance||(re.instance=new re(e)),re.instance}static once(e,t){"ready"===e?"function"==typeof t&&Promise.resolve().then(()=>{try{t()}catch(e){console.error("[call-engine-wx] ready callback threw:",e)}}):Z.once(e,t)}async login(e){const t=e||{},a=t.userID,o=t.userSig,i=t.sdkAppID||t.SDKAppID||this._sdkAppId;if(!a||!o)throw ae(_.ERR_FAILED,"login: userID and userSig are required");!this._sdkAppId&&i&&(this._sdkAppId=i),this._userId=a,this._userSig=o,this._bindChatListenersOnce();try{if(this._chat=r.create({SDKAppID:this._sdkAppId,devMode:!0}),this._isLogined())return void this._emitOnceReady();let e;try{e=await this._chat.login({userID:a,userSig:o});try{this.getTRTCCloudInstance()}catch(e){}}catch(e){const t=e&&e.code,r=e&&e.message||"";if(2024===t||2025===t)return console.warn("[call-engine-wx] login: tolerated lite-chat code",t,r),void this._emitOnceReady();if(this._chatReadyFired&&(/timeout/i.test(r)||"NETWORK_TIMEOUT"===t))return console.warn("[call-engine-wx] login: chat.login() rejected with",r||t,"AFTER SDK_READY — treating as success"),void this._emitOnceReady();throw e}if(e&&e.data&&e.data.repeatLogin)return void this._emitOnceReady();this._emitOnceReady()}catch(e){const t=e&&e.code||_.ERR_FAILED,r=e&&e.message||"login failed";throw this._emitter.emit(m.ERROR,{code:t,message:r}),ae(t,r)}}async logout(){this._clearCallInfo();try{this._chat&&"function"==typeof this._chat.logout&&await this._chat.logout()}finally{this._userId="",this._userSig=""}}async destroyInstance(){re.instance=null;try{await this.logout()}catch(e){}this._unbindChatListeners(),this._unbindTRTCListeners(),this._emitter.removeAllListeners(),this._trtcCloud=null}on(e,t){this._emitter.on(e,t)}off(e,t){this._emitter.off(e,t)}once(e,t){this._emitter.once(e,t)}getTim(){return this._chat}getTRTCCloudInstance(){if(this._trtcCloud)return this._trtcCloud;if(!t||"function"!=typeof t.getTRTCShareInstance)throw ae(_.ERR_FAILED,"[call-engine-wx] @tencentcloud/trtc-component-wx is not installed or does not expose getTRTCShareInstance().");return this._trtcCloud=t.getTRTCShareInstance(),this._bindTRTCListenersOnce(),this._trtcCloud}setLogLevel(e){try{this._chat&&"function"==typeof this._chat.setLogLevel&&this._chat.setLogLevel(e)}catch(e){}}async calls(t){if(console.warn("---\x3e calls 入参 ",JSON.stringify(t)),!this._isLogined()&&!this._chatReadyFired)throw ae(_.ERR_FAILED,"calls: not logged in. Call login() first and wait for SDK_READY.");if(this._callsInFlight)throw ae(_.ERR_FAILED,"calls: a previous calls() is still in progress");if(this._callInfo.status!==e.CallStatus.NONE)throw ae(_.ERR_FAILED,"calls: there is an active call already; hang up before starting a new one");if(!R(t?.userIDList)||0===t?.userIDList?.length)throw ae(_.ERR_FAILED,"calls: userIDList cannot be empty");if(t?.type!==e.CallMediaType.AUDIO&&t?.type!==e.CallMediaType.VIDEO)throw ae(_.ERR_FAILED,"calls: invalid mediaType");const r=this._getLoginUserId();if(!r)throw ae(_.ERR_FAILED,"calls: cannot resolve login user id");var a;this._callInfo=w({...t,strRoomId:(a=t?.strRoomID,a||`roomId_${Math.floor(1e6*Math.random())}`),status:e.CallStatus.WAITING,role:e.CallRole.CALLER,inviter:r}),this._callsInFlight=!0;let o=!1;try{try{await this._enterTRTCRoom(),o=!0}catch(e){this._safeLeaveTRTCRoom();const t=e&&e.code||_.ERR_FAILED,r=e&&e.message||"enter TRTC room failed";throw this._emitter.emit(m.ERROR,{code:t,message:r}),ae(t,r)}const t=await W.startCall({chat:this._chat,...this._callInfo,userIdList:this._callInfo.inviteeList});if(0!==t.errCode)throw this._safeLeaveTRTCRoom(),o=!1,this._emitter.emit(m.ERROR,{code:t.errCode,message:t.errMsg}),ae(t.errCode,t.errMsg||"start_call failed");this._callInfo.callId=t.inviteId,this._callInfo.callStartTime=Date.now();let r=0;for(const a of t.callResultList)switch(a.resultCode){case e.CallInvitationResultCodeType.INVITED:this._emitter.emit(m.USER_ENTER,a.userId);break;case e.CallInvitationResultCodeType.SUCCESS:this._emitter.emit("onUserInviting",a.userId);break;case e.CallInvitationResultCodeType.LINE_BUSY:this._emitter.emit("onUserLineBusy",a.userId),r++}if(r>=this._callInfo.inviteeList.length){const r=t.callResultList[t.callResultList.length-1];return this._safeLeaveTRTCRoom(),o=!1,this._emitter.emit(m.ON_CALL_NOT_CONNECTED,{callInfo:{...this._callInfo},userId:r?r.userId:"",reason:e.CallEndReason.LINE_BUSY}),this._clearCallInfo(),{inviteId:t.inviteId,roomId:this._callInfo,callResultList:t.callResultList}}return W.startHeartBeat({chat:this._chat,callId:this._callInfo.callId,userId:this._callInfo.inviter,onTimeout:t=>{this._callInfo.callId===t&&(this._emitter.emit(m.ON_CALL_NOT_CONNECTED,{callInfo:{...this._callInfo},userId:this._callInfo.inviter,reason:e.CallEndReason.LINE_BUSY}),this._safeLeaveTRTCRoom(),this._clearCallInfo())}}),{inviteId:t.inviteId,roomId:this._callInfo,callResultList:t.callResultList}}catch(e){throw o&&this._safeLeaveTRTCRoom(),this._clearCallInfo(),e}finally{this._callsInFlight=!1}}async accept(){if(!this._isLogined()&&!this._chatReadyFired)throw ae(_.ERR_FAILED,"accept: not logged in. Call login() first and wait for SDK_READY.");if(this._callInfo.role!==e.CallRole.CALLEE)throw ae(_.ERR_FAILED,"accept: current role is not CALLEE");if(this._callInfo.status!==e.CallStatus.WAITING)throw ae(_.ERR_FAILED,`accept: invalid call status ${this._callInfo.status}; expected WAITING`);const t=this._callInfo.callId;if(!t)throw ae(_.ERR_FAILED,"accept: no active invitation (callId is empty)");let r=!1;try{await this._enterTRTCRoom(),r=!0;const a=this._getOrCreateTerminalId(),o=await W.accept({chat:this._chat,callId:t,terminalId:a});if(0!==o.errCode)throw ae(o.errCode,o.errMsg||"handle_call(accept) failed");return this._callInfo.status=e.CallStatus.CALLING,this._callInfo.callStartTime=Date.now(),this._emitter.emit(m.ON_CALL_BEGIN,{callInfo:{...this._callInfo}}),W.startHeartBeat({chat:this._chat,callId:this._callInfo.callId,userId:this._getLoginUserId(),onTimeout:t=>{this._callInfo.callId===t&&(this._emitter.emit(m.ON_CALL_NOT_CONNECTED,{callInfo:{...this._callInfo},userId:this._getLoginUserId(),reason:e.CallEndReason.LINE_BUSY}),this._safeLeaveTRTCRoom(),this._clearCallInfo())}}),{callId:t,roomId:this._callInfo.roomId}}catch(e){r&&this._safeLeaveTRTCRoom(),this._clearCallInfo();const t=e&&e.code||_.ERR_FAILED,a=e&&e.message||"accept failed";throw this._emitter.emit(m.ERROR,{code:t,message:a}),ae(t,a)}}async reject(){if(!this._isLogined()&&!this._chatReadyFired)throw ae(_.ERR_FAILED,"reject: not logged in. Call login() first and wait for SDK_READY.");if(this._callInfo.role!==e.CallRole.CALLEE)throw ae(_.ERR_FAILED,"reject: current role is not CALLEE");if(this._callInfo.status!==e.CallStatus.WAITING)throw ae(_.ERR_FAILED,`reject: invalid call status ${this._callInfo.status}; expected WAITING`);const t=this._callInfo.callId;if(!t)throw ae(_.ERR_FAILED,"reject: no active invitation (callId is empty)");const r={...this._callInfo};try{const a=this._getOrCreateTerminalId(),o=await W.reject({chat:this._chat,callId:t,terminalId:a});return 0!==o.errCode&&console.warn("[call-engine-wx] reject: backend reported error",o.errCode,o.errMsg),this._emitter.emit(m.ON_CALL_END,{callInfo:r,reason:e.CallEndReason.REJECT,userId:this._getLoginUserId()}),{callId:t}}finally{this._clearCallInfo()}}async hangup(){if(!this._isLogined()&&!this._chatReadyFired)throw ae(_.ERR_FAILED,"hangup: not logged in. Call login() first and wait for SDK_READY.");if(this._callInfo.status!==e.CallStatus.CALLING&&this._callInfo.status!==e.CallStatus.WAITING)throw ae(_.ERR_FAILED,`hangup: invalid call status ${this._callInfo.status}; expected CALLING or WAITING`);const t=this._callInfo.callId;if(!t)throw ae(_.ERR_FAILED,"hangup: no active call (callId is empty)");const r=this._callInfo.role===e.CallRole.CALLER&&this._callInfo.status===e.CallStatus.WAITING,a={...this._callInfo};try{if(r){const e=this._callInfo.inviter||this._getLoginUserId(),r=Array.isArray(this._callInfo.inviteeList)?this._callInfo.inviteeList.slice():[];if(r.length>0){const a=await W.cancel({chat:this._chat,inviter:e,callId:t,calleeList:r});0!==a.errCode&&console.warn("[call-engine-wx] hangup(cancel): backend reported error",a.errCode,a.errMsg)}}else{const e=this._getOrCreateTerminalId(),r=await W.hangup({chat:this._chat,callId:t,terminalId:e});0!==r.errCode&&console.warn("[call-engine-wx] hangup: backend reported error",r.errCode,r.errMsg)}return this._safeLeaveTRTCRoom(),this._emitter.emit(m.ON_CALL_END,{callInfo:a,reason:r?e.CallEndReason.CANCELED:e.CallEndReason.HANGUP,userId:this._getLoginUserId()}),{callId:t}}finally{this._clearCallInfo()}}setLayoutTemplate(e){this._viewLayout.setLayoutTemplate(e),this._recalcAndEmitLayout()}setLargeViewUser(e){this._viewLayout.setLargeViewUser(e),this._recalcAndEmitLayout()}toggleViewReversed(){this._viewLayout.toggleViewReversed(),this._recalcAndEmitLayout()}_buildLayoutState(){const t=this._getLoginUserId()||"",r=this._callInfo||{},a=r.inviter||"",o=Array.isArray(r.inviteeList)?r.inviteeList:[],i="number"==typeof r.status?r.status:Y.NONE,s=new Set,n=[],l=(e,t)=>{e&&!s.has(e)&&(s.add(e),n.push({id:e,status:t}))};l(t,i),a&&l(a,i);for(const e of o)l(e,i);return{selfId:t,selfStatus:i,mediaType:"number"==typeof r.mediaType?r.mediaType:e.CallMediaType.VIDEO,allParticipants:n,inviter:a,inviteeList:o}}_recalcAndEmitLayout(){try{this._viewLayout.recalculate(this._buildLayoutState())&&this._emitter.emit(m.VIEW_LAYOUT_CHANGED,this._viewLayout.toJsonObject())}catch(e){console.warn("[call-engine-wx] _recalcAndEmitLayout failed:",e&&e.message)}}async openCamera(e,t){let r;if(r=void 0===t?-1:t?1:0,g(this?._trtcCloud?.startLocalPreview))return this._trtcCloud.startLocalPreview(e,r)}async closeCamera(){if(g(this?._trtcCloud?.stopLocalPreview))return this._trtcCloud.stopLocalPreview()}async switchCamera(e){g(this?._trtcCloud?.switchCamera)&&await this._trtcCloud.switchCamera(!!e)}async openMicrophone(){g(this?._trtcCloud?.startLocalAudio)&&await this._trtcCloud.startLocalAudio()}async closeMicrophone(){g(this?._trtcCloud?.stopLocalAudio)&&await this._trtcCloud.stopLocalAudio()}async selectAudioPlaybackDevice(t){if(!g(this?._trtcCloud?.setAudioRoute))return;const r=t===e.AudioPlayBackDevice.EAR||1===t?e.AudioPlayBackDevice.EAR:e.AudioPlayBackDevice.SPEAKER;await this._trtcCloud.setAudioRoute(r)}async startRemoteView(e){if(!this._trtcCloud||"function"!=typeof this._trtcCloud.startRemoteView)return;const{userId:t,view:r,streamType:a=0}=e||{};return this._trtcCloud.startRemoteView(t,r,a)}async stopRemoteView(e){if(!this._trtcCloud||"function"!=typeof this._trtcCloud.stopRemoteView)return;const{userId:t,streamType:r=0}=e||{};return this._trtcCloud.stopRemoteView(t,r)}_bindChatListenersOnce(){if(this._chatListenersBound||!this._chat||"function"!=typeof this._chat.on)return;const t=te("SDK_READY"),r=te("KICKED_OUT"),a=te("USER_SIG_EXPIRED"),o=te("ROOM_CUSTOM_DATA_RECEIVED");this._onChatReady=()=>{this._chatReadyFired=!0,this._emitOnceReady()},this._onChatKickedOut=e=>{this._emitter.emit(m.KICKED_OUT,e||{})},this._onChatUserSigExpired=()=>{this._emitter.emit(m.onUserSigExpired,{})},this._onChatRoomCustomDataReceived=t=>{const{Data:r={},Head:a={}}=JSON.parse(t.data);if("call_engine_srv.invite_user_notify"===a?.Command){const{CallInfo:t={}}=r;let a={intRoomId:0,strRoomId:""};if(1===t.RoomIdType)a.intRoomId=Number(t.RoomId);else{if(2!==t.RoomIdType)return;a.strRoomId=t.RoomId}this._callInfo=w({userIDList:r?.CalleeList_Account||[],callId:r?.CallInfo?.CallId||"",inviter:r?.Caller_Account||"",roomId:a.intRoomId||0,strRoomId:a.strRoomId||"",groupId:r?.CallInfo?.GroupId||"",type:r?.CallInfo?.CallMediaType,status:e.CallStatus.WAITING,role:e.CallRole.CALLEE}),this._emitter.emit(m.ON_CALL_RECEIVED,{callId:this._callInfo.callId,inviter:this._callInfo.inviter,inviteeList:this._callInfo.inviteeList,groupId:this._callInfo.groupId,mediaType:this._callInfo.mediaType,roomId:this._callInfo.roomId,userData:r?.UserData||"",callInfo:{...this._callInfo}})}},t&&this._chat.on(t,this._onChatReady),r&&this._chat.on(r,this._onChatKickedOut),a&&this._chat.on(a,this._onChatUserSigExpired),o&&this._chat.on(o,this._onChatRoomCustomDataReceived),this._chatListenersBound=!0}_unbindChatListeners(){if(!this._chatListenersBound||!this._chat||"function"!=typeof this._chat.off)return;const e=te("SDK_READY"),t=te("KICKED_OUT"),r=te("USER_SIG_EXPIRED"),a=te("ROOM_CUSTOM_DATA_RECEIVED");try{e&&this._onChatReady&&this._chat.off(e,this._onChatReady)}catch(e){}try{t&&this._onChatKickedOut&&this._chat.off(t,this._onChatKickedOut)}catch(e){}try{r&&this._onChatUserSigExpired&&this._chat.off(r,this._onChatUserSigExpired)}catch(e){}try{a&&this._onChatRoomCustomDataReceived&&this._chat.off(a,this._onChatRoomCustomDataReceived)}catch(e){}this._chatListenersBound=!1}_bindTRTCListenersOnce(){if(this._trtcListenersBound||!this._trtcCloud)return;const t=this._trtcCloud;if("function"!=typeof t.on)return;const r={},a=e=>(...t)=>{try{this._emitter.emit(e,...t)}catch(t){console.warn("[call-engine-wx] listener for",e,"threw:",t)}};for(const o of ee){let i;if("onRemoteUserEnterRoom"===o){const t=a(o);i=(...r)=>{try{this._callInfo&&this._callInfo.callId&&this._callInfo.status===e.CallStatus.WAITING&&(this._callInfo.status=e.CallStatus.CALLING,this._callInfo.callStartTime||(this._callInfo.callStartTime=Date.now()),this._emitter.emit(m.ON_CALL_BEGIN,{callInfo:{...this._callInfo}}))}catch(e){console.warn("[call-engine-wx] ON_CALL_BEGIN gate threw:",e)}t(...r)}}else i=a(o);r[o]=i;try{t.on(o,i)}catch(e){}}this._trtcListenerHandlers=r,this._trtcListenersBound=!0}_unbindTRTCListeners(){if(!this._trtcListenersBound)return;const e=this._trtcCloud,t=this._trtcListenerHandlers||{};if(e&&"function"==typeof e.off)for(const r of Object.keys(t))try{e.off(r,t[r])}catch(e){}this._trtcListenerHandlers=null,this._trtcListenersBound=!1}_emitOnceReady(){this._readyEmitted||(this._readyEmitted=!0,this._emitter.emit(m.SDK_READY,{name:"sdk_ready"}),this._fetchPendingInvitation().catch(e=>{console.warn("[call-engine-wx] _fetchPendingInvitation: unexpected error",e)}))}async _fetchPendingInvitation(){if(!this._chat||!this._isLogined())return;if(this._callInfo&&this._callInfo.callId)return;const e=this._getLoginUserId();if(!e)return;let t;try{t=await W.getInvitation({chat:this._chat,userId:e})}catch(e){return void console.warn("[call-engine-wx] getInvitation request threw:",e)}if(t&&0===t.errCode&&t.data)try{const e={data:JSON.stringify({Data:t.data,Head:{Command:"call_engine_srv.invite_user_notify"}})};g(this._onChatRoomCustomDataReceived)&&this._onChatRoomCustomDataReceived(e)}catch(e){console.warn("[call-engine-wx] replay pending invitation failed:",e)}}_isLogined(){try{if(!this._chat)return!1;if("function"==typeof this._chat.getLoginUser)return!!this._chat.getLoginUser()}catch(e){}return!1}_getLoginUserId(){return this._userId?this._userId:g(this?._chat?.getLoginUser)&&this._chat.getLoginUser()||""}async _enterTRTCRoom(){try{W.stopHeartBeat()}catch(e){}if(this._callInfo.callType===e.CallMediaType.UNKNOWN)throw ae(-1,"call type is none");const{roomId:t}=this._callInfo;if(0===t.intRoomId&&""===t.strRoomId)throw ae(-1,"room id is empty");const r={sdkAppId:this._sdkAppId,userId:this._getLoginUserId(),userSig:this._userSig,role:20};t.intRoomId>0?r.roomId=t.intRoomId:r.strRoomId=t.strRoomId;const a=this._callInfo.mediaType===e.CallMediaType.VIDEO?0:2,o=this.getTRTCCloudInstance();await new Promise((e,t)=>{let i=!1,s=null;const n=()=>{s&&(clearTimeout(s),s=null);try{this._emitter.off("onEnterRoom",l)}catch(e){}},l=r=>{i||(i=!0,n(),"number"==typeof r&&r>0?e():t(ae("number"==typeof r?r:-1,`enterRoom failed: ${r}`)))};this._emitter.on("onEnterRoom",l),s=setTimeout(()=>{i||(i=!0,n(),t(ae(-1,"enterRoom timeout")))},1e4);try{const e=o.enterRoom(r,a);e&&"function"==typeof e.catch&&e.catch(e=>{i||(i=!0,n(),t(e))})}catch(e){if(i)return;i=!0,n(),t(e)}})}_safeLeaveTRTCRoom(){try{this._trtcCloud&&"function"==typeof this._trtcCloud.exitRoom&&this._trtcCloud.exitRoom()}catch(e){}}_clearCallInfo(){try{W.stopHeartBeat()}catch(e){}this._callInfo=w()}_getOrCreateTerminalId(){return this._terminalId||(this._terminalId=function(){const e=new Array(16),t="undefined"!=typeof crypto&&crypto||null;if(t&&"function"==typeof t.getRandomValues){const r=new Uint8Array(16);t.getRandomValues(r);for(let t=0;t<16;t++)e[t]=r[t]}else for(let t=0;t<16;t++)e[t]=Math.floor(256*Math.random());const r=e.map(e=>e.toString(16).padStart(2,"0")).join("").toUpperCase();return`${r.slice(0,8)}-${r.slice(8,12)}-${r.slice(12,16)}-${r.slice(16,20)}-${r.slice(20,32)}`}()),this._terminalId}}function ae(e,t){const r=new Error(t);return r.code=e,r}re.instance=null,e.TencentCloudChat=r,e.CallInvitationRespondedType=f,e.TUICallEngine=re,e.TUICallEvent=m,e.TUIErrorCode=_,e.default=re,Object.defineProperty(e,"__esModule",{value:!0})});
|
|
3
3
|
//# sourceMappingURL=index.umd.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.umd.min.js","sources":["../src/event-emitter.ts","../src/types.ts","../src/constants.ts","../src/utils.ts","../src/call-codec.ts","../src/call-sso-channel.ts","../src/call-view-layout.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null],"names":["EventEmitter","constructor","this","_handlers","Map","on","event","fn","list","get","set","push","once","off","clear","delete","next","filter","h","length","emit","args","snapshot","slice","apply","err","console","error","removeAllListeners","listenerCount","CallStatus","CallRole","CallMediaType","CallScene","IOSOfflinePushType","CallInvitationResultCodeType","CallEndReason","LOG_LEVEL","CameraPosition","AudioPlayBackDevice","CallInvitationRespondedType","Object","freeze","None","AcceptedByInvitee","RejectedByInvitee","NoResponseUntilTimeout","Hangup","Join","Offline","InviteUser","TUIErrorCode","ERR_FAILED","TUICallEvent","ERROR","SDK_READY","KICKED_OUT","onUserSigExpired","ON_CALL_BEGIN","ON_CALL_END","ON_CALL_RECEIVED","ON_CALL_CANCELED","ON_CALL_NOT_CONNECTED","INVITED","USER_ENTER","USER_LEAVE","VIEW_LAYOUT_CHANGED","NAME","isNumber","input","isArray","Array","getType","isFunction","prototype","toString","call","match","toLowerCase","_cachedDeviceInfo","buildSSOHead","command","device","info","osName","osVersion","deviceName","wxGlobal","wx","uniGlobal","uni","getSystemInfoSync","sys","String","system","split","model","brand","navigator","userAgent","ua","test","m","replace","_","getDeviceInfo","Command","DeviceName","LongPollingKey","OSName","OSVersion","RoomId","SdkVersion","Version","generateCallInfo","params","scene","NONE","inviteeList","userIDList","MULTI","SINGLE","callId","roomId","strRoomId","strRoomID","intRoomId","roomID","inviter","groupId","chatGroupID","mediaType","type","status","role","callStartTime","CallRoomIdType","IntRoomId","StrRoomId","encodeOfflinePushInfo","pushInfo","apnsInfo","Title","title","Sound","iosSound","BadgeMode","ignoreIosBadge","IsVoipPush","iosPushType","ContentAvailable","enableIosBackgroundNotification","InterruptionLevel","iosInterruptionLevel","Image","iosImage","androidInfo","androidSound","OPPOChannelID","androidOppoChannelId","OPPOCategory","oppoCategory","OPPONotifyLevel","oppoNotifyLevel","GoogleChannelID","androidFcmChannelId","GoogleImage","fcmImage","XiaoMiChannelID","androidXiaomiChannelId","VIVOClassification","androidVivoClassification","VIVOCategory","vivoCategory","HuaWeiCategory","androidHuaweiCategory","HuaWeiImage","huaweiImage","HonorImportance","honorImportance","HonorImage","honorImage","voipExt","entity","action","timPushFeatures","fcmPushType","fcmNotificationType","voip_ext","voip_type","voip_media_type","VIDEO","Description","description","Ext","JSON","stringify","AndroidInfo","ApnsInfo","SEND_KEY","CMD_START_CALL","CMD_HEART_BEAT","CMD_HANDLE_CALL","CMD_HANGUP_CALL","CMD_CANCEL_CALL","CMD_GET_INVITATION","TRANSPORT_ERR","callResponse","errCode","errMsg","inviteId","callResultList","_hbTimer","_hbCallId","_hbFailCount","stopHeartBeat","clearInterval","async","_respondInvitation","options","actionType","opts","chat","callExperimentalAPI","terminalId","serviceCommand","body","Body","CallId","TerminalId","ActionType","Head","encodeRespondInvitationRequest","payload","data","res","resData","ErrorCode","errorCode","ErrorInfo","errorInfo","code","message","SSOChannel","HEARTBEAT_INTERVAL_MS","HEARTBEAT_FAIL_RETRY_DEFAULT","HEARTBEAT_FAIL_INTERVAL_MS","startCall","userIdList","AUDIO","callParams","timeout","userData","isEphemeralCall","offlinePushInfo","callInfo","RoomIdType","ExcludeFromHistoryMessage","GroupId","IsEphemeralCall","timeoutSec","Caller_Account","CalleeList_Account","CallInfo","Timeout","UserData","OfflinePushInfo","encodeStartCallRequest","msg","Response","CallResult","startHeartBeat","userId","warn","intervalMs","retryCount","setInterval","sent","heartBeatBody","User_Account","_sendHeartBeat","dropped","onTimeout","accept","reject","hangup","cancel","calleeList","Operator_Account","Boolean","getInvitation","notifyData","keys","LayoutTemplate","CallParticipantStatus","CANVAS_W","CANVAS_H","SECONDARY_DEFAULT_FRAME","x","y","w","CallViewLayout","currentTemplate","FLOAT","largeViewUserId","isViewReversed","currentLayout","makeEmptyFloatResult","previousLayout","setLayoutTemplate","template","setLargeViewUser","toggleViewReversed","getCurrentTemplate","getCurrentLayout","recalculate","state","calculateFloatLayout","GRID","calculateGridLayout","isLayoutChanged","toJson","toJsonObject","layout","root","layoutTemplateToString","canvas","primaryUser","isLocal","secondaryUser","frame","showRemoteInfo","participants","map","p","showName","prev","curr","i","a","b","selfId","remoteId","allParticipants","id","isConnected","selfStatus","CALLING","isAudio","primaryId","primaryIsLocal","secondary","statusMap","userIds","s","undefined","invitee","calculateGridPositions","count","selfUserId","result","unit","half","largeIdx","order","smallSide","remaining","frames","bottomY","uid","largeW","largeH","idx","currentY","col","rowCount","Math","min","j","k","t","moduleEvents","TRTC_EVENT_NAMES","getChatEventName","logical","EVENT","TencentCloudChat","USER_SIG_EXPIRED","ROOM_CUSTOM_DATA_RECEIVED","TUICallEngine","_emitter","_sdkAppId","SDKAppID","sdkAppID","_userId","_userSig","_isExternalChat","_chatListenersBound","_trtcCloud","_trtcListenersBound","_trtcListenerHandlers","_callInfo","_callsInFlight","_terminalId","_viewLayout","externalChat","tim","_chat","createInstance","instance","Promise","resolve","then","login","userID","userSig","sdkAppId","makeError","_bindChatListenersOnce","create","devMode","_isLogined","_emitOnceReady","getTRTCCloudInstance","_chatReadyFired","repeatLogin","logout","_clearCallInfo","destroyInstance","_unbindChatListeners","_unbindTRTCListeners","getTim","TRTCCloud","getTRTCShareInstance","_bindTRTCListenersOnce","setLogLevel","level","calls","_getLoginUserId","floor","random","WAITING","CALLER","trtcEntered","_enterTRTCRoom","_safeLeaveTRTCRoom","resp","Date","now","busyCount","r","resultCode","SUCCESS","LINE_BUSY","lastUser","reason","droppedCallId","CALLEE","_getOrCreateTerminalId","REJECT","isCancel","CANCELED","HANGUP","_recalcAndEmitLayout","_buildLayoutState","seen","Set","has","add","u","openCamera","videoViewDomID","isFrontCamera","camera","startLocalPreview","closeCamera","stopLocalPreview","switchCamera","openMicrophone","startLocalAudio","closeMicrophone","stopLocalAudio","selectAudioPlaybackDevice","setAudioRoute","route","EAR","SPEAKER","startRemoteView","view","streamType","stopRemoteView","readyName","kickName","sigExpName","roomCustomDataReceivedName","_onChatReady","_onChatKickedOut","_onChatUserSigExpired","_onChatRoomCustomDataReceived","Data","parse","Number","trtc","handlers","make","name","e","forward","_readyEmitted","_fetchPendingInvitation","catch","replayed","getLoginUser","callType","UNKNOWN","settled","timer","cleanup","clearTimeout","onEnterRoom","setTimeout","ret","enterRoom","exitRoom","bytes","cryptoObj","crypto","getRandomValues","buf","Uint8Array","hex","padStart","join","toUpperCase","generateTerminalId","Error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.umd.min.js","sources":["../src/event-emitter.ts","../src/types.ts","../src/constants.ts","../src/utils.ts","../src/call-codec.ts","../src/call-sso-channel.ts","../src/call-view-layout.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null],"names":["EventEmitter","constructor","this","_handlers","Map","on","event","fn","list","get","set","push","once","off","clear","delete","next","filter","h","length","emit","args","snapshot","slice","apply","err","console","error","removeAllListeners","listenerCount","CallStatus","CallRole","CallMediaType","CallScene","IOSOfflinePushType","CallInvitationResultCodeType","CallEndReason","LOG_LEVEL","CameraPosition","AudioPlayBackDevice","CallInvitationRespondedType","Object","freeze","None","AcceptedByInvitee","RejectedByInvitee","NoResponseUntilTimeout","Hangup","Join","Offline","InviteUser","TUIErrorCode","ERR_FAILED","TUICallEvent","ERROR","SDK_READY","KICKED_OUT","onUserSigExpired","ON_CALL_BEGIN","ON_CALL_END","ON_CALL_RECEIVED","ON_CALL_CANCELED","ON_CALL_NOT_CONNECTED","INVITED","USER_ENTER","USER_LEAVE","VIEW_LAYOUT_CHANGED","NAME","isNumber","input","isArray","Array","getType","isFunction","prototype","toString","call","match","toLowerCase","_cachedDeviceInfo","buildSSOHead","command","device","info","osName","osVersion","deviceName","wxGlobal","wx","uniGlobal","uni","getSystemInfoSync","sys","String","system","split","model","brand","navigator","userAgent","ua","test","m","replace","_","getDeviceInfo","Command","DeviceName","LongPollingKey","OSName","OSVersion","RoomId","SdkVersion","Version","generateCallInfo","params","scene","NONE","inviteeList","userIDList","MULTI","SINGLE","callId","roomId","strRoomId","strRoomID","intRoomId","roomID","inviter","groupId","chatGroupID","mediaType","type","status","role","callStartTime","CallRoomIdType","IntRoomId","StrRoomId","encodeOfflinePushInfo","pushInfo","apnsInfo","Title","title","Sound","iosSound","BadgeMode","ignoreIosBadge","IsVoipPush","iosPushType","ContentAvailable","enableIosBackgroundNotification","InterruptionLevel","iosInterruptionLevel","Image","iosImage","androidInfo","androidSound","OPPOChannelID","androidOppoChannelId","OPPOCategory","oppoCategory","OPPONotifyLevel","oppoNotifyLevel","GoogleChannelID","androidFcmChannelId","GoogleImage","fcmImage","XiaoMiChannelID","androidXiaomiChannelId","VIVOClassification","androidVivoClassification","VIVOCategory","vivoCategory","HuaWeiCategory","androidHuaweiCategory","HuaWeiImage","huaweiImage","HonorImportance","honorImportance","HonorImage","honorImage","voipExt","entity","action","timPushFeatures","fcmPushType","fcmNotificationType","voip_ext","voip_type","voip_media_type","VIDEO","Description","description","Ext","JSON","stringify","AndroidInfo","ApnsInfo","SEND_KEY","CMD_START_CALL","CMD_HEART_BEAT","CMD_HANDLE_CALL","CMD_HANGUP_CALL","CMD_CANCEL_CALL","CMD_GET_INVITATION","TRANSPORT_ERR","callResponse","errCode","errMsg","inviteId","callResultList","_hbTimer","_hbCallId","_hbFailCount","stopHeartBeat","clearInterval","async","_respondInvitation","options","actionType","opts","chat","callExperimentalAPI","terminalId","serviceCommand","body","Body","CallId","TerminalId","ActionType","Head","encodeRespondInvitationRequest","payload","data","res","resData","ErrorCode","errorCode","ErrorInfo","errorInfo","code","message","SSOChannel","HEARTBEAT_INTERVAL_MS","HEARTBEAT_FAIL_RETRY_DEFAULT","HEARTBEAT_FAIL_INTERVAL_MS","startCall","userIdList","AUDIO","callParams","timeout","userData","isEphemeralCall","offlinePushInfo","callInfo","RoomIdType","ExcludeFromHistoryMessage","GroupId","IsEphemeralCall","timeoutSec","Caller_Account","CalleeList_Account","CallInfo","Timeout","UserData","OfflinePushInfo","encodeStartCallRequest","msg","Response","CallResult","startHeartBeat","userId","warn","intervalMs","retryCount","setInterval","sent","heartBeatBody","User_Account","_sendHeartBeat","dropped","onTimeout","accept","reject","hangup","cancel","calleeList","Operator_Account","Boolean","getInvitation","notifyData","keys","LayoutTemplate","CallParticipantStatus","CANVAS_W","CANVAS_H","SECONDARY_DEFAULT_FRAME","x","y","w","CallViewLayout","currentTemplate","FLOAT","largeViewUserId","isViewReversed","currentLayout","makeEmptyFloatResult","previousLayout","setLayoutTemplate","template","setLargeViewUser","toggleViewReversed","getCurrentTemplate","getCurrentLayout","recalculate","state","calculateFloatLayout","GRID","calculateGridLayout","isLayoutChanged","toJson","toJsonObject","layout","root","layoutTemplateToString","canvas","primaryUser","isLocal","secondaryUser","frame","showRemoteInfo","participants","map","p","showName","prev","curr","i","a","b","selfId","remoteId","allParticipants","id","isConnected","selfStatus","CALLING","isAudio","primaryId","primaryIsLocal","secondary","statusMap","userIds","s","undefined","invitee","calculateGridPositions","count","selfUserId","result","unit","half","largeIdx","order","smallSide","remaining","frames","bottomY","uid","largeW","largeH","idx","currentY","col","rowCount","Math","min","j","k","t","moduleEvents","TRTC_EVENT_NAMES","getChatEventName","logical","EVENT","TencentCloudChat","USER_SIG_EXPIRED","ROOM_CUSTOM_DATA_RECEIVED","TUICallEngine","_emitter","_sdkAppId","SDKAppID","sdkAppID","_userId","_userSig","_isExternalChat","_chatListenersBound","_trtcCloud","_trtcListenersBound","_trtcListenerHandlers","_callInfo","_callsInFlight","_terminalId","_viewLayout","externalChat","tim","_chat","createInstance","instance","Promise","resolve","then","login","userID","userSig","sdkAppId","makeError","_bindChatListenersOnce","create","devMode","_isLogined","_emitOnceReady","getTRTCCloudInstance","_chatReadyFired","repeatLogin","logout","_clearCallInfo","destroyInstance","_unbindChatListeners","_unbindTRTCListeners","getTim","TRTCCloud","getTRTCShareInstance","_bindTRTCListenersOnce","setLogLevel","level","calls","_getLoginUserId","floor","random","WAITING","CALLER","trtcEntered","_enterTRTCRoom","_safeLeaveTRTCRoom","resp","Date","now","busyCount","r","resultCode","SUCCESS","LINE_BUSY","lastUser","reason","droppedCallId","CALLEE","_getOrCreateTerminalId","REJECT","isCancel","CANCELED","HANGUP","_recalcAndEmitLayout","_buildLayoutState","seen","Set","has","add","u","openCamera","videoViewDomID","isFrontCamera","camera","startLocalPreview","closeCamera","stopLocalPreview","switchCamera","openMicrophone","startLocalAudio","closeMicrophone","stopLocalAudio","selectAudioPlaybackDevice","setAudioRoute","route","EAR","SPEAKER","startRemoteView","view","streamType","stopRemoteView","readyName","kickName","sigExpName","roomCustomDataReceivedName","_onChatReady","_onChatKickedOut","_onChatUserSigExpired","_onChatRoomCustomDataReceived","Data","parse","Number","trtc","handlers","make","name","e","forward","_readyEmitted","_fetchPendingInvitation","catch","replayed","getLoginUser","callType","UNKNOWN","settled","timer","cleanup","clearTimeout","onEnterRoom","setTimeout","ret","enterRoom","exitRoom","bytes","cryptoObj","crypto","getRandomValues","buf","Uint8Array","hex","padStart","join","toUpperCase","generateTerminalId","Error"],"mappings":";mbAQA,MAAMA,EAAN,WAAAC,GACUC,KAAAC,UAA0C,IAAIC,GA2ExD,CAzEE,EAAAC,CAAGC,EAAeC,GAChB,GAAkB,mBAAPA,EAAmB,OAAOL,KACrC,IAAIM,EAAON,KAAKC,UAAUM,IAAIH,GAM9B,OALKE,IACHA,EAAO,GACPN,KAAKC,UAAUO,IAAIJ,EAAOE,IAE5BA,EAAKG,KAAK,CAAEJ,KAAIK,MAAM,IACfV,IACT,CAEA,IAAAU,CAAKN,EAAOC,GACV,GAAkB,mBAAPA,EAAmB,OAAOL,KACrC,IAAIM,EAAON,KAAKC,UAAUM,IAAIH,GAM9B,OALKE,IACHA,EAAO,GACPN,KAAKC,UAAUO,IAAIJ,EAAOE,IAE5BA,EAAKG,KAAK,CAAEJ,KAAIK,MAAM,IACfV,IACT,CAEA,GAAAW,CAAIP,EAAOC,GACT,IAAKD,EAEH,OADAJ,KAAKC,UAAUW,QACRZ,KAET,MAAMM,EAAON,KAAKC,UAAUM,IAAIH,GAChC,IAAKE,EAAM,OAAON,KAClB,IAAKK,EAEH,OADAL,KAAKC,UAAUY,OAAOT,GACfJ,KAET,MAAMc,EAAOR,EAAKS,OAAQC,GAAMA,EAAEX,KAAOA,GAMzC,OALoB,IAAhBS,EAAKG,OACPjB,KAAKC,UAAUY,OAAOT,GAEtBJ,KAAKC,UAAUO,IAAIJ,EAAOU,GAErBd,IACT,CAEA,IAAAkB,CAAKd,KAAUe,GACb,MAAMb,EAAON,KAAKC,UAAUM,IAAIH,GAChC,IAAKE,GAAwB,IAAhBA,EAAKW,OAAc,OAAO,EAEvC,MAAMG,EAAWd,EAAKe,QACtB,IAAK,MAAML,KAAKI,EAAU,CACxB,IACEJ,EAAEX,GAAGiB,MAAM,KAAMH,EACnB,CAAE,MAAOI,GAGPC,QAAQC,MAAM,mCAAoCF,EACpD,CACIP,EAAEN,MAAMV,KAAKW,IAAIP,EAAOY,EAAEX,GAChC,CACA,OAAO,CACT,CAEA,kBAAAqB,CAAmBtB,GAMjB,OALIA,EACFJ,KAAKC,UAAUY,OAAOT,GAEtBJ,KAAKC,UAAUW,QAEVZ,IACT,CAEA,aAAA2B,CAAcvB,GACZ,MAAME,EAAON,KAAKC,UAAUM,IAAIH,GAChC,OAAOE,EAAOA,EAAKW,OAAS,CAC9B,ECnDF,IAAYW,EAKAC,EAKAC,EAKAC,EAMAC,EAIAC,EAKAC,EAYAC,EAOAC,EAIAC,EArDAT,EAAAA,gBAAAA,GAAAA,EAAAA,EAAAA,aAAAA,aAAU,CAAA,IACpBA,EAAA,KAAA,GAAA,OACAA,EAAAA,EAAA,QAAA,GAAA,UACAA,EAAAA,EAAA,QAAA,GAAA,UAEUC,EAAAA,cAAAA,GAAAA,EAAAA,EAAAA,WAAAA,WAAQ,CAAA,IAClBA,EAAA,KAAA,GAAA,OACAA,EAAAA,EAAA,OAAA,GAAA,SACAA,EAAAA,EAAA,OAAA,GAAA,SAEUC,EAAAA,mBAAAA,GAAAA,EAAAA,EAAAA,gBAAAA,gBAAa,CAAA,IACvBA,EAAA,QAAA,GAAA,UACAA,EAAAA,EAAA,MAAA,GAAA,QACAA,EAAAA,EAAA,MAAA,GAAA,QAEUC,EAAAA,eAAAA,GAAAA,EAAAA,EAAAA,YAAAA,YAAS,CAAA,IACnBA,EAAA,KAAA,GAAA,OACAA,EAAAA,EAAA,MAAA,GAAA,QACAA,EAAAA,EAAA,MAAA,GAAA,QACAA,EAAAA,EAAA,OAAA,GAAA,SAEUC,EAAAA,wBAAAA,GAAAA,EAAAA,EAAAA,qBAAAA,qBAAkB,CAAA,IAC5BA,EAAA,KAAA,GAAA,OACAA,EAAAA,EAAA,KAAA,GAAA,OAEUC,EAAAA,kCAAAA,GAAAA,EAAAA,EAAAA,+BAAAA,+BAA4B,CAAA,IACtCA,EAAA,QAAA,GAAA,UACAA,EAAAA,EAAA,QAAA,GAAA,UACAA,EAAAA,EAAA,UAAA,GAAA,YAEUC,EAAAA,mBAAAA,GAAAA,EAAAA,EAAAA,gBAAAA,gBAAa,CAAA,IACvBA,EAAA,QAAA,GAAA,UACAA,EAAAA,EAAA,OAAA,GAAA,SACAA,EAAAA,EAAA,OAAA,GAAA,SACAA,EAAAA,EAAA,YAAA,GAAA,cACAA,EAAAA,EAAA,QAAA,GAAA,UACAA,EAAAA,EAAA,UAAA,GAAA,YACAA,EAAAA,EAAA,SAAA,GAAA,WACAA,EAAAA,EAAA,sBAAA,GAAA,wBACAA,EAAAA,EAAA,oBAAA,GAAA,sBACAA,EAAAA,EAAA,cAAA,GAAA,gBAEUC,EAAAA,eAAAA,GAAAA,EAAAA,EAAAA,YAAAA,YAAS,CAAA,IACnBA,EAAA,MAAA,GAAA,QACAA,EAAAA,EAAA,KAAA,GAAA,OACAA,EAAAA,EAAA,KAAA,GAAA,OACAA,EAAAA,EAAA,MAAA,GAAA,QACAA,EAAAA,EAAA,KAAA,GAAA,OAEUC,EAAAA,oBAAAA,GAAAA,EAAAA,EAAAA,iBAAAA,iBAAc,CAAA,IACxBA,EAAA,MAAA,GAAA,QACAA,EAAAA,EAAA,KAAA,GAAA,OAEUC,EAAAA,yBAAAA,GAAAA,EAAAA,EAAAA,sBAAAA,sBAAmB,CAAA,IAC7BA,EAAA,QAAA,GAAA,UACAA,EAAAA,EAAA,IAAA,GAAA,MAIF,MAAMC,EAA8BC,OAAOC,OAAO,CAChDC,KAAM,EACNC,kBAAmB,EACnBC,kBAAmB,EACnBC,uBAAwB,EACxBC,OAAQ,EACRC,KAAM,EACNC,QAAS,EACTC,WAAY,IAGRC,EAAeV,OAAOC,OAAO,CACjCU,YAAY,IAGRC,EAAeZ,OAAOC,OAAO,CACjCY,MAAO,UACPC,UAAW,WACXC,WAAY,kBACZC,iBAAkB,mBAElBC,cAAe,cACfC,YAAa,YACbC,iBAAkB,iBAClBC,iBAAkB,iBAClBC,sBAAuB,qBACvBC,QAAS,YACTC,WAAY,aACZC,WAAY,cAEZC,oBAAqB,sBCjHVC,EAEH,SAFGA,EAGH,SAHGA,EAIJ,QAJIA,EAKD,WCECC,EAAW,SAASC,GAC/B,cAAcA,IAAUF,CAC1B,EAMaG,EAAU,SAASD,GAC9B,cAAWE,MAAMD,UAAYH,EACpBI,MAAMD,QAAQD,GAEhBG,EAAQH,KAAWF,CAC5B,EAcaM,EAAa,SAASJ,GACjC,cAAcA,IAAUF,CAC1B,EAMaK,EAAU,SAASH,GAC9B,OAAO5B,OAAOiC,UAAUC,SACrBC,KAAKP,GACLQ,MAAM,qBAAqB,GAC3BC,aACL,EAYA,IAAIC,EAAsF,KAWnF,MA6DMC,EAAe,SAASC,GACnC,MAAMC,EA9DqB,WAC3B,GAAIH,EAAmB,OAAOA,EAE9B,MAAMI,EAAO,CAAEC,OAAQ,UAAWC,UAAW,QAASC,WAAY,WAElE,IAEE,MAAMC,EAA8B,oBAAPC,GAAqBA,GAAK,KAEjDC,EAAgC,oBAARC,IAAsBA,IAAM,KAE1D,GAAIH,GAAkD,mBAA/BA,EAASI,kBAAkC,CAChE,MAAMC,EAAML,EAASI,qBAAuB,CAAA,GACrCP,EAAS,UAAWC,EAAY,SAAWQ,OAAOD,EAAIE,QAAU,IAAIC,MAAM,KACjFZ,EAAKC,OAASA,EACdD,EAAKE,UAAYA,EACjBF,EAAKG,WAAaM,EAAII,OAASJ,EAAIK,OAAS,SAC9C,MAAO,GAAIR,GAAoD,mBAAhCA,EAAUE,kBAAkC,CACzE,MAAMC,EAAMH,EAAUE,qBAAuB,CAAA,GACtCP,EAAS,UAAWC,EAAY,SAAWQ,OAAOD,EAAIE,QAAU,IAAIC,MAAM,KACjFZ,EAAKC,OAASA,EACdD,EAAKE,UAAYA,EACjBF,EAAKG,WAAaM,EAAII,OAASJ,EAAIK,OAAS,SAC9C,MAAO,GAAyB,oBAAdC,WAA6BA,UAAUC,UAAW,CAElE,MAAMC,EAAKF,UAAUC,UACrB,GAAI,YAAYE,KAAKD,GAAK,CACxBjB,EAAKC,OAAS,QACd,MAAMkB,EAAIF,EAAGvB,MAAM,uBACnBM,EAAKE,UAAYiB,EAAIA,EAAE,GAAGC,QAAQ,KAAM,KAAO,QAC/CpB,EAAKG,WAAa,KACpB,MAAO,GAAI,WAAWe,KAAKD,GAAK,CAC9BjB,EAAKC,OAAS,UACd,MAAMkB,EAAIF,EAAGvB,MAAM,wBACnBM,EAAKE,UAAYiB,EAAIA,EAAE,GAAK,QAC5BnB,EAAKG,WAAa,IACpB,MAAO,GAAI,WAAWe,KAAKD,GAAK,CAC9BjB,EAAKC,OAAS,UACd,MAAMkB,EAAIF,EAAGvB,MAAM,qBACnBM,EAAKE,UAAYiB,EAAIA,EAAE,GAAK,QAC5BnB,EAAKG,WAAa,SACpB,MAAO,GAAI,oBAAoBe,KAAKD,GAAK,CACvCjB,EAAKC,OAAS,MACd,MAAMkB,EAAIF,EAAGvB,MAAM,eACnBM,EAAKE,UAAYiB,EAAIA,EAAE,GAAGC,QAAQ,KAAM,KAAO,QAC/CpB,EAAKG,WAAa,QAAQe,KAAKD,GAAM,OAAS,QAChD,CACF,CACF,CAAE,MAAOI,GAA8C,CAGvD,OADAzB,EAAoBI,EACbA,CACT,CAUiBsB,GACf,MAAO,CACLC,QAASzB,EACT0B,WAAYzB,EAAOI,WACnBsB,eAAgB,GAChBC,OAAQ3B,EAAOE,OACf0B,UAAW5B,EAAOG,UAClB0B,OAAQ,GACRC,WAvFgB,UAwFhBC,QAvFqB,EAyFzB,EAqCaC,EAAmB,SAASC,EAAc,IACrD,IAAIC,EAAQnF,EAAAA,UAAUoF,KACtB,MAAMC,EAAcH,EAAOI,YAAc,GAIzC,OAHID,EAAYnG,OAAS,IAAGiG,EAAQnF,EAAAA,UAAUuF,OACnB,IAAvBF,EAAYnG,SAAciG,EAAQnF,EAAAA,UAAUwF,QAEzC,CACLC,OAAQP,EAAOO,QAAU,GACzBC,OAAQ,CACNC,UAAWT,EAAOU,WAAaV,EAAOS,WAAa,GACnDE,UAAWX,EAAOY,QAAUZ,EAAOQ,QAAU,GAE/CK,QAASb,EAAOa,SAAW,GAC3BV,cACAW,QAASd,EAAOe,aAAe,GAC/BC,UAAWhB,EAAOiB,KAClBC,OAAQlB,EAAOkB,QAAUvG,EAAAA,WAAWuF,KACpCiB,KAAMnB,EAAOmB,MAAQvG,EAAAA,SAASsF,KAC9BD,QACAmB,cAAe,EAEnB,EC3MMC,EAAiB/F,OAAOC,OAAO,CACnC+F,UAAW,EACXC,UAAW,IAsBb,SAASC,EAAsBC,EAAUT,GAEvC,MAAMU,EAAW,CACfC,OAFFF,EAAWA,GAAY,CAAA,GAELG,OAAS,GACzBC,MAAOJ,EAASK,UAAY,GAC5BC,UAAWN,EAASO,eAAiB,EAAI,EACzCC,WAAYR,EAASS,aAAe,EACpCC,iBAAkBV,EAASW,gCAAkC,EAAI,EACjEC,kBAAmBZ,EAASa,sBAAwB,GACpDC,MAAOd,EAASe,UAAY,IAExBC,EAAc,CAClBZ,MAAOJ,EAASiB,cAAgB,GAChCf,MAAOF,EAASG,OAAS,GACzBe,cAAelB,EAASmB,sBAAwB,GAChDC,aAAcpB,EAASqB,cAAgB,KACvCC,gBAAiBtB,EAASuB,iBAAmB,EAC7CC,gBAAiBxB,EAASyB,qBAAuB,GACjDC,YAAa1B,EAAS2B,UAAY,GAClCC,gBAAiB5B,EAAS6B,wBAA0B,GACpDC,mBAAoB9B,EAAS+B,2BAA6B,EAC1DC,aAAchC,EAASiC,cAAgB,KACvCC,eAAgBlC,EAASmC,uBAAyB,KAClDC,YAAapC,EAASqC,aAAe,GACrCC,gBAAiBtC,EAASuC,iBAAmB,SAC7CC,WAAYxC,EAASyC,YAAc,IAE/BC,EAAU,CACdC,OAAQ,CAAEC,OAAQ,GAClBC,gBAAiB,CAAEC,YAAa,EAAGC,oBAAqB,GACxDC,SAAU,CACRC,UAAW,OACXC,gBAAiB3D,IAAcnG,EAAAA,cAAc+J,MAAQ,QAAU,UAGnE,MAAO,CACLjD,MAAOF,EAASG,OAAS,GACzBiD,YAAapD,EAASqD,aAAe,GACrCC,IAAKC,KAAKC,UAAUd,GACpBe,YAAazC,EACb0C,SAAUzD,EAEd,CC9DA,MAAM0D,EAAW,qBACXC,EAAiB,6BACjBC,EAAiB,6BACjBC,EAAkB,8BAClBC,EAAkB,yBAClBC,EAAkB,gCAClBC,EAAqB,iCAOrBC,GAAgB,EAChBC,EAAe,CAAEC,QAAS,EAAGC,OAAQ,GAAIC,SAAU,GAAIC,eAAgB,IAqE7E,IAAIC,EAAkD,KAClDC,EAAY,GACZC,EAAe,EAWnB,SAASC,IACHH,IACFI,cAAcJ,GACdA,EAAW,MAEbC,EAAY,GACZC,EAAe,CACjB,CAkGAG,eAAeC,EACbC,EACAC,GAEA,MAAMC,EAAOF,GAAY,CAAA,EACnBG,EAAOD,EAAKC,KAElB,IAAKA,IAASrJ,EAAWqJ,EAAKC,qBAC5B,MAAO,CAAEf,QAASF,EAAeG,OAAQ,6CAE3C,IAAKY,EAAKnG,OACR,MAAO,CAAEsF,QAASF,EAAeG,OAAQ,sBAE3C,IAAKY,EAAKG,WACR,MAAO,CAAEhB,QAASF,EAAeG,OAAQ,0BAG3C,IAAIgB,EAAiBvB,EACjBkB,IAAepL,EAA4BO,SAC7CkL,EAAiBtB,GAEnB,MAAMuB,EDjGR,SAAwCxG,EAAQsG,EAAYJ,EAAY3I,GACtE,MAAO,CACLkJ,KAAM,CACJC,OAAQ1G,GAAU,GAClB2G,WAAYL,GAAc,GAC1BM,WAAYV,IAAe,GAE7BW,KAAMvJ,EAAaC,GAEvB,CCwFeuJ,CAA+BX,EAAKnG,OAAQmG,EAAKG,WAAYJ,EAAYK,GAEtF,IACE,MAAMQ,EAAU,CACdR,iBACAS,KAAMvC,KAAKC,UAAU8B,IAEjBS,QAAYb,EAAKC,oBAAoBxB,EAAUkC,GAC/CG,EAAWD,GAAOA,EAAID,MAASC,GAAO,CAAA,EACtC3B,EAAU5I,EAASwK,EAAQC,WAC7BD,EAAQC,UACPzK,EAASwK,EAAQE,WAAaF,EAAQE,UAAY,EACvD,OAAgB,IAAZ9B,EACK,CAAEA,UAASC,OAAQ2B,EAAQG,WAAaH,EAAQI,WAAa,IAE/D,CAAEhC,QAAS,EAAGC,OAAQ,GAC/B,CAAE,MAAOxL,GAGP,MAAO,CAAEuL,QAFKvL,IAAQA,EAAIwN,MAAQxN,EAAIqN,YAAehC,EAE7BG,OADXxL,IAAQA,EAAIyN,SAAWzN,EAAIuN,YAAe,cAEzD,CACF,CAoIA,MAAMG,EAAa,CACjB3C,iBACAC,iBACAC,kBACAC,kBACAC,kBACAC,qBACAuC,sBArX4B,IAsX5BC,6BArXmC,EAsXnCC,2BArXiC,IAsXjCC,UA9WF9B,eAAyBE,GACvB,MAAME,EAAOF,GAAW,CAAA,EAClBG,EAAOD,EAAKC,KAElB,IAAKA,IAASrJ,EAAWqJ,EAAKC,qBAC5B,MAAO,IACFhB,EACHC,QAASF,EACTG,OAAQ,6CAGZ,IAAKY,EAAK7F,QACR,MAAO,IAAK+E,EAAcC,QAASF,EAAeG,OAAQ,uBAE5D,IAAK3I,EAAQuJ,EAAK2B,aAA0C,IAA3B3B,EAAK2B,WAAWrO,OAC/C,MAAO,IAAK4L,EAAcC,QAASF,EAAeG,OAAQ,8BAE5D,GAAIY,EAAK1F,YAAcnG,gBAAcyN,OAAS5B,EAAK1F,YAAcnG,EAAAA,cAAc+J,MAC7E,MAAO,IAAKgB,EAAcC,QAASF,EAAeG,OAAQ,qBAG5D,MAAMyC,EAAa,CACjB/H,OAAQkG,EAAKlG,QAAU,CAAA,EACvBgI,QAAS9B,EAAK8B,QACdC,SAAU/B,EAAK+B,SACfC,kBAAmBhC,EAAKgC,gBACxBC,gBAAiBjC,EAAKiC,iBAGlB5B,ED+BR,SAAgClG,EAASwH,EAAYrH,EAAWuH,EAAYzH,GAC1E,MAAMd,EAASuI,GAAc,CAAA,EACvB/H,EAASR,EAAOQ,QAAU,CAAA,EAC1BoI,EAAgC,CACpC3B,OAAQ,GACRpM,cAAemG,IAAc,GAGC,iBAArBR,EAAOG,WAA0BH,EAAOG,UAAY,GAC7DiI,EAAShJ,OAASlB,OAAO8B,EAAOG,WAChCiI,EAASC,WAAaxH,EAAeC,aAEnCd,EAAOG,WAAkC,IAArBH,EAAOG,YACD,iBAArBH,EAAOC,WACdD,EAAOC,UAAUzG,OAAS,IAE1B4O,EAAShJ,OAASY,EAAOC,UACzBmI,EAASC,WAAaxH,EAAeE,WAGvCqH,EAASE,2BAA4B,EACrCF,EAASG,QAAUjI,GAAW,GAC9B8H,EAASI,kBAAoBhJ,EAAO0I,gBAEpC,MAAMO,EAAuC,iBAAnBjJ,EAAOwI,QAAuBxI,EAAOwI,QAAU,GACzE,MAAO,CACLxB,KAAM,CACJkC,eAAgBrI,EAChBsI,oBAAqBd,GAAc,IAAIjO,QACvCgP,SAAUR,EACVS,QAAsB,IAAbJ,EACTK,SAAUtJ,EAAOyI,UAAY,GAC7Bc,gBAAiB/H,EAAsBxB,EAAO2I,gBAAiB3H,IAEjEoG,KAAMvJ,EAAa,8BAEvB,CCnEe2L,CACX9C,EAAK7F,QACL6F,EAAK2B,WACL3B,EAAK1F,UACLuH,EACA7B,EAAK5F,SAAW,IAGlB,IAAI0G,EACJ,IACE,MAAMF,EAAU,CACdR,eAAgBzB,EAChBkC,KAAMvC,KAAKC,UAAU8B,IAEvBS,QAAYb,EAAKC,oBAAoBxB,EAAUkC,EACjD,CAAE,MAAOhN,GACP,MAAMwN,EAAQxN,IAAQA,EAAIwN,MAAQxN,EAAIqN,YAAehC,EAC/C8D,EAAOnP,IAAQA,EAAIyN,SAAWzN,EAAIuN,YAAe,cACvD,MAAO,IAAKjC,EAAcC,QAASiC,EAAMhC,OAAQ2D,EACnD,CAEA,MAAMhC,EAAWD,GAAOA,EAAID,MAASC,GAAO,CAAA,EAC5C,OAA0B,IAAtBC,EAAQC,UACH,IAAK9B,EAAcC,QAAS4B,EAAQC,UAAW5B,OAAQ2B,EAAQG,WAGjE,CACL/B,QAAS4B,GAASC,WAAa,EAC/B5B,OAAQ2B,GAAS3B,QAAU,GAC3BC,SAAU0B,GAASiC,UAAUzC,QAAU,GACvCjB,eAAgByB,GAASiC,UAAUC,YAAc,GAErD,EAkTEC,eApPF,SAAwBpD,GACtB,MAAME,EAAOF,GAAY,CAAA,GACnBG,KAAEA,EAAIpG,OAAEA,EAAMsJ,OAAEA,GAAWnD,EACjC,IAAKC,IAASrJ,EAAWqJ,EAAKC,qBAE5B,YADArM,QAAQuP,KAAK,qEAGf,IAAKvJ,IAAWsJ,EAEd,YADAtP,QAAQuP,KAAK,+DAIf1D,IAEA,MAAM2D,EAAa9M,EAASyJ,EAAKqD,aAAerD,EAAKqD,WAAa,EAC9DrD,EAAKqD,WApJmB,IAqJtBC,EAAa/M,EAASyJ,EAAKsD,aAAetD,EAAKsD,WAAa,EAC9DtD,EAAKsD,WArJ0B,EAuJnC9D,EAAY3F,EA0BZ0F,EAAWgE,YAxBE3D,UACX,IAAKJ,GAAaA,IAAc3F,EAAQ,OAExC,MAAM2J,QAzDV5D,eAA8BK,EAAWpG,EAAgBsJ,GAGvD,MAAMM,EAAgB,CACpBnD,KAAM,CACJoD,aAAcP,EACd5C,OAAQ1G,GAEV6G,KAAMvJ,EAAayH,IAErB,IACE,MAAMgC,EAAU,CACdR,eAAgBxB,EAChBiC,KAAMvC,KAAKC,UAAUkF,IAEjB3C,QAAYb,EAAKC,oBAAoBxB,EAAUkC,GAC/CG,EAAWD,GAAOA,EAAID,MAASC,GAAO,CAAA,EAGtC3B,EAAU5I,EAASwK,EAAQC,WAC7BD,EAAQC,UACPzK,EAASwK,EAAQE,WAAaF,EAAQE,UAAY,EACvD,OAAgB,IAAZ9B,EACK,CAAEA,UAASC,OAAQ2B,EAAQG,WAAaH,EAAQI,WAAa,IAE/D,CAAEhC,QAAS,EAAGC,OAAQ,GAC/B,CAAE,MAAOxL,GAGP,MAAO,CAAEuL,QAFKvL,IAAQA,EAAIwN,MAAQxN,EAAIqN,YAAehC,EAE7BG,OADXxL,IAAQA,EAAIyN,SAAWzN,EAAIuN,YAAe,cAEzD,CACF,CA0BuBwC,CAAe1D,EAAMpG,EAAQsJ,GAEhD,GAAK3D,GAAaA,IAAc3F,EAEhC,GAAqB,IAAjB2J,EAAKrE,SAQT,GAHAM,GAAgB,EAChB5L,QAAQuP,KAAK,gCAAiC3D,EAAc+D,EAAKrE,QAASqE,EAAKpE,QAE3EK,GAAgB6D,EAAY,CAC9B,MAAMM,EAAUpE,EAEhB,GADAE,IAC8B,mBAAnBM,EAAK6D,UACd,IAAM7D,EAAK6D,UAAUD,EAAU,CAAE,MAAOjL,GAAkB,CAE9D,OAbE8G,EAAe,GAgBU4D,EAC/B,EAuME3D,gBACAoE,OA3IFlE,eAAsBE,GACpB,OAAOD,EAAmBC,EAASnL,EAA4BI,kBACjE,EA0IEgP,OApIFnE,eAAsBE,GACpB,OAAOD,EAAmBC,EAASnL,EAA4BK,kBACjE,EAmIEgP,OA5HFpE,eAAsBE,GACpB,OAAOD,EAAmBC,EAASnL,EAA4BO,OACjE,EA2HE+O,OA7GFrE,eAAsBE,GACpB,MAAME,EAAOF,GAAY,CAAA,EACnBG,EAAOD,EAAKC,KAElB,IAAKA,IAASrJ,EAAWqJ,EAAKC,qBAC5B,MAAO,CAAEf,QAASF,EAAeG,OAAQ,6CAE3C,IAAKY,EAAKnG,OACR,MAAO,CAAEsF,QAASF,EAAeG,OAAQ,sBAE3C,IAAKY,EAAK7F,QACR,MAAO,CAAEgF,QAASF,EAAeG,OAAQ,uBAE3C,IAAK3I,EAAQuJ,EAAKkE,aAA0C,IAA3BlE,EAAKkE,WAAW5Q,OAC/C,MAAO,CAAE6L,QAASF,EAAeG,OAAQ,8BAG3C,MAAMiB,GD3JqBlG,EC2JM6F,EAAK7F,QD1JVN,EC0JmBmG,EAAKnG,ODzJxBqK,ECyJgClE,EAAKkE,WDxJrC9M,ECwJiD2H,EDtJtE,CACLuB,KAAM,CACJC,OAAQ1G,GAAU,GAClBsK,iBAAkBhK,GAAW,GAC7BsI,mBALS/L,MAAMD,QAAQyN,GAAcA,EAAW9Q,OAAOgR,SAAW,IAOpE1D,KAAMvJ,EAAaC,KAXvB,IAA6B+C,EACCN,EACAqK,EACA9M,ECyJ5B,IACE,MAAMwJ,EAAU,CACdR,eAAgBrB,EAChB8B,KAAMvC,KAAKC,UAAU8B,IAEjBS,QAAYb,EAAKC,oBAAoBxB,EAAUkC,GAC/CG,EAAWD,GAAOA,EAAID,MAASC,GAAO,CAAA,EACtC3B,EAAU5I,EAASwK,EAAQC,WAC7BD,EAAQC,UACRzK,EAASwK,EAAQC,WAAaD,EAAQE,UAAY,EACtD,OAAgB,IAAZ9B,EACK,CAAEA,UAASC,OAAQ2B,EAAQG,WAAaH,EAAQI,WAAa,IAE/D,CAAEhC,QAAS,EAAGC,OAAQ,GAC/B,CAAE,MAAOxL,GAGP,MAAO,CAAEuL,QAFKvL,IAAQA,EAAIwN,MAAQxN,EAAIqN,YAAehC,EAE7BG,OADXxL,IAAQA,EAAIyN,SAAWzN,EAAIuN,YAAe,cAEzD,CACF,EAyEEkD,cAvDFzE,eAA6BE,GAC3B,MAAME,EAAOF,GAAY,CAAA,EACnBG,EAAOD,EAAKC,KAElB,IAAKA,IAASrJ,EAAWqJ,EAAKC,qBAC5B,MAAO,CAAEf,QAASF,EAAeG,OAAQ,4CAA6CyB,KAAM,MAE9F,IAAKb,EAAKmD,OACR,MAAO,CAAEhE,QAASF,EAAeG,OAAQ,qBAAsByB,KAAM,MAGvE,MAAMR,EDvLC,CACLC,KAAM,CACJoD,aCqLoC1D,EAAKmD,QDrLjB,IAE1BzC,KAAMvJ,ECmL6C6H,IDxLvD,IDlKiCxI,EE2V/B,IACE,MAAMoK,EAAU,CACdR,eAAgBpB,EAChB6B,KAAMvC,KAAKC,UAAU8B,IAEjBS,QAAYb,EAAKC,oBAAoBxB,EAAUkC,GAC/CG,EAAWD,GAAOA,EAAID,MAASC,GAAO,CAAA,EACtC3B,EAAU5I,EAASwK,EAAQC,WAC7BD,EAAQC,UACRzK,EAASwK,EAAQC,WAAaD,EAAQE,UAAY,EACtD,GAAgB,IAAZ9B,EACF,MAAO,CAAEA,UAASC,OAAQ2B,EAAQG,WAAaH,EAAQI,WAAa,GAAIN,KAAM,MAGhF,MAAMyD,EAAavD,GAASiC,SAC5B,OAAKsB,IFzWU,QADc9N,EE0WA8N,WFzWC9N,IAAUF,IEyWuC,IAAnC1B,OAAO2P,KAAKD,GAAYhR,OAG7D,CAAE6L,QAAS,EAAGC,OAAQ,GAAIyB,KAAMyD,GAF9B,CAAEnF,QAAS,EAAGC,OAAQ,GAAIyB,KAAM,KAG3C,CAAE,MAAOjN,GAGP,MAAO,CAAEuL,QAFKvL,IAAQA,EAAIwN,MAAQxN,EAAIqN,YAAehC,EAE7BG,OADXxL,IAAQA,EAAIyN,SAAWzN,EAAIuN,YAAe,cAClBN,KAAM,KAC7C,CACF,GC9VA,IAAY2D,EAUAC,EAVAD,EAAAA,oBAAAA,GAAAA,EAAAA,EAAAA,iBAAAA,iBAAc,CAAA,IACxBA,EAAA,MAAA,GAAA,QACAA,EAAAA,EAAA,KAAA,GAAA,OAQF,SAAYC,GACVA,EAAAA,EAAA,KAAA,GAAA,OACAA,EAAAA,EAAA,QAAA,GAAA,UACAA,EAAAA,EAAA,QAAA,GAAA,SACD,CAJD,CAAYA,IAAAA,EAAqB,CAAA,IAMjC,MAAMC,EAAW,IACXC,EAAW,KAGXC,EAAiC,CAAEC,EAAG,IAAKC,EAAG,GAAIC,EAAG,IAAK1R,EAAG,WA8DtD2R,EAAb,WAAA5S,GACUC,KAAA4S,gBAAkCT,EAAAA,eAAeU,MAEjD7S,KAAA8S,gBAAkB,GAClB9S,KAAA+S,gBAAiB,EAEjB/S,KAAAgT,cAAkCC,IAClCjT,KAAAkT,eAAmCD,GAmb7C,CA/aE,iBAAAE,CAAkBC,GAChBpT,KAAK4S,gBAAkBQ,EACvBpT,KAAK8S,gBAAkB,GACvB9S,KAAK+S,gBAAiB,CACxB,CAEA,gBAAAM,CAAiBvC,GACX9Q,KAAK8S,kBAAoBhC,EAC3B9Q,KAAK8S,gBAAkB,GAEvB9S,KAAK8S,gBAAkBhC,CAE3B,CAEA,kBAAAwC,GACEtT,KAAK+S,gBAAkB/S,KAAK+S,cAC9B,CAIA,kBAAAQ,GACE,OAAOvT,KAAK4S,eACd,CAEA,gBAAAY,GACE,OAAOxT,KAAKgT,aACd,CAQA,WAAAS,CAAYC,GAGV,OAFA1T,KAAKkT,eAAiBlT,KAAKgT,cAEnBhT,KAAK4S,iBACX,KAAKT,EAAAA,eAAeU,MAClB7S,KAAKgT,cAAgBhT,KAAK2T,qBAAqBD,GAC/C,MACF,KAAKvB,EAAAA,eAAeyB,KAClB5T,KAAKgT,cAAgBhT,KAAK6T,oBAAoBH,GAIlD,OAAO1T,KAAK8T,iBACd,CAOA,MAAAC,GACE,OAAO9H,KAAKC,UAAUlM,KAAKgU,eAC7B,CAMA,YAAAA,GACE,MAAMC,EAASjU,KAAKgT,cACdkB,EAAgC,CACpCd,SAAUe,EAAuBF,EAAOb,WA6B1C,OA1BIa,EAAOb,WAAajB,EAAAA,eAAeU,OACrCqB,EAAKE,OAAS,CAAE1B,EAAGuB,EAAOG,OAAO1B,EAAG1R,EAAGiT,EAAOG,OAAOpT,GACrDkT,EAAKG,YAAc,CACjBvD,OAAQmD,EAAOI,YAAYvD,OAC3BwD,QAASL,EAAOI,YAAYC,SAE1BL,EAAOM,cACTL,EAAKK,cAAgB,CACnBzD,OAAQmD,EAAOM,cAAczD,OAC7BwD,QAASL,EAAOM,cAAcD,QAC9BE,MAAO,IAAKP,EAAOM,cAAcC,QAGnCN,EAAKK,cAAgB,KAEvBL,EAAKO,eAAiBR,EAAOQ,iBAG7BP,EAAKE,OAAS,CAAE1B,EAAGuB,EAAOG,OAAO1B,EAAG1R,EAAGiT,EAAOG,OAAOpT,GACrDkT,EAAKQ,aAAeT,EAAOS,aAAaC,IAAKC,IAAC,CAC5C9D,OAAQ8D,EAAE9D,OACV0D,MAAO,IAAKI,EAAEJ,OACdF,QAASM,EAAEN,QACXO,SAAUD,EAAEC,aAGTX,CACT,CAGQ,eAAAJ,GACN,MAAMgB,EAAO9U,KAAKkT,eACZ6B,EAAO/U,KAAKgT,cAClB,GAAI8B,EAAK1B,WAAa2B,EAAK3B,SAAU,OAAO,EAE5C,GAAI2B,EAAK3B,WAAajB,iBAAeU,OAASiC,EAAK1B,WAAajB,EAAAA,eAAeU,MAAO,CAGpF,GAAIiC,EAAKT,YAAYvD,SAAWiE,EAAKV,YAAYvD,OAAQ,OAAO,EAGhE,OAFkBgE,EAAKP,cAAgBO,EAAKP,cAAczD,OAAS,OACjDiE,EAAKR,cAAgBQ,EAAKR,cAAczD,OAAS,KAE/DgE,EAAKL,iBAAmBM,EAAKN,cAEnC,CAEA,GAAIM,EAAK3B,WAAajB,iBAAeyB,MAAQkB,EAAK1B,WAAajB,EAAAA,eAAeyB,KAAM,CAClF,GAAIkB,EAAKJ,aAAazT,SAAW8T,EAAKL,aAAazT,OAAQ,OAAO,EAClE,IAAK,IAAI+T,EAAI,EAAGA,EAAID,EAAKL,aAAazT,OAAQ+T,IAAK,CACjD,MAAMC,EAAIH,EAAKJ,aAAaM,GACtBE,EAAIH,EAAKL,aAAaM,GAC5B,GAAIC,EAAEnE,SAAWoE,EAAEpE,OAAQ,OAAO,EAClC,GAAImE,EAAET,MAAMhC,IAAM0C,EAAEV,MAAMhC,EAAG,OAAO,EACpC,GAAIyC,EAAET,MAAM/B,IAAMyC,EAAEV,MAAM/B,EAAG,OAAO,EACpC,GAAIwC,EAAET,MAAM9B,IAAMwC,EAAEV,MAAM9B,EAAG,OAAO,EACpC,GAAIuC,EAAET,MAAMxT,IAAMkU,EAAEV,MAAMxT,EAAG,OAAO,EACpC,GAAIiU,EAAEJ,WAAaK,EAAEL,SAAU,OAAO,CACxC,CACA,OAAO,CACT,CAEA,OAAO,CACT,CAGQ,oBAAAlB,CAAqBD,GAC3B,MAAMyB,EAASzB,EAAMyB,OACrB,IAAIC,EAAW,GACf,IAAK,MAAMR,KAAKlB,EAAM2B,gBACpB,GAAIT,EAAEU,KAAOH,EAAQ,CACnBC,EAAWR,EAAEU,GACb,KACF,CAGF,MAAMC,EAAc7B,EAAM8B,aAAepD,EAAsBqD,QACzDC,EAAUhC,EAAMzL,YAAcnG,EAAAA,cAAcyN,MAElD,IAAIoG,EACAC,EACAC,EACApB,EA0CJ,OAxCKc,GAAgBG,GAMTH,GAAeG,GAMhBA,GAJTC,EAAYP,EACZQ,GAAiB,EACjBC,EAAY,KACZpB,GAAiB,IASZzU,KAAK+S,gBASR4C,EAAYR,EACZS,GAAiB,EACjBC,EAAY,CACV/E,OAAQsE,EACRd,SAAS,EACTE,MAAO,IAAKjC,MAbdoD,EAAYP,EACZQ,GAAiB,EACjBC,EAAY,CACV/E,OAAQqE,EACRb,SAAS,EACTE,MAAO,IAAKjC,KAWhBkC,GAAiB,IAnCjBkB,EAAYR,EACZS,GAAiB,EACjBC,EAAY,KACZpB,GAAiB,GAmCZ,CACLrB,SAAUjB,EAAAA,eAAeU,MACzBuB,OAAQ,CAAE1B,EAAGL,EAAUrR,EAAGsR,GAC1B+B,YAAa,CAAEvD,OAAQ6E,EAAWrB,QAASsB,GAC3CrB,cAAesB,EACfpB,iBAEJ,CAGQ,mBAAAZ,CAAoBH,GAG1B,MAAMoC,EAAY,IAAI5V,IACtB,IAAK,MAAM0U,KAAKlB,EAAM2B,gBACpBS,EAAUtV,IAAIoU,EAAEU,GAAIV,EAAEzM,QAGxB,MAAM4N,EAAoB,GAC1B,GAAIrC,EAAM5L,QAAS,CACjB,MAAMkO,EAAIF,EAAUvV,IAAImT,EAAM5L,cACpBmO,IAAND,GAAmBA,IAAM5D,EAAsBjL,MACjD4O,EAAQtV,KAAKiT,EAAM5L,QAEvB,CACA,IAAK,MAAMoO,KAAWxC,EAAMtM,YAAa,CACvC,MAAM4O,EAAIF,EAAUvV,IAAI2V,QACdD,IAAND,GAAmBA,IAAM5D,EAAsBjL,MACjD4O,EAAQtV,KAAKyV,EAEjB,CAEA,MAAMxB,EAAe1U,KAAKmW,uBAAuBJ,EAAQ9U,OAAQ8U,EAASrC,EAAMyB,QAChF,MAAO,CACL/B,SAAUjB,EAAAA,eAAeyB,KACzBQ,OAAQ,CAAE1B,EAAGL,EAAUrR,EAAGsR,GAC1BoC,eAEJ,CAOQ,sBAAAyB,CACNC,EACAL,EACAM,GAEA,MAAMC,EAA8B,GACpC,GAAIF,GAAS,EAAG,OAAOE,EAEvB,MAAMC,EAAO,IACPC,EAAO,IAGb,IAAIC,GAAW,EACf,GAAIzW,KAAK8S,gBACP,IAAK,IAAIkC,EAAI,EAAGA,EAAIoB,EAAOpB,IACzB,GAAIe,EAAQf,KAAOhV,KAAK8S,gBAAiB,CACvC2D,EAAWzB,EACX,KACF,CAMJ,GAAIyB,GAAY,GAAKL,GAAS,EAAG,CAC/B,MAAMM,EAAkB,CAACD,GACzB,IAAK,IAAIzB,EAAI,EAAGA,EAAIoB,EAAOpB,IAASA,IAAMyB,GAAUC,EAAMjW,KAAKuU,GAE/D,MACM2B,EAAYJ,EACZK,EAAYR,EAAQ,EAEpBS,EAAkB,CAAC,CAAErE,EAAG,EAAGC,EAAG,EAAGC,EAJrBL,EAImCrR,EAJnCqR,IAKZyE,EALYzE,EAMlB,IAAK,IAAI2C,EAAI,EAAGA,EAAI4B,EAAW5B,IAC7B6B,EAAOpW,KAAK,CAAE+R,EAAGwC,EAAI2B,EAAWlE,EAAGqE,EAASpE,EAAGiE,EAAW3V,EAAG2V,IAG/D,IAAK,IAAI3B,EAAI,EAAGA,EAAI0B,EAAMzV,QAAU+T,EAAI6B,EAAO5V,OAAQ+T,IAAK,CAC1D,MAAM+B,EAAMhB,EAAQW,EAAM1B,IAC1BsB,EAAO7V,KAAK,CACVqQ,OAAQiG,EACRvC,MAAOqC,EAAO7B,GACdV,QAASyC,IAAQV,EACjBxB,SAAgB,IAANG,GAEd,CACA,OAAOsB,CACT,CAGA,GAAIG,GAAY,GAAKL,EAAQ,EAAG,CAC9B,MAAMY,EAAST,IACTU,EAASV,IAETG,EAAkB,CAACD,GACzB,IAAK,IAAIzB,EAAI,EAAGA,EAAIoB,EAAOpB,IAASA,IAAMyB,GAAUC,EAAMjW,KAAKuU,GAG/D,CACE,MAAM+B,EAAMhB,EAAQW,EAAM,IAC1BJ,EAAO7V,KAAK,CACVqQ,OAAQiG,EACRvC,MAAO,CAAEhC,EAAG,EAAGC,EAAG,EAAGC,EAAGsE,EAAQhW,EAAGiW,GACnC3C,QAASyC,IAAQV,EACjBxB,UAAU,GAEd,CAGA,IAAIqC,EAAM,EACV,GAAIA,EAAMR,EAAMzV,OAAQ,CACtB,MAAM8V,EAAMhB,EAAQW,EAAMQ,IAC1BZ,EAAO7V,KAAK,CACVqQ,OAAQiG,EACRvC,MAAO,CAAEhC,EAAGwE,EAAQvE,EAAG,EAAGC,EAAG6D,EAAMvV,EAAGuV,GACtCjC,QAASyC,IAAQV,EACjBxB,UAAU,IAEZqC,GACF,CACA,GAAIA,EAAMR,EAAMzV,OAAQ,CACtB,MAAM8V,EAAMhB,EAAQW,EAAMQ,IAC1BZ,EAAO7V,KAAK,CACVqQ,OAAQiG,EACRvC,MAAO,CAAEhC,EAAGwE,EAAQvE,EAAG8D,EAAM7D,EAAG6D,EAAMvV,EAAGuV,GACzCjC,QAASyC,IAAQV,EACjBxB,UAAU,IAEZqC,GACF,CAGA,IAAIC,EAAWF,EACf,KAAOC,EAAMR,EAAMzV,QAAQ,CACzB,IAAK,IAAImW,EAAM,EAAGA,EAAM,GAAKF,EAAMR,EAAMzV,OAAQmW,IAAO,CACtD,MAAML,EAAMhB,EAAQW,EAAMQ,IAC1BZ,EAAO7V,KAAK,CACVqQ,OAAQiG,EACRvC,MAAO,CAAEhC,EAAG4E,EAAMb,EAAM9D,EAAG0E,EAAUzE,EAAG6D,EAAMvV,EAAGuV,GACjDjC,QAASyC,IAAQV,EACjBxB,UAAU,IAEZqC,GACF,CACAC,GAAYZ,CACd,CACA,OAAOD,CACT,CAGA,GAAc,IAAVF,EACFE,EAAO7V,KAAK,CACVqQ,OAAQiF,EAAQ,GAChBvB,MAAO,CAAEhC,EAAG,EAAGC,EAAG,EAAGC,EAAGL,EAAUrR,EAAGsR,GACrCgC,QAASyB,EAAQ,KAAOM,EACxBxB,UAAU,SAEP,GAAc,IAAVuB,EACTE,EAAO7V,KAAK,CACVqQ,OAAQiF,EAAQ,GAChBvB,MAAO,CAAEhC,EAAG,EAAGC,EAAG,EAAGC,EAAG8D,EAAMxV,EAAGwV,GACjClC,QAASyB,EAAQ,KAAOM,EACxBxB,UAAU,IAEZyB,EAAO7V,KAAK,CACVqQ,OAAQiF,EAAQ,GAChBvB,MAAO,CAAEhC,EAAGgE,EAAM/D,EAAG,EAAGC,EAAG8D,EAAMxV,EAAGwV,GACpClC,QAASyB,EAAQ,KAAOM,EACxBxB,UAAU,SAEP,GAAc,IAAVuB,EACTE,EAAO7V,KAAK,CACVqQ,OAAQiF,EAAQ,GAChBvB,MAAO,CAAEhC,EAAG,EAAGC,EAAG,EAAGC,EAAG8D,EAAMxV,EAAGwV,GACjClC,QAASyB,EAAQ,KAAOM,EACxBxB,UAAU,IAEZyB,EAAO7V,KAAK,CACVqQ,OAAQiF,EAAQ,GAChBvB,MAAO,CAAEhC,EAAGgE,EAAM/D,EAAG,EAAGC,EAAG8D,EAAMxV,EAAGwV,GACpClC,QAASyB,EAAQ,KAAOM,EACxBxB,UAAU,IAEZyB,EAAO7V,KAAK,CACVqQ,OAAQiF,EAAQ,GAChBvB,MAAO,CAAEhC,EAAG,IAAgBC,EAAG+D,EAAM9D,EAAG8D,EAAMxV,EAAGwV,GACjDlC,QAASyB,EAAQ,KAAOM,EACxBxB,UAAU,SAEP,GAAc,IAAVuB,EACTE,EAAO7V,KAAK,CACVqQ,OAAQiF,EAAQ,GAChBvB,MAAO,CAAEhC,EAAG,EAAGC,EAAG,EAAGC,EAAG8D,EAAMxV,EAAGwV,GACjClC,QAASyB,EAAQ,KAAOM,EACxBxB,UAAU,IAEZyB,EAAO7V,KAAK,CACVqQ,OAAQiF,EAAQ,GAChBvB,MAAO,CAAEhC,EAAGgE,EAAM/D,EAAG,EAAGC,EAAG8D,EAAMxV,EAAGwV,GACpClC,QAASyB,EAAQ,KAAOM,EACxBxB,UAAU,IAEZyB,EAAO7V,KAAK,CACVqQ,OAAQiF,EAAQ,GAChBvB,MAAO,CAAEhC,EAAG,EAAGC,EAAG+D,EAAM9D,EAAG8D,EAAMxV,EAAGwV,GACpClC,QAASyB,EAAQ,KAAOM,EACxBxB,UAAU,IAEZyB,EAAO7V,KAAK,CACVqQ,OAAQiF,EAAQ,GAChBvB,MAAO,CAAEhC,EAAGgE,EAAM/D,EAAG+D,EAAM9D,EAAG8D,EAAMxV,EAAGwV,GACvClC,QAASyB,EAAQ,KAAOM,EACxBxB,UAAU,QAEP,CAEL,IAAIsC,EAAW,EACf,IAAK,IAAInC,EAAI,EAAGA,EAAIoB,EAAOpB,GAAK,EAAG,CACjC,MAAMqC,EAAWC,KAAKC,IAAI,EAAGnB,EAAQpB,GACrC,IAAK,IAAIwC,EAAI,EAAGA,EAAIH,EAAUG,IAAK,CACjC,MAAMC,EAAIzC,EAAIwC,EACdlB,EAAO7V,KAAK,CACVqQ,OAAQiF,EAAQ0B,GAChBjD,MAAO,CAAEhC,EAAGgF,EAAIjB,EAAM9D,EAAG0E,EAAUzE,EAAG6D,EAAMvV,EAAGuV,GAC/CjC,QAASyB,EAAQ0B,KAAOpB,EACxBxB,UAAU,GAEd,CACAsC,GAAYZ,CACd,CACF,CACA,OAAOD,CACT,EAMF,SAASnC,EAAuBuD,GAC9B,OAAQA,GACN,KAAKvF,EAAAA,eAAeU,MAAO,MAAO,QAClC,KAAKV,EAAAA,eAAeyB,KAAO,MAAO,OAClC,QAA2B,MAAO,QAEtC,CAEA,SAASX,IACP,MAAO,CACLG,SAAUjB,EAAAA,eAAeU,MACzBuB,OAAQ,CAAE1B,EAAGL,EAAUrR,EAAGsR,GAC1B+B,YAAa,CAAEvD,OAAQ,GAAIwD,SAAS,GACpCC,cAAe,KACfE,gBAAgB,EAEpB,CC9hBA,MAAMkD,EAAe,IAAI7X,EACnB8X,GAAmBrV,OAAOC,OAAO,CACrC,cACA,aACA,eACA,UACA,aACA,wBACA,wBACA,uBACA,2BACA,uBACA,oBACA,mBACA,oBACA,6BACA,6BACA,kBAGF,SAASqV,GAAiBC,GACxB,MAAMC,EACFC,GAA6BA,EAAyBD,OAAU,CAAA,EACpE,OAAQD,GACN,IAAK,YAAkB,OAAOC,EAAM1U,WAAoB,gBACxD,IAAK,aAAkB,OAAO0U,EAAMzU,YAAoB,YACxD,IAAK,mBAAoB,OAAOyU,EAAME,kBAAoB,iBAC1D,IAAK,4BAA6B,OAAOF,EAAMG,0BAC/C,QAAS,OAAO,KAEpB,CAEA,MAAMC,GAIJ,WAAApY,CAAY0N,GACV,MAAME,EAAOF,GAAW,CAAA,EACxBzN,KAAKoY,SAAW,IAAItY,EACpBE,KAAKqY,UAAY1K,EAAK2K,UAAY3K,EAAK4K,UAAY,EACnDvY,KAAKwY,QAAU,GACfxY,KAAKyY,SAAW,GAChBzY,KAAK0Y,iBAAkB,EACvB1Y,KAAK2Y,qBAAsB,EAC3B3Y,KAAK4Y,WAAa,KAClB5Y,KAAK6Y,qBAAsB,EAC3B7Y,KAAK8Y,sBAAwB,KAC7B9Y,KAAK+Y,UAAY/R,IACjBhH,KAAKgZ,gBAAiB,EAGtBhZ,KAAKiZ,YAAc,GAMnBjZ,KAAKkZ,YAAc,IAAIvG,EAEvB,MAAMwG,EAAexL,EAAKC,MAAQD,EAAKyL,IACnCD,IACFnZ,KAAK0Y,iBAAkB,EACvB1Y,KAAKqZ,MAAQF,EAEjB,CAQA,qBAAOG,CAAe7L,GAIpB,OAHK0K,GAAcoB,WACjBpB,GAAcoB,SAAW,IAAIpB,GAAc1K,IAEtC0K,GAAcoB,QACvB,CAEA,WAAO7Y,CAAKN,EAAOC,GACH,UAAVD,EAIc,mBAAPC,GAEXmZ,QAAQC,UAAUC,KAAK,KACrB,IAAMrZ,GAAM,CAAE,MAAOkB,GAEnBC,QAAQC,MAAM,yCAA0CF,EAC1D,IATAoW,EAAajX,KAAKN,EAAOC,EAW7B,CAEA,WAAMsZ,CAAM1S,GACV,MAAM2N,EAAI3N,GAAU,CAAA,EACd2S,EAAShF,EAAEgF,OACXC,EAAUjF,EAAEiF,QACZC,EAAWlF,EAAE2D,UAAY3D,EAAE0D,UAAYtY,KAAKqY,UAElD,IAAKuB,IAAWC,EACd,MAAME,GAAU9W,EAAaC,WAAY,2CAEtClD,KAAKqY,WAAayB,IACrB9Z,KAAKqY,UAAYyB,GAGnB9Z,KAAKwY,QAAUoB,EACf5Z,KAAKyY,SAAWoB,EAChB7Z,KAAKga,yBAEL,IAGE,GAFAha,KAAKqZ,MAAQrB,EAAiBiC,OAAO,CAAE3B,SAAUtY,KAAKqY,UAAW6B,SAAS,IAEtEla,KAAKma,aAEP,YADAna,KAAKoa,iBAIP,IAAI3L,EACJ,IACEA,QAAYzO,KAAKqZ,MAAMM,MAAM,CAAEC,SAAQC,YAEvC,IAAM7Z,KAAKqa,sBAAwB,CAAE,MAAO/T,GAAK,CACnD,CAAE,MAAO/E,GACP,MAAMwN,EAAOxN,GAAOA,EAAIwN,KAClBC,EAAWzN,GAAOA,EAAIyN,SAAY,GACxC,GAAa,OAATD,GAA0B,OAATA,EAInB,OAFAvN,QAAQuP,KAAK,mDAAoDhC,EAAMC,QACvEhP,KAAKoa,iBAGP,GAAIpa,KAAKsa,kBAAoB,WAAWnU,KAAK6I,IAAqB,oBAATD,GAIvD,OAFAvN,QAAQuP,KAAK,qDAAsD/B,GAAWD,EAAM,8CACpF/O,KAAKoa,iBAGP,MAAM7Y,CACR,CAEA,GAAIkN,GAAOA,EAAID,MAAQC,EAAID,KAAK+L,YAE9B,YADAva,KAAKoa,iBAIPpa,KAAKoa,gBACP,CAAE,MAAO7Y,GACP,MAAMwN,EAAQxN,GAAOA,EAAIwN,MAAS9L,EAAaC,WACzC8L,EAAWzN,GAAOA,EAAIyN,SAAY,eAExC,MADAhP,KAAKoY,SAASlX,KAAKiC,EAAaC,MAAO,CAAE2L,OAAMC,YACzC+K,GAAUhL,EAAMC,EACxB,CACF,CAKA,YAAMwL,GACJxa,KAAKya,iBACL,IACMza,KAAKqZ,OAAsC,mBAAtBrZ,KAAKqZ,MAAMmB,cAC5Bxa,KAAKqZ,MAAMmB,QAErB,SACExa,KAAKwY,QAAU,GACfxY,KAAKyY,SAAW,EAClB,CACF,CAMA,qBAAMiC,GACJvC,GAAcoB,SAAW,KACzB,UAAYvZ,KAAKwa,QAAU,CAAE,MAAOlU,GAAkB,CACtDtG,KAAK2a,uBACL3a,KAAK4a,uBACL5a,KAAKoY,SAAS1W,qBACd1B,KAAK4Y,WAAa,IACpB,CAGA,EAAAzY,CAAGC,EAAOC,GACRL,KAAKoY,SAASjY,GAAGC,EAAOC,EAC1B,CACA,GAAAM,CAAIP,EAAOC,GACTL,KAAKoY,SAASzX,IAAIP,EAAOC,EAC3B,CACA,IAAAK,CAAKN,EAAOC,GACVL,KAAKoY,SAAS1X,KAAKN,EAAOC,EAC5B,CAEA,MAAAwa,GACE,OAAO7a,KAAKqZ,KACd,CACA,oBAAAgB,GACE,GAAIra,KAAK4Y,WAAY,OAAO5Y,KAAK4Y,WACjC,IAAKkC,GAAuD,mBAAnCA,EAAUC,qBACjC,MAAMhB,GACJ9W,EAAaC,WACb,gHAMJ,OAFAlD,KAAK4Y,WAAakC,EAAUC,uBAC5B/a,KAAKgb,yBACEhb,KAAK4Y,UACd,CAGA,WAAAqC,CAAYC,GACV,IACMlb,KAAKqZ,OAA2C,mBAA3BrZ,KAAKqZ,MAAM4B,aAClCjb,KAAKqZ,MAAM4B,YAAYC,EAE3B,CAAE,MAAO5U,GAAkB,CAC7B,CAEA,WAAM6U,CAAMlU,GAGV,GAFAzF,QAAQuP,KAAK,oBAAkB9E,KAAKC,UAAUjF,KAEzCjH,KAAKma,eAAiBna,KAAKsa,gBAC9B,MAAMP,GACJ9W,EAAaC,WACb,oEAGJ,GAAIlD,KAAKgZ,eACP,MAAMe,GAAU9W,EAAaC,WAAY,kDAE3C,GAAIlD,KAAK+Y,UAAU5Q,SAAWvG,EAAAA,WAAWuF,KACvC,MAAM4S,GACJ9W,EAAaC,WACb,6EAKJ,IAAKkB,EAAQ6C,GAAQI,aAA8C,IAA/BJ,GAAQI,YAAYpG,OACtD,MAAM8Y,GAAU9W,EAAaC,WAAY,qCAE3C,GAAI+D,GAAQiB,OAASpG,gBAAcyN,OAAStI,GAAQiB,OAASpG,EAAAA,cAAc+J,MACzE,MAAMkO,GAAU9W,EAAaC,WAAY,4BAE3C,MAAM4E,EAAU9H,KAAKob,kBACrB,IAAKtT,EACH,MAAMiS,GAAU9W,EAAaC,WAAY,uCJpGR,IAASwE,EIuG5C1H,KAAK+Y,UAAY/R,EAAiB,IAC7BC,EACHS,WJzG0CA,EIyGPT,GAAQU,UJxG3CD,GACG,UAAU4P,KAAK+D,MAAsB,IAAhB/D,KAAKgE,aIwG7BnT,OAAQvG,EAAAA,WAAW2Z,QACnBnT,KAAMvG,EAAAA,SAAS2Z,OACf1T,YAEF9H,KAAKgZ,gBAAiB,EACtB,IAAIyC,GAAc,EAElB,IAEE,UACQzb,KAAK0b,iBACXD,GAAc,CAChB,CAAE,MAAOla,GACPvB,KAAK2b,qBACL,MAAM5M,EAAQxN,GAAOA,EAAIwN,MAAS9L,EAAaC,WACzC8L,EAAWzN,GAAOA,EAAIyN,SAAY,yBAExC,MADAhP,KAAKoY,SAASlX,KAAKiC,EAAaC,MAAO,CAAE2L,OAAMC,YACzC+K,GAAUhL,EAAMC,EACxB,CAGA,MAAM4M,QAAa3M,EAAWI,UAAU,CACtCzB,KAAM5N,KAAKqZ,SACRrZ,KAAK+Y,UACRzJ,WAAYtP,KAAK+Y,UAAU3R,cAG7B,GAAqB,IAAjBwU,EAAK9O,QAIP,MAHA9M,KAAK2b,qBACLF,GAAc,EACdzb,KAAKoY,SAASlX,KAAKiC,EAAaC,MAAO,CAAE2L,KAAM6M,EAAK9O,QAASkC,QAAS4M,EAAK7O,SACrEgN,GAAU6B,EAAK9O,QAAS8O,EAAK7O,QAAU,qBAG/C/M,KAAK+Y,UAAUvR,OAASoU,EAAK5O,SAC7BhN,KAAK+Y,UAAU1Q,cAAgBwT,KAAKC,MAEpC,IAAIC,EAAY,EAChB,IAAK,MAAMC,KAAKJ,EAAK3O,eACnB,OAAQ+O,EAAEC,YACR,KAAKha,EAAAA,6BAA6B4B,QAChC7D,KAAKoY,SAASlX,KAAKiC,EAAaW,WAAYkY,EAAElL,QAC9C,MACF,KAAK7O,EAAAA,6BAA6Bia,QAGhClc,KAAKoY,SAASlX,KAAK,iBAAkB8a,EAAElL,QACvC,MACF,KAAK7O,EAAAA,6BAA6Bka,UAChCnc,KAAKoY,SAASlX,KAAK,iBAAkB8a,EAAElL,QACvCiL,IAQN,GAAIA,GAAa/b,KAAK+Y,UAAU3R,YAAYnG,OAAQ,CAClD,MAAMmb,EAAWR,EAAK3O,eAAe2O,EAAK3O,eAAehM,OAAS,GASlE,OARAjB,KAAK2b,qBACLF,GAAc,EACdzb,KAAKoY,SAASlX,KAAKiC,EAAaS,sBAAuB,CACrDiM,SAAU,IAAK7P,KAAK+Y,WACpBjI,OAAQsL,EAAWA,EAAStL,OAAS,GACrCuL,OAAQna,EAAAA,cAAcia,YAExBnc,KAAKya,iBACE,CACLzN,SAAU4O,EAAK5O,SACfvF,OAAQzH,KAAK+Y,UACb9L,eAAgB2O,EAAK3O,eAEzB,CAwBA,OAjBAgC,EAAW4B,eAAe,CACxBjD,KAAM5N,KAAKqZ,MACX7R,OAAQxH,KAAK+Y,UAAUvR,OACvBsJ,OAAQ9Q,KAAK+Y,UAAUjR,QACvB0J,UAAY8K,IAENtc,KAAK+Y,UAAUvR,SAAW8U,IAC9Btc,KAAKoY,SAASlX,KAAKiC,EAAaS,sBAAuB,CACrDiM,SAAU,IAAK7P,KAAK+Y,WACpBjI,OAAQ9Q,KAAK+Y,UAAUjR,QACvBuU,OAAQna,EAAAA,cAAcia,YAExBnc,KAAK2b,qBACL3b,KAAKya,qBAIF,CACLzN,SAAU4O,EAAK5O,SACfvF,OAAQzH,KAAK+Y,UACb9L,eAAgB2O,EAAK3O,eAEzB,CAAE,MAAO1L,GAIP,MAFIka,GAAazb,KAAK2b,qBACtB3b,KAAKya,iBACClZ,CACR,SACEvB,KAAKgZ,gBAAiB,CACxB,CACF,CAIA,YAAMvH,GACJ,IAAKzR,KAAKma,eAAiBna,KAAKsa,gBAC9B,MAAMP,GACJ9W,EAAaC,WACb,qEAGJ,GAAIlD,KAAK+Y,UAAU3Q,OAASvG,EAAAA,SAAS0a,OACnC,MAAMxC,GAAU9W,EAAaC,WAAY,sCAE3C,GAAIlD,KAAK+Y,UAAU5Q,SAAWvG,EAAAA,WAAW2Z,QACvC,MAAMxB,GACJ9W,EAAaC,WACb,+BAA+BlD,KAAK+Y,UAAU5Q,4BAGlD,MAAMX,EAASxH,KAAK+Y,UAAUvR,OAC9B,IAAKA,EACH,MAAMuS,GAAU9W,EAAaC,WAAY,kDAG3C,IAAIuY,GAAc,EAClB,UACQzb,KAAK0b,iBACXD,GAAc,EAGd,MAAM3N,EAAa9N,KAAKwc,yBAClBZ,QAAa3M,EAAWwC,OAAO,CACnC7D,KAAM5N,KAAKqZ,MACX7R,SACAsG,eAEF,GAAqB,IAAjB8N,EAAK9O,QACP,MAAMiN,GAAU6B,EAAK9O,QAAS8O,EAAK7O,QAAU,8BA2B/C,OAvBA/M,KAAK+Y,UAAU5Q,OAASvG,EAAAA,WAAW6T,QACnCzV,KAAK+Y,UAAU1Q,cAAgBwT,KAAKC,MACpC9b,KAAKoY,SAASlX,KAAKiC,EAAaK,cAAe,CAC7CqM,SAAU,IAAK7P,KAAK+Y,aAItB9J,EAAW4B,eAAe,CACxBjD,KAAM5N,KAAKqZ,MACX7R,OAAQxH,KAAK+Y,UAAUvR,OACvBsJ,OAAQ9Q,KAAKob,kBACb5J,UAAY8K,IACNtc,KAAK+Y,UAAUvR,SAAW8U,IAC9Btc,KAAKoY,SAASlX,KAAKiC,EAAaS,sBAAuB,CACrDiM,SAAU,IAAK7P,KAAK+Y,WACpBjI,OAAQ9Q,KAAKob,kBACbiB,OAAQna,EAAAA,cAAcia,YAExBnc,KAAK2b,qBACL3b,KAAKya,qBAIF,CAAEjT,SAAQC,OAAQzH,KAAK+Y,UAAUtR,OAC1C,CAAE,MAAOlG,GACHka,GAAazb,KAAK2b,qBACtB3b,KAAKya,iBACL,MAAM1L,EAAQxN,GAAOA,EAAIwN,MAAS9L,EAAaC,WACzC8L,EAAWzN,GAAOA,EAAIyN,SAAY,gBAExC,MADAhP,KAAKoY,SAASlX,KAAKiC,EAAaC,MAAO,CAAE2L,OAAMC,YACzC+K,GAAUhL,EAAMC,EACxB,CACF,CAIA,YAAM0C,GACJ,IAAK1R,KAAKma,eAAiBna,KAAKsa,gBAC9B,MAAMP,GACJ9W,EAAaC,WACb,qEAGJ,GAAIlD,KAAK+Y,UAAU3Q,OAASvG,EAAAA,SAAS0a,OACnC,MAAMxC,GAAU9W,EAAaC,WAAY,sCAE3C,GAAIlD,KAAK+Y,UAAU5Q,SAAWvG,EAAAA,WAAW2Z,QACvC,MAAMxB,GACJ9W,EAAaC,WACb,+BAA+BlD,KAAK+Y,UAAU5Q,4BAGlD,MAAMX,EAASxH,KAAK+Y,UAAUvR,OAC9B,IAAKA,EACH,MAAMuS,GAAU9W,EAAaC,WAAY,kDAG3C,MAAM9B,EAAW,IAAKpB,KAAK+Y,WAC3B,IACE,MAAMjL,EAAa9N,KAAKwc,yBAClBZ,QAAa3M,EAAWyC,OAAO,CACnC9D,KAAM5N,KAAKqZ,MACX7R,SACAsG,eAWF,OATqB,IAAjB8N,EAAK9O,SACPtL,QAAQuP,KAAK,kDAAmD6K,EAAK9O,QAAS8O,EAAK7O,QAGrF/M,KAAKoY,SAASlX,KAAKiC,EAAaM,YAAa,CAC3CoM,SAAUzO,EACVib,OAAQna,EAAAA,cAAcua,OACtB3L,OAAQ9Q,KAAKob,oBAER,CAAE5T,SACX,SACExH,KAAKya,gBACP,CACF,CAMA,YAAM9I,GACJ,IAAK3R,KAAKma,eAAiBna,KAAKsa,gBAC9B,MAAMP,GACJ9W,EAAaC,WACb,qEAGJ,GACElD,KAAK+Y,UAAU5Q,SAAWvG,EAAAA,WAAW6T,SACrCzV,KAAK+Y,UAAU5Q,SAAWvG,EAAAA,WAAW2Z,QAErC,MAAMxB,GACJ9W,EAAaC,WACb,+BAA+BlD,KAAK+Y,UAAU5Q,uCAGlD,MAAMX,EAASxH,KAAK+Y,UAAUvR,OAC9B,IAAKA,EACH,MAAMuS,GAAU9W,EAAaC,WAAY,4CAG3C,MAAMwZ,EAAW1c,KAAK+Y,UAAU3Q,OAASvG,EAAAA,SAAS2Z,QAAUxb,KAAK+Y,UAAU5Q,SAAWvG,EAAAA,WAAW2Z,QAC3Fna,EAAW,IAAKpB,KAAK+Y,WAE3B,IACE,GAAI2D,EAAU,CACZ,MAAM5U,EAAU9H,KAAK+Y,UAAUjR,SAAW9H,KAAKob,kBACzCvJ,EAAuBxN,MAAMD,QAAQpE,KAAK+Y,UAAU3R,aACtDpH,KAAK+Y,UAAU3R,YAAY/F,QAC3B,GAEJ,GAAIwQ,EAAW5Q,OAAS,EAAG,CACzB,MAAM2a,QAAa3M,EAAW2C,OAAO,CACnChE,KAAM5N,KAAKqZ,MACXvR,UACAN,SACAqK,eAEmB,IAAjB+J,EAAK9O,SACPtL,QAAQuP,KAAK,0DAA2D6K,EAAK9O,QAAS8O,EAAK7O,OAE/F,CACF,KAAO,CACL,MAAMe,EAAa9N,KAAKwc,yBAClBZ,QAAa3M,EAAW0C,OAAO,CACnC/D,KAAM5N,KAAKqZ,MACX7R,SACAsG,eAEmB,IAAjB8N,EAAK9O,SACPtL,QAAQuP,KAAK,kDAAmD6K,EAAK9O,QAAS8O,EAAK7O,OAEvF,CASA,OAPA/M,KAAK2b,qBAEL3b,KAAKoY,SAASlX,KAAKiC,EAAaM,YAAa,CAC3CoM,SAAUzO,EACVib,OAAQK,EAAWxa,EAAAA,cAAcya,SAAWza,EAAAA,cAAc0a,OAC1D9L,OAAQ9Q,KAAKob,oBAER,CAAE5T,SACX,SACExH,KAAKya,gBACP,CACF,CAOA,iBAAAtH,CAAkBC,GAChBpT,KAAKkZ,YAAY/F,kBAAkBC,GACnCpT,KAAK6c,sBACP,CAMA,gBAAAxJ,CAAiBvC,GACf9Q,KAAKkZ,YAAY7F,iBAAiBvC,GAClC9Q,KAAK6c,sBACP,CAKA,kBAAAvJ,GACEtT,KAAKkZ,YAAY5F,qBACjBtT,KAAK6c,sBACP,CAOA,iBAAAC,GACE,MAAM3H,EAASnV,KAAKob,mBAAqB,GACnCnW,EAAOjF,KAAK+Y,WAAa,CAAA,EACzBjR,EAAkB7C,EAAK6C,SAAW,GAClCV,EAAwB/C,MAAMD,QAAQa,EAAKmC,aAAenC,EAAKmC,YAAc,GAC7EoO,EACmB,iBAAhBvQ,EAAKkD,OACPlD,EAAKkD,OACNiK,EAAsBjL,KACtB4V,EAAO,IAAIC,IACX3H,EAAwE,GACxE5U,EAAO,CAAC6U,EAAYnN,KACnBmN,IAAMyH,EAAKE,IAAI3H,KACpByH,EAAKG,IAAI5H,GACTD,EAAgB5U,KAAK,CAAE6U,KAAInN,aAE7B1H,EAAK0U,EAAQK,GACT1N,GAASrH,EAAKqH,EAAS0N,GAC3B,IAAK,MAAM2H,KAAK/V,EAAa3G,EAAK0c,EAAG3H,GAKrC,MAAO,CACLL,SACAK,aACAvN,UAL0B,iBAAnBhD,EAAKgD,UAAyBhD,EAAKgD,UAAYnG,EAAAA,cAAc+J,MAMpEwJ,kBACAvN,UACAV,cAEJ,CAOA,oBAAAyV,GACE,IACkB7c,KAAKkZ,YAAYzF,YAAYzT,KAAK8c,sBAEhD9c,KAAKoY,SAASlX,KACZiC,EAAaa,oBACbhE,KAAKkZ,YAAYlF,eAGvB,CAAE,MAAOzS,GAGPC,QAAQuP,KAAK,gDAAiDxP,GAAOA,EAAIyN,QAC3E,CACF,CAQO,gBAAMoO,CAAWC,EAAgBC,GACtC,IAAIC,EAMJ,GAJEA,OAD2B,IAAlBD,GACA,EAEAA,EAAgB,EAAI,EAE1B/Y,EAAWvE,MAAM4Y,YAAY4E,mBAClC,OAAOxd,KAAK4Y,WAAW4E,kBAAkBH,EAAgBE,EAC3D,CACO,iBAAME,GACX,GAAKlZ,EAAWvE,MAAM4Y,YAAY8E,kBAClC,OAAO1d,KAAK4Y,WAAW8E,kBACzB,CAOO,kBAAMC,CAAaL,GACnB/Y,EAAWvE,MAAM4Y,YAAY+E,qBAE5B3d,KAAK4Y,WAAW+E,eAAeL,EACvC,CACO,oBAAMM,GAENrZ,EAAWvE,MAAM4Y,YAAYiF,wBAE5B7d,KAAK4Y,WAAWiF,iBACxB,CACO,qBAAMC,GAENvZ,EAAWvE,MAAM4Y,YAAYmF,uBAE5B/d,KAAK4Y,WAAWmF,gBACxB,CAQO,+BAAMC,CAA0BhZ,GACrC,IAAKT,EAAWvE,MAAM4Y,YAAYqF,eAAgB,OAElD,MAAMC,EACJlZ,IAAW3C,sBAAoB8b,KAAkB,IAAXnZ,EAClC3C,sBAAoB8b,IACpB9b,EAAAA,oBAAoB+b,cACpBpe,KAAK4Y,WAAWqF,cAAcC,EACtC,CAMA,qBAAMG,CAAgBpX,GACpB,IAAKjH,KAAK4Y,YAAyD,mBAApC5Y,KAAK4Y,WAAWyF,gBAC7C,OAEF,MAAMvN,OAAEA,EAAMwN,KAAEA,EAAIC,WAAEA,EAAa,GAAMtX,GAAU,CAAA,EACnD,OAAOjH,KAAK4Y,WAAWyF,gBAAgBvN,EAAQwN,EAAMC,EACvD,CAOA,oBAAMC,CAAevX,GACnB,IAAKjH,KAAK4Y,YAAwD,mBAAnC5Y,KAAK4Y,WAAW4F,eAC7C,OAEF,MAAM1N,OAAEA,EAAMyN,WAAEA,EAAa,GAAMtX,GAAU,CAAA,EAC7C,OAAOjH,KAAK4Y,WAAW4F,eAAe1N,EAAQyN,EAChD,CAGA,sBAAAvE,GACE,GAAIha,KAAK2Y,sBAAwB3Y,KAAKqZ,OAAkC,mBAAlBrZ,KAAKqZ,MAAMlZ,GAAmB,OAEpF,MAAMse,EAAY5G,GAAiB,aAC7B6G,EAAW7G,GAAiB,cAC5B8G,EAAa9G,GAAiB,oBAC9B+G,EAA6B/G,GAAiB,6BAEpD7X,KAAK6e,aAAe,KAClB7e,KAAKsa,iBAAkB,EACvBta,KAAKoa,kBAEPpa,KAAK8e,iBAAoBvQ,IACvBvO,KAAKoY,SAASlX,KAAKiC,EAAaG,WAAYiL,GAAW,KAEzDvO,KAAK+e,sBAAwB,KAC3B/e,KAAKoY,SAASlX,KAAKiC,EAAaI,iBAAkB,CAAA,IAGpDvD,KAAKgf,8BAAiCzQ,IACpC,MAAQ0Q,KAAMzQ,EAAO,CAAA,EAAEH,KAAEA,EAAO,IAAOpC,KAAKiT,MAAM3Q,EAAQC,MAE1D,GAAsB,uCAAlBH,GAAM7H,QAAkD,CAC1D,MAAQ6J,SAAUR,EAAW,CAAA,GAAOrB,EACpC,IAAI/G,EAAc,CAAEG,UAAW,EAAGF,UAAW,IAC7C,GAA4B,IAAxBmI,EAASC,WACXrI,EAAOG,UAAYuX,OAAOtP,EAAShJ,YAC9B,IAA4B,IAAxBgJ,EAASC,WAGlB,OAFArI,EAAOC,UAAYmI,EAAShJ,MAG9B,CAEA7G,KAAK+Y,UAAY/R,EAAiB,CAChCK,WAAYmH,GAAM4B,oBAAsB,GACxC5I,OAAQgH,GAAM6B,UAAUnC,QAAU,GAClCpG,QAAS0G,GAAM2B,gBAAkB,GACjC1I,OAAQA,EAAOG,WAAa,EAC5BF,UAAWD,EAAOC,WAAa,GAC/BK,QAASyG,GAAM6B,UAAUL,SAAW,GACpC9H,KAAMsG,GAAM6B,UAAUvO,cACtBqG,OAAQvG,EAAAA,WAAW2Z,QACnBnT,KAAMvG,EAAAA,SAAS0a,SAGjBvc,KAAKoY,SAASlX,KAAKiC,EAAaO,iBAAkB,CAChD8D,OAAQxH,KAAK+Y,UAAUvR,OACvBM,QAAS9H,KAAK+Y,UAAUjR,QACxBV,YAAapH,KAAK+Y,UAAU3R,YAC5BW,QAAS/H,KAAK+Y,UAAUhR,QACxBE,UAAWjI,KAAK+Y,UAAU9Q,UAC1BR,OAAQzH,KAAK+Y,UAAUtR,OACvBiI,SAAUlB,GAAM+B,UAAY,GAC5BV,SAAU,IAAK7P,KAAK+Y,YAExB,GAGE0F,GAAWze,KAAKqZ,MAAMlZ,GAAGse,EAAWze,KAAK6e,cACzCH,GAAU1e,KAAKqZ,MAAMlZ,GAAGue,EAAU1e,KAAK8e,kBACvCH,GAAY3e,KAAKqZ,MAAMlZ,GAAGwe,EAAY3e,KAAK+e,uBAC3CH,GAA4B5e,KAAKqZ,MAAMlZ,GAAGye,EAA4B5e,KAAKgf,+BAE/Ehf,KAAK2Y,qBAAsB,CAC7B,CACA,oBAAAgC,GACE,IAAK3a,KAAK2Y,sBAAwB3Y,KAAKqZ,OAAmC,mBAAnBrZ,KAAKqZ,MAAM1Y,IAAoB,OACtF,MAAM8d,EAAY5G,GAAiB,aAC7B6G,EAAW7G,GAAiB,cAC5B8G,EAAa9G,GAAiB,oBAC9B+G,EAA6B/G,GAAiB,6BAEpD,IAAU4G,GAAaze,KAAK6e,cAAc7e,KAAKqZ,MAAM1Y,IAAI8d,EAAWze,KAAK6e,aAAe,CAAE,MAAOvY,GAAkB,CACnH,IAAUoY,GAAY1e,KAAK8e,kBAAkB9e,KAAKqZ,MAAM1Y,IAAI+d,EAAU1e,KAAK8e,iBAAmB,CAAE,MAAOxY,GAAkB,CACzH,IAAUqY,GAAc3e,KAAK+e,uBAAuB/e,KAAKqZ,MAAM1Y,IAAIge,EAAY3e,KAAK+e,sBAAwB,CAAE,MAAOzY,GAAkB,CACvI,IAAUsY,GAA8B5e,KAAKgf,+BAA+Bhf,KAAKqZ,MAAM1Y,IAAIie,EAA4B5e,KAAKgf,8BAAgC,CAAE,MAAO1Y,GAAkB,CAEvLtG,KAAK2Y,qBAAsB,CAC7B,CAGA,sBAAAqC,GACE,GAAIhb,KAAK6Y,sBAAwB7Y,KAAK4Y,WAAY,OAClD,MAAMwG,EAAOpf,KAAK4Y,WAClB,GAAuB,mBAAZwG,EAAKjf,GAAmB,OAGnC,MAAMkf,EAAW,CAAA,EACXC,EAAQC,GAAS,IAAIpe,KACzB,IACEnB,KAAKoY,SAASlX,KAAKqe,KAASpe,EAC9B,CAAE,MAAOqe,GAEPhe,QAAQuP,KAAK,gCAAiCwO,EAAM,SAAUC,EAChE,GAGF,IAAK,MAAMD,KAAQ3H,GAAkB,CACnC,IAAIvX,EACJ,GAAa,0BAATkf,EAAkC,CACpC,MAAME,EAAUH,EAAKC,GACrBlf,EAAK,IAAIc,KACP,IAEInB,KAAK+Y,WACL/Y,KAAK+Y,UAAUvR,QACfxH,KAAK+Y,UAAU5Q,SAAWvG,EAAAA,WAAW2Z,UAErCvb,KAAK+Y,UAAU5Q,OAASvG,EAAAA,WAAW6T,QAC9BzV,KAAK+Y,UAAU1Q,gBAClBrI,KAAK+Y,UAAU1Q,cAAgBwT,KAAKC,OAEtC9b,KAAKoY,SAASlX,KAAKiC,EAAaK,cAAe,CAC7CqM,SAAU,IAAK7P,KAAK+Y,aAG1B,CAAE,MAAOyG,GAEPhe,QAAQuP,KAAK,6CAA8CyO,EAC7D,CACAC,KAAWte,GAEf,MACEd,EAAKif,EAAKC,GAEZF,EAASE,GAAQlf,EACjB,IAAM+e,EAAKjf,GAAGof,EAAMlf,EAAK,CAAE,MAAOiG,GAAkB,CACtD,CACAtG,KAAK8Y,sBAAwBuG,EAC7Brf,KAAK6Y,qBAAsB,CAC7B,CAEA,oBAAA+B,GACE,IAAK5a,KAAK6Y,oBAAqB,OAC/B,MAAMuG,EAAOpf,KAAK4Y,WACZyG,EAAWrf,KAAK8Y,uBAAyB,CAAA,EAC/C,GAAIsG,GAA4B,mBAAbA,EAAKze,IACtB,IAAK,MAAM4e,KAAQhd,OAAO2P,KAAKmN,GAC7B,IAAMD,EAAKze,IAAI4e,EAAMF,EAASE,GAAQ,CAAE,MAAOjZ,GAAkB,CAGrEtG,KAAK8Y,sBAAwB,KAC7B9Y,KAAK6Y,qBAAsB,CAC7B,CACA,cAAAuB,GACMpa,KAAK0f,gBACT1f,KAAK0f,eAAgB,EACrB1f,KAAKoY,SAASlX,KAAKiC,EAAaE,UAAW,CAAEkc,KAAM,cAEnDvf,KAAK2f,0BAA0BC,MAAOre,IAEpCC,QAAQuP,KAAK,6DAA8DxP,KAE/E,CAEA,6BAAMoe,GACJ,IAAK3f,KAAKqZ,QAAUrZ,KAAKma,aAAc,OACvC,GAAIna,KAAK+Y,WAAa/Y,KAAK+Y,UAAUvR,OAAQ,OAE7C,MAAMsJ,EAAS9Q,KAAKob,kBACpB,IAAKtK,EAAQ,OAEb,IAAI8K,EACJ,IACEA,QAAa3M,EAAW+C,cAAc,CAAEpE,KAAM5N,KAAKqZ,MAAOvI,UAC5D,CAAE,MAAOvP,GAGP,YADAC,QAAQuP,KAAK,gDAAiDxP,EAEhE,CACA,GAAKqa,GAAyB,IAAjBA,EAAK9O,SACb8O,EAAKpN,KAEV,IACE,MAAMqR,EAAW,CACfrR,KAAMvC,KAAKC,UAAU,CACnB+S,KAAMrD,EAAKpN,KACXH,KAAM,CAAE7H,QAAS,yCAGjBjC,EAAWvE,KAAKgf,gCAClBhf,KAAKgf,8BAA8Ba,EAEvC,CAAE,MAAOte,GAEPC,QAAQuP,KAAK,qDAAsDxP,EACrE,CACF,CACA,UAAA4Y,GACE,IACE,IAAKna,KAAKqZ,MAAO,OAAO,EACxB,GAAuC,mBAA5BrZ,KAAKqZ,MAAMyG,aACpB,QAAS9f,KAAKqZ,MAAMyG,cAExB,CAAE,MAAOxZ,GAAkB,CAC3B,OAAO,CACT,CACA,eAAA8U,GACE,OAAIpb,KAAKwY,QAAgBxY,KAAKwY,QAC1BjU,EAAWvE,MAAMqZ,OAAOyG,eAAsB9f,KAAKqZ,MAAMyG,gBACtD,EACT,CAEA,oBAAMpE,GACJ,IAAMzM,EAAW5B,eAAiB,CAAE,MAAO/G,GAAkB,CAE7D,GAAItG,KAAK+Y,UAAUgH,WAAaje,EAAAA,cAAcke,QAAS,MAAMjG,IAAU,EAAI,qBAC3E,MAAMtS,OAAEA,GAAWzH,KAAK+Y,UACxB,GAAyB,IAArBtR,EAAOG,WAAwC,KAArBH,EAAOC,UAAkB,MAAMqS,IAAU,EAAI,oBAE3E,MAAM9S,EAAc,CAClB6S,SAAU9Z,KAAKqY,UACfvH,OAAQ9Q,KAAKob,kBACbvB,QAAS7Z,KAAKyY,SACdrQ,KAAM,IAEJX,EAAOG,UAAY,EACrBX,EAAOQ,OAASA,EAAOG,UAEvBX,EAAOS,UAAYD,EAAOC,UAE5B,MAAMR,EAAQlH,KAAK+Y,UAAU9Q,YAAcnG,EAAAA,cAAc+J,MAAQ,EAAI,EAE/DuT,EAAOpf,KAAKqa,6BAGZ,IAAIb,QAAc,CAACC,EAAS/H,KAChC,IAAIuO,GAAU,EACVC,EAAa,KAEjB,MAAMC,EAAU,KACVD,IACFE,aAAaF,GACbA,EAAQ,MAEV,IAAMlgB,KAAKoY,SAASzX,IAAI,cAAe0f,EAAc,CAAE,MAAO/Z,GAAkB,GAG5E+Z,EAAe/J,IACf2J,IACJA,GAAU,EACVE,IACsB,iBAAX7J,GAAuBA,EAAS,EACzCmD,IAEA/H,EAAOqI,GAA4B,iBAAXzD,EAAsBA,GAAS,EAAI,qBAAqBA,QAIpFtW,KAAKoY,SAASjY,GAAG,cAAekgB,GAEhCH,EAAQI,WAAW,KACbL,IACJA,GAAU,EACVE,IACAzO,EAAOqI,MAAc,wBA/BK,KAkC5B,IACE,MAAMwG,EAAMnB,EAAKoB,UAAUvZ,EAAQC,GAC/BqZ,GAA4B,mBAAdA,EAAIX,OACpBW,EAAIX,MAAOre,IACL0e,IACJA,GAAU,EACVE,IACAzO,EAAOnQ,KAGb,CAAE,MAAOA,GACP,GAAI0e,EAAS,OACbA,GAAU,EACVE,IACAzO,EAAOnQ,EACT,GAEJ,CACA,kBAAAoa,GACE,IACM3b,KAAK4Y,YAAkD,mBAA7B5Y,KAAK4Y,WAAW6H,UAC5CzgB,KAAK4Y,WAAW6H,UAEpB,CAAE,MAAOna,GAAkB,CAC7B,CACA,cAAAmU,GACE,IAAMxL,EAAW5B,eAAiB,CAAE,MAAO/G,GAAkB,CAC7DtG,KAAK+Y,UAAY/R,GACnB,CAEA,sBAAAwV,GAIE,OAHKxc,KAAKiZ,cACRjZ,KAAKiZ,YJ33BuB,WAEhC,MAAMyH,EAAQ,IAAIrc,MAAM,IAElBsc,EAAoC,oBAAXC,QAA0BA,QAGpD,KACL,GAAID,GAAkD,mBAA9BA,EAAUE,gBAAgC,CAChE,MAAMC,EAAM,IAAIC,WAAW,IAC3BJ,EAAUE,gBAAgBC,GAC1B,IAAK,IAAI9L,EAAI,EAAGA,EAAI,GAAIA,IAAK0L,EAAM1L,GAAK8L,EAAI9L,EAC9C,MACE,IAAK,IAAIA,EAAI,EAAGA,EAAI,GAAIA,IAAK0L,EAAM1L,GAAKsC,KAAK+D,MAAsB,IAAhB/D,KAAKgE,UAE1D,MAAM0F,EAAMN,EAAM/L,IAAKO,GAAcA,EAAEzQ,SAAS,IAAIwc,SAAS,EAAG,MAAMC,KAAK,IAAIC,cAC/E,MAAO,GAAGH,EAAI3f,MAAM,EAAG,MAAM2f,EAAI3f,MAAM,EAAG,OAAO2f,EAAI3f,MAAM,GAAI,OAAO2f,EAAI3f,MAAM,GAAI,OAAO2f,EAAI3f,MAAM,GAAI,KAC3G,CI02ByB+f,IAEdphB,KAAKiZ,WACd,EAGF,SAASc,GAAUhL,EAAcC,GAC/B,MAAMzN,EAAM,IAAI8f,MAAMrS,GAEtB,OADAzN,EAAIwN,KAAOA,EACJxN,CACT,CAr+BS4W,GAAAoB,SAAiC"}
|
package/package.json
CHANGED