diff --git a/iweb/.eslintignore b/iweb/.eslintignore
index d554f2c..52ba936 100644
--- a/iweb/.eslintignore
+++ b/iweb/.eslintignore
@@ -1 +1,2 @@
src/TUIKit/TUIPlugin/TUICallKit/*
+src/TUIKit/**
diff --git a/iweb/package.json b/iweb/package.json
index f7db1b3..766805f 100644
--- a/iweb/package.json
+++ b/iweb/package.json
@@ -3,7 +3,7 @@
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
- "build": "cross-env NODE_OPTIONS= vue-cli-service build",
+ "build": "vue-cli-service build",
"test:unit": "vue-cli-service test:unit",
"test:e2e": "vue-cli-service test:e2e",
"lint": "vue-cli-service lint",
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/README.en.md b/iweb/src/TUIKit/TUIComponents/components/call/README.en.md
new file mode 100644
index 0000000..4a633ad
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/README.en.md
@@ -0,0 +1,85 @@
+
TUICallKit
+
+
+ English | 简体中文
+
+
+ A Vue2 & Vue3 Voice & Video Calling UI Component, easily add calling capabilities to your web application.Vue2 version @tencentcloud/call-uikit-vue2
+
+
+
+
+
+## Features
+
+- ⚡️ Supports C2C/Group/Voice/Video calls, switch calling type, select calling devices
+- 🌟 3 lines of code to run through the test demo, 6 lines of code to complete the common ability to access
+- 📱 Multi-device adaptation, support H5 webview
+- 🛠 Ecology system, works with [TUIKit](https://www.tencentcloud.com/document/product/1047/50061) to initiate audio/video calls directly in [TIM](https://www.tencentcloud.com/document/product/1047/33513) sessions
+- 🔥 Out-of-the-box TypeScript support, support for Vue3 `Composition API`
+- 🌍 Cross-platform, support for Android, iOS, Web, applets, Flutter, uniapp, etc. [multiple development platforms](https://www.tencentcloud.com/document/product/647/35078)
+- ☁️ Deploy on Tencent Cloud, end-to-end average latency < 300ms on international links
+- 🤙🏻 Low lag, anti-packet loss rate over 80%, anti-network jitter over 1000ms, still smooth and stable in weak network environment
+- 🌈 High calling quality, support 720P, 1080P HD quality, 70% packet loss can still running
+
+## How to use
+
+This is a documentation for the TUICallKit project. It provides instructions for using and integrating TUICallKit into your website or application.
+
+Here are a few guidelines for using this component.
+
+- Click [here](https://tcms-demo.tencentcloud.com/exp-center/index.html#/detail?scene=callkit) to try out 1v1 Voice and Video Call online.
+
+- If you want to experience it in your dev mode, please read [Run the Vue3 Demo](https://github.com/tencentyun/TUICallKit/blob/main/Web/demos/basic-vue3/README.en.md) or [Run the Vue2 Demo](https://github.com/tencentyun/TUICallKit/blob/main/Web/demos/basic-vue2/README.en.md)
+
+- If you want to install this component into your project, please read [TUICallKit Getting Started](https://www.tencentcloud.com/document/product/647/50993)
+
+- If you want to modify the CSS Style, please read [UI Customization](https://www.tencentcloud.com/document/product/647/50997)
+
+## Contents
+
+```text
+.
+├── README.md
+├── demos/basic-vue3/
+├── demos/basic-vue2/
+└── TUICallKit/
+```
+
+**demos/basic-vue3/**
+
+- The `demos/basic-vue3/` directory contains the Vue3 basic demo of TUICallKit, which is integrated with all the features of the full TUICallKit component.
+- A debug panel is integrated at the bottom of the demo page. You can enter your application information directly, please refer to [Run the Vue3 Demo](https://github.com/tencentyun/TUICallKit/blob/main/Web/demos/basic-vue3/README.en.md).
+
+**demos/basic-vue2/**
+
+- The `demos/basic-vue2/` directory contains the Vue2 basic demo of TUICallKit, which is integrated with all the features of the full TUICallKit component.
+- A debug panel is integrated at the bottom of the demo page. You can enter your application information directly, please refer to [Run the Vue2 Demo](https://github.com/tencentyun/TUICallKit/blob/main/Web/demos/basic-vue2/README.en.md).
+
+**TUICallKIt/**
+
+- The `TUICallKIt` directory contains the source code of TUICallKit. The entry file is `index.ts`.
+- It is recommended to use a packaging method to directly import TUICallKit into your project, as outlined in the [TUICallKit Getting Started](https://www.tencentcloud.com/document/product/647/50993)
+. You can also copy the files directly into your project for component import. For detailed instructions on how to integrate the source code, please refer to the [UI Customization](https://www.tencentcloud.com/document/product/647/50997).
+
+
+## Contact Us
+
+- If you have questions, see [FAQs](https://www.tencentcloud.com/document/product/647/51024);
+- To report bugs in our sample code, please create an issue.
+- Communication & Feedback
+Welcome to join our Telegram Group to communicate with our professional engineers! We are more than happy to hear from you~
+Click to join: [https://t.me/+EPk6TMZEZMM5OGY1](https://t.me/+EPk6TMZEZMM5OGY1)
+Or scan the QR code
+
+
+## License
+
+ISC License © 2022-present, [Tencent](https://www.tencent.com/)
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/README.md b/iweb/src/TUIKit/TUIComponents/components/call/README.md
new file mode 100644
index 0000000..67649a1
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/README.md
@@ -0,0 +1,91 @@
+ TUICallKit
+
+
+ English | 简体中文
+
+
+Vue3 版本的音视频通话 UI 组件,通过编写几行代码,就可以为您的 Web 应用添加音视频通话功能。Vue2 请参见 @tencentcloud/call-uikit-vue2
+
+
+
+
+
+
+## 特性
+
+
+
+- ⚡️ 功能全面 —— 支持单人/多人/音频/视频通话、支持视频转音频通话、支持自由选择通话设备
+- 🌟 低门槛 —— 仅需 3 行代码即可跑通测试 Demo,6 行代码完成通用能力接入
+- 📱 多设备适配 —— 支持 H5 1v1 通话、群组通话 布局
+- 🎨 灵活样式 —— 组件开源,可复用逻辑,自定义 UI 样式
+- 🛠 优秀生态 —— 与 [TUIKit](https://cloud.tencent.com/document/product/269/79737) 协同使用,可以在 [TIM](https://cloud.tencent.com/document/product/269) 会话中直接发起音视频通话
+- 🔥 先进技术栈 —— `TypeScript` 类型,支持 Vue3 `Composition API`
+- 🌍 跨平台 —— 支持 Android、iOS、Web、小程序、Flutter、UniApp 等[多个开发平台](https://cloud.tencent.com/document/product/647/78742)
+- ☁️ 低延迟 —— 腾讯云全球链路资源储备,保证国际链路端到端平均时延 < 300ms
+- 🤙🏻 低卡顿 —— 抗丢包率超过 80%、抗网络抖动超过 1000ms,弱网环境仍顺畅稳定
+- 🌈 高品质 —— 支持 720P、1080P 高清画质,70% 丢包率仍可正常视频
+
+## 使用指引
+
+```text
+我们团队即将在 Web 端丰富更多不同的组件,以满足您的开发需求。
+希望您能抽出几分钟时间,为您自己的需求投上一票,我们将优先开发!
+问卷地址:https://wj.qq.com/s2/11263124/1556/
+```
+
+为方便您的使用,本组件配套多篇使用指引:
+
+- 如果您想在线体验通话效果,请访问 [1v1音视频通话体验馆](https://web.sdk.qcloud.com/component/experience-center/index.html#/detail?scene=callkit)
+
+- 如果您想要调试通话效果,请阅读 [Vue3 Demo 快速跑通](https://github.com/tencentyun/TUICallKit/blob/main/Web/demos/basic-vue3/README.md) 或者 [Vue2 Demo 快速跑通](https://github.com/tencentyun/TUICallKit/blob/main/Web/demos/basic-vue2/README.md)
+
+- 如果您想把我们的功能直接嵌入到您的项目中,请阅读 [快速接入 TUICallKit](https://cloud.tencent.com/document/product/647/78731)
+
+- 如果您想要修改 UI 界面,请阅读 [TUICallKit 界面定制指引](https://cloud.tencent.com/document/product/647/81014)
+
+## 目录说明
+
+```text
+.
+├── README.md
+├── demos/basic-vue3/
+├── demos/basic-vue2/
+└── TUICallKit/
+```
+
+**demos/basic-vue3/**
+
+- 此文件夹下是 Vue3 基础版 demo,集成了完整的 TUICallKit 组件功能,可以直接搜索用户拨打音视频通话。
+- demo 页面下方集成了调试面板,可直接输入您的应用信息,具体流程请参考:[Vue3 Demo 快速跑通](https://github.com/tencentyun/TUICallKit/blob/main/Web/demos/basic-vue3/README.md)。
+
+**demos/basic-vue2/**
+
+- 此文件夹下是 Vue2.7 基础版 demo,集成了完整的 TUICallKit 组件功能,可以直接搜索用户拨打音视频通话。
+- demo 页面下方集成了调试面板,可直接输入您的应用信息,具体流程请参考:[Vue2 Demo 快速跑通](https://github.com/tencentyun/TUICallKit/blob/main/Web/demos/basic-vue2/README.md)。
+
+**TUICallKit/**
+
+- 此文件夹下是 TUICallKit 组件源文件,支持 Vue3 与 Vue2.7+ 的项目直接引入。包含全部 UI 层与逻辑层代码,入口文件为 `index.ts`。
+- 推荐直接使用打包方式引入,如 [快速接入 TUICallKit](https://cloud.tencent.com/document/product/647/78731)。可直接复制此文件到您的工程中进行组件的引入,详细的源码接入组件过程请参考 [TUICallKit 界面定制指引](https://cloud.tencent.com/document/product/647/81014)。
+
+## Changelog
+
+版本更新历史请点击 [SDK 发布日志(Web)](https://cloud.tencent.com/document/product/647/80930)。
+
+## 附录
+
+- 如果你遇到了困难,可以先参阅 [常见问题](https://cloud.tencent.com/document/product/647/78769);
+- 如果发现了示例代码的 bug,欢迎提交 issue;
+- 欢迎加入 QQ 群:**646165204**,进行技术交流和反馈~
+
+## License
+
+ISC License © 2022-present, [Tencent](https://www.tencent.com/)
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/debug/GenerateTestUserSig-es.js b/iweb/src/TUIKit/TUIComponents/components/call/debug/GenerateTestUserSig-es.js
new file mode 100644
index 0000000..f61fb98
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/debug/GenerateTestUserSig-es.js
@@ -0,0 +1,63 @@
+import LibGenerateTestUserSig from './lib-generate-test-usersig-es.min.js';
+
+/**
+ * 腾讯云 SDKAppId,需要替换为您自己账号下的 SDKAppId。
+ *
+ * 进入腾讯云实时音视频[控制台](https://console.cloud.tencent.com/rav ) 创建应用,即可看到 SDKAppId,
+ * 它是腾讯云用于区分客户的唯一标识。
+ */
+let SDKAPPID = 0;
+
+
+/**
+ * 签名过期时间,建议不要设置的过短
+ *
+ * 时间单位:秒
+ * 默认时间:7 x 24 x 60 x 60 = 604800 = 7 天
+ */
+const EXPIRETIME = 604800;
+
+
+/**
+ * 计算签名用的加密密钥,获取步骤如下:
+ *
+ * step1. 进入腾讯云实时音视频[控制台](https://console.cloud.tencent.com/rav ),如果还没有应用就创建一个,
+ * step2. 单击“应用配置”进入基础配置页面,并进一步找到“帐号体系集成”部分。
+ * step3. 点击“查看密钥”按钮,就可以看到计算 UserSig 使用的加密的密钥了,请将其拷贝并复制到如下的变量中
+ *
+ * 注意:该方案仅适用于调试Demo,正式上线前请将 UserSig 计算代码和密钥迁移到您的后台服务器上,以避免加密密钥泄露导致的流量盗用。
+ * 文档:https://cloud.tencent.com/document/product/647/17275#Server
+ */
+let SECRETKEY = '';
+
+/*
+ * Module: GenerateTestUserSig
+ *
+ * Function: 用于生成测试用的 UserSig,UserSig 是腾讯云为其云服务设计的一种安全保护签名。
+ * 其计算方法是对 SDKAppID、UserID 和 EXPIRETIME 进行加密,加密算法为 HMAC-SHA256。
+ *
+ * Attention: 请不要将如下代码发布到您的线上正式版本的 App 中,原因如下:
+ *
+ * 本文件中的代码虽然能够正确计算出 UserSig,但仅适合快速调通 SDK 的基本功能,不适合线上产品,
+ * 这是因为客户端代码中的 SECRETKEY 很容易被反编译逆向破解,尤其是 Web 端的代码被破解的难度几乎为零。
+ * 一旦您的密钥泄露,攻击者就可以计算出正确的 UserSig 来盗用您的腾讯云流量。
+ *
+ * 正确的做法是将 UserSig 的计算代码和加密密钥放在您的业务服务器上,然后由 App 按需向您的服务器获取实时算出的 UserSig。
+ * 由于破解服务器的成本要高于破解客户端 App,所以服务器计算的方案能够更好地保护您的加密密钥。
+ *
+ * Reference:https://cloud.tencent.com/document/product/647/17275#Server
+ */
+
+export function genTestUserSig({ userID, SDKAppID, SecretKey }) {
+ if (SDKAppID) SDKAPPID = SDKAppID;
+ if (SecretKey) SECRETKEY = SecretKey;
+ const generator = new LibGenerateTestUserSig(SDKAPPID, SECRETKEY, EXPIRETIME);
+ const userSig = generator.genTestUserSig(userID);
+
+ return {
+ SDKAppID: SDKAPPID,
+ userSig,
+ };
+}
+
+export default genTestUserSig;
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/debug/lib-generate-test-usersig-es.min.js b/iweb/src/TUIKit/TUIComponents/components/call/debug/lib-generate-test-usersig-es.min.js
new file mode 100644
index 0000000..b01b70b
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/debug/lib-generate-test-usersig-es.min.js
@@ -0,0 +1,2 @@
+/*eslint-disable*/
+var e="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},t=[],r=[],n="undefined"!=typeof Uint8Array?Uint8Array:Array,i=!1;function o(){i=!0;for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n=0,o=e.length;n>18&63]+t[o>>12&63]+t[o>>6&63]+t[63&o]);return a.join("")}function s(e){var r;i||o();for(var n=e.length,s=n%3,h="",l=[],f=0,c=n-s;fc?c:f+16383));return 1===s?(r=e[n-1],h+=t[r>>2],h+=t[r<<4&63],h+="=="):2===s&&(r=(e[n-2]<<8)+e[n-1],h+=t[r>>10],h+=t[r>>4&63],h+=t[r<<2&63],h+="="),l.push(h),l.join("")}function h(e,t,r,n,i){var o,a,s=8*i-n-1,h=(1<>1,f=-7,c=r?i-1:0,u=r?-1:1,d=e[t+c];for(c+=u,o=d&(1<<-f)-1,d>>=-f,f+=s;f>0;o=256*o+e[t+c],c+=u,f-=8);for(a=o&(1<<-f)-1,o>>=-f,f+=n;f>0;a=256*a+e[t+c],c+=u,f-=8);if(0===o)o=1-l;else{if(o===h)return a?NaN:1/0*(d?-1:1);a+=Math.pow(2,n),o-=l}return(d?-1:1)*a*Math.pow(2,o-n)}function l(e,t,r,n,i,o){var a,s,h,l=8*o-i-1,f=(1<>1,u=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=n?0:o-1,p=n?1:-1,_=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,a=f):(a=Math.floor(Math.log(t)/Math.LN2),t*(h=Math.pow(2,-a))<1&&(a--,h*=2),(t+=a+c>=1?u/h:u*Math.pow(2,1-c))*h>=2&&(a++,h/=2),a+c>=f?(s=0,a=f):a+c>=1?(s=(t*h-1)*Math.pow(2,i),a+=c):(s=t*Math.pow(2,c-1)*Math.pow(2,i),a=0));i>=8;e[r+d]=255&s,d+=p,s/=256,i-=8);for(a=a<0;e[r+d]=255&a,d+=p,a/=256,l-=8);e[r+d-p]|=128*_}var f={}.toString,c=Array.isArray||function(e){return"[object Array]"==f.call(e)};function u(){return p.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function d(e,t){if(u()=u())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+u().toString(16)+" bytes");return 0|e}function y(e){return!(null==e||!e._isBuffer)}function m(e,t){if(y(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var r=e.length;if(0===r)return 0;for(var n=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return q(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return V(e).length;default:if(n)return q(e).length;t=(""+t).toLowerCase(),n=!0}}function k(e,t,r){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return O(this,t,r);case"utf8":case"utf-8":return C(this,t,r);case"ascii":return I(this,t,r);case"latin1":case"binary":return P(this,t,r);case"base64":return M(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return U(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function E(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function S(e,t,r,n,i){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof t&&(t=p.from(t,n)),y(t))return 0===t.length?-1:x(e,t,r,n,i);if("number"==typeof t)return t&=255,p.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):x(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function x(e,t,r,n,i){var o,a=1,s=e.length,h=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;a=2,s/=2,h/=2,r/=2}function l(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(i){var f=-1;for(o=r;os&&(r=s-h),o=r;o>=0;o--){for(var c=!0,u=0;ui&&(n=i):n=i;var o=t.length;if(o%2!=0)throw new TypeError("Invalid hex string");n>o/2&&(n=o/2);for(var a=0;a>8,i=r%256,o.push(i),o.push(n);return o}(t,e.length-r),e,r,n)}function M(e,t,r){return 0===t&&r===e.length?s(e):s(e.slice(t,r))}function C(e,t,r){r=Math.min(e.length,r);for(var n=[],i=t;i239?4:l>223?3:l>191?2:1;if(i+c<=r)switch(c){case 1:l<128&&(f=l);break;case 2:128==(192&(o=e[i+1]))&&(h=(31&l)<<6|63&o)>127&&(f=h);break;case 3:o=e[i+1],a=e[i+2],128==(192&o)&&128==(192&a)&&(h=(15&l)<<12|(63&o)<<6|63&a)>2047&&(h<55296||h>57343)&&(f=h);break;case 4:o=e[i+1],a=e[i+2],s=e[i+3],128==(192&o)&&128==(192&a)&&128==(192&s)&&(h=(15&l)<<18|(63&o)<<12|(63&a)<<6|63&s)>65535&&h<1114112&&(f=h)}null===f?(f=65533,c=1):f>65535&&(f-=65536,n.push(f>>>10&1023|55296),f=56320|1023&f),n.push(f),i+=c}return function(e){var t=e.length;if(t<=D)return String.fromCharCode.apply(String,e);var r="",n=0;for(;n0&&(e=this.toString("hex",0,50).match(/.{2}/g).join(" "),this.length>50&&(e+=" ... ")),""},p.prototype.compare=function(e,t,r,n,i){if(!y(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),t<0||r>e.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(this===e)return 0;for(var o=(i>>>=0)-(n>>>=0),a=(r>>>=0)-(t>>>=0),s=Math.min(o,a),h=this.slice(n,i),l=e.slice(t,r),f=0;fi)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return R(this,e,t,r);case"utf8":case"utf-8":return A(this,e,t,r);case"ascii":return B(this,e,t,r);case"latin1":case"binary":return z(this,e,t,r);case"base64":return L(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return T(this,e,t,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},p.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var D=4096;function I(e,t,r){var n="";r=Math.min(e.length,r);for(var i=t;in)&&(r=n);for(var i="",o=t;or)throw new RangeError("Trying to access beyond buffer length")}function F(e,t,r,n,i,o){if(!y(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function N(e,t,r,n){t<0&&(t=65535+t+1);for(var i=0,o=Math.min(e.length-r,2);i>>8*(n?i:1-i)}function Z(e,t,r,n){t<0&&(t=4294967295+t+1);for(var i=0,o=Math.min(e.length-r,4);i>>8*(n?i:3-i)&255}function j(e,t,r,n,i,o){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function W(e,t,r,n,i){return i||j(e,0,r,4),l(e,t,r,n,23,4),r+4}function Y(e,t,r,n,i){return i||j(e,0,r,8),l(e,t,r,n,52,8),r+8}p.prototype.slice=function(e,t){var r,n=this.length;if((e=~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),(t=void 0===t?n:~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),t0&&(i*=256);)n+=this[e+--t]*i;return n},p.prototype.readUInt8=function(e,t){return t||H(e,1,this.length),this[e]},p.prototype.readUInt16LE=function(e,t){return t||H(e,2,this.length),this[e]|this[e+1]<<8},p.prototype.readUInt16BE=function(e,t){return t||H(e,2,this.length),this[e]<<8|this[e+1]},p.prototype.readUInt32LE=function(e,t){return t||H(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},p.prototype.readUInt32BE=function(e,t){return t||H(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},p.prototype.readIntLE=function(e,t,r){e|=0,t|=0,r||H(e,t,this.length);for(var n=this[e],i=1,o=0;++o=(i*=128)&&(n-=Math.pow(2,8*t)),n},p.prototype.readIntBE=function(e,t,r){e|=0,t|=0,r||H(e,t,this.length);for(var n=t,i=1,o=this[e+--n];n>0&&(i*=256);)o+=this[e+--n]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*t)),o},p.prototype.readInt8=function(e,t){return t||H(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},p.prototype.readInt16LE=function(e,t){t||H(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},p.prototype.readInt16BE=function(e,t){t||H(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},p.prototype.readInt32LE=function(e,t){return t||H(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},p.prototype.readInt32BE=function(e,t){return t||H(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},p.prototype.readFloatLE=function(e,t){return t||H(e,4,this.length),h(this,e,!0,23,4)},p.prototype.readFloatBE=function(e,t){return t||H(e,4,this.length),h(this,e,!1,23,4)},p.prototype.readDoubleLE=function(e,t){return t||H(e,8,this.length),h(this,e,!0,52,8)},p.prototype.readDoubleBE=function(e,t){return t||H(e,8,this.length),h(this,e,!1,52,8)},p.prototype.writeUIntLE=function(e,t,r,n){(e=+e,t|=0,r|=0,n)||F(this,e,t,r,Math.pow(2,8*r)-1,0);var i=1,o=0;for(this[t]=255&e;++o=0&&(o*=256);)this[t+i]=e/o&255;return t+r},p.prototype.writeUInt8=function(e,t,r){return e=+e,t|=0,r||F(this,e,t,1,255,0),p.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},p.prototype.writeUInt16LE=function(e,t,r){return e=+e,t|=0,r||F(this,e,t,2,65535,0),p.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):N(this,e,t,!0),t+2},p.prototype.writeUInt16BE=function(e,t,r){return e=+e,t|=0,r||F(this,e,t,2,65535,0),p.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):N(this,e,t,!1),t+2},p.prototype.writeUInt32LE=function(e,t,r){return e=+e,t|=0,r||F(this,e,t,4,4294967295,0),p.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):Z(this,e,t,!0),t+4},p.prototype.writeUInt32BE=function(e,t,r){return e=+e,t|=0,r||F(this,e,t,4,4294967295,0),p.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):Z(this,e,t,!1),t+4},p.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t|=0,!n){var i=Math.pow(2,8*r-1);F(this,e,t,r,i-1,-i)}var o=0,a=1,s=0;for(this[t]=255&e;++o>0)-s&255;return t+r},p.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t|=0,!n){var i=Math.pow(2,8*r-1);F(this,e,t,r,i-1,-i)}var o=r-1,a=1,s=0;for(this[t+o]=255&e;--o>=0&&(a*=256);)e<0&&0===s&&0!==this[t+o+1]&&(s=1),this[t+o]=(e/a>>0)-s&255;return t+r},p.prototype.writeInt8=function(e,t,r){return e=+e,t|=0,r||F(this,e,t,1,127,-128),p.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},p.prototype.writeInt16LE=function(e,t,r){return e=+e,t|=0,r||F(this,e,t,2,32767,-32768),p.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):N(this,e,t,!0),t+2},p.prototype.writeInt16BE=function(e,t,r){return e=+e,t|=0,r||F(this,e,t,2,32767,-32768),p.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):N(this,e,t,!1),t+2},p.prototype.writeInt32LE=function(e,t,r){return e=+e,t|=0,r||F(this,e,t,4,2147483647,-2147483648),p.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):Z(this,e,t,!0),t+4},p.prototype.writeInt32BE=function(e,t,r){return e=+e,t|=0,r||F(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),p.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):Z(this,e,t,!1),t+4},p.prototype.writeFloatLE=function(e,t,r){return W(this,e,t,!0,r)},p.prototype.writeFloatBE=function(e,t,r){return W(this,e,t,!1,r)},p.prototype.writeDoubleLE=function(e,t,r){return Y(this,e,t,!0,r)},p.prototype.writeDoubleBE=function(e,t,r){return Y(this,e,t,!1,r)},p.prototype.copy=function(e,t,r,n){if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t=0;--i)e[i+t]=this[i+r];else if(o<1e3||!p.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(o=t;o55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(a+1===n){(t-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;o.push(r)}else if(r<2048){if((t-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function V(e){return function(e){var t,a,s,h,l,f;i||o();var c=e.length;if(c%4>0)throw new Error("Invalid string. Length must be a multiple of 4");l="="===e[c-2]?2:"="===e[c-1]?1:0,f=new n(3*c/4-l),s=l>0?c-4:c;var u=0;for(t=0,a=0;t>16&255,f[u++]=h>>8&255,f[u++]=255&h;return 2===l?(h=r[e.charCodeAt(t)]<<2|r[e.charCodeAt(t+1)]>>4,f[u++]=255&h):1===l&&(h=r[e.charCodeAt(t)]<<10|r[e.charCodeAt(t+1)]<<4|r[e.charCodeAt(t+2)]>>2,f[u++]=h>>8&255,f[u++]=255&h),f}(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(K,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function G(e,t,r,n){for(var i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function $(e){return null!=e&&(!!e._isBuffer||J(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&J(e.slice(0,0))}(e))}function J(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;function Q(e,t){return e(t={exports:{}},t.exports),t.exports}var ee=Q(function(e,t){var r;e.exports=(r=r||function(e,t){var r=Object.create||function(){function e(){}return function(t){var r;return e.prototype=t,r=new e,e.prototype=null,r}}(),n={},i=n.lib={},o=i.Base={extend:function(e){var t=r(this);return e&&t.mixIn(e),t.hasOwnProperty("init")&&this.init!==t.init||(t.init=function(){t.$super.init.apply(this,arguments)}),t.init.prototype=t,t.$super=this,t},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var t in e)e.hasOwnProperty(t)&&(this[t]=e[t]);e.hasOwnProperty("toString")&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}},a=i.WordArray=o.extend({init:function(e,t){e=this.words=e||[],this.sigBytes=null!=t?t:4*e.length},toString:function(e){return(e||h).stringify(this)},concat:function(e){var t=this.words,r=e.words,n=this.sigBytes,i=e.sigBytes;if(this.clamp(),n%4)for(var o=0;o>>2]>>>24-o%4*8&255;t[n+o>>>2]|=a<<24-(n+o)%4*8}else for(var o=0;o>>2]=r[o>>>2];return this.sigBytes+=i,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var e=o.clone.call(this);return e.words=this.words.slice(0),e},random:function(t){for(var r,n=[],i=function(t){var t=t,r=987654321,n=4294967295;return function(){var i=((r=36969*(65535&r)+(r>>16)&n)<<16)+(t=18e3*(65535&t)+(t>>16)&n)&n;return i/=4294967296,(i+=.5)*(e.random()>.5?1:-1)}},o=0;o>>2]>>>24-i%4*8&255;n.push((o>>>4).toString(16)),n.push((15&o).toString(16))}return n.join("")},parse:function(e){for(var t=e.length,r=[],n=0;n>>3]|=parseInt(e.substr(n,2),16)<<24-n%8*4;return new a.init(r,t/2)}},l=s.Latin1={stringify:function(e){for(var t=e.words,r=e.sigBytes,n=[],i=0;i>>2]>>>24-i%4*8&255;n.push(String.fromCharCode(o))}return n.join("")},parse:function(e){for(var t=e.length,r=[],n=0;n>>2]|=(255&e.charCodeAt(n))<<24-n%4*8;return new a.init(r,t)}},f=s.Utf8={stringify:function(e){try{return decodeURIComponent(escape(l.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return l.parse(unescape(encodeURIComponent(e)))}},c=i.BufferedBlockAlgorithm=o.extend({reset:function(){this._data=new a.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=f.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var r=this._data,n=r.words,i=r.sigBytes,o=this.blockSize,s=4*o,h=i/s,l=(h=t?e.ceil(h):e.max((0|h)-this._minBufferSize,0))*o,f=e.min(4*l,i);if(l){for(var c=0;c>>2]|=e[i]<<24-i%4*8;t.call(this,n,r)}else t.apply(this,arguments)}).prototype=e}}(),r.lib.WordArray)}),Q(function(e,t){var r;e.exports=(r=ee,function(){var e=r,t=e.lib.WordArray,n=e.enc;function i(e){return e<<8&4278255360|e>>>8&16711935}n.Utf16=n.Utf16BE={stringify:function(e){for(var t=e.words,r=e.sigBytes,n=[],i=0;i>>2]>>>16-i%4*8&65535;n.push(String.fromCharCode(o))}return n.join("")},parse:function(e){for(var r=e.length,n=[],i=0;i>>1]|=e.charCodeAt(i)<<16-i%2*16;return t.create(n,2*r)}},n.Utf16LE={stringify:function(e){for(var t=e.words,r=e.sigBytes,n=[],o=0;o>>2]>>>16-o%4*8&65535);n.push(String.fromCharCode(a))}return n.join("")},parse:function(e){for(var r=e.length,n=[],o=0;o>>1]|=i(e.charCodeAt(o)<<16-o%2*16);return t.create(n,2*r)}}}(),r.enc.Utf16)}),Q(function(e,t){var r,n,i;e.exports=(i=(n=r=ee).lib.WordArray,n.enc.Base64={stringify:function(e){var t=e.words,r=e.sigBytes,n=this._map;e.clamp();for(var i=[],o=0;o>>2]>>>24-o%4*8&255)<<16|(t[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|t[o+2>>>2]>>>24-(o+2)%4*8&255,s=0;s<4&&o+.75*s>>6*(3-s)&63));var h=n.charAt(64);if(h)for(;i.length%4;)i.push(h);return i.join("")},parse:function(e){var t=e.length,r=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var o=0;o>>6-a%4*2;n[o>>>2]|=(s|h)<<24-o%4*8,o++}return i.create(n,o)}(e,t,n)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},r.enc.Base64)}),Q(function(e,t){var r;e.exports=(r=ee,function(e){var t=r,n=t.lib,i=n.WordArray,o=n.Hasher,a=t.algo,s=[];!function(){for(var t=0;t<64;t++)s[t]=4294967296*e.abs(e.sin(t+1))|0}();var h=a.MD5=o.extend({_doReset:function(){this._hash=new i.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var n=t+r,i=e[n];e[n]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8)}var o=this._hash.words,a=e[t+0],h=e[t+1],d=e[t+2],p=e[t+3],_=e[t+4],g=e[t+5],v=e[t+6],w=e[t+7],b=e[t+8],y=e[t+9],m=e[t+10],k=e[t+11],E=e[t+12],S=e[t+13],x=e[t+14],R=e[t+15],A=o[0],B=o[1],z=o[2],L=o[3];A=l(A,B,z,L,a,7,s[0]),L=l(L,A,B,z,h,12,s[1]),z=l(z,L,A,B,d,17,s[2]),B=l(B,z,L,A,p,22,s[3]),A=l(A,B,z,L,_,7,s[4]),L=l(L,A,B,z,g,12,s[5]),z=l(z,L,A,B,v,17,s[6]),B=l(B,z,L,A,w,22,s[7]),A=l(A,B,z,L,b,7,s[8]),L=l(L,A,B,z,y,12,s[9]),z=l(z,L,A,B,m,17,s[10]),B=l(B,z,L,A,k,22,s[11]),A=l(A,B,z,L,E,7,s[12]),L=l(L,A,B,z,S,12,s[13]),z=l(z,L,A,B,x,17,s[14]),A=f(A,B=l(B,z,L,A,R,22,s[15]),z,L,h,5,s[16]),L=f(L,A,B,z,v,9,s[17]),z=f(z,L,A,B,k,14,s[18]),B=f(B,z,L,A,a,20,s[19]),A=f(A,B,z,L,g,5,s[20]),L=f(L,A,B,z,m,9,s[21]),z=f(z,L,A,B,R,14,s[22]),B=f(B,z,L,A,_,20,s[23]),A=f(A,B,z,L,y,5,s[24]),L=f(L,A,B,z,x,9,s[25]),z=f(z,L,A,B,p,14,s[26]),B=f(B,z,L,A,b,20,s[27]),A=f(A,B,z,L,S,5,s[28]),L=f(L,A,B,z,d,9,s[29]),z=f(z,L,A,B,w,14,s[30]),A=c(A,B=f(B,z,L,A,E,20,s[31]),z,L,g,4,s[32]),L=c(L,A,B,z,b,11,s[33]),z=c(z,L,A,B,k,16,s[34]),B=c(B,z,L,A,x,23,s[35]),A=c(A,B,z,L,h,4,s[36]),L=c(L,A,B,z,_,11,s[37]),z=c(z,L,A,B,w,16,s[38]),B=c(B,z,L,A,m,23,s[39]),A=c(A,B,z,L,S,4,s[40]),L=c(L,A,B,z,a,11,s[41]),z=c(z,L,A,B,p,16,s[42]),B=c(B,z,L,A,v,23,s[43]),A=c(A,B,z,L,y,4,s[44]),L=c(L,A,B,z,E,11,s[45]),z=c(z,L,A,B,R,16,s[46]),A=u(A,B=c(B,z,L,A,d,23,s[47]),z,L,a,6,s[48]),L=u(L,A,B,z,w,10,s[49]),z=u(z,L,A,B,x,15,s[50]),B=u(B,z,L,A,g,21,s[51]),A=u(A,B,z,L,E,6,s[52]),L=u(L,A,B,z,p,10,s[53]),z=u(z,L,A,B,m,15,s[54]),B=u(B,z,L,A,h,21,s[55]),A=u(A,B,z,L,b,6,s[56]),L=u(L,A,B,z,R,10,s[57]),z=u(z,L,A,B,v,15,s[58]),B=u(B,z,L,A,S,21,s[59]),A=u(A,B,z,L,_,6,s[60]),L=u(L,A,B,z,k,10,s[61]),z=u(z,L,A,B,d,15,s[62]),B=u(B,z,L,A,y,21,s[63]),o[0]=o[0]+A|0,o[1]=o[1]+B|0,o[2]=o[2]+z|0,o[3]=o[3]+L|0},_doFinalize:function(){var t=this._data,r=t.words,n=8*this._nDataBytes,i=8*t.sigBytes;r[i>>>5]|=128<<24-i%32;var o=e.floor(n/4294967296),a=n;r[15+(i+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),r[14+(i+64>>>9<<4)]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),t.sigBytes=4*(r.length+1),this._process();for(var s=this._hash,h=s.words,l=0;l<4;l++){var f=h[l];h[l]=16711935&(f<<8|f>>>24)|4278255360&(f<<24|f>>>8)}return s},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}});function l(e,t,r,n,i,o,a){var s=e+(t&r|~t&n)+i+a;return(s<>>32-o)+t}function f(e,t,r,n,i,o,a){var s=e+(t&n|r&~n)+i+a;return(s<>>32-o)+t}function c(e,t,r,n,i,o,a){var s=e+(t^r^n)+i+a;return(s<>>32-o)+t}function u(e,t,r,n,i,o,a){var s=e+(r^(t|~n))+i+a;return(s<>>32-o)+t}t.MD5=o._createHelper(h),t.HmacMD5=o._createHmacHelper(h)}(Math),r.MD5)}),Q(function(e,t){var r,n,i,o,a,s,h,l;e.exports=(i=(n=r=ee).lib,o=i.WordArray,a=i.Hasher,s=n.algo,h=[],l=s.SHA1=a.extend({_doReset:function(){this._hash=new o.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=this._hash.words,n=r[0],i=r[1],o=r[2],a=r[3],s=r[4],l=0;l<80;l++){if(l<16)h[l]=0|e[t+l];else{var f=h[l-3]^h[l-8]^h[l-14]^h[l-16];h[l]=f<<1|f>>>31}var c=(n<<5|n>>>27)+s+h[l];c+=l<20?1518500249+(i&o|~i&a):l<40?1859775393+(i^o^a):l<60?(i&o|i&a|o&a)-1894007588:(i^o^a)-899497514,s=a,a=o,o=i<<30|i>>>2,i=n,n=c}r[0]=r[0]+n|0,r[1]=r[1]+i|0,r[2]=r[2]+o|0,r[3]=r[3]+a|0,r[4]=r[4]+s|0},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,n=8*e.sigBytes;return t[n>>>5]|=128<<24-n%32,t[14+(n+64>>>9<<4)]=Math.floor(r/4294967296),t[15+(n+64>>>9<<4)]=r,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}}),n.SHA1=a._createHelper(l),n.HmacSHA1=a._createHmacHelper(l),r.SHA1)}),Q(function(e,t){var r;e.exports=(r=ee,function(e){var t=r,n=t.lib,i=n.WordArray,o=n.Hasher,a=t.algo,s=[],h=[];!function(){function t(t){for(var r=e.sqrt(t),n=2;n<=r;n++)if(!(t%n))return!1;return!0}function r(e){return 4294967296*(e-(0|e))|0}for(var n=2,i=0;i<64;)t(n)&&(i<8&&(s[i]=r(e.pow(n,.5))),h[i]=r(e.pow(n,1/3)),i++),n++}();var l=[],f=a.SHA256=o.extend({_doReset:function(){this._hash=new i.init(s.slice(0))},_doProcessBlock:function(e,t){for(var r=this._hash.words,n=r[0],i=r[1],o=r[2],a=r[3],s=r[4],f=r[5],c=r[6],u=r[7],d=0;d<64;d++){if(d<16)l[d]=0|e[t+d];else{var p=l[d-15],_=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,g=l[d-2],v=(g<<15|g>>>17)^(g<<13|g>>>19)^g>>>10;l[d]=_+l[d-7]+v+l[d-16]}var w=n&i^n&o^i&o,b=(n<<30|n>>>2)^(n<<19|n>>>13)^(n<<10|n>>>22),y=u+((s<<26|s>>>6)^(s<<21|s>>>11)^(s<<7|s>>>25))+(s&f^~s&c)+h[d]+l[d];u=c,c=f,f=s,s=a+y|0,a=o,o=i,i=n,n=y+(b+w)|0}r[0]=r[0]+n|0,r[1]=r[1]+i|0,r[2]=r[2]+o|0,r[3]=r[3]+a|0,r[4]=r[4]+s|0,r[5]=r[5]+f|0,r[6]=r[6]+c|0,r[7]=r[7]+u|0},_doFinalize:function(){var t=this._data,r=t.words,n=8*this._nDataBytes,i=8*t.sigBytes;return r[i>>>5]|=128<<24-i%32,r[14+(i+64>>>9<<4)]=e.floor(n/4294967296),r[15+(i+64>>>9<<4)]=n,t.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=o._createHelper(f),t.HmacSHA256=o._createHmacHelper(f)}(Math),r.SHA256)}),Q(function(e,t){var r,n,i,o,a,s;e.exports=(i=(n=r=ee).lib.WordArray,o=n.algo,a=o.SHA256,s=o.SHA224=a.extend({_doReset:function(){this._hash=new i.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=a._doFinalize.call(this);return e.sigBytes-=4,e}}),n.SHA224=a._createHelper(s),n.HmacSHA224=a._createHmacHelper(s),r.SHA224)}),Q(function(e,t){var r;e.exports=(r=ee,function(){var e=r,t=e.lib.Hasher,n=e.x64,i=n.Word,o=n.WordArray,a=e.algo;function s(){return i.create.apply(i,arguments)}var h=[s(1116352408,3609767458),s(1899447441,602891725),s(3049323471,3964484399),s(3921009573,2173295548),s(961987163,4081628472),s(1508970993,3053834265),s(2453635748,2937671579),s(2870763221,3664609560),s(3624381080,2734883394),s(310598401,1164996542),s(607225278,1323610764),s(1426881987,3590304994),s(1925078388,4068182383),s(2162078206,991336113),s(2614888103,633803317),s(3248222580,3479774868),s(3835390401,2666613458),s(4022224774,944711139),s(264347078,2341262773),s(604807628,2007800933),s(770255983,1495990901),s(1249150122,1856431235),s(1555081692,3175218132),s(1996064986,2198950837),s(2554220882,3999719339),s(2821834349,766784016),s(2952996808,2566594879),s(3210313671,3203337956),s(3336571891,1034457026),s(3584528711,2466948901),s(113926993,3758326383),s(338241895,168717936),s(666307205,1188179964),s(773529912,1546045734),s(1294757372,1522805485),s(1396182291,2643833823),s(1695183700,2343527390),s(1986661051,1014477480),s(2177026350,1206759142),s(2456956037,344077627),s(2730485921,1290863460),s(2820302411,3158454273),s(3259730800,3505952657),s(3345764771,106217008),s(3516065817,3606008344),s(3600352804,1432725776),s(4094571909,1467031594),s(275423344,851169720),s(430227734,3100823752),s(506948616,1363258195),s(659060556,3750685593),s(883997877,3785050280),s(958139571,3318307427),s(1322822218,3812723403),s(1537002063,2003034995),s(1747873779,3602036899),s(1955562222,1575990012),s(2024104815,1125592928),s(2227730452,2716904306),s(2361852424,442776044),s(2428436474,593698344),s(2756734187,3733110249),s(3204031479,2999351573),s(3329325298,3815920427),s(3391569614,3928383900),s(3515267271,566280711),s(3940187606,3454069534),s(4118630271,4000239992),s(116418474,1914138554),s(174292421,2731055270),s(289380356,3203993006),s(460393269,320620315),s(685471733,587496836),s(852142971,1086792851),s(1017036298,365543100),s(1126000580,2618297676),s(1288033470,3409855158),s(1501505948,4234509866),s(1607167915,987167468),s(1816402316,1246189591)],l=[];!function(){for(var e=0;e<80;e++)l[e]=s()}();var f=a.SHA512=t.extend({_doReset:function(){this._hash=new o.init([new i.init(1779033703,4089235720),new i.init(3144134277,2227873595),new i.init(1013904242,4271175723),new i.init(2773480762,1595750129),new i.init(1359893119,2917565137),new i.init(2600822924,725511199),new i.init(528734635,4215389547),new i.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var r=this._hash.words,n=r[0],i=r[1],o=r[2],a=r[3],s=r[4],f=r[5],c=r[6],u=r[7],d=n.high,p=n.low,_=i.high,g=i.low,v=o.high,w=o.low,b=a.high,y=a.low,m=s.high,k=s.low,E=f.high,S=f.low,x=c.high,R=c.low,A=u.high,B=u.low,z=d,L=p,T=_,M=g,C=v,D=w,I=b,P=y,O=m,U=k,H=E,F=S,N=x,Z=R,j=A,W=B,Y=0;Y<80;Y++){var K=l[Y];if(Y<16)var X=K.high=0|e[t+2*Y],q=K.low=0|e[t+2*Y+1];else{var V=l[Y-15],G=V.high,$=V.low,J=(G>>>1|$<<31)^(G>>>8|$<<24)^G>>>7,Q=($>>>1|G<<31)^($>>>8|G<<24)^($>>>7|G<<25),ee=l[Y-2],te=ee.high,re=ee.low,ne=(te>>>19|re<<13)^(te<<3|re>>>29)^te>>>6,ie=(re>>>19|te<<13)^(re<<3|te>>>29)^(re>>>6|te<<26),oe=l[Y-7],ae=oe.high,se=oe.low,he=l[Y-16],le=he.high,fe=he.low;X=(X=(X=J+ae+((q=Q+se)>>>0>>0?1:0))+ne+((q+=ie)>>>0>>0?1:0))+le+((q+=fe)>>>0>>0?1:0),K.high=X,K.low=q}var ce,ue=O&H^~O&N,de=U&F^~U&Z,pe=z&T^z&C^T&C,_e=L&M^L&D^M&D,ge=(z>>>28|L<<4)^(z<<30|L>>>2)^(z<<25|L>>>7),ve=(L>>>28|z<<4)^(L<<30|z>>>2)^(L<<25|z>>>7),we=(O>>>14|U<<18)^(O>>>18|U<<14)^(O<<23|U>>>9),be=(U>>>14|O<<18)^(U>>>18|O<<14)^(U<<23|O>>>9),ye=h[Y],me=ye.high,ke=ye.low,Ee=j+we+((ce=W+be)>>>0>>0?1:0),Se=ve+_e;j=N,W=Z,N=H,Z=F,H=O,F=U,O=I+(Ee=(Ee=(Ee=Ee+ue+((ce+=de)>>>0>>0?1:0))+me+((ce+=ke)>>>0>>0?1:0))+X+((ce+=q)>>>0>>0?1:0))+((U=P+ce|0)>>>0>>0?1:0)|0,I=C,P=D,C=T,D=M,T=z,M=L,z=Ee+(ge+pe+(Se>>>0>>0?1:0))+((L=ce+Se|0)>>>0>>0?1:0)|0}p=n.low=p+L,n.high=d+z+(p>>>0>>0?1:0),g=i.low=g+M,i.high=_+T+(g>>>0>>0?1:0),w=o.low=w+D,o.high=v+C+(w>>>0>>0?1:0),y=a.low=y+P,a.high=b+I+(y>>>0>>0?1:0),k=s.low=k+U,s.high=m+O+(k>>>0>>0?1:0),S=f.low=S+F,f.high=E+H+(S>>>0>>0?1:0),R=c.low=R+Z,c.high=x+N+(R>>>0>>0?1:0),B=u.low=B+W,u.high=A+j+(B>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,n=8*e.sigBytes;return t[n>>>5]|=128<<24-n%32,t[30+(n+128>>>10<<5)]=Math.floor(r/4294967296),t[31+(n+128>>>10<<5)]=r,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(f),e.HmacSHA512=t._createHmacHelper(f)}(),r.SHA512)}),Q(function(e,t){var r,n,i,o,a,s,h,l;e.exports=(i=(n=r=ee).x64,o=i.Word,a=i.WordArray,s=n.algo,h=s.SHA512,l=s.SHA384=h.extend({_doReset:function(){this._hash=new a.init([new o.init(3418070365,3238371032),new o.init(1654270250,914150663),new o.init(2438529370,812702999),new o.init(355462360,4144912697),new o.init(1731405415,4290775857),new o.init(2394180231,1750603025),new o.init(3675008525,1694076839),new o.init(1203062813,3204075428)])},_doFinalize:function(){var e=h._doFinalize.call(this);return e.sigBytes-=16,e}}),n.SHA384=h._createHelper(l),n.HmacSHA384=h._createHmacHelper(l),r.SHA384)}),Q(function(e,t){var r;e.exports=(r=ee,function(e){var t=r,n=t.lib,i=n.WordArray,o=n.Hasher,a=t.x64.Word,s=t.algo,h=[],l=[],f=[];!function(){for(var e=1,t=0,r=0;r<24;r++){h[e+5*t]=(r+1)*(r+2)/2%64;var n=(2*e+3*t)%5;e=t%5,t=n}for(e=0;e<5;e++)for(t=0;t<5;t++)l[e+5*t]=t+(2*e+3*t)%5*5;for(var i=1,o=0;o<24;o++){for(var s=0,c=0,u=0;u<7;u++){if(1&i){var d=(1<>>24)|4278255360&(o<<24|o>>>8),a=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),(B=r[i]).high^=a,B.low^=o}for(var s=0;s<24;s++){for(var u=0;u<5;u++){for(var d=0,p=0,_=0;_<5;_++)d^=(B=r[u+5*_]).high,p^=B.low;var g=c[u];g.high=d,g.low=p}for(u=0;u<5;u++){var v=c[(u+4)%5],w=c[(u+1)%5],b=w.high,y=w.low;for(d=v.high^(b<<1|y>>>31),p=v.low^(y<<1|b>>>31),_=0;_<5;_++)(B=r[u+5*_]).high^=d,B.low^=p}for(var m=1;m<25;m++){var k=(B=r[m]).high,E=B.low,S=h[m];S<32?(d=k<>>32-S,p=E<>>32-S):(d=E<>>64-S,p=k<>>64-S);var x=c[l[m]];x.high=d,x.low=p}var R=c[0],A=r[0];for(R.high=A.high,R.low=A.low,u=0;u<5;u++)for(_=0;_<5;_++){var B=r[m=u+5*_],z=c[m],L=c[(u+1)%5+5*_],T=c[(u+2)%5+5*_];B.high=z.high^~L.high&T.high,B.low=z.low^~L.low&T.low}B=r[0];var M=f[s];B.high^=M.high,B.low^=M.low}},_doFinalize:function(){var t=this._data,r=t.words,n=(this._nDataBytes,8*t.sigBytes),o=32*this.blockSize;r[n>>>5]|=1<<24-n%32,r[(e.ceil((n+1)/o)*o>>>5)-1]|=128,t.sigBytes=4*r.length,this._process();for(var a=this._state,s=this.cfg.outputLength/8,h=s/8,l=[],f=0;f>>24)|4278255360&(u<<24|u>>>8),d=16711935&(d<<8|d>>>24)|4278255360&(d<<24|d>>>8),l.push(d),l.push(u)}return new i.init(l,s)},clone:function(){for(var e=o.clone.call(this),t=e._state=this._state.slice(0),r=0;r<25;r++)t[r]=t[r].clone();return e}});t.SHA3=o._createHelper(u),t.HmacSHA3=o._createHmacHelper(u)}(Math),r.SHA3)}),Q(function(e,t){var r;e.exports=(r=ee,function(e){var t=r,n=t.lib,i=n.WordArray,o=n.Hasher,a=t.algo,s=i.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),h=i.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=i.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),f=i.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),c=i.create([0,1518500249,1859775393,2400959708,2840853838]),u=i.create([1352829926,1548603684,1836072691,2053994217,0]),d=a.RIPEMD160=o.extend({_doReset:function(){this._hash=i.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var n=t+r,i=e[n];e[n]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8)}var o,a,d,y,m,k,E,S,x,R,A,B=this._hash.words,z=c.words,L=u.words,T=s.words,M=h.words,C=l.words,D=f.words;for(k=o=B[0],E=a=B[1],S=d=B[2],x=y=B[3],R=m=B[4],r=0;r<80;r+=1)A=o+e[t+T[r]]|0,A+=r<16?p(a,d,y)+z[0]:r<32?_(a,d,y)+z[1]:r<48?g(a,d,y)+z[2]:r<64?v(a,d,y)+z[3]:w(a,d,y)+z[4],A=(A=b(A|=0,C[r]))+m|0,o=m,m=y,y=b(d,10),d=a,a=A,A=k+e[t+M[r]]|0,A+=r<16?w(E,S,x)+L[0]:r<32?v(E,S,x)+L[1]:r<48?g(E,S,x)+L[2]:r<64?_(E,S,x)+L[3]:p(E,S,x)+L[4],A=(A=b(A|=0,D[r]))+R|0,k=R,R=x,x=b(S,10),S=E,E=A;A=B[1]+d+x|0,B[1]=B[2]+y+R|0,B[2]=B[3]+m+k|0,B[3]=B[4]+o+E|0,B[4]=B[0]+a+S|0,B[0]=A},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,n=8*e.sigBytes;t[n>>>5]|=128<<24-n%32,t[14+(n+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),e.sigBytes=4*(t.length+1),this._process();for(var i=this._hash,o=i.words,a=0;a<5;a++){var s=o[a];o[a]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8)}return i},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}});function p(e,t,r){return e^t^r}function _(e,t,r){return e&t|~e&r}function g(e,t,r){return(e|~t)^r}function v(e,t,r){return e&r|t&~r}function w(e,t,r){return e^(t|~r)}function b(e,t){return e<>>32-t}t.RIPEMD160=o._createHelper(d),t.HmacRIPEMD160=o._createHmacHelper(d)}(),r.RIPEMD160)}),Q(function(e,t){var r,n,i,o,a,s;e.exports=(n=(r=ee).lib,i=n.Base,o=r.enc,a=o.Utf8,s=r.algo,void(s.HMAC=i.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=a.parse(t));var r=e.blockSize,n=4*r;t.sigBytes>n&&(t=e.finalize(t)),t.clamp();for(var i=this._oKey=t.clone(),o=this._iKey=t.clone(),s=i.words,h=o.words,l=0;l>>2];e.sigBytes-=t}},o.BlockCipher=d.extend({cfg:d.cfg.extend({mode:g,padding:w}),reset:function(){d.reset.call(this);var e=this.cfg,t=e.iv,r=e.mode;if(this._xformMode==this._ENC_XFORM_MODE)var n=r.createEncryptor;else{var n=r.createDecryptor;this._minBufferSize=1}this._mode&&this._mode.__creator==n?this._mode.init(this,t&&t.words):(this._mode=n.call(r,this,t&&t.words),this._mode.__creator=n)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){e.pad(this._data,this.blockSize);var t=this._process(!0)}else{var t=this._process(!0);e.unpad(t)}return t},blockSize:4}),b=o.CipherParams=a.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),y=i.format={},m=y.OpenSSL={stringify:function(e){var t=e.ciphertext,r=e.salt;if(r)var n=s.create([1398893684,1701076831]).concat(r).concat(t);else var n=t;return n.toString(f)},parse:function(e){var t=f.parse(e),r=t.words;if(1398893684==r[0]&&1701076831==r[1]){var n=s.create(r.slice(2,4));r.splice(0,4),t.sigBytes-=16}return b.create({ciphertext:t,salt:n})}},k=o.SerializableCipher=a.extend({cfg:a.extend({format:m}),encrypt:function(e,t,r,n){n=this.cfg.extend(n);var i=e.createEncryptor(r,n),o=i.finalize(t),a=i.cfg;return b.create({ciphertext:o,key:r,iv:a.iv,algorithm:e,mode:a.mode,padding:a.padding,blockSize:e.blockSize,formatter:n.format})},decrypt:function(e,t,r,n){n=this.cfg.extend(n),t=this._parse(t,n.format);var i=e.createDecryptor(r,n).finalize(t.ciphertext);return i},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),E=i.kdf={},S=E.OpenSSL={execute:function(e,t,r,n){n||(n=s.random(8));var i=u.create({keySize:t+r}).compute(e,n),o=s.create(i.words.slice(t),4*r);return i.sigBytes=4*t,b.create({key:i,iv:o,salt:n})}},x=o.PasswordBasedCipher=k.extend({cfg:k.cfg.extend({kdf:S}),encrypt:function(e,t,r,n){var i=(n=this.cfg.extend(n)).kdf.execute(r,e.keySize,e.ivSize);n.iv=i.iv;var o=k.encrypt.call(this,e,t,i.key,n);return o.mixIn(i),o},decrypt:function(e,t,r,n){n=this.cfg.extend(n),t=this._parse(t,n.format);var i=n.kdf.execute(r,e.keySize,e.ivSize,t.salt);n.iv=i.iv;var o=k.decrypt.call(this,e,t,i.key,n);return o}})))}),Q(function(e,t){var r;e.exports=((r=ee).mode.CFB=function(){var e=r.lib.BlockCipherMode.extend();function t(e,t,r,n){var i=this._iv;if(i){var o=i.slice(0);this._iv=void 0}else o=this._prevBlock;n.encryptBlock(o,0);for(var a=0;a>24&255)){var t=e>>16&255,r=e>>8&255,n=255&e;255===t?(t=0,255===r?(r=0,255===n?n=0:++n):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=n}else e+=1<<24;return e}var n=e.Encryptor=e.extend({processBlock:function(e,r){var n=this._cipher,i=n.blockSize,o=this._iv,a=this._counter;o&&(a=this._counter=o.slice(0),this._iv=void 0),function(e){0===(e[0]=t(e[0]))&&(e[1]=t(e[1]))}(a);var s=a.slice(0);n.encryptBlock(s,0);for(var h=0;h>>2]|=i<<24-o%4*8,e.sigBytes+=i},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Ansix923)}),Q(function(e,t){var r;e.exports=((r=ee).pad.Iso10126={pad:function(e,t){var n=4*t,i=n-e.sigBytes%n;e.concat(r.lib.WordArray.random(i-1)).concat(r.lib.WordArray.create([i<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Iso10126)}),Q(function(e,t){var r;e.exports=((r=ee).pad.Iso97971={pad:function(e,t){e.concat(r.lib.WordArray.create([2147483648],1)),r.pad.ZeroPadding.pad(e,t)},unpad:function(e){r.pad.ZeroPadding.unpad(e),e.sigBytes--}},r.pad.Iso97971)}),Q(function(e,t){var r;e.exports=((r=ee).pad.ZeroPadding={pad:function(e,t){var r=4*t;e.clamp(),e.sigBytes+=r-(e.sigBytes%r||r)},unpad:function(e){for(var t=e.words,r=e.sigBytes-1;!(t[r>>>2]>>>24-r%4*8&255);)r--;e.sigBytes=r+1}},r.pad.ZeroPadding)}),Q(function(e,t){var r;e.exports=((r=ee).pad.NoPadding={pad:function(){},unpad:function(){}},r.pad.NoPadding)}),Q(function(e,t){var r,n,i,o;e.exports=(i=(n=r=ee).lib.CipherParams,o=n.enc.Hex,n.format.Hex={stringify:function(e){return e.ciphertext.toString(o)},parse:function(e){var t=o.parse(e);return i.create({ciphertext:t})}},r.format.Hex)}),Q(function(e,t){var r;e.exports=(r=ee,function(){var e=r,t=e.lib.BlockCipher,n=e.algo,i=[],o=[],a=[],s=[],h=[],l=[],f=[],c=[],u=[],d=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var r=0,n=0;for(t=0;t<256;t++){var p=n^n<<1^n<<2^n<<3^n<<4;p=p>>>8^255&p^99,i[r]=p,o[p]=r;var _=e[r],g=e[_],v=e[g],w=257*e[p]^16843008*p;a[r]=w<<24|w>>>8,s[r]=w<<16|w>>>16,h[r]=w<<8|w>>>24,l[r]=w,w=16843009*v^65537*g^257*_^16843008*r,f[p]=w<<24|w>>>8,c[p]=w<<16|w>>>16,u[p]=w<<8|w>>>24,d[p]=w,r?(r=_^e[e[e[v^_]]],n^=e[e[n]]):r=n=1}}();var p=[0,1,2,4,8,16,32,64,128,27,54],_=n.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,r=e.sigBytes/4,n=4*((this._nRounds=r+6)+1),o=this._keySchedule=[],a=0;a6&&a%r==4&&(s=i[s>>>24]<<24|i[s>>>16&255]<<16|i[s>>>8&255]<<8|i[255&s]):(s=i[(s=s<<8|s>>>24)>>>24]<<24|i[s>>>16&255]<<16|i[s>>>8&255]<<8|i[255&s],s^=p[a/r|0]<<24),o[a]=o[a-r]^s}for(var h=this._invKeySchedule=[],l=0;l>>24]]^c[i[s>>>16&255]]^u[i[s>>>8&255]]^d[i[255&s]]}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,a,s,h,l,i)},decryptBlock:function(e,t){var r=e[t+1];e[t+1]=e[t+3],e[t+3]=r,this._doCryptBlock(e,t,this._invKeySchedule,f,c,u,d,o),r=e[t+1],e[t+1]=e[t+3],e[t+3]=r},_doCryptBlock:function(e,t,r,n,i,o,a,s){for(var h=this._nRounds,l=e[t]^r[0],f=e[t+1]^r[1],c=e[t+2]^r[2],u=e[t+3]^r[3],d=4,p=1;p>>24]^i[f>>>16&255]^o[c>>>8&255]^a[255&u]^r[d++],g=n[f>>>24]^i[c>>>16&255]^o[u>>>8&255]^a[255&l]^r[d++],v=n[c>>>24]^i[u>>>16&255]^o[l>>>8&255]^a[255&f]^r[d++],w=n[u>>>24]^i[l>>>16&255]^o[f>>>8&255]^a[255&c]^r[d++];l=_,f=g,c=v,u=w}_=(s[l>>>24]<<24|s[f>>>16&255]<<16|s[c>>>8&255]<<8|s[255&u])^r[d++],g=(s[f>>>24]<<24|s[c>>>16&255]<<16|s[u>>>8&255]<<8|s[255&l])^r[d++],v=(s[c>>>24]<<24|s[u>>>16&255]<<16|s[l>>>8&255]<<8|s[255&f])^r[d++],w=(s[u>>>24]<<24|s[l>>>16&255]<<16|s[f>>>8&255]<<8|s[255&c])^r[d++],e[t]=_,e[t+1]=g,e[t+2]=v,e[t+3]=w},keySize:8});e.AES=t._createHelper(_)}(),r.AES)}),Q(function(e,t){var r;e.exports=(r=ee,function(){var e=r,t=e.lib,n=t.WordArray,i=t.BlockCipher,o=e.algo,a=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],s=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],h=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],f=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],c=o.DES=i.extend({_doReset:function(){for(var e=this._key.words,t=[],r=0;r<56;r++){var n=a[r]-1;t[r]=e[n>>>5]>>>31-n%32&1}for(var i=this._subKeys=[],o=0;o<16;o++){var l=i[o]=[],f=h[o];for(r=0;r<24;r++)l[r/6|0]|=t[(s[r]-1+f)%28]<<31-r%6,l[4+(r/6|0)]|=t[28+(s[r+24]-1+f)%28]<<31-r%6;for(l[0]=l[0]<<1|l[0]>>>31,r=1;r<7;r++)l[r]=l[r]>>>4*(r-1)+3;l[7]=l[7]<<5|l[7]>>>27}var c=this._invSubKeys=[];for(r=0;r<16;r++)c[r]=i[15-r]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,r){this._lBlock=e[t],this._rBlock=e[t+1],u.call(this,4,252645135),u.call(this,16,65535),d.call(this,2,858993459),d.call(this,8,16711935),u.call(this,1,1431655765);for(var n=0;n<16;n++){for(var i=r[n],o=this._lBlock,a=this._rBlock,s=0,h=0;h<8;h++)s|=l[h][((a^i[h])&f[h])>>>0];this._lBlock=a,this._rBlock=o^s}var c=this._lBlock;this._lBlock=this._rBlock,this._rBlock=c,u.call(this,1,1431655765),d.call(this,8,16711935),d.call(this,2,858993459),u.call(this,16,65535),u.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function u(e,t){var r=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=r,this._lBlock^=r<>>e^this._lBlock)&t;this._lBlock^=r,this._rBlock^=r<>>2]>>>24-a%4*8&255;o=(o+n[i]+s)%256;var h=n[i];n[i]=n[o],n[o]=h}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=o.call(this)},keySize:8,ivSize:0});function o(){for(var e=this._S,t=this._i,r=this._j,n=0,i=0;i<4;i++){r=(r+e[t=(t+1)%256])%256;var o=e[t];e[t]=e[r],e[r]=o,n|=e[(e[t]+e[r])%256]<<24-8*i}return this._i=t,this._j=r,n}e.RC4=t._createHelper(i);var a=n.RC4Drop=i.extend({cfg:i.cfg.extend({drop:192}),_doReset:function(){i._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)o.call(this)}});e.RC4Drop=t._createHelper(a)}(),r.RC4)}),Q(function(e,t){var r;e.exports=(r=ee,function(){var e=r,t=e.lib.StreamCipher,n=e.algo,i=[],o=[],a=[],s=n.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,r=0;r<4;r++)e[r]=16711935&(e[r]<<8|e[r]>>>24)|4278255360&(e[r]<<24|e[r]>>>8);var n=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],i=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,r=0;r<4;r++)h.call(this);for(r=0;r<8;r++)i[r]^=n[r+4&7];if(t){var o=t.words,a=o[0],s=o[1],l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),f=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),c=l>>>16|4294901760&f,u=f<<16|65535&l;for(i[0]^=l,i[1]^=c,i[2]^=f,i[3]^=u,i[4]^=l,i[5]^=c,i[6]^=f,i[7]^=u,r=0;r<4;r++)h.call(this)}},_doProcessBlock:function(e,t){var r=this._X;h.call(this),i[0]=r[0]^r[5]>>>16^r[3]<<16,i[1]=r[2]^r[7]>>>16^r[5]<<16,i[2]=r[4]^r[1]>>>16^r[7]<<16,i[3]=r[6]^r[3]>>>16^r[1]<<16;for(var n=0;n<4;n++)i[n]=16711935&(i[n]<<8|i[n]>>>24)|4278255360&(i[n]<<24|i[n]>>>8),e[t+n]^=i[n]},blockSize:4,ivSize:2});function h(){for(var e=this._X,t=this._C,r=0;r<8;r++)o[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var n=e[r]+t[r],i=65535&n,s=n>>>16,h=((i*i>>>17)+i*s>>>15)+s*s,l=((4294901760&n)*n|0)+((65535&n)*n|0);a[r]=h^l}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.Rabbit=t._createHelper(s)}(),r.Rabbit)}),Q(function(e,t){var r;e.exports=(r=ee,function(){var e=r,t=e.lib.StreamCipher,n=e.algo,i=[],o=[],a=[],s=n.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,r=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],n=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var i=0;i<4;i++)h.call(this);for(i=0;i<8;i++)n[i]^=r[i+4&7];if(t){var o=t.words,a=o[0],s=o[1],l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),f=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),c=l>>>16|4294901760&f,u=f<<16|65535&l;for(n[0]^=l,n[1]^=c,n[2]^=f,n[3]^=u,n[4]^=l,n[5]^=c,n[6]^=f,n[7]^=u,i=0;i<4;i++)h.call(this)}},_doProcessBlock:function(e,t){var r=this._X;h.call(this),i[0]=r[0]^r[5]>>>16^r[3]<<16,i[1]=r[2]^r[7]>>>16^r[5]<<16,i[2]=r[4]^r[1]>>>16^r[7]<<16,i[3]=r[6]^r[3]>>>16^r[1]<<16;for(var n=0;n<4;n++)i[n]=16711935&(i[n]<<8|i[n]>>>24)|4278255360&(i[n]<<24|i[n]>>>8),e[t+n]^=i[n]},blockSize:4,ivSize:2});function h(){for(var e=this._X,t=this._C,r=0;r<8;r++)o[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var n=e[r]+t[r],i=65535&n,s=n>>>16,h=((i*i>>>17)+i*s>>>15)+s*s,l=((4294901760&n)*n|0)+((65535&n)*n|0);a[r]=h^l}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.RabbitLegacy=t._createHelper(s)}(),r.RabbitLegacy)}),Q(function(e,t){e.exports=ee}));function re(){throw new Error("setTimeout has not been defined")}function ne(){throw new Error("clearTimeout has not been defined")}var ie=re,oe=ne;function ae(e){if(ie===setTimeout)return setTimeout(e,0);if((ie===re||!ie)&&setTimeout)return ie=setTimeout,setTimeout(e,0);try{return ie(e,0)}catch(t){try{return ie.call(null,e,0)}catch(t){return ie.call(this,e,0)}}}"function"==typeof e.setTimeout&&(ie=setTimeout),"function"==typeof e.clearTimeout&&(oe=clearTimeout);var se,he=[],le=!1,fe=-1;function ce(){le&&se&&(le=!1,se.length?he=se.concat(he):fe=-1,he.length&&ue())}function ue(){if(!le){var e=ae(ce);le=!0;for(var t=he.length;t;){for(se=he,he=[];++fe1)for(var r=1;r0&&a.length>i){a.warned=!0;var h=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+t+" listeners added. Use emitter.setMaxListeners() to increase limit");h.name="MaxListenersExceededWarning",h.emitter=e,h.type=t,h.count=a.length,s=h,"function"==typeof console.warn?console.warn(s):console.log(s)}}else a=o[t]=r,++e._eventsCount;return e}function xe(e,t,r){var n=!1;function i(){e.removeListener(t,i),n||(n=!0,r.apply(e,arguments))}return i.listener=r,i}function Re(e){var t=this._events;if(t){var r=t[e];if("function"==typeof r)return 1;if(r)return r.length}return 0}function Ae(e,t){for(var r=new Array(t);t--;)r[t]=e[t];return r}ge.prototype=Object.create(null),ve.EventEmitter=ve,ve.usingDomains=!1,ve.prototype.domain=void 0,ve.prototype._events=void 0,ve.prototype._maxListeners=void 0,ve.defaultMaxListeners=10,ve.init=function(){this.domain=null,ve.usingDomains&&(void 0).active&&(void 0).Domain,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new ge,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},ve.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=e,this},ve.prototype.getMaxListeners=function(){return we(this)},ve.prototype.emit=function(e){var t,r,n,i,o,a,s,h="error"===e;if(a=this._events)h=h&&null==a.error;else if(!h)return!1;if(s=this.domain,h){if(t=arguments[1],!s){if(t instanceof Error)throw t;var l=new Error('Uncaught, unspecified "error" event. ('+t+")");throw l.context=t,l}return t||(t=new Error('Uncaught, unspecified "error" event')),t.domainEmitter=this,t.domain=s,t.domainThrown=!1,s.emit("error",t),!1}if(!(r=a[e]))return!1;var f="function"==typeof r;switch(n=arguments.length){case 1:be(r,f,this);break;case 2:ye(r,f,this,arguments[1]);break;case 3:me(r,f,this,arguments[1],arguments[2]);break;case 4:ke(r,f,this,arguments[1],arguments[2],arguments[3]);break;default:for(i=new Array(n-1),o=1;o0;)if(r[o]===t||r[o].listener&&r[o].listener===t){a=r[o].listener,i=o;break}if(i<0)return this;if(1===r.length){if(r[0]=void 0,0==--this._eventsCount)return this._events=new ge,this;delete n[e]}else!function(e,t){for(var r=t,n=r+1,i=e.length;n0?Reflect.ownKeys(this._events):[]};var Be="function"==typeof Object.create?function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:function(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e},ze=/%[sdj%]/g;function Le(e){if(!Ze(e)){for(var t=[],r=0;r=i)return e;switch(e){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(e){return"[Circular]"}default:return e}}),a=n[r];r=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),Fe(t)?r.showHidden=t:t&&function(e,t){if(!t||!Ye(t))return e;var r=Object.keys(t),n=r.length;for(;n--;)e[r[n]]=t[r[n]]}(r,t),je(r.showHidden)&&(r.showHidden=!1),je(r.depth)&&(r.depth=2),je(r.colors)&&(r.colors=!1),je(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=Ie),Oe(r,e,r.depth)}function Ie(e,t){var r=De.styles[t];return r?"["+De.colors[r][0]+"m"+e+"["+De.colors[r][1]+"m":e}function Pe(e,t){return e}function Oe(e,t,r){if(e.customInspect&&t&&qe(t.inspect)&&t.inspect!==De&&(!t.constructor||t.constructor.prototype!==t)){var n=t.inspect(r,e);return Ze(n)||(n=Oe(e,n,r)),n}var i=function(e,t){if(je(t))return e.stylize("undefined","undefined");if(Ze(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}if(n=t,"number"==typeof n)return e.stylize(""+t,"number");var n;if(Fe(t))return e.stylize(""+t,"boolean");if(Ne(t))return e.stylize("null","null")}(e,t);if(i)return i;var o=Object.keys(t),a=function(e){var t={};return e.forEach(function(e,r){t[e]=!0}),t}(o);if(e.showHidden&&(o=Object.getOwnPropertyNames(t)),Xe(t)&&(o.indexOf("message")>=0||o.indexOf("description")>=0))return Ue(t);if(0===o.length){if(qe(t)){var s=t.name?": "+t.name:"";return e.stylize("[Function"+s+"]","special")}if(We(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(Ke(t))return e.stylize(Date.prototype.toString.call(t),"date");if(Xe(t))return Ue(t)}var h,l,f="",c=!1,u=["{","}"];(h=t,Array.isArray(h)&&(c=!0,u=["[","]"]),qe(t))&&(f=" [Function"+(t.name?": "+t.name:"")+"]");return We(t)&&(f=" "+RegExp.prototype.toString.call(t)),Ke(t)&&(f=" "+Date.prototype.toUTCString.call(t)),Xe(t)&&(f=" "+Ue(t)),0!==o.length||c&&0!=t.length?r<0?We(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special"):(e.seen.push(t),l=c?function(e,t,r,n,i){for(var o=[],a=0,s=t.length;a60)return r[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+r[1];return r[0]+t+" "+e.join(", ")+" "+r[1]}(l,f,u)):u[0]+f+u[1]}function Ue(e){return"["+Error.prototype.toString.call(e)+"]"}function He(e,t,r,n,i,o){var a,s,h;if((h=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]}).get?s=h.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):h.set&&(s=e.stylize("[Setter]","special")),Ge(n,i)||(a="["+i+"]"),s||(e.seen.indexOf(h.value)<0?(s=Ne(r)?Oe(e,h.value,null):Oe(e,h.value,r-1)).indexOf("\n")>-1&&(s=o?s.split("\n").map(function(e){return" "+e}).join("\n").substr(2):"\n"+s.split("\n").map(function(e){return" "+e}).join("\n")):s=e.stylize("[Circular]","special")),je(a)){if(o&&i.match(/^\d+$/))return s;(a=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.substr(1,a.length-2),a=e.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),a=e.stylize(a,"string"))}return a+": "+s}function Fe(e){return"boolean"==typeof e}function Ne(e){return null===e}function Ze(e){return"string"==typeof e}function je(e){return void 0===e}function We(e){return Ye(e)&&"[object RegExp]"===Ve(e)}function Ye(e){return"object"==typeof e&&null!==e}function Ke(e){return Ye(e)&&"[object Date]"===Ve(e)}function Xe(e){return Ye(e)&&("[object Error]"===Ve(e)||e instanceof Error)}function qe(e){return"function"==typeof e}function Ve(e){return Object.prototype.toString.call(e)}function Ge(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function $e(){this.head=null,this.tail=null,this.length=0}De.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},De.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},$e.prototype.push=function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length},$e.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},$e.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},$e.prototype.clear=function(){this.head=this.tail=null,this.length=0},$e.prototype.join=function(e){if(0===this.length)return"";for(var t=this.head,r=""+t.data;t=t.next;)r+=e+t.data;return r},$e.prototype.concat=function(e){if(0===this.length)return p.alloc(0);if(1===this.length)return this.head.data;for(var t=p.allocUnsafe(e>>>0),r=this.head,n=0;r;)r.data.copy(t,n),n+=r.data.length,r=r.next;return t};var Je=p.isEncoding||function(e){switch(e&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function Qe(e){switch(this.encoding=(e||"utf8").toLowerCase().replace(/[-_]/,""),function(e){if(e&&!Je(e))throw new Error("Unknown encoding: "+e)}(e),this.encoding){case"utf8":this.surrogateSize=3;break;case"ucs2":case"utf16le":this.surrogateSize=2,this.detectIncompleteChar=tt;break;case"base64":this.surrogateSize=3,this.detectIncompleteChar=rt;break;default:return void(this.write=et)}this.charBuffer=new p(6),this.charReceived=0,this.charLength=0}function et(e){return e.toString(this.encoding)}function tt(e){this.charReceived=e.length%2,this.charLength=this.charReceived?2:0}function rt(e){this.charReceived=e.length%3,this.charLength=this.charReceived?3:0}Qe.prototype.write=function(e){for(var t="";this.charLength;){var r=e.length>=this.charLength-this.charReceived?this.charLength-this.charReceived:e.length;if(e.copy(this.charBuffer,this.charReceived,0,r),this.charReceived+=r,this.charReceived=55296&&i<=56319)){if(this.charReceived=this.charLength=0,0===e.length)return t;break}this.charLength+=this.surrogateSize,t=""}this.detectIncompleteChar(e);var n=e.length;this.charLength&&(e.copy(this.charBuffer,0,e.length-this.charReceived,n),n-=this.charReceived);var i;n=(t+=e.toString(this.encoding,0,n)).length-1;if((i=t.charCodeAt(n))>=55296&&i<=56319){var o=this.surrogateSize;return this.charLength+=o,this.charReceived+=o,this.charBuffer.copy(this.charBuffer,o,0,o),e.copy(this.charBuffer,0,0,o),t.substring(0,n)}return t},Qe.prototype.detectIncompleteChar=function(e){for(var t=e.length>=3?3:e.length;t>0;t--){var r=e[e.length-t];if(1==t&&r>>5==6){this.charLength=2;break}if(t<=2&&r>>4==14){this.charLength=3;break}if(t<=3&&r>>3==30){this.charLength=4;break}}this.charReceived=t},Qe.prototype.end=function(e){var t="";if(e&&e.length&&(t=this.write(e)),this.charReceived){var r=this.charReceived,n=this.charBuffer,i=this.encoding;t+=n.slice(0,r).toString(i)}return t},ot.ReadableState=it;var nt=function(e){je(Me)&&(Me=""),e=e.toUpperCase(),Ce[e]||(new RegExp("\\b"+e+"\\b","i").test(Me)?Ce[e]=function(){var t=Le.apply(null,arguments);console.error("%s %d: %s",e,0,t)}:Ce[e]=function(){});return Ce[e]}("stream");function it(e,t){e=e||{},this.objectMode=!!e.objectMode,t instanceof Ct&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var r=e.highWaterMark,n=this.objectMode?16:16384;this.highWaterMark=r||0===r?r:n,this.highWaterMark=~~this.highWaterMark,this.buffer=new $e,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.ranOut=!1,this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(this.decoder=new Qe(e.encoding),this.encoding=e.encoding)}function ot(e){if(!(this instanceof ot))return new ot(e);this._readableState=new it(e,this),this.readable=!0,e&&"function"==typeof e.read&&(this._read=e.read),ve.call(this)}function at(e,t,r,n,i){var o=function(e,t){var r=null;$(t)||"string"==typeof t||null==t||e.objectMode||(r=new TypeError("Invalid non-string/buffer chunk"));return r}(t,r);if(o)e.emit("error",o);else if(null===r)t.reading=!1,function(e,t){if(t.ended)return;if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,lt(e)}(e,t);else if(t.objectMode||r&&r.length>0)if(t.ended&&!i){var a=new Error("stream.push() after EOF");e.emit("error",a)}else if(t.endEmitted&&i){var s=new Error("stream.unshift() after end event");e.emit("error",s)}else{var h;!t.decoder||i||n||(r=t.decoder.write(r),h=!t.objectMode&&0===r.length),i||(t.reading=!1),h||(t.flowing&&0===t.length&&!t.sync?(e.emit("data",r),e.read(0)):(t.length+=t.objectMode?1:r.length,i?t.buffer.unshift(r):t.buffer.push(r),t.needReadable&<(e))),function(e,t){t.readingMore||(t.readingMore=!0,de(ct,e,t))}(e,t)}else i||(t.reading=!1);return function(e){return!e.ended&&(e.needReadable||e.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=st?e=st:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function lt(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(nt("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?de(ft,e):ft(e))}function ft(e){nt("emit readable"),e.emit("readable"),pt(e)}function ct(e,t){for(var r=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(r=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):r=function(e,t,r){var n;eo.length?o.length:e;if(a===o.length?i+=o:i+=o.slice(0,e),0===(e-=a)){a===o.length?(++n,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=o.slice(a));break}++n}return t.length-=n,i}(e,t):function(e,t){var r=p.allocUnsafe(e),n=t.head,i=1;n.data.copy(r),e-=n.data.length;for(;n=n.next;){var o=n.data,a=e>o.length?o.length:e;if(o.copy(r,r.length-e,0,a),0===(e-=a)){a===o.length?(++i,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=o.slice(a));break}++i}return t.length-=i,r}(e,t);return n}(e,t.buffer,t.decoder),r);var r}function gt(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,de(vt,t,e))}function vt(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function wt(e,t){for(var r=0,n=e.length;r=t.highWaterMark||t.ended))return nt("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?gt(this):lt(this),null;if(0===(e=ht(e,t))&&t.ended)return 0===t.length&>(this),null;var n,i=t.needReadable;return nt("need readable",i),(0===t.length||t.length-e0?_t(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&>(this)),null!==n&&this.emit("data",n),n},ot.prototype._read=function(e){this.emit("error",new Error("not implemented"))},ot.prototype.pipe=function(e,t){var r=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=e;break;case 1:n.pipes=[n.pipes,e];break;default:n.pipes.push(e)}n.pipesCount+=1,nt("pipe count=%d opts=%j",n.pipesCount,t);var i=!t||!1!==t.end?a:l;function o(e){nt("onunpipe"),e===r&&l()}function a(){nt("onend"),e.end()}n.endEmitted?de(i):r.once("end",i),e.on("unpipe",o);var s=function(e){return function(){var t=e._readableState;nt("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&e.listeners("data").length&&(t.flowing=!0,pt(e))}}(r);e.on("drain",s);var h=!1;function l(){nt("cleanup"),e.removeListener("close",d),e.removeListener("finish",p),e.removeListener("drain",s),e.removeListener("error",u),e.removeListener("unpipe",o),r.removeListener("end",a),r.removeListener("end",l),r.removeListener("data",c),h=!0,!n.awaitDrain||e._writableState&&!e._writableState.needDrain||s()}var f=!1;function c(t){nt("ondata"),f=!1,!1!==e.write(t)||f||((1===n.pipesCount&&n.pipes===e||n.pipesCount>1&&-1!==wt(n.pipes,e))&&!h&&(nt("false write response, pause",r._readableState.awaitDrain),r._readableState.awaitDrain++,f=!0),r.pause())}function u(t){var r;nt("onerror",t),_(),e.removeListener("error",u),0===(r="error",e.listeners(r).length)&&e.emit("error",t)}function d(){e.removeListener("finish",p),_()}function p(){nt("onfinish"),e.removeListener("close",d),_()}function _(){nt("unpipe"),r.unpipe(e)}return r.on("data",c),function(e,t,r){if("function"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?Array.isArray(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(e,"error",u),e.once("close",d),e.once("finish",p),e.emit("pipe",r),n.flowing||(nt("pipe resume"),r.resume()),e},ot.prototype.unpipe=function(e){var t=this._readableState;if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this),this);if(!e){var r=t.pipes,n=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var i=0;i-1))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this},kt.prototype._write=function(e,t,r){r(new Error("not implemented"))},kt.prototype._writev=null,kt.prototype.end=function(e,t,r){var n=this._writableState;"function"==typeof e?(r=e,e=null,t=null):"function"==typeof t&&(r=t,t=null),null!=e&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),n.ending||n.finished||function(e,t,r){t.ending=!0,Bt(e,t),r&&(t.finished?de(r):e.once("finish",r));t.ended=!0,e.writable=!1}(this,n,r)},Be(Ct,ot);for(var Lt=Object.keys(kt.prototype),Tt=0;Tt=0;)e[t]=0}var Jt=0,Qt=1,er=2,tr=29,rr=256,nr=rr+1+tr,ir=30,or=19,ar=2*nr+1,sr=15,hr=16,lr=7,fr=256,cr=16,ur=17,dr=18,pr=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],_r=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],gr=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],vr=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],wr=new Array(2*(nr+2));$t(wr);var br=new Array(2*ir);$t(br);var yr=new Array(512);$t(yr);var mr=new Array(256);$t(mr);var kr=new Array(tr);$t(kr);var Er,Sr,xr,Rr=new Array(ir);function Ar(e,t,r,n,i){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=e&&e.length}function Br(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function zr(e){return e<256?yr[e]:yr[256+(e>>>7)]}function Lr(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function Tr(e,t,r){e.bi_valid>hr-r?(e.bi_buf|=t<>hr-e.bi_valid,e.bi_valid+=r-hr):(e.bi_buf|=t<>>=1,r<<=1}while(--t>0);return r>>>1}function Dr(e,t,r){var n,i,o=new Array(sr+1),a=0;for(n=1;n<=sr;n++)o[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var s=e[2*i+1];0!==s&&(e[2*i]=Cr(o[s]++,s))}}function Ir(e){var t;for(t=0;t8?Lr(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function Or(e,t,r,n){var i=2*t,o=2*r;return e[i]>1;r>=1;r--)Ur(e,o,r);i=h;do{r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],Ur(e,o,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,o[2*i]=o[2*r]+o[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,o[2*r+1]=o[2*n+1]=i,e.heap[1]=i++,Ur(e,o,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,o,a,s,h=t.dyn_tree,l=t.max_code,f=t.stat_desc.static_tree,c=t.stat_desc.has_stree,u=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,_=0;for(o=0;o<=sr;o++)e.bl_count[o]=0;for(h[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;rp&&(o=p,_++),h[2*n+1]=o,n>l||(e.bl_count[o]++,a=0,n>=d&&(a=u[n-d]),s=h[2*n],e.opt_len+=s*(o+a),c&&(e.static_len+=s*(f[2*n+1]+a)));if(0!==_){do{for(o=p-1;0===e.bl_count[o];)o--;e.bl_count[o]--,e.bl_count[o+1]+=2,e.bl_count[p]--,_-=2}while(_>0);for(o=p;0!==o;o--)for(n=e.bl_count[o];0!==n;)(i=e.heap[--r])>l||(h[2*i+1]!==o&&(e.opt_len+=(o-h[2*i+1])*h[2*i],h[2*i+1]=o),n--)}}(e,t),Dr(o,l,e.bl_count)}function Nr(e,t,r){var n,i,o=-1,a=t[1],s=0,h=7,l=4;for(0===a&&(h=138,l=3),t[2*(r+1)+1]=65535,n=0;n<=r;n++)i=a,a=t[2*(n+1)+1],++s>=7;n=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}function Xr(e,t,r,n){var i,o,a=0;e.level>0?(e.strm.data_type===Gt&&(e.strm.data_type=function(e){var t,r=4093624447;for(t=0;t<=31;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return qt;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return Vt;for(t=32;t=3&&0===e.bl_tree[2*vr[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),i=e.opt_len+3+7>>>3,(o=e.static_len+3+7>>>3)<=i&&(i=o)):i=o=r+5,r+4<=i&&-1!==t?Yr(e,t,r,n):e.strategy===Xt||o===i?(Tr(e,(Qt<<1)+(n?1:0),3),Hr(e,wr,br)):(Tr(e,(er<<1)+(n?1:0),3),function(e,t,r,n){var i;for(Tr(e,t-257,5),Tr(e,r-1,5),Tr(e,n-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(mr[r]+rr+1)]++,e.dyn_dtree[2*zr(t)]++),e.last_lit===e.lit_bufsize-1}function Vr(e,t,r,n){for(var i=65535&e|0,o=e>>>16&65535|0,a=0;0!==r;){r-=a=r>2e3?2e3:r;do{o=o+(i=i+t[n++]|0)|0}while(--a);i%=65521,o%=65521}return i|o<<16|0}var Gr=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();function $r(e,t,r,n){var i=Gr,o=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}var Jr,Qr=0,en=1,tn=3,rn=4,nn=5,on=0,an=1,sn=-2,hn=-3,ln=-5,fn=-1,cn=1,un=2,dn=3,pn=4,_n=2,gn=8,vn=9,wn=286,bn=30,yn=19,mn=2*wn+1,kn=15,En=3,Sn=258,xn=Sn+En+1,Rn=32,An=42,Bn=69,zn=73,Ln=91,Tn=103,Mn=113,Cn=666,Dn=1,In=2,Pn=3,On=4,Un=3;function Hn(e,t){return e.msg=Nt[t],t}function Fn(e){return(e<<1)-(e>4?9:0)}function Nn(e){for(var t=e.length;--t>=0;)e[t]=0}function Zn(e){var t=e.state,r=t.pending;r>e.avail_out&&(r=e.avail_out),0!==r&&(jt(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function jn(e,t){Xr(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,Zn(e.strm)}function Wn(e,t){e.pending_buf[e.pending++]=t}function Yn(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function Kn(e,t){var r,n,i=e.max_chain_length,o=e.strstart,a=e.prev_length,s=e.nice_match,h=e.strstart>e.w_size-xn?e.strstart-(e.w_size-xn):0,l=e.window,f=e.w_mask,c=e.prev,u=e.strstart+Sn,d=l[o+a-1],p=l[o+a];e.prev_length>=e.good_match&&(i>>=2),s>e.lookahead&&(s=e.lookahead);do{if(l[(r=t)+a]===p&&l[r+a-1]===d&&l[r]===l[o]&&l[++r]===l[o+1]){o+=2,r++;do{}while(l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&oa){if(e.match_start=t,a=n,n>=s)break;d=l[o+a-1],p=l[o+a]}}}while((t=c[t&f])>h&&0!=--i);return a<=e.lookahead?a:e.lookahead}function Xn(e){var t,r,n,i,o,a,s,h,l,f,c=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=c+(c-xn)){jt(e.window,e.window,c,c,0),e.match_start-=c,e.strstart-=c,e.block_start-=c,t=r=e.hash_size;do{n=e.head[--t],e.head[t]=n>=c?n-c:0}while(--r);t=r=c;do{n=e.prev[--t],e.prev[t]=n>=c?n-c:0}while(--r);i+=c}if(0===e.strm.avail_in)break;if(a=e.strm,s=e.window,h=e.strstart+e.lookahead,l=i,f=void 0,(f=a.avail_in)>l&&(f=l),r=0===f?0:(a.avail_in-=f,jt(s,a.input,a.next_in,f,h),1===a.state.wrap?a.adler=Vr(a.adler,s,f,h):2===a.state.wrap&&(a.adler=$r(a.adler,s,f,h)),a.next_in+=f,a.total_in+=f,f),e.lookahead+=r,e.lookahead+e.insert>=En)for(o=e.strstart-e.insert,e.ins_h=e.window[o],e.ins_h=(e.ins_h<=En&&(e.ins_h=(e.ins_h<=En)if(n=qr(e,e.strstart-e.match_start,e.match_length-En),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=En){e.match_length--;do{e.strstart++,e.ins_h=(e.ins_h<=En&&(e.ins_h=(e.ins_h<4096)&&(e.match_length=En-1)),e.prev_length>=En&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-En,n=qr(e,e.strstart-1-e.prev_match,e.prev_length-En),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=i&&(e.ins_h=(e.ins_h<nn||t<0)return e?Hn(e,sn):sn;if(n=e.state,!e.output||!e.input&&0!==e.avail_in||n.status===Cn&&t!==rn)return Hn(e,0===e.avail_out?ln:sn);if(n.strm=e,r=n.last_flush,n.last_flush=t,n.status===An)if(2===n.wrap)e.adler=0,Wn(n,31),Wn(n,139),Wn(n,8),n.gzhead?(Wn(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),Wn(n,255&n.gzhead.time),Wn(n,n.gzhead.time>>8&255),Wn(n,n.gzhead.time>>16&255),Wn(n,n.gzhead.time>>24&255),Wn(n,9===n.level?2:n.strategy>=un||n.level<2?4:0),Wn(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(Wn(n,255&n.gzhead.extra.length),Wn(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=$r(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=Bn):(Wn(n,0),Wn(n,0),Wn(n,0),Wn(n,0),Wn(n,0),Wn(n,9===n.level?2:n.strategy>=un||n.level<2?4:0),Wn(n,Un),n.status=Mn);else{var a=gn+(n.w_bits-8<<4)<<8;a|=(n.strategy>=un||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=Rn),a+=31-a%31,n.status=Mn,Yn(n,a),0!==n.strstart&&(Yn(n,e.adler>>>16),Yn(n,65535&e.adler)),e.adler=1}if(n.status===Bn)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=$r(e.adler,n.pending_buf,n.pending-i,i)),Zn(e),i=n.pending,n.pending!==n.pending_buf_size));)Wn(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=$r(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=zn)}else n.status=zn;if(n.status===zn)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=$r(e.adler,n.pending_buf,n.pending-i,i)),Zn(e),i=n.pending,n.pending===n.pending_buf_size)){o=1;break}o=n.gzindexi&&(e.adler=$r(e.adler,n.pending_buf,n.pending-i,i)),0===o&&(n.gzindex=0,n.status=Ln)}else n.status=Ln;if(n.status===Ln)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=$r(e.adler,n.pending_buf,n.pending-i,i)),Zn(e),i=n.pending,n.pending===n.pending_buf_size)){o=1;break}o=n.gzindexi&&(e.adler=$r(e.adler,n.pending_buf,n.pending-i,i)),0===o&&(n.status=Tn)}else n.status=Tn;if(n.status===Tn&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&Zn(e),n.pending+2<=n.pending_buf_size&&(Wn(n,255&e.adler),Wn(n,e.adler>>8&255),e.adler=0,n.status=Mn)):n.status=Mn),0!==n.pending){if(Zn(e),0===e.avail_out)return n.last_flush=-1,on}else if(0===e.avail_in&&Fn(t)<=Fn(r)&&t!==rn)return Hn(e,ln);if(n.status===Cn&&0!==e.avail_in)return Hn(e,ln);if(0!==e.avail_in||0!==n.lookahead||t!==Qr&&n.status!==Cn){var s=n.strategy===un?function(e,t){for(var r;;){if(0===e.lookahead&&(Xn(e),0===e.lookahead)){if(t===Qr)return Dn;break}if(e.match_length=0,r=qr(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(jn(e,!1),0===e.strm.avail_out))return Dn}return e.insert=0,t===rn?(jn(e,!0),0===e.strm.avail_out?Pn:On):e.last_lit&&(jn(e,!1),0===e.strm.avail_out)?Dn:In}(n,t):n.strategy===dn?function(e,t){for(var r,n,i,o,a=e.window;;){if(e.lookahead<=Sn){if(Xn(e),e.lookahead<=Sn&&t===Qr)return Dn;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=En&&e.strstart>0&&(n=a[i=e.strstart-1])===a[++i]&&n===a[++i]&&n===a[++i]){o=e.strstart+Sn;do{}while(n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&ie.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=En?(r=qr(e,1,e.match_length-En),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=qr(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(jn(e,!1),0===e.strm.avail_out))return Dn}return e.insert=0,t===rn?(jn(e,!0),0===e.strm.avail_out?Pn:On):e.last_lit&&(jn(e,!1),0===e.strm.avail_out)?Dn:In}(n,t):Jr[n.level].func(n,t);if(s!==Pn&&s!==On||(n.status=Cn),s===Dn||s===Pn)return 0===e.avail_out&&(n.last_flush=-1),on;if(s===In&&(t===en?Kr(n):t!==nn&&(Yr(n,0,0,!1),t===tn&&(Nn(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),Zn(e),0===e.avail_out))return n.last_flush=-1,on}return t!==rn?on:n.wrap<=0?an:(2===n.wrap?(Wn(n,255&e.adler),Wn(n,e.adler>>8&255),Wn(n,e.adler>>16&255),Wn(n,e.adler>>24&255),Wn(n,255&e.total_in),Wn(n,e.total_in>>8&255),Wn(n,e.total_in>>16&255),Wn(n,e.total_in>>24&255)):(Yn(n,e.adler>>>16),Yn(n,65535&e.adler)),Zn(e),n.wrap>0&&(n.wrap=-n.wrap),0!==n.pending?on:an)}Jr=[new Gn(0,0,0,0,function(e,t){var r=65535;for(r>e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(Xn(e),0===e.lookahead&&t===Qr)return Dn;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,jn(e,!1),0===e.strm.avail_out))return Dn;if(e.strstart-e.block_start>=e.w_size-xn&&(jn(e,!1),0===e.strm.avail_out))return Dn}return e.insert=0,t===rn?(jn(e,!0),0===e.strm.avail_out?Pn:On):(e.strstart>e.block_start&&(jn(e,!1),e.strm.avail_out),Dn)}),new Gn(4,4,8,4,qn),new Gn(4,5,16,8,qn),new Gn(4,6,32,32,qn),new Gn(4,4,16,16,Vn),new Gn(8,16,32,32,Vn),new Gn(8,16,128,128,Vn),new Gn(8,32,128,256,Vn),new Gn(32,128,258,1024,Vn),new Gn(32,258,258,4096,Vn)];var ei=30,ti=12;function ri(e,t){var r,n,i,o,a,s,h,l,f,c,u,d,p,_,g,v,w,b,y,m,k,E,S,x,R;r=e.state,n=e.next_in,x=e.input,i=n+(e.avail_in-5),o=e.next_out,R=e.output,a=o-(t-e.avail_out),s=o+(e.avail_out-257),h=r.dmax,l=r.wsize,f=r.whave,c=r.wnext,u=r.window,d=r.hold,p=r.bits,_=r.lencode,g=r.distcode,v=(1<>>=y=b>>>24,p-=y,0===(y=b>>>16&255))R[o++]=65535&b;else{if(!(16&y)){if(0==(64&y)){b=_[(65535&b)+(d&(1<>>=y,p-=y),p<15&&(d+=x[n++]<>>=y=b>>>24,p-=y,!(16&(y=b>>>16&255))){if(0==(64&y)){b=g[(65535&b)+(d&(1<h){e.msg="invalid distance too far back",r.mode=ei;break e}if(d>>>=y,p-=y,k>(y=o-a)){if((y=k-y)>f&&r.sane){e.msg="invalid distance too far back",r.mode=ei;break e}if(E=0,S=u,0===c){if(E+=l-y,y2;)R[o++]=S[E++],R[o++]=S[E++],R[o++]=S[E++],m-=3;m&&(R[o++]=S[E++],m>1&&(R[o++]=S[E++]))}else{E=o-k;do{R[o++]=R[E++],R[o++]=R[E++],R[o++]=R[E++],m-=3}while(m>2);m&&(R[o++]=R[E++],m>1&&(R[o++]=R[E++]))}break}}break}}while(n>3,d&=(1<<(p-=m<<3))-1,e.next_in=n,e.next_out=o,e.avail_in=n=1&&0===L[m];m--);if(k>m&&(k=m),0===m)return i[o++]=20971520,i[o++]=20971520,s.bits=1,0;for(y=1;y0&&(e===ai||1!==m))return-1;for(T[1]=0,w=1;wii||e===hi&&R>oi)return 1;for(;;){p=w-S,a[b]d?(_=M[C+a[b]],g=B[z+a[b]]):(_=96,g=0),h=1<>S)+(l-=h)]=p<<24|_<<16|g|0}while(0!==l);for(h=1<>=1;if(0!==h?(A&=h-1,A+=h):A=0,b++,0==--L[w]){if(w===m)break;w=t[r+a[b]]}if(w>k&&(A&c)!==f){for(0===S&&(S=k),u+=y,x=1<<(E=w-S);E+Sii||e===hi&&R>oi)return 1;i[f=A&c]=k<<24|E<<16|u-o|0}}return 0!==A&&(i[u+A]=w-S<<24|64<<16|0),s.bits=k,0}var pi=0,_i=1,gi=2,vi=4,wi=5,bi=6,yi=0,mi=1,ki=2,Ei=-2,Si=-3,xi=-4,Ri=-5,Ai=8,Bi=1,zi=2,Li=3,Ti=4,Mi=5,Ci=6,Di=7,Ii=8,Pi=9,Oi=10,Ui=11,Hi=12,Fi=13,Ni=14,Zi=15,ji=16,Wi=17,Yi=18,Ki=19,Xi=20,qi=21,Vi=22,Gi=23,$i=24,Ji=25,Qi=26,eo=27,to=28,ro=29,no=30,io=31,oo=32,ao=852,so=592;function ho(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function lo(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Yt(320),this.work=new Yt(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function fo(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,function(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=Bi,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Kt(ao),t.distcode=t.distdyn=new Kt(so),t.sane=1,t.back=-1,yi):Ei}(e)):Ei}function co(e,t){var r,n;return e?(n=new lo,e.state=n,n.window=null,(r=function(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?Ei:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,fo(e))):Ei}(e,t))!==yi&&(e.state=null),r):Ei}var uo,po,_o=!0;function go(e){if(_o){var t;for(uo=new Kt(512),po=new Kt(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(di(_i,e.lens,0,288,uo,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;di(gi,e.lens,0,32,po,0,e.work,{bits:5}),_o=!1}e.lencode=uo,e.lenbits=9,e.distcode=po,e.distbits=5}function vo(e,t){var r,n,i,o,a,s,h,l,f,c,u,d,p,_,g,v,w,b,y,m,k,E,S,x,R=0,A=new Wt(4),B=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&0!==e.avail_in)return Ei;(r=e.state).mode===Hi&&(r.mode=Fi),a=e.next_out,i=e.output,h=e.avail_out,o=e.next_in,n=e.input,s=e.avail_in,l=r.hold,f=r.bits,c=s,u=h,E=yi;e:for(;;)switch(r.mode){case Bi:if(0===r.wrap){r.mode=Fi;break}for(;f<16;){if(0===s)break e;s--,l+=n[o++]<>>8&255,r.check=$r(r.check,A,2,0),l=0,f=0,r.mode=zi;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&l)<<8)+(l>>8))%31){e.msg="incorrect header check",r.mode=no;break}if((15&l)!==Ai){e.msg="unknown compression method",r.mode=no;break}if(f-=4,k=8+(15&(l>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg="invalid window size",r.mode=no;break}r.dmax=1<>8&1),512&r.flags&&(A[0]=255&l,A[1]=l>>>8&255,r.check=$r(r.check,A,2,0)),l=0,f=0,r.mode=Li;case Li:for(;f<32;){if(0===s)break e;s--,l+=n[o++]<>>8&255,A[2]=l>>>16&255,A[3]=l>>>24&255,r.check=$r(r.check,A,4,0)),l=0,f=0,r.mode=Ti;case Ti:for(;f<16;){if(0===s)break e;s--,l+=n[o++]<>8),512&r.flags&&(A[0]=255&l,A[1]=l>>>8&255,r.check=$r(r.check,A,2,0)),l=0,f=0,r.mode=Mi;case Mi:if(1024&r.flags){for(;f<16;){if(0===s)break e;s--,l+=n[o++]<>>8&255,r.check=$r(r.check,A,2,0)),l=0,f=0}else r.head&&(r.head.extra=null);r.mode=Ci;case Ci:if(1024&r.flags&&((d=r.length)>s&&(d=s),d&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),jt(r.head.extra,n,o,d,k)),512&r.flags&&(r.check=$r(r.check,n,d,o)),s-=d,o+=d,r.length-=d),r.length))break e;r.length=0,r.mode=Di;case Di:if(2048&r.flags){if(0===s)break e;d=0;do{k=n[o+d++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k))}while(k&&d>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=Hi;break;case Oi:for(;f<32;){if(0===s)break e;s--,l+=n[o++]<>>=7&f,f-=7&f,r.mode=eo;break}for(;f<3;){if(0===s)break e;s--,l+=n[o++]<>>=1)){case 0:r.mode=Ni;break;case 1:if(go(r),r.mode=Xi,t===bi){l>>>=2,f-=2;break e}break;case 2:r.mode=Wi;break;case 3:e.msg="invalid block type",r.mode=no}l>>>=2,f-=2;break;case Ni:for(l>>>=7&f,f-=7&f;f<32;){if(0===s)break e;s--,l+=n[o++]<>>16^65535)){e.msg="invalid stored block lengths",r.mode=no;break}if(r.length=65535&l,l=0,f=0,r.mode=Zi,t===bi)break e;case Zi:r.mode=ji;case ji:if(d=r.length){if(d>s&&(d=s),d>h&&(d=h),0===d)break e;jt(i,n,o,d,a),s-=d,o+=d,h-=d,a+=d,r.length-=d;break}r.mode=Hi;break;case Wi:for(;f<14;){if(0===s)break e;s--,l+=n[o++]<>>=5,f-=5,r.ndist=1+(31&l),l>>>=5,f-=5,r.ncode=4+(15&l),l>>>=4,f-=4,r.nlen>286||r.ndist>30){e.msg="too many length or distance symbols",r.mode=no;break}r.have=0,r.mode=Yi;case Yi:for(;r.have>>=3,f-=3}for(;r.have<19;)r.lens[B[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},E=di(pi,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,E){e.msg="invalid code lengths set",r.mode=no;break}r.have=0,r.mode=Ki;case Ki:for(;r.have>>16&255,w=65535&R,!((g=R>>>24)<=f);){if(0===s)break e;s--,l+=n[o++]<>>=g,f-=g,r.lens[r.have++]=w;else{if(16===w){for(x=g+2;f>>=g,f-=g,0===r.have){e.msg="invalid bit length repeat",r.mode=no;break}k=r.lens[r.have-1],d=3+(3&l),l>>>=2,f-=2}else if(17===w){for(x=g+3;f>>=g)),l>>>=3,f-=3}else{for(x=g+7;f>>=g)),l>>>=7,f-=7}if(r.have+d>r.nlen+r.ndist){e.msg="invalid bit length repeat",r.mode=no;break}for(;d--;)r.lens[r.have++]=k}}if(r.mode===no)break;if(0===r.lens[256]){e.msg="invalid code -- missing end-of-block",r.mode=no;break}if(r.lenbits=9,S={bits:r.lenbits},E=di(_i,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,E){e.msg="invalid literal/lengths set",r.mode=no;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},E=di(gi,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,E){e.msg="invalid distances set",r.mode=no;break}if(r.mode=Xi,t===bi)break e;case Xi:r.mode=qi;case qi:if(s>=6&&h>=258){e.next_out=a,e.avail_out=h,e.next_in=o,e.avail_in=s,r.hold=l,r.bits=f,ri(e,u),a=e.next_out,i=e.output,h=e.avail_out,o=e.next_in,n=e.input,s=e.avail_in,l=r.hold,f=r.bits,r.mode===Hi&&(r.back=-1);break}for(r.back=0;v=(R=r.lencode[l&(1<>>16&255,w=65535&R,!((g=R>>>24)<=f);){if(0===s)break e;s--,l+=n[o++]<>b)])>>>16&255,w=65535&R,!(b+(g=R>>>24)<=f);){if(0===s)break e;s--,l+=n[o++]<>>=b,f-=b,r.back+=b}if(l>>>=g,f-=g,r.back+=g,r.length=w,0===v){r.mode=Qi;break}if(32&v){r.back=-1,r.mode=Hi;break}if(64&v){e.msg="invalid literal/length code",r.mode=no;break}r.extra=15&v,r.mode=Vi;case Vi:if(r.extra){for(x=r.extra;f>>=r.extra,f-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=Gi;case Gi:for(;v=(R=r.distcode[l&(1<>>16&255,w=65535&R,!((g=R>>>24)<=f);){if(0===s)break e;s--,l+=n[o++]<>b)])>>>16&255,w=65535&R,!(b+(g=R>>>24)<=f);){if(0===s)break e;s--,l+=n[o++]<>>=b,f-=b,r.back+=b}if(l>>>=g,f-=g,r.back+=g,64&v){e.msg="invalid distance code",r.mode=no;break}r.offset=w,r.extra=15&v,r.mode=$i;case $i:if(r.extra){for(x=r.extra;f>>=r.extra,f-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg="invalid distance too far back",r.mode=no;break}r.mode=Ji;case Ji:if(0===h)break e;if(d=u-h,r.offset>d){if((d=r.offset-d)>r.whave&&r.sane){e.msg="invalid distance too far back",r.mode=no;break}d>r.wnext?(d-=r.wnext,p=r.wsize-d):p=r.wnext-d,d>r.length&&(d=r.length),_=r.window}else _=i,p=a-r.offset,d=r.length;d>h&&(d=h),h-=d,r.length-=d;do{i[a++]=_[p++]}while(--d);0===r.length&&(r.mode=qi);break;case Qi:if(0===h)break e;i[a++]=r.length,h--,r.mode=qi;break;case eo:if(r.wrap){for(;f<32;){if(0===s)break e;s--,l|=n[o++]<=o.wsize?(jt(o.window,t,r-o.wsize,o.wsize,0),o.wnext=0,o.whave=o.wsize):((i=o.wsize-o.wnext)>n&&(i=n),jt(o.window,t,r-n,i,o.wnext),(n-=i)?(jt(o.window,t,r-n,n,0),o.wnext=n,o.whave=o.wsize):(o.wnext+=i,o.wnext===o.wsize&&(o.wnext=0),o.whaveyo)throw new TypeError("Bad argument");this.mode=e,this.init_done=!1,this.write_in_progress=!1,this.pending_close=!1,this.windowBits=0,this.level=0,this.memLevel=0,this.strategy=0,this.dictionary=null}function ko(e,t){for(var r=0;r15&&(a=2,n-=16),i<1||i>vn||r!==gn||n<8||n>15||t<0||t>9||o<0||o>pn)return Hn(e,sn);8===n&&(n=9);var s=new $n;return e.state=s,s.strm=e,s.wrap=a,s.gzhead=null,s.w_bits=n,s.w_size=1<So.Z_MAX_CHUNK))throw new Error("Invalid chunk size: "+e.chunkSize);if(e.windowBits&&(e.windowBitsSo.Z_MAX_WINDOWBITS))throw new Error("Invalid windowBits: "+e.windowBits);if(e.level&&(e.levelSo.Z_MAX_LEVEL))throw new Error("Invalid compression level: "+e.level);if(e.memLevel&&(e.memLevelSo.Z_MAX_MEMLEVEL))throw new Error("Invalid memLevel: "+e.memLevel);if(e.strategy&&e.strategy!=So.Z_FILTERED&&e.strategy!=So.Z_HUFFMAN_ONLY&&e.strategy!=So.Z_RLE&&e.strategy!=So.Z_FIXED&&e.strategy!=So.Z_DEFAULT_STRATEGY)throw new Error("Invalid strategy: "+e.strategy);if(e.dictionary&&!$(e.dictionary))throw new Error("Invalid dictionary: it should be a Buffer instance");this._binding=new So.Zlib(t);var r=this;this._hadError=!1,this._binding.onerror=function(e,t){r._binding=null,r._hadError=!0;var n=new Error(e);n.errno=t,n.code=So.codes[t],r.emit("error",n)};var n=So.Z_DEFAULT_COMPRESSION;"number"==typeof e.level&&(n=e.level);var i=So.Z_DEFAULT_STRATEGY;"number"==typeof e.strategy&&(i=e.strategy),this._binding.init(e.windowBits||So.Z_DEFAULT_WINDOWBITS,n,e.memLevel||So.Z_DEFAULT_MEMLEVEL,i,e.dictionary),this._buffer=new p(this._chunkSize),this._offset=0,this._closed=!1,this._level=n,this._strategy=i,this.once("end",this.close)}Object.keys(xo).forEach(function(e){xo[xo[e]]=e}),Be(Io,Ot),Io.prototype.params=function(e,t,r){if(eSo.Z_MAX_LEVEL)throw new RangeError("Invalid compression level: "+e);if(t!=So.Z_FILTERED&&t!=So.Z_HUFFMAN_ONLY&&t!=So.Z_RLE&&t!=So.Z_FIXED&&t!=So.Z_DEFAULT_STRATEGY)throw new TypeError("Invalid strategy: "+t);if(this._level!==e||this._strategy!==t){var n=this;this.flush(So.Z_SYNC_FLUSH,function(){n._binding.params(e,t),n._hadError||(n._level=e,n._strategy=t,r&&r())})}else de(r)},Io.prototype.reset=function(){return this._binding.reset()},Io.prototype._flush=function(e){this._transform(new p(0),"",e)},Io.prototype.flush=function(e,t){var r=this._writableState;if(("function"==typeof e||void 0===e&&!t)&&(t=e,e=So.Z_FULL_FLUSH),r.ended)t&&de(t);else if(r.ending)t&&this.once("end",t);else if(r.needDrain){var n=this;this.once("drain",function(){n.flush(t)})}else this._flushFlag=e,this.write(new p(0),"",t)},Io.prototype.close=function(e){if(e&&de(e),!this._closed){this._closed=!0,this._binding.close();var t=this;de(function(){t.emit("close")})}},Io.prototype._transform=function(e,t,r){var n,i=this._writableState,o=(i.ending||i.ended)&&(!e||i.length===e.length);if(null===!e&&!$(e))return r(new Error("invalid input"));o?n=So.Z_FINISH:(n=this._flushFlag,e.length>=i.length&&(this._flushFlag=this._opts.flush||So.Z_NO_FLUSH)),this._processChunk(e,n,r)},Io.prototype._processChunk=function(e,t,r){var n=e&&e.length,i=this._chunkSize-this._offset,o=0,a=this,s="function"==typeof r;if(!s){var h,l=[],f=0;this.on("error",function(e){h=e});do{var c=this._binding.writeSync(t,e,o,n,this._buffer,this._offset,i)}while(!this._hadError&&_(c[0],c[1]));if(this._hadError)throw h;var u=p.concat(l,f);return this.close(),u}var d=this._binding.write(t,e,o,n,this._buffer,this._offset,i);function _(h,c){if(!a._hadError){var u=i-c;if(function(e,t){if(!e)throw new Error(t)}(u>=0,"have should not go down"),u>0){var d=a._buffer.slice(a._offset,a._offset+u);a._offset+=u,s?a.push(d):(l.push(d),f+=d.length)}if((0===c||a._offset>=a._chunkSize)&&(i=a._chunkSize,a._offset=0,a._buffer=new p(a._chunkSize)),0===c){if(o+=n-h,n=h,!s)return!0;var g=a._binding.write(t,e,o,n,a._buffer,a._offset,a._chunkSize);return g.callback=_,void(g.buffer=e)}if(!s)return!1;r()}}d.buffer=e,d.callback=_},Be(Bo,Io),Be(zo,Io),Be(Lo,Io),Be(To,Io),Be(Mo,Io),Be(Co,Io),Be(Do,Io);var Po={codes:xo,createDeflate:function(e){return new Bo(e)},createInflate:function(e){return new zo(e)},createDeflateRaw:function(e){return new Mo(e)},createInflateRaw:function(e){return new Co(e)},createGzip:function(e){return new Lo(e)},createGunzip:function(e){return new To(e)},createUnzip:function(e){return new Do(e)},deflate:function(e,t,r){return"function"==typeof t&&(r=t,t={}),Ro(new Bo(t),e,r)},deflateSync:function(e,t){return Ao(new Bo(t),e)},gzip:function(e,t,r){return"function"==typeof t&&(r=t,t={}),Ro(new Lo(t),e,r)},gzipSync:function(e,t){return Ao(new Lo(t),e)},deflateRaw:function(e,t,r){return"function"==typeof t&&(r=t,t={}),Ro(new Mo(t),e,r)},deflateRawSync:function(e,t){return Ao(new Mo(t),e)},unzip:function(e,t,r){return"function"==typeof t&&(r=t,t={}),Ro(new Do(t),e,r)},unzipSync:function(e,t){return Ao(new Do(t),e)},inflate:function(e,t,r){return"function"==typeof t&&(r=t,t={}),Ro(new zo(t),e,r)},inflateSync:function(e,t){return Ao(new zo(t),e)},gunzip:function(e,t,r){return"function"==typeof t&&(r=t,t={}),Ro(new To(t),e,r)},gunzipSync:function(e,t){return Ao(new To(t),e)},inflateRaw:function(e,t,r){return"function"==typeof t&&(r=t,t={}),Ro(new Co(t),e,r)},inflateRawSync:function(e,t){return Ao(new Co(t),e)},Deflate:Bo,Inflate:zo,Gzip:Lo,Gunzip:To,DeflateRaw:Mo,InflateRaw:Co,Unzip:Do,Zlib:Io};export default class{constructor(e,t,r){this.SDKAPPID=e,this.EXPIRETIME=r,this.PRIVATEKEY=t}genTestUserSig(e){return this._isNumber(this.SDKAPPID)?this._isString(this.PRIVATEKEY)?this._isString(e)?this._isNumber(this.EXPIRETIME)?(console.log("sdkAppID="+this.SDKAPPID+" key="+this.PRIVATEKEY+" userID="+e+" expire="+this.EXPIRETIME),this.genSigWithUserbuf(e,this.EXPIRETIME,null)):(console.error("expireTime must be a number"),""):(console.error("userID must be a string"),""):(console.error("privateKey must be a string"),""):(console.error("sdkAppID must be a number"),"")}newBuffer(e,t){return p.from?p.from(e,t):new p(e,t)}unescape(e){return e.replace(/_/g,"=").replace(/\-/g,"/").replace(/\*/g,"+")}escape(e){return e.replace(/\+/g,"*").replace(/\//g,"-").replace(/=/g,"_")}encode(e){return this.escape(this.newBuffer(e).toString("base64"))}decode(e){return this.newBuffer(this.unescape(e),"base64")}base64encode(e){return this.newBuffer(e).toString("base64")}base64decode(e){return this.newBuffer(e,"base64").toString()}_hmacsha256(e,t,r,n){let i="TLS.identifier:"+e+"\n";i+="TLS.sdkappid:"+this.SDKAPPID+"\n",i+="TLS.time:"+t+"\n",i+="TLS.expire:"+r+"\n",null!=n&&(i+="TLS.userbuf:"+n+"\n");let o=te.HmacSHA256(i,this.PRIVATEKEY);return te.enc.Base64.stringify(o)}_utc(){return Math.round(Date.now()/1e3)}_isNumber(e){return null!==e&&("number"==typeof e&&!isNaN(e-0)||"object"==typeof e&&e.constructor===Number)}_isString(e){return"string"==typeof e}genSigWithUserbuf(e,t,r){let n=this._utc(),i={"TLS.ver":"2.0","TLS.identifier":e,"TLS.sdkappid":this.SDKAPPID,"TLS.time":n,"TLS.expire":t},o="";if(null!=r){let a=this.base64encode(r);i["TLS.userbuf"]=a,o=this._hmacsha256(e,n,t,a)}else o=this._hmacsha256(e,n,t,null);i["TLS.sig"]=o;let a=JSON.stringify(i),s=Po.deflateSync(this.newBuffer(a)).toString("base64"),h=this.escape(s);return console.log("ret="+h),h}validate(e){let t=this.decode(e),r=Po.inflateSync(t);console.log("validate ret="+r)}}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/package.json b/iweb/src/TUIKit/TUIComponents/components/call/package.json
new file mode 100644
index 0000000..f048c5c
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/package.json
@@ -0,0 +1,38 @@
+{
+ "name": "@tencentcloud/call-uikit-vue",
+ "version": "2.5.2",
+ "main": "./tuicall-uikit-vue.umd.js",
+ "module": "./tuicall-uikit-vue.es.js",
+ "types": "./types/index.d.ts",
+ "description": "An Open-source Voice & Video Calling UI Component Based on Tencent Cloud Service.",
+ "homepage": "https://cloud.tencent.com/document/product/647/78731",
+ "license": "ISC",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/tencentyun/TUICallKit.git",
+ "directory": "Web"
+ },
+ "dependencies": {
+ "tuicall-engine-webrtc": "^1.6.1"
+ },
+ "bugs": {
+ "url": "https://github.com/tencentyun/TUICallKit/issues"
+ },
+ "keywords": [
+ "uikit",
+ "call",
+ "vue3",
+ "tencent",
+ "chat",
+ "vue",
+ "vue2",
+ "video",
+ "audio",
+ "voice",
+ "callkit",
+ "语音",
+ "视频",
+ "电话",
+ "通话"
+ ]
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/TUICallKit.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/TUICallKit.vue
new file mode 100644
index 0000000..0ae8b46
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/TUICallKit.vue
@@ -0,0 +1,241 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/common/close.svg b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/common/close.svg
new file mode 100644
index 0000000..5c67ec7
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/common/close.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/common/loading-audio.svg b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/common/loading-audio.svg
new file mode 100644
index 0000000..4ff0379
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/common/loading-audio.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/common/loading-video.png b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/common/loading-video.png
new file mode 100644
index 0000000..bfe6f40
Binary files /dev/null and b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/common/loading-video.png differ
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/acceptAudio.svg b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/acceptAudio.svg
new file mode 100644
index 0000000..dd67ba8
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/acceptAudio.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/acceptVideo.svg b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/acceptVideo.svg
new file mode 100644
index 0000000..f67bdf4
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/acceptVideo.svg
@@ -0,0 +1,8 @@
+
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/arrow.png b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/arrow.png
new file mode 100644
index 0000000..dc3f338
Binary files /dev/null and b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/arrow.png differ
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/camera-false.svg b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/camera-false.svg
new file mode 100644
index 0000000..f6168c6
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/camera-false.svg
@@ -0,0 +1,5 @@
+
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/camera.svg b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/camera.svg
new file mode 100644
index 0000000..a9fa17f
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/camera.svg
@@ -0,0 +1,6 @@
+
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/floatCallEnd.svg b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/floatCallEnd.svg
new file mode 100644
index 0000000..14f89c5
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/floatCallEnd.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/floatFullScreen.svg b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/floatFullScreen.svg
new file mode 100644
index 0000000..097d42a
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/floatFullScreen.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/floatMicrophone.svg b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/floatMicrophone.svg
new file mode 100644
index 0000000..06e2c71
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/floatMicrophone.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/floatMicrophoneClosed.svg b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/floatMicrophoneClosed.svg
new file mode 100644
index 0000000..aaeb8cb
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/floatMicrophoneClosed.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/fullScreen.svg b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/fullScreen.svg
new file mode 100644
index 0000000..150b132
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/fullScreen.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/hangup.svg b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/hangup.svg
new file mode 100644
index 0000000..9e95383
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/hangup.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/invite_user.svg b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/invite_user.svg
new file mode 100644
index 0000000..0e1d361
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/invite_user.svg
@@ -0,0 +1,5 @@
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/microphone-false.svg b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/microphone-false.svg
new file mode 100644
index 0000000..7917ba3
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/microphone-false.svg
@@ -0,0 +1,8 @@
+
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/microphone.svg b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/microphone.svg
new file mode 100644
index 0000000..b2a6f81
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/microphone.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/minimize.svg b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/minimize.svg
new file mode 100644
index 0000000..a493c44
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/minimize.svg
@@ -0,0 +1,6 @@
+
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/permission/index.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/permission/index.ts
new file mode 100644
index 0000000..90b7e63
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/permission/index.ts
@@ -0,0 +1,6 @@
+import MacPermitZhPng from './win/permit-zh.png';
+import MacPermitEnPng from './win/permit-en.png';
+import WinPermitZhPng from './win/permit-zh.png';
+import WinPermitEnPng from './win/permit-en.png';
+
+export { MacPermitZhPng, MacPermitEnPng, WinPermitZhPng, WinPermitEnPng };
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/permission/mac/permit-en.jpg b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/permission/mac/permit-en.jpg
new file mode 100644
index 0000000..86b034c
Binary files /dev/null and b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/permission/mac/permit-en.jpg differ
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/permission/mac/permit-zh.jpg b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/permission/mac/permit-zh.jpg
new file mode 100644
index 0000000..bc5edd1
Binary files /dev/null and b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/permission/mac/permit-zh.jpg differ
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/permission/win/permit-en.png b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/permission/win/permit-en.png
new file mode 100644
index 0000000..e03f8f6
Binary files /dev/null and b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/permission/win/permit-en.png differ
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/permission/win/permit-zh.png b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/permission/win/permit-zh.png
new file mode 100644
index 0000000..c243f8d
Binary files /dev/null and b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/permission/win/permit-zh.png differ
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/switchScreen.svg b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/switchScreen.svg
new file mode 100644
index 0000000..aadcb77
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/switchScreen.svg
@@ -0,0 +1,5 @@
+
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/trans.svg b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/trans.svg
new file mode 100644
index 0000000..e640662
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/desktop/trans.svg
@@ -0,0 +1,6 @@
+
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/accept.png b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/accept.png
new file mode 100644
index 0000000..46ae325
Binary files /dev/null and b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/accept.png differ
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/audio-false.png b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/audio-false.png
new file mode 100644
index 0000000..15f5cf3
Binary files /dev/null and b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/audio-false.png differ
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/audio-true.png b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/audio-true.png
new file mode 100644
index 0000000..4da99cc
Binary files /dev/null and b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/audio-true.png differ
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/camera-false.png b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/camera-false.png
new file mode 100644
index 0000000..4977786
Binary files /dev/null and b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/camera-false.png differ
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/camera-true.png b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/camera-true.png
new file mode 100644
index 0000000..7abf242
Binary files /dev/null and b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/camera-true.png differ
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/default_avatar.png b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/default_avatar.png
new file mode 100644
index 0000000..0e2222d
Binary files /dev/null and b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/default_avatar.png differ
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/hangup.png b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/hangup.png
new file mode 100644
index 0000000..2bf0adc
Binary files /dev/null and b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/hangup.png differ
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/invite_user.svg b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/invite_user.svg
new file mode 100644
index 0000000..b708896
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/invite_user.svg
@@ -0,0 +1,5 @@
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/loading.png b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/loading.png
new file mode 100644
index 0000000..bfe6f40
Binary files /dev/null and b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/loading.png differ
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/phone.svg b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/phone.svg
new file mode 100644
index 0000000..99d2bfd
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/phone.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/phone_dialing.mp3 b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/phone_dialing.mp3
new file mode 100644
index 0000000..f392528
Binary files /dev/null and b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/phone_dialing.mp3 differ
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/phone_ringing.mp3 b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/phone_ringing.mp3
new file mode 100644
index 0000000..c3838f3
Binary files /dev/null and b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/phone_ringing.mp3 differ
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/speaker-false.png b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/speaker-false.png
new file mode 100644
index 0000000..1e0c391
Binary files /dev/null and b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/speaker-false.png differ
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/speaker-true.png b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/speaker-true.png
new file mode 100644
index 0000000..e26d5b9
Binary files /dev/null and b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/speaker-true.png differ
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/switch_camera.png b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/switch_camera.png
new file mode 100644
index 0000000..ecf21f0
Binary files /dev/null and b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/switch_camera.png differ
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/swtich-camera.png b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/swtich-camera.png
new file mode 100644
index 0000000..2076527
Binary files /dev/null and b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/swtich-camera.png differ
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/trans.png b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/trans.png
new file mode 100644
index 0000000..7a3cfb5
Binary files /dev/null and b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/trans.png differ
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/zoom_out.svg b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/zoom_out.svg
new file mode 100644
index 0000000..af08452
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/zoom_out.svg
@@ -0,0 +1,4 @@
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/zoom_out_audio.svg b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/zoom_out_audio.svg
new file mode 100644
index 0000000..6b70213
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/zoom_out_audio.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/zoom_out_video.svg b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/zoom_out_video.svg
new file mode 100644
index 0000000..af08452
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/assets/mobile/zoom_out_video.svg
@@ -0,0 +1,4 @@
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/GroupCall/BtnOperate/BtnOperate.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/GroupCall/BtnOperate/BtnOperate.vue
new file mode 100644
index 0000000..3742eb3
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/GroupCall/BtnOperate/BtnOperate.vue
@@ -0,0 +1,121 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/GroupCall/BtnOperate/style/desktop.scss b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/GroupCall/BtnOperate/style/desktop.scss
new file mode 100644
index 0000000..1de3965
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/GroupCall/BtnOperate/style/desktop.scss
@@ -0,0 +1,60 @@
+//桌面端
+.control-wrapper-desktop {
+ transform: translate(-50%);
+ position: absolute;
+ bottom: 0;
+ padding-bottom: 40px;
+ left: 50%;
+ width: 100%;
+ color: white;
+ border-radius: inherit;
+ background: linear-gradient(
+ 180deg,
+ rgba(0, 0, 0, 0) 0%,
+ rgba(0, 0, 0, 0.4) 100%
+ );
+ display: flex;
+ flex-direction: column;
+ flex-wrap: wrap;
+ align-items: center;
+ user-select: none;
+
+ .panel-button-area {
+ display: flex;
+ flex-direction: row;
+ //flex-wrap: wrap;
+ justify-content: space-evenly;
+ margin: 30px 0;
+ min-width: 40%;
+
+ .btn-operate-desktop {
+ .call-operate {
+ display: flex;
+ flex-direction: column;
+ width: 40px;
+ height: 40px;
+ margin: 0 40px;
+ cursor: pointer;
+ }
+
+ img {
+ width: 100%;
+ display: flex;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+ position: relative;
+ }
+
+ span {
+ display: block;
+ margin-top: 5px;
+ white-space: nowrap;
+ font-weight: 400;
+ font-size: 14px;
+ line-height: 20px;
+ text-align: center;
+ }
+ }
+ }
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/GroupCall/BtnOperate/style/index.scss b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/GroupCall/BtnOperate/style/index.scss
new file mode 100644
index 0000000..7c83747
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/GroupCall/BtnOperate/style/index.scss
@@ -0,0 +1,2 @@
+@import './desktop.scss';
+@import './mobile.scss';
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/GroupCall/BtnOperate/style/mobile.scss b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/GroupCall/BtnOperate/style/mobile.scss
new file mode 100644
index 0000000..9672b27
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/GroupCall/BtnOperate/style/mobile.scss
@@ -0,0 +1,46 @@
+.control-wrapper-mobile {
+ position: absolute;
+ bottom: 20px;
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+
+ .btn-operate {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ position: relative;
+ font-size: 16px;
+ letter-spacing: 0;
+ font-weight: 400;
+ margin-bottom: 10px;
+
+ .btn {
+ margin: 0 5vw;
+ }
+ .mobile-invite{
+ margin-right: 30px;
+ }
+ .mobile-reject{
+ margin: 0px 16vw 20px 16vw;
+ }
+
+ .mobile-accept{
+ margin: 0px 16vw 20px 16vw;
+ }
+
+ .mobile-switchAudioCall{
+ font-size: 14px;
+ }
+ }
+}
+
+.black{
+ color: black;
+}
+
+.white{
+ color: white;
+}
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/GroupCall/GroupCall.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/GroupCall/GroupCall.vue
new file mode 100644
index 0000000..d11173f
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/GroupCall/GroupCall.vue
@@ -0,0 +1,133 @@
+
+
+
+
+
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/GroupCall/InviteInfo/InviteInfo.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/GroupCall/InviteInfo/InviteInfo.vue
new file mode 100644
index 0000000..acf7b71
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/GroupCall/InviteInfo/InviteInfo.vue
@@ -0,0 +1,127 @@
+
+
+
+
+
+
+
+
+
+
+
+
{{ callerUserInfo.displayUserInfo }}
+
+
{{ callAlertMessage }}
+
+
+
+
+
+
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/GroupCall/InviteInfo/mobile/InviteCallee.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/GroupCall/InviteInfo/mobile/InviteCallee.vue
new file mode 100644
index 0000000..76e4837
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/GroupCall/InviteInfo/mobile/InviteCallee.vue
@@ -0,0 +1,125 @@
+
+
+
![]()
+
{{ callerUserInfo.displayUserInfo }}
+
{{ t('Invited group call') }}
+
{{ t('Those involved') }}
+
+
+
![]()
+
{{ item.displayUserInfo }}
+
+
+
+
+
+
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/GroupCall/PusherPlayer/PusherPlayer.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/GroupCall/PusherPlayer/PusherPlayer.vue
new file mode 100644
index 0000000..dc657ed
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/GroupCall/PusherPlayer/PusherPlayer.vue
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/GroupCall/PusherPlayer/deskTop/RemoteStreamList.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/GroupCall/PusherPlayer/deskTop/RemoteStreamList.vue
new file mode 100644
index 0000000..ee915af
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/GroupCall/PusherPlayer/deskTop/RemoteStreamList.vue
@@ -0,0 +1,512 @@
+
+
+
+
+
+
{{ localUserInfo.displayUserInfo }}
+
+
+
+
+
+
+ {{ localUserInfo.displayUserInfo }}{{ t('me') }}
+
+
+
+
+
+
![]()
+
+
+
{{ remoteUserItem.displayUserInfo }}
+
+
+
+
+
+
+
+ {{ remoteUserItem.displayUserInfo }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/GroupCall/PusherPlayer/mobile/RemoteStreamList.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/GroupCall/PusherPlayer/mobile/RemoteStreamList.vue
new file mode 100644
index 0000000..a823a3a
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/GroupCall/PusherPlayer/mobile/RemoteStreamList.vue
@@ -0,0 +1,164 @@
+
+
+
+
+
+
+
![]()
+
+
+
+
+
+
+ {{ item.domId === 'localVideo' ? t('me') : item.displayUserInfo }}
+
+
+
+ {{ item.nick || item.userId }}
+
+
+
+
+
+
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/GroupCall/PusherPlayer/wechat/RemoteStreamList.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/GroupCall/PusherPlayer/wechat/RemoteStreamList.vue
new file mode 100644
index 0000000..99df613
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/GroupCall/PusherPlayer/wechat/RemoteStreamList.vue
@@ -0,0 +1,320 @@
+
+
+
+
+
+
+
![]()
+
![]()
+
{{ item.displayUserInfo }}
+
+
+
+
+
{{ item.nick || item.userId }}
+
+
+
+
{{ item.displayUserInfo }}
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/BtnOperate/BtnOperate.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/BtnOperate/BtnOperate.vue
new file mode 100644
index 0000000..deeda19
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/BtnOperate/BtnOperate.vue
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/BtnOperate/style/desktop.scss b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/BtnOperate/style/desktop.scss
new file mode 100644
index 0000000..89f0154
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/BtnOperate/style/desktop.scss
@@ -0,0 +1,64 @@
+//桌面端
+.control-wrapper-desktop {
+ transform: translate(-50%);
+ position: absolute;
+ bottom: 0;
+ padding-bottom: 40px;
+ left: 50%;
+ width: 100%;
+ color: white;
+ border-radius: inherit;
+ background: linear-gradient(
+ 180deg,
+ rgba(0, 0, 0, 0) 0%,
+ rgba(0, 0, 0, 0.4) 100%
+ );
+ display: flex;
+ flex-direction: column;
+ flex-wrap: wrap;
+ align-items: center;
+ user-select: none;
+
+ .panel-button-area {
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+ justify-content: space-evenly;
+ margin: 30px 0;
+ min-width: 40%;
+
+ .btn {
+ margin: 0 35px;
+ }
+
+ .btn-operate-desktop {
+ .call-operate {
+ display: flex;
+ flex-direction: column;
+ width: 40px;
+ height: 40px;
+ margin: 0 40px;
+ cursor: pointer;
+ }
+
+ img {
+ width: 100%;
+ display: flex;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+ position: relative;
+ }
+
+ span {
+ display: block;
+ margin-top: 5px;
+ white-space: nowrap;
+ font-weight: 400;
+ font-size: 14px;
+ line-height: 20px;
+ text-align: center;
+ }
+ }
+ }
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/BtnOperate/style/index.scss b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/BtnOperate/style/index.scss
new file mode 100644
index 0000000..7c83747
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/BtnOperate/style/index.scss
@@ -0,0 +1,2 @@
+@import './desktop.scss';
+@import './mobile.scss';
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/BtnOperate/style/mobile.scss b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/BtnOperate/style/mobile.scss
new file mode 100644
index 0000000..13f1937
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/BtnOperate/style/mobile.scss
@@ -0,0 +1,50 @@
+.control-wrapper-mobile {
+ position: absolute;
+ bottom: 20px;
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+
+ .btn-operate {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ position: relative;
+ font-size: 16px;
+ letter-spacing: 0;
+ font-weight: 400;
+ margin-bottom: 6px;
+
+ .mobile-reject{
+ margin: 0px 16vw 40px 16vw;
+ }
+
+ .mobile-accept{
+ margin: 0px 16vw 40px 16vw;
+ }
+
+ .mobile-switchAudioCall{
+ font-size: 14px;
+ }
+
+ .mobile-switchcamera {
+ position: absolute;
+ left: 80px;
+ top: 10px;
+ }
+
+ .btn {
+ margin: 0 5vw;
+ }
+ }
+}
+
+.black{
+ color: black;
+}
+
+.white{
+ color: white;
+}
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/InviteInfo/InviteInfo.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/InviteInfo/InviteInfo.vue
new file mode 100644
index 0000000..795206d
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/InviteInfo/InviteInfo.vue
@@ -0,0 +1,165 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/InviteInfo/mobile/SingleAudio.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/InviteInfo/mobile/SingleAudio.vue
new file mode 100644
index 0000000..c667df3
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/InviteInfo/mobile/SingleAudio.vue
@@ -0,0 +1,74 @@
+
+
+
![]()
+
{{ remoteUsersList[0].displayUserInfo }}
+
{{ callAlertMessage }}
+
+
+
+
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/InviteInfo/mobile/SingleVideo.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/InviteInfo/mobile/SingleVideo.vue
new file mode 100644
index 0000000..1c466aa
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/InviteInfo/mobile/SingleVideo.vue
@@ -0,0 +1,67 @@
+
+
+
+
{{ remoteUsersList[0].displayUserInfo }}
+
{{ callAlertMessage }}
+
+
![]()
+
+
+
+
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/InviteInfo/style/desktop.sass b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/InviteInfo/style/desktop.sass
new file mode 100644
index 0000000..e69de29
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/InviteInfo/style/mobile.sass b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/InviteInfo/style/mobile.sass
new file mode 100644
index 0000000..e69de29
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/PusherPlayer/PusherPlayer.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/PusherPlayer/PusherPlayer.vue
new file mode 100644
index 0000000..d877892
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/PusherPlayer/PusherPlayer.vue
@@ -0,0 +1,255 @@
+
+
+
+
+
+
+
+
+
{{ callStatus !== CallStatus.CONNECTED ? t('waiting') : callDuration }}
+
+
+
+
+
+
+
+
+
+
+ {{`${localUserInfo.displayUserInfo} ${t('me')}` }}
+
+
+
+
+
+
+
+
+
+ {{ remoteList[0].displayUserInfo }}
+
+
+
+
+
+
![]()
+
+
+
+
+
+
+
+
+
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/PusherPlayer/WeChatStream.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/PusherPlayer/WeChatStream.vue
new file mode 100644
index 0000000..249360a
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/PusherPlayer/WeChatStream.vue
@@ -0,0 +1,103 @@
+
+
+
+
+
+
+
+
{{callStatus !== CallStatus.CONNECTED ? t('waiting') :callDuration}}
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/PusherPlayer/wechat/Player.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/PusherPlayer/wechat/Player.vue
new file mode 100644
index 0000000..dd6f422
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/PusherPlayer/wechat/Player.vue
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/PusherPlayer/wechat/Pusher.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/PusherPlayer/wechat/Pusher.vue
new file mode 100644
index 0000000..1720772
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/PusherPlayer/wechat/Pusher.vue
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/PusherPlayer/wechat/style/index.scss b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/PusherPlayer/wechat/style/index.scss
new file mode 100644
index 0000000..e6c55b1
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/PusherPlayer/wechat/style/index.scss
@@ -0,0 +1,36 @@
+.small-view {
+ position: fixed;
+ top: 8%;
+ right: 10%;
+ width: 40%;
+ height: 30%;
+ z-index: 999;
+ background-color: black;
+
+ .stream-box {
+ width: 100%;
+ height: 100%;
+
+ .stream {
+ width: 100%;
+ height: 100%;
+ }
+ }
+}
+
+.large-view {
+ width: 100%;
+ height: 100%;
+ background-color: black;
+
+ .stream-box {
+ width: 100%;
+ height: 100%;
+
+ .stream {
+ z-index: 1;
+ width: 100%;
+ height: 100%;
+ }
+ }
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/SingleCall.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/SingleCall.vue
new file mode 100644
index 0000000..a9bd905
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/SingleCall/SingleCall.vue
@@ -0,0 +1,214 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/Accept.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/Accept.vue
new file mode 100644
index 0000000..d0385ac
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/Accept.vue
@@ -0,0 +1,32 @@
+
+
+
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/Btn/IconBtn.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/Btn/IconBtn.vue
new file mode 100644
index 0000000..d23de26
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/Btn/IconBtn.vue
@@ -0,0 +1,123 @@
+
+
+
+
![]()
+
![]()
+
+
+
+ {{ text }}
+
+
+
+
+
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/Btn/hooks/useListenerEvent.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/Btn/hooks/useListenerEvent.ts
new file mode 100644
index 0000000..e28c5c0
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/Btn/hooks/useListenerEvent.ts
@@ -0,0 +1,36 @@
+
+/**
+* @function 给目标元素添加事件监听
+* @description 给目标元素添加事件监听
+* @param {HTMLElement} 需要监听的元素,,为空默认window.document
+* @param {String} 事件名
+* @param {Function} 回调函数
+* @param {Object} 监听事件的选项,同addEventListener的options参数
+* @return {void} 返回停止监听的函数
+* @example
+* useListenEvent(btnEl, 'click', () => { console.log('click btn');});
+*/
+export function useListenEvent(event: string, handler: Function, options: object): () => any;
+export function useListenEvent(target: HTMLElement, event: string, handler: Function, options: object): () => any;
+export function useListenEvent(...args: any[]) {
+ let target = window?.document;
+ let event = '';
+ let handler = () => {};
+ let options = {};
+
+ if (typeof args[0] === 'string') {
+ [event, handler, options] = args;
+ } else {
+ [target, event, handler, options] = args;
+ }
+
+ if (!target) {
+ return;
+ }
+
+ target?.addEventListener(event, handler, options);
+
+ return () => {
+ target?.removeEventListener(event, handler, options);
+ };
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/Btn/hooks/useOnClickOutSide.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/Btn/hooks/useOnClickOutSide.ts
new file mode 100644
index 0000000..444867a
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/Btn/hooks/useOnClickOutSide.ts
@@ -0,0 +1,27 @@
+import { onMounted, onUnmounted, unref } from '../../../../../../adapter-vue';
+import { useListenEvent } from './useListenerEvent';
+
+export function useOnClickOutSide(targetEls: any[], handler: () => any) {
+ let stop = () => {};
+
+ onMounted(() => {
+ const listener = (event: Event) => {
+ const targets = targetEls.map(targetEl => unref(targetEl));
+ const paths = event.composedPath();
+ const rs = [];
+
+ for (let i = 0; i < targets.length; i++) {
+ rs[i] = paths.includes(targets[i]);
+ }
+
+ if (rs.every(item => !item)) {
+ handler();
+ }
+ };
+ stop = useListenEvent('click', listener, { passive: true });
+ });
+
+ onUnmounted(() => {
+ stop?.();
+ });
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/Camera.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/Camera.vue
new file mode 100644
index 0000000..cc67a2f
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/Camera.vue
@@ -0,0 +1,155 @@
+
+
+
+
+
+
![]()
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/Hangup.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/Hangup.vue
new file mode 100644
index 0000000..725f48b
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/Hangup.vue
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/InviteUser.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/InviteUser.vue
new file mode 100644
index 0000000..50c23e1
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/InviteUser.vue
@@ -0,0 +1,26 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/Microphone.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/Microphone.vue
new file mode 100644
index 0000000..1344817
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/Microphone.vue
@@ -0,0 +1,154 @@
+
+
+
+
+
![]()
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/Reject.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/Reject.vue
new file mode 100644
index 0000000..0d586de
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/Reject.vue
@@ -0,0 +1,27 @@
+
+
+
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/Speaker.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/Speaker.vue
new file mode 100644
index 0000000..b7fd14c
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/Speaker.vue
@@ -0,0 +1,37 @@
+
+
+
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/SwitchAudioCall.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/SwitchAudioCall.vue
new file mode 100644
index 0000000..630f3eb
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/SwitchAudioCall.vue
@@ -0,0 +1,93 @@
+
+
+
+
![]()
+
+
+
+
+
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/SwitchCamera.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/SwitchCamera.vue
new file mode 100644
index 0000000..7e4312b
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/SwitchCamera.vue
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/Timer.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/Timer.vue
new file mode 100644
index 0000000..4018f30
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/Timer.vue
@@ -0,0 +1,19 @@
+
+ {{ callDuration }}
+
+
+
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/ToggleSize.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/ToggleSize.vue
new file mode 100644
index 0000000..3ff563c
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/ToggleSize.vue
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/ZoomOut.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/ZoomOut.vue
new file mode 100644
index 0000000..f8508d0
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/ZoomOut.vue
@@ -0,0 +1,59 @@
+
+
+
![]()
+
+
+
+
+
+
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/style/desktop.scss b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/style/desktop.scss
new file mode 100644
index 0000000..1eb9a47
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/style/desktop.scss
@@ -0,0 +1,49 @@
+.btn-operate-desktop {
+ .call-operate {
+ display: flex;
+ flex-direction: column;
+ width: 40px;
+ height: 40px;
+ margin: 0 40px;
+ cursor: pointer;
+ }
+
+ .invite-calling-item-loading {
+ width: 40px;
+ height: 40px;
+ animation: rotation 2s linear infinite;
+ }
+
+ @keyframes rotation {
+ from {
+ transform: rotate(0deg);
+ }
+ to {
+ transform: rotate(360deg);
+ }
+ }
+
+ .invite-calling-item-loading img {
+ width: 100%;
+ height: 100%;
+ }
+
+ img {
+ width: 100%;
+ display: flex;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+ position: relative;
+ }
+
+ span {
+ display: block;
+ margin-top: 5px;
+ white-space: nowrap;
+ font-weight: 400;
+ font-size: 14px;
+ line-height: 20px;
+ text-align: center;
+ }
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/style/index.scss b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/style/index.scss
new file mode 100644
index 0000000..7ca6e68
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/style/index.scss
@@ -0,0 +1,2 @@
+@import './mobile.scss';
+@import './desktop.scss';
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/style/mobile.scss b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/style/mobile.scss
new file mode 100644
index 0000000..cdc24ad
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Button/style/mobile.scss
@@ -0,0 +1,63 @@
+.btn-operate-mobile {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ position: relative;
+
+ .call-operate {
+ width: 50px;
+ height: 50px;
+ border-radius: 8vh;
+ margin: 0 5vw;
+ box-sizing: border-box;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+
+ .invite-calling-item-loading {
+ width: 40px;
+ height: 40px;
+ animation: rotation 2s linear infinite;
+ }
+
+ @keyframes rotation {
+ from {
+ transform: rotate(0deg);
+ }
+ to {
+ transform: rotate(360deg);
+ }
+ }
+
+ .invite-calling-item-loading img {
+ width: 100%;
+ height: 100%;
+ }
+
+ .operate-img {
+ width: 100%;
+ height: 100%;
+ background: none;
+
+ .hangup-img{
+ width: 100%;
+ height: 100%;
+ }
+ }
+
+ .switchAudioCall {
+ width: 6vw;
+ height: 3vh;
+ }
+ }
+
+ .call-switch .call-operate {
+ width: 4vh;
+ height: 3vh;
+ }
+
+ .operate-text {
+ margin: 6px 0px 6px 0px;
+ }
+}
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/DeviceSelectPopover/DeviceSelectPopover.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/DeviceSelectPopover/DeviceSelectPopover.vue
new file mode 100644
index 0000000..b863fff
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/DeviceSelectPopover/DeviceSelectPopover.vue
@@ -0,0 +1,163 @@
+
+
+
+
+ {{ t(toggleBtnText) }}
+
+
+
+
+
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/FloatWindow/desktop/FloatWindow.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/FloatWindow/desktop/FloatWindow.vue
new file mode 100644
index 0000000..a16aa28
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/FloatWindow/desktop/FloatWindow.vue
@@ -0,0 +1,112 @@
+
+
+
+
+
![]()
+
+
+
+
+
![]()
+
![]()
+
+
+
+
+
![]()
+
+
+
+
+
+
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/FloatWindow/mobile/FloatWindow.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/FloatWindow/mobile/FloatWindow.vue
new file mode 100644
index 0000000..e3c44e7
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/FloatWindow/mobile/FloatWindow.vue
@@ -0,0 +1,72 @@
+
+
+
![]()
+
{{callStatus !== CallStatus.CONNECTED ? t('waiting') :callDuration}}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/MicVolume/MicVolume.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/MicVolume/MicVolume.vue
new file mode 100644
index 0000000..b38c157
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/MicVolume/MicVolume.vue
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/MicVolume/MicVolumeClosed.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/MicVolume/MicVolumeClosed.vue
new file mode 100644
index 0000000..474104b
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/MicVolume/MicVolumeClosed.vue
@@ -0,0 +1,11 @@
+
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/PermitTip/CloseIcon.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/PermitTip/CloseIcon.vue
new file mode 100644
index 0000000..dcb9ce3
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/PermitTip/CloseIcon.vue
@@ -0,0 +1,3 @@
+
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/PermitTip/PermitTip.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/PermitTip/PermitTip.ts
new file mode 100644
index 0000000..86618d5
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/PermitTip/PermitTip.ts
@@ -0,0 +1,33 @@
+import { createVNode, render } from '../../../../adapter-vue';
+// @ts-ignore
+import PermitTipComp from './PermitTip.vue';
+
+const PermitTip: any = {};
+let instance: any = null;
+let seed = 1;
+
+export const createToast = () => {
+ const appendTo = document.body;
+ const container = document.createElement('div');
+
+ if (instance) {
+ appendTo.removeChild(instance.el);
+ render(null, container);
+ }
+
+ const vnode = createVNode(PermitTipComp, {
+ index: `permit-item-${seed++}`, // eslint-disable-line
+ destroy() {
+ render(null, container);
+ },
+ });
+ render(vnode, container);
+ appendTo.appendChild(container.firstElementChild!);
+ instance = vnode;
+};
+
+PermitTip.show = () => createToast();
+
+export {
+ PermitTip,
+};
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/PermitTip/PermitTip.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/PermitTip/PermitTip.vue
new file mode 100644
index 0000000..ae8faf6
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/PermitTip/PermitTip.vue
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/PermitTip/SystemPermitTip.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/PermitTip/SystemPermitTip.vue
new file mode 100644
index 0000000..3747420
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/PermitTip/SystemPermitTip.vue
@@ -0,0 +1,158 @@
+
+
+
+
+
+
{{ t('browser-authorization') }}
+
{{ t(preferences) }}
+
{{ t(privacy) }}
+
+
![system permit]()
+
+
+
+
+
+
+
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Popover/Popover.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Popover/Popover.vue
new file mode 100644
index 0000000..295abd2
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Popover/Popover.vue
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/SelectUser.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/SelectUser.vue
new file mode 100644
index 0000000..f2dec5c
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/SelectUser.vue
@@ -0,0 +1,87 @@
+
+
+
+
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Dialog/TDialog.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Dialog/TDialog.vue
new file mode 100644
index 0000000..6a20726
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Dialog/TDialog.vue
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Dialog/style/color.css b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Dialog/style/color.css
new file mode 100644
index 0000000..39e7191
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Dialog/style/color.css
@@ -0,0 +1,43 @@
+.dialog {
+ background: rgba(0, 0, 0, 0.3);
+}
+
+.dialog-main {
+ background: #FFFFFF;
+}
+
+.dialog-main-header {
+ font-weight: 500;
+ color: #333333;
+}
+
+.dialog-main-title {
+ font-family: PingFangSC-Medium;
+ font-weight: 500;
+ color: #333333;
+}
+
+.dialog-main-back {
+ background: none;
+}
+
+.dialog-main-content {
+ font-weight: 400;
+ color: #333333;
+}
+
+.btn {
+ font-weight: 400;
+ color: #FFFFFF;
+ letter-spacing: 0;
+}
+
+.btn-cancel {
+ border: 1px solid #dddddd;
+ color: #666666;
+}
+
+.btn-default {
+ background: #006EFF;
+ border: 1px solid #006EFF;
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Dialog/style/dialog.css b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Dialog/style/dialog.css
new file mode 100644
index 0000000..4200cf5
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Dialog/style/dialog.css
@@ -0,0 +1,3 @@
+@import "./color.css";
+@import "./web.css";
+@import "./h5.css";
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Dialog/style/h5.css b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Dialog/style/h5.css
new file mode 100644
index 0000000..f74bbe9
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Dialog/style/h5.css
@@ -0,0 +1,49 @@
+.dialog-h5 {
+ height: 100%;
+ top: 0;
+ align-items: inherit;
+}
+
+.dialog-h5 .dialog-main {
+ border-radius: 0;
+ padding: 0;
+ display: flex;
+ flex-direction: column;
+ overflow: hidden;
+ width: 100%;
+ min-height: 80px;
+ min-width: 120px;
+}
+
+.dialog-h5 .dialog-main-content {
+ flex: 1;
+ min-width: 0;
+ min-height: 0;
+ text-align: center;
+}
+
+.dialog-h5 .dialog-main-content-uniapp {
+ padding: 40px 0;
+}
+
+.dialog-h5 .dialog-main-footer {
+ border-top: 1px solid #DDDDDD;
+}
+
+.dialog-h5 .dialog-main-footer .btn {
+ flex: 1;
+ margin: 0;
+ background: none;
+ border-right: 1px solid #DDDDDD;
+}
+
+.dialog-h5 .dialog-main-footer .btn-default {
+ color: #FF584C;
+ border: none;
+}
+
+.center {
+ align-items: center;
+ padding: 20px;
+ box-sizing: border-box;
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Dialog/style/web.css b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Dialog/style/web.css
new file mode 100644
index 0000000..72509c2
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Dialog/style/web.css
@@ -0,0 +1,55 @@
+.dialog {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ left: 0;
+ top: 0;
+ z-index: 6;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+.dialog-main {
+ min-width: 368px;
+ border-radius: 10px;
+ padding: 20px 30px;
+}
+.dialog-main-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ font-size: 16px;
+ line-height: 30px;
+}
+
+.dialog-main-title {
+ font-size: 16px;
+ line-height: 30px;
+}
+
+.dialog-main-content {
+ font-size: 14px;
+}
+
+.dialog-main-footer {
+ display: flex;
+ justify-content: flex-end;
+}
+
+.btn {
+ padding: 8px 20px;
+ margin: 0 6px;
+ border-radius: 4px;
+ border: none;
+ font-size: 14px;
+ text-align: center;
+ line-height: 20px;
+}
+
+.btn:disabled {
+ opacity: 0.3;
+}
+
+.btn:last-child {
+ margin-right: 0;
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Icon/TIcon.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Icon/TIcon.vue
new file mode 100644
index 0000000..3e58806
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Icon/TIcon.vue
@@ -0,0 +1,44 @@
+
+
+
+
+
![]()
+
+
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Icon/style/icon.css b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Icon/style/icon.css
new file mode 100644
index 0000000..99d54f0
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Icon/style/icon.css
@@ -0,0 +1,6 @@
+.icon {
+ display: inline-flex;
+ justify-content: center;
+ align-items: center;
+ margin: 0;
+}
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Transfer/TTransfer.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Transfer/TTransfer.vue
new file mode 100644
index 0000000..99fbdf1
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Transfer/TTransfer.vue
@@ -0,0 +1,333 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+ {{ t('Select all') }}
+
+
+
+ -
+
+
+
+
+ {{ item.nick || item.userID }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Transfer/icon/back.svg b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Transfer/icon/back.svg
new file mode 100644
index 0000000..0af55aa
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Transfer/icon/back.svg
@@ -0,0 +1,16 @@
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Transfer/icon/cancel.svg b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Transfer/icon/cancel.svg
new file mode 100644
index 0000000..1cf848b
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Transfer/icon/cancel.svg
@@ -0,0 +1,23 @@
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Transfer/icon/selected.svg b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Transfer/icon/selected.svg
new file mode 100644
index 0000000..7fd5bd3
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Transfer/icon/selected.svg
@@ -0,0 +1,27 @@
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Transfer/style/color.css b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Transfer/style/color.css
new file mode 100644
index 0000000..d17e78e
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Transfer/style/color.css
@@ -0,0 +1,64 @@
+.main {
+ background: #FFFFFF;
+ border: 1px solid #E0E0E0;
+ box-shadow: 0 -4px 12px 0 rgba(0, 0, 0, 0.06);
+}
+
+.main .left {
+ border-right: 1px solid #E8E8E9;
+}
+
+.main .transfer-header {
+ font-weight: 500;
+ color: #000000;
+ letter-spacing: 0;
+}
+
+.main .transfer-header input {
+ background: #FFFFFF;
+ border: 1px solid #DEE0E3;
+ font-weight: 500;
+ color: #8F959E;
+ letter-spacing: 0;
+}
+
+.main .transfer-list .transfer-text {
+ font-weight: 500;
+ color: #8F959E;
+ letter-spacing: 0;
+}
+
+.main .transfer-list-item .disabled {
+ background: #eeeeee;
+}
+
+.btn {
+ /*background: #3370FF;*/
+ /*border: 0 solid #2F80ED;*/
+ font-weight: 400;
+ color: #FFFFFF;
+}
+
+.btn-cancel {
+ background: #FFFFFF;
+ border: 1px solid #DDDDDD;
+ color: #828282;
+}
+
+.btn-no {
+ background: #e8e8e9;
+ border: 1px solid #DDDDDD;
+ font-weight: 400;
+ color: #FFFFFF;
+}
+
+.transfer-h5-header {
+ background: #FFFFFF;
+}
+
+.transfer-h5-header .title {
+ font-family: PingFangSC-Medium;
+ font-weight: 500;
+ color: #000000;
+ letter-spacing: 0;
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Transfer/style/h5.css b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Transfer/style/h5.css
new file mode 100644
index 0000000..f3944dc
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Transfer/style/h5.css
@@ -0,0 +1,86 @@
+.transfer-h5 {
+ width: 100vw;
+ height: 100vh;
+ display: flex;
+ flex-direction: column;
+}
+
+.transfer-h5-header {
+ position: relative;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ font-size: 18px;
+ padding: 16px 18px;
+}
+
+.transfer-h5-header .space, .transfer-h5-header .icon {
+ width: 18px;
+ height: 18px;
+}
+
+.transfer-h5 .main {
+ flex-direction: column;
+ width: auto;
+ height: 550px;
+ border-radius: 0;
+ border: none;
+ box-shadow: none;
+ max-height: calc(100% - 50px);
+ padding: 0;
+}
+
+.transfer-h5 .main .avatar {
+ border-radius: 5px;
+}
+
+.transfer-h5 .main .left {
+ padding: 0;
+ flex: 1;
+ border: none;
+ display: flex;
+ flex-direction: column;
+}
+
+.transfer-h5 .main .left .transfer-header {
+ position: sticky;
+ top: 0;
+ padding: 0 18px;
+}
+
+.transfer-h5 .main .left .transfer-header input {
+ border-radius: 5px;
+ font-size: 14px;
+}
+
+.transfer-h5 .main .left-uniapp-input {
+ height: 36px;
+}
+
+.transfer-h5 .main .right {
+flex: 0;
+padding: 0;
+flex-direction: row;
+align-items: center;
+box-shadow: inset 0 1px 0 0 #EEEEEE;
+padding: 8px 18px;
+}
+
+.transfer-h5 .main .right .transfer-list {
+ flex-direction: row;
+ width: 0;
+}
+
+.transfer-h5 .main .right .transfer-list-item-content {
+ flex: none;
+}
+
+.transfer-h5 .main .right .transfer-right-footer {
+ padding: 6px 0;
+ display: flex;
+ align-items: center;
+}
+
+.transfer-h5 .main .right .transfer-right-footer .btn {
+ font-size: 14px;
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Transfer/style/transfer.css b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Transfer/style/transfer.css
new file mode 100644
index 0000000..ba2d197
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Transfer/style/transfer.css
@@ -0,0 +1,17 @@
+@import "./color.css";
+@import "./web.css";
+@import "./h5.css";
+
+ul,ol,li {
+ margin:0;
+ padding:0;
+}
+
+.icon-unselected {
+ width: 18px;
+ height: 18px;
+ background: #FFFFFF;
+ border: 1px solid #DDDDDD;
+ border-radius: 11px;
+ box-sizing: border-box;
+}
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Transfer/style/web.css b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Transfer/style/web.css
new file mode 100644
index 0000000..2c7945b
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/components/Transfer/style/web.css
@@ -0,0 +1,146 @@
+.main {
+ box-sizing: border-box;
+ width: 541px;
+ height: 390px;
+ display: flex;
+ border-radius: 8px;
+ padding: 20px 0;
+}
+
+.main .right {
+ padding: 0 20px;
+ flex: 1;
+}
+
+.main .right .transfer-list {
+ padding-right: 20px;
+}
+
+.main .left {
+ flex: 1;
+ overflow-y: hidden;
+ display: flex;
+ flex-direction: column;
+}
+
+.main .left .transfer-header {
+ padding: 0 20px;
+}
+
+.main .left .transfer-left-main {
+ flex: 1;
+ overflow-y: auto;
+ padding: 0 13px;
+}
+
+.main .right {
+ display: flex;
+ flex-direction: column;
+ text-align: left;
+}
+
+.main .right .transfer-right-footer {
+ align-self: flex-end;
+}
+
+.main .right .transfer-right-footer .btn-cancel {
+ margin-right: 12px;
+}
+
+.main .right .transfer-list {
+ overflow-y: auto;
+}
+
+.main .transfer-header {
+ font-size: 14px;
+ line-height: 14px;
+ padding-bottom: 20px;
+}
+
+.main .transfer-header input {
+ box-sizing: border-box;
+ width: 100%;
+ border-radius: 30px;
+ font-size: 10px;
+ line-height: 14px;
+ padding: 9px 12px;
+}
+
+.main .transfer-list {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+}
+
+.main .transfer-list .transfer-text {
+ font-size: 10px;
+ line-height: 14px;
+}
+
+.main .transfer-list-item {
+ padding: 6px 0;
+ display: flex;
+ align-items: center;
+ font-size: 14px;
+ text-align: left;
+}
+
+.main .transfer-list-item-content {
+ flex: 1;
+ display: flex;
+ align-items: center;
+}
+
+.main .transfer-list-item .avatar {
+ margin: 0 5px 0 8px;
+ border-radius: 50%;
+}
+
+.main .transfer-list-item .name {
+ width: 0;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ flex: 1;
+}
+
+.avatar {
+ width: 36px;
+ height: 36px;
+ border-radius: 5px;
+ font-size: 12px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+
+.btn {
+ padding: 4px 28px;
+ font-size: 12px;
+ line-height: 24px;
+ border-radius: 4px;
+}
+
+.btn-no {
+ padding: 4px 28px;
+ font-size: 12px;
+ line-height: 24px;
+ border-radius: 4px;
+}
+
+.space-between {
+ justify-content: space-between;
+}
+
+.select-all {
+ padding-left: 8px;
+ font-size: 14px;
+}
+
+.more {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ cursor: pointer;
+ font-size: 14px;
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/index.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/index.ts
new file mode 100644
index 0000000..ad853dc
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SelectUser/index.ts
@@ -0,0 +1,12 @@
+// @ts-ignore
+import TDialog from "./components/Dialog/TDialog.vue";
+// @ts-ignore
+import TTransfer from "./components/Transfer/TTransfer.vue";
+// @ts-ignore
+import TIcon from "./components/Icon/TIcon.vue";
+// @ts-ignore
+import SelectUser from "./SelectUser.vue";
+
+export { TDialog, TTransfer, TIcon };
+
+export default SelectUser;
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Swiper/Swiper.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Swiper/Swiper.vue
new file mode 100644
index 0000000..98ea577
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Swiper/Swiper.vue
@@ -0,0 +1,145 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Swiper/SwiperSlider.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Swiper/SwiperSlider.vue
new file mode 100644
index 0000000..b44692b
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Swiper/SwiperSlider.vue
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Swiper/index.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Swiper/index.ts
new file mode 100644
index 0000000..c3b1c44
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Swiper/index.ts
@@ -0,0 +1,10 @@
+// @ts-nocheck
+import Swiper from './Swiper.vue';
+import SwiperSlider from './SwiperSlider.vue';
+
+export enum Direction {
+ LEFT = 'left', // eslint-disable-line
+ RIGHT = 'right', // eslint-disable-line
+}
+
+export { Swiper, SwiperSlider };
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Swiper/useSlide.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Swiper/useSlide.ts
new file mode 100644
index 0000000..71ec8e0
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Swiper/useSlide.ts
@@ -0,0 +1,56 @@
+import { onMounted, onUnmounted, ref, watch } from '../../../../adapter-vue';
+import { Direction } from '.';
+
+export default function useSlide({ pageCount }) {
+ const startX = ref();
+ const startY = ref();
+ const currentIndex = ref(0);
+ const direction = ref(Direction.RIGHT);
+
+ function handleTouchStart(event: any) {
+ startX.value = event.changedTouches[0].pageX;
+ startY.value = event.changedTouches[0].pageY;
+ }
+ function handleTurnPageRight() {
+ currentIndex.value = currentIndex.value + 1;
+ }
+ function handleTurnPageLeft() {
+ currentIndex.value = currentIndex.value - 1;
+ }
+ function handleTouchEnd(event: any) {
+ const moveDirection = event.changedTouches[0].pageX - startX.value;
+ if (Math.abs(moveDirection) < 5) return;
+ if (moveDirection < 0) {
+ if (currentIndex.value === pageCount.value - 1) return;
+ direction.value = Direction.LEFT;
+ handleTurnPageRight();
+ }
+ if (moveDirection > 0) {
+ if (currentIndex.value === 0) return;
+ direction.value = Direction.RIGHT;
+ handleTurnPageLeft();
+ }
+ }
+
+ watch(pageCount, () => {
+ // 当总页数只有一页时,更新当前所在页索引为第一页
+ if (pageCount.value === 1 && currentIndex.value !== 0) {
+ currentIndex.value = 0;
+ }
+ });
+
+ onMounted(() => {
+ document.addEventListener('touchstart', handleTouchStart, false);
+ document.addEventListener('touchend', handleTouchEnd, false);
+ });
+
+ onUnmounted(() => {
+ document.removeEventListener('touchstart', handleTouchStart, false);
+ document.removeEventListener('touchend', handleTouchEnd, false);
+ });
+
+ return {
+ currentIndex,
+ direction,
+ };
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Swiper/useSwiperSliders.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Swiper/useSwiperSliders.ts
new file mode 100644
index 0000000..47e108f
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Swiper/useSwiperSliders.ts
@@ -0,0 +1,34 @@
+import { onMounted, onUpdated, ref } from '../../../../adapter-vue';
+
+function filterSwiplerSlider(els: HTMLCollection) {
+ const rs: Element[] = [];
+ for (let i = 0; i < els.length; i++) {
+ const el = els[i];
+ if (el.className.includes('swiper-item')) {
+ rs.push(el);
+ }
+ }
+ return rs;
+}
+
+export function useSwiperSliders(swiperContainerRef): any {
+ const sliders = ref([]);
+ const updateSliders = () => {
+ const els = swiperContainerRef.value.children;
+ const slotsList = filterSwiplerSlider(els);
+ if (sliders.value.length !== slotsList.length) {
+ sliders.value = slotsList;
+ }
+ };
+
+ onMounted(() => {
+ updateSliders();
+ });
+
+ onUpdated(() => {
+ updateSliders();
+ });
+
+ // @ts-ignore
+ return sliders;
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SwiperWx/Swiper.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SwiperWx/Swiper.vue
new file mode 100644
index 0000000..ab888ea
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SwiperWx/Swiper.vue
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SwiperWx/SwiperSlider.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SwiperWx/SwiperSlider.vue
new file mode 100644
index 0000000..08f2077
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SwiperWx/SwiperSlider.vue
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SwiperWx/index.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SwiperWx/index.ts
new file mode 100644
index 0000000..cd0a9fb
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/SwiperWx/index.ts
@@ -0,0 +1,5 @@
+// @ts-nocheck
+export enum Direction {
+ LEFT = 'left', // eslint-disable-line
+ RIGHT = 'right', // eslint-disable-line
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Toast/Toast.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Toast/Toast.ts
new file mode 100644
index 0000000..e84f417
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Toast/Toast.ts
@@ -0,0 +1,84 @@
+import { VNode, createVNode, render } from '../../../../adapter-vue';
+// @ts-ignore
+import ToastVue from './Toast.vue';
+import { CreateToast, TToast, TToastOptions, ToastType } from './type';
+
+const Toast: TToast = {};
+const instances: VNode[] = [];
+let seed = 1;
+
+function getLastTop() {
+ const len = instances.length;
+ return len > 0 ? instances[len - 1]?.el?.style?.top : '30px';
+}
+function getLastOffsetHeight() {
+ const len = instances.length;
+ return len > 0 ? instances[len - 1]?.el?.offsetHeight : 0;
+}
+
+export const createToast: CreateToast = (options) => {
+ const { type, duration = 3000, message, showClose = false, onClose } = options; // eslint-disable-line
+ const appendTo = document.body;
+ const container = document.createElement('div');
+ const vnode = createVNode(ToastVue, {
+ type,
+ duration,
+ message,
+ showClose,
+ index: `toast-item-${seed++}`, // eslint-disable-line
+ close() {
+ const index = instances.findIndex(item => item === vnode);
+ console.log(instances[index]?.el?.offsetHeight);
+ const removeHeight = parseInt(instances[index]?.el?.offsetHeight) + 20; // eslint-disable-line
+ for (let i = 0; i < instances.length; i++) {
+ if (i < index) {
+ continue;
+ } else {
+ // @ts-ignore
+ instances[i].el.style.top = parseInt(instances[i].el.style.top) - removeHeight + 'px'; // eslint-disable-line
+ }
+ }
+ instances.splice(index, 1);
+ },
+ destroy() {
+ render(null, container);
+ },
+ });
+ render(vnode, container);
+ appendTo.appendChild(container.firstElementChild!);
+
+ const lastTop = getLastTop();
+ const lastOffsetHeight = getLastOffsetHeight();
+
+ // @ts-ignore
+ vnode.el.style.top = parseInt(lastTop) + parseInt(lastOffsetHeight) + 20 + 'px'; // eslint-disable-line
+ instances.push(vnode);
+};
+
+(['info', 'waring', 'error', 'success'] as ToastType[]).forEach((type) => {
+ let params: any = {};
+ Toast[type] = (options: TToastOptions | string) => {
+ if (typeof options === 'string') {
+ params.message = options;
+ } else {
+ params = options;
+ }
+
+ createToast({ type, ...params });
+ };
+});
+
+Toast.show = (options: TToastOptions) => {
+ let params: any = {};
+ if (typeof options === 'string') {
+ params.message = options;
+ params.type = 'info';
+ } else {
+ params = options;
+ }
+ return createToast({ type: 'info', ...params });
+};
+
+export {
+ Toast,
+};
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Toast/Toast.vue b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Toast/Toast.vue
new file mode 100644
index 0000000..26d0e9d
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Toast/Toast.vue
@@ -0,0 +1,133 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Toast/index.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Toast/index.ts
new file mode 100644
index 0000000..179b37d
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Toast/index.ts
@@ -0,0 +1,6 @@
+import { createToast, Toast } from './Toast';
+
+export {
+ createToast,
+ Toast,
+};
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Toast/type.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Toast/type.ts
new file mode 100644
index 0000000..cbbfbc5
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/Components/components/common/Toast/type.ts
@@ -0,0 +1,16 @@
+export type ToastType = 'info' | 'waring' | 'error';
+export type TToastOptions = {
+ type?: ToastType,
+ duration?: number;
+ message: string;
+ showClose?: boolean;
+ onClose?: () => void;
+}
+export type CreateToast = (options: TToastOptions) => any;
+export type TToast = {
+ info?: (options: TToastOptions) => void;
+ success?: (options: TToastOptions) => void;
+ waring?: (options: TToastOptions) => void;
+ error?: (options: TToastOptions) => void;
+ show?: (options: TToastOptions) => void;
+};
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/CallService/bellContext.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/CallService/bellContext.ts
new file mode 100644
index 0000000..c2e0105
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/CallService/bellContext.ts
@@ -0,0 +1,84 @@
+import { CallStatus, NAME, CallRole } from '../const/index';
+import { IBellParams } from '../interface/index';
+import { isUndefined } from '../utils/common-utils';
+// @ts-ignore
+import DEFAULT_CALLER_BELL_FILEPATH from '../assets/phone_dialing.mp3';
+// @ts-ignore
+import DEFAULT_CALLEE_BELL_FILEPATH from '../assets/phone_ringing.mp3';
+
+export class BellContext {
+ private _bellContext: any = null;
+ private _isMuteBell: boolean = false;
+ private _calleeBellFilePath: string = DEFAULT_CALLEE_BELL_FILEPATH;
+ private _callRole: string = CallRole.UNKNOWN;
+ private _callStatus: string = CallStatus.IDLE;
+
+ constructor() {
+ this._bellContext = new Audio();
+ this._bellContext.loop = true;
+ }
+
+ setBellSrc() {
+ try {
+ let playBellFilePath = DEFAULT_CALLER_BELL_FILEPATH;
+ if (this._callRole === CallRole.CALLEE) {
+ playBellFilePath = this._calleeBellFilePath || DEFAULT_CALLEE_BELL_FILEPATH;
+ }
+ this._bellContext.src = playBellFilePath;
+ } catch (error) {
+ console.warn(`${NAME.PREFIX}Failed to setBellSrc, ${error}`);
+ }
+ }
+ setBellProperties(bellParams: IBellParams) {
+ this._callRole = bellParams.callRole || this._callRole;
+ this._callStatus = bellParams.callStatus || this._callStatus;
+ this._calleeBellFilePath = bellParams.calleeBellFilePath || this._calleeBellFilePath;
+ // undefined/false || isMuteBell => isMuteBell (不符合预期)
+ this._isMuteBell = isUndefined(bellParams.isMuteBell) ? this._isMuteBell : bellParams.isMuteBell;
+ }
+ async play() {
+ try {
+ if (this._callStatus !== CallStatus.CALLING) {
+ return;
+ }
+ this.setBellSrc();
+ if (this._callRole === CallRole.CALLEE && !this._isMuteBell) {
+ await this._bellContext.play();
+ }
+ if (this._callRole === CallRole.CALLER) {
+ await this._bellContext.play();
+ }
+ } catch (error) {
+ console.warn(`${NAME.PREFIX}Failed to play audio file, ${error}`);
+ }
+ }
+ async stop() {
+ try {
+ await this._bellContext.pause();
+ } catch (error) {
+ console.warn(`${NAME.PREFIX}Failed to stop audio file, ${error}`);
+ }
+ }
+ async setBellMute(enable: boolean) {
+ if (this._callStatus !== CallStatus.CALLING && this._callRole !== CallRole.CALLEE) {
+ return;
+ }
+ if (enable) {
+ await this.stop();
+ } else {
+ await this.play();
+ }
+ }
+ destroy() {
+ try {
+ this._isMuteBell = false;
+ this._calleeBellFilePath = '';
+ this._callRole = CallRole.UNKNOWN;
+ this._callStatus = CallStatus.IDLE;
+ this._bellContext.pause();
+ this._bellContext = null;
+ } catch (error) {
+ console.warn(`${NAME.PREFIX}Failed to destroy, ${error}`);
+ }
+ }
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/CallService/index.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/CallService/index.ts
new file mode 100644
index 0000000..64b95c8
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/CallService/index.ts
@@ -0,0 +1,1030 @@
+import {
+ ITUICallService,
+ ICallParams,
+ IGroupCallParams,
+ IUserInfo,
+ ICallbackParam,
+ ISelfInfoParams,
+ IBellParams,
+ IInviteUserParams,
+ IJoinInGroupCallParams,
+ IInitParams,
+} from '../interface/ICallService';
+import {
+ StoreName,
+ CallStatus,
+ CallMediaType,
+ NAME,
+ CALL_DATA_KEY,
+ LanguageType,
+ CallRole,
+ LOG_LEVEL,
+ VideoDisplayMode,
+ VideoResolution,
+ StatusChange,
+ AudioCallIcon,
+ VideoCallIcon,
+ ErrorCode,
+ ErrorMessage,
+ AudioPlayBackDevice,
+ CameraPosition,
+ COMPONENT,
+} from '../const/index';
+// @ts-ignore
+import { TUICallEngine, TUICallEvent } from 'tuicall-engine-webrtc';
+import { CallTips, t } from '../locales/index';
+import { checkLocalMP3FileExists } from '../utils/index';
+import promiseRetryDecorator from '../utils/decorators/promise-retry';
+import { BellContext } from './bellContext';
+import { VALIDATE_PARAMS, avoidRepeatedCall, paramValidate } from '../utils/validate/index';
+import { handleRepeatedCallError, handleNoDevicePermissionError, formatTime, performanceNow } from '../utils/common-utils';
+import { getMyProfile, getRemoteUserProfile, generateText, generateStatusChangeText, getGroupMemberList, getGroupProfile } from './utils';
+import timer from '../utils/timer';
+import { ITUIGlobal } from '../interface/ITUIGlobal';
+import { ITUIStore } from '../interface/ITUIStore';
+import TuiGlobal from '../TUIGlobal/tuiGlobal';
+import TuiStore from '../TUIStore/tuiStore';
+const TUIGlobal: ITUIGlobal = TuiGlobal.getInstance();
+const TUIStore: ITUIStore = TuiStore.getInstance();
+const version = '2.5.2';
+const frameWork = 'vue3';
+export { TUIGlobal, TUIStore };
+
+export default class TUICallService implements ITUICallService {
+ static instance: TUICallService;
+ public _tuiCallEngine: any;
+ private _tim: any = null;
+ private _TUICore: any = null;
+ private _timerId: number = -1;
+ private _startTimeStamp: number = performanceNow();
+ private _bellContext: any = null;
+ private _defaultOfflinePushInfo = {
+ title: '',
+ description: t('you have a new call'),
+ };
+ constructor() {
+ console.log(`${NAME.PREFIX}version: ${version}`);
+ this._watchTUIStore();
+ this._bellContext = new BellContext();
+ }
+ static getInstance() {
+ if (!TUICallService.instance) {
+ TUICallService.instance = new TUICallService();
+ }
+ return TUICallService.instance;
+ }
+ @avoidRepeatedCall()
+ @paramValidate(VALIDATE_PARAMS.init)
+ public async init(params: IInitParams) {
+ try {
+ if (this._tuiCallEngine) return;
+ // @ts-ignore
+ let { userID, tim, userSig, sdkAppID, SDKAppID, isFromChat, component = COMPONENT.TUI_CALL_KIT } = params;
+ if (this._TUICore) {
+ sdkAppID = this._TUICore.SDKAppID;
+ tim = this._TUICore.tim;
+ }
+ this._tim = tim;
+ console.log(`${NAME.PREFIX}init sdkAppId: ${sdkAppID || SDKAppID}, userId: ${userID}`);
+ this._tuiCallEngine = TUICallEngine.createInstance({
+ tim,
+ SDKAppID: sdkAppID || SDKAppID, // 兼容传入 SDKAppID 的问题
+ // @ts-ignore
+ frameWork,
+ language: 6,
+ callkitVersion: version,
+ chat: isFromChat || false,
+ component,
+ });
+ this._addListenTuiCallEngineEvent();
+ TUIStore.update(StoreName.CALL, NAME.LOCAL_USER_INFO, { userId: userID });
+ TUIStore.update(StoreName.CALL, NAME.LOCAL_USER_INFO_EXCLUDE_VOLUMN, { userId: userID });
+ await this._tuiCallEngine.login({ userID, userSig, assetsPath: '' }); // web && mini
+ } catch (error) {
+ console.error(`${NAME.PREFIX}init failed, error: ${error}.`);
+ throw error;
+ }
+ }
+ // component destroy
+ public async destroyed() {
+ try {
+ const currentCallStatus = TUIStore.getData(StoreName.CALL, NAME.CALL_STATUS);
+ if (currentCallStatus !== CallStatus.IDLE) {
+ throw new Error(`please destroyed when status is idle, current status: ${currentCallStatus}`);
+ }
+ if (this._tuiCallEngine) {
+ this._removeListenTuiCallEngineEvent();
+ await this._tuiCallEngine.destroyInstance();
+ this._tuiCallEngine = null;
+ }
+ } catch (error) {
+ console.error(`${NAME.PREFIX}destroyed failed, error: ${error}.`);
+ throw error;
+ }
+ }
+ // ===============================【通话操作】===============================
+ @avoidRepeatedCall()
+ @paramValidate(VALIDATE_PARAMS.call)
+ public async call(callParams: ICallParams) {
+ try {
+ const { type, userID, offlinePushInfo } = callParams;
+ if (TUIStore.getData(StoreName.CALL, NAME.CALL_STATUS) !== CallStatus.IDLE) return;
+ await this._updateCallStoreBeforeCall(type, [{ userId: userID }]);
+ this._executeExternalBeforeCalling(); // 执行外部传入的 beforeCall 方法
+ callParams.offlinePushInfo = { ...this._defaultOfflinePushInfo, ...offlinePushInfo };
+ const response = await this._tuiCallEngine.call(callParams);
+ await this._updateCallStoreAfterCall([userID], response);
+ } catch (error: any) {
+ this._handleCallError(error, 'call');
+ }
+ }
+ @avoidRepeatedCall()
+ @paramValidate(VALIDATE_PARAMS.groupCall)
+ public async groupCall(groupCallParams: IGroupCallParams) {
+ try {
+ const { userIDList, type, groupID, offlinePushInfo } = groupCallParams;
+ if (TUIStore.getData(StoreName.CALL, NAME.CALL_STATUS) !== CallStatus.IDLE) return;
+ const remoteUserInfoList = userIDList.map((userId) => ({ userId }));
+ await this._updateCallStoreBeforeCall(type, remoteUserInfoList, groupID);
+ this._executeExternalBeforeCalling();
+ groupCallParams.offlinePushInfo = { ...this._defaultOfflinePushInfo, ...offlinePushInfo };
+ const response = await this._tuiCallEngine.groupCall(groupCallParams);
+ await this._updateCallStoreAfterCall(userIDList, response);
+ } catch (error: any) {
+ this._handleCallError(error, 'groupCall');
+ }
+ }
+ @avoidRepeatedCall()
+ @paramValidate(VALIDATE_PARAMS.inviteUser)
+ public async inviteUser(params: IInviteUserParams) {
+ try {
+ const { userIDList } = params;
+ let inviteUserInfoList = await getRemoteUserProfile(userIDList, this.getTim(), TUIStore);
+ const remoteUserInfoList = TUIStore.getData(StoreName.CALL, NAME.REMOTE_USER_INFO_LIST);
+ TUIStore.update(StoreName.CALL, NAME.REMOTE_USER_INFO_LIST, [...remoteUserInfoList, ...inviteUserInfoList]);
+ TUIStore.update(StoreName.CALL, NAME.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST, [...remoteUserInfoList, ...inviteUserInfoList]);
+ this._tuiCallEngine && (await this._tuiCallEngine.inviteUser(params));
+ } catch (error: any) {
+ console.error(`${NAME.PREFIX}inviteUser failed, error: ${error}.`);
+ this._resetCallStore();
+ throw error;
+ }
+ }
+ @avoidRepeatedCall()
+ @paramValidate(VALIDATE_PARAMS.joinInGroupCall)
+ public async joinInGroupCall(params: IJoinInGroupCallParams) {
+ try {
+ const updateStoreParams = {
+ [NAME.CALL_ROLE]: CallRole.CALLEE,
+ [NAME.IS_GROUP]: true,
+ [NAME.CALL_STATUS]: CallStatus.CONNECTED,
+ [NAME.CALL_MEDIA_TYPE]: params.type,
+ [NAME.GROUP_ID]: params.groupID,
+ [NAME.ROOM_ID]: params.roomID,
+ };
+ TUIStore.updateStore(updateStoreParams, StoreName.CALL);
+ const response = await this._tuiCallEngine.joinInGroupCall(params);
+ params.type === CallMediaType.VIDEO && (await this.openCamera(NAME.LOCAL_VIDEO));
+ TUIStore.update(StoreName.CALL, NAME.IS_CLICKABLE, true);
+ this._startTimer();
+ this._updateDeviceList();
+ await this._tuiCallEngine.setVideoQuality(TUIStore.getData(StoreName.CALL, NAME.VIDEO_RESOLUTION));
+ const localUserInfo = TUIStore.getData(StoreName.CALL, NAME.LOCAL_USER_INFO);
+ TUIStore.update(StoreName.CALL, NAME.LOCAL_USER_INFO, { ...localUserInfo, isEnter: true });
+ TUIStore.update(StoreName.CALL, NAME.LOCAL_USER_INFO_EXCLUDE_VOLUMN, { ...localUserInfo, isEnter: true });
+ this._setLocalUserInfoAudioVideoAvailable(true, NAME.AUDIO);
+ } catch (error) {
+ console.error(`${NAME.PREFIX}joinInGroupCall failed, error: ${error}.`);
+ this._resetCallStore();
+ throw error;
+ }
+ }
+ // ===============================【其它对外接口】===============================
+ public getTUICallEngineInstance(): any {
+ return this?._tuiCallEngine || null;
+ }
+ public setLogLevel(level: LOG_LEVEL) {
+ this?._tuiCallEngine?.setLogLevel(level);
+ }
+ @paramValidate(VALIDATE_PARAMS.setLanguage)
+ public setLanguage(language: LanguageType) {
+ if (language && Object.values(LanguageType).includes(language)) {
+ TUIStore.update(StoreName.CALL, NAME.LANGUAGE, language);
+ }
+ }
+ @paramValidate(VALIDATE_PARAMS.enableFloatWindow)
+ public enableFloatWindow(enable: boolean) {
+ TUIStore.update(StoreName.CALL, NAME.ENABLE_FLOAT_WINDOW, enable);
+ }
+ @paramValidate(VALIDATE_PARAMS.setSelfInfo)
+ public async setSelfInfo(params: ISelfInfoParams) {
+ const { nickName, avatar } = params;
+ try {
+ await this._tuiCallEngine.setSelfInfo({ nickName, avatar });
+ } catch (error) {
+ console.error(`${NAME.PREFIX}setSelfInfo failed, error: ${error}.`);
+ }
+ }
+ @paramValidate(VALIDATE_PARAMS.enableAIVoice)
+ public async enableAIVoice(enable: boolean) {
+ try {
+ await this._tuiCallEngine.enableAIVoice(enable);
+ console.log(`${NAME.PREFIX}enableAIVoice: ${enable}.`);
+ } catch (error: any) {
+ console.error(`${NAME.PREFIX}enableAIVoice failed, error: ${error}.`);
+ throw error;
+ }
+ }
+ // 修改默认铃声:只支持本地铃声文件,不支持在线铃声文件;修改铃声修改的是被叫的铃声
+ @paramValidate(VALIDATE_PARAMS.setCallingBell)
+ public async setCallingBell(filePath?: string) {
+ let isCheckFileExist: boolean = true;
+ isCheckFileExist = await checkLocalMP3FileExists(filePath);
+ if (!isCheckFileExist) {
+ console.warn(`${NAME.PREFIX}setCallingBell failed, filePath: ${filePath}.`);
+ return;
+ }
+ const bellParams: IBellParams = { calleeBellFilePath: filePath };
+ this._bellContext.setBellProperties(bellParams);
+ }
+ @paramValidate(VALIDATE_PARAMS.enableMuteMode)
+ public async enableMuteMode(enable: boolean) {
+ try {
+ const bellParams: IBellParams = { isMuteBell: enable };
+ this._bellContext.setBellProperties(bellParams);
+ await this._bellContext.setBellMute(enable);
+ } catch (error) {
+ console.warn(`${NAME.PREFIX}enableMuteMode failed, error: ${error}.`);
+ }
+ }
+ // =============================【内部按钮操作方法】=============================
+ @avoidRepeatedCall()
+ public async accept() {
+ try {
+ TUIStore.update(StoreName.CALL, NAME.CALL_STATUS, CallStatus.CONNECTED);
+ this._updateDeviceList();
+ const response = await this._tuiCallEngine.accept();
+ if (response) {
+ TUIStore.update(StoreName.CALL, NAME.IS_CLICKABLE, true);
+ this._startTimer();
+ const callMediaType = TUIStore.getData(StoreName.CALL, NAME.CALL_MEDIA_TYPE);
+ callMediaType === CallMediaType.VIDEO && (await this.openCamera(NAME.LOCAL_VIDEO));
+ await this._tuiCallEngine.setVideoQuality(TUIStore.getData(StoreName.CALL, NAME.VIDEO_RESOLUTION));
+ const localUserInfo = TUIStore.getData(StoreName.CALL, NAME.LOCAL_USER_INFO);
+ TUIStore.update(StoreName.CALL, NAME.LOCAL_USER_INFO, { ...localUserInfo, isEnter: true });
+ TUIStore.update(StoreName.CALL, NAME.LOCAL_USER_INFO_EXCLUDE_VOLUMN, { ...localUserInfo, isEnter: true });
+ this._setLocalUserInfoAudioVideoAvailable(true, NAME.AUDIO); // web && mini default open audio
+ }
+ } catch (error) {
+ if (handleRepeatedCallError(error)) return;
+ this._noDevicePermissionToast(error, CallMediaType.AUDIO);
+ this._resetCallStore();
+ }
+ }
+ @avoidRepeatedCall()
+ public async hangup() {
+ try {
+ const response = await this._tuiCallEngine.hangup();
+ } catch (error) {
+ console.debug(error);
+ }
+ this._resetCallStore();
+ }
+ @avoidRepeatedCall()
+ public async reject() {
+ try {
+ const response = await this._tuiCallEngine.reject();
+ } catch (error) {
+ console.debug(error);
+ }
+ this._resetCallStore();
+ }
+ @avoidRepeatedCall()
+ public async openCamera(videoViewDomID: string) {
+ try {
+ await this._tuiCallEngine.openCamera(videoViewDomID);
+ this._setLocalUserInfoAudioVideoAvailable(true, NAME.VIDEO);
+ } catch (error: any) {
+ this._noDevicePermissionToast(error, CallMediaType.VIDEO);
+ console.error(`${NAME.PREFIX}openCamera error: ${error}.`);
+ }
+ }
+ @avoidRepeatedCall()
+ public async closeCamera() {
+ try {
+ await this._tuiCallEngine.closeCamera();
+ this._setLocalUserInfoAudioVideoAvailable(false, NAME.VIDEO);
+ } catch (error: any) {
+ console.error(`${NAME.PREFIX}closeCamera error: ${error}.`);
+ }
+ }
+ @avoidRepeatedCall()
+ public async openMicrophone() {
+ try {
+ await this._tuiCallEngine.openMicrophone();
+ this._setLocalUserInfoAudioVideoAvailable(true, NAME.AUDIO);
+ } catch (error: any) {
+ console.error(`${NAME.PREFIX}openMicrophone failed, error: ${error}.`);
+ }
+ }
+ @avoidRepeatedCall()
+ public async closeMicrophone() {
+ try {
+ await this._tuiCallEngine.closeMicrophone();
+ this._setLocalUserInfoAudioVideoAvailable(false, NAME.AUDIO);
+ } catch (error: any) {
+ console.error(`${NAME.PREFIX}closeMicrophone failed, error: ${error}.`);
+ }
+ }
+ @avoidRepeatedCall()
+ public switchScreen(userId: string) {
+ if (!userId) return;
+ TUIStore.update(StoreName.CALL, NAME.BIG_SCREEN_USER_ID, userId);
+ }
+ // support video to audio; not support audio to video
+ @avoidRepeatedCall()
+ public async switchCallMediaType() {
+ try {
+ const callMediaType = TUIStore.getData(StoreName.CALL, NAME.CALL_MEDIA_TYPE);
+ if (callMediaType === CallMediaType.AUDIO) {
+ console.warn(`${NAME.PREFIX}switchCallMediaType failed, ${callMediaType} not support.`);
+ return;
+ }
+ const response = await this._tuiCallEngine.switchCallMediaType(CallMediaType.AUDIO);
+ TUIStore.update(StoreName.CALL, NAME.CALL_MEDIA_TYPE, CallMediaType.AUDIO);
+ const isGroup = TUIStore.getData(StoreName.CALL, NAME.IS_GROUP);
+ const oldStatus = isGroup ? StatusChange.CALLING_GROUP_VIDEO : StatusChange.CALLING_C2C_VIDEO;
+ const newStatus = generateStatusChangeText(TUIStore);
+ this.statusChanged && this.statusChanged({ oldStatus, newStatus });
+ } catch (error: any) {
+ console.error(`${NAME.PREFIX}switchCallMediaType failed, error: ${error}.`);
+ }
+ }
+ @avoidRepeatedCall()
+ public async switchCamera() {
+ const currentPosition = TUIStore.getData(StoreName.CALL, NAME.CAMERA_POSITION);
+ const targetPosition = currentPosition === CameraPosition.BACK ? CameraPosition.FRONT : CameraPosition.BACK;
+ try {
+ await this._tuiCallEngine.switchCamera(targetPosition);
+ TUIStore.update(StoreName.CALL, NAME.CAMERA_POSITION, targetPosition);
+ } catch (error) {
+ console.error(`${NAME.PREFIX}_switchCamera failed, error: ${error}.`);
+ }
+ }
+ // 切前后置 miniProgram, 切扬声器
+ public getTim() {
+ if (this._tim) return this._tim;
+ if (!this._tuiCallEngine) {
+ console.warn(`${NAME.PREFIX}getTim warning: _tuiCallEngine Instance is not available.`);
+ return null;
+ }
+ return this._tuiCallEngine?.tim || this._tuiCallEngine?.getTim(); // mini support getTim interface
+ }
+ @avoidRepeatedCall()
+ public async switchDevice(params) {
+ try {
+ await this._tuiCallEngine.switchDevice(params);
+ } catch (error) {
+ console.error(`${NAME.PREFIX}_switchDevice failed, error: ${error}.`);
+ }
+ }
+ // ==========================【TUICallEngine 事件处理】==========================
+ private _addListenTuiCallEngineEvent() {
+ if (!this._tuiCallEngine) {
+ console.warn(`${NAME.PREFIX}add engine event listener failed, engine is empty.`);
+ return;
+ }
+ this._tuiCallEngine.on(TUICallEvent.ERROR, this._handleError, this);
+ this._tuiCallEngine.on(TUICallEvent.INVITED, this._handleNewInvitationReceived, this); // 收到邀请事件
+ this._tuiCallEngine.on(TUICallEvent.USER_ACCEPT, this._handleUserAccept, this); // 主叫收到被叫接通事件
+ this._tuiCallEngine.on(TUICallEvent.USER_ENTER, this._handleUserEnter, this); // 有用户进房事件
+ this._tuiCallEngine.on(TUICallEvent.USER_LEAVE, this._handleUserLeave, this); // 有用户离开通话事件
+ this._tuiCallEngine.on(TUICallEvent.REJECT, this._handleInviteeReject, this); // 主叫收到被叫的拒绝通话事件
+ this._tuiCallEngine.on(TUICallEvent.NO_RESP, this._handleNoResponse, this); // 主叫收到被叫的无应答事件
+ this._tuiCallEngine.on(TUICallEvent.LINE_BUSY, this._handleLineBusy, this); // 主叫收到被叫的忙线事件
+ this._tuiCallEngine.on(TUICallEvent.CALLING_CANCEL, this._handleCallingCancel, this); // 主被叫在通话未建立时, 收到的取消事件
+ this._tuiCallEngine.on(TUICallEvent.SDK_READY, this._handleSDKReady, this); // SDK Ready 回调
+ this._tuiCallEngine.on(TUICallEvent.KICKED_OUT, this._handleKickedOut, this); // 未开启多端登录时, 多端登录收到的被踢事件
+ this._tuiCallEngine.on(TUICallEvent.MESSAGE_SENT_BY_ME, this._messageSentByMe, this);
+ this._tuiCallEngine.on(TUICallEvent.CALLING_END, this._handleCallingEnd, this); // 主被叫在通话结束时, 收到的通话结束事件
+ this._tuiCallEngine.on(TUICallEvent.CALL_TYPE_CHANGED, this._handleCallTypeChange, this);
+ this._tuiCallEngine.on(TUICallEvent.USER_VIDEO_AVAILABLE, this._handleUserVideoAvailable, this);
+ this._tuiCallEngine.on(TUICallEvent.USER_AUDIO_AVAILABLE, this._handleUserAudioAvailable, this);
+ this._tuiCallEngine.on(TUICallEvent.USER_VOICE_VOLUME, this._handleUserVoiceVolume, this);
+ this._tuiCallEngine.on(TUICallEvent.DEVICED_UPDATED, this._handleDeviceUpdate, this);
+ }
+ private _removeListenTuiCallEngineEvent() {
+ this._tuiCallEngine.off(TUICallEvent.ERROR, this._handleError);
+ this._tuiCallEngine.off(TUICallEvent.INVITED, this._handleNewInvitationReceived);
+ this._tuiCallEngine.off(TUICallEvent.USER_ACCEPT, this._handleUserAccept);
+ this._tuiCallEngine.off(TUICallEvent.USER_ENTER, this._handleUserEnter);
+ this._tuiCallEngine.off(TUICallEvent.USER_LEAVE, this._handleUserLeave);
+ this._tuiCallEngine.off(TUICallEvent.REJECT, this._handleInviteeReject);
+ this._tuiCallEngine.off(TUICallEvent.NO_RESP, this._handleNoResponse);
+ this._tuiCallEngine.off(TUICallEvent.LINE_BUSY, this._handleLineBusy);
+ this._tuiCallEngine.off(TUICallEvent.CALLING_CANCEL, this._handleCallingCancel);
+ this._tuiCallEngine.off(TUICallEvent.SDK_READY, this._handleSDKReady);
+ this._tuiCallEngine.off(TUICallEvent.KICKED_OUT, this._handleKickedOut);
+ this._tuiCallEngine.off(TUICallEvent.MESSAGE_SENT_BY_ME, this._messageSentByMe);
+ this._tuiCallEngine.off(TUICallEvent.CALLING_END, this._handleCallingEnd);
+ this._tuiCallEngine.off(TUICallEvent.CALL_TYPE_CHANGED, this._handleCallTypeChange); // TODO: web 是 CALL_TYPE_CHANGED 事件, miniProgram 为 CALL_MODE
+ this._tuiCallEngine.off(TUICallEvent.USER_VIDEO_AVAILABLE, this._handleUserVideoAvailable);
+ this._tuiCallEngine.off(TUICallEvent.USER_AUDIO_AVAILABLE, this._handleUserAudioAvailable);
+ this._tuiCallEngine.off(TUICallEvent.USER_VOICE_VOLUME, this._handleUserVoiceVolume); // web
+ this._tuiCallEngine.off(TUICallEvent.DEVICED_UPDATED, this._handleDeviceUpdate);
+ }
+ private _handleError(event: any): void {
+ const { code, message } = event || {};
+ const index = Object.values(ErrorCode).indexOf(code);
+ let callTips = '';
+ if (index !== -1) {
+ const key = Object.keys(ErrorCode)[index];
+ callTips = t(ErrorMessage[key]);
+ callTips && TUIStore.update(StoreName.CALL, NAME.TOAST_INFO, { text: callTips, type: NAME.ERROR });
+ }
+ this._executeExternalAfterCalling();
+ console.error(`${NAME.PREFIX}_handleError, errorCode: ${code}; errorMessage: ${callTips || message}.`);
+ }
+ private async _handleNewInvitationReceived(event: any) {
+ console.log(`${NAME.PREFIX}onCallReceived event data: ${JSON.stringify(event)}.`);
+ const { sponsor = '', isFromGroup, callMediaType, inviteData = {}, calleeIdList = [], groupID = '' } = this._analyzeEventData(event);
+ const currentUserInfo: IUserInfo = TUIStore.getData(StoreName.CALL, NAME.LOCAL_USER_INFO);
+ const remoteUserIdList: string[] = [sponsor, ...calleeIdList.filter((userId: string) => userId !== currentUserInfo.userId)];
+ const type = callMediaType || inviteData.callType;
+ const callTipsKey = type === CallMediaType.AUDIO ? CallTips.CALLEE_CALLING_AUDIO_MSG : CallTips.CALLEE_CALLING_VIDEO_MSG;
+ let updateStoreParams = {
+ [NAME.CALL_ROLE]: CallRole.CALLEE,
+ [NAME.IS_GROUP]: isFromGroup,
+ [NAME.CALL_STATUS]: CallStatus.CALLING,
+ [NAME.CALL_MEDIA_TYPE]: type,
+ [NAME.CALL_TIPS]: t(callTipsKey),
+ [NAME.CALLER_USER_INFO]: { userId: sponsor },
+ [NAME.GROUP_ID]: groupID,
+ };
+ TUIStore.updateStore(updateStoreParams, StoreName.CALL);
+ this._executeExternalBeforeCalling();
+ this.statusChanged && this.statusChanged({ oldStatus: StatusChange.IDLE, newStatus: StatusChange.BE_INVITED });
+
+ const remoteUserInfoList = await getRemoteUserProfile(remoteUserIdList, this.getTim(), TUIStore);
+ const [userInfo] = remoteUserInfoList.filter((userInfo: IUserInfo) => userInfo.userId === sponsor);
+ remoteUserInfoList.length > 0 &&
+ TUIStore.updateStore(
+ {
+ [NAME.REMOTE_USER_INFO_LIST]: remoteUserInfoList,
+ [NAME.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST]: remoteUserInfoList,
+ [NAME.CALLER_USER_INFO]: {
+ userId: sponsor,
+ nick: userInfo?.nick || '',
+ avatar: userInfo?.avatar || '',
+ displayUserInfo: userInfo?.remark || userInfo?.nick || sponsor,
+ },
+ },
+ StoreName.CALL
+ );
+ }
+ private _handleUserAccept(event: any): void {
+ this._callerChangeToConnected();
+ TUIStore.update(StoreName.CALL, NAME.TOAST_INFO, t('answered'));
+ console.log(`${NAME.PREFIX}accept event data: ${JSON.stringify(event)}.`);
+ }
+ private async _handleUserEnter(event: any): Promise {
+ this._callerChangeToConnected();
+ const { userID: userId, data } = this._analyzeEventData(event);
+ let remoteUserInfoList = TUIStore.getData(StoreName.CALL, NAME.REMOTE_USER_INFO_LIST);
+ const isInRemoteUserList = remoteUserInfoList.find((item) => item?.userId === userId);
+ if (!isInRemoteUserList) {
+ remoteUserInfoList.push({ userId });
+
+ if (remoteUserInfoList.length > 0) {
+ TUIStore.update(StoreName.CALL, NAME.REMOTE_USER_INFO_LIST, remoteUserInfoList);
+ TUIStore.update(StoreName.CALL, NAME.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST, remoteUserInfoList);
+ }
+ const [userInfo] = await getRemoteUserProfile([userId], this.getTim(), TUIStore);
+ remoteUserInfoList = TUIStore.getData(StoreName.CALL, NAME.REMOTE_USER_INFO_LIST);
+ remoteUserInfoList.forEach((obj) => {
+ if (obj?.userId === userId) {
+ obj = Object.assign(obj, userInfo);
+ }
+ });
+ }
+ remoteUserInfoList = remoteUserInfoList.map((obj: IUserInfo) => {
+ if (obj.userId === userId) obj.isEnter = true;
+ return obj;
+ });
+
+ if (remoteUserInfoList.length > 0) {
+ TUIStore.update(StoreName.CALL, NAME.REMOTE_USER_INFO_LIST, remoteUserInfoList);
+ TUIStore.update(StoreName.CALL, NAME.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST, remoteUserInfoList);
+ }
+ console.log(`${NAME.PREFIX}userEnter event data: ${JSON.stringify(event)}.`);
+ }
+ private _callerChangeToConnected() {
+ const callRole = TUIStore.getData(StoreName.CALL, NAME.CALL_ROLE);
+ const callStatus = TUIStore.getData(StoreName.CALL, NAME.CALL_STATUS);
+ if (callStatus === CallStatus.CALLING && callRole === CallRole.CALLER) {
+ TUIStore.update(StoreName.CALL, NAME.CALL_STATUS, CallStatus.CONNECTED);
+ this._startTimer();
+ }
+ }
+ private _handleUserLeave(event: any): void {
+ console.log(`${NAME.PREFIX}userLeave event data: ${JSON.stringify(event)}.`);
+ const { data, userID: userId } = this._analyzeEventData(event);
+ if (TUIStore.getData(StoreName.CALL, NAME.IS_GROUP)) {
+ const remoteUserInfoList = TUIStore.getData(StoreName.CALL, NAME.REMOTE_USER_INFO_LIST);
+ const prefix: string = (remoteUserInfoList.find((obj) => obj.userId === userId) || {}).displayUserInfo || userId;
+ const text = generateText(TUIStore, CallTips.END_CALL, prefix);
+ TUIStore.update(StoreName.CALL, NAME.TOAST_INFO, { text });
+ }
+ userId && this._deleteRemoteUser([userId]);
+ }
+ private _unNormalEventsManager(event: any, eventName: TUICallEvent): void {
+ console.log(`${NAME.PREFIX}${eventName} event data: ${JSON.stringify(event)}.`);
+ const isGroup = TUIStore.getData(StoreName.CALL, NAME.IS_GROUP);
+ const remoteUserInfoList = TUIStore.getData(StoreName.CALL, NAME.REMOTE_USER_INFO_LIST);
+ switch (eventName) {
+ case TUICallEvent.REJECT:
+ case TUICallEvent.LINE_BUSY: {
+ const { userID: userId } = this._analyzeEventData(event);
+ let callTipsKey = eventName === TUICallEvent.REJECT ? CallTips.OTHER_SIDE_REJECT_CALL : CallTips.OTHER_SIDE_LINE_BUSY;
+ let text = generateText(TUIStore, callTipsKey);
+ if (isGroup) {
+ const prefix: string = (remoteUserInfoList.find((obj) => obj.userId === userId) || {}).displayUserInfo || userId;
+ callTipsKey = eventName === TUICallEvent.REJECT ? CallTips.REJECT_CALL : CallTips.IN_BUSY;
+ text = generateText(TUIStore, callTipsKey, prefix);
+ }
+ TUIStore.update(StoreName.CALL, NAME.TOAST_INFO, { text });
+ userId && this._deleteRemoteUser([userId]);
+ break;
+ }
+ case TUICallEvent.NO_RESP: {
+ const { userIDList = [] } = this._analyzeEventData(event);
+ const callTipsKey = isGroup ? CallTips.TIMEOUT : CallTips.CALL_TIMEOUT;
+ const userInfoList: string[] = userIDList.map((userId) => {
+ const userInfo: IUserInfo = remoteUserInfoList.find((obj) => obj.userId === userId) || {};
+ return userInfo.displayUserInfo || userId;
+ });
+ const text = isGroup ? generateText(TUIStore, callTipsKey, userInfoList.join()) : generateText(TUIStore, callTipsKey);
+ TUIStore.update(StoreName.CALL, NAME.TOAST_INFO, { text });
+ userIDList.length > 0 && this._deleteRemoteUser(userIDList);
+ break;
+ }
+ case TUICallEvent.CALLING_CANCEL: {
+ // TUIStore.update(StoreName.CALL, NAME.TOAST_INFO, { text: generateText(TUIStore, CallTips.CANCEL) });
+ this._resetCallStore();
+ break;
+ }
+ }
+ }
+ private _handleInviteeReject(event: any): void {
+ this._unNormalEventsManager(event, TUICallEvent.REJECT);
+ }
+ private _handleNoResponse(event: any): void {
+ this._unNormalEventsManager(event, TUICallEvent.NO_RESP);
+ }
+ private _handleLineBusy(event: any): void {
+ this._unNormalEventsManager(event, TUICallEvent.LINE_BUSY);
+ }
+ private _handleCallingCancel(event: any): void {
+ this._executeExternalAfterCalling();
+ this._unNormalEventsManager(event, TUICallEvent.CALLING_CANCEL);
+ }
+ private _handleCallingEnd(event: any): void {
+ console.log(`${NAME.PREFIX}callEnd event data: ${JSON.stringify(event)}.`);
+ this._executeExternalAfterCalling();
+ this._resetCallStore();
+ }
+ // SDK_READY 后才能调用 tim 接口, 否则登录后立刻获取导致调用接口失败. v2.27.4+、v3 接口 login 后会抛出 SDK_READY
+ private async _handleSDKReady(event: any): Promise {
+ let localUserInfo: IUserInfo = TUIStore.getData(StoreName.CALL, NAME.LOCAL_USER_INFO);
+ localUserInfo = await getMyProfile(localUserInfo.userId, this.getTim(), TUIStore);
+ this._defaultOfflinePushInfo.title = localUserInfo?.displayUserInfo;
+ TUIStore.update(StoreName.CALL, NAME.LOCAL_USER_INFO, localUserInfo);
+ TUIStore.update(StoreName.CALL, NAME.LOCAL_USER_INFO_EXCLUDE_VOLUMN, localUserInfo);
+ }
+ private _handleKickedOut(event: any): void {
+ console.log(`${NAME.PREFIX}kickOut event data: ${JSON.stringify(event)}.`);
+ this.kickedOut && this.kickedOut(event);
+ TUIStore.update(StoreName.CALL, NAME.CALL_TIPS, generateText(TUIStore, CallTips.KICK_OUT));
+ this._resetCallStore();
+ }
+ private _handleCallTypeChange(event: any): void {
+ const { newCallType, type } = this._analyzeEventData(event);
+ TUIStore.update(StoreName.CALL, NAME.CALL_MEDIA_TYPE, newCallType || type);
+ }
+ private _messageSentByMe(event: any): void {
+ const message = event?.data;
+ this.onMessageSentByMe && this.onMessageSentByMe(message);
+ }
+ // =============================【 WEB 私有事件】==============================
+ private async _handleUserVideoAvailable(event: any): Promise {
+ const { userID: userId, isVideoAvailable } = this._analyzeEventData(event);
+ console.log(`${NAME.PREFIX}_handleUserVideoAvailable event data: ${JSON.stringify(event)}.`);
+ try {
+ isVideoAvailable && (await this._startRemoteView(userId));
+ } catch (error) {
+ console.error(`${NAME.PREFIX}_startRemoteView failed, error: ${error}.`);
+ }
+ this._setRemoteUserInfoAudioVideoAvailable(isVideoAvailable, NAME.VIDEO, userId);
+ }
+ private _handleUserAudioAvailable(event: any): void {
+ const { userID: userId, isAudioAvailable } = this._analyzeEventData(event);
+ console.log(`${NAME.PREFIX}_handleUserAudioAvailable event data: ${JSON.stringify(event)}.`);
+ this._setRemoteUserInfoAudioVideoAvailable(isAudioAvailable, NAME.AUDIO, userId);
+ }
+ private _handleUserVoiceVolume(event: any): void {
+ try {
+ const { volumeMap: volumeList } = this._analyzeEventData(event);
+ if ((volumeList || []).length === 0) return; // 减少不必要的更新
+ const localUserInfo: IUserInfo = TUIStore.getData(StoreName.CALL, NAME.LOCAL_USER_INFO);
+ let remoteUserInfoList: IUserInfo[] = TUIStore.getData(StoreName.CALL, NAME.REMOTE_USER_INFO_LIST);
+ const [localUserVolumeObj] = volumeList.filter((obj: any) => obj.userId === localUserInfo.userId);
+ const remoteUserVolumeObj = volumeList.reduce((acc: any, obj: any) => {
+ if (obj.userId !== localUserInfo.userId) {
+ return { ...acc, [obj.userId]: obj.audioVolume };
+ }
+ return acc;
+ }, {});
+ localUserInfo.volume = localUserVolumeObj.audioVolume;
+ remoteUserInfoList = remoteUserInfoList.map((obj: any) => ({ ...obj, volume: remoteUserVolumeObj[obj.userId] }));
+ const updateStoreParams = {
+ [NAME.LOCAL_USER_INFO]: localUserInfo,
+ [NAME.REMOTE_USER_INFO_LIST]: remoteUserInfoList,
+ };
+ TUIStore.updateStore(updateStoreParams, StoreName.CALL);
+ } catch (error) {
+ console.debug(error);
+ }
+ }
+ private _handleDeviceUpdate(event: any): void {
+ const { cameraList, microphoneList, speakerList, currentCamera, currentMicrophone, currentSpeaker } = event;
+ TUIStore.update(StoreName.CALL, NAME.DEVICE_LIST, {
+ cameraList,
+ microphoneList,
+ speakerList,
+ currentCamera,
+ currentMicrophone,
+ currentSpeaker,
+ });
+ }
+ private _updateDeviceList() {
+ const callMediaType = TUIStore.getData(StoreName.CALL, NAME.CALL_MEDIA_TYPE);
+ if (callMediaType === CallMediaType.VIDEO) {
+ this._tuiCallEngine
+ .getDeviceList('camera')
+ .then((result) => {
+ const deviceList = TUIStore.getData(StoreName.CALL, NAME.DEVICE_LIST);
+ const currentCamera = result?.[0] || {};
+ TUIStore.update(StoreName.CALL, NAME.DEVICE_LIST, { ...deviceList, cameraList: result, currentCamera });
+ })
+ .catch((error) => {
+ console.error(`${NAME.PREFIX}updateCameraList failed, error: ${error}.`);
+ });
+ }
+ this._tuiCallEngine
+ .getDeviceList('microphones')
+ .then((result) => {
+ const deviceList = TUIStore.getData(StoreName.CALL, NAME.DEVICE_LIST);
+ const currentMicrophone = result?.[0] || {};
+ TUIStore.update(StoreName.CALL, NAME.DEVICE_LIST, { ...deviceList, microphoneList: result, currentMicrophone });
+ })
+ .catch((error) => {
+ console.error(`${NAME.PREFIX}updateMicrophoneList failed, error: ${error}.`);
+ });
+ }
+ // ==========================【 miniProgram 私有事件】==========================
+ // 处理 “呼叫” 抛出的异常
+ private _handleCallError(error: any, methodName?: string) {
+ if (handleRepeatedCallError(error)) return;
+ this._noDevicePermissionToast(error, CallMediaType.AUDIO);
+ console.error(`${NAME.PREFIX}${methodName} failed, error: ${error}.`);
+ this._resetCallStore();
+ throw error;
+ }
+ // ========================【原 Web CallKit 提供的方法】========================
+ public beforeCalling: ((...args: any[]) => void) | undefined; // 原来
+ public afterCalling: ((...args: any[]) => void) | undefined;
+ public onMinimized: ((...args: any[]) => void) | undefined;
+ public onMessageSentByMe: ((...args: any[]) => void) | undefined;
+ public kickedOut: ((...args: any[]) => void) | undefined;
+ public statusChanged: ((...args: any[]) => void) | undefined;
+ public setCallback(params: ICallbackParam) {
+ const { beforeCalling, afterCalling, onMinimized, onMessageSentByMe, kickedOut, statusChanged } = params;
+ beforeCalling && (this.beforeCalling = beforeCalling);
+ afterCalling && (this.afterCalling = afterCalling);
+ onMinimized && (this.onMinimized = onMinimized);
+ onMessageSentByMe && (this.onMessageSentByMe = onMessageSentByMe);
+ kickedOut && (this.kickedOut = kickedOut);
+ statusChanged && (this.statusChanged = statusChanged);
+ }
+
+ public async getDeviceList(deviceType: string) {
+ try {
+ const response = await this._tuiCallEngine.getDeviceList(deviceType);
+ return response;
+ } catch (error: any) {
+ this._handleCallError(error, 'call');
+ }
+ }
+ public toggleMinimize() {
+ const isMinimized = TUIStore.getData(StoreName.CALL, NAME.IS_MINIMIZED);
+ TUIStore.update(StoreName.CALL, NAME.IS_MINIMIZED, !isMinimized);
+ console.log(`${NAME.PREFIX}toggleMinimize: ${isMinimized} -> ${!isMinimized}.`);
+ this.onMinimized && this.onMinimized(isMinimized, !isMinimized);
+ }
+ private _executeExternalBeforeCalling(): void {
+ this.beforeCalling && this.beforeCalling();
+ }
+ private _executeExternalAfterCalling(): void {
+ this.afterCalling && this.afterCalling();
+ }
+ // ========================【TUICallKit 组件属性设置方法】========================
+ @paramValidate(VALIDATE_PARAMS.setVideoDisplayMode)
+ public setVideoDisplayMode(displayMode: VideoDisplayMode) {
+ TUIStore.update(StoreName.CALL, NAME.DISPLAY_MODE, displayMode);
+ }
+ @paramValidate(VALIDATE_PARAMS.setVideoResolution)
+ public async setVideoResolution(resolution: VideoResolution) {
+ try {
+ if (!resolution) return;
+ TUIStore.update(StoreName.CALL, NAME.VIDEO_RESOLUTION, resolution);
+ await this._tuiCallEngine.setVideoQuality(resolution);
+ } catch (error) {
+ console.warn(`${NAME.PREFIX}setVideoResolution failed, error: ${error}.`);
+ }
+ }
+ // =============================【 WEB 私有公共方法】=============================
+ @promiseRetryDecorator({
+ retries: 5,
+ timeout: 200,
+ onRetrying(retryCount) {
+ console.warn(`${NAME.PREFIX}_startRemoteView, retrying [${retryCount}]`);
+ },
+ })
+ private async _startRemoteView(userId: string) {
+ if (!userId) {
+ console.warn(`${NAME.PREFIX}_startRemoteView userID is empty`);
+ return;
+ }
+ if (!document.getElementById(userId)) {
+ console.warn(`${NAME.PREFIX}_startRemoteView can't find HTMLElement sid: ${userId}`);
+ return Promise.reject();
+ }
+ try {
+ const displayMode = TUIStore.getData(StoreName.CALL, NAME.DISPLAY_MODE);
+ await this._tuiCallEngine.startRemoteView({ userID: userId, videoViewDomID: userId, options: { objectFit: displayMode } });
+ } catch (error: any) {
+ console.error(`${NAME.PREFIX}_startRemoteView error: ${error}.`);
+ return Promise.reject(error);
+ }
+ }
+ private _setRemoteUserInfoAudioVideoAvailable(isAvailable: boolean, type: string, userId: string) {
+ let remoteUserInfoList = TUIStore.getData(StoreName.CALL, NAME.REMOTE_USER_INFO_LIST);
+ remoteUserInfoList = remoteUserInfoList.map((obj: IUserInfo) => {
+ if (obj.userId === userId) {
+ if (type === NAME.AUDIO) {
+ return { ...obj, isAudioAvailable: isAvailable };
+ }
+ if (type === NAME.VIDEO) {
+ return { ...obj, isVideoAvailable: isAvailable };
+ }
+ }
+ return obj;
+ });
+
+ if (remoteUserInfoList.length > 0) {
+ TUIStore.update(StoreName.CALL, NAME.REMOTE_USER_INFO_LIST, remoteUserInfoList);
+ TUIStore.update(StoreName.CALL, NAME.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST, remoteUserInfoList);
+ }
+ }
+ private _setLocalUserInfoAudioVideoAvailable(isAvailable: boolean, type: string) {
+ let localUserInfo = TUIStore.getData(StoreName.CALL, NAME.LOCAL_USER_INFO);
+ if (type === NAME.AUDIO) {
+ localUserInfo = { ...localUserInfo, isAudioAvailable: isAvailable };
+ }
+ if (type === NAME.VIDEO) {
+ localUserInfo = { ...localUserInfo, isVideoAvailable: isAvailable };
+ }
+ TUIStore.update(StoreName.CALL, NAME.LOCAL_USER_INFO, localUserInfo);
+ TUIStore.update(StoreName.CALL, NAME.LOCAL_USER_INFO_EXCLUDE_VOLUMN, localUserInfo);
+ }
+ private async _updateCallStoreBeforeCall(type: number, remoteUserInfoList: IUserInfo[], groupID?: string): Promise {
+ const callTips =
+ groupID || TUIStore.getData(StoreName.CALL, NAME.IS_MINIMIZED) ? CallTips.CALLER_GROUP_CALLING_MSG : CallTips.CALLER_CALLING_MSG;
+ let updateStoreParams: any = {
+ [NAME.CALL_MEDIA_TYPE]: type,
+ [NAME.CALL_ROLE]: CallRole.CALLER,
+ [NAME.REMOTE_USER_INFO_LIST]: remoteUserInfoList,
+ [NAME.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST]: remoteUserInfoList,
+ [NAME.IS_GROUP]: !!groupID,
+ [NAME.CALL_TIPS]: t(callTips),
+ [NAME.GROUP_ID]: groupID,
+ };
+ TUIStore.updateStore({ ...updateStoreParams, [NAME.CALL_STATUS]: CallStatus.CALLING }, StoreName.CALL);
+ this.statusChanged &&
+ this.statusChanged({
+ oldStatus: StatusChange.IDLE,
+ newStatus: groupID ? StatusChange.DIALING_GROUP : StatusChange.DIALING_C2C,
+ });
+ this._updateDeviceList();
+ const remoteUserInfoLists = await getRemoteUserProfile(
+ remoteUserInfoList.map((obj) => obj.userId),
+ this.getTim(),
+ TUIStore
+ );
+
+ if (remoteUserInfoLists.length > 0) {
+ TUIStore.update(StoreName.CALL, NAME.REMOTE_USER_INFO_LIST, remoteUserInfoLists);
+ TUIStore.update(StoreName.CALL, NAME.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST, remoteUserInfoLists);
+ }
+ }
+ private async _updateCallStoreAfterCall(userIdList: string[], response: any) {
+ if (response) {
+ TUIStore.update(StoreName.CALL, NAME.IS_CLICKABLE, true);
+ TUIStore.update(StoreName.CALL, NAME.ROOM_ID, response.roomID);
+ if (response.code === 0) {
+ const callMediaType = TUIStore.getData(StoreName.CALL, NAME.CALL_MEDIA_TYPE);
+ callMediaType === CallMediaType.VIDEO && (await this.openCamera(NAME.LOCAL_VIDEO));
+ try {
+ await this._tuiCallEngine.setVideoQuality(TUIStore.getData(StoreName.CALL, NAME.VIDEO_RESOLUTION));
+ } catch (error) {
+ console.warn(`${NAME.PREFIX}setVideoQuality failed, error: ${error}.`);
+ }
+ } else {
+ this._resetCallStore();
+ return;
+ }
+ const localUserInfo = TUIStore.getData(StoreName.CALL, NAME.LOCAL_USER_INFO);
+ TUIStore.update(StoreName.CALL, NAME.LOCAL_USER_INFO, { ...localUserInfo, isEnter: true });
+ TUIStore.update(StoreName.CALL, NAME.LOCAL_USER_INFO_EXCLUDE_VOLUMN, { ...localUserInfo, isEnter: true });
+ this._setLocalUserInfoAudioVideoAvailable(true, NAME.AUDIO); // web && mini, default open audio
+ } else {
+ this._resetCallStore();
+ }
+ }
+ private _resetCurrentDevice() {
+ // 挂断后,重置当前摄像头,麦克风和扬声器为默认设备
+ const { cameraList, microphoneList, speakerList } = TUIStore.getData(StoreName.CALL, NAME.DEVICE_LIST);
+ TUIStore.update(StoreName.CALL, NAME.DEVICE_LIST, {
+ microphoneList,
+ cameraList,
+ speakerList,
+ currentCamera: cameraList?.[0] || {},
+ currentMicrophone: microphoneList?.[0] || {},
+ currentSpeaker: speakerList?.[0] || {},
+ });
+ }
+ private _resetCallStore() {
+ const oldStatusStr = generateStatusChangeText(TUIStore);
+ this._stopTimer();
+ // localUserInfo, language 在通话结束后不需要清除
+ // callStatus 清除需要通知; isMinimized 也需要通知(basic-vue3 中切小窗关闭后, 再呼叫还是小窗, 因此需要通知到组件侧)
+ // isGroup 也不清除(engine 先抛 cancel 事件, 再抛 reject 事件)
+ // displayMode、videoResolution 也不能清除, 组件不卸载, 这些属性也需保留, 否则采用默认值.
+ // enableFloatWindow 不清除:开启/关闭悬浮窗功能。
+ let notResetOrNotifyKeys = Object.keys(CALL_DATA_KEY).filter((key) => {
+ switch (CALL_DATA_KEY[key]) {
+ case NAME.CALL_STATUS:
+ case NAME.LANGUAGE:
+ case NAME.IS_GROUP:
+ case NAME.DISPLAY_MODE:
+ case NAME.VIDEO_RESOLUTION:
+ case NAME.ENABLE_FLOAT_WINDOW:
+ case NAME.LOCAL_USER_INFO:
+ case NAME.LOCAL_USER_INFO_EXCLUDE_VOLUMN: {
+ return false;
+ }
+ default: {
+ return true;
+ }
+ }
+ });
+ notResetOrNotifyKeys = notResetOrNotifyKeys.map((key) => CALL_DATA_KEY[key]);
+ TUIStore.reset(StoreName.CALL, notResetOrNotifyKeys);
+ const callStatus = TUIStore.getData(StoreName.CALL, NAME.CALL_STATUS);
+ callStatus !== CallStatus.IDLE && TUIStore.reset(StoreName.CALL, [NAME.CALL_STATUS], true); // callStatus reset need notify
+ TUIStore.reset(StoreName.CALL, [NAME.IS_MINIMIZED], true); // isMinimized reset need notify
+ TUIStore.reset(StoreName.CALL, [NAME.IS_EAR_PHONE], true); // isEarPhone reset need notify
+ TUIStore.update(StoreName.CALL, NAME.LOCAL_USER_INFO, {
+ ...TUIStore.getData(StoreName.CALL, NAME.LOCAL_USER_INFO),
+ isVideoAvailable: false,
+ isAudioAvailable: false,
+ });
+ TUIStore.update(StoreName.CALL, NAME.LOCAL_USER_INFO_EXCLUDE_VOLUMN, {
+ ...TUIStore.getData(StoreName.CALL, NAME.LOCAL_USER_INFO_EXCLUDE_VOLUMN),
+ isVideoAvailable: false,
+ isAudioAvailable: false,
+ });
+ TUIStore.update(StoreName.CALL, NAME.REMOTE_USER_INFO_LIST, []);
+ TUIStore.update(StoreName.CALL, NAME.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST, []);
+ this._resetCurrentDevice();
+ const newStatusStr = generateStatusChangeText(TUIStore);
+ if (oldStatusStr !== newStatusStr) {
+ this.statusChanged && this.statusChanged({ oldStatus: oldStatusStr, newStatus: newStatusStr });
+ }
+ }
+ private _noDevicePermissionToast(error: any, type: CallMediaType): void {
+ window.parent.postMessage(JSON.stringify({ code: 'permissionError', msg: '打开麦克风/摄像头失败,请检查设备连接状态并开启相关权限' }), '*');
+ if (handleNoDevicePermissionError(error)) {
+ let text = '';
+ if (type === CallMediaType.AUDIO) {
+ text = generateText(TUIStore, CallTips.NO_MICROPHONE_DEVICE_PERMISSION);
+ }
+ if (type === CallMediaType.VIDEO) {
+ text = generateText(TUIStore, CallTips.NO_CAMERA_DEVICE_PERMISSION);
+ }
+
+ const permission = this._tuiCallEngine?.getDevicePermission();
+ if (!permission?.audio) {
+ TUIStore.update(StoreName.CALL, NAME.SHOW_PERMISSION_TIP, true);
+ }
+
+ // text && TUIStore.update(StoreName.CALL, NAME.TOAST_INFO, { text, type: NAME.ERROR });
+ console.error(`${NAME.PREFIX}call failed, error: ${error.message}.`);
+ }
+ }
+ // 通话时长更新
+ private _startTimer(): void {
+ if (this._timerId === -1) {
+ this._startTimeStamp = performanceNow();
+ this._timerId = timer.run(NAME.TIMEOUT, this._updateCallDuration.bind(this), { delay: 1000 });
+ }
+ }
+ private _updateCallDuration(): void {
+ const callDurationNum = Math.round((performanceNow() - this._startTimeStamp) / 1000); // miniProgram stop timer when background
+ const callDurationStr = formatTime(callDurationNum);
+ TUIStore.update(StoreName.CALL, NAME.CALL_DURATION, callDurationStr);
+ }
+ private _stopTimer(): void {
+ if (this._timerId !== -1) {
+ timer.clearTask(this._timerId);
+ this._timerId = -1;
+ }
+ }
+ private _deleteRemoteUser(userIdList: string[]): void {
+ if (userIdList.length === 0) return;
+ let remoteUserInfoList = TUIStore.getData(StoreName.CALL, NAME.REMOTE_USER_INFO_LIST);
+ userIdList.forEach((userId) => {
+ remoteUserInfoList = remoteUserInfoList.filter((obj: IUserInfo) => obj.userId !== userId);
+ });
+ TUIStore.update(StoreName.CALL, NAME.REMOTE_USER_INFO_LIST, remoteUserInfoList);
+ TUIStore.update(StoreName.CALL, NAME.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST, remoteUserInfoList);
+ }
+ private _analyzeEventData(event: any): any {
+ return event || {}; // web INVITED
+ }
+ // =========================【调用 chat api】=========================
+ // 获取群成员
+ public async getGroupMemberList(count: number, offset: number) {
+ const groupID = TUIStore.getData(StoreName.CALL, NAME.GROUP_ID);
+ let groupMemberList = await getGroupMemberList(groupID, this.getTim(), count, offset);
+ return groupMemberList;
+ }
+ // 获取群信息
+ public async getGroupProfile() {
+ const groupID: string = TUIStore.getData(StoreName.CALL, NAME.GROUP_ID);
+ return await getGroupProfile(groupID, this.getTim());
+ }
+ // =========================【监听 TUIStore 中的状态】=========================
+ private _handleCallStatusChange = async (value: CallStatus) => {
+ try {
+ const bellParams: IBellParams = {
+ callRole: TUIStore.getData(StoreName.CALL, NAME.CALL_ROLE),
+ callStatus: TUIStore.getData(StoreName.CALL, NAME.CALL_STATUS),
+ };
+ this._bellContext.setBellProperties(bellParams);
+ if (value === CallStatus.CALLING) {
+ await this?._bellContext?.play();
+ } else {
+ // 状态变更通知
+ if (value === CallStatus.CONNECTED) {
+ const isGroup = TUIStore.getData(StoreName.CALL, NAME.IS_GROUP);
+ const callMediaType = TUIStore.getData(StoreName.CALL, NAME.CALL_MEDIA_TYPE);
+ const remoteUserInfoList = TUIStore.getData(StoreName.CALL, NAME.REMOTE_USER_INFO_LIST);
+ const oldStatus = isGroup ? StatusChange.DIALING_GROUP : StatusChange.DIALING_C2C;
+ TUIStore.update(StoreName.CALL, NAME.CALL_TIPS, '');
+ this.statusChanged && this.statusChanged({ oldStatus, newStatus: generateStatusChangeText(TUIStore) });
+ if (!isGroup && callMediaType === CallMediaType.VIDEO) {
+ this.switchScreen(remoteUserInfoList[0].domId);
+ }
+ }
+ await this?._bellContext?.stop();
+ }
+ } catch (error) {
+ console.warn(`${NAME.PREFIX}handleCallStatusChange, ${error}.`);
+ }
+ };
+ private _watchTUIStore() {
+ TUIStore?.watch(StoreName.CALL, {
+ [NAME.CALL_STATUS]: this._handleCallStatusChange,
+ });
+ }
+ private _unwatchTUIStore() {
+ TUIStore?.unwatch(StoreName.CALL, {
+ [NAME.CALL_STATUS]: this._handleCallStatusChange,
+ });
+ }
+ // =========================【web 融合 chat 提供的方法】=========================
+ public bindTUICore(TUICore: any) {
+ this._TUICore = TUICore;
+ }
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/CallService/miniProgram.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/CallService/miniProgram.ts
new file mode 100644
index 0000000..76466f5
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/CallService/miniProgram.ts
@@ -0,0 +1,55 @@
+import { CallMediaType, CallStatus } from '../const/index';
+
+export function initialUI() {
+ // 收起键盘
+ // @ts-ignore
+ wx.hideKeyboard({
+ complete: () => {},
+ });
+};
+// 检测运行时环境, 当是微信开发者工具时, 提示用户需要手机调试
+export function checkRunPlatform() {
+ // @ts-ignore
+ const systemInfo = wx.getSystemInfoSync();
+ if (systemInfo.platform === 'devtools') {
+ // 当前运行在微信开发者工具里
+ // @ts-ignore
+ wx.showModal({
+ icon: 'none',
+ title: '运行环境提醒',
+ content: '微信开发者工具不支持原生推拉流组件(即 和 标签),请使用真机调试或者扫码预览。',
+ showCancel: false,
+ });
+ }
+};
+export function initAndCheckRunEnv() {
+ initialUI(); // miniProgram 收起键盘, 隐藏 tabBar
+ checkRunPlatform(); // miniProgram 检测运行时环境
+}
+export async function beforeCall(type: CallMediaType, that: any) {
+ try {
+ initAndCheckRunEnv();
+ // 检查设备权限
+ const deviceMap = {
+ microphone: true,
+ camera: type === CallMediaType.VIDEO,
+ };
+ const hasDevicePermission = await that._tuiCallEngine.deviceCheck(deviceMap); // miniProgram 检查设备权限
+ return hasDevicePermission ? CallStatus.CALLING : CallStatus.IDLE;
+ } catch (error) {
+ console.debug(error);
+ return CallStatus.IDLE;
+ }
+}
+// 套餐问题提示, 小程序最低需要群组通话版, 1v1 通话版本使用 TRTC 就会报错
+export function handlePackageError(error) {
+ if (error?.code === -1002) {
+ // @ts-ignore
+ wx.showModal({
+ icon: 'none',
+ title: 'error',
+ content: error?.message || '',
+ showCancel: false,
+ });
+ }
+}
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/CallService/utils.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/CallService/utils.ts
new file mode 100644
index 0000000..53183cc
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/CallService/utils.ts
@@ -0,0 +1,142 @@
+import { NAME, StoreName, CallStatus, StatusChange, CallMediaType } from '../const/index';
+import { IUserInfo } from '../interface/ICallService';
+import { ITUIStore } from '../interface/ITUIStore';
+import { t } from '../locales/index';
+
+// 设置默认的 UserInfo 信息
+export function setDefaultUserInfo(userId: string, domId?: string): IUserInfo {
+ const userInfo: IUserInfo = {
+ userId,
+ nick: '',
+ avatar: '',
+ remark: '',
+ displayUserInfo: '',
+ isAudioAvailable: false,
+ isVideoAvailable: false,
+ isEnter: false,
+ domId: domId || userId,
+ };
+ return domId ? userInfo : { ...userInfo, isEnter: false }; // localUserInfo 没有 isEnter, remoteUserInfoList 有 isEnter
+}
+// 获取个人用户信息
+export async function getMyProfile(myselfUserId: string, tim: any, TUIStore: any): Promise {
+ let localUserInfo: IUserInfo = setDefaultUserInfo(myselfUserId, NAME.LOCAL_VIDEO);
+ try {
+ if (!tim) return localUserInfo;
+ const res = await tim.getMyProfile();
+ const currentLocalUserInfo = TUIStore?.getData(StoreName.CALL, NAME.LOCAL_USER_INFO); // localUserInfo may have been updated
+ if (res?.code === 0) {
+ localUserInfo = {
+ ...localUserInfo,
+ ...currentLocalUserInfo,
+ userId: res?.data?.userID,
+ nick: res?.data?.nick,
+ avatar: res?.data?.avatar,
+ displayUserInfo: res?.data?.nick || res?.data?.userID,
+ };
+ }
+ return localUserInfo;
+ } catch (error) {
+ console.error(`${NAME.PREFIX}getMyProfile failed, error: ${error}.`);
+ return localUserInfo;
+ }
+}
+// 获取远端用户列表信息
+export async function getRemoteUserProfile(userIdList: Array, tim: any, TUIStore: any): Promise {
+ let remoteUserInfoList: IUserInfo[] = userIdList.map((userId: string) => setDefaultUserInfo(userId));
+ try {
+ if (!tim) return remoteUserInfoList;
+ const res = await tim.getFriendProfile({ userIDList: userIdList });
+ if (res.code === 0) {
+ const { friendList = [], failureUserIDList = [] } = res.data;
+ let unFriendList: IUserInfo[] = failureUserIDList.map((obj: any) => obj.userID);
+ if (failureUserIDList.length > 0) {
+ const res = await tim.getUserProfile({ userIDList: failureUserIDList.map((obj: any) => obj.userID) });
+ if (res?.code === 0) {
+ unFriendList = res?.data || [];
+ }
+ }
+ const currentRemoteUserInfoList = TUIStore?.getData(StoreName.CALL, NAME.REMOTE_USER_INFO_LIST); // remoteUserInfoList may have been updated
+ const tempFriendIdList: string[] = friendList.map((obj: any) => obj.userID);
+ const tempUnFriendIdList: string[] = unFriendList.map((obj: any) => obj.userID);
+ remoteUserInfoList = userIdList.map((userId: string) => {
+ const defaultUserInfo: IUserInfo = setDefaultUserInfo(userId);
+ const friendListIndex: number = tempFriendIdList.indexOf(userId);
+ const unFriendListIndex: number = tempUnFriendIdList.indexOf(userId);
+ let remark = '';
+ let nick = '';
+ let displayUserInfo = '' ;
+ let avatar = '';
+ if (friendListIndex !== -1) {
+ remark = friendList[friendListIndex]?.remark || '';
+ nick = friendList[friendListIndex]?.profile?.nick || '';
+ displayUserInfo = remark || nick || defaultUserInfo.userId || '';
+ avatar = friendList[friendListIndex]?.profile?.avatar || '';
+ }
+ if (unFriendListIndex !== -1) {
+ nick = unFriendList[unFriendListIndex]?.nick || '';
+ displayUserInfo = nick || defaultUserInfo.userId || '';
+ avatar = unFriendList[unFriendListIndex]?.avatar || '';
+ }
+ const userInfo = currentRemoteUserInfoList.find(subObj => subObj.userId === userId) || {};
+ return { ...defaultUserInfo, ...userInfo, remark, nick, displayUserInfo, avatar };
+ });
+ }
+ return remoteUserInfoList;
+ } catch (error) {
+ console.error(`${NAME.PREFIX}getRemoteUserProfile failed, error: ${error}.`);
+ return remoteUserInfoList;
+ }
+}
+// 生成弹框提示文案
+export function generateText(TUIStore: ITUIStore, key: string, prefix?: string, suffix?: string): string {
+ const isGroup = TUIStore.getData(StoreName.CALL, NAME.IS_GROUP);
+ let callTips = `${t(key)}`;
+ if (isGroup) {
+ callTips = prefix ? `${prefix} ${callTips}` : callTips;
+ callTips = suffix ? `${callTips} ${suffix}` : callTips;
+ }
+ return callTips;
+}
+// 生成 statusChange 抛出的字符串
+export function generateStatusChangeText(TUIStore: ITUIStore): string {
+ const callStatus = TUIStore.getData(StoreName.CALL, NAME.CALL_STATUS);
+ if (callStatus === CallStatus.IDLE) {
+ return StatusChange.IDLE;
+ }
+ const isGroup = TUIStore.getData(StoreName.CALL, NAME.IS_GROUP);
+ if (callStatus === CallStatus.CALLING) {
+ return isGroup ? StatusChange.DIALING_GROUP : StatusChange.DIALING_C2C;
+ }
+ const callMediaType = TUIStore.getData(StoreName.CALL, NAME.CALL_MEDIA_TYPE);
+ if (isGroup) {
+ return callMediaType === CallMediaType.AUDIO ? StatusChange.CALLING_GROUP_AUDIO : StatusChange.CALLING_GROUP_VIDEO;
+ }
+ return callMediaType === CallMediaType.AUDIO ? StatusChange.CALLING_C2C_AUDIO : StatusChange.CALLING_C2C_VIDEO;
+}
+// 获取群组[offset, count + offset]区间成员
+export async function getGroupMemberList(groupID: string, tim: any, count, offset) {
+ let groupMemberList = [];
+ try {
+ const res = await tim.getGroupMemberList({ groupID, count, offset });
+ if (res.code === 0) {
+ return res.data.memberList || groupMemberList;
+ }
+ } catch(error) {
+ console.error(`${NAME.PREFIX}getGroupMember failed, error: ${error}.`);
+ return groupMemberList;
+ }
+}
+// 获取 IM 群信息
+export async function getGroupProfile(groupID: string, tim: any): Promise {
+ let groupProfile = {};
+ try {
+ const res = await tim.getGroupProfile({ groupID });
+ if (res.code === 0) {
+ return res.data.group || groupProfile;
+ }
+ } catch(error) {
+ console.error(`${NAME.PREFIX}getGroupProfile failed, error: ${error}.`);
+ return groupProfile;
+ }
+}
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/TUIGlobal/tuiGlobal.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/TUIGlobal/tuiGlobal.ts
new file mode 100644
index 0000000..843166c
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/TUIGlobal/tuiGlobal.ts
@@ -0,0 +1,43 @@
+import { APP_NAMESPACE, IS_PC, IS_H5, IN_WX_MINI_APP, IN_UNI_NATIVE_APP, IN_UNI_APP, IS_MAC, IS_WIN } from '../utils/env';
+import { ITUIGlobal } from '../interface/ITUIGlobal';
+
+export default class TUIGlobal implements ITUIGlobal {
+ static instance: TUIGlobal;
+ public global: any = APP_NAMESPACE;
+ public isPC: boolean = false;
+ public isH5: boolean = false;
+ public isWeChat: boolean = false;
+ public isApp: boolean = false;
+ public isUniPlatform: boolean = false;
+ public isOfficial: boolean = false;
+ public isWIN: boolean = false;
+ public isMAC: boolean = false;
+ constructor() {
+ this.initEnv();
+ }
+
+ /**
+ * 获取 TUIGlobal 实例
+ * @returns {TUIGlobal}
+ */
+ static getInstance() {
+ if (!TUIGlobal.instance) {
+ TUIGlobal.instance = new TUIGlobal();
+ }
+ return TUIGlobal.instance;
+ }
+
+ initEnv() {
+ this.isPC = IS_PC;
+ this.isH5 = IS_H5;
+ this.isWeChat = IN_WX_MINI_APP;
+ this.isApp = IN_UNI_NATIVE_APP && !IN_WX_MINI_APP; // uniApp 打包小程序时 IN_UNI_NATIVE_APP 为 true,所以此处需要增加条件
+ this.isUniPlatform = IN_UNI_APP;
+ this.isWIN = IS_WIN;
+ this.isMAC = IS_MAC;
+ }
+
+ initOfficial(SDKAppID: number) {
+ this.isOfficial = (SDKAppID === 1400187352 || SDKAppID === 1400188366);
+ }
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/TUIStore/callStore.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/TUIStore/callStore.ts
new file mode 100644
index 0000000..57dd07d
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/TUIStore/callStore.ts
@@ -0,0 +1,66 @@
+import { CallStatus, CallRole, CallMediaType, VideoDisplayMode, VideoResolution, CameraPosition } from '../const/index';
+import { ICallStore } from '../interface/ICallStore';
+import { getLanguage } from '../utils/common-utils';
+
+export default class CallStore {
+ public defaultStore: ICallStore = {
+ callStatus: CallStatus.IDLE,
+ callRole: CallRole.UNKNOWN,
+ callMediaType: CallMediaType.UNKNOWN,
+ localUserInfo: { userId: '' },
+ localUserInfoExcludeVolume: { userId: '' },
+ remoteUserInfoList: [],
+ remoteUserInfoExcludeVolumeList: [],
+ callerUserInfo: { userId: '' },
+ isGroup: false,
+ callDuration: '00:00:00', // 通话时长
+ callTips: '', // 通话提示的信息. 例如: '等待谁接听', 'xxx 拒绝通话', 'xxx 挂断通话'
+ toastInfo: { text: '' }, // 远端用户挂断、拒绝、超时、忙线等的 toast 提示信息
+ isMinimized: false, // 用来记录当前是否悬浮窗模式
+ enableFloatWindow: false, // 开启/关闭悬浮窗功能,设置为false,通话界面左上角的悬浮窗按钮会隐藏
+ bigScreenUserId: '', // 当前大屏幕显示的 userID 用户
+ language: getLanguage(), // en, zh-cn
+ isClickable: false, // 是否可点击, 用于按钮增加 loading 效果,不可点击
+ deviceList: { cameraList: [], microphoneList: [], currentCamera: {}, currentMicrophone: {} },
+ showPermissionTip: false,
+ groupID: '',
+ roomID: 0,
+ cameraPosition: CameraPosition.FRONT, // 前置或后置,值为front, back
+ // TUICallKit 组件上的属性
+ displayMode: VideoDisplayMode.COVER, // 设置预览远端的画面显示模式
+ videoResolution: VideoResolution.RESOLUTION_480P,
+ showSelectUser: false,
+ // 小程序相关属性
+ pusher: {},
+ player: [],
+ isEarPhone: false, // 是否是听筒, 默认: false
+ };
+ public store: ICallStore = Object.assign({}, this.defaultStore);;
+
+ public update(key: keyof ICallStore, data: any): void {
+ switch (key) {
+ // case 'callTips':
+ // break;
+ default:
+ // resolve "Type 'any' is not assignable to type 'never'.ts", ref: https://github.com/microsoft/TypeScript/issues/31663
+ (this.store[key] as any) = data as any;
+ }
+ }
+
+ public getData(key: string | undefined): any {
+ if (!key) return this.store;
+ return this.store[key as keyof ICallStore];
+ }
+ // reset call store
+ public reset(keyList: Array = []) {
+ if (keyList.length === 0) {
+ keyList = Object.keys(this.store);
+ }
+ const resetToDefault = keyList.reduce((acc, key) => ({ ...acc, [key]: this.defaultStore[key as keyof ICallStore] }), {});
+ this.store = {
+ ...this.defaultStore,
+ ...this.store,
+ ...resetToDefault,
+ };
+ }
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/TUIStore/tuiStore.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/TUIStore/tuiStore.ts
new file mode 100644
index 0000000..749f9cb
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/TUIStore/tuiStore.ts
@@ -0,0 +1,157 @@
+import { ITUIStore, IOptions, Task } from '../interface/ITUIStore';
+import { StoreName, NAME } from '../const/index';
+import CallStore from './callStore';
+import { isString, isNumber, isBoolean } from '../utils/common-utils';
+
+export default class TUIStore implements ITUIStore {
+ static instance: TUIStore;
+ public task: Task;
+ private storeMap: Partial>;
+ private timerId: number = -1;
+ constructor() {
+ this.storeMap = {
+ [StoreName.CALL]: new CallStore(),
+ };
+ // todo 此处后续优化结构后调整
+ this.task = {} as Task; // 保存监听回调列表
+ }
+
+ /**
+ * 获取 TUIStore 实例
+ * @returns {TUIStore}
+ */
+ static getInstance() {
+ if (!TUIStore.instance) {
+ TUIStore.instance = new TUIStore();
+ }
+ return TUIStore.instance;
+ }
+
+ /**
+ * UI 组件注册监听回调
+ * @param {StoreName} storeName store 名称
+ * @param {IOptions} options 监听信息
+ * @param {Object} params 扩展参数
+ * @param {String} params.notifyRangeWhenWatch 注册时监听时的通知范围, 'all' - 通知所有注册该 key 的监听; 'myself' - 通知本次注册该 key 的监听; 默认不通知
+ */
+ watch(storeName: StoreName, options: IOptions, params?: any) {
+ if (!this.task[storeName]) {
+ this.task[storeName] = {};
+ }
+ const watcher = this.task[storeName];
+ Object.keys(options).forEach((key) => {
+ const callback = options[key];
+ if (!watcher[key]) {
+ watcher[key] = new Map();
+ }
+ watcher[key].set(callback, 1);
+ const { notifyRangeWhenWatch } = params || {};
+ // 注册监听后, 通知所有注册该 key 的监听,使用 'all' 时要特别注意是否对其他地方的监听产生影响
+ if (notifyRangeWhenWatch === NAME.ALL) {
+ this.notify(storeName, key);
+ }
+ // 注册监听后, 仅通知自己本次监听该 key 的数据
+ if (notifyRangeWhenWatch === NAME.MYSELF) {
+ const data = this.getData(storeName, key);
+ callback.call(this, data);
+ }
+ });
+ }
+
+ /**
+ * UI 取消组件监听回调
+ * @param {StoreName} storeName store 名称
+ * @param {IOptions} options 监听信息,包含需要取消的回掉等
+ */
+ unwatch(storeName: StoreName, options: IOptions) {
+ // todo 该接口暂未支持,unwatch掉同一类,如仅传入store注销掉该store下的所有callback,同样options仅传入key注销掉该key下的所有callback
+ // options的callback function为必填参数,后续修改
+ if (!this.task[storeName]) {
+ return;
+ };
+ // if (isString(options)) {
+ // // 移除所有的监听
+ // if (options === '*') {
+ // const watcher = this.task[storeName];
+ // Object.keys(watcher).forEach(key => {
+ // watcher[key].clear();
+ // });
+ // } else {
+ // console.warn(`${NAME.PREFIX}unwatch warning: options is ${options}`);
+ // }
+ // return;
+ // }
+ const watcher = this.task[storeName];
+ Object.keys(options).forEach((key: string) => {
+ watcher[key].delete(options[key]);
+ });
+ }
+
+ /**
+ * 通用 store 数据更新,messageList 的变更需要单独处理
+ * @param {StoreName} storeName store 名称
+ * @param {string} key 变更的 key
+ * @param {unknown} data 变更的数据
+ */
+ update(storeName: StoreName, key: string, data: unknown) {
+ // 基本数据类型时, 如果相等, 就不进行更新, 减少不必要的 notify
+ if (isString(data) || isNumber(data) || isBoolean(data)) {
+ const currentData = this.storeMap[storeName]['store'][key]; // eslint-disable-line
+ if (currentData === data) return;
+ }
+ this.storeMap[storeName]?.update(key, data);
+ this.notify(storeName, key);
+ }
+
+ /**
+ * 获取 Store 数据
+ * @param {StoreName} storeName store 名称
+ * @param {string} key 待获取的 key
+ * @returns {Any}
+ */
+ getData(storeName: StoreName, key: string) {
+ return this.storeMap[storeName]?.getData(key);
+ }
+
+ /**
+ * UI 组件注册监听回调
+ * @param {StoreName} storeName store 名称
+ * @param {string} key 变更的 key
+ */
+ private notify(storeName: StoreName, key: string) {
+ if (!this.task[storeName]) {
+ return;
+ }
+ const watcher = this.task[storeName];
+ if (watcher[key]) {
+ const callbackMap = watcher[key];
+ const data = this.getData(storeName, key);
+ for (const [callback] of callbackMap.entries()) {
+ callback.call(this, data);
+ }
+ }
+ }
+
+ public reset(storeName: StoreName, keyList: Array = [], isNotificationNeeded = false) {
+ if (storeName in this.storeMap) {
+ const store = this.storeMap[storeName];
+ // reset all
+ if (keyList.length === 0) {
+ keyList = Object.keys(store?.store);
+ }
+ store.reset(keyList);
+ if (isNotificationNeeded) {
+ keyList.forEach((key) => {
+ this.notify(storeName, key);
+ });
+ }
+ }
+ }
+ // 批量修改多个 key-value
+ public updateStore(params: any, name?: StoreName): void {
+ const storeName = name ? name : StoreName.CALL;
+ Object.keys(params).forEach((key) => {
+ this.update(storeName, key, params[key]);
+ });
+ }
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/assets/phone_dialing.mp3 b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/assets/phone_dialing.mp3
new file mode 100644
index 0000000..f392528
Binary files /dev/null and b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/assets/phone_dialing.mp3 differ
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/assets/phone_ringing.mp3 b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/assets/phone_ringing.mp3
new file mode 100644
index 0000000..c3838f3
Binary files /dev/null and b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/assets/phone_ringing.mp3 differ
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/const/call.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/const/call.ts
new file mode 100644
index 0000000..3815035
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/const/call.ts
@@ -0,0 +1,107 @@
+/**
+ * @property {String} call 1v1 通话 + 群组通话
+ * @property {String} CUSTOM 自定义 Store
+*/
+export enum StoreName {
+ CALL = 'call',
+ CUSTOM = 'custom'
+}
+/**
+ * @property {String} idle 空闲
+ * @property {String} connecting 呼叫等待中
+ * @property {String} connected 通话中
+*/
+export enum CallMediaType {
+ UNKNOWN,
+ AUDIO,
+ VIDEO,
+}
+/**
+ * @property {String} caller 主叫
+ * @property {String} callee 被叫
+*/
+export enum CallRole {
+ UNKNOWN = 'unknown',
+ CALLEE = 'callee',
+ CALLER = 'caller',
+}
+/**
+ * @property {String} idle 空闲
+ * @property {String} calling 呼叫等待中
+ * @property {String} connected 通话中
+*/
+export enum CallStatus {
+ IDLE = 'idle',
+ CALLING = 'calling',
+ CONNECTED = 'connected',
+}
+/**
+ * 视频画面显示模式
+ * 播放视频流默认使用 cover 模式; 播放屏幕共享流默认使用 contain 模式。
+ * @property {String} contain 优先保证视频内容全部显示。视频尺寸等比缩放,直至视频窗口的一边与视窗边框对齐。如果视频尺寸与显示视窗尺寸不一致,在保持长宽比的前提下,将视频进行缩放后填满视窗,缩放后的视频四周会有一圈黑边。
+ * @property {String} cover 优先保证视窗被填满。视频尺寸等比缩放,直至整个视窗被视频填满。如果视频长宽与显示窗口不同,则视频流会按照显示视窗的比例进行周边裁剪或图像拉伸后填满视窗
+ * @property {String} fill 保证视窗被填满的同时保证视频内容全部显示,但是不保证视频尺寸比例不变。视频的宽高会被拉伸至和视窗尺寸一致。(该选项值自 v4.12.1 开始支持)
+*/
+export enum VideoDisplayMode {
+ CONTAIN = 'contain',
+ COVER = 'cover',
+ FILL = 'fill',
+}
+/**
+ * 视频分辨率
+ * @property {String} 480p
+ * @property {String} 720p
+ * @property {String} 1080p
+*/
+export enum VideoResolution {
+ RESOLUTION_480P = '480p',
+ RESOLUTION_720P = '720p',
+ RESOLUTION_1080P = '1080p',
+}
+// 支持的语言
+export enum LanguageType {
+ EN = 'en',
+ 'ZH-CN' = 'zh-cn',
+ JA_JP = 'ja_JP',
+}
+
+export type TDeviceList = {
+ cameraList: any[],
+ microphoneList: any[],
+ currentCamera: any,
+ currentMicrophone: any,
+};
+
+/* === 【原来 TUICallKit 对外暴露】=== */
+// 原来 web callKit 定义通知外部状态变更的变量, 对外暴露
+export const StatusChange = {
+ IDLE: "idle",
+ BE_INVITED: "be-invited",
+ DIALING_C2C: "dialing-c2c",
+ DIALING_GROUP: "dialing-group",
+ CALLING_C2C_AUDIO: "calling-c2c-audio",
+ CALLING_C2C_VIDEO: "calling-c2c-video",
+ CALLING_GROUP_AUDIO: "calling-group-audio",
+ CALLING_GROUP_VIDEO: "calling-group-video",
+} as const;
+
+/* === 【小程序使用】=== */
+/**
+ * @property {String} ear 听筒
+ * @property {String} speaker 免提
+*/
+export enum AudioPlayBackDevice {
+ EAR = 'ear',
+ SPEAKER = 'speaker',
+};
+
+export enum DeviceType {
+ MICROPHONE = 'microphone',
+ CAMERA = 'camera',
+ SPEAKER = 'speaker',
+}
+
+export enum CameraPosition {
+ FRONT = 0,
+ BACK = 1,
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/const/error.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/const/error.ts
new file mode 100644
index 0000000..3607030
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/const/error.ts
@@ -0,0 +1,20 @@
+// 错误码
+export const ErrorCode: any = {
+ SWITCH_TO_AUDIO_CALL_FAILED: 60001,
+ SWITCH_TO_VIDEO_CALL_FAILED: 60002,
+ MICROPHONE_UNAVAILABLE: 60003,
+ CAMERA_UNAVAILABLE: 60004,
+ BAN_DEVICE: 60005,
+ NOT_SUPPORTED_WEBRTC: 60006,
+ ERROR_BLACKLIST: 20007,
+} as const;
+
+export const ErrorMessage: any = {
+ SWITCH_TO_AUDIO_CALL_FAILED: 'switchToAudioCall-call-failed',
+ SWITCH_TO_VIDEO_CALL_FAILED: 'switchToVideoCall-call-failed',
+ MICROPHONE_UNAVAILABLE: 'microphone-unavailable',
+ CAMERA_UNAVAILABLE: 'camera-unavailable',
+ BAN_DEVICE: 'ban-device',
+ NOT_SUPPORTED_WEBRTC: 'not-supported-webrtc',
+ ERROR_BLACKLIST: 'blacklist-user-tips'
+} as const;
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/const/index.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/const/index.ts
new file mode 100644
index 0000000..1d15d5b
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/const/index.ts
@@ -0,0 +1,76 @@
+export * from './call';
+export * from './error';
+export * from './log';
+
+// import { keys } from 'ts-transformer-keys';
+// import { ICallStore } from '../interface/store';
+// console.warn('--> ', keys())
+
+export const CALL_DATA_KEY: any = {
+ CALL_STATUS: 'callStatus',
+ CALL_ROLE: 'callRole',
+ CALL_MEDIA_TYPE: 'callMediaType',
+ LOCAL_USER_INFO: 'localUserInfo',
+ LOCAL_USER_INFO_EXCLUDE_VOLUMN: 'localUserInfoExcludeVolume',
+ REMOTE_USER_INFO_LIST: 'remoteUserInfoList',
+ REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST: 'remoteUserInfoExcludeVolumeList',
+ CALLER_USER_INFO: 'callerUserInfo',
+ IS_GROUP: 'isGroup',
+ CALL_DURATION: 'callDuration',
+ CALL_TIPS: 'callTips',
+ TOAST_INFO: 'toastInfo',
+ IS_MINIMIZED: 'isMinimized',
+ ENABLE_FLOAT_WINDOW: 'enableFloatWindow',
+ BIG_SCREEN_USER_ID: 'bigScreenUserId',
+ LANGUAGE: 'language',
+ IS_CLICKABLE: 'isClickable',
+ DISPLAY_MODE: 'displayMode',
+ VIDEO_RESOLUTION: 'videoResolution',
+ PUSHER: 'pusher',
+ PLAYER: 'player',
+ IS_EAR_PHONE: 'isEarPhone',
+ SHOW_PERMISSION_TIP: 'SHOW_PERMISSION_TIP',
+ GROUP_ID: 'groupID',
+ ROOM_ID: 'roomID',
+ SHOW_SELECT_USER: 'showSelectUser',
+};
+
+export const NAME = {
+ PREFIX: '【CallService】',
+ AUDIO: 'audio',
+ VIDEO: 'video',
+ LOCAL_VIDEO: 'localVideo',
+ ERROR: 'error',
+ TIMEOUT: 'timeout',
+ RAF: 'raf',
+ INTERVAL: 'interval',
+ DEFAULT: 'default',
+ BOOLEAN: 'boolean',
+ STRING: 'string',
+ NUMBER: 'number',
+ OBJECT: 'object',
+ ARRAY: 'array',
+ FUNCTION: 'function',
+ UNDEFINED: "undefined",
+ ALL: 'all',
+ MYSELF: 'myself',
+ DEVICE_LIST: 'deviceList',
+ CAMERA_POSITION: 'cameraPosition',
+ ...CALL_DATA_KEY,
+};
+
+export const AudioCallIcon = 'https://web.sdk.qcloud.com/component/TUIKit/assets/call.png';
+export const VideoCallIcon = 'https://web.sdk.qcloud.com/component/TUIKit/assets/call-video-reverse.svg';
+export const MAX_NUMBER_ROOM_ID = 2147483647;
+export enum PLATFORM {
+ // eslint-disable-next-line no-unused-vars
+ MAC = 'mac',
+ // eslint-disable-next-line no-unused-vars
+ WIN = 'win',
+};
+export enum COMPONENT {
+ // eslint-disable-next-line no-unused-vars
+ TUI_CALL_KIT = 14,
+ // eslint-disable-next-line no-unused-vars
+ TIM_CALL_KIT = 15,
+};
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/const/log.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/const/log.ts
new file mode 100644
index 0000000..8c137d5
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/const/log.ts
@@ -0,0 +1,9 @@
+/* eslint-disable */
+// 唯一一个变量格式有问题的, 但是为了和原来 TUICallKit 对外暴露的保持一致
+export enum LOG_LEVEL {
+ NORMAL = 0, // 普通级别,日志量较多,接入时建议使用
+ RELEASE = 1, // release级别,SDK 输出关键信息,生产环境时建议使用
+ WARNING = 2, // 告警级别,SDK 只输出告警和错误级别的日志
+ ERROR = 3, // 错误级别,SDK 只输出错误级别的日志
+ NONE = 4, // 无日志级别,SDK 将不打印任何日志
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/index.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/index.ts
new file mode 100644
index 0000000..8e76eec
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/index.ts
@@ -0,0 +1,23 @@
+import TUICallService, { TUIGlobal, TUIStore } from './CallService/index';
+import { StoreName, NAME, CallRole, CallMediaType, CallStatus, StatusChange, VideoResolution, VideoDisplayMode, AudioPlayBackDevice } from './const/index';
+import { t } from './locales/index';
+
+// 实例化
+const TUICallKitServer = TUICallService.getInstance();
+
+// 输出产物
+export {
+ TUIGlobal,
+ TUIStore,
+ StoreName,
+ TUICallKitServer,
+ NAME,
+ CallStatus,
+ CallRole,
+ CallMediaType,
+ StatusChange,
+ VideoResolution,
+ VideoDisplayMode,
+ AudioPlayBackDevice,
+ t,
+};
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/interface/ICallService.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/interface/ICallService.ts
new file mode 100644
index 0000000..ec0a77f
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/interface/ICallService.ts
@@ -0,0 +1,98 @@
+import { CallStatus, CallRole } from '../const/index';
+
+/**
+ * @interface ITUICallService
+*/
+export interface ITUICallService {
+
+ /**
+ * 初始化 Service
+ * @function
+ * @private
+ */
+ init(params: any): void;
+
+ /**
+ * 1v1 通话
+ * @function
+ * @param {SwitchUserStatusParams} options 用户状态控制参数
+ */
+ call(callParams: ICallParams): void;
+}
+
+type SDKAppID = { SDKAppID: number; } | { sdkAppID: number; };
+export interface IInitParamsBase {
+ userID: string;
+ userSig: string;
+ tim?: any;
+ isFromChat?: boolean;
+ component?: number;
+}
+export type IInitParams = IInitParamsBase & SDKAppID;
+// call params interface
+export interface ICallParams {
+ userID: string;
+ type: number;
+ roomID?: number;
+ userData?: string;
+ timeout?: number;
+ offlinePushInfo?: IOfflinePushInfo;
+}
+// groupCall params interface
+export interface IGroupCallParams {
+ userIDList: Array;
+ type: number;
+ groupID: string;
+ roomID?: number;
+ userData?: string;
+ timeout?: number;
+ offlinePushInfo?: IOfflinePushInfo;
+}
+// userInfo interface
+export interface IUserInfo {
+ userId: string;
+ nick?: string;
+ avatar?: string;
+ remark?: string;
+ displayUserInfo?: string; // 远端用户信息展示: remark -> nick -> userId, 简化 UI 组件; 本地用户信息展示: nick -> userId
+ isAudioAvailable?: boolean; // 用来设置: 麦克风是否打开
+ isVideoAvailable?: boolean; // 用来设置: 摄像头是否打开
+ volume?: number;
+ isEnter?: boolean; // 远端用户, 用来控制预览远端是否显示 loading 效果; 本地用户, 用来控制 "呼叫"、"接通" 接通后显示的 loading 效果
+ domId?: string; // 播放流 dom 节点, localUserInfo 的 domId = 'localVideo'; remoteUserInfo 的 domId 就是 userId
+}
+export interface IOfflinePushInfo {
+ title?: string,
+ description?: string,
+ androidOPPOChannelID?: string,
+ extension: String
+}
+export interface ICallbackParam {
+ beforeCalling?: (...args: any[]) => void;
+ afterCalling?: (...args: any[]) => void;
+ onMinimized?: (...args: any[]) => void;
+ onMessageSentByMe?: (...args: any[]) => void;
+ kickedOut?: (...args: any[]) => void;
+ statusChanged?: (...args: any[]) => void;
+}
+
+export interface ISelfInfoParams {
+ nickName: string;
+ avatar: string;
+}
+
+export interface IBellParams {
+ callRole?: CallRole;
+ callStatus?: CallStatus;
+ isMuteBell?: boolean;
+ calleeBellFilePath?: string;
+}
+export interface IInviteUserParams {
+ userIDList: string[];
+ offlinePushInfo?: IOfflinePushInfo;
+}
+export interface IJoinInGroupCallParams {
+ type: number;
+ groupID: string;
+ roomID: number;
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/interface/ICallStore.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/interface/ICallStore.ts
new file mode 100644
index 0000000..9c91259
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/interface/ICallStore.ts
@@ -0,0 +1,41 @@
+import { CallStatus, CallRole, CallMediaType, VideoDisplayMode, VideoResolution, TDeviceList, CameraPosition } from '../const/index';
+import { IUserInfo } from './index';
+
+export interface IToastInfo {
+ text: string;
+ type?: string; // 默认 info 通知, 取值: 'info' | 'warn' | 'success' | 'error'
+}
+export interface ICallStore {
+ callStatus: CallStatus; // 当前的通话状态, 默认: 'idle'
+ callRole: CallRole; // 通话角色, 默认: 'callee'
+ callMediaType: CallMediaType; // 通话类型
+ localUserInfo: IUserInfo; // 自己的信息, 默认: { userId: '' }
+ localUserInfoExcludeVolume: IUserInfo; // 不包含音量的当前用户信息
+ remoteUserInfoList: Array; // 远端用户信息列表, 默认: []
+ remoteUserInfoExcludeVolumeList: Array; // 不包含音量的远端用户信息列表
+ // 被叫在未接通时,展示主叫的 userId、头像。但是如果主叫进入通话后再挂断,此时被叫无法知道主叫的信息了。
+ // 因为目前 store 中仅提供了 remoteUserInfoList 数据,主叫离开后,被叫就没有主叫的信息了。因此考虑在 store 中增加 callerUserInfo 字段。
+ callerUserInfo: IUserInfo;
+ isGroup: boolean; // 是否是群组通话, 默认: false
+ callDuration: string; // 通话时长, 默认: '00:00:00'
+ callTips: string; // 通话提示的信息. 例如: '等待谁接听', 'xxx 拒绝通话', 'xxx 挂断通话'
+ toastInfo: IToastInfo; // 远端用户挂断、拒绝、超时、忙线等的 toast 提示信息
+ isMinimized: boolean; // 当前是否悬浮窗模式, 默认: false
+ enableFloatWindow: boolean, // 开启/关闭悬浮窗功能,默认: false
+ bigScreenUserId: string, // 当前大屏幕显示的 userID 用户
+ language: string; // 当前语言
+ isClickable: boolean; // 按钮是否可点击(呼叫后, '挂断' 按钮不可点击, 发送信令后才可以点击)
+ showPermissionTip: boolean; // 设备权限弹窗是否展示(如果有麦克风权限为 false,如果没有麦克风也没有摄像头权限为 true)
+ deviceList: TDeviceList;
+ groupID: string;
+ roomID: number;
+ cameraPosition: CameraPosition; // 前置或后置,值为front, back
+ // TUICallKit 组件上的属性
+ displayMode: VideoDisplayMode; // 设置预览远端的画面显示模式, 默认: VideoDisplayMode.COVER
+ videoResolution: VideoResolution; // 设置视频分辨率, 默认: VideoResolution.RESOLUTION_480P
+ // 小程序相关属性
+ pusher: any;
+ player: any[];
+ isEarPhone: boolean; // 是否是听筒, 默认: false
+ showSelectUser: boolean;
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/interface/ITUIGlobal.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/interface/ITUIGlobal.ts
new file mode 100644
index 0000000..48b43fb
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/interface/ITUIGlobal.ts
@@ -0,0 +1,38 @@
+/**
+ * @interface TUIGlobal
+ * @property {Object} global 根据运行环境代理 wx、uni、window
+ * @property {Boolean} isPC true 标识是 pc 网页
+ * @property {Boolean} isH5 true 标识是 手机 H5
+ * @property {Boolean} isWeChat true 标识是 微信小程序
+ * @property {Boolean} isApp true 标识是 uniapp 打包的 native app
+ * @property {Boolean} isUniPlatform true 标识当前应用是通过 uniapp 平台打包的产物
+ * @property {Boolean} isOfficial true 标识是腾讯云官网 Demo 应用
+ * @property {Boolean} isWIN true 标识是window系统pc
+ * @property {Boolean} isMAC true 标识是mac os系统pc
+*/
+export interface ITUIGlobal {
+ global: any; // 挂在 wx、uni、window 对象
+ isPC: boolean;
+ isH5: boolean;
+ isWeChat: boolean;
+ isApp: boolean;
+ isUniPlatform: boolean;
+ isOfficial: boolean;
+ isWIN: boolean;
+ isMAC: boolean;
+
+ /**
+ * 初始化 TUIGlobal 环境变量
+ * @function
+ * @private
+ */
+ initEnv(): void;
+
+ /**
+ * 初始化 isOfficial
+ * @function
+ * @param {number} SDKAppID 当前实例的应用 SDKAppID
+ * @private
+ */
+ initOfficial(SDKAppID: number): void;
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/interface/ITUIStore.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/interface/ITUIStore.ts
new file mode 100644
index 0000000..c325355
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/interface/ITUIStore.ts
@@ -0,0 +1,85 @@
+import { StoreName } from '../const/index';
+
+// 此处 Map 的 value = 1 为占位作用
+export type Task = Record void, 1>>>
+
+export interface IOptions {
+ [key: string]: (newData?: any) => void;
+}
+
+/**
+ * @class TUIStore
+ * @property {ICustomStore} customStore 自定义 store,可根据业务需要通过以下 API 进行数据操作。
+*/
+export interface ITUIStore {
+ task: Task;
+
+ /**
+ * UI 组件注册监听
+ * @function
+ * @param {StoreName} storeName store 名称
+ * @param {IOptions} options UI 组件注册的监听信息
+ * @param {Object} params 扩展参数
+ * @param {String} params.notifyRangeWhenWatch 注册时监听时的通知范围
+ * @example
+ * // UI 层监听会话列表更新通知
+ * let onConversationListUpdated = function(conversationList) {
+ * console.warn(conversationList);
+ * }
+ * TUIStore.watch(StoreName.CONV, {
+ * conversationList: onConversationListUpdated,
+ * })
+ */
+ watch(storeName: StoreName, options: IOptions, params?: any): void;
+
+ /**
+ * UI 组件取消监听回调
+ * @function
+ * @param {StoreName} storeName store 名称
+ * @param {IOptions} options 监听信息,包含需要取消的回调等
+ * @example
+ * // UI 层取消监听会话列表更新通知
+ * TUIStore.unwatch(StoreName.CONV, {
+ * conversationList: onConversationListUpdated,
+ * })
+ */
+ unwatch(storeName: StoreName, options: IOptions | string): void;
+
+ /**
+ * 获取 store 中的数据
+ * @function
+ * @param {StoreName} storeName store 名称
+ * @param {String} key 需要获取的 key
+ * @private
+ */
+ getData(storeName: StoreName, key: string): any;
+
+ /**
+ * 更新 store
+ * - 需要使用自定义 store 时可以用此 API 更新自定义数据
+ * @function
+ * @param {StoreName} storeName store 名称
+ * @param {String} key 需要更新的 key
+ * @example
+ * // UI 层更新自定义 Store 数据
+ * TUIStore.update(StoreName.CUSTOM, 'customKey', 'customData')
+ */
+ update(storeName: StoreName, key: string, data: unknown): void;
+
+ /**
+ * 重置 store 内数据
+ * @function
+ * @param {StoreName} storeName store 名称
+ * @param {Array} keyList 需要 reset 的 keyList
+ * @param {boolean} isNotificationNeeded 是否需要触发更新
+ * @private
+ */
+ reset: (storeName: StoreName, keyList?: Array, isNotificationNeeded?: boolean) => void;
+
+ /**
+ * 修改多个 key-value
+ * @param {Object} params 多个 key-value 组成的 object
+ * @param {StoreName} storeName store 名称
+ */
+ updateStore: (params: any, name?: StoreName) => void;
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/interface/index.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/interface/index.ts
new file mode 100644
index 0000000..5f8f48c
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/interface/index.ts
@@ -0,0 +1,4 @@
+export * from './ICallService';
+export * from './ICallStore';
+export * from './ITUIGlobal';
+export * from './ITUIStore';
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/locales/en.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/locales/en.ts
new file mode 100644
index 0000000..b96d213
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/locales/en.ts
@@ -0,0 +1,107 @@
+export const en = {
+ // 按钮文案
+ 'hangup': 'Hang up',
+ 'reject': 'Decline',
+ 'accept': 'Accept',
+ 'camera': 'Camera',
+ 'microphone': 'Microphone',
+ 'speaker': 'speaker',
+ 'open camera': 'Open Camera',
+ 'close camera': 'Close Camera',
+ 'open microphone': 'Open Microphone',
+ 'close microphone': 'Close Microphone',
+ 'video-to-audio': 'Switch to audio',
+ // 通话结果
+ 'other side reject call': 'other side reject call',
+ 'reject call': 'Reject Call',
+ 'cancel': 'Cancel Call',
+ 'other side line busy': 'other side line busy',
+ 'in busy': 'in busy',
+ 'call timeout': 'call timeout',
+ 'no response from the other side': 'no response from the other side',
+ 'end call': 'end call',
+ // 通话提示语
+ 'caller calling message': 'Awaiting response',
+ 'callee calling video message': 'invites you to a video call',
+ 'callee calling audio message': 'invites you to a voice call',
+ 'no microphone access': 'no microphone access',
+ 'no camera access': 'no camera access',
+ 'invite member': 'Invite Member',
+ 'Invited group call': 'invites you to a group call',
+ 'waiting': 'Calling...',
+ 'me': '(me)',
+ // 弹出层文案
+ 'browser-authorization': 'Browser authorization',
+ 'mac-privacy': 'System Preferences -> Security and Privacy -> Privacy',
+ 'win-privacy': 'Setting -> Privacy and Security -> App permissions',
+ 'mac-preferences': 'Open System Preferences',
+ 'win-preferences': 'Open Setting',
+ 'Please enter userID': 'Please enter userID',
+ 'View more': 'View more',
+ 'people selected': 'people selected',
+ 'Select all': 'Select all',
+ 'Cancel': 'Cancel',
+ 'Done': 'Done',
+ // UI3.0 新增
+ 'camera enabled': 'Camera On',
+ 'camera disabled': 'Camera Off',
+ 'microphone enabled': 'Unmuted',
+ 'microphone disabled': 'Muted',
+ 'speaker phone': 'Speaker',
+ 'ear piece': 'Earpiece',
+ 'wait to be called': 'Waiting',
+ 'answered': 'Connected',
+ 'people in the call': ' other(s) in the call',
+ 'failed to obtain speakers': 'failed to obtain speakers',
+ 'you have a new call': 'You have a new call',
+ // 待废弃文案
+ 'Those involved': 'Those involved in the call are',
+ 'call': 'call',
+ 'video-call': 'video call',
+ 'audio-call': 'audio call',
+ 'search': 'search',
+ 'search-result': 'search result',
+ 'no-user': 'user not found',
+ 'member-not-added': 'member not added',
+ 'input-phone-userID': 'phone number or userID',
+ 'not-login': 'not logged in',
+ 'login-status-expire': 'login status is invalid, please refresh the page and try again',
+ 'experience-multi-call': 'experience multi-person calls, please download the full-featured demo: ',
+ 'not-support-multi-call': 'multi-person call interface is not open',
+ 'userID': 'userID',
+ 'already-enter': 'entered the call',
+ 'camera-opened': 'Camera on',
+ 'camera-closed': 'Camera off',
+ 'microphone-opened': 'Mic on',
+ 'microphone-closed': 'Mic off',
+ 'timeout': 'timeout',
+ 'kick out': 'kick out',
+ 'image-resolution': 'Resolution',
+ 'default-image-resolution': 'Default',
+ 'invited-person': 'Invite',
+ 'be-rejected': 'Call declined, ',
+ 'be-no-response': 'No response, ',
+ 'be-line-busy': 'Line busy, ',
+ 'be-canceled': 'The call is canceled, ',
+ 'voice-call-end': 'Voice call ended',
+ 'video-call-end': 'Video call ended',
+ 'method-call-failed': 'Failed to sync the operation',
+ 'failed-to-obtain-permission': 'Failed to obtain permissions',
+ 'environment-detection-failed': 'Failed to check the environment',
+ 'switchToAudioCall-call-failed': 'switch to audio call method failed',
+ 'switchToVideoCall-call-failed': 'switch to video call method failed',
+ 'microphone-unavailable': 'No mic found',
+ 'camera-unavailable': 'No camera found',
+ 'ban-device': 'Device access denied',
+ 'not-supported-webrtc': 'Your current environment does not support WebRTC',
+ 'blacklist-user-tips': 'The identifier is in blacklist. Failed to send this message!',
+ 'is-already-calling': 'TUICallKit is already on a call',
+ 'need-init': 'Before initiating a call with TUICallKit, ensure that the TUICallKitServer.init() method has executed successfully. ',
+ "can't call yourself": "Can't call yourself", // eslint-disable-line
+ 'Use-phone-and-computer': 'Use your mobile phone and computer to experience video calls',
+ 'Wechat scan right QR code': 'Wechat scan right QR code',
+ 'Scan the QR code above': 'Scan the QR code above',
+ 'accept-error': 'Accept failed',
+ 'accept-device-error': 'Accept failed, unable to auth calling device',
+ 'call-error': 'Start call failed',
+};
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/locales/index.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/locales/index.ts
new file mode 100644
index 0000000..6fc923c
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/locales/index.ts
@@ -0,0 +1,57 @@
+import { TUIStore } from '../CallService/index';
+import { NAME, StoreName } from '../const/index';
+import { en } from './en';
+import { zh } from './zh-cn';
+import { ja_JP } from './ja_JP';
+
+export const CallTips: any = {
+ OTHER_SIDE: 'other side',
+ CANCEL: 'cancel',
+ OTHER_SIDE_REJECT_CALL: 'other side reject call',
+ REJECT_CALL: 'reject call',
+ OTHER_SIDE_LINE_BUSY: 'other side line busy',
+ IN_BUSY: 'in busy',
+ CALL_TIMEOUT: 'call timeout',
+ END_CALL: 'end call',
+ TIMEOUT: 'timeout',
+ KICK_OUT: 'kick out',
+ CALLER_CALLING_MSG: 'caller calling message',
+ CALLER_GROUP_CALLING_MSG: 'wait to be called',
+ CALLEE_CALLING_VIDEO_MSG: 'callee calling video message',
+ CALLEE_CALLING_AUDIO_MSG: 'callee calling audio message',
+ NO_MICROPHONE_DEVICE_PERMISSION: 'no microphone access',
+ NO_CAMERA_DEVICE_PERMISSION: 'no camera access',
+};
+
+export const languageData: languageDataType = {
+ en,
+ 'zh-cn': zh,
+ ja_JP,
+};
+
+// language translate
+export function t(key: any): string {
+ const language = TUIStore.getData(StoreName.CALL, NAME.LANGUAGE);
+ // eslint-disable-next-line
+ for (const langKey in languageData) {
+ if (langKey === language) {
+ const currentLanguage = languageData[langKey];
+ // eslint-disable-next-line
+ for (const sentenceKey in currentLanguage) {
+ if (sentenceKey === key) {
+ return currentLanguage[sentenceKey];
+ }
+ }
+ }
+ }
+ const enString = key['en']?.key; // eslint-disable-line
+ console.error(`${NAME.PREFIX}translation is not found: ${key}.`);
+ return enString;
+}
+
+interface languageItemType {
+ [key: string]: string;
+}
+interface languageDataType {
+ [key: string]: languageItemType;
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/locales/ja_JP.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/locales/ja_JP.ts
new file mode 100644
index 0000000..fd4cbe0
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/locales/ja_JP.ts
@@ -0,0 +1,105 @@
+export const ja_JP = {
+ // 按钮文案
+ 'hangup': '通話終了',
+ 'reject': '拒否',
+ 'accept': '応答',
+ 'camera': 'カメラ',
+ 'microphone': 'マイク',
+ 'speaker': 'スピーカー',
+ // 通话结果
+ 'other side reject call': '通話が拒否されました',
+ 'reject call': '通話拒否',
+ 'cancel': '通話をキャンセル',
+ 'other side line busy': '相手が通話中です',
+ 'in busy': '通話中',
+ 'call timeout': '呼び出しタイムアウト',
+ 'end call': '通話終了',
+ // 通话提示语
+ 'caller calling message': '応答を待っています',
+ 'callee calling video message': 'ビデオ通話に招待されました',
+ 'callee calling audio message': '音声通話に招待されました',
+ 'no microphone access': 'マイクにアクセスできません',
+ 'no camera access': 'カメラにアクセスできません',
+ 'invite member': 'メンバーを招待する',
+ // 弹出层文案
+ 'browser-authorization': 'ブラウザ認証',
+ 'mac-privacy': 'システム環境設定 -> セキュリティとプライバシー ->プライバシー',
+ 'win-privacy': '設定 -> セキュリティとプライバシー ->アプリのアクセス許可',
+ 'mac-preferences': 'システム環境設定を開く',
+ 'win-preferences': 'システム設定を開く',
+ 'Please enter userID': 'ユーザーIDを入力してください',
+ 'View more': 'もっと見る',
+ 'people selected': '人が選択されました',
+ 'Select all': 'すべて選択',
+ 'Cancel': 'キャンセル',
+ 'Done': '完了',
+ // UI3.0文案
+ 'open camera': 'オープンカメラ',
+ 'close camera': 'カメラを閉じる',
+ 'open microphone': 'オープンマイク',
+ 'close microphone': 'マイクを閉じる',
+ 'camera enabled': 'カメラオン',
+ 'camera disabled': 'カメラオフ',
+ 'microphone enabled': 'マイクオン',
+ 'microphone disabled': 'マイクオフ',
+ 'speaker phone': 'スピーカーオン',
+ 'wait to be called': '待機中',
+ 'answered': '接続済み',
+ 'people in the call': '通話に参加している人たち',
+ 'failed to obtain speakers': 'スピーカーが見つかりません',
+ 'you have a new call': '新しい通話があります',
+ // 待废弃文案
+ 'timeout': 'タイムアウト',
+ 'kick out': 'キックアウトされました',
+ 'Invited group call': 'グループ通話に招待されました。',
+ 'Those involved': '参加者:',
+ 'call': '通話',
+ 'video-call': 'ビデオ通話',
+ 'audio-call': '音声通話',
+ 'search': '検索',
+ 'search-result': '検索結果',
+ 'Wechat scan right QR code': 'WeChatで右側にあるQRコードを読み取ります。',
+ 'Use-phone-and-computer': '携帯電話とコンピュータを使用してビデオ通話を体験してください',
+ 'Scan the QR code above': '上のQRコードを読み取ります。',
+ 'no-user': 'ユーザーが見つかりませんでした',
+ 'member-not-added': 'メンバーが追加されていません',
+ 'not-login': 'ログインしていません',
+ 'login-status-expire': 'ログインの有効期限が過ぎています。ページを更新してもう一度お試しください',
+ 'experience-multi-call': '複数人で同時に音声通話できるグループ通話機能を体験するには、全機能のデモをダウンロードしてください',
+ 'not-support-multi-call': 'グループ通話インターフェイスが開いていません',
+ 'input-phone-userID': '携帯電話番号/ユーザーIDを入力してください',
+ 'userID': 'ユーザーID',
+ 'already-enter': 'すでに通話に参加しています',
+ 'waiting': '応答を待っています...',
+ 'camera-opened': 'カメラがオンになっています',
+ 'camera-closed': 'カメラがオフになっています',
+ 'microphone-opened': 'マイクがオンになっています',
+ 'microphone-closed': 'マイクがオフになっています',
+ 'image-resolution': '解像度',
+ 'default-image-resolution': 'デフォルト解像度',
+ 'invited-person': 'メンバーを招待',
+ 'video-to-audio': '音声通話に切り替えます',
+ 'me': '(自分)',
+ 'be-rejected': '通話が拒否されました, ',
+ 'be-no-response': '応答なし, ',
+ 'be-line-busy': '相手が通話中です, ',
+ 'be-canceled': '相手が通話をキャンセルしました',
+ 'voice-call-end': '音声通話が終了しました',
+ 'video-call-end': 'ビデオ通話が終了しました',
+ 'method-call-failed': '操作の同期に失敗しました',
+ 'failed-to-obtain-permission': '権限の取得に失敗しました',
+ 'environment-detection-failed': '環境の検出に失敗しました',
+ 'switchToAudioCall-call-failed': '音声通話に切り替えることはできません',
+ 'switchToVideoCall-call-failed': 'ビデオ通話に切り替えることはできません',
+ 'microphone-unavailable': '使用できるマイクがありません',
+ 'camera-unavailable': '使用できるカメラがありません',
+ 'ban-device': 'デバイスへのアクセスが拒否されました',
+ 'not-supported-webrtc': '現在の環境はWebRTCをサポートしていません',
+ 'blacklist-user-tips': 'ユーザーはブラックリストに登録され、通話が開始できませんでした',
+ 'is-already-calling': 'TUICallKit はすでに通話中です',
+ 'need-init': 'TUICallKitで通話を開始する前に、TUICallKitServer.init() メソッドが正常に実行されたことを確認してください。',
+ "can't call yourself": '自分に電話をかけることができません',
+ 'accept-error': '接続できませんでした',
+ 'accept-device-error': '接続できませんでした。発信側デバイスを認証できません',
+ 'call-error': '通話が開始できませんでした',
+};
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/locales/zh-cn.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/locales/zh-cn.ts
new file mode 100644
index 0000000..a6769f8
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/locales/zh-cn.ts
@@ -0,0 +1,102 @@
+export const zh = {
+ // 按钮文案
+ 'hangup': '挂断',
+ 'reject': '拒绝',
+ 'accept': '接受',
+ 'camera': '摄像头',
+ 'microphone': '麦克风',
+ 'speaker': '扬声器',
+ 'open camera': '打开摄像头',
+ 'close camera': '关闭摄像头',
+ 'open microphone': '打开麦克风',
+ 'close microphone': '关闭麦克风',
+ 'video-to-audio': '转语音通话',
+ // 通话结果
+ 'other side reject call': '对方已拒绝',
+ 'reject call': '拒绝通话',
+ 'cancel': '取消通话',
+ 'other side line busy': '对方忙线',
+ 'in busy': '正在忙',
+ 'call timeout': '呼叫超时',
+ 'end call': '结束通话',
+ // 通话提示语
+ 'caller calling message': '等待对方接受邀请',
+ 'callee calling video message': '邀请你视频通话',
+ 'callee calling audio message': '邀请你语音通话',
+ 'no microphone access': '没有麦克风权限',
+ 'no camera access': '没有摄像头权限',
+ 'invite member': '邀请成员',
+ 'Invited group call': '邀请你加入多人通话',
+ 'Those involved': '参与通话的有:',
+ 'waiting': '等待接听...',
+ 'me': '(我)',
+ // 弹出层文案
+ 'browser-authorization': '浏览器授权',
+ 'mac-privacy': '系统偏好设置 -> 安全与隐私 -> 隐私',
+ 'win-privacy': '设置 -> 隐私和安全性 -> 应用权限',
+ 'mac-preferences': '打开系统偏好设置',
+ 'win-preferences': '打开系统设置',
+ 'Please enter userID': '请输入 userID',
+ 'View more': '查看更多',
+ 'people selected': '人已选中',
+ 'Select all': '全选',
+ 'Cancel': '取消',
+ 'Done': '完成',
+ // UI3.0 新增
+ 'camera enabled': '摄像头已开',
+ 'camera disabled': '摄像头已关',
+ 'microphone enabled': '麦克风已开',
+ 'microphone disabled': '麦克风已关',
+ 'speaker phone': '扬声器已开',
+ 'ear piece': '扬声器已关',
+ 'wait to be called': '等待接听',
+ 'answered': '已接通',
+ 'people in the call': '人参与通话',
+ 'failed to obtain speakers': '无法获取扬声器',
+ 'you have a new call': '您有一个新的通话',
+ // 待废弃文案
+ 'timeout': '超时',
+ 'kick out': '被踢',
+ 'call': '通话',
+ 'video-call': '视频通话',
+ 'audio-call': '音频通话',
+ 'search': '搜索',
+ 'search-result': '搜索结果',
+ 'Wechat scan right QR code': '微信扫右二维码',
+ 'Use-phone-and-computer': '用手机与电脑互打体验视频通话',
+ 'Scan the QR code above': '扫描上方二维码',
+ 'no-user': '未搜索到用户',
+ 'member-not-added': '未添加成员',
+ 'not-login': '未登录',
+ 'login-status-expire': '登录状态已失效,请刷新网页重试',
+ 'experience-multi-call': '体验多人通话请下载全功能demo:',
+ 'not-support-multi-call': '多人通话接口未开放',
+ 'input-phone-userID': '请输入手机号/用户ID',
+ 'userID': '用户ID',
+ 'already-enter': '已经进入当前通话',
+ 'image-resolution': '分辨率',
+ 'default-image-resolution': '默认分辨率',
+ 'invited-person': '添加成员',
+ 'be-rejected': '对方已拒绝,',
+ 'be-no-response': '对方无应答,',
+ 'be-line-busy': '对方忙线中,',
+ 'be-canceled': '对方已取消',
+ 'voice-call-end': '语音通话结束',
+ 'video-call-end': '视频通话结束',
+ 'method-call-failed': '同步操作失败',
+ 'failed-to-obtain-permission': '权限获取失败',
+ 'environment-detection-failed': '环境检测失败',
+ 'switchToAudioCall-call-failed': '切语音调用失败',
+ 'switchToVideoCall-call-failed': '切视频调用失败',
+ 'microphone-unavailable': '没有可用的麦克风设备',
+ 'camera-unavailable': '没有可用的摄像头设备',
+ 'ban-device': '用户禁止使用设备',
+ 'not-supported-webrtc': '当前环境不支持 WebRTC',
+ 'blacklist-user-tips': '发起通话失败,被对方拉入黑名单,禁止发起!',
+ 'is-already-calling': 'TUICallKit 已在通话状态',
+ 'need-init': 'TUICallKit 发起通话前需保证 TUICallKitServer.init() 方法执行成功',
+ "can't call yourself": '不能呼叫自己', // eslint-disable-line
+ 'accept-error': '接通失败',
+ 'accept-device-error': '接通失败,通话设备获取失败',
+ 'call-error': '发起通话失败',
+};
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/serve/callManager.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/serve/callManager.ts
new file mode 100644
index 0000000..32b2945
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/serve/callManager.ts
@@ -0,0 +1,108 @@
+import { TUICallKitServer, NAME, TUIStore, StoreName } from '../../index';
+import { CallStatus } from '../const/index';
+import { avoidRepeatedCall } from '../utils/validate/index';
+/**
+ * @param {Number} sdkAppID 用户的sdkAppID 必传
+ * @param {String} userID 用户的userID 必传
+ * @param {String} userSig 用户的userSig 必传
+ * @param {String} globalCallPagePath 跳转的路径 必传
+ * @param {ChatSDK} tim tim实例 非必传
+ */
+const PREFIX = 'callManager';
+export class CallManager {
+ private _globalCallPagePath: string = '';
+ private _isPageRedirected: boolean = false;
+ @avoidRepeatedCall()
+ public async init(params) {
+ console.log('params======================================', params);
+ const { sdkAppID, userID, userSig, globalCallPagePath, tim } = params;
+ if (!globalCallPagePath) {
+ console.error(`${PREFIX} globalCallPagePath Can not be empty!`);
+ return;
+ }
+ this._globalCallPagePath = globalCallPagePath;
+ try {
+ await TUICallKitServer.init({
+ sdkAppID,
+ userID,
+ userSig,
+ tim,
+ });
+ this._watchTUIStore();
+ // 全局监听下,关闭悬浮窗
+ TUICallKitServer.enableFloatWindow(false);
+ console.log(`${PREFIX} init Ready!`);
+ } catch (error) {
+ console.error(`${PREFIX} init fail!`);
+ }
+ }
+
+ // =========================【监听 TUIStore 中的状态】=========================
+ private _watchTUIStore() {
+ TUIStore?.watch(
+ StoreName.CALL,
+ {
+ [NAME.CALL_STATUS]: this._handleCallStatusChange,
+ },
+ {
+ notifyRangeWhenWatch: NAME.MYSELF,
+ }
+ );
+ }
+
+ private _unwatchTUIStore() {
+ TUIStore?.unwatch(StoreName.CALL, {
+ [NAME.CALL_STATUS]: this._handleCallStatusChange,
+ });
+ }
+
+ private _handleCallStatusChange = async (value: CallStatus) => {
+ switch (value) {
+ case CallStatus.CALLING:
+ case CallStatus.CONNECTED:
+ this._handleCallStatusToCalling();
+ break;
+
+ case CallStatus.IDLE:
+ this._handleCallStatusToIdle();
+ break;
+ }
+ };
+
+ private _handleCallStatusToCalling() {
+ if (this._isPageRedirected) return;
+ // @ts-ignore
+ wx.navigateTo({
+ url: `/${this._globalCallPagePath}`,
+ success: () => {
+ this._isPageRedirected = true;
+ },
+ fail: () => {
+ console.error(`${PREFIX} navigateTo fail!`);
+ },
+ complete: () => {},
+ });
+ }
+
+ private _handleCallStatusToIdle() {
+ if (!this._isPageRedirected) return;
+ // @ts-ignore
+ wx.navigateBack({
+ success: () => {
+ this._isPageRedirected = false;
+ },
+ fail: () => {
+ console.error(`${PREFIX} navigateBack fail!`);
+ },
+ complete: () => {},
+ });
+ }
+
+ // 卸载 callManger
+ public async destroyed() {
+ this._globalCallPagePath = '';
+ this._isPageRedirected = false;
+ this._unwatchTUIStore();
+ await TUICallKitServer.destroyed();
+ }
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/utils/common-utils.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/utils/common-utils.ts
new file mode 100644
index 0000000..9a9a62f
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/utils/common-utils.ts
@@ -0,0 +1,239 @@
+import { NAME } from '../const/index';
+import TUIGlobal from '../TUIGlobal/tuiGlobal';
+
+export const isUndefined = function (input: any) {
+ return typeof input === NAME.UNDEFINED;
+};
+
+export const isPlainObject = function (input: any) {
+ // 注意不能使用以下方式判断,因为IE9/IE10下,对象的__proto__是 undefined
+ // return isObject(input) && input.__proto__ === Object.prototype;
+ if (typeof input !== NAME.OBJECT || input === null) {
+ return false;
+ }
+ const proto = Object.getPrototypeOf(input);
+ if (proto === null) { // edge case Object.create(null)
+ return true;
+ }
+ let baseProto = proto;
+ while (Object.getPrototypeOf(baseProto) !== null) {
+ baseProto = Object.getPrototypeOf(baseProto);
+ }
+ // 原型链第一个和最后一个比较
+ return proto === baseProto;
+};
+
+export const isArray = function (input: any) {
+ if (typeof Array.isArray === NAME.FUNCTION) {
+ return Array.isArray(input);
+ }
+ return (Object as any).prototype.toString.call(input).match(/^\[object (.*)\]$/)[1].toLowerCase() === NAME.ARRAY;
+};
+
+export const isPrivateKey = function (key: string) {
+ return key.startsWith('_');
+};
+
+export const isUrl = function (url: string) {
+ return /^(https?:\/\/(([a-zA-Z0-9]+-?)+[a-zA-Z0-9]+\.)+[a-zA-Z]+)(:\d+)?(\/.*)?(\?.*)?(#.*)?$/.test(url);
+};
+/**
+ * 检测input类型是否为string
+ * @param {*} input 任意类型的输入
+ * @returns {Boolean} true->string / false->not a string
+ */
+export const isString = function (input: any) {
+ return typeof input === NAME.STRING;
+};
+export const isBoolean = function (input: any) {
+ return typeof input === NAME.BOOLEAN;
+};
+export const isNumber = function (input: any) {
+ return (
+ // eslint-disable-next-line
+ input !== null &&
+ ((typeof input === NAME.NUMBER && !isNaN(input - 0)) || (typeof input === NAME.OBJECT && input.constructor === Number))
+ );
+};
+
+export function formatTime(secondTime: number): string {
+ const hours: number = Math.floor(secondTime / 3600);
+ const minutes: number = Math.floor((secondTime % 3600) / 60);
+ const seconds: number = Math.floor(secondTime % 60);
+ let callDurationStr: string = hours > 9 ? `${hours}` : `0${hours}`;
+ callDurationStr += minutes > 9 ? `:${minutes}` : `:0${minutes}`;
+ callDurationStr += seconds > 9 ? `:${seconds}` : `:0${seconds}`;
+ return callDurationStr;
+}
+export function formatTimeInverse(stringTime: string): number {
+ const list = stringTime.split(':');
+ return parseInt(list[0]) * 3600 + parseInt(list[1]) * 60 + parseInt(list[2]); // eslint-disable-line
+}
+
+
+// Determine if it is a JSON string
+export function isJSON(str: string) {
+ if (typeof str === NAME.STRING) {
+ try {
+ const data = JSON.parse(str);
+ if (data) {
+ return true;
+ }
+ return false;
+ } catch (error) {
+ console.debug(error);
+ return false;
+ }
+ }
+ return false;
+}
+
+// Determine if it is a JSON string
+export const JSONToObject = function (str: string) {
+ if (!str || !isJSON(str)) {
+ return str;
+ }
+ return JSON.parse(str);
+};
+
+
+/**
+ * 重试函数, catch 时,重试
+ * @param {Promise} promise 需重试的函数
+ * @param {number} num 需要重试的次数
+ * @param {number} time 间隔时间(s)
+ * @returns {Promise} im 接口的 response 原样返回
+ */
+export const retryPromise = (promise: Promise, num: number = 6, time: number = 0.5) => {
+ let n = num;
+ const func = () => promise;
+ return func()
+ .catch((error: any) => {
+ if (n === 0) {
+ throw error;
+ }
+ const timer = setTimeout(() => {
+ func();
+ clearTimeout(timer);
+ n = n - 1;
+ }, time * 1000);
+ });
+};
+
+// /**
+// * 节流函数(目前 TUICallKit 增加防重调用装饰器,该方法可删除)
+// * @param {Function} func 传入的函数
+// * @param {wait} time 间隔时间(ms)
+// */
+// export const throttle = (func: Function, wait: number) => {
+// let previousTime = 0;
+// return function () {
+// const now = Date.now();
+// const args = [...arguments];
+// if (now - previousTime > wait) {
+// func.apply(this, args);
+// previousTime = now;
+// }
+// };
+// }
+
+/**
+ * web call engine 重复调用时的错误, 这种错误在 TUICallKit 应该忽略
+ * @param {any} error 错误信息
+ * @returns {Boolean}
+ */
+export function handleRepeatedCallError(error: any) {
+ if (error?.message.indexOf('is ongoing, please avoid repeated calls') !== -1) {
+ return true;
+ }
+ return false;
+}
+/**
+ * 设备无权限时的错误处理
+ * @param {any} error 错误信息
+ * @returns {Boolean}
+ */
+export function handleNoDevicePermissionError(error: any) {
+ const { message } = error;
+ if (message.indexOf('NotAllowedError: Permission denied') !== -1) {
+ return true;
+ }
+ return false;
+}
+
+/*
+ * 获取向下取整的 performance.now() 值
+ * 在不支持 performance.now 的浏览器中,使用 Date.now(). 例如 ie 9,ie 10,避免加载 sdk 时报错
+ * @export
+ * @return {Number}
+ */
+export function performanceNow() {
+ // if (!performance || !performance.now) {
+ // return Date.now();
+ // }
+ // return Math.floor(performance.now()); // uni-app 打包小程序没有 performance, 报错
+ return Date.now();
+
+}
+/**
+ * 检测input类型是否为function
+ * @param {*} input 任意类型的输入
+ * @returns {Boolean} true->input is a function
+ */
+export const isFunction = function (input: any) {
+ return typeof input === NAME.FUNCTION;
+};
+
+/*
+ * 获取浏览器语言
+ * @export
+ * @return {zh-cn | en}
+ */
+export const getLanguage = () => {
+ if (TUIGlobal.getInstance().isWeChat) {
+ return 'zh-cn';
+ }
+ // @ts-ignore
+ const lang = (navigator?.language || navigator?.userLanguage || '').substr(0, 2);
+ let language = 'en';
+ switch (lang) {
+ case 'zh':
+ language = 'zh-cn';
+ break;
+ case 'ja':
+ language = 'ja_JP';
+ break;
+ default:
+ language = 'en';
+ }
+ return language;
+};
+
+export function noop(e: any) {}
+
+/**
+ * Get the object type string
+ * @param {*} input 任意类型的输入
+ * @returns {String} the object type string
+ */
+export const getType = function(input) {
+ return Object.prototype.toString
+ .call(input)
+ .match(/^\[object (.*)\]$/)[1]
+ .toLowerCase();
+};
+// 修改对象键名
+export function modifyObjectKey(obj, oldKey, newKey) {
+ if (!obj.hasOwnProperty(oldKey)) {
+ return obj;
+ }
+ const newObj = {};
+ Object.keys(obj).forEach(key => {
+ if (key === oldKey) {
+ newObj[newKey] = obj[key];
+ } else {
+ newObj[key] = obj[key];
+ }
+ });
+ return newObj;
+}
\ No newline at end of file
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/utils/decorators/promise-retry.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/utils/decorators/promise-retry.ts
new file mode 100644
index 0000000..6c926ce
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/utils/decorators/promise-retry.ts
@@ -0,0 +1,51 @@
+import promiseRetry from '../retry';
+
+/**
+ * 异步函数重试 Interface
+ * @param {number} [retries = 5] 重试次数
+ * @param {number} [timeout = 2000] 重试间隔时间
+ * @param {Function=} onError 重试错误回调
+ * @param {Function=} onRetrying 重试回调
+ * @param {Function=} onRetryFailed 重试失败回调
+ */
+interface IPromiseRetryDecoratorSettings {
+ retries?: number;
+ timeout?: number;
+ onError?: Function;
+ onRetrying?: Function;
+ onRetryFailed?: Function;
+};
+
+/**
+ * 装饰器函数:给异步函数增加重试
+ * @param {Object} settings 入参
+ * @returns {Function}
+ * @example
+ * class LocalStream {
+ * @promiseRetryDecorator({
+ * retries: 10,
+ * timeout: 3000,
+ * onRetryFailed: function(error) {
+ * }
+ * })
+ * async recoverCapture(options) {}
+ * }
+ */
+export default function promiseRetryDecorator(settings: IPromiseRetryDecoratorSettings) {
+ return function(target, name, descriptor) {
+ const { retries = 5, timeout = 2000, onError, onRetrying, onRetryFailed } = settings;
+ const oldFn = promiseRetry({
+ retryFunction: descriptor.value,
+ settings: { retries, timeout },
+ onError,
+ onRetrying,
+ onRetryFailed,
+ context: null,
+ });
+
+ descriptor.value = function(...args) {
+ return oldFn.apply(this, args);
+ };
+ return descriptor;
+ };
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/utils/env.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/utils/env.ts
new file mode 100644
index 0000000..267855c
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/utils/env.ts
@@ -0,0 +1,51 @@
+// eslint-disable-next-line
+declare var wx: any;
+// eslint-disable-next-line
+declare var uni: any;
+// eslint-disable-next-line
+declare var window: any;
+
+// 在 uniApp 框架下,打包 H5、ios app、android app 时存在 wx/qq/tt/swan/my 等变量会导致引入 web sdk 环境判断失效
+// 小程序 getSystemInfoSync 返回的 fontSizeSetting 在 H5 和 app 中为 undefined,所以通过 fontSizeSetting 增强小程序环境判断
+// wx 小程序
+export const IN_WX_MINI_APP = (typeof wx !== 'undefined' && typeof wx.getSystemInfoSync === 'function' && Boolean(wx.getSystemInfoSync().fontSizeSetting));
+
+// 用 uni-app 打包 native app,此时运行于 js core,无 window 等对象,此时调用 api 都得 uni.xxx,由于风格跟小程序类似,就归为 IN_MINI_APP 的一种
+export const IN_UNI_NATIVE_APP = (typeof uni !== 'undefined' && typeof uni === 'undefined');
+
+export const IN_MINI_APP = IN_WX_MINI_APP || IN_UNI_NATIVE_APP;
+
+export const IN_UNI_APP = (typeof uni !== 'undefined');
+
+// 在 uniApp 框架下,由于客户打包 ios app、android app 时 window 不一定存在,所以通过 !IN_MINI_APP 进行判断
+// 非 uniApp 框架下,仍然通过 window 结合 IN_MINI_APP 进行判断,可兼容 Taro3.0+ 暴露 window 对象引起的 IN_BROWSER 判断失效问题
+export const IN_BROWSER = (function () {
+ if (typeof uni !== 'undefined') {
+ return !IN_MINI_APP;
+ }
+ return (typeof window !== 'undefined') && !IN_MINI_APP;
+}());
+
+// 命名空间
+export const APP_NAMESPACE = (function () {
+ if (IN_WX_MINI_APP) {
+ return wx;
+ }
+ if (IN_UNI_APP) {
+ return uni;
+ }
+ return window;
+}());
+
+// eslint-disable-next-line no-mixed-operators
+const USER_AGENT = IN_BROWSER && window && window.navigator && window.navigator.userAgent || '';
+const IS_ANDROID = /Android/i.test(USER_AGENT);
+const IS_WIN_PHONE = /(?:Windows Phone)/.test(USER_AGENT);
+const IS_SYMBIAN = /(?:SymbianOS)/.test(USER_AGENT);
+const IS_IOS = /iPad/i.test(USER_AGENT) || /iPhone/i.test(USER_AGENT) || /iPod/i.test(USER_AGENT);
+
+export const IS_H5 = IS_ANDROID || IS_WIN_PHONE || IS_SYMBIAN || IS_IOS;
+
+export const IS_PC = IN_BROWSER && !IS_H5;
+export const IS_WIN = IS_PC && USER_AGENT.includes('Windows NT');
+export const IS_MAC = IS_PC && USER_AGENT.includes('Mac');
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/utils/index.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/utils/index.ts
new file mode 100644
index 0000000..ed9791c
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/utils/index.ts
@@ -0,0 +1,16 @@
+export async function checkLocalMP3FileExists(src: string) {
+ if (!src) return false;
+ try {
+ const response = await new Promise((resolve, reject) => {
+ const xhr = new XMLHttpRequest();
+ xhr.open('HEAD', src, true);
+ xhr.onload = () => resolve(xhr);
+ xhr.onerror = () => reject(xhr);
+ xhr.send();
+ });
+ return response.status === 200 && response.getResponseHeader('Content-Type') === 'audio/mpeg';
+ } catch (error) {
+ console.warn(error);
+ return false;
+ }
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/utils/is-empty.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/utils/is-empty.ts
new file mode 100644
index 0000000..550e02b
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/utils/is-empty.ts
@@ -0,0 +1,31 @@
+import { isPlainObject } from './common-utils';
+
+const isEmpty = function (input: any) {
+ // Null and Undefined...
+ if (input === null || typeof (input) === 'undefined') return true;
+ // Booleans...
+ if (typeof input === 'boolean') return false;
+ // Numbers...
+ if (typeof input === 'number') return input === 0;
+ // Strings...
+ if (typeof input === 'string') return input.length === 0;
+ // Functions...
+ if (typeof input === 'function') return input.length === 0;
+ // Arrays...
+ if (Array.isArray(input)) return input.length === 0;
+ // Errors...
+ if (input instanceof Error) return input.message === '';
+ // plain object
+ if (isPlainObject(input)) {
+ // eslint-disable-next-line
+ for (const key in input) {
+ if (Object.prototype.hasOwnProperty.call(input, key)) {
+ return false;
+ }
+ }
+ return true;
+ }
+ return false;
+};
+
+export default isEmpty;
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/utils/retry.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/utils/retry.ts
new file mode 100644
index 0000000..4748584
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/utils/retry.ts
@@ -0,0 +1,88 @@
+import { isFunction, isUndefined } from './common-utils';
+
+const RETRY_STATE_NOT_START = 0;
+const RETRY_STATE_STARTED = 1;
+const RETRY_STATE_STOPPED = 2;
+
+/**
+ * 给异步函数封装重试逻辑
+ * @param {Object} options 重试逻辑入参
+ * @param {Object} options.retryFunction 需要封装的异步函数
+ * @param {Object} options.settings 重试属性
+ * @param {Number} [options.settings.retries = 5] 重试次数
+ * @param {Number} [options.settings.timeout = 1000] 重试间隔
+ * @param {onErrorCallback} options.onError 重试错误回调
+ * @param {onRetryingCallback} [options.onRetrying] 重试后的回调
+ * @param {Object} options.context 上下文,可选
+ * @returns {Function} 封装后的函数
+ * @example
+ * const getUserMedia = promiseRetry({
+ * retryFunction: getUserMedia_,
+ * settings: { retries: 5, timeout: 2000 },
+ * onError: (error, retry, reject) => {
+ * if (error.name === 'NotReadableError') {
+ * retry();
+ * } else {
+ * reject(error);
+ * }
+ * },
+ * onRetrying: retryCount => {
+ * console.warn(`getUserMedia NotReadableError observed, retrying [${retryCount}/5]`);
+ * }
+ * });
+ */
+function promiseRetry({ retryFunction, settings, onError, onRetrying, onRetryFailed, context }) {
+ return function(...args) {
+ const retries = settings.retries || 5;
+ let retryCount = 0;
+ let timer: any = -1;
+ let retryState = RETRY_STATE_NOT_START;
+ const run = async (resolve, reject) => {
+ const ctx = context || this;
+ try {
+ const result = await retryFunction.apply(ctx, args);
+ // 执行成功,正常返回
+ retryCount = 0;
+ resolve(result);
+ } catch (error) {
+ // 用于停止重试
+ const stopRetry = () => {
+ clearTimeout(timer);
+ retryCount = 0;
+ retryState = RETRY_STATE_STOPPED;
+ reject(error);
+ };
+ const retry = () => {
+ if (retryState !== RETRY_STATE_STOPPED && retryCount < retries) {
+ retryCount++;
+ retryState = RETRY_STATE_STARTED;
+ if (isFunction(onRetrying)) {
+ onRetrying.call(ctx, retryCount, stopRetry);
+ }
+ timer = setTimeout(
+ () => {
+ timer = -1;
+ run(resolve, reject);
+ },
+ isUndefined(settings.timeout) ? 1000 : settings.timeout
+ );
+ } else {
+ stopRetry();
+ if (isFunction(onRetryFailed)) {
+ onRetryFailed.call(ctx, error);
+ }
+ }
+ };
+ if (isFunction(onError)) {
+ onError.call(ctx, error, retry, reject, args);
+ } else {
+ retry();
+ }
+ }
+ };
+
+ return new Promise(run);
+ };
+}
+
+export default promiseRetry;
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/utils/timer.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/utils/timer.ts
new file mode 100644
index 0000000..6b11e0c
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/utils/timer.ts
@@ -0,0 +1,162 @@
+/* eslint-disable */
+import { isPlainObject, performanceNow, isFunction } from './common-utils';
+import { NAME } from '../const/index';
+
+/**
+ * 定时器,功能:
+ * 1. 支持定时执行回调 [1,n] 次,用于常规延迟、定时操作
+ * @example
+ * // 默认嵌套执行,count=0 无限次
+ * timer.run(callback, {delay: 2000});
+ * // count=1 等同于 原始setTimeout
+ * timer.run(callback, {delay: 2000, count:0});
+ * 2. 支持 RAF 执行回调,用于小流渲染,audio音量获取等任务,需要渲染频率稳定,支持页面退后台后,用 setTimeout 接管,最短 1s 执行一次
+ * @example
+ * // 默认60fps,可以根据单位时长换算,默认开启后台执行
+ * timer.run('raf', callback, {fps: 60});
+ * // 设置执行次数
+ * timer.run('raf', callback, {fps: 60, count: 300, backgroundTask: false});
+ * 3. 支持空闲任务执行回调, requestIdleCallback 在帧渲染的空闲时间执行任务,可以用于 storage 写入等低优先级的任务
+ * @example
+ * // 支持原生setInterval 但不推荐使用,定时任务推荐用 timeout
+ * timer.run('interval', callback, {delay:2000, count:10})
+ */
+
+class Timer {
+ static taskMap = new Map();
+ static currentTaskID = 1;
+ static generateTaskID() {
+ return this.currentTaskID++;
+ }
+ /**
+ *
+ * @param {string} taskName 'interval' 'timeout'
+ * @param {function} callback
+ * @param {object} options include:
+ * @param {number} options.delay millisecond
+ * @param {number} options.count 定时器回调执行次数,0 无限次 or n次
+ * @param {boolean} options.backgroundTask 在页面静默后是否继续执行定时器
+ */
+ static run(taskName = NAME.TIMEOUT, callback: any, options: any) {
+ // default options
+ if (taskName === NAME.INTERVAL) {
+ options = { ...{ delay: 2000, count: 0, backgroundTask: true }, ...options };
+ } else {
+ options = { ...{ delay: 2000, count: 0, backgroundTask: true }, ...options };
+ }
+ // call run(function, {...})
+ if (isPlainObject(callback)) {
+ options = { ...options, ...callback };
+ }
+ if (isFunction(taskName)) {
+ callback = taskName;
+ taskName = NAME.TIMEOUT;
+ }
+ // 1. 创建 taskID,作为 timer task 的唯一标识,在本函数执行完后返回,用于在调用的地方实现互斥逻辑
+ // 2. 根据 taskName 执行相应的函数
+ const taskItem = {
+ taskID: this.generateTaskID(),
+ loopCount: 0,
+ intervalID: null,
+ timeoutID: null,
+ taskName,
+ callback,
+ ...options
+ };
+ this.taskMap.set(taskItem.taskID, taskItem);
+ // console.log(`timer run task:${taskItem.taskName}, task queue size: ${this.taskMap.size}`);
+ if (taskName === NAME.INTERNAL) {
+ this.interval(taskItem);
+ } else {
+ this.timeout(taskItem);
+ }
+ return taskItem.taskID;
+ }
+
+ /**
+ * 定时循环执行回调函数
+ * 可以指定循环的时间间隔
+ * 可以指定循环次数
+ * @param {object} taskItem
+ * @param {function} callback
+ * @param {*} delay
+ * @param {*} count
+ * @returns ID
+ */
+ static interval(taskItem: any) {
+ // setInterval 缺点,浏览器退后台会降频,循环执行间隔时间不可靠
+ // 创建进入定时器循环的任务函数,函数内:1. 判断是否满足执行条件,2.执行 callback
+ // 通过 setInterval 执行任务函数
+ // 将 intervalID 记录到 taskMap 对应的 item
+ const task = () => {
+ taskItem.callback();
+ taskItem.loopCount += 1;
+ if (this.isBreakLoop(taskItem)) {
+ return;
+ }
+ };
+ return taskItem.intervalID = setInterval(task, taskItem.delay);
+ }
+ /**
+ * 延迟执行回调
+ * count = 0,循环
+ * count = n, 执行n次
+ * @param {object} taskItem
+ *
+ */
+ static timeout(taskItem: any) {
+ // setTimeout 浏览器退后台,延迟变为至少1s
+ const task: any = () => {
+ // 执行回调
+ taskItem.callback();
+ taskItem.loopCount += 1;
+ if (this.isBreakLoop(taskItem)) {
+ return;
+ }
+ // 不修正延迟,每次callback间隔平均
+ return taskItem.timeoutID = setTimeout(task, taskItem.delay);
+ };
+ return taskItem.timeoutID = setTimeout(task, taskItem.delay);
+ }
+
+ static hasTask(taskID: any) {
+ return this.taskMap.has(taskID);
+ }
+
+ static clearTask(taskID: any) {
+ // console.log('timer clearTask start', `| taskID:${taskID} | size:${this.taskMap.size}`);
+ if (!this.taskMap.has(taskID)) {
+ return true;
+ }
+ const { intervalID, timeoutID, onVisibilitychange } = this.taskMap.get(taskID);
+ if (intervalID) {
+ clearInterval(intervalID);
+ }
+ if (timeoutID) {
+ clearTimeout(timeoutID);
+ }
+ if (onVisibilitychange) {
+ document.removeEventListener('visibilitychange', onVisibilitychange);
+ }
+ this.taskMap.delete(taskID);
+ // console.log('timer clearTask end ', `| size:${this.taskMap.size}`);
+ return true;
+ }
+ /**
+ * 1. 如果已移除出定时队列,退出当前任务
+ * 2. 如果当前任务已满足次数限制,则退出当前任务
+ * @param {object} taskItem
+ * @returns
+ */
+ static isBreakLoop(taskItem: any) {
+ if (!this.taskMap.has(taskItem.taskID)) {
+ return true;
+ }
+ if (taskItem.count !== 0 && taskItem.loopCount >= taskItem.count) {
+ this.clearTask(taskItem.taskID);
+ return true;
+ }
+ return false;
+ }
+}
+export default Timer;
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/utils/validate/avoidRepeatedCall.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/utils/validate/avoidRepeatedCall.ts
new file mode 100644
index 0000000..df56eb4
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/utils/validate/avoidRepeatedCall.ts
@@ -0,0 +1,34 @@
+import { NAME } from '../../const/index';
+
+/**
+ * 装饰器:阻止函数重复调用
+ * @export
+ * @param {Object} options 入参
+ * @param {Function} options.fn 函数
+ * @param {Object} options.context 上下文对象
+ * @param {String} options.name 函数名
+ * @returns {Function} 封装后的函数
+ */
+export function avoidRepeatedCall() {
+ return function (target: any, name: string, descriptor: any) {
+ const oldFn = descriptor.value;
+ const isCallingSet = new Set();
+ descriptor.value = async function (...args: any[]) {
+ if (isCallingSet.has(this)) {
+ console.warn((`${NAME.PREFIX}previous ${name}() is ongoing, please avoid repeated calls`));
+ // throw new Error(`previous ${name}() is ongoing, please avoid repeated calls`);
+ return;
+ }
+ try {
+ isCallingSet.add(this);
+ const result = await oldFn.apply(this, args);
+ isCallingSet.delete(this);
+ return result;
+ } catch (error) {
+ isCallingSet.delete(this);
+ throw error;
+ }
+ };
+ return descriptor;
+ };
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/utils/validate/index.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/utils/validate/index.ts
new file mode 100644
index 0000000..283fe0e
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/utils/validate/index.ts
@@ -0,0 +1,11 @@
+import { avoidRepeatedCall } from './avoidRepeatedCall';
+import { paramValidate } from './validateParams';
+import { VALIDATE_PARAMS } from './validateConfig';
+// import { apiCallQueue } from "./apiCallQueue";
+
+export {
+ VALIDATE_PARAMS,
+ paramValidate,
+ avoidRepeatedCall,
+ // apiCallQueue,
+};
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/utils/validate/validateConfig.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/utils/validate/validateConfig.ts
new file mode 100644
index 0000000..c31882a
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/utils/validate/validateConfig.ts
@@ -0,0 +1,188 @@
+import { NAME, MAX_NUMBER_ROOM_ID, VideoResolution, VideoDisplayMode } from "../../const/index";
+
+export const VALIDATE_PARAMS = {
+ init: {
+ SDKAppID: {
+ required: true,
+ rules: [NAME.NUMBER],
+ allowEmpty: false,
+ },
+ userID: {
+ required: true,
+ rules: [NAME.STRING],
+ allowEmpty: false,
+ },
+ userSig: {
+ required: true,
+ rules: [NAME.STRING],
+ allowEmpty: false,
+ },
+ tim: {
+ required: false,
+ rules: [NAME.OBJECT],
+ },
+ },
+ call: {
+ userID: {
+ required: true,
+ rules: [NAME.STRING],
+ allowEmpty: false
+ },
+ type: {
+ required: true,
+ rules: [NAME.NUMBER],
+ range: [1, 2],
+ allowEmpty: false
+ },
+ roomID: {
+ required: false,
+ rules: [NAME.NUMBER], // 仅支持数字房间号, 后续会支持字符串房间号
+ range: `1~${MAX_NUMBER_ROOM_ID}`,
+ allowEmpty: false,
+ },
+ userData: {
+ required: false,
+ rules: [NAME.STRING],
+ allowEmpty: false,
+ },
+ timeout: {
+ required: false,
+ rules: [NAME.NUMBER],
+ allowEmpty: false
+ }
+ },
+ groupCall: {
+ userIDList: {
+ required: true,
+ rules: [NAME.ARRAY],
+ allowEmpty: false
+ },
+ type: {
+ required: true,
+ rules: [NAME.NUMBER],
+ range: [1, 2],
+ allowEmpty: false
+ },
+ groupID: {
+ required: true,
+ rules: [NAME.STRING],
+ allowEmpty: false
+ },
+ roomID: {
+ required: false,
+ rules: [NAME.NUMBER], // 仅支持数字房间号, 后续会支持字符串房间号
+ range: `1~${MAX_NUMBER_ROOM_ID}`,
+ allowEmpty: false
+ },
+ timeout: {
+ required: false,
+ rules: [NAME.NUMBER],
+ allowEmpty: false
+ },
+ userData: {
+ required: false,
+ rules: [NAME.STRING],
+ allowEmpty: false,
+ },
+ offlinePushInfo: {
+ required: false,
+ rules: [NAME.OBJECT],
+ allowEmpty: false,
+ },
+ },
+ joinInGroupCall: {
+ type: {
+ required: true,
+ rules: [NAME.NUMBER],
+ range: [1, 2],
+ allowEmpty: false
+ },
+ groupID: {
+ required: true,
+ rules: [NAME.STRING],
+ allowEmpty: false
+ },
+ roomID: {
+ required: true,
+ rules: [NAME.NUMBER],
+ allowEmpty: false,
+ },
+ },
+ inviteUser: {
+ userIDList: {
+ required: true,
+ rules: [NAME.ARRAY],
+ allowEmpty: false
+ },
+ },
+ setSelfInfo: {
+ nickName: {
+ required: false,
+ rules: [NAME.STRING],
+ allowEmpty: false,
+ },
+ avatar: {
+ required: false,
+ rules: [NAME.STRING],
+ allowEmpty: false,
+ }
+ },
+ enableFloatWindow: [
+ {
+ key: "enable",
+ required: false,
+ rules: [NAME.BOOLEAN],
+ allowEmpty: false,
+ }
+ ],
+ enableAIVoice: [
+ {
+ key: "enable",
+ required: true,
+ rules: [NAME.BOOLEAN],
+ allowEmpty: false,
+ }
+ ],
+ enableMuteMode: [
+ {
+ key: "enable",
+ required: true,
+ rules: [NAME.BOOLEAN],
+ allowEmpty: false,
+ }
+ ],
+ setCallingBell: [
+ {
+ key: "filePath",
+ required: false,
+ rules: [NAME.STRING],
+ allowEmpty: true,
+ }
+ ],
+ setLanguage: [
+ {
+ key: "language",
+ required: true,
+ rules: [NAME.STRING],
+ allowEmpty: false
+ }
+ ],
+ setVideoDisplayMode: [
+ {
+ key: "displayMode",
+ required: true,
+ rules: [NAME.STRING],
+ range: [VideoDisplayMode.CONTAIN, VideoDisplayMode.COVER, VideoDisplayMode.FILL],
+ allowEmpty: false
+ }
+ ],
+ setVideoResolution: [
+ {
+ key: "resolution",
+ required: true,
+ rules: [NAME.STRING],
+ range: [VideoResolution.RESOLUTION_1080P, VideoResolution.RESOLUTION_480P, VideoResolution.RESOLUTION_720P],
+ allowEmpty: false
+ }
+ ]
+};
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/utils/validate/validateParams.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/utils/validate/validateParams.ts
new file mode 100644
index 0000000..c1a0543
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/TUICallService/utils/validate/validateParams.ts
@@ -0,0 +1,88 @@
+import { getType, isArray, isString, isUndefined, isNumber, modifyObjectKey } from "../common-utils";
+import { NAME } from "../../const/index";
+const PREFIX = NAME.PREFIX + "API";
+
+export function paramValidate (config: any) {
+ return function (target, propertyName: string, descriptor: PropertyDescriptor) {
+ let method = descriptor.value;
+ descriptor.value = function (...args) {
+ doValidate.call(this, config, args, propertyName);
+ return method.apply(this, args);
+ };
+ return descriptor;
+ };
+}
+function doValidate(config, args, name) {
+ try {
+ // 兼容 init 方法中: SDKAppID sdkAppID 两种写法的参数校验判断
+ if (!args[0].SDKAppID) {
+ config = modifyObjectKey(config, "SDKAppID", "sdkAppID");
+ }
+ if (isArray(config)) {
+ for (let i = 0; i < config.length; i++) {
+ check.call(this, {
+ ...config[i],
+ value: args[i],
+ name,
+ });
+ }
+ } else {
+ for (const key in config) {
+ if (config.hasOwnProperty(key)) {
+ check.call(this, {
+ ...config[key],
+ value: args[0][key],
+ name,
+ key,
+ });
+ }
+ }
+ }
+ } catch (error) {
+ console.error(error);
+ throw error;
+ }
+}
+function check({ required, rules, range, value, allowEmpty, name, key }) {
+ // 用户没传指定参数
+ if (isUndefined(value)) {
+ // 检查必填参数, 若配置是必填则报错
+ if (required) {
+ throw new Error(`${PREFIX}<${name}>: ${key} is required.`);
+ } else {
+ return;
+ }
+ }
+ // 判断参数类型是否正确
+ const result = rules.some((item)=>item === getType(value));
+ let type = '';
+ if (!result) {
+ for (let i = 0; i < rules.length; i++) {
+ let str = rules[i];
+ str = str.replace(str[0], str[0].toUpperCase());
+ type += `${str}/`;
+ }
+ type = type.substring(0, type.length - 1);
+ throw new Error(`${PREFIX}<${name}>: ${key} must be ${type}, current ${key} is ${typeof value}.`);
+ }
+ // 不允许传空值, 例如: '', ' '
+ if (allowEmpty === false) {
+ const isEmptyString = isString(value) && value.trim() === '';
+ if (isEmptyString) {
+ throw new Error(`${PREFIX}<${name}>: ${key} is blank.`);
+ }
+ }
+ // 判断是否符合限制条件
+ if (isArray(range)) {
+ if (range && range.indexOf(value) === -1) {
+ throw new Error(`${PREFIX}<${name}>: ${key} error, only be ${range}, current ${key} is ${value}.`);
+ }
+ }
+ // 取值范围, 前闭后闭
+ if (isString(range) && range.indexOf('~') !== -1) {
+ const valueList = range.split('~');
+ if (value < +valueList[0] || value > +valueList[1] || (isNumber(value) && Number.isNaN(value))) {
+ throw new Error(`${PREFIX}<${name}>: ${key} error, only be ${range}, current ${key} is ${value}.`);
+ }
+ }
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/adapter-vue.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/adapter-vue.ts
new file mode 100644
index 0000000..08932c3
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/adapter-vue.ts
@@ -0,0 +1,4 @@
+// @ts-nocheck
+export * from 'vue';
+
+
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/src/index.ts b/iweb/src/TUIKit/TUIComponents/components/call/src/index.ts
new file mode 100644
index 0000000..c484f7e
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/src/index.ts
@@ -0,0 +1,55 @@
+import {
+ TUIGlobal,
+ TUIStore,
+ StoreName,
+ TUICallKitServer,
+ NAME,
+ StatusChange as STATUS,
+ CallRole,
+ CallMediaType,
+ VideoResolution,
+ VideoDisplayMode,
+ t,
+} from './TUICallService/index';
+// @ts-ignore
+import TUICallKit from './Components/TUICallKit.vue';
+const plugin = (TUICore) => {
+ TUICore.component('TUICallKit', { server: TUICallKitServer });
+ TUICallKitServer.bindTUICore(TUICore);
+ return TUICallKit;
+};
+const install = (app) => {
+ app.component('TUICallKit', TUICallKit);
+ console.log('TUICallKit&mini installed', app);
+};
+// @ts-ignore
+TUICallKit.plugin = plugin;
+// @ts-ignore
+TUICallKit.install = install;
+// Web TUICallKit ≤v2.2.1 抛出的字段
+const TUICallType = {
+ AUDIO_CALL: 1,
+ VIDEO_CALL: 2,
+};
+const Version = '2.5.2'; // basic-demo 原来上报使用
+
+// 输出产物
+export {
+ TUIGlobal,
+ TUIStore,
+ StoreName,
+ TUICallKitServer,
+ // uni-app 打包小程序无法引入 vue 组件, 只能在使用侧单独引入 vue 文件
+ TUICallKit,
+ plugin,
+ install,
+ TUICallType,
+ NAME,
+ STATUS,
+ CallRole,
+ CallMediaType,
+ VideoResolution,
+ VideoDisplayMode,
+ Version,
+ t,
+};
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/tuicall-uikit-vue.es.js b/iweb/src/TUIKit/TUIComponents/components/call/tuicall-uikit-vue.es.js
new file mode 100644
index 0000000..c303f80
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/tuicall-uikit-vue.es.js
@@ -0,0 +1,8074 @@
+(function () {
+ 'use strict';
+ try {
+ if (typeof document != 'undefined') {
+ var t = document.createElement('style');
+ t.appendChild(
+ document.createTextNode(
+ '@charset "UTF-8";.singleInvite-message[data-v-b7fbc004]{display:flex;flex-direction:column;padding:0 16px;justify-content:center;align-items:center}.singleInvite-message .singleInvite-nick[data-v-b7fbc004]{line-height:40px;text-align:center;font-size:20px;color:#333;letter-spacing:0;font-weight:500;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.singleInvite-message .singleInvite-tips[data-v-b7fbc004]{height:20px;font-size:14px;color:#97989c;letter-spacing:0;font-weight:400;text-align:center}.singleInvite-avatar[data-v-b7fbc004]{width:100px;height:100px;border-radius:12px;margin:0 auto}.singleInvite-box[data-v-5121a73b]{display:flex}.singleInvite-box .singleInvite-message[data-v-5121a73b]{color:#fff;display:flex;flex-direction:column;padding:0 16px;justify-content:center}.singleInvite-box .singleInvite-message .singleInvite-nick[data-v-5121a73b]{font-size:20px;letter-spacing:0;margin:0 auto;font-weight:600;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.singleInvite-box .singleInvite-message .singleInvite-tips[data-v-5121a73b]{font-size:14px;letter-spacing:0;text-align:center;font-weight:400}.singleInvite-box .singleInvite-avatar[data-v-5121a73b]{width:100px;height:100px;border-radius:12px}.singleInvite-header-mobile{display:flex;justify-content:flex-end;padding:0 26px}.singleInvite-header-mobile .singleAudio{margin:0 auto}.singleInvite-header-mobile .singleVideo{display:flex}.singleInvite-header-desktop{display:flex;flex-direction:column;justify-content:flex-start;align-items:center;position:relative;top:30%}.singleInvite-header-desktop .singleInvite-message .singleInvite-nick{font-style:normal;font-weight:600;font-size:40px;line-height:56px;display:flex;flex-direction:row;align-items:center;justify-content:center;width:100%;color:#fff}.singleInvite-header-desktop .singleInvite-message .singleInvite-nick .singleInvite-nick-span{max-width:250px;overflow:hidden;text-overflow:ellipsis;text-align:center;line-height:normal;white-space:nowrap}.singleInvite-header-desktop .singleInvite-message .singleInvite-nick .microphone-icon-container{width:24px;height:24px;background:rgba(0,0,0,.4);border-radius:12px;line-height:24px;margin-left:8px}.singleInvite-header-desktop .singleInvite-tips{font-style:normal;font-weight:400;font-size:14px;line-height:20px;color:#fff}.btn-container[data-v-08b206cb]{display:flex;flex-direction:column;align-items:center;width:70px}.btn-container .btn-body[data-v-08b206cb]{cursor:pointer}.btn-container .btn-body.mobile[data-v-08b206cb]{display:flex;align-items:center;justify-content:center}.btn-container .btn-body img[data-v-08b206cb]{width:100%;height:100%}.btn-container .btn-body image[data-v-08b206cb]{width:100%;height:100%}.btn-container .btn-body .invite-calling-item-loading[data-v-08b206cb]{width:100%;height:100%;animation:rotation-08b206cb 2s linear infinite}@keyframes rotation-08b206cb{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.btn-container .btn-body .invite-calling-item-loading img[data-v-08b206cb]{width:100%;height:100%}.btn-container .btn-text[data-v-08b206cb]{margin-top:5px;white-space:nowrap;font-weight:400;font-size:16px;line-height:20px;text-align:center}.btn-container .btn-text.desktop[data-v-08b206cb]{font-size:14px}.btn-operate-mobile[data-v-5467a3cd]{display:flex;flex-direction:column;align-items:center;position:relative}.btn-operate-mobile .call-operate[data-v-5467a3cd]{width:50px;height:50px;border-radius:8vh;margin:0 5vw;box-sizing:border-box;display:flex;justify-content:center;align-items:center}.btn-operate-mobile .call-operate .invite-calling-item-loading[data-v-5467a3cd]{width:40px;height:40px;animation:rotation-5467a3cd 2s linear infinite}.btn-operate-mobile .call-operate .invite-calling-item-loading img[data-v-5467a3cd]{width:100%;height:100%}.btn-operate-mobile .call-operate .operate-img[data-v-5467a3cd]{width:100%;height:100%;background:none}.btn-operate-mobile .call-operate .operate-img .hangup-img[data-v-5467a3cd]{width:100%;height:100%}.btn-operate-mobile .call-operate .switchAudioCall[data-v-5467a3cd]{width:6vw;height:3vh}.btn-operate-mobile .call-switch .call-operate[data-v-5467a3cd]{width:4vh;height:3vh}.btn-operate-mobile .operate-text[data-v-5467a3cd]{margin:6px 0}.btn-operate-desktop .call-operate[data-v-5467a3cd]{display:flex;flex-direction:column;width:40px;height:40px;margin:0 40px;cursor:pointer}.btn-operate-desktop .invite-calling-item-loading[data-v-5467a3cd]{width:40px;height:40px;animation:rotation-5467a3cd 2s linear infinite}@keyframes rotation-5467a3cd{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.btn-operate-desktop .invite-calling-item-loading img[data-v-5467a3cd]{width:100%;height:100%}.btn-operate-desktop img[data-v-5467a3cd]{width:100%;display:flex;flex-direction:row;justify-content:center;align-items:center;position:relative}.btn-operate-desktop span[data-v-5467a3cd]{display:block;margin-top:5px;white-space:nowrap;font-weight:400;font-size:14px;line-height:20px;text-align:center}.btn-operate-item[data-v-ac984e67]{position:absolute;width:100%;height:100%;top:10px;right:-100px}.btn-operate-item .operate-img[data-v-ac984e67]{width:32px;height:32px}.btn-operate-desktop .call-operate[data-v-76389d5e]{display:flex;flex-direction:column;width:40px;height:40px;cursor:pointer}.btn-operate-desktop .operate-img[data-v-76389d5e]{width:100%;display:flex;flex-direction:row;justify-content:center;align-items:center;position:relative}.btn-operate-desktop span[data-v-76389d5e]{display:block;margin-top:5px;white-space:nowrap;font-weight:400;font-size:14px;line-height:20px;text-align:center}.btn-operate-mobile[data-v-76389d5e]{display:flex;flex-direction:column;align-items:center;margin-bottom:20px}.btn-operate-mobile .call-operate[data-v-76389d5e]{width:28px;height:26px;border-radius:8vh;box-sizing:border-box;display:flex;justify-content:center;align-items:center}.btn-operate-mobile .call-operate .operate-img[data-v-76389d5e]{width:100%;height:100%;background:none}.btn-operate-mobile span[data-v-76389d5e]{margin-top:10px}.popover-container[data-v-f800d151]{position:absolute;width:180px;display:flex;flex-direction:column;align-items:center}.popover-container .body[data-v-f800d151]{display:flex;overflow:hidden;flex-direction:column;align-items:flex-start;width:100%;box-sizing:border-box;padding:10px;border-radius:10px;background-color:#6b758a82;text-overflow:ellipsis;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);color:#fff;z-index:10}.popover-container .triangle[data-v-f800d151]{width:6px;height:6px;background-color:#6b758a82;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);transform:rotate(45deg);margin-top:-3px}.scroll-container[data-v-66448e1e]{width:100%;overflow:hidden}.scroll-container .scroll-content[data-v-66448e1e]{max-height:60px;margin-right:-20px;overflow:hidden auto;padding-right:20px}.device-select-label[data-v-66448e1e]{width:100%;overflow:hidden;padding:5px 3px;text-overflow:ellipsis;white-space:nowrap;font-size:14px;text-align:left;line-height:20px;cursor:pointer}.device-select-label.btn[data-v-66448e1e]{border-top:1px solid rgba(255,255,255,.2)}.device-select-label[data-v-66448e1e]:hover{border-radius:5px;background:rgba(255,255,255,.3215686275)}.device-select-label.select[data-v-66448e1e]{background-color:#0f101433;border-radius:3px}.scroll-container[data-v-23fb3fba]{width:100%;overflow:hidden}.scroll-container .scroll-content[data-v-23fb3fba]{max-height:60px;margin-right:-20px;overflow:hidden auto;padding-right:20px}.camera-container[data-v-23fb3fba]{position:relative;display:flex}.camera-container .arrow-btn[data-v-23fb3fba]{left:43px;width:12px;height:12px;margin-top:7px;padding:5px 5px 5px 0;cursor:pointer}.camera-container .arrow-btn img[data-v-23fb3fba]{width:100%;height:100%}.device-select-label[data-v-23fb3fba]{width:100%;overflow:hidden;padding:5px 3px;text-overflow:ellipsis;white-space:nowrap;font-size:14px;text-align:left;line-height:20px;cursor:pointer}.device-select-label.btn[data-v-23fb3fba]{border-top:1px solid rgba(255,255,255,.2)}.device-select-label[data-v-23fb3fba]:hover{border-radius:5px;background:rgba(255,255,255,.3215686275)}.scroll-container[data-v-f1733acd]{width:100%;overflow:hidden}.scroll-container .scroll-content[data-v-f1733acd]{max-height:60px;margin-right:-20px;overflow:hidden auto;padding-right:20px}.camera-container[data-v-f1733acd]{position:relative;display:flex}.camera-container .arrow-btn[data-v-f1733acd]{left:43px;width:12px;height:12px;margin-top:7px;padding:5px 5px 5px 0;cursor:pointer}.camera-container .arrow-btn img[data-v-f1733acd]{width:100%;height:100%}.device-select-label[data-v-f1733acd]{width:100%;overflow:hidden;padding:5px 3px;text-overflow:ellipsis;white-space:nowrap;font-size:14px;text-align:left;line-height:20px;cursor:pointer}.device-select-label.btn[data-v-f1733acd]{border-top:1px solid rgba(255,255,255,.2)}.device-select-label[data-v-f1733acd]:hover{border-radius:5px;background:rgba(255,255,255,.3215686275)}.text[data-v-c15a821a]{display:block;margin-bottom:20px}.control-wrapper-desktop[data-v-f4e4b14c]{transform:translate(-50%);position:absolute;bottom:0;padding-bottom:40px;left:50%;width:100%;color:#fff;border-radius:inherit;background:linear-gradient(180deg,rgba(0,0,0,0) 0%,rgba(0,0,0,.4) 100%);display:flex;flex-direction:column;flex-wrap:wrap;align-items:center;-webkit-user-select:none;user-select:none}.control-wrapper-desktop .panel-button-area[data-v-f4e4b14c]{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-evenly;margin:30px 0;min-width:40%}.control-wrapper-desktop .panel-button-area .btn[data-v-f4e4b14c]{margin:0 35px}.control-wrapper-desktop .panel-button-area .btn-operate-desktop .call-operate[data-v-f4e4b14c]{display:flex;flex-direction:column;width:40px;height:40px;margin:0 40px;cursor:pointer}.control-wrapper-desktop .panel-button-area .btn-operate-desktop img[data-v-f4e4b14c]{width:100%;display:flex;flex-direction:row;justify-content:center;align-items:center;position:relative}.control-wrapper-desktop .panel-button-area .btn-operate-desktop span[data-v-f4e4b14c]{display:block;margin-top:5px;white-space:nowrap;font-weight:400;font-size:14px;line-height:20px;text-align:center}.control-wrapper-mobile[data-v-f4e4b14c]{position:absolute;bottom:20px;width:100%;display:flex;flex-direction:column;justify-content:center;align-items:center}.control-wrapper-mobile .btn-operate[data-v-f4e4b14c]{display:flex;justify-content:center;align-items:center;position:relative;font-size:16px;letter-spacing:0;font-weight:400;margin-bottom:6px}.control-wrapper-mobile .btn-operate .mobile-reject[data-v-f4e4b14c],.control-wrapper-mobile .btn-operate .mobile-accept[data-v-f4e4b14c]{margin:0px 16vw 40px}.control-wrapper-mobile .btn-operate .mobile-switchAudioCall[data-v-f4e4b14c]{font-size:14px}.control-wrapper-mobile .btn-operate .mobile-switchcamera[data-v-f4e4b14c]{position:absolute;left:80px;top:10px}.control-wrapper-mobile .btn-operate .btn[data-v-f4e4b14c]{margin:0 5vw}.black[data-v-f4e4b14c]{color:#000}.white[data-v-f4e4b14c]{color:#fff}.streamDisplay .remoteListBox>div,.streamDisplay .remoteList-desk>div,.streamDisplay .localVideo>div{background-color:#4c515a!important}.streamBox[data-v-0e391dc0]{width:100%;height:100%}.streamBox .callDuration-text[data-v-0e391dc0]{position:absolute;bottom:20px;left:50%;transform:translate(-50%);font-size:12px;color:#fff;font-family:PingFang SC;font-weight:500px;line-height:20px}.streamBox-mobile[data-v-0e391dc0]{position:relative;height:100%}.streamBox-mobile .smallView[data-v-0e391dc0]{position:fixed;top:8%;right:10%;z-index:999;width:40%;height:30%}.streamBox-mobile .smallView .remoteListBox[data-v-0e391dc0]{width:40%;height:30%}.streamBox-mobile .largeView[data-v-0e391dc0]{width:100%;height:100%}.streamBox-deskTop[data-v-0e391dc0]{position:relative;width:100%;height:100%}.streamBox-deskTop .switchScreenBox[data-v-0e391dc0]{cursor:pointer;position:absolute;top:20px;left:260px;z-index:999}.streamBox-deskTop .switchScreenBox .screenImg[data-v-0e391dc0]{width:16px}.streamBox-deskTop .largeView[data-v-0e391dc0],.streamBox-deskTop .largeView .remoteListBox[data-v-0e391dc0]{width:100%;height:100%}.streamBox-deskTop .smallView[data-v-0e391dc0]{position:absolute;top:20px;left:20px;width:260px;height:180px;z-index:999;background-color:#000}.streamBox-deskTop .smallView .remoteListBox[data-v-0e391dc0]{width:100%;height:100%}.streamBox-deskTop .tag[data-v-0e391dc0]{color:#fff;z-index:inherit;background:rgba(0,0,0,.6);padding:2px 10px;border-top-right-radius:inherit;border-bottom-left-radius:inherit;font-size:14px;position:absolute;left:0;bottom:0;z-index:11;display:flex;align-items:center}.streamBox-deskTop .tag .microphone-icon-container[data-v-0e391dc0]{margin-left:0;margin-right:2px;width:20px;background-color:transparent}.streamBox-deskTop .tag .stream-userInfo[data-v-0e391dc0]{max-width:120px;overflow:hidden;text-overflow:ellipsis;line-height:normal;white-space:nowrap}.small-view[data-v-ba28a885]{position:fixed;top:8%;right:10%;width:40%;height:30%;z-index:999;background-color:#000}.small-view .stream-box[data-v-ba28a885],.small-view .stream-box .stream[data-v-ba28a885]{width:100%;height:100%}.large-view[data-v-ba28a885]{width:100%;height:100%;background-color:#000}.large-view .stream-box[data-v-ba28a885]{width:100%;height:100%}.large-view .stream-box .stream[data-v-ba28a885]{z-index:1;width:100%;height:100%}.small-view[data-v-9c668a74]{position:fixed;top:8%;right:10%;width:40%;height:30%;z-index:999;background-color:#000}.small-view .stream-box[data-v-9c668a74],.small-view .stream-box .stream[data-v-9c668a74]{width:100%;height:100%}.large-view[data-v-9c668a74]{width:100%;height:100%;background-color:#000}.large-view .stream-box[data-v-9c668a74]{width:100%;height:100%}.large-view .stream-box .stream[data-v-9c668a74]{z-index:1;width:100%;height:100%}.streamBox-mobile[data-v-9f380d5c]{width:100%;height:100%;position:relative;background-color:#000}.streamBox-mobile .callDuration-text[data-v-9f380d5c]{position:absolute;bottom:20px;left:50%;transform:translate(-50%);font-size:12px;color:#fff;font-family:PingFang SC;font-weight:500px;line-height:20px}.float-control-panel[data-v-1c12e806]{width:168px;height:56px;background:white;z-index:13;display:flex;flex-wrap:nowrap;justify-content:center;border-radius:40px;box-shadow:#00000029 0 3px 6px,#0000003b 0 3px 6px}.float-control-item-icon[data-v-1c12e806]{display:flex;flex-direction:row;justify-content:center;align-items:center;width:56px;height:56px;position:relative}.float-control-item-icon-container[data-v-1c12e806]{border-radius:40px;width:40px;height:40px;margin:.5rem;cursor:pointer;display:flex;flex-direction:row;justify-content:center;align-items:center}.float-control-item-icon-container[data-v-1c12e806]:hover{background:rgba(218,218,218,.3)}.phone-box[data-v-65da9f94]{width:72px;height:72px;background-color:#fff;display:flex;justify-content:center;align-items:center;flex-direction:column;border-radius:12px;box-shadow:#00000029 0 3px 6px,#0000003b 0 3px 6px}.phone-box .phone-img[data-v-65da9f94]{height:36px;margin-bottom:4px}.phone-box .phone-text[data-v-65da9f94]{font-size:12px;color:#1c66e5;font-family:PingFang SC;font-weight:500px;line-height:16px}.minimize[data-v-18b58bb9]{margin-left:10px}.zoom-box[data-v-209bc62d]{display:block;width:20px;height:20px}.zoom-box .zoom-img[data-v-209bc62d]{width:100%;height:100%}.btn-operate-mobile[data-v-445cd42e]{z-index:99}.videoStyle[data-v-445cd42e]{background:#00183c}.audioStyle[data-v-445cd42e]{position:absolute;background-color:#fff}.singleCall-mobile[data-v-445cd42e]{width:100%;height:100%;display:flex;flex-direction:column;z-index:0}.singleCall-mobile .inviteHeader[data-v-445cd42e]{width:100%;position:fixed;top:107px;z-index:99}.singleCall-mobile .live-pusher[data-v-445cd42e]{width:100%;height:100%}.singleCall-desktop[data-v-445cd42e]{width:100%;height:100%;text-align:center;z-index:0;background:#00183c;position:relative}.singleCall-desktop .toggleSize[data-v-445cd42e]{position:absolute;right:12px;top:12px;z-index:13;cursor:pointer;display:flex;flex-direction:row;justify-content:flex-start}.singleCall-desktop .inviteHeader[data-v-445cd42e]{position:absolute;left:50%;top:42%;transform:translate(-50%,-50%);z-index:99}.topToolbar-desk[data-v-445cd42e]{position:absolute;top:40px;transform:translate(-50%,-50%);left:50%}.topToolbar-desk .topToolbar-time[data-v-445cd42e]{font-size:16px;font-weight:500}.topToolbar-mobile[data-v-445cd42e]{position:absolute;top:30px;left:20px;z-index:99}.topToolbar-mobile-floatWindow[data-v-445cd42e]{position:absolute;z-index:99}.weChatBody[data-v-445cd42e]{width:100%;height:100%}.avatar[data-v-53f6717e]{width:120px;height:120px;border-radius:12px;display:block;margin:40px auto 15px}.tips[data-v-53f6717e]{width:126px;height:auto;font-family:PingFangSC-Regular;font-weight:400;font-size:14px;color:#333;letter-spacing:0;margin:16px auto 40px;text-align:center}.nick[data-v-53f6717e]{font-size:20px;letter-spacing:0;margin:0 auto;font-weight:600;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center}.list-tips[data-v-53f6717e]{width:112px;height:auto;font-family:PingFangSC-Regular;font-weight:400;font-size:14px;color:#333;letter-spacing:0;margin:0 auto 24px;text-align:center}.list[data-v-53f6717e]{position:absolute;left:14vw;margin-top:0 auto;display:flex;width:272px;justify-content:center;flex-wrap:wrap}.list-item[data-v-53f6717e]{flex:.25;text-align:center;width:64px;margin:2px}.list-item .list-avatar[data-v-53f6717e]{border-radius:10%;width:64px;height:64px}.list-item .list-name[data-v-53f6717e]{font-family:PingFangSC-Regular;font-weight:400;font-size:12px;color:#666;letter-spacing:0;line-height:18px;max-width:60px;overflow:hidden;text-overflow:ellipsis;line-height:normal;white-space:nowrap}.groupInvite-header-desktop[data-v-7e774bdd]{display:flex;flex-direction:column;justify-content:flex-start;align-items:center;position:absolute;left:50%;top:42%;transform:translate(-50%,-50%)}.groupInvite-header-desktop .singleInvite-message[data-v-7e774bdd]{text-align:center}.groupInvite-header-desktop .singleInvite-message .singleInvite-nick[data-v-7e774bdd]{font-style:normal;font-weight:600;font-size:40px;line-height:56px;display:flex;align-items:center;justify-content:center;color:#fff}.groupInvite-header-desktop .singleInvite-message .singleInvite-nick .singleInvite-nick-span[data-v-7e774bdd]{max-width:250px;overflow:hidden;text-overflow:ellipsis;text-align:center;line-height:normal;white-space:nowrap}.groupInvite-header-desktop .singleInvite-message .singleInvite-tips[data-v-7e774bdd]{font-style:normal;font-weight:400;font-size:14px;line-height:20px;color:#fff}.control-wrapper-desktop[data-v-655fef75]{transform:translate(-50%);position:absolute;bottom:0;padding-bottom:40px;left:50%;width:100%;color:#fff;border-radius:inherit;background:linear-gradient(180deg,rgba(0,0,0,0) 0%,rgba(0,0,0,.4) 100%);display:flex;flex-direction:column;flex-wrap:wrap;align-items:center;-webkit-user-select:none;user-select:none}.control-wrapper-desktop .panel-button-area[data-v-655fef75]{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-evenly;margin:30px 0;min-width:40%}.control-wrapper-desktop .panel-button-area .btn[data-v-655fef75]{margin:0 40px}.control-wrapper-desktop .panel-button-area .btn-operate-desktop .call-operate[data-v-655fef75]{display:flex;flex-direction:column;width:40px;height:40px;margin:0 40px;cursor:pointer}.control-wrapper-desktop .panel-button-area .btn-operate-desktop img[data-v-655fef75]{width:100%;display:flex;flex-direction:row;justify-content:center;align-items:center;position:relative}.control-wrapper-desktop .panel-button-area .btn-operate-desktop span[data-v-655fef75]{display:block;margin-top:5px;white-space:nowrap;font-weight:400;font-size:14px;line-height:20px;text-align:center}.control-wrapper-mobile[data-v-655fef75]{position:absolute;bottom:20px;width:100%;display:flex;flex-direction:column;justify-content:center;align-items:center}.control-wrapper-mobile .btn-operate[data-v-655fef75]{display:flex;justify-content:center;align-items:center;position:relative;font-size:16px;letter-spacing:0;font-weight:400;margin-bottom:10px}.control-wrapper-mobile .btn-operate .btn[data-v-655fef75]{margin:0 5vw}.control-wrapper-mobile .btn-operate .mobile-invite[data-v-655fef75]{margin-right:30px}.control-wrapper-mobile .btn-operate .mobile-reject[data-v-655fef75],.control-wrapper-mobile .btn-operate .mobile-accept[data-v-655fef75]{margin:0px 16vw 20px}.control-wrapper-mobile .btn-operate .mobile-switchAudioCall[data-v-655fef75]{font-size:14px}.black[data-v-655fef75]{color:#000}.white[data-v-655fef75]{color:#fff}.swiper-item[data-v-5b8dff3a]{position:absolute;display:flex;flex-direction:row;flex-wrap:wrap}.slide-left-enter-active[data-v-5b8dff3a]{transition:all .3s}.slide-left-leave-active[data-v-5b8dff3a]{transform:all .3s}.slide-left-enter-from[data-v-5b8dff3a]{transform:translate(100%)}.slide-left-leave-to[data-v-5b8dff3a]{opacity:0;transform:translate(0)}.slide-right-enter-active[data-v-5b8dff3a],.slide-right-leave-active[data-v-5b8dff3a]{transition:all .3s}.slide-right-enter-from[data-v-5b8dff3a]{opacity:0;transform:translate(-100%)}.slide-right-leave-to[data-v-5b8dff3a]{opacity:0;transform:translate(100%)}.swipe .swiper-sliders-container{position:relative;display:flex;flex-wrap:wrap;align-content:flex-start;width:100%;overflow-x:hidden}.swipe .swiper-sliders-container.swiper-sliders-container-column{flex-direction:column}.swipe .swiper-sliders-container.swiper-sliders-container-row{flex-direction:row}#localVideo[data-v-a3d705eb]{width:100%;height:100%}.invite-calling-list[data-v-a3d705eb]{display:flex;flex-wrap:wrap;width:100%;justify-content:flex-start}.invite-calling-item[data-v-a3d705eb]{height:187px;background-color:#000}.invite-calling-item image[data-v-a3d705eb]{width:100%;height:100%}.invite-calling-item-message[data-v-a3d705eb]{position:absolute;top:0;left:0;float:left;width:100%;height:100%;z-index:2}.invite-calling-item-message .tag[data-v-a3d705eb]{color:#fff;z-index:inherit;background:rgba(0,0,0,.6);padding:2px 10px;border-top-right-radius:inherit;border-bottom-left-radius:inherit;font-size:14px;position:absolute;left:0;bottom:0;z-index:11;display:flex;align-items:center}.invite-calling-item-message .tag .microphone-icon-container[data-v-a3d705eb]{margin-top:4px;margin-right:2px;width:16px;background-color:transparent}.invite-calling-item-message .tag .stream-userInfo[data-v-a3d705eb]{max-width:120px;overflow:hidden;text-overflow:ellipsis;line-height:normal;white-space:nowrap}.invite-calling-item-loading[data-v-a3d705eb]{position:absolute;left:calc(50% - 20px);top:calc(50% - 20px);width:40px;height:40px;animation:rotation-a3d705eb 2s linear infinite}@keyframes rotation-a3d705eb{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.invite-calling-item-loading img[data-v-a3d705eb]{width:100%;height:100%}.invite-calling-item-id[data-v-a3d705eb]{position:absolute;left:2%;bottom:2%;font-family:PingFangSC-Regular;font-weight:400;font-size:12px;color:#fff;max-width:120px;overflow:hidden;text-overflow:ellipsis;line-height:normal;white-space:nowrap}.avatar[data-v-a3d705eb]{background-color:#000;width:100%;height:100%}.group-user-view>span+div{background-color:#4c515a!important}.calling-wrapper[data-v-5a91c8ad]{position:relative;width:100%;height:100%;border-radius:inherit;background:rgba(0,24,60,.7);-webkit-backdrop-filter:blur(34px);backdrop-filter:blur(34px);display:flex;flex-direction:column;justify-content:center;overflow:hidden;z-index:-1}.calling-wrapper[data-v-5a91c8ad]:hover{z-index:inherit;transition:all .5s ease-in-out}#local-dialing[data-v-5a91c8ad],#localVideo[data-v-5a91c8ad]{background-color:#4c515a;background-repeat:no-repeat;background-size:auto;background-position-x:center;background-position-y:calc(50% + 10px)}.localStream-userInfo[data-v-5a91c8ad]{max-width:120px;overflow:hidden;text-overflow:ellipsis;line-height:normal;white-space:nowrap}.panel-button-area[data-v-5a91c8ad]{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:center;margin:30px 0}.panel-dialing-info[data-v-5a91c8ad]{text-align:center}.control-wrapper[data-v-5a91c8ad]:hover{z-index:13}.control-item[data-v-5a91c8ad]{display:flex;flex-direction:column;width:100px;margin:0 20px}.invite-calling-item-loading[data-v-5a91c8ad]{position:absolute;left:calc(50% - 20px);top:calc(50% - 40px);width:40px;height:40px;animation:rotation-5a91c8ad 2s linear infinite}.invite-userInfo[data-v-5a91c8ad]{max-width:120px;overflow:hidden;text-overflow:ellipsis;line-height:normal;white-space:nowrap}@keyframes rotation-5a91c8ad{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.invite-calling-item-loading img[data-v-5a91c8ad]{width:100%;height:100%}.tag[data-v-5a91c8ad]{color:#fff;z-index:inherit;background:rgba(0,0,0,.6);padding:2px 10px;border-top-right-radius:inherit;border-bottom-left-radius:inherit;font-size:14px;position:absolute;left:0;bottom:0;z-index:11;display:flex;align-items:center}.tag .microphone-icon-container[data-v-5a91c8ad]{margin-left:0;margin-right:2px;width:20px;background-color:transparent}.tag .stream-userInfo[data-v-5a91c8ad]{max-width:120px;overflow:hidden;text-overflow:ellipsis;line-height:normal;white-space:nowrap}.switch-large-small[data-v-5a91c8ad]{position:absolute;right:12px;top:12px;width:16px;height:16px;z-index:inherit;cursor:pointer}.small-h5[data-v-5a91c8ad]{position:absolute;width:94px;height:160px;min-height:100px;max-height:60%;top:30px;right:10px;z-index:2;overflow:hidden;background:#000;border-radius:4px}.small[data-v-5a91c8ad]{position:absolute;width:260px;height:170px;min-height:100px;max-height:60%;top:30px;left:30px;z-index:2;overflow:hidden;resize:both;background:#000;border-radius:4px}.large[data-v-5a91c8ad]{min-height:100px;width:100%;height:100%;z-index:1;border-radius:inherit;overflow:hidden}.large .switch-large-small[data-v-5a91c8ad]{display:none}.group-calling-container[data-v-5a91c8ad]{width:100%;height:100%;display:flex;flex-wrap:wrap;justify-content:center}.group-user-view[data-v-5a91c8ad]{width:33.333%;height:33.333%;position:relative;background-color:#4c515a;-webkit-backdrop-filter:blur(34px);backdrop-filter:blur(34px);color:#fff;overflow:hidden}.user-view-text-container[data-v-5a91c8ad]{position:absolute;left:0;top:0;width:100%;height:100%;z-index:11;display:flex;flex-direction:column;justify-content:center;align-items:center;transform:translateY(-20px)}.user-view-user-id[data-v-5a91c8ad]{font-family:PingFang SC;font-style:normal;font-weight:600;font-size:24px;line-height:34px}.user-view-info[data-v-5a91c8ad]{font-family:PingFang SC;font-style:normal;font-weight:400;font-size:12px;line-height:17px}.page-turn[data-v-5a91c8ad]{width:40px;height:86px;border-radius:4.21px;background:rgba(0,0,0,.2);position:absolute;top:50%;transform:translateY(-50%);z-index:11;display:flex;justify-content:center;align-items:center;cursor:pointer}.turn-icon-container[data-v-5a91c8ad]{width:14px;height:23px}.right[data-v-5a91c8ad]{right:0}.microphone-icon-container[data-v-5a91c8ad]{width:24px;height:24px;background:rgba(0,0,0,.4);border-radius:12px;display:flex;justify-content:center;align-items:center;margin-left:8px}.group-user-view-1[data-v-5a91c8ad]{width:100%;height:100%}.group-calling-container-1[data-v-5a91c8ad]{height:100%}.group-user-view-2[data-v-5a91c8ad]{width:50%;height:100%}.group-calling-container-2[data-v-5a91c8ad]{height:50%}.group-user-view-3[data-v-5a91c8ad],.group-user-view-4[data-v-5a91c8ad]{width:50%;height:50%}.group-calling-container-3[data-v-5a91c8ad],.group-calling-container-4[data-v-5a91c8ad]{height:100%}.group-user-view-5[data-v-5a91c8ad],.group-user-view-6[data-v-5a91c8ad]{width:33.333%;height:50%}.group-calling-container-5[data-v-5a91c8ad],.group-calling-container-6[data-v-5a91c8ad]{height:66%}.user-view-user-id-1[data-v-5a91c8ad]{font-size:24px}.user-view-user-id-2[data-v-5a91c8ad],.user-view-user-id-3[data-v-5a91c8ad],.user-view-user-id-4[data-v-5a91c8ad]{font-size:22px}.user-view-user-id-5[data-v-5a91c8ad],.user-view-user-id-6[data-v-5a91c8ad],.user-view-user-id-7[data-v-5a91c8ad],.user-view-user-id-8[data-v-5a91c8ad],.user-view-user-id-9[data-v-5a91c8ad]{font-size:18px}.float-control-panel[data-v-5a91c8ad]{width:168px;height:56px;background:white;z-index:13;position:fixed;top:20px;right:20px;display:flex;flex-wrap:nowrap;justify-content:center;border-radius:40px;box-shadow:#00000029 0 3px 6px,#0000003b 0 3px 6px}.function-buttons[data-v-5a91c8ad]{position:absolute;right:12px;top:12px;z-index:13;cursor:pointer;display:flex;flex-direction:row;justify-content:flex-start}.minimize[data-v-5a91c8ad]{margin-left:10px}.float-control-item-icon[data-v-5a91c8ad]{display:flex;flex-direction:row;justify-content:center;align-items:center;width:56px;height:56px;position:relative}.float-control-item-icon-container[data-v-5a91c8ad]{border-radius:40px;width:40px;height:40px;margin:.5rem;cursor:pointer;display:flex;flex-direction:row;justify-content:center;align-items:center}.float-control-item-icon-container[data-v-5a91c8ad]:hover{background:rgba(218,218,218,.3)}.swipe{width:100%;height:100%;position:absolute;flex-wrap:wrap;display:flex;align-items:flex-start;align-content:flex-start}.swipe .swiper-sliders-container{position:relative;width:100%}.swipe .swipe-dots-container{position:absolute;width:100%;display:flex;justify-content:center;top:400px}.swipe .swipe-dots-container .swipe-dots{width:8px;height:8px;background:#000;opacity:.15;border-radius:20px;margin:5px}.swipe .swipe-dots-container .swipe-current-dots{width:8px;height:8px;background:#000;opacity:1;border-radius:20px;margin:5px}.swiper-item[data-v-444f63bd]{position:absolute;display:flex;flex-direction:row;flex-wrap:wrap;width:50%;height:187px}.slide-left-enter-active[data-v-444f63bd]{transition:all .3s}.slide-left-leave-active[data-v-444f63bd]{transform:all .3s}.slide-left-enter-from[data-v-444f63bd]{transform:translate(100%)}.slide-left-leave-to[data-v-444f63bd]{opacity:0;transform:translate(0)}.slide-right-enter-active[data-v-444f63bd],.slide-right-leave-active[data-v-444f63bd]{transition:all .3s}.slide-right-enter-from[data-v-444f63bd]{opacity:0;transform:translate(-100%)}.slide-right-leave-to[data-v-444f63bd]{opacity:0;transform:translate(100%)}.invite-list[data-v-8c218c4b]{width:100%;height:187px}.invite-calling-list[data-v-8c218c4b],.invite-calling-list .list-box[data-v-8c218c4b]{display:flex;flex-wrap:wrap;width:100%;justify-content:flex-start}.invite-calling-list .list-box .invite-calling-item[data-v-8c218c4b]{width:100%;height:187px}.invite-calling-list .list-box .invite-calling-item .invite-calling-item-message[data-v-8c218c4b]{width:100%;height:100%;position:relative}.invite-calling-list .list-box .invite-calling-item .invite-calling-item-message .invite-calling-item-loading[data-v-8c218c4b]{position:absolute;left:calc(50% - 20px);top:calc(50% - 20px);width:40px;height:40px;animation:rotation-8c218c4b 2s linear infinite}@keyframes rotation-8c218c4b{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.invite-calling-list .list-box .invite-calling-item .invite-calling-item-message .avatar[data-v-8c218c4b]{width:100%;height:100%}.invite-calling-list .list-box .invite-calling-item .invite-calling-item-message .invite-calling-item-id[data-v-8c218c4b]{position:absolute;left:2%;bottom:2%;font-family:PingFangSC-Regular;font-weight:400;font-size:12px;color:#fff}.invite-calling-list .list-box .invite-calling-item .invite-calling-audio[data-v-8c218c4b],.invite-calling-list .list-box .invite-calling-item .invite-calling-audio .pusher-box[data-v-8c218c4b],.invite-calling-list .list-box .invite-calling-item .invite-calling-audio .pusher-box .pusher[data-v-8c218c4b],.invite-calling-list .list-box .invite-calling-item .invite-calling-audio .player-container[data-v-8c218c4b],.invite-calling-list .list-box .invite-calling-item .invite-calling-audio .player-container .player[data-v-8c218c4b]{width:0px;height:0px}.invite-calling-list .list-box .invite-calling-item .invite-calling-item-stream[data-v-8c218c4b],.invite-calling-list .list-box .invite-calling-item .invite-calling-item-stream .pusher-box[data-v-8c218c4b],.invite-calling-list .list-box .invite-calling-item .invite-calling-item-stream .pusher-box .pusher[data-v-8c218c4b]{width:100%;height:100%}.invite-calling-list .list-box .invite-calling-item .invite-calling-item-stream .pusher-box .invite-calling-item-id[data-v-8c218c4b]{position:absolute;left:2%;bottom:2%;font-family:PingFangSC-Regular;font-weight:400;font-size:12px;color:#fff}.invite-calling-list .list-box .invite-calling-item .invite-calling-item-stream .player-container[data-v-8c218c4b]{width:100%;height:100%;background-color:#000}.invite-calling-list .list-box .invite-calling-item .invite-calling-item-stream .player-container .player[data-v-8c218c4b]{width:100%;height:100%}.invite-calling-list .list-box .invite-calling-item .invite-calling-item-stream .player-container .invite-calling-item-id[data-v-8c218c4b]{position:absolute;left:2%;bottom:2%;font-family:PingFangSC-Regular;font-weight:400;font-size:12px;color:#fff}.streamBox[data-v-3308cc63]{width:100%;height:100%}.dialog[data-v-7a89cdf3]{background:rgba(0,0,0,.3)}.dialog-main[data-v-7a89cdf3]{background:#FFFFFF}.dialog-main-header[data-v-7a89cdf3]{font-weight:500;color:#333}.dialog-main-title[data-v-7a89cdf3]{font-family:PingFangSC-Medium;font-weight:500;color:#333}.dialog-main-back[data-v-7a89cdf3]{background:none}.dialog-main-content[data-v-7a89cdf3]{font-weight:400;color:#333}.btn[data-v-7a89cdf3]{font-weight:400;color:#fff;letter-spacing:0}.btn-cancel[data-v-7a89cdf3]{border:1px solid #dddddd;color:#666}.btn-default[data-v-7a89cdf3]{background:#006EFF;border:1px solid #006EFF}.dialog[data-v-7a89cdf3]{position:absolute;width:100%;height:100%;left:0;top:0;z-index:6;display:flex;justify-content:center;align-items:center}.dialog-main[data-v-7a89cdf3]{min-width:368px;border-radius:10px;padding:20px 30px}.dialog-main-header[data-v-7a89cdf3]{display:flex;justify-content:space-between;align-items:center;font-size:16px;line-height:30px}.dialog-main-title[data-v-7a89cdf3]{font-size:16px;line-height:30px}.dialog-main-content[data-v-7a89cdf3]{font-size:14px}.dialog-main-footer[data-v-7a89cdf3]{display:flex;justify-content:flex-end}.btn[data-v-7a89cdf3]{padding:8px 20px;margin:0 6px;border-radius:4px;border:none;font-size:14px;text-align:center;line-height:20px}.btn[data-v-7a89cdf3]:disabled{opacity:.3}.btn[data-v-7a89cdf3]:last-child{margin-right:0}.dialog-h5[data-v-7a89cdf3]{height:100%;top:0;align-items:inherit}.dialog-h5 .dialog-main[data-v-7a89cdf3]{border-radius:0;padding:0;display:flex;flex-direction:column;overflow:hidden;width:100%;min-height:80px;min-width:120px}.dialog-h5 .dialog-main-content[data-v-7a89cdf3]{flex:1;min-width:0;min-height:0;text-align:center}.dialog-h5 .dialog-main-content-uniapp[data-v-7a89cdf3]{padding:40px 0}.dialog-h5 .dialog-main-footer[data-v-7a89cdf3]{border-top:1px solid #DDDDDD}.dialog-h5 .dialog-main-footer .btn[data-v-7a89cdf3]{flex:1;margin:0;background:none;border-right:1px solid #DDDDDD}.dialog-h5 .dialog-main-footer .btn-default[data-v-7a89cdf3]{color:#ff584c;border:none}.center[data-v-7a89cdf3]{align-items:center;padding:20px;box-sizing:border-box}.icon[data-v-b989a330]{display:inline-flex;justify-content:center;align-items:center;margin:0}.main[data-v-216330b4]{background:#FFFFFF;border:1px solid #E0E0E0;box-shadow:0 -4px 12px #0000000f}.main .left[data-v-216330b4]{border-right:1px solid #E8E8E9}.main .transfer-header[data-v-216330b4]{font-weight:500;color:#000;letter-spacing:0}.main .transfer-header input[data-v-216330b4]{background:#FFFFFF;border:1px solid #DEE0E3;font-weight:500;color:#8f959e;letter-spacing:0}.main .transfer-list .transfer-text[data-v-216330b4]{font-weight:500;color:#8f959e;letter-spacing:0}.main .transfer-list-item .disabled[data-v-216330b4]{background:#eeeeee}.btn[data-v-216330b4]{background:#3370FF;border:0 solid #2F80ED;font-weight:400;color:#fff}.btn-cancel[data-v-216330b4]{background:#FFFFFF;border:1px solid #DDDDDD;color:#828282}.btn-no[data-v-216330b4]{background:#e8e8e9;border:1px solid #DDDDDD;font-weight:400;color:#fff}.transfer-h5-header[data-v-216330b4]{background:#FFFFFF}.transfer-h5-header .title[data-v-216330b4]{font-family:PingFangSC-Medium;font-weight:500;color:#000;letter-spacing:0}.main[data-v-216330b4]{box-sizing:border-box;width:541px;height:390px;display:flex;border-radius:8px;padding:20px 0}.main .right[data-v-216330b4]{padding:0 20px;flex:1}.main .right .transfer-list[data-v-216330b4]{padding-right:20px}.main .left[data-v-216330b4]{flex:1;overflow-y:hidden;display:flex;flex-direction:column}.main .left .transfer-header[data-v-216330b4]{padding:0 20px}.main .left .transfer-left-main[data-v-216330b4]{flex:1;overflow-y:auto;padding:0 13px}.main .right[data-v-216330b4]{display:flex;flex-direction:column;text-align:left}.main .right .transfer-right-footer[data-v-216330b4]{align-self:flex-end}.main .right .transfer-right-footer .btn-cancel[data-v-216330b4]{margin-right:12px}.main .right .transfer-list[data-v-216330b4]{overflow-y:auto}.main .transfer-header[data-v-216330b4]{font-size:14px;line-height:14px;padding-bottom:20px}.main .transfer-header input[data-v-216330b4]{box-sizing:border-box;width:100%;border-radius:30px;font-size:10px;line-height:14px;padding:9px 12px}.main .transfer-list[data-v-216330b4]{flex:1;display:flex;flex-direction:column}.main .transfer-list .transfer-text[data-v-216330b4]{font-size:10px;line-height:14px}.main .transfer-list-item[data-v-216330b4]{padding:6px 0;display:flex;align-items:center;font-size:14px;text-align:left}.main .transfer-list-item-content[data-v-216330b4]{flex:1;display:flex;align-items:center}.main .transfer-list-item .avatar[data-v-216330b4]{margin:0 5px 0 8px;border-radius:50%}.main .transfer-list-item .name[data-v-216330b4]{width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.avatar[data-v-216330b4]{width:36px;height:36px;border-radius:5px;font-size:12px;display:flex;justify-content:center;align-items:center}.btn[data-v-216330b4],.btn-no[data-v-216330b4]{padding:4px 28px;font-size:12px;line-height:24px;border-radius:4px}.space-between[data-v-216330b4]{justify-content:space-between}.select-all[data-v-216330b4]{padding-left:8px;font-size:14px}.more[data-v-216330b4]{display:flex;justify-content:center;align-items:center;cursor:pointer;font-size:14px}.transfer-h5[data-v-216330b4]{width:100vw;height:100vh;display:flex;flex-direction:column}.transfer-h5-header[data-v-216330b4]{position:relative;display:flex;justify-content:space-between;align-items:center;font-size:18px;padding:16px 18px}.transfer-h5-header .space[data-v-216330b4],.transfer-h5-header .icon[data-v-216330b4]{width:18px;height:18px}.transfer-h5 .main[data-v-216330b4]{flex-direction:column;width:auto;height:550px;border-radius:0;border:none;box-shadow:none;max-height:calc(100% - 50px);padding:0}.transfer-h5 .main .avatar[data-v-216330b4]{border-radius:5px}.transfer-h5 .main .left[data-v-216330b4]{padding:0;flex:1;border:none;display:flex;flex-direction:column}.transfer-h5 .main .left .transfer-header[data-v-216330b4]{position:sticky;top:0;padding:0 18px}.transfer-h5 .main .left .transfer-header input[data-v-216330b4]{border-radius:5px;font-size:14px}.transfer-h5 .main .left-uniapp-input[data-v-216330b4]{height:36px}.transfer-h5 .main .right[data-v-216330b4]{flex:0;flex-direction:row;align-items:center;box-shadow:inset 0 1px #eee;padding:8px 18px}.transfer-h5 .main .right .transfer-list[data-v-216330b4]{flex-direction:row;width:0}.transfer-h5 .main .right .transfer-list-item-content[data-v-216330b4]{flex:none}.transfer-h5 .main .right .transfer-right-footer[data-v-216330b4]{padding:6px 0;display:flex;align-items:center}.transfer-h5 .main .right .transfer-right-footer .btn[data-v-216330b4]{font-size:14px}ul[data-v-216330b4],ol[data-v-216330b4],li[data-v-216330b4]{margin:0;padding:0}.icon-unselected[data-v-216330b4]{width:18px;height:18px;background:#FFFFFF;border:1px solid #DDDDDD;border-radius:11px;box-sizing:border-box}.group-deskTop[data-v-06420ee0]{background:#00183c;z-index:0}.card[data-v-2ea845a3]{box-sizing:border-box;border-radius:4px;border:1px solid #EBEEF5;background-color:#fff;overflow:hidden;color:#303133;transition:.3s;box-shadow:0 2px 12px #0000001a}.card .card-body[data-v-2ea845a3]{padding:20px}.card-wrapper[data-v-2ea845a3]{display:flex;flex-direction:column;align-items:center;width:500px;position:relative}.card-wrapper .button[data-v-2ea845a3]{box-sizing:border-box;background-color:#104ef5;color:#fff;font-size:12px;height:37px;border-radius:4px;padding:10px}.card-wrapper .image-wrapper[data-v-2ea845a3]{box-sizing:border-box}.title[data-v-2ea845a3]{padding:10px 0;font-size:16px;font-weight:500;line-height:22px}.desc[data-v-2ea845a3]{font-size:12px;margin-bottom:10px}.button[data-v-2ea845a3]{background-color:#104ef5;color:#fff;font-size:12px;height:37px;border-radius:4px;padding:10px}.allow[data-v-2ea845a3]{font-size:12px;color:#666;padding:10px 0 20px}.image[data-v-2ea845a3]{width:100%;border-radius:10px}.close[data-v-2ea845a3]{position:absolute;z-index:999;display:flex;justify-content:center;align-items:center;font-size:20px;right:20px;cursor:pointer;width:20px;height:20px}.tips[data-v-cd63c32e]{width:100%;height:100%}.card[data-v-cd63c32e]{position:fixed;right:0;bottom:0;box-shadow:0 2px 12px #0000001a;border-radius:4px;border:1px solid #EBEEF5;background-color:#fff;overflow:hidden;color:#303133;transition:.3s}.tag[data-v-cd63c32e]{position:fixed;left:0;top:0;width:320px;text-align:left}.toast-container[data-v-27fc22c5]{position:fixed;display:flex;align-items:center;z-index:1002;justify-content:space-between;left:50%;transform:translate(-50%);padding:15px 15px 15px 20px;background-color:#000;color:#fff;box-sizing:border-box;border-radius:4px;border-width:1px;border-style:solid}.toast-container .toast-content[data-v-27fc22c5]{margin-right:16px}.toast-container .toast-close-icon[data-v-27fc22c5]{width:16px;line-height:16px;cursor:pointer}.toast-container .toast-close-icon[data-v-27fc22c5]:before{font-style:normal;content:url(data:image/svg+xml;base64,PHN2ZyB0PSIxNjg4OTk4OTI4NDQ1IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjE2MDkiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCI+PHBhdGggZD0iTTUxMiA0NjYuNzUyTDg2LjY1NiA0MS4zNDRhMzIgMzIgMCAwIDAtNDUuMzEyIDQ1LjMxMkw0NjYuNzUyIDUxMiA0MS4zNDQgOTM3LjM0NGEzMiAzMiAwIDAgMCA0NS4zMTIgNDUuMzEyTDUxMiA1NTcuMjQ4bDQyNS4zNDQgNDI1LjQwOGEzMiAzMiAwIDAgMCA0NS4zMTItNDUuMzEyTDU1Ny4yNDggNTEybDQyNS40MDgtNDI1LjM0NGEzMiAzMiAwIDAgMC00NS4zMTItNDUuMzEyTDUxMiA0NjYuNzUyeiIgZmlsbD0iIzcwNzA3MCIgcC1pZD0iMTYxMCI+PC9wYXRoPjwvc3ZnPg==)}.info[data-v-27fc22c5]{border-color:#ebeef5;color:#909399;background-color:#edf2fc}.success[data-v-27fc22c5]{color:#67c23a;background-color:#f0f9eb;border-color:#e1f3d8}.waring[data-v-27fc22c5]{color:#e6a23c;background-color:#fdf6ec;border-color:#faecd8}.error[data-v-27fc22c5]{color:#f56c6c;background-color:#fef0f0;border-color:#fde2e2}.slide-up-enter-active[data-v-27fc22c5],.slide-up-leave-active[data-v-27fc22c5]{transition:all .5s ease-out}.slide-up-enter-from[data-v-27fc22c5]{opacity:0;transform:translate(-50%,20px)}.slide-up-leave-to[data-v-27fc22c5]{opacity:0;transform:translate(-50%,-20px)}.fade-enter-from[data-v-27fc22c5],.fade-leave-to[data-v-27fc22c5]{opacity:0;transform:translate(-50%,-100%)}.TUICallKit-mobile,.TUICallKit-mobile .singCall{width:100%;height:100%}.transition-animation{transform:translateY(-100%);animation:slideInDown .5s ease forwards}@keyframes slideInDown{0%{transform:translateY(-100%)}to{transform:translateY(0)}}.TUICallKit-desktop{margin:0 auto;position:relative;border-radius:inherit;width:100%;height:100%;color:#fff;display:flex;flex-direction:column;justify-content:center;overflow:hidden;z-index:12;border-radius:16px}.TUICallKit-desktop .singCall{width:100%;height:100%}.mobile-audio{background-color:#fff}.miniMized{width:168px!important;height:56px!important;overflow:visible!important}.miniMized-mobile-audio{width:72px;height:72px;position:fixed;top:40px;right:40px}.miniMized-mobile-video{width:40%;height:30%;position:fixed;top:40px;right:40px}'
+ )
+ ),
+ document.head.appendChild(t);
+ }
+ } catch (e) {
+ console.error('vite-plugin-css-injected-by-js', e);
+ }
+})();
+import { TUICallEngine as et, TUICallEvent as P } from 'tuicall-engine-webrtc';
+import {
+ defineComponent as V,
+ openBlock as u,
+ createElementBlock as N,
+ createElementVNode as C,
+ unref as t,
+ toDisplayString as b,
+ createCommentVNode as p,
+ ref as g,
+ onMounted as K,
+ onUnmounted as H,
+ createBlock as h,
+ computed as _,
+ normalizeClass as R,
+ normalizeStyle as bA,
+ renderSlot as dA,
+ withCtx as DA,
+ watch as rA,
+ pushScopeId as Pe,
+ popScopeId as Be,
+ Fragment as iA,
+ renderList as uA,
+ createVNode as x,
+ withDirectives as yA,
+ vShow as EA,
+ resolveComponent as WA,
+ onUpdated as tt,
+ provide as ee,
+ watchEffect as VA,
+ inject as at,
+ withModifiers as re,
+ withKeys as lt,
+ render as zA,
+ Transition as st,
+ toRefs as nt,
+} from 'vue';
+var o = /* @__PURE__ */ ((s) => ((s.CALL = 'call'), (s.CUSTOM = 'custom'), s))(o || {}),
+ z = /* @__PURE__ */ ((s) => ((s[(s.UNKNOWN = 0)] = 'UNKNOWN'), (s[(s.AUDIO = 1)] = 'AUDIO'), (s[(s.VIDEO = 2)] = 'VIDEO'), s))(z || {}),
+ J = /* @__PURE__ */ ((s) => ((s.UNKNOWN = 'unknown'), (s.CALLEE = 'callee'), (s.CALLER = 'caller'), s))(J || {}),
+ B = /* @__PURE__ */ ((s) => ((s.IDLE = 'idle'), (s.CALLING = 'calling'), (s.CONNECTED = 'connected'), s))(B || {}),
+ mA = /* @__PURE__ */ ((s) => ((s.CONTAIN = 'contain'), (s.COVER = 'cover'), (s.FILL = 'fill'), s))(mA || {}),
+ OA = /* @__PURE__ */ ((s) => ((s.RESOLUTION_480P = '480p'), (s.RESOLUTION_720P = '720p'), (s.RESOLUTION_1080P = '1080p'), s))(OA || {}),
+ qe = /* @__PURE__ */ ((s) => ((s.EN = 'en'), (s['ZH-CN'] = 'zh-cn'), (s.JA_JP = 'ja_JP'), s))(qe || {});
+const AA = {
+ IDLE: 'idle',
+ BE_INVITED: 'be-invited',
+ DIALING_C2C: 'dialing-c2c',
+ DIALING_GROUP: 'dialing-group',
+ CALLING_C2C_AUDIO: 'calling-c2c-audio',
+ CALLING_C2C_VIDEO: 'calling-c2c-video',
+ CALLING_GROUP_AUDIO: 'calling-group-audio',
+ CALLING_GROUP_VIDEO: 'calling-group-video',
+};
+var IA = /* @__PURE__ */ ((s) => ((s.EAR = 'ear'), (s.SPEAKER = 'speaker'), s))(IA || {}),
+ cA = /* @__PURE__ */ ((s) => ((s.MICROPHONE = 'microphone'), (s.CAMERA = 'camera'), (s.SPEAKER = 'speaker'), s))(cA || {}),
+ wA = /* @__PURE__ */ ((s) => ((s[(s.FRONT = 0)] = 'FRONT'), (s[(s.BACK = 1)] = 'BACK'), s))(wA || {});
+const ce = {
+ SWITCH_TO_AUDIO_CALL_FAILED: 60001,
+ SWITCH_TO_VIDEO_CALL_FAILED: 60002,
+ MICROPHONE_UNAVAILABLE: 60003,
+ CAMERA_UNAVAILABLE: 60004,
+ BAN_DEVICE: 60005,
+ NOT_SUPPORTED_WEBRTC: 60006,
+ ERROR_BLACKLIST: 20007,
+ },
+ it = {
+ SWITCH_TO_AUDIO_CALL_FAILED: 'switchToAudioCall-call-failed',
+ SWITCH_TO_VIDEO_CALL_FAILED: 'switchToVideoCall-call-failed',
+ MICROPHONE_UNAVAILABLE: 'microphone-unavailable',
+ CAMERA_UNAVAILABLE: 'camera-unavailable',
+ BAN_DEVICE: 'ban-device',
+ NOT_SUPPORTED_WEBRTC: 'not-supported-webrtc',
+ ERROR_BLACKLIST: 'blacklist-user-tips',
+ },
+ QA = {
+ CALL_STATUS: 'callStatus',
+ CALL_ROLE: 'callRole',
+ CALL_MEDIA_TYPE: 'callMediaType',
+ LOCAL_USER_INFO: 'localUserInfo',
+ LOCAL_USER_INFO_EXCLUDE_VOLUMN: 'localUserInfoExcludeVolume',
+ REMOTE_USER_INFO_LIST: 'remoteUserInfoList',
+ REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST: 'remoteUserInfoExcludeVolumeList',
+ CALLER_USER_INFO: 'callerUserInfo',
+ IS_GROUP: 'isGroup',
+ CALL_DURATION: 'callDuration',
+ CALL_TIPS: 'callTips',
+ TOAST_INFO: 'toastInfo',
+ IS_MINIMIZED: 'isMinimized',
+ ENABLE_FLOAT_WINDOW: 'enableFloatWindow',
+ BIG_SCREEN_USER_ID: 'bigScreenUserId',
+ LANGUAGE: 'language',
+ IS_CLICKABLE: 'isClickable',
+ DISPLAY_MODE: 'displayMode',
+ VIDEO_RESOLUTION: 'videoResolution',
+ PUSHER: 'pusher',
+ PLAYER: 'player',
+ IS_EAR_PHONE: 'isEarPhone',
+ SHOW_PERMISSION_TIP: 'SHOW_PERMISSION_TIP',
+ GROUP_ID: 'groupID',
+ ROOM_ID: 'roomID',
+ SHOW_SELECT_USER: 'showSelectUser',
+ },
+ a = {
+ PREFIX: '【CallService】',
+ AUDIO: 'audio',
+ VIDEO: 'video',
+ LOCAL_VIDEO: 'localVideo',
+ ERROR: 'error',
+ TIMEOUT: 'timeout',
+ RAF: 'raf',
+ INTERVAL: 'interval',
+ DEFAULT: 'default',
+ BOOLEAN: 'boolean',
+ STRING: 'string',
+ NUMBER: 'number',
+ OBJECT: 'object',
+ ARRAY: 'array',
+ FUNCTION: 'function',
+ UNDEFINED: 'undefined',
+ ALL: 'all',
+ MYSELF: 'myself',
+ DEVICE_LIST: 'deviceList',
+ CAMERA_POSITION: 'cameraPosition',
+ ...QA,
+ },
+ ue = 2147483647;
+var te = /* @__PURE__ */ ((s) => ((s.MAC = 'mac'), (s.WIN = 'win'), s))(te || {}),
+ Re = /* @__PURE__ */ ((s) => ((s[(s.TUI_CALL_KIT = 14)] = 'TUI_CALL_KIT'), (s[(s.TIM_CALL_KIT = 15)] = 'TIM_CALL_KIT'), s))(Re || {});
+const ot = {
+ // 按钮文案
+ hangup: 'Hang up',
+ reject: 'Decline',
+ accept: 'Accept',
+ camera: 'Camera',
+ microphone: 'Microphone',
+ speaker: 'speaker',
+ 'open camera': 'Open Camera',
+ 'close camera': 'Close Camera',
+ 'open microphone': 'Open Microphone',
+ 'close microphone': 'Close Microphone',
+ 'video-to-audio': 'Switch to audio',
+ // 通话结果
+ 'other side reject call': 'other side reject call',
+ 'reject call': 'Reject Call',
+ cancel: 'Cancel Call',
+ 'other side line busy': 'other side line busy',
+ 'in busy': 'in busy',
+ 'call timeout': 'call timeout',
+ 'no response from the other side': 'no response from the other side',
+ 'end call': 'end call',
+ // 通话提示语
+ 'caller calling message': 'Awaiting response',
+ 'callee calling video message': 'invites you to a video call',
+ 'callee calling audio message': 'invites you to a voice call',
+ 'no microphone access': 'no microphone access',
+ 'no camera access': 'no camera access',
+ 'invite member': 'Invite Member',
+ 'Invited group call': 'invites you to a group call',
+ waiting: 'Calling...',
+ me: '(me)',
+ // 弹出层文案
+ 'browser-authorization': 'Browser authorization',
+ 'mac-privacy': 'System Preferences -> Security and Privacy -> Privacy',
+ 'win-privacy': 'Setting -> Privacy and Security -> App permissions',
+ 'mac-preferences': 'Open System Preferences',
+ 'win-preferences': 'Open Setting',
+ 'Please enter userID': 'Please enter userID',
+ 'View more': 'View more',
+ 'people selected': 'people selected',
+ 'Select all': 'Select all',
+ Cancel: 'Cancel',
+ Done: 'Done',
+ // UI3.0 新增
+ 'camera enabled': 'Camera On',
+ 'camera disabled': 'Camera Off',
+ 'microphone enabled': 'Unmuted',
+ 'microphone disabled': 'Muted',
+ 'speaker phone': 'Speaker',
+ 'ear piece': 'Earpiece',
+ 'wait to be called': 'Waiting',
+ answered: 'Connected',
+ 'people in the call': ' other(s) in the call',
+ 'failed to obtain speakers': 'failed to obtain speakers',
+ 'you have a new call': 'You have a new call',
+ // 待废弃文案
+ 'Those involved': 'Those involved in the call are',
+ call: 'call',
+ 'video-call': 'video call',
+ 'audio-call': 'audio call',
+ search: 'search',
+ 'search-result': 'search result',
+ 'no-user': 'user not found',
+ 'member-not-added': 'member not added',
+ 'input-phone-userID': 'phone number or userID',
+ 'not-login': 'not logged in',
+ 'login-status-expire': 'login status is invalid, please refresh the page and try again',
+ 'experience-multi-call': 'experience multi-person calls, please download the full-featured demo: ',
+ 'not-support-multi-call': 'multi-person call interface is not open',
+ userID: 'userID',
+ 'already-enter': 'entered the call',
+ 'camera-opened': 'Camera on',
+ 'camera-closed': 'Camera off',
+ 'microphone-opened': 'Mic on',
+ 'microphone-closed': 'Mic off',
+ timeout: 'timeout',
+ 'kick out': 'kick out',
+ 'image-resolution': 'Resolution',
+ 'default-image-resolution': 'Default',
+ 'invited-person': 'Invite',
+ 'be-rejected': 'Call declined, ',
+ 'be-no-response': 'No response, ',
+ 'be-line-busy': 'Line busy, ',
+ 'be-canceled': 'The call is canceled, ',
+ 'voice-call-end': 'Voice call ended',
+ 'video-call-end': 'Video call ended',
+ 'method-call-failed': 'Failed to sync the operation',
+ 'failed-to-obtain-permission': 'Failed to obtain permissions',
+ 'environment-detection-failed': 'Failed to check the environment',
+ 'switchToAudioCall-call-failed': 'switch to audio call method failed',
+ 'switchToVideoCall-call-failed': 'switch to video call method failed',
+ 'microphone-unavailable': 'No mic found',
+ 'camera-unavailable': 'No camera found',
+ 'ban-device': 'Device access denied',
+ 'not-supported-webrtc': 'Your current environment does not support WebRTC',
+ 'blacklist-user-tips': 'The identifier is in blacklist. Failed to send this message!',
+ 'is-already-calling': 'TUICallKit is already on a call',
+ 'need-init': 'Before initiating a call with TUICallKit, ensure that the TUICallKitServer.init() method has executed successfully. ',
+ "can't call yourself": "Can't call yourself",
+ // eslint-disable-line
+ 'Use-phone-and-computer': 'Use your mobile phone and computer to experience video calls',
+ 'Wechat scan right QR code': 'Wechat scan right QR code',
+ 'Scan the QR code above': 'Scan the QR code above',
+ 'accept-error': 'Accept failed',
+ 'accept-device-error': 'Accept failed, unable to auth calling device',
+ 'call-error': 'Start call failed',
+ },
+ rt = {
+ // 按钮文案
+ hangup: '挂断',
+ reject: '拒绝',
+ accept: '接受',
+ camera: '摄像头',
+ microphone: '麦克风',
+ speaker: '扬声器',
+ 'open camera': '打开摄像头',
+ 'close camera': '关闭摄像头',
+ 'open microphone': '打开麦克风',
+ 'close microphone': '关闭麦克风',
+ 'video-to-audio': '转语音通话',
+ // 通话结果
+ 'other side reject call': '对方已拒绝',
+ 'reject call': '拒绝通话',
+ cancel: '取消通话',
+ 'other side line busy': '对方忙线',
+ 'in busy': '正在忙',
+ 'call timeout': '呼叫超时',
+ 'end call': '结束通话',
+ // 通话提示语
+ 'caller calling message': '等待对方接受邀请',
+ 'callee calling video message': '邀请你视频通话',
+ 'callee calling audio message': '邀请你语音通话',
+ 'no microphone access': '没有麦克风权限',
+ 'no camera access': '没有摄像头权限',
+ 'invite member': '邀请成员',
+ 'Invited group call': '邀请你加入多人通话',
+ 'Those involved': '参与通话的有:',
+ waiting: '等待接听...',
+ me: '(我)',
+ // 弹出层文案
+ 'browser-authorization': '浏览器授权',
+ 'mac-privacy': '系统偏好设置 -> 安全与隐私 -> 隐私',
+ 'win-privacy': '设置 -> 隐私和安全性 -> 应用权限',
+ 'mac-preferences': '打开系统偏好设置',
+ 'win-preferences': '打开系统设置',
+ 'Please enter userID': '请输入 userID',
+ 'View more': '查看更多',
+ 'people selected': '人已选中',
+ 'Select all': '全选',
+ Cancel: '取消',
+ Done: '完成',
+ // UI3.0 新增
+ 'camera enabled': '摄像头已开',
+ 'camera disabled': '摄像头已关',
+ 'microphone enabled': '麦克风已开',
+ 'microphone disabled': '麦克风已关',
+ 'speaker phone': '扬声器已开',
+ 'ear piece': '扬声器已关',
+ 'wait to be called': '等待接听',
+ answered: '已接通',
+ 'people in the call': '人参与通话',
+ 'failed to obtain speakers': '无法获取扬声器',
+ 'you have a new call': '您有一个新的通话',
+ // 待废弃文案
+ timeout: '超时',
+ 'kick out': '被踢',
+ call: '通话',
+ 'video-call': '视频通话',
+ 'audio-call': '音频通话',
+ search: '搜索',
+ 'search-result': '搜索结果',
+ 'Wechat scan right QR code': '微信扫右二维码',
+ 'Use-phone-and-computer': '用手机与电脑互打体验视频通话',
+ 'Scan the QR code above': '扫描上方二维码',
+ 'no-user': '未搜索到用户',
+ 'member-not-added': '未添加成员',
+ 'not-login': '未登录',
+ 'login-status-expire': '登录状态已失效,请刷新网页重试',
+ 'experience-multi-call': '体验多人通话请下载全功能demo:',
+ 'not-support-multi-call': '多人通话接口未开放',
+ 'input-phone-userID': '请输入手机号/用户ID',
+ userID: '用户ID',
+ 'already-enter': '已经进入当前通话',
+ 'image-resolution': '分辨率',
+ 'default-image-resolution': '默认分辨率',
+ 'invited-person': '添加成员',
+ 'be-rejected': '对方已拒绝,',
+ 'be-no-response': '对方无应答,',
+ 'be-line-busy': '对方忙线中,',
+ 'be-canceled': '对方已取消',
+ 'voice-call-end': '语音通话结束',
+ 'video-call-end': '视频通话结束',
+ 'method-call-failed': '同步操作失败',
+ 'failed-to-obtain-permission': '权限获取失败',
+ 'environment-detection-failed': '环境检测失败',
+ 'switchToAudioCall-call-failed': '切语音调用失败',
+ 'switchToVideoCall-call-failed': '切视频调用失败',
+ 'microphone-unavailable': '没有可用的麦克风设备',
+ 'camera-unavailable': '没有可用的摄像头设备',
+ 'ban-device': '用户禁止使用设备',
+ 'not-supported-webrtc': '当前环境不支持 WebRTC',
+ 'blacklist-user-tips': '发起通话失败,被对方拉入黑名单,禁止发起!',
+ 'is-already-calling': 'TUICallKit 已在通话状态',
+ 'need-init': 'TUICallKit 发起通话前需保证 TUICallKitServer.init() 方法执行成功',
+ "can't call yourself": '不能呼叫自己',
+ // eslint-disable-line
+ 'accept-error': '接通失败',
+ 'accept-device-error': '接通失败,通话设备获取失败',
+ 'call-error': '发起通话失败',
+ },
+ ct = {
+ // 按钮文案
+ hangup: '通話終了',
+ reject: '拒否',
+ accept: '応答',
+ camera: 'カメラ',
+ microphone: 'マイク',
+ speaker: 'スピーカー',
+ // 通话结果
+ 'other side reject call': '通話が拒否されました',
+ 'reject call': '通話拒否',
+ cancel: '通話をキャンセル',
+ 'other side line busy': '相手が通話中です',
+ 'in busy': '通話中',
+ 'call timeout': '呼び出しタイムアウト',
+ 'end call': '通話終了',
+ // 通话提示语
+ 'caller calling message': '応答を待っています',
+ 'callee calling video message': 'ビデオ通話に招待されました',
+ 'callee calling audio message': '音声通話に招待されました',
+ 'no microphone access': 'マイクにアクセスできません',
+ 'no camera access': 'カメラにアクセスできません',
+ 'invite member': 'メンバーを招待する',
+ // 弹出层文案
+ 'browser-authorization': 'ブラウザ認証',
+ 'mac-privacy': 'システム環境設定 -> セキュリティとプライバシー ->プライバシー',
+ 'win-privacy': '設定 -> セキュリティとプライバシー ->アプリのアクセス許可',
+ 'mac-preferences': 'システム環境設定を開く',
+ 'win-preferences': 'システム設定を開く',
+ 'Please enter userID': 'ユーザーIDを入力してください',
+ 'View more': 'もっと見る',
+ 'people selected': '人が選択されました',
+ 'Select all': 'すべて選択',
+ Cancel: 'キャンセル',
+ Done: '完了',
+ // UI3.0文案
+ 'open camera': 'オープンカメラ',
+ 'close camera': 'カメラを閉じる',
+ 'open microphone': 'オープンマイク',
+ 'close microphone': 'マイクを閉じる',
+ 'camera enabled': 'カメラオン',
+ 'camera disabled': 'カメラオフ',
+ 'microphone enabled': 'マイクオン',
+ 'microphone disabled': 'マイクオフ',
+ 'speaker phone': 'スピーカーオン',
+ 'wait to be called': '待機中',
+ answered: '接続済み',
+ 'people in the call': '通話に参加している人たち',
+ 'failed to obtain speakers': 'スピーカーが見つかりません',
+ 'you have a new call': '新しい通話があります',
+ // 待废弃文案
+ timeout: 'タイムアウト',
+ 'kick out': 'キックアウトされました',
+ 'Invited group call': 'グループ通話に招待されました。',
+ 'Those involved': '参加者:',
+ call: '通話',
+ 'video-call': 'ビデオ通話',
+ 'audio-call': '音声通話',
+ search: '検索',
+ 'search-result': '検索結果',
+ 'Wechat scan right QR code': 'WeChatで右側にあるQRコードを読み取ります。',
+ 'Use-phone-and-computer': '携帯電話とコンピュータを使用してビデオ通話を体験してください',
+ 'Scan the QR code above': '上のQRコードを読み取ります。',
+ 'no-user': 'ユーザーが見つかりませんでした',
+ 'member-not-added': 'メンバーが追加されていません',
+ 'not-login': 'ログインしていません',
+ 'login-status-expire': 'ログインの有効期限が過ぎています。ページを更新してもう一度お試しください',
+ 'experience-multi-call': '複数人で同時に音声通話できるグループ通話機能を体験するには、全機能のデモをダウンロードしてください',
+ 'not-support-multi-call': 'グループ通話インターフェイスが開いていません',
+ 'input-phone-userID': '携帯電話番号/ユーザーIDを入力してください',
+ userID: 'ユーザーID',
+ 'already-enter': 'すでに通話に参加しています',
+ waiting: '応答を待っています...',
+ 'camera-opened': 'カメラがオンになっています',
+ 'camera-closed': 'カメラがオフになっています',
+ 'microphone-opened': 'マイクがオンになっています',
+ 'microphone-closed': 'マイクがオフになっています',
+ 'image-resolution': '解像度',
+ 'default-image-resolution': 'デフォルト解像度',
+ 'invited-person': 'メンバーを招待',
+ 'video-to-audio': '音声通話に切り替えます',
+ me: '(自分)',
+ 'be-rejected': '通話が拒否されました, ',
+ 'be-no-response': '応答なし, ',
+ 'be-line-busy': '相手が通話中です, ',
+ 'be-canceled': '相手が通話をキャンセルしました',
+ 'voice-call-end': '音声通話が終了しました',
+ 'video-call-end': 'ビデオ通話が終了しました',
+ 'method-call-failed': '操作の同期に失敗しました',
+ 'failed-to-obtain-permission': '権限の取得に失敗しました',
+ 'environment-detection-failed': '環境の検出に失敗しました',
+ 'switchToAudioCall-call-failed': '音声通話に切り替えることはできません',
+ 'switchToVideoCall-call-failed': 'ビデオ通話に切り替えることはできません',
+ 'microphone-unavailable': '使用できるマイクがありません',
+ 'camera-unavailable': '使用できるカメラがありません',
+ 'ban-device': 'デバイスへのアクセスが拒否されました',
+ 'not-supported-webrtc': '現在の環境はWebRTCをサポートしていません',
+ 'blacklist-user-tips': 'ユーザーはブラックリストに登録され、通話が開始できませんでした',
+ 'is-already-calling': 'TUICallKit はすでに通話中です',
+ 'need-init': 'TUICallKitで通話を開始する前に、TUICallKitServer.init() メソッドが正常に実行されたことを確認してください。',
+ "can't call yourself": '自分に電話をかけることができません',
+ 'accept-error': '接続できませんでした',
+ 'accept-device-error': '接続できませんでした。発信側デバイスを認証できません',
+ 'call-error': '通話が開始できませんでした',
+ },
+ aA = {
+ OTHER_SIDE: 'other side',
+ CANCEL: 'cancel',
+ OTHER_SIDE_REJECT_CALL: 'other side reject call',
+ REJECT_CALL: 'reject call',
+ OTHER_SIDE_LINE_BUSY: 'other side line busy',
+ IN_BUSY: 'in busy',
+ CALL_TIMEOUT: 'call timeout',
+ END_CALL: 'end call',
+ TIMEOUT: 'timeout',
+ KICK_OUT: 'kick out',
+ CALLER_CALLING_MSG: 'caller calling message',
+ CALLER_GROUP_CALLING_MSG: 'wait to be called',
+ CALLEE_CALLING_VIDEO_MSG: 'callee calling video message',
+ CALLEE_CALLING_AUDIO_MSG: 'callee calling audio message',
+ NO_MICROPHONE_DEVICE_PERMISSION: 'no microphone access',
+ NO_CAMERA_DEVICE_PERMISSION: 'no camera access',
+ },
+ Ie = {
+ en: ot,
+ 'zh-cn': rt,
+ ja_JP: ct,
+ };
+function X(s) {
+ var l;
+ const A = i.getData(o.CALL, a.LANGUAGE);
+ for (const n in Ie)
+ if (n === A) {
+ const r = Ie[n];
+ for (const c in r) if (c === s) return r[c];
+ }
+ const e = (l = s.en) == null ? void 0 : l.key;
+ return console.error(`${a.PREFIX}translation is not found: ${s}.`), e;
+}
+async function ut(s) {
+ if (!s) return !1;
+ try {
+ const A = await new Promise((e, l) => {
+ const n = new XMLHttpRequest();
+ n.open('HEAD', s, !0), (n.onload = () => e(n)), (n.onerror = () => l(n)), n.send();
+ });
+ return A.status === 200 && A.getResponseHeader('Content-Type') === 'audio/mpeg';
+ } catch (A) {
+ return console.warn(A), !1;
+ }
+}
+const FA = typeof wx < 'u' && typeof wx.getSystemInfoSync == 'function' && !!wx.getSystemInfoSync().fontSizeSetting,
+ xe = typeof uni < 'u' && typeof uni > 'u',
+ de = FA || xe,
+ Qe = typeof uni < 'u',
+ Ge = (function () {
+ return (typeof uni < 'u' || typeof window < 'u') && !de;
+ })(),
+ It = (function () {
+ return FA ? wx : Qe ? uni : window;
+ })(),
+ pA = (Ge && window && window.navigator && window.navigator.userAgent) || '',
+ dt = /Android/i.test(pA),
+ Mt = /(?:Windows Phone)/.test(pA),
+ gt = /(?:SymbianOS)/.test(pA),
+ Nt = /iPad/i.test(pA) || /iPhone/i.test(pA) || /iPod/i.test(pA),
+ ke = dt || Mt || gt || Nt,
+ se = Ge && !ke,
+ Lt = se && pA.includes('Windows NT'),
+ Ct = se && pA.includes('Mac');
+let Xe = class jA {
+ constructor() {
+ (this.global = It),
+ (this.isPC = !1),
+ (this.isH5 = !1),
+ (this.isWeChat = !1),
+ (this.isApp = !1),
+ (this.isUniPlatform = !1),
+ (this.isOfficial = !1),
+ (this.isWIN = !1),
+ (this.isMAC = !1),
+ this.initEnv();
+ }
+ /**
+ * 获取 TUIGlobal 实例
+ * @returns {TUIGlobal}
+ */
+ static getInstance() {
+ return jA.instance || (jA.instance = new jA()), jA.instance;
+ }
+ initEnv() {
+ (this.isPC = se),
+ (this.isH5 = ke),
+ (this.isWeChat = FA),
+ (this.isApp = xe && !FA),
+ (this.isUniPlatform = Qe),
+ (this.isWIN = Lt),
+ (this.isMAC = Ct);
+ }
+ initOfficial(A) {
+ this.isOfficial = A === 1400187352 || A === 1400188366;
+ }
+};
+const ne = function (s) {
+ return typeof s === a.UNDEFINED;
+ },
+ pt = function (s) {
+ if (typeof s !== a.OBJECT || s === null) return !1;
+ const A = Object.getPrototypeOf(s);
+ if (A === null) return !0;
+ let e = A;
+ for (; Object.getPrototypeOf(e) !== null; ) e = Object.getPrototypeOf(e);
+ return A === e;
+ },
+ We = function (s) {
+ return typeof Array.isArray === a.FUNCTION
+ ? Array.isArray(s)
+ : Object.prototype.toString
+ .call(s)
+ .match(/^\[object (.*)\]$/)[1]
+ .toLowerCase() === a.ARRAY;
+ },
+ ae = function (s) {
+ return typeof s === a.STRING;
+ },
+ Dt = function (s) {
+ return typeof s === a.BOOLEAN;
+ },
+ Fe = function (s) {
+ return (
+ // eslint-disable-next-line
+ s !== null && ((typeof s === a.NUMBER && !isNaN(s - 0)) || (typeof s === a.OBJECT && s.constructor === Number))
+ );
+ };
+function Tt(s) {
+ const A = Math.floor(s / 3600),
+ e = Math.floor((s % 3600) / 60),
+ l = Math.floor(s % 60);
+ let n = A > 9 ? `${A}` : `0${A}`;
+ return (n += e > 9 ? `:${e}` : `:0${e}`), (n += l > 9 ? `:${l}` : `:0${l}`), n;
+}
+function Me(s) {
+ return (s == null ? void 0 : s.message.indexOf('is ongoing, please avoid repeated calls')) !== -1;
+}
+function yt(s) {
+ const { message: A } = s;
+ return A.indexOf('NotAllowedError: Permission denied') !== -1;
+}
+function _A() {
+ return Date.now();
+}
+const GA = function (s) {
+ return typeof s === a.FUNCTION;
+ },
+ Et = () => {
+ if (Xe.getInstance().isWeChat) return 'zh-cn';
+ const s = ((navigator == null ? void 0 : navigator.language) || (navigator == null ? void 0 : navigator.userLanguage) || '').substr(0, 2);
+ let A = 'en';
+ switch (s) {
+ case 'zh':
+ A = 'zh-cn';
+ break;
+ case 'ja':
+ A = 'ja_JP';
+ break;
+ default:
+ A = 'en';
+ }
+ return A;
+ },
+ St = function (s) {
+ return Object.prototype.toString
+ .call(s)
+ .match(/^\[object (.*)\]$/)[1]
+ .toLowerCase();
+ };
+function vt(s, A, e) {
+ if (!s.hasOwnProperty(A)) return s;
+ const l = {};
+ return (
+ Object.keys(s).forEach((n) => {
+ n === A ? (l[e] = s[n]) : (l[n] = s[n]);
+ }),
+ l
+ );
+}
+const ht = 0,
+ jt = 1,
+ ge = 2;
+function ft({ retryFunction: s, settings: A, onError: e, onRetrying: l, onRetryFailed: n, context: r }) {
+ return function (...c) {
+ const I = A.retries || 5;
+ let d = 0,
+ M = -1,
+ L = ht;
+ const T = async (E, D) => {
+ const y = r || this;
+ try {
+ const j = await s.apply(y, c);
+ (d = 0), E(j);
+ } catch (j) {
+ const m = () => {
+ clearTimeout(M), (d = 0), (L = ge), D(j);
+ },
+ S = () => {
+ L !== ge && d < I
+ ? (d++,
+ (L = jt),
+ GA(l) && l.call(y, d, m),
+ (M = setTimeout(
+ () => {
+ (M = -1), T(E, D);
+ },
+ ne(A.timeout) ? 1e3 : A.timeout
+ )))
+ : (m(), GA(n) && n.call(y, j));
+ };
+ GA(e) ? e.call(y, j, S, D, c) : S();
+ }
+ };
+ return new Promise(T);
+ };
+}
+function Ut(s) {
+ return function (A, e, l) {
+ const { retries: n = 5, timeout: r = 2e3, onError: c, onRetrying: I, onRetryFailed: d } = s,
+ M = ft({
+ retryFunction: l.value,
+ settings: { retries: n, timeout: r },
+ onError: c,
+ onRetrying: I,
+ onRetryFailed: d,
+ context: null,
+ });
+ return (
+ (l.value = function (...L) {
+ return M.apply(this, L);
+ }),
+ l
+ );
+ };
+}
+const zt =
+ 'data:audio/mpeg;base64,SUQzAwAAAAAAGFRYWFgAAAAOAAAAVFhYWABpc29taXNvMv/zNGQAAqwAvnihCAADQAF4CUAQAFYAg3Lh8u+XUD5///wx//wQOAhKAgb/////xOoH4g8Hz4Pq8RoAbdTgMsMt9hcb990EP//zNGQQBPDjEgDItAAFWcIoAYoQAN9P/03QQ//umn//91SXL5uXP+pf8WYTvzgJPAQ+p/7f///1//6f///WH///F4BtJhNFkP/zNGQGA/jjNADHiAAEQDJcAYkQAGWrn6vw6ljfPtj/////////9Pv9sL/mL/QezSepgwrimv07//////y3u602OiyhOYb+LP/zNGQIBKTBKADoCACDoCZMAckAAKHKCUIAFsqGZXtSZ/////////Sn/Vy3nVUOJBqSX2UAkQxBddzv//////yq3lcgaTmTQ//zNGQHA9SrJgA8AliD4C5IAApYAKh3FKlMunKHm8H/2//77vkdqB2xfsXaHiDKBGtFKqONF3/////Z9VXClT5ND+syHkjBq//zNGQLBITJIAA8AmQEiDI4AAjSAGa1Vffm3ff/1/0//11tvZpAaIw3dBiIrjJgHQrGVWmdBU1f/////oDqEKrV1OpBUTjQtv/zNGQHAsjDKAAwAl4D0Co8AAmCBHIQNtld6fm0+/VigZzuMnGZlkAMLMJFv/////33UIWeFQkKsaceBsangecHzYXKI//////zNGQUA4QjKAA3CAID8CpEABMCBPfuStx4FQVHYMgKcO6jIJh//////9uIlspQkGQ2YyZscAV83Bv/////ncL6BEiWHyA2K//zNEQbAogfJgAx5hAEwDJcCAsEBtICgF3/////WJaIuuqMCCVGucgkrtwiwBO//////pW4YFRWQhaRRhZZnVwGhf////+ocv/zNEQmApgVJAANjwAFkC5YCApeAolD4kQb+EQJYNKwLWGmc6sqMBwJvf////6tDEOWDgFJk1VywKMGoM2f////+N1JmgJuPv/zNGQuA4AbJAAl5hIDwC48AAIGBEho7wTL5b6kSO7IUAA5uDABYNNjGDBSJEN//////xtQsszVy27IcWBbQkLgzv7YmZYW///zNGQ2AqzFNAgcA1+D8CZIAAhMAP/3/rozCAsBjIqCY/DBWMfQZp1f/////0F6phXSNisgAJjo6icT2vpvM/Vf9v///97eu//z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',
+ Ne =
+ 'data:audio/mpeg;base64,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//BP/+hwIa///Nf///wqXf/1IwFkb//wi3/1Pf/7FEQGAABjEVkFKKAADSOrIKOcAAKAUWQYooAAUpGswwRwAF//QA7//6iH/7//E1CP66uDpoqjowL/6/GGwzFQx/T3Vp/9XC73/yvuUKYdmmN6evmjf5L5ZKr/8hlL/f/7FGQCgAB5FF2GBKAADYOrUMEIAAGod2YcVoAANI6rg4pQAEZrqH8GxT/UqjT/+aDlf/6dvj/r/4+rR//UH//+wTMuo///86//9QGR//+wCCxv//+MCD//BP//oAIP///7FGQFAABgEdsNFKAAC2I68KOcAAMggWoYVQAAP46tAwQgAMzq//QwCv//4WM/+a0//YWHBbCL/5Hi/IAIkheLBSvsvr6F98kyv/4Zg7A3/0+pcfN//8bL5ar/+8wV/v/7FGQCgACDFF0GFKAADkQLYMCIAAGod2occoAANg7rw4pQAKbXi7oTBez1IPl9X/4G2b//1b7/r6/a/Gy//6HAX//+gDAv///nHf/xoBf//hF////ILP0V//lQuP//qP/7FGQDj/BVHVmBQC2QC6O6wDQHsgGEd2gUI4AAMA7sAopQAE8l+F//2DK3//y4f+Bj5j/+oX//8FpP///x0n//GAf//8Kf///xIcrp/ZHCA4SBM2nH8U7C55TDl+3X6P/7FGQKAADZI1uGFOAAEoRrMMKUAAGQd24cUQAANQ7sQ44gAHOZwyYabiX/9COkKb/T6rj9/09fUt+LGTgn/8YALf/+g43///kFf/zgX///UK////hxPTX/+4Sz//+sR//7FGQEA7BbHdmBoC2QDSEL3gADCQGgAXyUIQAAMw7rwpRwAK/hAeAAAAdAAAAAHQz///6wB/xxxyrjsayv6H/+r/+aBD//+Nm///8QulX+1VhmOIUu/+2UD0jR2CVfp//7FGQIgADVI1uGCOACD+RrYMCIAAGcd2ocE4AAMw7sQ4RQAGP+f8eIEjMMke//iRoP//tvp+v/Unyv4pqf/5n//84CQx///0FRv/+K///C3///6gKLdKr//EJ//9QHx//7FGQED/BSHdkBQBWQC4PKwCgHsgFYR2wUI4AANA7sAopQAD5hv/6Br//+SDvyge2n/+gP//8ISf/w9t//oDv//8K///8ggL6a+nTBTVf043E0UOgZIIdw1v/9FHfE3//7FGQLAADOJFuGCKACEQQLMMEIAAGcH3acIQAAMw6sA4pQAMSEikv/yOCn/6frj7f/X4/wQDrJoAtoYAHpR1+Af8N//Jf/4Z//+Mb///wg/tJV/V+ocf//4dDb4Wv/9//7FGQGj/BXHdiBoC2QDCPK0BwFsgGEd2gUUoAANY8rgopQAAn//+o+W+Egw+n/+cBv//wCFP///Gv//Ewg3//wi////mBOtfk5EhcRcQf3fTKYrCVYl4JHN6/2VU+W+P/7FGQMAADTI1qGFOACE0QLAMKUAAGgSXK8IoAAL46sQ45QALyE//fCbBFxB/9fobDMv6f8pfg+oLgcED//Dr7//UBR//yv/6HBOv//wpv///ElAAgMAH+vqAy/Chf/6//7FGQGi/BoElwgoDugC6PKwBwCsgF8R2YUdQAAMIirwo5wAP/6gAf//UmMfURwD//MAJP//+A8NLP+n/9BwFp///qIf/rdQv/WBxhIsF2/ymU1CVYbSJQIf2aNBT/1cP/7FEQMAACqFFoGHOAAHAR7IMKoAEHoUXAYIoAAN4ouwwJQAJMo4L+/GGRO5GDSsD6QvjG9fNboTfJPksA//C1e/+mM1DFieDM2ev6P/znv/TTUFWfBvry+rRX//Av//f/7FGQCj/BsHdqHCOAADOO64OKcAAFoeWYGgFZALo8rAFAeyU0FoaSv//8eb//BP//oBxb///mikv//l3//6goCl9xsv//QB///wDBOsgH11f/Lut0AUMOtP//x9gABgP/7FGQHg7BiHVoAIDuiDKO7KBQCsoFMR3ShAPBQLA7rwFAeyAA//w9f//wv8E4XP9PQKb34R//k//6gO///wIPbwsWVCQAH+vqEz/BaM//J//ooLn//zANEjecHf/1CHf/7FGQOD/BhEduo4DugDAO60CgHsgGAd2YFAazAMo8rQKAdmECUIWv//+cP//ygIPB+LdP//4XGHQKLSAB8sp9///gRz/1f/0BL//6gRf///qIW6d9Kj0GAOV6X4woKy//7FGQTgABrEV4lBEAADKO68KOcAAP0jWwYVQAAYxCsQwpQAXAtahrDftmZs3zB+574qD6cse/9MRcBIeDP8bl0EsFxX9dkG+oozcPjTz5K/v8wMJ//8BHT///QS//oA//7FGQID5BmHVsHHKAADWOq8OOIAAF0d2QGgFZAKQ7r1KAKyFl//6O3///KF8x//UG+///qE2NPghkC//nhE///xf/H//qAn//1Acd///8d//KgUb//5H///8g+jtSyH//7FGQOAABfHdqFFKAADKPLAKOIAAQMjWgYc4AIXJHs1w4gAHFZYQsxfPm9an5UMLFJFwLHfTz+qkfhO5MzGhOKAwIIAB/+eWEJo1J//8fTL//6D/EW4ur/+oa9H/+oCv/7FGQED5BpHdsHHKAADGAba+AIAAFcd2YGgLZAKo6rgKAeyD////OKgAACgCAPywNf5D/5H/+weG//+MQ/8LHf/ygKW//+RlvQFP/fKAv///CIhp///K//rOB7v//4h//7FGQKgABlHVoFHOAADYO60KacAAPgjWoYdQAISRGsgw4gAP//+Fm0fS6nKwoLipAoLfN6ZzRJELiHPPAuT6+iakSfJZnKgP/5YuIHOM/1+iY2D/T/g1+P8JX/+YA////7FGQCj/BlHdwHFOAADIPLAOEcAAF4d2YFAPZAMg7qwNAqyPmhCX///8o//9Rf//4UZ///+KyK//yoTv//oAYJ3xAd//RBYf/+6yOUX8EZ6gg//wL//+ERD/5DR//EAv/7FGQHgABdEdwNFOAADWPLEKKUAANkkWgYJoAAPhAtQwQgAN///UL///+Ii+v/tYFRj/flWZZWHNXD2qMEgv1f7sY/I7+SCBv/+CmZW/1+hMbP+v/Q3xtd//GuzhD/m//7FGQDgACKFF2GFOAADSKLcMCIAAGsdXAcc4AAMo6sA5RQAJTOBDGuCbP5XTq//ObA/9dePkxv8toyv/84Hf//1CQNHV///lf/54d//+YBgVv//+FK//jMJBhn//UEyP/7FEQFAABrElkFKaAADKO7UKK0AAJsUW4YU4AAUxHtwwSgAblH/X//OAX//0A7K///8xf/8Jjgi5R/vymdisa4NSJX/+XAn/4Xu/vxdvjMX4bJIv1/6HfLfI3EVf/7o//7FGQBgAB3FF6GCKAADoKLYMEIAAGwSW68JQAANQkrg4pQAIL/iOmgIsFxf/Rr0//hnByv/rrx9Mb/TIdF4CAA//oBt//8JA2O/9f/9QCdP/9EA4KX/0u0Kv/6AR//+v/7FEQDAABsEdiFFUAAC4I7MKE0AAI4UWwYI4AASBAtwwJwAKgDgpBhz/mf/8F//9YbQ8HHP+n/8zB2Cv/jmUyoFVhPhMz/0a//84f+OY9lQlWBdITJ//7/La7/+6OC///7FGQCgAB9IF4GCKAAD6QLUMCIAAGgd2wcdQAAMo7rg45wAIn9BxYZr//9/jtf/6mwP/66jpNjfr/1b47av/5wO1//84ETf//+Uf/+oFv//wjLaf//xOsAf8cAcIMWsf/7FGQED/BqAF6gARigDIO7FRwCsgGMd2oUVQAAKwjsgoogABu/pd/6gEAB//YEG//+KT/g3//sAP//zwdN///8o3/8YEz//+QI//w26c3jECBQkKa20K5mLhhYIVjP5f/7FGQJgADFFFuGFUAAEWKbMMKUAAGwR2gcdoAAMQjrg45wAHFX1Ay4r/+EHNT/prqL4tgnL7bT209o//jwGmtq//UDwoOf+R//ngH///gvI//O9iLeAc///sCEGjqZ/v/7FGQFj/BcElkAC1KACkI7NAgFZgFwR2gUdoAANQjrgo5QAKA/4AAHtW/qE4Rf/9FCX//5mGMs/+Q//QwAl//+iAIG//DequnoujOwN/XieaP6g8wckXFx37c/2/JmF//7FGQMAADaI1uGCOACEyRrMMEUAEGwd2ocUoAAMw7sQ4ogADGixn/8Ndgb/6a8HxJ47//7/KduGzy+vV+oV//+Ij///+gkC//ygJ//+Cb///qUV03/+UAt///CgL/Ew//7FGQFj/BaHdkBQC2QC0PK0BwFsgGMdWoUcoAIMQ7sAo5QAD/+UA3//6nt8KB+n/+ga///AYn///UJsf/zwDv//qN///9Ag6r6a7FdHCDeR5TORWEnF7uCafX0RWQ0Wf/7FGQLgADqI1qGFOACEURrQMEIAEGUdWwccQAAM47sA4RQAPHZ5+JR0P/8K5HBf9fom3/T1+L+b4mef/T3B36f/qIFP///wv/9R///xJv//+gSHej/+Viaf//UKivlH//7FGQFj/BWHdkBoBWQDOPKsDQHsgGgd2gUcoAAMg7rwo4gAP/oA5G//9Y/mvsTBj/+mwOf//qDAm3//9B//8UBc///4V////BjVf+04Suzk9G2ymPw1WR4Jsn/XfL/M//7FGQKgAC8I9oGFUACFCRrAMOUAAJIUXAYU4AAPpAtAwQgAOWZn/8KOPMVb/XXQWxTFf/p5wyr5/hv+vVxBwpl/lczKCRhKsS/9enR/+DOzgv/14vNiP1/8nxOlf/48P/7FGQBj/BgEdqHHUAAC+O68OUIAAGYd2wUc4AANg7sAo5wAC9v//hIJj3/mv/54F///4sT///7D//zwdf//guIN///yrf/qKwgMb//wr///6Djqv/xCaaXKP/ppPhnF//7FEQGAACTFFsGHOAAE6O7YMCcAAHgS3QYIQAAOgluwwQgAOJT/4Y+op/+GTf/KZTUJcNpEp//T0Ic7ngQ//RwkEyf0+pcee2/BXfu//ZwUzf6fUuPPbfiXPbq//iQCv/7FGQCCfBpHdqHFOAADWOq4OUUAAF8d2qgFEoALQjrQAOJQFb//mgr///8o3/6HAr///CD///+NflUKoAz///ED9f//zjSoQN//6BhH/wW703//B8Dka3//8VurAAMAP/7FGQHD7BWHVoAQDswDEOrGAgCsgFIR24AAOEANI7sAAAIIAP/8Bb//4dvhKhPTt/80KM3/wXqBN//6g///16AQh69aqw3G/6/5LEHT//+Qf/+YBKt//6Y7T/x8M//yv/7FGQNj/BiHdmADRLQDGO6wDQHsgFsd2IGgLZAMQ7rQNAeyIQP//6wg0fhRv/1mQLN///kgf+B5ar/+4S//+gFF//hzs//j4g///CTf//+EfMf83FZYDzhSL86ui0F+f/7FGQTAABcEdsFFKAADOO68KOUAAPkjWwYdQAAVBGsgwpQAQBawuFYDq/7TfrP4+LkRyRyr/8LYRr/0+NLg6Tfr0/NJzlKyxa42v6c8KFwOMLjHrxdn4zEPgqSLBOuzf/7FGQKgAC8FVuGHUAAFsKK8MOcAAF4A3CcAQAoMYBqQ4AAABE+n/8TlxQXC3/NyligMxJw2zb4osIIuKrAH+c4H/83QUFBcgrxKCrlHvg0DT//iIO1TEFNRTMuMTAwVQ==';
+class mt {
+ constructor() {
+ (this._bellContext = null),
+ (this._isMuteBell = !1),
+ (this._calleeBellFilePath = Ne),
+ (this._callRole = J.UNKNOWN),
+ (this._callStatus = B.IDLE),
+ (this._bellContext = new Audio()),
+ (this._bellContext.loop = !0);
+ }
+ setBellSrc() {
+ try {
+ let A = zt;
+ this._callRole === J.CALLEE && (A = this._calleeBellFilePath || Ne), (this._bellContext.src = A);
+ } catch (A) {
+ console.warn(`${a.PREFIX}Failed to setBellSrc, ${A}`);
+ }
+ }
+ setBellProperties(A) {
+ (this._callRole = A.callRole || this._callRole),
+ (this._callStatus = A.callStatus || this._callStatus),
+ (this._calleeBellFilePath = A.calleeBellFilePath || this._calleeBellFilePath),
+ (this._isMuteBell = ne(A.isMuteBell) ? this._isMuteBell : A.isMuteBell);
+ }
+ async play() {
+ try {
+ if (this._callStatus !== B.CALLING) return;
+ this.setBellSrc(),
+ this._callRole === J.CALLEE && !this._isMuteBell && (await this._bellContext.play()),
+ this._callRole === J.CALLER && (await this._bellContext.play());
+ } catch (A) {
+ console.warn(`${a.PREFIX}Failed to play audio file, ${A}`);
+ }
+ }
+ async stop() {
+ try {
+ await this._bellContext.pause();
+ } catch (A) {
+ console.warn(`${a.PREFIX}Failed to stop audio file, ${A}`);
+ }
+ }
+ async setBellMute(A) {
+ (this._callStatus !== B.CALLING && this._callRole !== J.CALLEE) || (A ? await this.stop() : await this.play());
+ }
+ destroy() {
+ try {
+ (this._isMuteBell = !1),
+ (this._calleeBellFilePath = ''),
+ (this._callRole = J.UNKNOWN),
+ (this._callStatus = B.IDLE),
+ this._bellContext.pause(),
+ (this._bellContext = null);
+ } catch (A) {
+ console.warn(`${a.PREFIX}Failed to destroy, ${A}`);
+ }
+ }
+}
+function tA() {
+ return function (s, A, e) {
+ const l = e.value,
+ n = /* @__PURE__ */ new Set();
+ return (
+ (e.value = async function (...r) {
+ if (n.has(this)) {
+ console.warn(`${a.PREFIX}previous ${A}() is ongoing, please avoid repeated calls`);
+ return;
+ }
+ try {
+ n.add(this);
+ const c = await l.apply(this, r);
+ return n.delete(this), c;
+ } catch (c) {
+ throw (n.delete(this), c);
+ }
+ }),
+ e
+ );
+ };
+}
+const hA = a.PREFIX + 'API';
+function lA(s) {
+ return function (A, e, l) {
+ let n = l.value;
+ return (
+ (l.value = function (...r) {
+ return Ot.call(this, s, r, e), n.apply(this, r);
+ }),
+ l
+ );
+ };
+}
+function Ot(s, A, e) {
+ try {
+ if ((A[0].SDKAppID || (s = vt(s, 'SDKAppID', 'sdkAppID')), We(s)))
+ for (let l = 0; l < s.length; l++)
+ Le.call(this, {
+ ...s[l],
+ value: A[l],
+ name: e,
+ });
+ else
+ for (const l in s)
+ s.hasOwnProperty(l) &&
+ Le.call(this, {
+ ...s[l],
+ value: A[0][l],
+ name: e,
+ key: l,
+ });
+ } catch (l) {
+ throw (console.error(l), l);
+ }
+}
+function Le({ required: s, rules: A, range: e, value: l, allowEmpty: n, name: r, key: c }) {
+ if (ne(l)) {
+ if (s) throw new Error(`${hA}<${r}>: ${c} is required.`);
+ return;
+ }
+ const I = A.some((M) => M === St(l));
+ let d = '';
+ if (!I) {
+ for (let M = 0; M < A.length; M++) {
+ let L = A[M];
+ (L = L.replace(L[0], L[0].toUpperCase())), (d += `${L}/`);
+ }
+ throw ((d = d.substring(0, d.length - 1)), new Error(`${hA}<${r}>: ${c} must be ${d}, current ${c} is ${typeof l}.`));
+ }
+ if (n === !1 && ae(l) && l.trim() === '') throw new Error(`${hA}<${r}>: ${c} is blank.`);
+ if (We(e) && e && e.indexOf(l) === -1) throw new Error(`${hA}<${r}>: ${c} error, only be ${e}, current ${c} is ${l}.`);
+ if (ae(e) && e.indexOf('~') !== -1) {
+ const M = e.split('~');
+ if (l < +M[0] || l > +M[1] || (Fe(l) && Number.isNaN(l))) throw new Error(`${hA}<${r}>: ${c} error, only be ${e}, current ${c} is ${l}.`);
+ }
+}
+const sA = {
+ init: {
+ SDKAppID: {
+ required: !0,
+ rules: [a.NUMBER],
+ allowEmpty: !1,
+ },
+ userID: {
+ required: !0,
+ rules: [a.STRING],
+ allowEmpty: !1,
+ },
+ userSig: {
+ required: !0,
+ rules: [a.STRING],
+ allowEmpty: !1,
+ },
+ tim: {
+ required: !1,
+ rules: [a.OBJECT],
+ },
+ },
+ call: {
+ userID: {
+ required: !0,
+ rules: [a.STRING],
+ allowEmpty: !1,
+ },
+ type: {
+ required: !0,
+ rules: [a.NUMBER],
+ range: [1, 2],
+ allowEmpty: !1,
+ },
+ roomID: {
+ required: !1,
+ rules: [a.NUMBER],
+ // 仅支持数字房间号, 后续会支持字符串房间号
+ range: `1~${ue}`,
+ allowEmpty: !1,
+ },
+ userData: {
+ required: !1,
+ rules: [a.STRING],
+ allowEmpty: !1,
+ },
+ timeout: {
+ required: !1,
+ rules: [a.NUMBER],
+ allowEmpty: !1,
+ },
+ },
+ groupCall: {
+ userIDList: {
+ required: !0,
+ rules: [a.ARRAY],
+ allowEmpty: !1,
+ },
+ type: {
+ required: !0,
+ rules: [a.NUMBER],
+ range: [1, 2],
+ allowEmpty: !1,
+ },
+ groupID: {
+ required: !0,
+ rules: [a.STRING],
+ allowEmpty: !1,
+ },
+ roomID: {
+ required: !1,
+ rules: [a.NUMBER],
+ // 仅支持数字房间号, 后续会支持字符串房间号
+ range: `1~${ue}`,
+ allowEmpty: !1,
+ },
+ timeout: {
+ required: !1,
+ rules: [a.NUMBER],
+ allowEmpty: !1,
+ },
+ userData: {
+ required: !1,
+ rules: [a.STRING],
+ allowEmpty: !1,
+ },
+ offlinePushInfo: {
+ required: !1,
+ rules: [a.OBJECT],
+ allowEmpty: !1,
+ },
+ },
+ joinInGroupCall: {
+ type: {
+ required: !0,
+ rules: [a.NUMBER],
+ range: [1, 2],
+ allowEmpty: !1,
+ },
+ groupID: {
+ required: !0,
+ rules: [a.STRING],
+ allowEmpty: !1,
+ },
+ roomID: {
+ required: !0,
+ rules: [a.NUMBER],
+ allowEmpty: !1,
+ },
+ },
+ inviteUser: {
+ userIDList: {
+ required: !0,
+ rules: [a.ARRAY],
+ allowEmpty: !1,
+ },
+ },
+ setSelfInfo: {
+ nickName: {
+ required: !1,
+ rules: [a.STRING],
+ allowEmpty: !1,
+ },
+ avatar: {
+ required: !1,
+ rules: [a.STRING],
+ allowEmpty: !1,
+ },
+ },
+ enableFloatWindow: [
+ {
+ key: 'enable',
+ required: !1,
+ rules: [a.BOOLEAN],
+ allowEmpty: !1,
+ },
+ ],
+ enableAIVoice: [
+ {
+ key: 'enable',
+ required: !0,
+ rules: [a.BOOLEAN],
+ allowEmpty: !1,
+ },
+ ],
+ enableMuteMode: [
+ {
+ key: 'enable',
+ required: !0,
+ rules: [a.BOOLEAN],
+ allowEmpty: !1,
+ },
+ ],
+ setCallingBell: [
+ {
+ key: 'filePath',
+ required: !1,
+ rules: [a.STRING],
+ allowEmpty: !0,
+ },
+ ],
+ setLanguage: [
+ {
+ key: 'language',
+ required: !0,
+ rules: [a.STRING],
+ allowEmpty: !1,
+ },
+ ],
+ setVideoDisplayMode: [
+ {
+ key: 'displayMode',
+ required: !0,
+ rules: [a.STRING],
+ range: [mA.CONTAIN, mA.COVER, mA.FILL],
+ allowEmpty: !1,
+ },
+ ],
+ setVideoResolution: [
+ {
+ key: 'resolution',
+ required: !0,
+ rules: [a.STRING],
+ range: [OA.RESOLUTION_1080P, OA.RESOLUTION_480P, OA.RESOLUTION_720P],
+ allowEmpty: !1,
+ },
+ ],
+};
+function le(s, A) {
+ const e = {
+ userId: s,
+ nick: '',
+ avatar: '',
+ remark: '',
+ displayUserInfo: '',
+ isAudioAvailable: !1,
+ isVideoAvailable: !1,
+ isEnter: !1,
+ domId: A || s,
+ };
+ return A ? e : { ...e, isEnter: !1 };
+}
+async function wt(s, A, e) {
+ var n, r, c, I, d;
+ let l = le(s, a.LOCAL_VIDEO);
+ try {
+ if (!A) return l;
+ const M = await A.getMyProfile(),
+ L = e == null ? void 0 : e.getData(o.CALL, a.LOCAL_USER_INFO);
+ return (
+ (M == null ? void 0 : M.code) === 0 &&
+ (l = {
+ ...l,
+ ...L,
+ userId: (n = M == null ? void 0 : M.data) == null ? void 0 : n.userID,
+ nick: (r = M == null ? void 0 : M.data) == null ? void 0 : r.nick,
+ avatar: (c = M == null ? void 0 : M.data) == null ? void 0 : c.avatar,
+ displayUserInfo:
+ ((I = M == null ? void 0 : M.data) == null ? void 0 : I.nick) ||
+ ((d = M == null ? void 0 : M.data) == null ? void 0 : d.userID),
+ }),
+ l
+ );
+ } catch (M) {
+ return console.error(`${a.PREFIX}getMyProfile failed, error: ${M}.`), l;
+ }
+}
+async function BA(s, A, e) {
+ let l = s.map((n) => le(n));
+ try {
+ if (!A) return l;
+ const n = await A.getFriendProfile({ userIDList: s });
+ if (n.code === 0) {
+ const { friendList: r = [], failureUserIDList: c = [] } = n.data;
+ let I = c.map((T) => T.userID);
+ if (c.length > 0) {
+ const T = await A.getUserProfile({ userIDList: c.map((E) => E.userID) });
+ (T == null ? void 0 : T.code) === 0 && (I = (T == null ? void 0 : T.data) || []);
+ }
+ const d = e == null ? void 0 : e.getData(o.CALL, a.REMOTE_USER_INFO_LIST),
+ M = r.map((T) => T.userID),
+ L = I.map((T) => T.userID);
+ l = s.map((T) => {
+ var q, v, O, G, Y, f, $;
+ const E = le(T),
+ D = M.indexOf(T),
+ y = L.indexOf(T);
+ let j = '',
+ m = '',
+ S = '',
+ k = '';
+ D !== -1 &&
+ ((j = ((q = r[D]) == null ? void 0 : q.remark) || ''),
+ (m = ((O = (v = r[D]) == null ? void 0 : v.profile) == null ? void 0 : O.nick) || ''),
+ (S = j || m || E.userId || ''),
+ (k = ((Y = (G = r[D]) == null ? void 0 : G.profile) == null ? void 0 : Y.avatar) || '')),
+ y !== -1 &&
+ ((m = ((f = I[y]) == null ? void 0 : f.nick) || ''),
+ (S = m || E.userId || ''),
+ (k = (($ = I[y]) == null ? void 0 : $.avatar) || ''));
+ const U = d.find((W) => W.userId === T) || {};
+ return { ...E, ...U, remark: j, nick: m, displayUserInfo: S, avatar: k };
+ });
+ }
+ return l;
+ } catch (n) {
+ return console.error(`${a.PREFIX}getRemoteUserProfile failed, error: ${n}.`), l;
+ }
+}
+function gA(s, A, e, l) {
+ const n = s.getData(o.CALL, a.IS_GROUP);
+ let r = `${X(A)}`;
+ return n && ((r = e ? `${e} ${r}` : r), (r = l ? `${r} ${l}` : r)), r;
+}
+function qA(s) {
+ const A = s.getData(o.CALL, a.CALL_STATUS);
+ if (A === B.IDLE) return AA.IDLE;
+ const e = s.getData(o.CALL, a.IS_GROUP);
+ if (A === B.CALLING) return e ? AA.DIALING_GROUP : AA.DIALING_C2C;
+ const l = s.getData(o.CALL, a.CALL_MEDIA_TYPE);
+ return e ? (l === z.AUDIO ? AA.CALLING_GROUP_AUDIO : AA.CALLING_GROUP_VIDEO) : l === z.AUDIO ? AA.CALLING_C2C_AUDIO : AA.CALLING_C2C_VIDEO;
+}
+async function bt(s, A, e, l) {
+ let n = [];
+ try {
+ const r = await A.getGroupMemberList({ groupID: s, count: e, offset: l });
+ if (r.code === 0) return r.data.memberList || n;
+ } catch (r) {
+ return console.error(`${a.PREFIX}getGroupMember failed, error: ${r}.`), n;
+ }
+}
+async function Vt(s, A) {
+ let e = {};
+ try {
+ const l = await A.getGroupProfile({ groupID: s });
+ if (l.code === 0) return l.data.group || e;
+ } catch (l) {
+ return console.error(`${a.PREFIX}getGroupProfile failed, error: ${l}.`), e;
+ }
+}
+let YA = class {
+ static generateTaskID() {
+ return this.currentTaskID++;
+ }
+ /**
+ *
+ * @param {string} taskName 'interval' 'timeout'
+ * @param {function} callback
+ * @param {object} options include:
+ * @param {number} options.delay millisecond
+ * @param {number} options.count 定时器回调执行次数,0 无限次 or n次
+ * @param {boolean} options.backgroundTask 在页面静默后是否继续执行定时器
+ */
+ static run(A = a.TIMEOUT, e, l) {
+ A === a.INTERVAL ? (l = { delay: 2e3, count: 0, backgroundTask: !0, ...l }) : (l = { delay: 2e3, count: 0, backgroundTask: !0, ...l }),
+ pt(e) && (l = { ...l, ...e }),
+ GA(A) && ((e = A), (A = a.TIMEOUT));
+ const n = {
+ taskID: this.generateTaskID(),
+ loopCount: 0,
+ intervalID: null,
+ timeoutID: null,
+ taskName: A,
+ callback: e,
+ ...l,
+ };
+ return this.taskMap.set(n.taskID, n), A === a.INTERNAL ? this.interval(n) : this.timeout(n), n.taskID;
+ }
+ /**
+ * 定时循环执行回调函数
+ * 可以指定循环的时间间隔
+ * 可以指定循环次数
+ * @param {object} taskItem
+ * @param {function} callback
+ * @param {*} delay
+ * @param {*} count
+ * @returns ID
+ */
+ static interval(A) {
+ const e = () => {
+ A.callback(), (A.loopCount += 1), this.isBreakLoop(A);
+ };
+ return (A.intervalID = setInterval(e, A.delay));
+ }
+ /**
+ * 延迟执行回调
+ * count = 0,循环
+ * count = n, 执行n次
+ * @param {object} taskItem
+ *
+ */
+ static timeout(A) {
+ const e = () => {
+ if ((A.callback(), (A.loopCount += 1), !this.isBreakLoop(A))) return (A.timeoutID = setTimeout(e, A.delay));
+ };
+ return (A.timeoutID = setTimeout(e, A.delay));
+ }
+ static hasTask(A) {
+ return this.taskMap.has(A);
+ }
+ static clearTask(A) {
+ if (!this.taskMap.has(A)) return !0;
+ const { intervalID: e, timeoutID: l, onVisibilitychange: n } = this.taskMap.get(A);
+ return e && clearInterval(e), l && clearTimeout(l), n && document.removeEventListener('visibilitychange', n), this.taskMap.delete(A), !0;
+ }
+ /**
+ * 1. 如果已移除出定时队列,退出当前任务
+ * 2. 如果当前任务已满足次数限制,则退出当前任务
+ * @param {object} taskItem
+ * @returns
+ */
+ static isBreakLoop(A) {
+ return this.taskMap.has(A.taskID) ? (A.count !== 0 && A.loopCount >= A.count ? (this.clearTask(A.taskID), !0) : !1) : !0;
+ }
+};
+YA.taskMap = /* @__PURE__ */ new Map();
+YA.currentTaskID = 1;
+class Pt {
+ constructor() {
+ (this.defaultStore = {
+ callStatus: B.IDLE,
+ callRole: J.UNKNOWN,
+ callMediaType: z.UNKNOWN,
+ localUserInfo: { userId: '' },
+ localUserInfoExcludeVolume: { userId: '' },
+ remoteUserInfoList: [],
+ remoteUserInfoExcludeVolumeList: [],
+ callerUserInfo: { userId: '' },
+ isGroup: !1,
+ callDuration: '00:00:00',
+ // 通话时长
+ callTips: '',
+ // 通话提示的信息. 例如: '等待谁接听', 'xxx 拒绝通话', 'xxx 挂断通话'
+ toastInfo: { text: '' },
+ // 远端用户挂断、拒绝、超时、忙线等的 toast 提示信息
+ isMinimized: !1,
+ // 用来记录当前是否悬浮窗模式
+ enableFloatWindow: !1,
+ // 开启/关闭悬浮窗功能,设置为false,通话界面左上角的悬浮窗按钮会隐藏
+ bigScreenUserId: '',
+ // 当前大屏幕显示的 userID 用户
+ language: Et(),
+ // en, zh-cn
+ isClickable: !1,
+ // 是否可点击, 用于按钮增加 loading 效果,不可点击
+ deviceList: { cameraList: [], microphoneList: [], currentCamera: {}, currentMicrophone: {} },
+ showPermissionTip: !1,
+ groupID: '',
+ roomID: 0,
+ cameraPosition: wA.FRONT,
+ // 前置或后置,值为front, back
+ // TUICallKit 组件上的属性
+ displayMode: mA.COVER,
+ // 设置预览远端的画面显示模式
+ videoResolution: OA.RESOLUTION_480P,
+ showSelectUser: !1,
+ // 小程序相关属性
+ pusher: {},
+ player: [],
+ isEarPhone: !1,
+ // 是否是听筒, 默认: false
+ }),
+ (this.store = Object.assign({}, this.defaultStore));
+ }
+ update(A, e) {
+ switch (A) {
+ default:
+ this.store[A] = e;
+ }
+ }
+ getData(A) {
+ return A ? this.store[A] : this.store;
+ }
+ // reset call store
+ reset(A = []) {
+ A.length === 0 && (A = Object.keys(this.store));
+ const e = A.reduce((l, n) => ({ ...l, [n]: this.defaultStore[n] }), {});
+ this.store = {
+ ...this.defaultStore,
+ ...this.store,
+ ...e,
+ };
+ }
+}
+let Bt = class fA {
+ constructor() {
+ (this.timerId = -1),
+ (this.storeMap = {
+ [o.CALL]: new Pt(),
+ }),
+ (this.task = {});
+ }
+ /**
+ * 获取 TUIStore 实例
+ * @returns {TUIStore}
+ */
+ static getInstance() {
+ return fA.instance || (fA.instance = new fA()), fA.instance;
+ }
+ /**
+ * UI 组件注册监听回调
+ * @param {StoreName} storeName store 名称
+ * @param {IOptions} options 监听信息
+ * @param {Object} params 扩展参数
+ * @param {String} params.notifyRangeWhenWatch 注册时监听时的通知范围, 'all' - 通知所有注册该 key 的监听; 'myself' - 通知本次注册该 key 的监听; 默认不通知
+ */
+ watch(A, e, l) {
+ this.task[A] || (this.task[A] = {});
+ const n = this.task[A];
+ Object.keys(e).forEach((r) => {
+ const c = e[r];
+ n[r] || (n[r] = /* @__PURE__ */ new Map()), n[r].set(c, 1);
+ const { notifyRangeWhenWatch: I } = l || {};
+ if ((I === a.ALL && this.notify(A, r), I === a.MYSELF)) {
+ const d = this.getData(A, r);
+ c.call(this, d);
+ }
+ });
+ }
+ /**
+ * UI 取消组件监听回调
+ * @param {StoreName} storeName store 名称
+ * @param {IOptions} options 监听信息,包含需要取消的回掉等
+ */
+ unwatch(A, e) {
+ if (!this.task[A]) return;
+ const l = this.task[A];
+ Object.keys(e).forEach((n) => {
+ l[n].delete(e[n]);
+ });
+ }
+ /**
+ * 通用 store 数据更新,messageList 的变更需要单独处理
+ * @param {StoreName} storeName store 名称
+ * @param {string} key 变更的 key
+ * @param {unknown} data 变更的数据
+ */
+ update(A, e, l) {
+ var n;
+ ((ae(l) || Fe(l) || Dt(l)) && this.storeMap[A].store[e] === l) || ((n = this.storeMap[A]) == null || n.update(e, l), this.notify(A, e));
+ }
+ /**
+ * 获取 Store 数据
+ * @param {StoreName} storeName store 名称
+ * @param {string} key 待获取的 key
+ * @returns {Any}
+ */
+ getData(A, e) {
+ var l;
+ return (l = this.storeMap[A]) == null ? void 0 : l.getData(e);
+ }
+ /**
+ * UI 组件注册监听回调
+ * @param {StoreName} storeName store 名称
+ * @param {string} key 变更的 key
+ */
+ notify(A, e) {
+ if (!this.task[A]) return;
+ const l = this.task[A];
+ if (l[e]) {
+ const n = l[e],
+ r = this.getData(A, e);
+ for (const [c] of n.entries()) c.call(this, r);
+ }
+ }
+ reset(A, e = [], l = !1) {
+ if (A in this.storeMap) {
+ const n = this.storeMap[A];
+ e.length === 0 && (e = Object.keys(n == null ? void 0 : n.store)),
+ n.reset(e),
+ l &&
+ e.forEach((r) => {
+ this.notify(A, r);
+ });
+ }
+ }
+ // 批量修改多个 key-value
+ updateStore(A, e) {
+ const l = e || o.CALL;
+ Object.keys(A).forEach((n) => {
+ this.update(l, n, A[n]);
+ });
+ }
+};
+var qt = Object.defineProperty,
+ Rt = Object.getOwnPropertyDescriptor,
+ Z = (s, A, e, l) => {
+ for (var n = l > 1 ? void 0 : l ? Rt(A, e) : A, r = s.length - 1, c; r >= 0; r--) (c = s[r]) && (n = (l ? c(A, e, n) : c(n)) || n);
+ return l && n && qt(A, e, n), n;
+ };
+const eA = Xe.getInstance(),
+ i = Bt.getInstance(),
+ Ce = '2.5.2',
+ xt = 'vue3',
+ F = class UA {
+ constructor() {
+ (this._tim = null),
+ (this._TUICore = null),
+ (this._timerId = -1),
+ (this._startTimeStamp = _A()),
+ (this._bellContext = null),
+ (this._defaultOfflinePushInfo = {
+ title: '',
+ description: X('you have a new call'),
+ }),
+ (this._handleCallStatusChange = async (A) => {
+ var e, l;
+ try {
+ const n = {
+ callRole: i.getData(o.CALL, a.CALL_ROLE),
+ callStatus: i.getData(o.CALL, a.CALL_STATUS),
+ };
+ if ((this._bellContext.setBellProperties(n), A === B.CALLING))
+ await ((e = this == null ? void 0 : this._bellContext) == null ? void 0 : e.play());
+ else {
+ if (A === B.CONNECTED) {
+ const r = i.getData(o.CALL, a.IS_GROUP),
+ c = i.getData(o.CALL, a.CALL_MEDIA_TYPE),
+ I = i.getData(o.CALL, a.REMOTE_USER_INFO_LIST),
+ d = r ? AA.DIALING_GROUP : AA.DIALING_C2C;
+ i.update(o.CALL, a.CALL_TIPS, ''),
+ this.statusChanged && this.statusChanged({ oldStatus: d, newStatus: qA(i) }),
+ !r && c === z.VIDEO && this.switchScreen(I[0].domId);
+ }
+ await ((l = this == null ? void 0 : this._bellContext) == null ? void 0 : l.stop());
+ }
+ } catch (n) {
+ console.warn(`${a.PREFIX}handleCallStatusChange, ${n}.`);
+ }
+ }),
+ console.log(`${a.PREFIX}version: ${Ce}`),
+ this._watchTUIStore(),
+ (this._bellContext = new mt());
+ }
+ static getInstance() {
+ return UA.instance || (UA.instance = new UA()), UA.instance;
+ }
+ async init(A) {
+ try {
+ if (this._tuiCallEngine) return;
+ let { userID: e, tim: l, userSig: n, sdkAppID: r, SDKAppID: c, isFromChat: I, component: d = Re.TUI_CALL_KIT } = A;
+ this._TUICore && ((r = this._TUICore.SDKAppID), (l = this._TUICore.tim)),
+ (this._tim = l),
+ console.log(`${a.PREFIX}init sdkAppId: ${r || c}, userId: ${e}`),
+ (this._tuiCallEngine = et.createInstance({
+ tim: l,
+ SDKAppID: r || c,
+ // 兼容传入 SDKAppID 的问题
+ // @ts-ignore
+ frameWork: xt,
+ language: 6,
+ callkitVersion: Ce,
+ chat: I || !1,
+ component: d,
+ })),
+ this._addListenTuiCallEngineEvent(),
+ i.update(o.CALL, a.LOCAL_USER_INFO, { userId: e }),
+ i.update(o.CALL, a.LOCAL_USER_INFO_EXCLUDE_VOLUMN, { userId: e }),
+ await this._tuiCallEngine.login({ userID: e, userSig: n, assetsPath: '' });
+ } catch (e) {
+ throw (console.error(`${a.PREFIX}init failed, error: ${e}.`), e);
+ }
+ }
+ // component destroy
+ async destroyed() {
+ try {
+ const A = i.getData(o.CALL, a.CALL_STATUS);
+ if (A !== B.IDLE) throw new Error(`please destroyed when status is idle, current status: ${A}`);
+ this._tuiCallEngine &&
+ (this._removeListenTuiCallEngineEvent(), await this._tuiCallEngine.destroyInstance(), (this._tuiCallEngine = null));
+ } catch (A) {
+ throw (console.error(`${a.PREFIX}destroyed failed, error: ${A}.`), A);
+ }
+ }
+ async call(A) {
+ try {
+ const { type: e, userID: l, offlinePushInfo: n } = A;
+ if (i.getData(o.CALL, a.CALL_STATUS) !== B.IDLE) return;
+ await this._updateCallStoreBeforeCall(e, [{ userId: l }]),
+ this._executeExternalBeforeCalling(),
+ (A.offlinePushInfo = { ...this._defaultOfflinePushInfo, ...n });
+ const r = await this._tuiCallEngine.call(A);
+ await this._updateCallStoreAfterCall([l], r);
+ } catch (e) {
+ this._handleCallError(e, 'call');
+ }
+ }
+ async groupCall(A) {
+ try {
+ const { userIDList: e, type: l, groupID: n, offlinePushInfo: r } = A;
+ if (i.getData(o.CALL, a.CALL_STATUS) !== B.IDLE) return;
+ const c = e.map((d) => ({ userId: d }));
+ await this._updateCallStoreBeforeCall(l, c, n),
+ this._executeExternalBeforeCalling(),
+ (A.offlinePushInfo = { ...this._defaultOfflinePushInfo, ...r });
+ const I = await this._tuiCallEngine.groupCall(A);
+ await this._updateCallStoreAfterCall(e, I);
+ } catch (e) {
+ this._handleCallError(e, 'groupCall');
+ }
+ }
+ async inviteUser(A) {
+ try {
+ const { userIDList: e } = A;
+ let l = await BA(e, this.getTim(), i);
+ const n = i.getData(o.CALL, a.REMOTE_USER_INFO_LIST);
+ i.update(o.CALL, a.REMOTE_USER_INFO_LIST, [...n, ...l]),
+ i.update(o.CALL, a.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST, [...n, ...l]),
+ this._tuiCallEngine && (await this._tuiCallEngine.inviteUser(A));
+ } catch (e) {
+ throw (console.error(`${a.PREFIX}inviteUser failed, error: ${e}.`), this._resetCallStore(), e);
+ }
+ }
+ async joinInGroupCall(A) {
+ try {
+ const e = {
+ [a.CALL_ROLE]: J.CALLEE,
+ [a.IS_GROUP]: !0,
+ [a.CALL_STATUS]: B.CONNECTED,
+ [a.CALL_MEDIA_TYPE]: A.type,
+ [a.GROUP_ID]: A.groupID,
+ [a.ROOM_ID]: A.roomID,
+ };
+ i.updateStore(e, o.CALL);
+ const l = await this._tuiCallEngine.joinInGroupCall(A);
+ A.type === z.VIDEO && (await this.openCamera(a.LOCAL_VIDEO)),
+ i.update(o.CALL, a.IS_CLICKABLE, !0),
+ this._startTimer(),
+ this._updateDeviceList(),
+ await this._tuiCallEngine.setVideoQuality(i.getData(o.CALL, a.VIDEO_RESOLUTION));
+ const n = i.getData(o.CALL, a.LOCAL_USER_INFO);
+ i.update(o.CALL, a.LOCAL_USER_INFO, { ...n, isEnter: !0 }),
+ i.update(o.CALL, a.LOCAL_USER_INFO_EXCLUDE_VOLUMN, { ...n, isEnter: !0 }),
+ this._setLocalUserInfoAudioVideoAvailable(!0, a.AUDIO);
+ } catch (e) {
+ throw (console.error(`${a.PREFIX}joinInGroupCall failed, error: ${e}.`), this._resetCallStore(), e);
+ }
+ }
+ // ===============================【其它对外接口】===============================
+ getTUICallEngineInstance() {
+ return (this == null ? void 0 : this._tuiCallEngine) || null;
+ }
+ setLogLevel(A) {
+ var e;
+ (e = this == null ? void 0 : this._tuiCallEngine) == null || e.setLogLevel(A);
+ }
+ setLanguage(A) {
+ A && Object.values(qe).includes(A) && i.update(o.CALL, a.LANGUAGE, A);
+ }
+ enableFloatWindow(A) {
+ i.update(o.CALL, a.ENABLE_FLOAT_WINDOW, A);
+ }
+ async setSelfInfo(A) {
+ const { nickName: e, avatar: l } = A;
+ try {
+ await this._tuiCallEngine.setSelfInfo({ nickName: e, avatar: l });
+ } catch (n) {
+ console.error(`${a.PREFIX}setSelfInfo failed, error: ${n}.`);
+ }
+ }
+ async enableAIVoice(A) {
+ try {
+ await this._tuiCallEngine.enableAIVoice(A), console.log(`${a.PREFIX}enableAIVoice: ${A}.`);
+ } catch (e) {
+ throw (console.error(`${a.PREFIX}enableAIVoice failed, error: ${e}.`), e);
+ }
+ }
+ async setCallingBell(A) {
+ let e = !0;
+ if (((e = await ut(A)), !e)) {
+ console.warn(`${a.PREFIX}setCallingBell failed, filePath: ${A}.`);
+ return;
+ }
+ const l = { calleeBellFilePath: A };
+ this._bellContext.setBellProperties(l);
+ }
+ async enableMuteMode(A) {
+ try {
+ const e = { isMuteBell: A };
+ this._bellContext.setBellProperties(e), await this._bellContext.setBellMute(A);
+ } catch (e) {
+ console.warn(`${a.PREFIX}enableMuteMode failed, error: ${e}.`);
+ }
+ }
+ async accept() {
+ try {
+ if ((i.update(o.CALL, a.CALL_STATUS, B.CONNECTED), this._updateDeviceList(), await this._tuiCallEngine.accept())) {
+ i.update(o.CALL, a.IS_CLICKABLE, !0),
+ this._startTimer(),
+ i.getData(o.CALL, a.CALL_MEDIA_TYPE) === z.VIDEO && (await this.openCamera(a.LOCAL_VIDEO)),
+ await this._tuiCallEngine.setVideoQuality(i.getData(o.CALL, a.VIDEO_RESOLUTION));
+ const l = i.getData(o.CALL, a.LOCAL_USER_INFO);
+ i.update(o.CALL, a.LOCAL_USER_INFO, { ...l, isEnter: !0 }),
+ i.update(o.CALL, a.LOCAL_USER_INFO_EXCLUDE_VOLUMN, { ...l, isEnter: !0 }),
+ this._setLocalUserInfoAudioVideoAvailable(!0, a.AUDIO);
+ }
+ } catch (A) {
+ if (Me(A)) return;
+ this._noDevicePermissionToast(A, z.AUDIO), this._resetCallStore();
+ }
+ }
+ async hangup() {
+ try {
+ const A = await this._tuiCallEngine.hangup();
+ } catch (A) {
+ console.debug(A);
+ }
+ this._resetCallStore();
+ }
+ async reject() {
+ try {
+ const A = await this._tuiCallEngine.reject();
+ } catch (A) {
+ console.debug(A);
+ }
+ this._resetCallStore();
+ }
+ async openCamera(A) {
+ try {
+ await this._tuiCallEngine.openCamera(A), this._setLocalUserInfoAudioVideoAvailable(!0, a.VIDEO);
+ } catch (e) {
+ this._noDevicePermissionToast(e, z.VIDEO), console.error(`${a.PREFIX}openCamera error: ${e}.`);
+ }
+ }
+ async closeCamera() {
+ try {
+ await this._tuiCallEngine.closeCamera(), this._setLocalUserInfoAudioVideoAvailable(!1, a.VIDEO);
+ } catch (A) {
+ console.error(`${a.PREFIX}closeCamera error: ${A}.`);
+ }
+ }
+ async openMicrophone() {
+ try {
+ await this._tuiCallEngine.openMicrophone(), this._setLocalUserInfoAudioVideoAvailable(!0, a.AUDIO);
+ } catch (A) {
+ console.error(`${a.PREFIX}openMicrophone failed, error: ${A}.`);
+ }
+ }
+ async closeMicrophone() {
+ try {
+ await this._tuiCallEngine.closeMicrophone(), this._setLocalUserInfoAudioVideoAvailable(!1, a.AUDIO);
+ } catch (A) {
+ console.error(`${a.PREFIX}closeMicrophone failed, error: ${A}.`);
+ }
+ }
+ switchScreen(A) {
+ A && i.update(o.CALL, a.BIG_SCREEN_USER_ID, A);
+ }
+ async switchCallMediaType() {
+ try {
+ const A = i.getData(o.CALL, a.CALL_MEDIA_TYPE);
+ if (A === z.AUDIO) {
+ console.warn(`${a.PREFIX}switchCallMediaType failed, ${A} not support.`);
+ return;
+ }
+ const e = await this._tuiCallEngine.switchCallMediaType(z.AUDIO);
+ i.update(o.CALL, a.CALL_MEDIA_TYPE, z.AUDIO);
+ const n = i.getData(o.CALL, a.IS_GROUP) ? AA.CALLING_GROUP_VIDEO : AA.CALLING_C2C_VIDEO,
+ r = qA(i);
+ this.statusChanged && this.statusChanged({ oldStatus: n, newStatus: r });
+ } catch (A) {
+ console.error(`${a.PREFIX}switchCallMediaType failed, error: ${A}.`);
+ }
+ }
+ async switchCamera() {
+ const e = i.getData(o.CALL, a.CAMERA_POSITION) === wA.BACK ? wA.FRONT : wA.BACK;
+ try {
+ await this._tuiCallEngine.switchCamera(e), i.update(o.CALL, a.CAMERA_POSITION, e);
+ } catch (l) {
+ console.error(`${a.PREFIX}_switchCamera failed, error: ${l}.`);
+ }
+ }
+ // 切前后置 miniProgram, 切扬声器
+ getTim() {
+ var A, e;
+ return this._tim
+ ? this._tim
+ : this._tuiCallEngine
+ ? ((A = this._tuiCallEngine) == null ? void 0 : A.tim) || ((e = this._tuiCallEngine) == null ? void 0 : e.getTim())
+ : (console.warn(`${a.PREFIX}getTim warning: _tuiCallEngine Instance is not available.`), null);
+ }
+ async switchDevice(A) {
+ try {
+ await this._tuiCallEngine.switchDevice(A);
+ } catch (e) {
+ console.error(`${a.PREFIX}_switchDevice failed, error: ${e}.`);
+ }
+ }
+ // ==========================【TUICallEngine 事件处理】==========================
+ _addListenTuiCallEngineEvent() {
+ if (!this._tuiCallEngine) {
+ console.warn(`${a.PREFIX}add engine event listener failed, engine is empty.`);
+ return;
+ }
+ this._tuiCallEngine.on(P.ERROR, this._handleError, this),
+ this._tuiCallEngine.on(P.INVITED, this._handleNewInvitationReceived, this),
+ this._tuiCallEngine.on(P.USER_ACCEPT, this._handleUserAccept, this),
+ this._tuiCallEngine.on(P.USER_ENTER, this._handleUserEnter, this),
+ this._tuiCallEngine.on(P.USER_LEAVE, this._handleUserLeave, this),
+ this._tuiCallEngine.on(P.REJECT, this._handleInviteeReject, this),
+ this._tuiCallEngine.on(P.NO_RESP, this._handleNoResponse, this),
+ this._tuiCallEngine.on(P.LINE_BUSY, this._handleLineBusy, this),
+ this._tuiCallEngine.on(P.CALLING_CANCEL, this._handleCallingCancel, this),
+ this._tuiCallEngine.on(P.SDK_READY, this._handleSDKReady, this),
+ this._tuiCallEngine.on(P.KICKED_OUT, this._handleKickedOut, this),
+ this._tuiCallEngine.on(P.MESSAGE_SENT_BY_ME, this._messageSentByMe, this),
+ this._tuiCallEngine.on(P.CALLING_END, this._handleCallingEnd, this),
+ this._tuiCallEngine.on(P.CALL_TYPE_CHANGED, this._handleCallTypeChange, this),
+ this._tuiCallEngine.on(P.USER_VIDEO_AVAILABLE, this._handleUserVideoAvailable, this),
+ this._tuiCallEngine.on(P.USER_AUDIO_AVAILABLE, this._handleUserAudioAvailable, this),
+ this._tuiCallEngine.on(P.USER_VOICE_VOLUME, this._handleUserVoiceVolume, this),
+ this._tuiCallEngine.on(P.DEVICED_UPDATED, this._handleDeviceUpdate, this);
+ }
+ _removeListenTuiCallEngineEvent() {
+ this._tuiCallEngine.off(P.ERROR, this._handleError),
+ this._tuiCallEngine.off(P.INVITED, this._handleNewInvitationReceived),
+ this._tuiCallEngine.off(P.USER_ACCEPT, this._handleUserAccept),
+ this._tuiCallEngine.off(P.USER_ENTER, this._handleUserEnter),
+ this._tuiCallEngine.off(P.USER_LEAVE, this._handleUserLeave),
+ this._tuiCallEngine.off(P.REJECT, this._handleInviteeReject),
+ this._tuiCallEngine.off(P.NO_RESP, this._handleNoResponse),
+ this._tuiCallEngine.off(P.LINE_BUSY, this._handleLineBusy),
+ this._tuiCallEngine.off(P.CALLING_CANCEL, this._handleCallingCancel),
+ this._tuiCallEngine.off(P.SDK_READY, this._handleSDKReady),
+ this._tuiCallEngine.off(P.KICKED_OUT, this._handleKickedOut),
+ this._tuiCallEngine.off(P.MESSAGE_SENT_BY_ME, this._messageSentByMe),
+ this._tuiCallEngine.off(P.CALLING_END, this._handleCallingEnd),
+ this._tuiCallEngine.off(P.CALL_TYPE_CHANGED, this._handleCallTypeChange),
+ this._tuiCallEngine.off(P.USER_VIDEO_AVAILABLE, this._handleUserVideoAvailable),
+ this._tuiCallEngine.off(P.USER_AUDIO_AVAILABLE, this._handleUserAudioAvailable),
+ this._tuiCallEngine.off(P.USER_VOICE_VOLUME, this._handleUserVoiceVolume),
+ this._tuiCallEngine.off(P.DEVICED_UPDATED, this._handleDeviceUpdate);
+ }
+ _handleError(A) {
+ const { code: e, message: l } = A || {},
+ n = Object.values(ce).indexOf(e);
+ let r = '';
+ if (n !== -1) {
+ const c = Object.keys(ce)[n];
+ (r = X(it[c])), r && i.update(o.CALL, a.TOAST_INFO, { text: r, type: a.ERROR });
+ }
+ this._executeExternalAfterCalling(), console.error(`${a.PREFIX}_handleError, errorCode: ${e}; errorMessage: ${r || l}.`);
+ }
+ async _handleNewInvitationReceived(A) {
+ console.log(`${a.PREFIX}onCallReceived event data: ${JSON.stringify(A)}.`);
+ const {
+ sponsor: e = '',
+ isFromGroup: l,
+ callMediaType: n,
+ inviteData: r = {},
+ calleeIdList: c = [],
+ groupID: I = '',
+ } = this._analyzeEventData(A),
+ d = i.getData(o.CALL, a.LOCAL_USER_INFO),
+ M = [e, ...c.filter((j) => j !== d.userId)],
+ L = n || r.callType,
+ T = L === z.AUDIO ? aA.CALLEE_CALLING_AUDIO_MSG : aA.CALLEE_CALLING_VIDEO_MSG;
+ let E = {
+ [a.CALL_ROLE]: J.CALLEE,
+ [a.IS_GROUP]: l,
+ [a.CALL_STATUS]: B.CALLING,
+ [a.CALL_MEDIA_TYPE]: L,
+ [a.CALL_TIPS]: X(T),
+ [a.CALLER_USER_INFO]: { userId: e },
+ [a.GROUP_ID]: I,
+ };
+ i.updateStore(E, o.CALL),
+ this._executeExternalBeforeCalling(),
+ this.statusChanged && this.statusChanged({ oldStatus: AA.IDLE, newStatus: AA.BE_INVITED });
+ const D = await BA(M, this.getTim(), i),
+ [y] = D.filter((j) => j.userId === e);
+ D.length > 0 &&
+ i.updateStore(
+ {
+ [a.REMOTE_USER_INFO_LIST]: D,
+ [a.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST]: D,
+ [a.CALLER_USER_INFO]: {
+ userId: e,
+ nick: (y == null ? void 0 : y.nick) || '',
+ avatar: (y == null ? void 0 : y.avatar) || '',
+ displayUserInfo: (y == null ? void 0 : y.remark) || (y == null ? void 0 : y.nick) || e,
+ },
+ },
+ o.CALL
+ );
+ }
+ _handleUserAccept(A) {
+ this._callerChangeToConnected(),
+ i.update(o.CALL, a.TOAST_INFO, X('answered')),
+ console.log(`${a.PREFIX}accept event data: ${JSON.stringify(A)}.`);
+ }
+ async _handleUserEnter(A) {
+ this._callerChangeToConnected();
+ const { userID: e, data: l } = this._analyzeEventData(A);
+ let n = i.getData(o.CALL, a.REMOTE_USER_INFO_LIST);
+ if (!n.find((c) => (c == null ? void 0 : c.userId) === e)) {
+ n.push({ userId: e }),
+ n.length > 0 && (i.update(o.CALL, a.REMOTE_USER_INFO_LIST, n), i.update(o.CALL, a.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST, n));
+ const [c] = await BA([e], this.getTim(), i);
+ (n = i.getData(o.CALL, a.REMOTE_USER_INFO_LIST)),
+ n.forEach((I) => {
+ (I == null ? void 0 : I.userId) === e && (I = Object.assign(I, c));
+ });
+ }
+ (n = n.map((c) => (c.userId === e && (c.isEnter = !0), c))),
+ n.length > 0 && (i.update(o.CALL, a.REMOTE_USER_INFO_LIST, n), i.update(o.CALL, a.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST, n)),
+ console.log(`${a.PREFIX}userEnter event data: ${JSON.stringify(A)}.`);
+ }
+ _callerChangeToConnected() {
+ const A = i.getData(o.CALL, a.CALL_ROLE);
+ i.getData(o.CALL, a.CALL_STATUS) === B.CALLING && A === J.CALLER && (i.update(o.CALL, a.CALL_STATUS, B.CONNECTED), this._startTimer());
+ }
+ _handleUserLeave(A) {
+ console.log(`${a.PREFIX}userLeave event data: ${JSON.stringify(A)}.`);
+ const { data: e, userID: l } = this._analyzeEventData(A);
+ if (i.getData(o.CALL, a.IS_GROUP)) {
+ const r = (i.getData(o.CALL, a.REMOTE_USER_INFO_LIST).find((I) => I.userId === l) || {}).displayUserInfo || l,
+ c = gA(i, aA.END_CALL, r);
+ i.update(o.CALL, a.TOAST_INFO, { text: c });
+ }
+ l && this._deleteRemoteUser([l]);
+ }
+ _unNormalEventsManager(A, e) {
+ console.log(`${a.PREFIX}${e} event data: ${JSON.stringify(A)}.`);
+ const l = i.getData(o.CALL, a.IS_GROUP),
+ n = i.getData(o.CALL, a.REMOTE_USER_INFO_LIST);
+ switch (e) {
+ case P.REJECT:
+ case P.LINE_BUSY: {
+ const { userID: r } = this._analyzeEventData(A);
+ let c = e === P.REJECT ? aA.OTHER_SIDE_REJECT_CALL : aA.OTHER_SIDE_LINE_BUSY,
+ I = gA(i, c);
+ if (l) {
+ const d = (n.find((M) => M.userId === r) || {}).displayUserInfo || r;
+ (c = e === P.REJECT ? aA.REJECT_CALL : aA.IN_BUSY), (I = gA(i, c, d));
+ }
+ i.update(o.CALL, a.TOAST_INFO, { text: I }), r && this._deleteRemoteUser([r]);
+ break;
+ }
+ case P.NO_RESP: {
+ const { userIDList: r = [] } = this._analyzeEventData(A),
+ c = l ? aA.TIMEOUT : aA.CALL_TIMEOUT,
+ I = r.map((M) => (n.find((T) => T.userId === M) || {}).displayUserInfo || M),
+ d = l ? gA(i, c, I.join()) : gA(i, c);
+ i.update(o.CALL, a.TOAST_INFO, { text: d }), r.length > 0 && this._deleteRemoteUser(r);
+ break;
+ }
+ case P.CALLING_CANCEL: {
+ this._resetCallStore();
+ break;
+ }
+ }
+ }
+ _handleInviteeReject(A) {
+ this._unNormalEventsManager(A, P.REJECT);
+ }
+ _handleNoResponse(A) {
+ this._unNormalEventsManager(A, P.NO_RESP);
+ }
+ _handleLineBusy(A) {
+ this._unNormalEventsManager(A, P.LINE_BUSY);
+ }
+ _handleCallingCancel(A) {
+ this._executeExternalAfterCalling(), this._unNormalEventsManager(A, P.CALLING_CANCEL);
+ }
+ _handleCallingEnd(A) {
+ console.log(`${a.PREFIX}callEnd event data: ${JSON.stringify(A)}.`), this._executeExternalAfterCalling(), this._resetCallStore();
+ }
+ // SDK_READY 后才能调用 tim 接口, 否则登录后立刻获取导致调用接口失败. v2.27.4+、v3 接口 login 后会抛出 SDK_READY
+ async _handleSDKReady(A) {
+ let e = i.getData(o.CALL, a.LOCAL_USER_INFO);
+ (e = await wt(e.userId, this.getTim(), i)),
+ (this._defaultOfflinePushInfo.title = e == null ? void 0 : e.displayUserInfo),
+ i.update(o.CALL, a.LOCAL_USER_INFO, e),
+ i.update(o.CALL, a.LOCAL_USER_INFO_EXCLUDE_VOLUMN, e);
+ }
+ _handleKickedOut(A) {
+ console.log(`${a.PREFIX}kickOut event data: ${JSON.stringify(A)}.`),
+ this.kickedOut && this.kickedOut(A),
+ i.update(o.CALL, a.CALL_TIPS, gA(i, aA.KICK_OUT)),
+ this._resetCallStore();
+ }
+ _handleCallTypeChange(A) {
+ const { newCallType: e, type: l } = this._analyzeEventData(A);
+ i.update(o.CALL, a.CALL_MEDIA_TYPE, e || l);
+ }
+ _messageSentByMe(A) {
+ const e = A == null ? void 0 : A.data;
+ this.onMessageSentByMe && this.onMessageSentByMe(e);
+ }
+ // =============================【 WEB 私有事件】==============================
+ async _handleUserVideoAvailable(A) {
+ const { userID: e, isVideoAvailable: l } = this._analyzeEventData(A);
+ console.log(`${a.PREFIX}_handleUserVideoAvailable event data: ${JSON.stringify(A)}.`);
+ try {
+ l && (await this._startRemoteView(e));
+ } catch (n) {
+ console.error(`${a.PREFIX}_startRemoteView failed, error: ${n}.`);
+ }
+ this._setRemoteUserInfoAudioVideoAvailable(l, a.VIDEO, e);
+ }
+ _handleUserAudioAvailable(A) {
+ const { userID: e, isAudioAvailable: l } = this._analyzeEventData(A);
+ console.log(`${a.PREFIX}_handleUserAudioAvailable event data: ${JSON.stringify(A)}.`),
+ this._setRemoteUserInfoAudioVideoAvailable(l, a.AUDIO, e);
+ }
+ _handleUserVoiceVolume(A) {
+ try {
+ const { volumeMap: e } = this._analyzeEventData(A);
+ if ((e || []).length === 0) return;
+ const l = i.getData(o.CALL, a.LOCAL_USER_INFO);
+ let n = i.getData(o.CALL, a.REMOTE_USER_INFO_LIST);
+ const [r] = e.filter((d) => d.userId === l.userId),
+ c = e.reduce((d, M) => (M.userId !== l.userId ? { ...d, [M.userId]: M.audioVolume } : d), {});
+ (l.volume = r.audioVolume), (n = n.map((d) => ({ ...d, volume: c[d.userId] })));
+ const I = {
+ [a.LOCAL_USER_INFO]: l,
+ [a.REMOTE_USER_INFO_LIST]: n,
+ };
+ i.updateStore(I, o.CALL);
+ } catch (e) {
+ console.debug(e);
+ }
+ }
+ _handleDeviceUpdate(A) {
+ const { cameraList: e, microphoneList: l, speakerList: n, currentCamera: r, currentMicrophone: c, currentSpeaker: I } = A;
+ i.update(o.CALL, a.DEVICE_LIST, {
+ cameraList: e,
+ microphoneList: l,
+ speakerList: n,
+ currentCamera: r,
+ currentMicrophone: c,
+ currentSpeaker: I,
+ });
+ }
+ _updateDeviceList() {
+ i.getData(o.CALL, a.CALL_MEDIA_TYPE) === z.VIDEO &&
+ this._tuiCallEngine
+ .getDeviceList('camera')
+ .then((e) => {
+ const l = i.getData(o.CALL, a.DEVICE_LIST),
+ n = (e == null ? void 0 : e[0]) || {};
+ i.update(o.CALL, a.DEVICE_LIST, { ...l, cameraList: e, currentCamera: n });
+ })
+ .catch((e) => {
+ console.error(`${a.PREFIX}updateCameraList failed, error: ${e}.`);
+ }),
+ this._tuiCallEngine
+ .getDeviceList('microphones')
+ .then((e) => {
+ const l = i.getData(o.CALL, a.DEVICE_LIST),
+ n = (e == null ? void 0 : e[0]) || {};
+ i.update(o.CALL, a.DEVICE_LIST, { ...l, microphoneList: e, currentMicrophone: n });
+ })
+ .catch((e) => {
+ console.error(`${a.PREFIX}updateMicrophoneList failed, error: ${e}.`);
+ });
+ }
+ // ==========================【 miniProgram 私有事件】==========================
+ // 处理 “呼叫” 抛出的异常
+ _handleCallError(A, e) {
+ if (!Me(A))
+ throw (this._noDevicePermissionToast(A, z.AUDIO), console.error(`${a.PREFIX}${e} failed, error: ${A}.`), this._resetCallStore(), A);
+ }
+ setCallback(A) {
+ const { beforeCalling: e, afterCalling: l, onMinimized: n, onMessageSentByMe: r, kickedOut: c, statusChanged: I } = A;
+ e && (this.beforeCalling = e),
+ l && (this.afterCalling = l),
+ n && (this.onMinimized = n),
+ r && (this.onMessageSentByMe = r),
+ c && (this.kickedOut = c),
+ I && (this.statusChanged = I);
+ }
+ async getDeviceList(A) {
+ try {
+ return await this._tuiCallEngine.getDeviceList(A);
+ } catch (e) {
+ this._handleCallError(e, 'call');
+ }
+ }
+ toggleMinimize() {
+ const A = i.getData(o.CALL, a.IS_MINIMIZED);
+ i.update(o.CALL, a.IS_MINIMIZED, !A),
+ console.log(`${a.PREFIX}toggleMinimize: ${A} -> ${!A}.`),
+ this.onMinimized && this.onMinimized(A, !A);
+ }
+ _executeExternalBeforeCalling() {
+ this.beforeCalling && this.beforeCalling();
+ }
+ _executeExternalAfterCalling() {
+ this.afterCalling && this.afterCalling();
+ }
+ setVideoDisplayMode(A) {
+ i.update(o.CALL, a.DISPLAY_MODE, A);
+ }
+ async setVideoResolution(A) {
+ try {
+ if (!A) return;
+ i.update(o.CALL, a.VIDEO_RESOLUTION, A), await this._tuiCallEngine.setVideoQuality(A);
+ } catch (e) {
+ console.warn(`${a.PREFIX}setVideoResolution failed, error: ${e}.`);
+ }
+ }
+ async _startRemoteView(A) {
+ if (!A) {
+ console.warn(`${a.PREFIX}_startRemoteView userID is empty`);
+ return;
+ }
+ if (!document.getElementById(A)) return console.warn(`${a.PREFIX}_startRemoteView can't find HTMLElement sid: ${A}`), Promise.reject();
+ try {
+ const e = i.getData(o.CALL, a.DISPLAY_MODE);
+ await this._tuiCallEngine.startRemoteView({ userID: A, videoViewDomID: A, options: { objectFit: e } });
+ } catch (e) {
+ return console.error(`${a.PREFIX}_startRemoteView error: ${e}.`), Promise.reject(e);
+ }
+ }
+ _setRemoteUserInfoAudioVideoAvailable(A, e, l) {
+ let n = i.getData(o.CALL, a.REMOTE_USER_INFO_LIST);
+ (n = n.map((r) => {
+ if (r.userId === l) {
+ if (e === a.AUDIO) return { ...r, isAudioAvailable: A };
+ if (e === a.VIDEO) return { ...r, isVideoAvailable: A };
+ }
+ return r;
+ })),
+ n.length > 0 && (i.update(o.CALL, a.REMOTE_USER_INFO_LIST, n), i.update(o.CALL, a.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST, n));
+ }
+ _setLocalUserInfoAudioVideoAvailable(A, e) {
+ let l = i.getData(o.CALL, a.LOCAL_USER_INFO);
+ e === a.AUDIO && (l = { ...l, isAudioAvailable: A }),
+ e === a.VIDEO && (l = { ...l, isVideoAvailable: A }),
+ i.update(o.CALL, a.LOCAL_USER_INFO, l),
+ i.update(o.CALL, a.LOCAL_USER_INFO_EXCLUDE_VOLUMN, l);
+ }
+ async _updateCallStoreBeforeCall(A, e, l) {
+ const n = l || i.getData(o.CALL, a.IS_MINIMIZED) ? aA.CALLER_GROUP_CALLING_MSG : aA.CALLER_CALLING_MSG;
+ let r = {
+ [a.CALL_MEDIA_TYPE]: A,
+ [a.CALL_ROLE]: J.CALLER,
+ [a.REMOTE_USER_INFO_LIST]: e,
+ [a.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST]: e,
+ [a.IS_GROUP]: !!l,
+ [a.CALL_TIPS]: X(n),
+ [a.GROUP_ID]: l,
+ };
+ i.updateStore({ ...r, [a.CALL_STATUS]: B.CALLING }, o.CALL),
+ this.statusChanged &&
+ this.statusChanged({
+ oldStatus: AA.IDLE,
+ newStatus: l ? AA.DIALING_GROUP : AA.DIALING_C2C,
+ }),
+ this._updateDeviceList();
+ const c = await BA(
+ e.map((I) => I.userId),
+ this.getTim(),
+ i
+ );
+ c.length > 0 && (i.update(o.CALL, a.REMOTE_USER_INFO_LIST, c), i.update(o.CALL, a.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST, c));
+ }
+ async _updateCallStoreAfterCall(A, e) {
+ if (e) {
+ if ((i.update(o.CALL, a.IS_CLICKABLE, !0), i.update(o.CALL, a.ROOM_ID, e.roomID), e.code === 0)) {
+ i.getData(o.CALL, a.CALL_MEDIA_TYPE) === z.VIDEO && (await this.openCamera(a.LOCAL_VIDEO));
+ try {
+ await this._tuiCallEngine.setVideoQuality(i.getData(o.CALL, a.VIDEO_RESOLUTION));
+ } catch (r) {
+ console.warn(`${a.PREFIX}setVideoQuality failed, error: ${r}.`);
+ }
+ } else {
+ this._resetCallStore();
+ return;
+ }
+ const l = i.getData(o.CALL, a.LOCAL_USER_INFO);
+ i.update(o.CALL, a.LOCAL_USER_INFO, { ...l, isEnter: !0 }),
+ i.update(o.CALL, a.LOCAL_USER_INFO_EXCLUDE_VOLUMN, { ...l, isEnter: !0 }),
+ this._setLocalUserInfoAudioVideoAvailable(!0, a.AUDIO);
+ } else this._resetCallStore();
+ }
+ _resetCurrentDevice() {
+ const { cameraList: A, microphoneList: e, speakerList: l } = i.getData(o.CALL, a.DEVICE_LIST);
+ i.update(o.CALL, a.DEVICE_LIST, {
+ microphoneList: e,
+ cameraList: A,
+ speakerList: l,
+ currentCamera: (A == null ? void 0 : A[0]) || {},
+ currentMicrophone: (e == null ? void 0 : e[0]) || {},
+ currentSpeaker: (l == null ? void 0 : l[0]) || {},
+ });
+ }
+ _resetCallStore() {
+ const A = qA(i);
+ this._stopTimer();
+ let e = Object.keys(QA).filter((r) => {
+ switch (QA[r]) {
+ case a.CALL_STATUS:
+ case a.LANGUAGE:
+ case a.IS_GROUP:
+ case a.DISPLAY_MODE:
+ case a.VIDEO_RESOLUTION:
+ case a.ENABLE_FLOAT_WINDOW:
+ case a.LOCAL_USER_INFO:
+ case a.LOCAL_USER_INFO_EXCLUDE_VOLUMN:
+ return !1;
+ default:
+ return !0;
+ }
+ });
+ (e = e.map((r) => QA[r])),
+ i.reset(o.CALL, e),
+ i.getData(o.CALL, a.CALL_STATUS) !== B.IDLE && i.reset(o.CALL, [a.CALL_STATUS], !0),
+ i.reset(o.CALL, [a.IS_MINIMIZED], !0),
+ i.reset(o.CALL, [a.IS_EAR_PHONE], !0),
+ i.update(o.CALL, a.LOCAL_USER_INFO, {
+ ...i.getData(o.CALL, a.LOCAL_USER_INFO),
+ isVideoAvailable: !1,
+ isAudioAvailable: !1,
+ }),
+ i.update(o.CALL, a.LOCAL_USER_INFO_EXCLUDE_VOLUMN, {
+ ...i.getData(o.CALL, a.LOCAL_USER_INFO_EXCLUDE_VOLUMN),
+ isVideoAvailable: !1,
+ isAudioAvailable: !1,
+ }),
+ i.update(o.CALL, a.REMOTE_USER_INFO_LIST, []),
+ i.update(o.CALL, a.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST, []),
+ this._resetCurrentDevice();
+ const n = qA(i);
+ A !== n && this.statusChanged && this.statusChanged({ oldStatus: A, newStatus: n });
+ }
+ _noDevicePermissionToast(A, e) {
+ var l;
+ if (yt(A)) {
+ let n = '';
+ e === z.AUDIO && (n = gA(i, aA.NO_MICROPHONE_DEVICE_PERMISSION)), e === z.VIDEO && (n = gA(i, aA.NO_CAMERA_DEVICE_PERMISSION));
+ const r = (l = this._tuiCallEngine) == null ? void 0 : l.getDevicePermission();
+ (r != null && r.audio) || i.update(o.CALL, a.SHOW_PERMISSION_TIP, !0),
+ n && i.update(o.CALL, a.TOAST_INFO, { text: n, type: a.ERROR }),
+ console.error(`${a.PREFIX}call failed, error: ${A.message}.`);
+ }
+ }
+ // 通话时长更新
+ _startTimer() {
+ this._timerId === -1 &&
+ ((this._startTimeStamp = _A()), (this._timerId = YA.run(a.TIMEOUT, this._updateCallDuration.bind(this), { delay: 1e3 })));
+ }
+ _updateCallDuration() {
+ const A = Math.round((_A() - this._startTimeStamp) / 1e3),
+ e = Tt(A);
+ i.update(o.CALL, a.CALL_DURATION, e);
+ }
+ _stopTimer() {
+ this._timerId !== -1 && (YA.clearTask(this._timerId), (this._timerId = -1));
+ }
+ _deleteRemoteUser(A) {
+ if (A.length === 0) return;
+ let e = i.getData(o.CALL, a.REMOTE_USER_INFO_LIST);
+ A.forEach((l) => {
+ e = e.filter((n) => n.userId !== l);
+ }),
+ i.update(o.CALL, a.REMOTE_USER_INFO_LIST, e),
+ i.update(o.CALL, a.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST, e);
+ }
+ _analyzeEventData(A) {
+ return A || {};
+ }
+ // =========================【调用 chat api】=========================
+ // 获取群成员
+ async getGroupMemberList(A, e) {
+ const l = i.getData(o.CALL, a.GROUP_ID);
+ return await bt(l, this.getTim(), A, e);
+ }
+ // 获取群信息
+ async getGroupProfile() {
+ const A = i.getData(o.CALL, a.GROUP_ID);
+ return await Vt(A, this.getTim());
+ }
+ _watchTUIStore() {
+ i == null ||
+ i.watch(o.CALL, {
+ [a.CALL_STATUS]: this._handleCallStatusChange,
+ });
+ }
+ _unwatchTUIStore() {
+ i == null ||
+ i.unwatch(o.CALL, {
+ [a.CALL_STATUS]: this._handleCallStatusChange,
+ });
+ }
+ // =========================【web 融合 chat 提供的方法】=========================
+ bindTUICore(A) {
+ this._TUICore = A;
+ }
+ };
+Z([tA(), lA(sA.init)], F.prototype, 'init', 1);
+Z([tA(), lA(sA.call)], F.prototype, 'call', 1);
+Z([tA(), lA(sA.groupCall)], F.prototype, 'groupCall', 1);
+Z([tA(), lA(sA.inviteUser)], F.prototype, 'inviteUser', 1);
+Z([tA(), lA(sA.joinInGroupCall)], F.prototype, 'joinInGroupCall', 1);
+Z([lA(sA.setLanguage)], F.prototype, 'setLanguage', 1);
+Z([lA(sA.enableFloatWindow)], F.prototype, 'enableFloatWindow', 1);
+Z([lA(sA.setSelfInfo)], F.prototype, 'setSelfInfo', 1);
+Z([lA(sA.enableAIVoice)], F.prototype, 'enableAIVoice', 1);
+Z([lA(sA.setCallingBell)], F.prototype, 'setCallingBell', 1);
+Z([lA(sA.enableMuteMode)], F.prototype, 'enableMuteMode', 1);
+Z([tA()], F.prototype, 'accept', 1);
+Z([tA()], F.prototype, 'hangup', 1);
+Z([tA()], F.prototype, 'reject', 1);
+Z([tA()], F.prototype, 'openCamera', 1);
+Z([tA()], F.prototype, 'closeCamera', 1);
+Z([tA()], F.prototype, 'openMicrophone', 1);
+Z([tA()], F.prototype, 'closeMicrophone', 1);
+Z([tA()], F.prototype, 'switchScreen', 1);
+Z([tA()], F.prototype, 'switchCallMediaType', 1);
+Z([tA()], F.prototype, 'switchCamera', 1);
+Z([tA()], F.prototype, 'switchDevice', 1);
+Z([lA(sA.setVideoDisplayMode)], F.prototype, 'setVideoDisplayMode', 1);
+Z([lA(sA.setVideoResolution)], F.prototype, 'setVideoResolution', 1);
+Z(
+ [
+ Ut({
+ retries: 5,
+ timeout: 200,
+ onRetrying(s) {
+ console.warn(`${a.PREFIX}_startRemoteView, retrying [${s}]`);
+ },
+ }),
+ ],
+ F.prototype,
+ '_startRemoteView',
+ 1
+);
+let Qt = F;
+const w = Qt.getInstance(),
+ oA =
+ 'data:image/png;base64,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',
+ Gt = { class: 'singleInvite-message' },
+ kt = ['src'],
+ Xt = { class: 'singleInvite-nick' },
+ Wt = {
+ key: 0,
+ class: 'singleInvite-tips',
+ },
+ Ft = /* @__PURE__ */ V({
+ __name: 'SingleAudio',
+ props: {
+ isSponsor: {
+ type: Boolean,
+ required: !0,
+ },
+ remoteUsersList: {
+ type: Array,
+ required: !0,
+ },
+ callAlertMessage: {
+ type: String,
+ required: !0,
+ },
+ callStatus: {
+ type: String,
+ required: !0,
+ },
+ },
+ setup(s) {
+ function A(e) {
+ e.target.src = oA;
+ }
+ return (e, l) => (
+ u(),
+ N('div', Gt, [
+ C(
+ 'img',
+ {
+ class: 'singleInvite-avatar',
+ src: s.remoteUsersList[0].avatar || t(oA),
+ onerror: A,
+ },
+ null,
+ 8,
+ kt
+ ),
+ C('div', Xt, b(s.remoteUsersList[0].displayUserInfo), 1),
+ s.callStatus === t(B).CALLING ? (u(), N('span', Wt, b(s.callAlertMessage), 1)) : p('', !0),
+ ])
+ );
+ },
+ });
+const Q = (s, A) => {
+ const e = s.__vccOpts || s;
+ for (const [l, n] of A) e[l] = n;
+ return e;
+ },
+ Yt = /* @__PURE__ */ Q(Ft, [['__scopeId', 'data-v-b7fbc004']]),
+ Kt = { class: 'singleInvite-box' },
+ Zt = { class: 'singleInvite-message' },
+ Ht = { class: 'singleInvite-nick' },
+ Jt = { class: 'singleInvite-tips' },
+ _t = ['src'],
+ $t = /* @__PURE__ */ V({
+ __name: 'SingleVideo',
+ props: {
+ isSponsor: {
+ type: Boolean,
+ required: !0,
+ },
+ remoteUsersList: {
+ type: Array,
+ required: !0,
+ },
+ callAlertMessage: {
+ type: String,
+ required: !0,
+ },
+ },
+ setup(s) {
+ function A(e) {
+ e.target.src = oA;
+ }
+ return (e, l) => (
+ u(),
+ N('div', Kt, [
+ C('div', Zt, [C('div', Ht, b(s.remoteUsersList[0].displayUserInfo), 1), C('span', Jt, b(s.callAlertMessage), 1)]),
+ C(
+ 'img',
+ {
+ class: 'singleInvite-avatar',
+ src: s.remoteUsersList[0].avatar || t(oA),
+ onerror: A,
+ },
+ null,
+ 8,
+ _t
+ ),
+ ])
+ );
+ },
+ });
+const Aa = /* @__PURE__ */ Q($t, [['__scopeId', 'data-v-5121a73b']]),
+ ea = {
+ xmlns: 'http://www.w3.org/2000/svg',
+ fill: 'none',
+ viewBox: '0 0 16 16',
+ class: 'design-iconfont',
+ },
+ ta = { key: 0 },
+ aa = /* @__PURE__ */ C(
+ 'path',
+ {
+ d: 'M8.62462 7.17395C8.90076 7.17395 9.12462 7.38807 9.12462 7.65221C9.12462 7.89434 8.93651 8.09444 8.69246 8.12611L8.62462 8.13047H7.3335C7.05735 8.13047 6.8335 7.91635 6.8335 7.65221C6.8335 7.41009 7.0216 7.20998 7.26565 7.17832L7.3335 7.17395H8.62462Z',
+ fill: '#43D92B',
+ },
+ null,
+ -1
+ ),
+ la = [aa],
+ sa = { key: 1 },
+ na = /* @__PURE__ */ C(
+ 'path',
+ {
+ d: 'M8.62462 5.57971C8.90076 5.57971 9.12462 5.79384 9.12462 6.05797C9.12462 6.3001 8.93651 6.5002 8.69246 6.53187L8.62462 6.53623H7.3335C7.05735 6.53623 6.8335 6.32211 6.8335 6.05797C6.8335 5.81585 7.0216 5.61575 7.26565 5.58408L7.3335 5.57971H8.62462Z',
+ fill: '#43D92B',
+ },
+ null,
+ -1
+ ),
+ ia = [na],
+ oa = { key: 2 },
+ ra = /* @__PURE__ */ C(
+ 'path',
+ {
+ d: 'M8.62462 3.98547C8.90076 3.98547 9.12462 4.1996 9.12462 4.46373C9.12462 4.70586 8.93651 4.90596 8.69246 4.93763L8.62462 4.942H7.3335C7.05735 4.942 6.8335 4.72787 6.8335 4.46373C6.8335 4.22161 7.0216 4.02151 7.26565 3.98984L7.3335 3.98547H8.62462Z',
+ fill: '#43D92B',
+ },
+ null,
+ -1
+ ),
+ ca = [ra],
+ ua = /* @__PURE__ */ C(
+ 'path',
+ {
+ 'fill-rule': 'evenodd',
+ 'clip-rule': 'evenodd',
+ d: 'M11.3301 3.45938C11.2517 1.89175 9.77808 0.658081 8 0.658081C6.17253 0.658081 4.66667 1.96123 4.66667 3.59077V7.72539L4.66994 7.85678C4.7483 9.42442 6.22192 10.6581 8 10.6581C9.82747 10.6581 11.3333 9.35493 11.3333 7.72539V3.59077L11.3301 3.45938ZM6.0035 3.54179C6.06337 2.69234 6.92083 1.99146 8.00016 1.99146C9.11947 1.99146 10.0002 2.74521 10.0002 3.63675V7.67949L9.99682 7.77446C9.93695 8.62391 9.07949 9.32479 8.00016 9.32479C6.88086 9.32479 6.00016 8.57103 6.00016 7.67949V3.63675L6.0035 3.54179ZM8.33333 15.3333C8.51743 15.3333 8.66667 15.1841 8.66667 15V13.2964C11.5402 12.9793 14 10.6655 14 8.27322V7.68092C14 7.49682 13.8508 7.34758 13.6667 7.34758H13C12.8159 7.34758 12.6667 7.49682 12.6667 7.68092V8.27322L12.6634 8.39309C12.5681 10.1524 10.3982 11.9979 8.00396 12C8.00264 12 8.00132 12 8 12C7.99868 12 7.99736 12 7.99604 12C5.54737 11.9979 3.33333 10.0675 3.33333 8.27322L3.33043 7.65652C3.32956 7.47164 3.17839 7.32278 2.99352 7.32477L2.32975 7.33191C2.14706 7.33387 2 7.48252 2 7.66522V8.27322L2.00292 8.4162C2.09825 10.757 4.51708 12.9856 7.33333 13.2964V15C7.33333 15.1841 7.48257 15.3333 7.66667 15.3333H8.33333Z',
+ fill: '#fff',
+ },
+ null,
+ -1
+ ),
+ SA = /* @__PURE__ */ V({
+ __name: 'MicVolume',
+ props: {
+ volume: {},
+ },
+ setup(s) {
+ return (A, e) => (
+ u(),
+ N('svg', ea, [
+ A.volume && A.volume > 0 ? (u(), N('g', ta, la)) : p('', !0),
+ A.volume && A.volume > 5 ? (u(), N('g', sa, ia)) : p('', !0),
+ A.volume && A.volume > 10 ? (u(), N('g', oa, ca)) : p('', !0),
+ ua,
+ ])
+ );
+ },
+ }),
+ Ia = {},
+ da = {
+ xmlns: 'http://www.w3.org/2000/svg',
+ fill: 'none',
+ viewBox: '0 0 16 16',
+ class: 'design-iconfont',
+ },
+ Ma = /* @__PURE__ */ C(
+ 'path',
+ {
+ 'fill-rule': 'evenodd',
+ 'clip-rule': 'evenodd',
+ d: 'M4.82825 12.4759C5.58172 12.9048 6.43742 13.1978 7.33333 13.2967V15.0002C7.33333 15.1843 7.48257 15.3335 7.66667 15.3335H8.33333C8.51743 15.3335 8.66667 15.1843 8.66667 15.0002V13.2967C11.5402 12.9796 14 10.6658 14 8.27347V7.68116C14 7.49707 13.8508 7.34783 13.6667 7.34783H13C12.8159 7.34783 12.6667 7.49707 12.6667 7.68116V8.27347L12.6634 8.39333C12.5681 10.1526 10.3982 11.9982 8.00396 12.0002L8 12.0002L7.99604 12.0002C7.22514 11.9996 6.47749 11.8078 5.81487 11.4893L4.82825 12.4759ZM6.83168 10.4725C7.196 10.5927 7.5899 10.6583 8 10.6583C9.82747 10.6583 11.3333 9.35517 11.3333 7.72563V5.97083L6.83168 10.4725ZM10.9068 2.1547L4.73629 8.32524C4.70043 8.17327 4.67793 8.01689 4.66994 7.85702L4.66667 7.72563V3.59102C4.66667 1.96148 6.17253 0.658325 8 0.658325C9.24072 0.658325 10.3332 1.25901 10.9068 2.1547ZM3.62455 9.43698L2.64622 10.4153C2.26208 9.78985 2.03108 9.10804 2.00292 8.41644L2 8.27347V7.66546C2 7.48277 2.14706 7.33411 2.32975 7.33215L2.99352 7.32502C3.17839 7.32303 3.32956 7.47188 3.33043 7.65676L3.33333 8.27347C3.33333 8.66191 3.4371 9.05672 3.62455 9.43698Z',
+ fill: '#fff',
+ },
+ null,
+ -1
+ ),
+ ga = /* @__PURE__ */ C(
+ 'rect',
+ {
+ x: '.609863',
+ y: '13.4514',
+ width: '19.0127',
+ height: '1.5',
+ rx: '.75',
+ transform: 'rotate(-45 .609863 13.4514)',
+ fill: '#FE3C44',
+ },
+ null,
+ -1
+ ),
+ Na = [Ma, ga];
+function La(s, A) {
+ return u(), N('svg', da, Na);
+}
+const vA = /* @__PURE__ */ Q(Ia, [['render', La]]),
+ Ca = {
+ key: 0,
+ class: 'singleInvite-header-mobile',
+ },
+ pa = {
+ key: 1,
+ class: 'singleInvite-header-desktop',
+ },
+ Da = { class: 'singleInvite-message' },
+ Ta = { class: 'singleInvite-nick' },
+ ya = { class: 'singleInvite-nick-span' },
+ Ea = {
+ key: 0,
+ class: 'microphone-icon-container',
+ },
+ Sa = {
+ key: 0,
+ class: 'singleInvite-tips',
+ },
+ pe = /* @__PURE__ */ V({
+ __name: 'InviteInfo',
+ setup(s) {
+ const { CALL_ROLE: A, CALL_MEDIA_TYPE: e, IS_GROUP: l, REMOTE_USER_INFO_LIST: n, CALL_STATUS: r, CALL_TIPS: c } = a,
+ I = g(i.getData(o.CALL, A)),
+ d = g(i.getData(o.CALL, e)),
+ M = g(i.getData(o.CALL, l)),
+ L = g(i.getData(o.CALL, n)),
+ T = g(i.getData(o.CALL, r)),
+ E = g(i.getData(o.CALL, c)),
+ D = !eA.isPC,
+ y = I.value === J.CALLER,
+ j = (v) => {
+ I.value = v;
+ },
+ m = (v) => {
+ M.value = v;
+ },
+ S = (v) => {
+ d.value = v;
+ },
+ k = (v) => {
+ L.value = v;
+ },
+ U = (v) => {
+ T.value = v;
+ },
+ q = (v) => {
+ E.value = v;
+ };
+ return (
+ K(() => {
+ i.watch(
+ o.CALL,
+ {
+ [A]: j,
+ [l]: m,
+ [e]: S,
+ [n]: k,
+ [r]: U,
+ [c]: q,
+ },
+ {
+ notifyRangeWhenWatch: a.MYSELF,
+ }
+ );
+ }),
+ H(() => {
+ i.unwatch(o.CALL, {
+ [r]: U,
+ [e]: S,
+ [A]: j,
+ [l]: m,
+ [n]: k,
+ [c]: q,
+ });
+ }),
+ (v, O) => (
+ u(),
+ N('div', null, [
+ !t(M) && D
+ ? (u(),
+ N('div', Ca, [
+ t(d) === t(z).AUDIO && t(L).length !== 0
+ ? (u(),
+ h(
+ Yt,
+ {
+ key: 0,
+ class: 'singleAudio',
+ 'remote-users-list': t(L),
+ 'is-sponsor': y,
+ 'call-alert-message': t(E),
+ 'call-status': t(T),
+ },
+ null,
+ 8,
+ ['remote-users-list', 'call-alert-message', 'call-status']
+ ))
+ : p('', !0),
+ t(d) === t(z).VIDEO && t(L).length !== 0
+ ? (u(),
+ h(
+ Aa,
+ {
+ key: 1,
+ class: 'singleVideo',
+ 'remote-users-list': t(L),
+ 'is-sponsor': y,
+ 'call-alert-message': t(E),
+ },
+ null,
+ 8,
+ ['remote-users-list', 'call-alert-message']
+ ))
+ : p('', !0),
+ ]))
+ : p('', !0),
+ !t(M) && !D && t(L).length !== 0
+ ? (u(),
+ N('div', pa, [
+ C('div', Da, [
+ C('div', Ta, [
+ C('div', ya, b(t(L)[0].displayUserInfo), 1),
+ t(d) === t(z).AUDIO && t(T) === 'connected'
+ ? (u(),
+ N('div', Ea, [
+ t(L)[0].isAudioAvailable
+ ? (u(),
+ h(
+ SA,
+ {
+ key: 0,
+ volume: t(L)[0].volume,
+ },
+ null,
+ 8,
+ ['volume']
+ ))
+ : (u(), h(vA, { key: 1 })),
+ ]))
+ : p('', !0),
+ ]),
+ t(T) !== t(B).CONNECTED ? (u(), N('span', Sa, b(t(E)), 1)) : p('', !0),
+ ]),
+ ]))
+ : p('', !0),
+ ])
+ )
+ );
+ },
+ });
+const Ye =
+ 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAAw1BMVEUAAAD7WV77WF/7WF77WF/6WV/7WV76WF77WV/7WmD6WWD/XmP/Zmb/gID/gID/XmH6WV/7WF77WF77WF77WV76WF/6WV/7WV/7WV/8WV77WF/7WV/8WWD8WF/8W177Wl/7XGD6WGL/XWf/YGD6WF76WF7////++Pj+8vP9z9H7f4T6Ymj7lJj7jZH7iIz6aW/+/Pz8srT8rrD8mp78ubv6b3T6XGL92tv91db9x8n9vsD8qKv+6+v+5eb+3+H8oqX7dXpC6t/gAAAAJXRSTlMA7cO6idPGqYVCNxwMBgQf2vv58+nfzK+slXx0XktJPj00FRDZDO0oagAAA7VJREFUeNrE1wl2okAUBdDPjBic5zGJeUhEjUYTZ5P9r6pP253uIyoUCFV3Acrnv8OrolgGVsc0FF2rSqWSVNV0xTA71oC4eOipcgVXVWS190BpsjOmXkSgom5mbEqH1ZTARGpalLh86wURvLTylKSnOiKrP1FSHhXEojxSEjIyYpMzdK9sA3dpZOkeuXYZdyq3cxRbX0MCtH7c8VUkRM3F2r6MxMgxktCVkCCpSxGpSJhKUdgGEmfYESpXQQoU5qp+riEVtWfG4isgJYU80/wFpKbwzLD/GlJUC82BrSBVik3BDKTMiPf94fVF6oKDbkD/SOBAutlMORlcyDmuAWCPQR/c9K8uQAM32rUltMFRmy5ky+ConCW/BrhqkE8GnGXonAzOZDrzCO7Ob64KuFPO7v8Q4In+q0OAOv2ThxB5+tGCEC36UYAQL/SXBUEs+qMJQZp0YksQRLLF1IC/EEwIY9JvOoTRT5fBIoQpPhBRDwL1TodxgVQRRxH/saSCGLzvydfydXXcu7Ph0HX3q9ftfDHyEFWFaICIvOlus3euc9fzqYcoBhGLYPS+mjnBZsflCMws6oDV53QzdNi42+knmHTIZJ196zpRuPMPMDDJYBp+cbx404fN/Gsxno6mk8l4t309XK5mPUEog+U8/DZ3fdNtFh9Xwvm+9q/oMEYIJbwJvPn5z7oBGfMW61m0R9BJQyDv/fzvV+OQdL35l3UcIYBGVQQZ+5PnIczG8du+4aYqSbjte+34DBFq6VwYTnCLRCXctLsM9gGhds4VY9xQ+sWcneQwCMNQAEWqEFWXVZfsip2GeaYDEtz/VF11ZzdEVfV5B0DBjpLYDs4+v8KWnDoWmFVbgJ6CnAVPcipYYrUUqJswMyx4kVPKokHbhKFPJDknp4FFHYlC9SCyLEnJKWNRqx1EB5LNSiDdDHsk7xBEPp8xI7n1LFlIFKnXcS3csLakLaqitbeNyTsG8aYI1FOfD6Ryr2IiWaw+yRr+mB9LKoTeaxW2ItlJf5S2htncm6KiH1VlqX/j+uVZPq4D/dtlD4UJvDSDF6fw8hzeoMC3aOBNKnibDt6oxLdqg4Qgkv206+EDC/jIBj+0go/t8INL+OgWP7yGj+/f3dtBCQAgAMDACpawf0VBE/iQGy7Hzg8MfOHwEwvfePzI5FcuPrP5nc8PjX7p9FMr33r92OzXbj+3+73fAwdPPALIxTMfD5089QpgN8/9AuAxQD4D6PWw3zEvGpv9fgWfC/Q7gN9f8P8FGlRGjHL2An8AAAAASUVORK5CYII=',
+ Ke =
+ 'data:image/svg+xml;base64,IDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgNDAgNDAiIGNsYXNzPSJkZXNpZ24taWNvbmZvbnQiPgogICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDIwQzAgOC45NTQzMSA4Ljk1NDMxIDAgMjAgMEMzMS4wNDU3IDAgNDAgOC45NTQzMSA0MCAyMEM0MCAzMS4wNDU3IDMxLjA0NTcgNDAgMjAgNDBDOC45NTQzMSA0MCAwIDMxLjA0NTcgMCAyMFoiIGZpbGw9IiNGRTNDNDQiIC8+CiAgICA8cGF0aCBkPSJNMjUuNDQzNyAyMC40NDlDMjUuNDQzNyAyMi4xMTQyIDI1LjIzMzYgMjMuMzUxNSAyOC41MDg5IDIzLjcxMjZDMzEuNzg3NSAyNC4wNzM3IDMxLjM2NjYgMjEuNjc5NCAzMS4zNjYyIDIwLjA2NjlDMzEuMzY0OSAxOC4yMDYxIDI3LjA2MDIgMTUuNjE5IDIwLjI3MjYgMTUuNjE3M0MxMy40ODY2IDE1LjYxNzMgOS4xNzg5IDE4LjIwNSA5LjE3ODg4IDIwLjA2N0M5LjE3ODg3IDIxLjY4IDguNzU2MjEgMjQuMDcyNiAxMi4wMzMyIDIzLjcxMjNDMTUuMzEwMSAyMy4zNTM3IDE1LjEgMjIuMTE1NSAxNS4wOTg0IDIwLjQ0OTVDMTUuMTAxMyAxOS4yODYyIDE3Ljc1ODcgMTkuMDMxNiAyMC4yNzI1IDE5LjAyOThDMjIuNzg2MyAxOS4wMjgxIDI1LjQ0NTQgMTkuMjg0NCAyNS40NDM3IDIwLjQ0OVoiIGZpbGw9IiNmZmYiIC8+CiAgPC9zdmc+',
+ va =
+ 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjg5NTk1MTk0MDUzIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjIzNDQiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTUxMiAxNzAuNjY2NjY3djg1LjMzMzMzM2EyNTYgMjU2IDAgMSAxLTIyMy41NzMzMzMgMTMxLjJMMjEzLjkzMDY2NyAzNDUuNkEzNDEuMzMzMzMzIDM0MS4zMzMzMzMgMCAxIDAgNTEyIDE3MC42NjY2Njd6IiBmaWxsPSIjMDAwMDAwIiBvcGFjaXR5PSIuMyIgcC1pZD0iMjM0NSI+PC9wYXRoPjwvc3ZnPg==',
+ Ze =
+ 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAMAAAC5zwKfAAAAsVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+3mHKcAAAAOnRSTlMAChshaFgmE25ORA9eSRa/sTLNloBjBlM/07qFKok2m3c786wukeTf3Kh07PCNe8fDtZ/o16Kl9/nJwyGDfwAABBtJREFUWMOs0cuKBSEMRVEfkEJFwUnKgQiC//+NHbvUWz1rbrKdLw5G/SNUUqGeIUppgZqiCKgvijwhUKeUCNwL+ZwxWxT4RCTuAwb2Qm2sXeIBOeJlqc9ENmhgg2aBgQOiBYA/E3ln1rYu0C6QdxUE8mZHvKjw/ZFh1Ed8TQyMe0CuswnCErViZPKghe+NQXG6MoGHJC8pVnq8QRKD4gU950NCtZrpXa3l3x7RItPD3NtDjhkobqaQt8lckQ3m3vshhxYY2GcP2JJil33pm+zA964y68vUfBB8OWQxfA+L95ssDflgIu+QVvGr0e9KRwGwRR+3OQS84CP1kDEJgMnFU9ECoD2gd00JNFx01BRdlQD77U5WAvTuUxIBaeG9XpAA3X1yWgK8XyB+aehXP53YbZdyQBjA8SFKYpWHNmRZ5aEQ6dn3/2D3NQy6262Nf6/qnH7nmplOEoBs8+gJTg5u7JIi9Mk2ffZcMn0pmiI0Ztt6HsrSvdYVIRJrTWBZuh/IX6DSuxQy4gWMVQ37gczVvZCKPfoSgKvSvvqBSYHPBKNu4aGhJtQxYj9wD2BVXDCIBlDDD6jfqQzDSxzHBBTRiAWMxAz6gONrFOPAu4RLhESm5jSO7wPmlwOIuKgw4Pk3U3E4jeru0UFUhUELf2UzgJG4Hue8dQ9RTbpjfKEXGo7hhM4jftwi/wCV4LE81QVXcxy37TwiF/sAluThmlSbgDXSlhl18wZHHyJkvEBlLNeKzrgbqESBT0jflciGrbnK2+J2sy6e4IdBQEg/1lDVXGg9x9nS73szPQCQkFFKNa87NQftuLe3kZaCYxgSMoAB6yhhyzXeTmUm73kf00AHkIgH6e5tQ6fiwIPM946anob68QhiRfoiumu8A7DyVFW13tnHtRHKei0GYaSg+0Yc4cDDovr9l8emR/BALMljIA8eLjS71jNN00qEl8umLV2GWtEfo4d41Wk9ED2Tf3o2I0HSb7c7UT/s0GNzVgWvHhBKFFWc/M6t5DRLQdQBxKLunyj0I0ozd/V8wEGKnWizj8fbOHWfplKWYrCeMZj+uj8TziTzlaAHKfkpcVh+SY8oakSvRcbaZJkkSVmGRbmaUQ4M+skHFcRqvgpUcPl5cz5B581qupckY28YpZg2M4bGED1pwlgqWXAN2rad56BtVqspDrwSrMTSW9HoaZSWlAOWntd4FbjC3v8gzBjaI/SiuWiRHXwOtuItlfUthV63Vj0C3q24Be9HzFJd4tGfjQTPs5LW+x3EoiybNHqntaMo9ytuwHbNUCpvFujNqIWq2C9AENPbhqU63ZU7dg7cTxACLrM7/36eL9nEPp3z5pSJaEiZtOL6/TVBzVjHA6sMczCbcbaYb9B6R894wbE8+7zJFU9lxl8D9Lp/VcLH/2j8UuYAAAAASUVORK5CYII=',
+ ha = { class: 'btn-container' },
+ ja = ['src'],
+ fa = ['src'],
+ Ua = /* @__PURE__ */ V({
+ __name: 'IconBtn',
+ props: {
+ text: {
+ type: String,
+ default: '',
+ },
+ icon: {
+ type: String,
+ },
+ size: {
+ type: Number,
+ },
+ loadingIcon: {
+ type: String,
+ default: Ze,
+ },
+ loading: {
+ type: Boolean,
+ default: !1,
+ },
+ isMobile: {
+ type: Boolean,
+ default: !1,
+ },
+ },
+ emits: ['click'],
+ setup(s, { emit: A }) {
+ const e = s,
+ l = _(() => `btn-body ${e.isMobile ? 'mobile' : 'desktop'}`),
+ n = _(() => `btn-text ${e.isMobile ? 'mobile' : 'desktop'}`),
+ r = A,
+ c = () => {
+ !e.loading && r('click');
+ },
+ I = _(() => {
+ const d = e.size ? e.size : e.isMobile ? 50 : 40,
+ M = e.size ? e.size : e.isMobile ? 50 : 40;
+ return { width: `${d}px`, height: `${M}px` };
+ });
+ return (d, M) => (
+ u(),
+ N('div', ha, [
+ C(
+ 'div',
+ {
+ class: R(t(l)),
+ onClick: c,
+ style: bA({ width: t(I).width, height: t(I).height }),
+ },
+ [
+ s.loading
+ ? (u(),
+ N(
+ 'img',
+ {
+ key: 0,
+ class: 'invite-calling-item-loading',
+ src: s.loadingIcon,
+ },
+ null,
+ 8,
+ ja
+ ))
+ : p('', !0),
+ s.icon && !s.loading
+ ? (u(),
+ N(
+ 'img',
+ {
+ key: 1,
+ src: s.icon,
+ },
+ null,
+ 8,
+ fa
+ ))
+ : p('', !0),
+ dA(d.$slots, 'default', {}, void 0, !0),
+ ],
+ 6
+ ),
+ C(
+ 'div',
+ {
+ class: R(t(n)),
+ },
+ b(s.text),
+ 3
+ ),
+ ])
+ );
+ },
+ });
+const MA = /* @__PURE__ */ Q(Ua, [['__scopeId', 'data-v-08b206cb']]),
+ za = /* @__PURE__ */ V({
+ __name: 'Hangup',
+ props: {
+ isMobile: {
+ type: Boolean,
+ required: !0,
+ },
+ isClickable: {
+ type: Boolean,
+ required: !0,
+ },
+ isGroupCall: {
+ type: Boolean,
+ required: !0,
+ },
+ callType: {
+ type: Number,
+ required: !0,
+ },
+ },
+ setup(s) {
+ const A = s,
+ e = A.isMobile ? Ye : Ke,
+ l = A.isMobile && !A.isGroupCall && A.callType === z.VIDEO,
+ n = !A.isMobile || l ? Ze : va,
+ r = async () => {
+ await w.hangup();
+ };
+ return (c, I) => (
+ u(),
+ h(
+ MA,
+ {
+ loadingIcon: t(n),
+ loading: !s.isClickable,
+ icon: t(e),
+ text: t(X)('hangup'),
+ isMobile: s.isMobile,
+ onClick: r,
+ },
+ null,
+ 8,
+ ['loadingIcon', 'loading', 'icon', 'text', 'isMobile']
+ )
+ );
+ },
+ });
+const LA = /* @__PURE__ */ Q(za, [['__scopeId', 'data-v-5467a3cd']]),
+ ma =
+ 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAe1BMVEX///8AAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9z+u+qAAAAKHRSTlMzAC8EKxkTKB0L70n76823e0Mhu1TAhDs29NWOd15NPyTdwqOdgGnjem2xqgAAAitJREFUWMOll+lyqzAMhU+8AA4UCNnbJmnT5fL+T3jHxHSMkQrU50cmzvKNjixkCytGMtFNqgQgVNroRHK/owEmUwikMjMXILUCKaXlDIDUAqyEllOAxP2dRSS/AmSKSaWSBxiBGRKGAySYqYQGZJitjAK8YYHexoAMi5SFgAQLlQwBBotlfIAUWCwhPUCKPyh1gEEClqcBjIHXNtArZcIBNEbarEPAeoORtAXQAWzbkbZkCBagOQPTJnQHUJyBaRPKAgxvYNqEWSF4CPLqqf1FT1UePBIYOsgHwZNG8qEHSPiqWl/F4XLML/W+8D+s4EtiWIVB/AcX1913MaxGaPjyfvhu473hoRfvC/jSaBjAZ7eXH+gJDKBBSgP2wMFm4Xwu6xMA7GlACkUDdgBK9/55A+BakAAFQQJKu9gVPcHGsCUBAiABNaw+++UXgNoD8PIdAKd3L6ArDWAsHNHpuy8/ADfaApPEG4C+qr/R6UgnkdnGq7cJ/x7h7JhtbNgkfv3UFMAmsWFKeWtT+OwWRZfSkinlhAQU1sOmJ5TOAQFIINlSBk51eT4Xjzq40wCJlSIB7QucPrp2aF8JgApbWjsm3Nbu2e4VtjTDANq7a14Hu2AAJmzrw462ry/58XIoWIAaHSxcS2Zamh4dbdU0oBodbSv917auB8f78oNFyNgLRuwVJ/qSFXvNi71oxl51oy/b8df9+IEjfuSJH7rix774wTN+9I0fvqPH//+TfI0R8kWyJgAAAABJRU5ErkJggg==',
+ Oa = /* @__PURE__ */ V({
+ __name: 'SwitchCamera',
+ setup(s) {
+ function A() {
+ w.switchCamera();
+ }
+ return (e, l) => (
+ u(),
+ h(
+ MA,
+ {
+ icon: t(ma),
+ size: 32,
+ text: ' ',
+ isMobile: !0,
+ onClick: A,
+ },
+ null,
+ 8,
+ ['icon']
+ )
+ );
+ },
+ });
+const De = /* @__PURE__ */ Q(Oa, [['__scopeId', 'data-v-ac984e67']]),
+ wa =
+ 'data:image/png;base64,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',
+ ba =
+ 'data:image/svg+xml;base64,ICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbD0ibm9uZSIgdmlld0JveD0iMCAwIDQwIDQwIiBjbGFzcz0iZGVzaWduLWljb25mb250Ij4KICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMCAyMEMwIDguOTU0MzEgOC45NTQzMSAwIDIwIDBWMEMzMS4wNDU3IDAgNDAgOC45NTQzMSA0MCAyMFYyMEM0MCAzMS4wNDU3IDMxLjA0NTcgNDAgMjAgNDBWNDBDOC45NTQzMSA0MCAwIDMxLjA0NTcgMCAyMFYyMFoiIGZpbGw9IiMxOUQyNTUiIC8+CiAgICA8cGF0aCBkPSJNMjMuNTM5NyAxNi45NTM1QzI0LjcxNzIgMTguMTMxIDI1LjQ0MzYgMTkuMTU0NCAyOC4wMTQ5IDE3LjA5MzhDMzAuNTg4NSAxNS4wMzA4IDI4LjU5NzkgMTMuNjM1NCAyNy40NTczIDEyLjQ5NTVDMjYuMTQwNyAxMS4xODA2IDIxLjI2NzQgMTIuMzk1MSAxNi40NjY3IDE3LjE5MzVDMTEuNjY4MyAyMS45OTE5IDEwLjQ1MjEgMjYuODY3NyAxMS43Njg3IDI4LjE4NDRDMTIuOTA5MiAyOS4zMjQ5IDE0LjMwMjIgMzEuMzE1NiAxNi4zNjQ2IDI4Ljc0MzdDMTguNDI4MiAyNi4xNzMgMTcuNDA0MSAyNS40NDYgMTYuMjI0OCAyNC4yNjkxQzE1LjQwNDMgMjMuNDQ0NCAxNy4xMDM0IDIxLjM4NTMgMTguODc5NyAxOS42MDY2QzIwLjY1NiAxNy44Mjc4IDIyLjcxNzQgMTYuMTI4OCAyMy41Mzk3IDE2Ljk1MzVaIiBmaWxsPSJ3aGl0ZSIgLz4KICA8L3N2Zz4=',
+ Va =
+ 'data:image/svg+xml;base64,IDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgNDAgNDAiIGNsYXNzPSJkZXNpZ24taWNvbmZvbnQiPgogICAgICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIgogICAgICAgICAgICBkPSJNMCAyMEMwIDguOTU0MzEgOC45NTQzMSAwIDIwIDBDMzEuMDQ1NyAwIDQwIDguOTU0MzEgNDAgMjBDNDAgMzEuMDQ1NyAzMS4wNDU3IDQwIDIwIDQwQzguOTU0MzEgNDAgMCAzMS4wNDU3IDAgMjBaIgogICAgICAgICAgICBmaWxsPSIjMTlEMjU1IiAvPgogICAgICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIgogICAgICAgICAgICBkPSJNMjQuMDQyMSAxNC44MTI5QzIzLjg4MTQgMTQuMDc5MiAyMy4zNjg0IDEzLjUyMzEgMjIuNzI5MSAxMy4zOTAyQzIxLjY2NzQgMTMuMjEyNiAyMC4zNDk1IDEzIDE3LjY2NjcgMTNDMTQuNzMxOSAxMyAxMy41MDExIDEzLjIwMDkgMTIuNTI2MyAxMy4zNjY5QzExLjkyMzUgMTMuNTI5NSAxMS40NDg0IDE0LjA2ODggMTEuMjkyNiAxNC43Njc1QzExLjE1MyAxNS42NDE5IDExIDE3LjgyOTggMTEgMTkuNjY2N0MxMSAyMS40NzI0IDExLjE0ODEgMjMuNjQ2MSAxMS4yOTEyIDI0LjUyMDVDMTEuNDUxOSAyNS4yNTQyIDExLjk2NDkgMjUuODEwMyAxMi42MDQyIDI1Ljk0MzFDMTMuNjY2IDI2LjEyMDcgMTQuOTgzOSAyNi4zMzMzIDE3LjY2NjcgMjYuMzMzM0MyMC4zNDk1IDI2LjMzMzMgMjEuNjY3NCAyNi4xMjA3IDIyLjczMDUgMjUuOTUyMkMyMy4zNzI2IDI1LjgxOTQgMjMuODg5MSAyNS4yNiAyNC4wNTEyIDI0LjUyMzFDMjQuMTg1MyAyMy42NDYxIDI0LjMzMzMgMjEuNDcyNCAyNC4zMzMzIDE5LjY2NjdDMjQuMzMzMyAxNy44NjA5IDI0LjE4NTMgMTUuNjg3MiAyNC4wNDIxIDE0LjgxMjlaTTEyLjY2NjcgMTUuNUMxMi42NjY3IDE1LjAzOTggMTMuMDM5OCAxNC42NjY3IDEzLjUgMTQuNjY2N0gxNC4zMzMzQzE0Ljc5MzYgMTQuNjY2NyAxNS4xNjY3IDE1LjAzOTggMTUuMTY2NyAxNS41QzE1LjE2NjcgMTUuOTYwMiAxNC43OTM2IDE2LjMzMzMgMTQuMzMzMyAxNi4zMzMzSDEzLjVDMTMuMDM5OCAxNi4zMzMzIDEyLjY2NjcgMTUuOTYwMiAxMi42NjY3IDE1LjVaTTI4LjUgMTQuNjY2N0MyNy4wOTQyIDE0LjY2NjcgMjYgMTYuNTQ3IDI2IDE3LjY0MjlWMjEuNjkwNUMyNiAyMi45ODA0IDI2LjgwMDggMjQuNjY2NyAyOC41IDI0LjY2NjdDMjkuMjg1OCAyNC42NjY3IDI5LjMzMzMgMjEuNDUyNCAyOS4zMzMzIDE5LjY2NjdDMjkuMzMzMyAxNy44ODEgMjkuMzMzMyAxNC42NjY3IDI4LjUgMTQuNjY2N1oiCiAgICAgICAgICAgIGZpbGw9IiNmZmYiIC8+CiAgICA8L3N2Zz4=',
+ KA = /* @__PURE__ */ V({
+ __name: 'Accept',
+ props: {
+ isMobile: {
+ type: Boolean,
+ required: !0,
+ },
+ callType: {
+ type: Number,
+ required: !0,
+ },
+ },
+ setup(s) {
+ const A = s,
+ e = A.isMobile ? wa : A.callType === z.AUDIO ? ba : Va,
+ l = async () => {
+ await w.accept();
+ };
+ return (n, r) => (
+ u(),
+ h(
+ MA,
+ {
+ icon: t(e),
+ text: t(X)('accept'),
+ isMobile: s.isMobile,
+ onClick: l,
+ },
+ null,
+ 8,
+ ['icon', 'text', 'isMobile']
+ )
+ );
+ },
+ }),
+ ZA = /* @__PURE__ */ V({
+ __name: 'Reject',
+ props: {
+ isMobile: {
+ type: Boolean,
+ required: !0,
+ },
+ },
+ setup(s) {
+ const e = s.isMobile ? Ye : Ke,
+ l = async () => {
+ await w.reject();
+ };
+ return (n, r) => (
+ u(),
+ h(
+ MA,
+ {
+ icon: t(e),
+ text: t(X)('reject'),
+ isMobile: s.isMobile,
+ onClick: l,
+ },
+ null,
+ 8,
+ ['icon', 'text', 'isMobile']
+ )
+ );
+ },
+ }),
+ Pa =
+ 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADgAAAAkCAMAAADrTAnMAAAAn1BMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8Kd3m4AAAANHRSTlMA+LcMRx7t6ODcoIBxYUAInFv18cuOhn4yGBLRzb2ka1MnIw/61sWKeU06NyytpZWSVzYEGKQRgAAAAaZJREFUSMedVet6gjAMBVEElaGAeJvi/e6mW97/2Za0ED5gRe35w6H9Tgk5SWq8hd+WoYW1A3tLR3gAgJuOsAeIrobQj0i51FBO2igMJ4rdczRvqpQXE5V3xaaLe6PyYpbMBDdNhSlAaEwLPriwSJ2kYzs1QnDGRo4+LgwlfSDdtmqEYHpFA2Eg+QxpohYS+n62NKUA2xab2fgv42NgfHJI1wBfj4KukAV+MXPLjgMF2OzLiD6ZZ/1k5Gj1TaiAfbFsfPkR9I6sx7LNsCor+LLgMu1xiinwHajgyB/1kH4JNhBM4hSqZGz3B7J5iRnNLTwVjinLJXYN63TOWh7O9jGzXGCok5Pwt72Mdet03O8NNuGILKZSCdSyvABa5JYMupMe8Q0SwTz2Th+Icslxf+wkbSM9iydhP7BURU5Y5u1xoUhSV2DXrG+rFf3OTPIYQHT1kArIf6GRTVmpPkX4ENnaek9HRywC5ZyGG2robIURVafuZjFLUmZnu3a3Oh4j1XiUHtgWsb3xDjzgOli9quF57PqaN8DVeBux7p0zEkNIA9bNOWT8DweSes56/3r9AAAAAElFTkSuQmCC',
+ Ba =
+ 'data:image/svg+xml;base64,ICAgIDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgNDAgNDAiIGNsYXNzPSJkZXNpZ24taWNvbmZvbnQiPgogICAgICAgIDxyZWN0IHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgcng9IjIwIiBmaWxsPSIjREFEQURBIiBmaWxsLW9wYWNpdHk9Ii4zIiAvPgogICAgICAgIDxwYXRoIGQ9Ik0xNy43MzExIDE1Ljc0ODVDMTcuNzMxMSAxNS40MzM5IDE4LjEzMzMgMTUuMjg5IDE4LjM1OTYgMTUuNTA3TDIyLjk4MDggMTkuNjgzMUMyMy4xMzE0IDE5LjgyOCAyMy4xMzE0IDIwLjA0NTMgMjIuOTgwOCAyMC4xNjZMMTguMzM0MSAyNC4zNDM1QzE4LjEwODYgMjQuNTYwOCAxNy43MDYzIDI0LjM5MTcgMTcuNzA2MyAyNC4xMDJWMjIuMzM5NkMxNy43MDYzIDIyLjE0NjQgMTcuNTMwMyAyMi4wMDE2IDE3LjMyOTYgMjIuMDAxNkMxNC4yMTQ3IDIyLjA3NCAxMi40MzE5IDIyLjg3MDcgMTAuNjQ5IDI0LjUzNjZDMTAuMzcyNiAyNC43NzggOS44OTUzOCAyNC41MzY2IDEwLjAyMDUgMjQuMTk4NkMxMS4xMDA3IDIxLjE1NjUgMTIuOTM0NSAxOC40MDQyIDE3LjczMTEgMTcuODAwNlYxNS43NDg1WiIgZmlsbD0iI2ZmZiIgLz4KICAgICAgICA8cGF0aCBkPSJNMjQuNzYwMyAxNy4wNDExQzI2LjQxMDMgMTguNjkxMSAyNi40MzI4IDIxLjM0MzggMjQuODEwNiAyMi45NjYxQzI0LjU3ODggMjMuMTk3OCAyNC4xOTk5IDIzLjE5NDYgMjMuOTY0MiAyMi45NTg5QzIzLjcyODQgMjIuNzIzMiAyMy43MjUyIDIyLjM0NDIgMjMuOTU3IDIyLjExMjRDMjUuMTE1NyAyMC45NTM3IDI1LjA5OTYgMTkuMDU4OSAyMy45MjExIDE3Ljg4MDNDMjMuNjg1MyAxNy42NDQ2IDIzLjY4MjEgMTcuMjY1NiAyMy45MTM5IDE3LjAzMzlDMjQuMTQ1NiAxNi44MDIxIDI0LjUyNDYgMTYuODA1MyAyNC43NjAzIDE3LjA0MTFaIiBmaWxsPSIjZmZmIiAvPgogICAgICAgIDxwYXRoIGQ9Ik0yNi44NzY1IDE0LjkyNUMyOS43MDUxIDE3Ljc1MzYgMjkuNzQzNyAyMi4zMDExIDI2Ljk2MjcgMjUuMDgyMUMyNi43MzEgMjUuMzEzOCAyNi4zNTIgMjUuMzEwNiAyNi4xMTYzIDI1LjA3NDlDMjUuODgwNiAyNC44MzkyIDI1Ljg3NzMgMjQuNDYwMiAyNi4xMDkxIDI0LjIyODVDMjguNDI2NiAyMS45MTEgMjguMzk0NCAxOC4xMjE0IDI2LjAzNzMgMTUuNzY0MkMyNS44MDE2IDE1LjUyODUgMjUuNzk4MyAxNS4xNDk1IDI2LjAzMDEgMTQuOTE3OEMyNi4yNjE4IDE0LjY4NiAyNi42NDA4IDE0LjY4OTMgMjYuODc2NSAxNC45MjVaIiBmaWxsPSIjZmZmIiAvPgogICAgPC9zdmc+',
+ qa = { class: 'call-operate' },
+ Ra = ['src'],
+ xa = /* @__PURE__ */ V({
+ __name: 'SwitchAudioCall',
+ props: {
+ isMobile: {
+ type: Boolean,
+ required: !0,
+ },
+ },
+ setup(s) {
+ const A = s,
+ e = A.isMobile ? Pa : Ba,
+ l = A.isMobile ? 'btn-operate-mobile' : 'btn-operate-desktop',
+ n = A.isMobile ? 28 : 40,
+ r = async () => {
+ await w.switchCallMediaType();
+ };
+ return (c, I) => (
+ u(),
+ h(
+ MA,
+ {
+ class: R(t(l)),
+ style: { width: '40px' },
+ size: t(n),
+ text: t(X)('video-to-audio'),
+ isMobile: s.isMobile,
+ onClick: r,
+ },
+ {
+ default: DA(() => [
+ C('div', qa, [
+ C(
+ 'img',
+ {
+ class: 'operate-img',
+ src: t(e),
+ },
+ null,
+ 8,
+ Ra
+ ),
+ ]),
+ ]),
+ _: 1,
+ },
+ 8,
+ ['class', 'size', 'text', 'isMobile']
+ )
+ );
+ },
+ });
+const $A = /* @__PURE__ */ Q(xa, [['__scopeId', 'data-v-76389d5e']]),
+ Te =
+ 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGgAAABoCAMAAAAqwkWTAAAAqFBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8lQWY7VXb29/mlscAnQ2jn6u69xdFjd5ExS25GXn0wSm7p7PDh5erM09vBydSgrb2SoLN7jKJxhJwqRmpLY4Hu8POVo7WVorRccY0F8cuqAAAAHnRSTlMA7R4Ex+jZ0q5OSRXJ4Yz59biyo453bGVXPi8qC41r8AF3AAADgUlEQVRo3rzW147CMBAF0DHpld7Za5bQVyD+/+tWSHmgGGecmJznSFcej2dCfMl8mg/cIBPdrsgCd5BP5wnZtpyEAgoinCzJFiceetDwhrFDzS1yD5W8fEHNRCmY0ojqmwUwEMyontiHIT8mc50QNYQd004b91BLb+wYHcdFba7BoSKBBkTELdsIDY1Y5Vv10Vh/RZWSFBakSWUb+LDC71TkZLAk0yYlPqzxE00fpLAoXX3s6z6s6jukNoJlI1KKYF2kbDgB60RHcUEuvsB9v6YxvmL8VrgevqL3WrwQXxLSkxhM283+eDod95stmGJ65IPlfCtkqbidweLTgxlYdgf54LADy+NfWACOayGfFFdwBKYzYVfIF8XOcD6kYDgf5JvDGQwplRbguEmFGzgWZdAPGLaFVCi2YMjLKeeBYSOVNmDwHIPHupdKe4NHOwTHUSodwTGkOw8cJ6l0Aod3z1mCRX4AliURTdoImvAXhPyAvyxEG0GCKEEbQUho3k7QnKbtBE3pp52gnAbtBA3IbSfIrdzil/X6og8qv9ELKIPeWsq1Pqj8Ri8jwRimv/qh+ssYroK6jPXwp18Tf4x10f2v1upaG4ShKIzBupcy2Mvo0OaKdg+mhqjV///P5oE9lFU9N2uWufPSYiDH3MTcr0OJxmkWu+747PQ7MiJqOg9/ve7KMeSZ6ehhaPDa68EJFtuww0CPNzaglbVwS1psIzve/IPtYKC1ABKW6+gHy68gN81jZDkkFjP9c/QK4pdqj5W45SDfYWU9v1S5mxiwS3YpbbHYoYG7Cer4vmxjyvlErDQYFO74NK68wsRdOZdalh3GKoUrVwUnF8xm7O2ANRi5KIITZbjlMV/r5JtNXYvnPufYKQNI8UfAFFdUUpgj4EUZQCIkVlkPaE+FrUVqW5ywGpXdgHd9kF+Z4wxMpQzy9WlLLsPHzQ00SK7Ca1jVpHfdNU3n+qDqCVJLNerGjyAZfVPnaiC1BPZ5EECUB2FP0v9oRAdS0IhF9EhKNNGInknRKRbREymjRSN6CysMnudvhjMvDAaWOsEzxxRS6gR2v0W0I+XoWKZ7eUhVYE/WMkjVBEnV1knVqErWekvVTPz79mjchu82WtjxmvLbkRnEEU5sSwpyt7hli3KdOwRI25VU/UQktn3ZG3DINEK+7PB/pIkxxZZ6+Wh2LR/NguSjn/9F6h0IFyvQAAAAAElFTkSuQmCC',
+ Qa =
+ 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGgAAABoCAMAAAAqwkWTAAAAkFBMVEUAAAD////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////HztfO1N3p7O/K0dnv8fT9/f7R197a3uT7/Pz3+Prk6OzM0tvz9ffV2+H5+vvd4ufg5OknoyjnAAAAHnRSTlMA7bCNHgTo0k5JLBXJx/nf2djGuKN3bGVXPgv14/RLhx5LAAAEBklEQVRo3rTWxxXEIBADUIIDXnDOSf2XuXdnYPgNzJPQAfadnkcpmrTkRcHLtBFynDWj9hsExwUuhh+jEmddggdJl8UUWWSCV4n0zaUMPjKKuZtSWEgn5iarYKnKmL1IwIGIbJfWr3Cy97FVnBzOcotQisMDV19rk/AkP9W3tPDWLuyVNiBg9OsMapCoo5c7G4hsj5d0DTK1ftiBASGz3O66Ban2buUSxCS7pEBOXQ6Ogxy/mF6cI4D8/Ew9guhPxa0IYj+WJxCIOPwP/pSW3Y6CMBCFa4yYVaPGGF1vDqVQ/sH3f7ulhNltYKUz31VDyJxMz/wUTLokt8bYPCnA5Ev5XJkyffxLz5S6Ko9vsEhN7FGn01etU6zgv8L24JDEMxIMlIO6xgp76UxI4zk6AzLrDsz5cGL5YxZCDYCcUvvMiXQO4NAvdBK6zh7rHCRTu1vo5AAal6bNeFN8F8krYQpf6OFgSgSIdoJmzWc6pqSPKbdp7+Bg/zGococ3wtyVIwIHr+YofOMOLRhE/JrDnwaFL2o3HjoQobp7SIUofEsGMXjQghAKpWRQJVgWG7lQRQOpBZONUkfwmBnUjQYV4HJUL7GQLsigBmxe6ikSovBvrkHEU22lQgkZlEPAlv0q8UdpaegG0bDL7iYTsrTrzChRaPC4Bbc4vQi8UdrTDbqa8P5Z3+cXrKOnRe3vOjLINa33zxoXtWEM0wxATaO0pF031oQBkLlUgx17DmcUd9OaaEEGlZia1jrpOJzR+adas+1pEAbieIZumhkTX2jUGEcpBQrj4ft/OwPhvDRmuX+hduxekSzhP9pr73cPolDLENJ0DCP0Uzk7eysJiUtX8s7kLowMvGnyodoJzsBvqXTNMMIQQfEik5xBdG87bokZX3xyYMRq+jYzPljJveUDq+j/MoyQT6S6mz+tEA+sfAXVM/u6MFKmpGka5H5N5Eu10tOLGEZ4gzJS15V4qQJhYpj2gmGEJHU+PWooYLwDgc+otDAOjFSKEjE40n4ioTzX1oWR8je17AoQhZ4gOLGXYOTcgJF2B+HWpSUytUYjbQID5F8YMVmTjtZDAAkhsQsjZ2uMzbOWIRywIwL5DCMkyaYwJD6AaQvDiJuP6cGcIHuFEjGCEZIkK2q8egKkli6M2KwvJpE+88DUwx5KlhlGGLxOXnaHpf+KYt1ioSNW0FAU65YKPXOJRkbINUKPHkWnNUIPQhktmNCHX2EwVymZ383w4lnqZB1XCTusbMl/CSVCOTrU0n3fxyqwR2sZxGqCxGrrxGpURWu9xWomXr89Grbhu40Wdrim/HbGDMIMTmxrFGT1cEuUcZ2vt/02B5CWjlRte0jMd+ztNgb50NHE2xq2DDM++gMth+mh+w6ysAAAAABJRU5ErkJggg==',
+ ye =
+ 'data:image/svg+xml;base64,ICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbD0ibm9uZSIgdmlld0JveD0iMCAwIDQwIDQwIiBjbGFzcz0iZGVzaWduLWljb25mb250Ij4KICAgICAgICA8cmVjdCB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHJ4PSIyMCIgZmlsbD0iI0RBREFEQSIgZmlsbC1vcGFjaXR5PSIuMyIgLz4KICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIKICAgICAgICAgICAgZD0iTTE2LjY2NjUgMTQuMTY2N0MxNi42NjY1IDEyLjMyODQgMTguMTYxNSAxMC44MzM0IDE5Ljk5OTggMTAuODMzNEMyMS44MzgyIDEwLjgzMzQgMjMuMzMzMiAxMi4zMjg0IDIzLjMzMzIgMTQuMTY2N1YxOS4xNjY3QzIzLjMzMzIgMjEuMDA1IDIxLjgzODIgMjIuNSAxOS45OTk4IDIyLjVDMTguMTYxNSAyMi41IDE2LjY2NjUgMjEuMDA1IDE2LjY2NjUgMTkuMTY2N1YxNC4xNjY3Wk0xNi42NjY1IDI4LjMzMzRDMTYuNjY2NSAyNy44NzI1IDE3LjAzOTggMjcuNSAxNy40OTk4IDI3LjVIMjIuNDk5OEMyMi45NjA3IDI3LjUgMjMuMzMzMiAyNy44NzI1IDIzLjMzMzIgMjguMzMzNEMyMy4zMzMyIDI4Ljc5NDIgMjIuOTYwNyAyOS4xNjY3IDIyLjQ5OTggMjkuMTY2N0gxNy40OTk4QzE3LjAzOTggMjkuMTY2NyAxNi42NjY1IDI4Ljc5NDIgMTYuNjY2NSAyOC4zMzM0WiIKICAgICAgICAgICAgZmlsbD0iI2ZmZiIgLz4KICAgICAgICA8cGF0aAogICAgICAgICAgICBkPSJNMjUuODMzMiAxOC4zNTEyVjE5LjUwODNDMjUuODMzMiAyMi4wODExIDIzLjIyMTUgMjUgMTkuOTk5OCAyNUMxNi43NzgyIDI1IDE0LjE2NjUgMjIuMDgxMSAxNC4xNjY1IDE5LjUwODNWMTguMzMzNCIKICAgICAgICAgICAgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjEuNjY2NjciIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgLz4KICAgIDwvc3ZnPg==',
+ Ga =
+ 'data:image/svg+xml;base64,ICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbD0ibm9uZSIgdmlld0JveD0iMCAwIDQwIDQwIiBjbGFzcz0iZGVzaWduLWljb25mb250Ij4KICAgIDxyZWN0IG9wYWNpdHk9Ii4zIiB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHJ4PSIyMCIgZmlsbD0iI2ZmZiIgLz4KICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIgogICAgICBkPSJNMjAgMTEuNUMxOC4wNjk3IDExLjUgMTYuNSAxMi45Njc4IDE2LjUgMTQuNzcyN1YxOS42ODE4QzE2LjUgMjAuMjYyMyAxNi42NjIzIDIwLjgwNzggMTYuOTQ2OCAyMS4yODFMMjMuNDk5NyAxNC43MjgxQzIzLjQ3NDEgMTIuOTQzNyAyMS45MTQzIDExLjUgMjAgMTEuNVpNMjMuNSAxOC45NzA0TDE5LjU0MzYgMjIuOTI2OUMxOS42OTMgMjIuOTQ1MSAxOS44NDUzIDIyLjk1NDUgMjAgMjIuOTU0NUMyMS45MzAzIDIyLjk1NDUgMjMuNSAyMS40ODY3IDIzLjUgMTkuNjgxOFYxOC45NzA0Wk0xNS43MzIxIDIyLjQ5NTdDMTUuMTIwNyAyMS43NDUyIDE0Ljc1IDIwLjg3MjcgMTQuNzUgMjAuMDE3MVYxOC44NjM2TDE0Ljc0MzIgMTguNzYxQzE0LjY4OTIgMTguMzU3NSAxNC4zMjExIDE4LjA0NTQgMTMuODc1IDE4LjA0NTRDMTMuMzkxOCAxOC4wNDU0IDEzIDE4LjQxMTcgMTMgMTguODYzNlYyMC4wMTcxTDEzLjAwNDcgMjAuMjIxNUMxMy4wNjExIDIxLjQ2NDcgMTMuNjI4NCAyMi42ODgzIDE0LjUyNDUgMjMuNzAzM0wxNS43MzIxIDIyLjQ5NTdaTTE2Ljk0ODIgMjUuNTIyMkwxOC4yMDk0IDI0LjI2MUMxOC43Nzc3IDI0LjQ3MTUgMTkuMzgzNCAyNC41OTA5IDIwIDI0LjU5MDlDMjIuNjU4OSAyNC41OTA5IDI1LjExMzggMjIuMzcxNiAyNS4yNDQ1IDIwLjE5ODFMMjUuMjUgMjAuMDE3MVYxOC44ODExQzI1LjI1IDE4LjQyOTMgMjUuNjQxOCAxOC4wNjI5IDI2LjEyNSAxOC4wNjI5QzI2LjU3MTEgMTguMDYyOSAyNi45MzkyIDE4LjM3NTEgMjYuOTkzMiAxOC43Nzg1TDI3IDE4Ljg4MTFWMjAuMDE3MUMyNyAyMy4xNTE4IDIzLjY5NzYgMjYuMjI3MiAyMCAyNi4yMjcyQzE4LjkyNTYgMjYuMjI3MiAxNy44ODQ1IDI1Ljk2NzYgMTYuOTQ4MiAyNS41MjIyWk0xNi41IDI4LjY4MThDMTYuNSAyOC4yMjk0IDE2Ljg5MiAyNy44NjM2IDE3LjM3NSAyNy44NjM2SDIyLjYyNUMyMy4xMDg5IDI3Ljg2MzYgMjMuNSAyOC4yMjk0IDIzLjUgMjguNjgxOEMyMy41IDI5LjEzNDMgMjMuMTA4OSAyOS41IDIyLjYyNSAyOS41SDE3LjM3NUMxNi44OTIgMjkuNSAxNi41IDI5LjEzNDMgMTYuNSAyOC42ODE4WiIKICAgICAgZmlsbD0iI2ZmZiIgLz4KICAgIDxyZWN0IHg9IjI3LjI0OSIgeT0iMTEuNzY4OCIgd2lkdGg9IjEuNSIgaGVpZ2h0PSIyMiIgcng9Ii43NSIgdHJhbnNmb3JtPSJyb3RhdGUoNDUgMjcuMjQ5IDExLjc2ODgpIgogICAgICBmaWxsPSIjRkUzQzQ0IiAvPgogIDwvc3ZnPg==',
+ He =
+ 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAABySURBVHgB7c7RCYAwDIThw8kcwVHcoDM4ipM4giu4QcyLCIK02rQp5T641+QHiIiICCIy6ia0QEOC3AI8PWJ8o15ifKIiMXWjEmPqRH2MKRv1M6ZMVGaMbZRRzGVGLj2yi50t9m9IaFpg49CtICIi6twJIS39bzNKa9EAAAAASUVORK5CYII=',
+ ka = (s) => (Pe('data-v-f800d151'), (s = s()), Be(), s),
+ Xa = { class: 'body' },
+ Wa = /* @__PURE__ */ ka(() => /* @__PURE__ */ C('div', { class: 'triangle' }, null, -1)),
+ Fa = 180,
+ Ya = /* @__PURE__ */ V({
+ __name: 'Popover',
+ props: {
+ showPopover: { type: Boolean },
+ targetBoundingClientRect: {},
+ width: {},
+ },
+ setup(s) {
+ const A = s,
+ e = g(!1),
+ l = g();
+ return (
+ rA(
+ () => A.showPopover,
+ () => {
+ e.value = A.showPopover;
+ }
+ ),
+ rA(
+ () => A.targetBoundingClientRect,
+ () => {
+ const { width: n, height: r } = A.targetBoundingClientRect;
+ l.value = {
+ left: `${n / 2 - Fa / 2}px`,
+ bottom: `${r + 10}px`,
+ };
+ }
+ ),
+ (n, r) =>
+ t(e)
+ ? (u(),
+ N(
+ 'div',
+ {
+ key: 0,
+ class: 'popover-container',
+ style: bA(t(l)),
+ },
+ [C('div', Xa, [dA(n.$slots, 'default', {}, void 0, !0)]), Wa],
+ 4
+ ))
+ : p('', !0)
+ );
+ },
+ });
+const Ka = /* @__PURE__ */ Q(Ya, [['__scopeId', 'data-v-f800d151']]),
+ Za = { class: 'scroll-container' },
+ Ha = { class: 'scroll-content' },
+ Ja = ['onClick'],
+ _a = /* @__PURE__ */ V({
+ __name: 'DeviceSelectPopover',
+ props: {
+ isMobile: { type: Boolean },
+ deviceType: {},
+ targetBoundingClientRect: {},
+ showDeviceSelect: { type: Boolean },
+ },
+ setup(s) {
+ const A = s,
+ e = g(''),
+ l = g(i.getData(o.CALL, a.LOCAL_USER_INFO)),
+ n = g(i.getData(o.CALL, a.DEVICE_LIST)),
+ r = g('');
+ rA(
+ () => {
+ var L, T;
+ return A.deviceType === cA.MICROPHONE
+ ? (L = l.value) == null
+ ? void 0
+ : L.isAudioAvailable
+ : (T = l.value) == null
+ ? void 0
+ : T.isVideoAvailable;
+ },
+ () => {
+ var E, D;
+ const T = (
+ A.deviceType === cA.MICROPHONE
+ ? (E = l.value) == null
+ ? void 0
+ : E.isAudioAvailable
+ : (D = l.value) == null
+ ? void 0
+ : D.isVideoAvailable
+ )
+ ? 'close'
+ : 'open';
+ e.value = `${T} ${A.deviceType}`;
+ },
+ { deep: !0, immediate: !0 }
+ );
+ const c = async () => {
+ var L, T;
+ A.deviceType === cA.CAMERA &&
+ ((L = l.value) != null && L.isVideoAvailable ? await w.closeCamera() : await w.openCamera('localVideo')),
+ A.deviceType === cA.MICROPHONE &&
+ ((T = l.value) != null && T.isAudioAvailable ? await w.closeMicrophone() : await w.openMicrophone());
+ },
+ I = async (L) => {
+ try {
+ await w.switchDevice({
+ deviceType: A.deviceType === cA.CAMERA ? 'video' : 'audio',
+ deviceId: L,
+ }),
+ (r.value = L);
+ } catch (T) {
+ console.error(T);
+ }
+ },
+ d = (L) => {
+ l.value = L;
+ },
+ M = (L) => {
+ var T, E;
+ A.deviceType === cA.CAMERA
+ ? ((n.value = (L == null ? void 0 : L.cameraList) || []),
+ (r.value = ((T = L == null ? void 0 : L.currentCamera) == null ? void 0 : T.deviceId) || ''))
+ : A.deviceType === cA.MICROPHONE &&
+ ((r.value = ((E = L == null ? void 0 : L.currentMicrophone) == null ? void 0 : E.deviceId) || ''),
+ (n.value = (L == null ? void 0 : L.microphoneList) || []));
+ };
+ return (
+ K(() => {
+ i.watch(
+ o.CALL,
+ {
+ [a.LOCAL_USER_INFO]: d,
+ [a.DEVICE_LIST]: M,
+ },
+ {
+ notifyRangeWhenWatch: a.MYSELF,
+ }
+ );
+ }),
+ H(() => {
+ i.unwatch(o.CALL, {
+ [a.LOCAL_USER_INFO]: d,
+ [a.DEVICE_LIST]: M,
+ });
+ }),
+ (L, T) =>
+ L.isMobile
+ ? p('', !0)
+ : (u(),
+ h(
+ Ka,
+ {
+ key: 0,
+ class: 'device-select-container',
+ showPopover: L.showDeviceSelect,
+ targetBoundingClientRect: L.targetBoundingClientRect,
+ },
+ {
+ default: DA(() => [
+ C('div', Za, [
+ C('div', Ha, [
+ (u(!0),
+ N(
+ iA,
+ null,
+ uA(
+ t(n),
+ (E) => (
+ u(),
+ N(
+ 'div',
+ {
+ class: R(['device-select-label', E.deviceId === t(r) ? 'select' : '']),
+ key: E.deviceId,
+ onClick: () => I(E.deviceId),
+ },
+ [C('span', null, b(E.label), 1)],
+ 10,
+ Ja
+ )
+ )
+ ),
+ 128
+ )),
+ ]),
+ ]),
+ C(
+ 'div',
+ {
+ class: 'device-select-label btn',
+ onClick: c,
+ },
+ [C('span', null, b(t(X)(t(e))), 1)]
+ ),
+ ]),
+ _: 1,
+ },
+ 8,
+ ['showPopover', 'targetBoundingClientRect']
+ ))
+ );
+ },
+ });
+const Je = /* @__PURE__ */ Q(_a, [['__scopeId', 'data-v-66448e1e']]);
+function $a(...s) {
+ let A = window == null ? void 0 : window.document,
+ e = '',
+ l = () => {},
+ n = {};
+ if ((typeof s[0] == 'string' ? ([e, l, n] = s) : ([A, e, l, n] = s), !!A))
+ return (
+ A == null || A.addEventListener(e, l, n),
+ () => {
+ A == null || A.removeEventListener(e, l, n);
+ }
+ );
+}
+function _e(s, A) {
+ let e = () => {};
+ K(() => {
+ e = $a(
+ 'click',
+ (n) => {
+ const r = s.map((d) => t(d)),
+ c = n.composedPath(),
+ I = [];
+ for (let d = 0; d < r.length; d++) I[d] = c.includes(r[d]);
+ I.every((d) => !d) && A();
+ },
+ { passive: !0 }
+ );
+ }),
+ H(() => {
+ e == null || e();
+ });
+}
+const Al = { class: 'camera-container' },
+ el = ['src'],
+ tl = /* @__PURE__ */ V({
+ __name: 'Microphone',
+ props: {
+ isMobile: {
+ type: Boolean,
+ required: !0,
+ },
+ },
+ setup(s) {
+ const A = s,
+ e = g(),
+ l = g(i.getData(o.CALL, a.LOCAL_USER_INFO)),
+ n = g(),
+ r = g(),
+ c = g('');
+ c.value = A.isMobile ? Te : ye;
+ const I = async () => {
+ var D;
+ (D = l.value) != null && D.isAudioAvailable
+ ? A.isMobile
+ ? (c.value = Te)
+ : (c.value = ye)
+ : A.isMobile
+ ? (c.value = Qa)
+ : (c.value = Ga);
+ },
+ d = g(),
+ M = g(!1),
+ L = async () => {
+ M.value = !M.value;
+ };
+ rA(
+ () => {
+ var D;
+ return (D = l.value) == null ? void 0 : D.isAudioAvailable;
+ },
+ () => {
+ I();
+ },
+ { deep: !0, immediate: !0 }
+ );
+ const T = async () => {
+ var D;
+ (D = l.value) != null && D.isAudioAvailable ? await w.closeMicrophone() : await w.openMicrophone();
+ };
+ _e([n, r], () => {
+ M.value = !1;
+ });
+ const E = (D) => {
+ l.value = D;
+ };
+ return (
+ K(() => {
+ var D, y, j;
+ (d.value =
+ ((j = (y = (D = e.value) == null ? void 0 : D.$el) == null ? void 0 : y.getBoundingClientRect) == null
+ ? void 0
+ : j.call(y)) || {}),
+ i.watch(
+ o.CALL,
+ {
+ [a.LOCAL_USER_INFO]: E,
+ },
+ {
+ notifyRangeWhenWatch: a.MYSELF,
+ }
+ );
+ }),
+ H(() => {
+ i.unwatch(o.CALL, {
+ [a.LOCAL_USER_INFO]: E,
+ });
+ }),
+ (D, y) => (
+ u(),
+ N('div', Al, [
+ x(
+ MA,
+ {
+ ref_key: 'btnRef',
+ ref: e,
+ icon: t(c),
+ text: t(X)('microphone'),
+ isMobile: s.isMobile,
+ onClick: T,
+ },
+ null,
+ 8,
+ ['icon', 'text', 'isMobile']
+ ),
+ s.isMobile
+ ? p('', !0)
+ : (u(),
+ N(
+ 'div',
+ {
+ key: 0,
+ ref_key: 'arrowRef',
+ ref: r,
+ class: 'arrow-btn',
+ onClick: L,
+ },
+ [
+ C(
+ 'img',
+ {
+ class: 'arrow-img',
+ src: t(He),
+ },
+ null,
+ 8,
+ el
+ ),
+ ],
+ 512
+ )),
+ s.isMobile
+ ? p('', !0)
+ : (u(),
+ h(
+ Je,
+ {
+ key: 1,
+ ref_key: 'deviceSelectRef',
+ ref: n,
+ isMobile: s.isMobile,
+ deviceType: t(cA).MICROPHONE,
+ showDeviceSelect: t(M),
+ targetBoundingClientRect: t(d),
+ },
+ null,
+ 8,
+ ['isMobile', 'deviceType', 'showDeviceSelect', 'targetBoundingClientRect']
+ )),
+ ])
+ )
+ );
+ },
+ });
+const CA = /* @__PURE__ */ Q(tl, [['__scopeId', 'data-v-23fb3fba']]),
+ Ee =
+ 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGgAAABoCAMAAAAqwkWTAAAA2FBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8lQWb3+Pnc4Oawusg8VXdJYYAtSGwpRGnT2eGRn7Lh5erBydRtgJlDXHw1T3IvSm7z9fft8PLl6O3X3OO2v8yptMOjr7+ap7iGlapne5VbcIxVa4h4iaB3iJ/L0tvK0drGzte5ws6bqLmWpLYxS27fH+7xAAAAInRSTlMABO3H0q5OyY4e4fsfjPXo59nYuLKjd2xlV0pIPi8qFxQLhSvRRQAAAuZJREFUaN601eeS2jAUBeCLbGMwvXdYjii7wLI92ZZk0t//jSIxTFiPkbGQ/P2S9YMzHK4vlNxk2C01HTdghQILXKdZ6g4nZNu44zEcwbzOmGzJDFoVxKi0BhkyNypVcVK1NCIzWR8J+VmDznouNLi9Mxvs16Cp1id9eQ9n8PK6rbXLOEu5rdVf0cHZnKLGrDEYYNmkteVgKJeovmkDxhpTOunChwX+xcmprsOKev5ETgBLgtikizqsqce0N/VhkT9VznUDVjVUU56DZTnFPoB1WTqiyGAdK1JExkEKnOjP1EYq2pE3tYxUlPMU5iElHoX0kZp+aBJqSE0tQwc9pKhHBy5S5GrvBPP94CNVPu2NoGWxXG6hZXTO1p5945xfQktpP9tVJDe/5BJC1pufiFPNkDRAcosrHg2arzhfIM6ApBYAjdqiQc/i4mqNGC2SKnq1RYOe7sXN8hFqFRLGurVJCPnMha8FqI2JqKNbm4SwDRdeoNYhIk+jNlUQ3mV5s/g/C5a4tmjQp5c5dh7/istXKDGiCY7bLnmMfc6Kr34cyrt7gNKEhjhuyU8HvcpPf4L0cCfOz1AaUhfH8QRB65WcNuz8Ecd3KHUpZxCE31z4BWku39pZzLprmgTh5rBhb8VxC5UmOUZB17K8NaQ3cXqDikOuQdD+K23+r4cbqLgUmAUtxMMXSN93J5WAmFnQtXi4/XBSYVQwC5qJh/sPJ5XCv2rtHQdAEIiiqIkNjUuwsdFluP9VaaxMbBwgx5HKjoQg8z6XbcSOjl0Gdr3ZD8ueIPaosjHBBh8b5UqcMLkVEJB7k4BkkliJ/Kht2WttCzNi1loO0/kdO751Ca2p0v5vYfuPAo2RRTQqdGIxGgsGVdSpwlsWR6uAnVUGqgRRtY4qqlj1psrE7+vR8+qRwvfaqVuFnaWU74UZZAInOqAg+eCWNlwnJ4BUi1TlhsQc9natubwB+cr8HzRRwJZPfLTc8dESwkcPSwpvc/EgQfkAAAAASUVORK5CYII=',
+ Se =
+ 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGgAAABoCAMAAAAqwkWTAAAAdVBMVEUAAAD////////////////////////////////////////////////////////////////////////////////////////////////////////Hztf9/f7V2uH29/nt7/LR197O1NzL0trK0dnd4efz9ffY3eNuFy3tAAAAGnRSTlMAyO2wjR4E59nSTkks3/n1uKN3bGVXPhcUC/2+zKoAAAJVSURBVGjetNXXcsIwEIXhVUFumF6PCJD6/o+YxDMZTRKjspa+K674R+u1TPGOh51WounlYiH7Rii9Oxwpt/lWSYyQajunXEy3ruBRrTuT4yy6QlClp56rFYgkWuLbN0jQ7Imnq5Go7ijdTIFBzSiN2SzBstyYpOMIsImEQ7USE8g2dmwaE+mo8Z1XmGx1pqCTQAbiFFyDGlnUs0CnRya9t3SqkU3tmd5ZICPxcCPMClmtDI3TyEzTqBbZtaMLJ5GdHFk9I1CAMPTXBkVs/g1uiSKWf4enUIiiXzoU0/0K1SimJnL2KGhPToOCGvadwL8fBIoSP505ktyen29IMufc2pc3a+0dSTQNTIV417v9hiSVSX5Zb682NeRe2jWc8NhYofUQquCExsYMVW7n4sbGCLm928IJjI0f2roPRHhsvJD7WEhEj40fkkTHh++/9UCqIx0wznV8oevFPcQrPA60wzgbE3p/ebr8dJ5efKUdaW5o6Fj7XRo61vpKmtSE0Ie1Q2nofPnwrZ1gh4a/H0rux0OCGnbIlcIdNNSzQ670GuygJ8kOuVK4A0kLXsiV7jEdLD6rtYMbgEEYCIKfVJEX9N8kNWCs4UgDkSKCfbfLXsQ+HTsM7HizH5ZdQexSZWOCDT42ytVywtYttkCylVgt+Sy2sCDGomU1LM9/6/mK8X8U4r8pNFhFo0onVqOpYpBVnaq8ZXW0KtgZMlAQRGEdBaoYelMw8T4e7QW+GQi7D8rnaAY94kSWCnIstyTqOgcCUq5SVZHE8rW3HZHvHTWxS7Zk+ugC7XReZgJ+kWsAAAAASUVORK5CYII=',
+ HA = /* @__PURE__ */ V({
+ __name: 'Speaker',
+ setup(s) {
+ const A = g(i.getData(o.CALL, a.IS_EAR_PHONE) ? Se : Ee),
+ e = (n) => {
+ A.value = n ? Se : Ee;
+ };
+ K(() => {
+ i.watch(o.CALL, {
+ [a.IS_EAR_PHONE]: e,
+ });
+ }),
+ H(() => {
+ i.unwatch(o.CALL, {
+ [a.IS_EAR_PHONE]: e,
+ });
+ });
+ const l = () => {
+ w.setSoundMode();
+ };
+ return (n, r) => (
+ u(),
+ h(
+ MA,
+ {
+ icon: t(A),
+ text: t(X)('speaker'),
+ isMobile: !0,
+ onClick: l,
+ },
+ null,
+ 8,
+ ['icon', 'text']
+ )
+ );
+ },
+ }),
+ ve =
+ 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGgAAABoCAMAAAAqwkWTAAAAkFBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////8lQWaDk6g8VXb19/hxg5v6+/zo6+/f4+nb3+bBydSqtcNofJVJYYA2UHIwSm4nQ2ju8PO3wMxec47Fc9FRAAAAHHRSTlMAS+0eBOfZ0snGrowV3/n1uLKjjndsZVc+LyoLFK3R0wAAAtFJREFUaN6014luqzAQheGxw75k33uA0DZL0zR9/7e7cqVWKOSaMdjfA/DDeCQL4su263QWh7kcj2UexrN0vc3Itv0qkXhCJqs92eKJuQ8Nfy48Gm6X+ujkpzsaRkRgigT1twlhINxQPyKAoUCQuVGCHpIRmfGWE/QyWXpGnxOjt3hEbEJiACm4Y1tgoAVrfC9TDDZ9oU5ZBAuirHMNAlgRjDo6OSzJtaUsgDVBptmDCBZF/90Ibwqrph49t4BlC3pKwDrxdOEkrJMjavFiOBC3j2kJJ5atwU3gxORxeAkcSbQb527zAjgTUMMGDm0aoRAOhZoTcnVKEZyKfjs78NyLB3fw/P4BpGD5uj6Grl9gSemH54OlLlpqsPgeKYI9uLa7yTrMTQdnPrw5KT5/cH2H56vOHjpvdVUwVPUbdPZEtNJ2rgXTVVtadV0QdcFWd10WEhoVP1RBQxJl0Gk/rjy9Hw7vp7L9CtDJaGsSqs74c65MQltaG4QuBzQcLgahNaX8UIkHJT+U0owdukA5lh+fnx/lEcqFHZpRzA1Vam6v5a34cStf1fQqbiimkBs6q8538edblc7cUEg5M1QBQNk6sooZykkyQyWA460Zuh1VmhmSNGaGTo2nNtonZmj8r1ozxmEQhqGoYUE0MIBURCt3Y0Hc/36VB4ZMhJK8mlzAUuTE3/+/5EKLqq5xoVVVl9RCyVdnPbfFhTbru+Sr65lCvTTM1TXSMs3QysC09yCBebBBJuYLmmRmPtVZOmZMdCI1Mfhqk1vEKH+YgCTEydMkMSG33kci/3PiHIl8GcsXGsVOVV4SV/tqWUrkx6ulhNJrS9jX/9KL2IsyNDCLhjKdMBuNMgYxq5MybzE7mjLYsciACkGoWIcKqrDojQoT/x+P5g18fUTY+UJ5P5hBHnDCFwpyGW7xiOtcAJD8IlW/QGL+sbczIN990MRcsCWGj34B+Zek3m5aKggAAAAASUVORK5CYII=',
+ al =
+ 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGgAAABoCAMAAAAqwkWTAAAAeFBMVEUAAAD////////////////////+/v/////////////////////////////////////////////////////////////////////////////////////////Hztfs7/LM09v19vjg5On4+fvw8vTc4Ob29/nY3ePR197iGM+VAAAAHHRSTlMAyLCNHgT77OfSTkkV3/Xu2di4o3dsZVc+LyoL33XkRAAAAxRJREFUaN7VmumSqjAQRhNQFgX3fT7MsPr+b3ida5VTQ67pjgQuc/5a5TGh7YTuFnyS08H3ZJyGQRCmsfT8wykRrrnsvRDQCb39xZlkOt9GMBBt51MHmrMfgSTyzx01MwkmctZBc4xhQXx8UzNfwZLVXNgz8fAG3sQ20nYLvMViN7VajsTbSItFzZbowHLG3TYfHfFZ2/exQWc2H7QnkXCATMgwWMMJ6wnhSeGI1GhK1nDGOjHEgYRD5MfLuN7AKZtXUe7DMf6LfADnzP4ZcEs4ZznRPVOJHpD6Y9qhF3baxi3QC4v25nnoCa91P0Bv/LxHrNAbqx/3KvTIUXwTo0diMie4zw8SvSKf93jwuGYtruBxtsvagWqLVIAHxTVgZPFpBBZVplE9l6pMpuiR8ebsjdO5Pj+50n/aLXfjdNTn8xcUMLD9K4rAoTJ4yLiIvjwXmCgqbSW0R+dyF+2NHpW58GBPHRAV2/NZUYdFCAOK7VEKBkIhEpjQvz8va6Ao87Yny2AiEScbkfp+GG0PITqJg4WoCQwes+ggfL4oh8FDiHzhsUUNvqjzm9KeDy3yiLNIS9V5lukehkgSp3g7fzYvPKQoFilTpIj1EKJUhExRDqDWPHc1TxSKgCkqAeSaByVTFLBFNYCb5kHBFbG3Dnfazwd32FuXWojacWAhStnhXej54PaID2Z4S24w6HkntwgGyU5BuZ7faovw9rhJVf+fPtSKKfKJY8LgaR5LZIoOxMFHrCdQXNGJc5Trnlte45FjuaKEuJyY71V5xhWF1HXL5AmajC3yqAukwXNVGV+0p67E+vPJywKoy7ylIUQX6pJvOOdsRBH52kJ4uKIt+SJm4VF4zZx8teR7sop8tRS+C48q6JLnubtHVQYPznRBo3x6OiAZJZrGgQczRtGpcuCJOWW0oGpKdOQ4VGFwsFLnUMXbwcrRQxXYB2sZDNUEGbCtM3yjavjWm/tm4v9vj7pt+I6jhe2uKT+eMQM3gxPjGgXpPNwyxnGdDgNI4x2pemdIbPxjbzaDfL9nNNHVsOVg46N/AFdMocBqUNAVAAAAAElFTkSuQmCC',
+ he =
+ 'data:image/svg+xml;base64,IDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgNDAgNDAiIGNsYXNzPSJkZXNpZ24taWNvbmZvbnQiPgogICAgPHJlY3Qgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiByeD0iMjAiIGZpbGw9IiNEQURBREEiIGZpbGwtb3BhY2l0eT0iLjMiIC8+CiAgICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIKICAgICAgZD0iTTI0LjAxNjQgMTQuNTM5NUMyMy44NDk4IDEzLjcxNDEgMjMuMzE4MiAxMy4wODg0IDIyLjY1NTYgMTIuOTM5QzIxLjU1NTMgMTIuNzM5MiAyMC4xODk1IDEyLjUgMTcuNDA5MSAxMi41QzE0LjM2NzYgMTIuNSAxMy4wOTIgMTIuNzI2IDEyLjA4MTggMTIuOTEyN0MxMS40NTcxIDEzLjA5NTcgMTAuOTY0NyAxMy43MDI0IDEwLjgwMzMgMTQuNDg4NEMxMC42NTg1IDE1LjQ3MjEgMTAuNSAxNy45MzM1IDEwLjUgMjBDMTAuNSAyMi4wMzE1IDEwLjY1MzUgMjQuNDc2OSAxMC44MDE4IDI1LjQ2MDVDMTAuOTY4NCAyNi4yODU5IDExLjUgMjYuOTExNiAxMi4xNjI1IDI3LjA2MUMxMy4yNjI5IDI3LjI2MDggMTQuNjI4NyAyNy41IDE3LjQwOTEgMjcuNUMyMC4xODk1IDI3LjUgMjEuNTU1MyAyNy4yNjA4IDIyLjY1NzEgMjcuMDcxMkMyMy4zMjI1IDI2LjkyMTggMjMuODU3OCAyNi4yOTI1IDI0LjAyNTggMjUuNDYzNEMyNC4xNjQ3IDI0LjQ3NjkgMjQuMzE4MiAyMi4wMzE1IDI0LjMxODIgMjBDMjQuMzE4MiAxNy45Njg1IDI0LjE2NDcgMTUuNTIzMSAyNC4wMTY0IDE0LjUzOTVaTTEyLjIyNzMgMTUuMjA4M0MxMi4yMjczIDE0Ljc0ODEgMTIuNjAwNCAxNC4zNzUgMTMuMDYwNiAxNC4zNzVIMTMuOTg0OEMxNC40NDUxIDE0LjM3NSAxNC44MTgyIDE0Ljc0ODEgMTQuODE4MiAxNS4yMDgzVjE1LjQxNjdDMTQuODE4MiAxNS44NzY5IDE0LjQ0NTEgMTYuMjUgMTMuOTg0OCAxNi4yNUgxMy4wNjA2QzEyLjYwMDQgMTYuMjUgMTIuMjI3MyAxNS44NzY5IDEyLjIyNzMgMTUuNDE2N1YxNS4yMDgzWk0yOC42MzY0IDE0LjM3NUMyNy4xNzk0IDE0LjM3NSAyNi4wNDU1IDE2LjQ5MDQgMjYuMDQ1NSAxNy43MjMyVjIyLjI3NjhDMjYuMDQ1NSAyMy43Mjc5IDI2Ljg3NTQgMjUuNjI1IDI4LjYzNjQgMjUuNjI1QzI5LjQ1MDggMjUuNjI1IDI5LjUgMjIuMDA4OSAyOS41IDIwQzI5LjUgMTcuOTkxMSAyOS41IDE0LjM3NSAyOC42MzY0IDE0LjM3NVoiCiAgICAgIGZpbGw9IiNmZmYiIC8+CiAgPC9zdmc+',
+ ll =
+ 'data:image/svg+xml;base64,ICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbD0ibm9uZSIgdmlld0JveD0iMCAwIDQwIDQwIiBjbGFzcz0iZGVzaWduLWljb25mb250Ij4KICAgIDxyZWN0IHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgcng9IjIwIiBmaWxsPSIjREFEQURBIiBmaWxsLW9wYWNpdHk9Ii4zIiAvPgogICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yMi43MjIxIDEyLjk1NTdDMjIuNzAwMSAxMi45NDk2IDIyLjY3NzkgMTIuOTQ0IDIyLjY1NTYgMTIuOTM5QzIxLjU1NTMgMTIuNzM5MiAyMC4xODk1IDEyLjUgMTcuNDA5MSAxMi41QzE0LjM2NzYgMTIuNSAxMy4wOTIgMTIuNzI2IDEyLjA4MTggMTIuOTEyN0MxMS40NTcxIDEzLjA5NTcgMTAuOTY0NyAxMy43MDI0IDEwLjgwMzMgMTQuNDg4NEMxMC42NTg1IDE1LjQ3MjEgMTAuNSAxNy45MzM1IDEwLjUgMjBDMTAuNSAyMS43MzQzIDEwLjYxMTggMjMuNzcwMyAxMC43MzY5IDI0Ljk0MDlMMjIuNzIyMSAxMi45NTU3Wk0xMi43NTUgMjcuMTY1NEMxMy43NzA0IDI3LjMzNTUgMTUuMTAzMyAyNy41IDE3LjQwOTEgMjcuNUMyMC4xNjU4IDI3LjUgMjEuNTMxOSAyNy4yNjQ5IDIyLjYyODkgMjcuMDc2MUwyMi42NTcxIDI3LjA3MTJDMjMuMzIyNSAyNi45MjE4IDIzLjg1NzggMjYuMjkyNSAyNC4wMjU4IDI1LjQ2MzRDMjQuMTY0NyAyNC40NzY5IDI0LjMxODIgMjIuMDMxNSAyNC4zMTgyIDIwQzI0LjMxODIgMTguNTc5NyAyNC4yNDMyIDE2Ljk1NyAyNC4xNDczIDE1Ljc3M0wxMi43NTUgMjcuMTY1NFpNMTMuMDYwNiAxNC4zNzVDMTIuNjAwNCAxNC4zNzUgMTIuMjI3MyAxNC43NDgxIDEyLjIyNzMgMTUuMjA4M1YxNS40MTY3QzEyLjIyNzMgMTUuODc2OSAxMi42MDA0IDE2LjI1IDEzLjA2MDYgMTYuMjVIMTMuOTg0OEMxNC40NDUxIDE2LjI1IDE0LjgxODIgMTUuODc2OSAxNC44MTgyIDE1LjQxNjdWMTUuMjA4M0MxNC44MTgyIDE0Ljc0ODEgMTQuNDQ1MSAxNC4zNzUgMTMuOTg0OCAxNC4zNzVIMTMuMDYwNlpNMjYuMDQ1NSAxNy43MjMyQzI2LjA0NTUgMTYuNDkwNCAyNy4xNzk0IDE0LjM3NSAyOC42MzY0IDE0LjM3NUMyOS41IDE0LjM3NSAyOS41IDE3Ljk5MTEgMjkuNSAyMEMyOS41IDIyLjAwODkgMjkuNDUwOCAyNS42MjUgMjguNjM2NCAyNS42MjVDMjYuODc1NCAyNS42MjUgMjYuMDQ1NSAyMy43Mjc5IDI2LjA0NTUgMjIuMjc2OFYxNy43MjMyWiIgZmlsbD0iI2ZmZiIgLz4KICAgIDxyZWN0IHg9IjI0Ljg1NzQiIHk9IjExLjg1NjQiIHdpZHRoPSIxLjUiIGhlaWdodD0iMjIiIHJ4PSIuNzUiIHRyYW5zZm9ybT0icm90YXRlKDQ1IDI0Ljg1NzQgMTEuODU2NCkiIGZpbGw9IiNGRTNDNDQiIC8+CiAgPC9zdmc+',
+ sl = { class: 'camera-container' },
+ nl = ['src'],
+ il = /* @__PURE__ */ V({
+ __name: 'Camera',
+ props: {
+ isMobile: {
+ type: Boolean,
+ required: !0,
+ },
+ },
+ setup(s) {
+ const A = s,
+ e = g(),
+ l = g(''),
+ n = g(i.getData(o.CALL, a.LOCAL_USER_INFO)),
+ r = g(),
+ c = g();
+ l.value = A.isMobile ? ve : he;
+ const I = g(),
+ d = g(!1),
+ M = async () => {
+ d.value = !d.value;
+ },
+ L = async () => {
+ var D;
+ (D = n.value) != null && D.isVideoAvailable
+ ? A.isMobile
+ ? (l.value = ve)
+ : (l.value = he)
+ : A.isMobile
+ ? (l.value = al)
+ : (l.value = ll);
+ };
+ rA(
+ () => {
+ var D;
+ return (D = n.value) == null ? void 0 : D.isVideoAvailable;
+ },
+ () => {
+ L();
+ },
+ { deep: !0, immediate: !0 }
+ );
+ const T = async () => {
+ var D;
+ (D = n.value) != null && D.isVideoAvailable ? await w.closeCamera() : await w.openCamera('localVideo');
+ };
+ _e([r, c], () => {
+ d.value = !1;
+ });
+ const E = (D) => {
+ n.value = D;
+ };
+ return (
+ K(() => {
+ var D, y, j;
+ (I.value =
+ ((j = (y = (D = e.value) == null ? void 0 : D.$el) == null ? void 0 : y.getBoundingClientRect) == null
+ ? void 0
+ : j.call(y)) || {}),
+ i.watch(
+ o.CALL,
+ {
+ [a.LOCAL_USER_INFO]: E,
+ },
+ {
+ notifyRangeWhenWatch: a.MYSELF,
+ }
+ );
+ }),
+ H(() => {
+ i.unwatch(o.CALL, {
+ [a.LOCAL_USER_INFO]: E,
+ });
+ }),
+ (D, y) => (
+ u(),
+ N('div', sl, [
+ x(
+ MA,
+ {
+ ref_key: 'btnRef',
+ ref: e,
+ icon: t(l),
+ text: t(X)('camera'),
+ isMobile: s.isMobile,
+ onClick: T,
+ },
+ null,
+ 8,
+ ['icon', 'text', 'isMobile']
+ ),
+ s.isMobile
+ ? p('', !0)
+ : (u(),
+ N(
+ 'div',
+ {
+ key: 0,
+ ref_key: 'arrowRef',
+ ref: c,
+ class: 'arrow-btn',
+ onClick: M,
+ },
+ [
+ C(
+ 'img',
+ {
+ class: 'arrow-img',
+ src: t(He),
+ },
+ null,
+ 8,
+ nl
+ ),
+ ],
+ 512
+ )),
+ s.isMobile
+ ? p('', !0)
+ : (u(),
+ h(
+ Je,
+ {
+ key: 1,
+ ref_key: 'deviceSelectRef',
+ ref: r,
+ isMobile: s.isMobile,
+ deviceType: t(cA).CAMERA,
+ showDeviceSelect: t(d),
+ targetBoundingClientRect: t(I),
+ },
+ null,
+ 8,
+ ['isMobile', 'deviceType', 'showDeviceSelect', 'targetBoundingClientRect']
+ )),
+ ])
+ )
+ );
+ },
+ });
+const TA = /* @__PURE__ */ Q(il, [['__scopeId', 'data-v-f1733acd']]),
+ ol = { class: 'text' },
+ rl = /* @__PURE__ */ V({
+ __name: 'Timer',
+ props: {
+ callDuration: {
+ type: String,
+ required: !0,
+ },
+ },
+ setup(s) {
+ return (A, e) => (u(), N('span', ol, b(s.callDuration), 1));
+ },
+ });
+const ie = /* @__PURE__ */ Q(rl, [['__scopeId', 'data-v-c15a821a']]),
+ cl = {
+ key: 0,
+ class: 'btn-operate',
+ },
+ ul = { class: 'btn-operate' },
+ Il = { class: 'btn-operate' },
+ dl = {
+ key: 0,
+ class: 'btn-operate',
+ },
+ Ml = {
+ key: 1,
+ class: 'btn-operate',
+ },
+ gl = { class: 'btn-operate' },
+ Nl = {
+ key: 2,
+ class: 'control-wrapper-desktop',
+ },
+ Ll = { class: 'panel-button-area' },
+ Cl = {
+ key: 3,
+ class: 'control-wrapper-desktop',
+ },
+ pl = { class: 'panel-button-area' },
+ Dl = /* @__PURE__ */ V({
+ __name: 'BtnOperate',
+ setup(s) {
+ const A = g(i.getData(o.CALL, a.CALL_ROLE)),
+ e = g(i.getData(o.CALL, a.CALL_MEDIA_TYPE)),
+ l = g(i.getData(o.CALL, a.CALL_STATUS)),
+ n = g(i.getData(o.CALL, a.IS_GROUP)),
+ r = g(i.getData(o.CALL, a.CALL_DURATION)),
+ c = g(i.getData(o.CALL, a.IS_CLICKABLE)),
+ I = !eA.isPC,
+ d = eA.isH5;
+ let M = A.value === J.CALLER;
+ const L = g(e.value === z.AUDIO ? 'black' : 'white'),
+ T = (S) => {
+ (M = S === J.CALLER), (A.value = S);
+ },
+ E = (S) => {
+ n.value = S;
+ },
+ D = (S) => {
+ (e.value = S), (L.value = e.value === z.AUDIO ? 'black' : 'white');
+ },
+ y = (S) => {
+ l.value = S;
+ },
+ j = (S) => {
+ r.value = S;
+ },
+ m = (S) => {
+ c.value = S;
+ };
+ return (
+ K(() => {
+ i.watch(
+ o.CALL,
+ {
+ [a.CALL_ROLE]: T,
+ [a.IS_GROUP]: E,
+ [a.CALL_MEDIA_TYPE]: D,
+ [a.CALL_STATUS]: y,
+ [a.CALL_DURATION]: j,
+ [a.IS_CLICKABLE]: m,
+ },
+ {
+ notifyRangeWhenWatch: a.MYSELF,
+ }
+ );
+ }),
+ H(() => {
+ i.unwatch(o.CALL, {
+ [a.CALL_ROLE]: T,
+ [a.IS_GROUP]: E,
+ [a.CALL_MEDIA_TYPE]: D,
+ [a.CALL_STATUS]: y,
+ [a.CALL_DURATION]: j,
+ [a.IS_CLICKABLE]: m,
+ });
+ }),
+ (S, k) => (
+ u(),
+ N('div', null, [
+ t(l) === t(B).CALLING && I
+ ? (u(),
+ N(
+ 'div',
+ {
+ key: 0,
+ class: R(['control-wrapper-mobile', t(L)]),
+ },
+ [
+ t(e) === t(z).VIDEO && t(M) && !t(d)
+ ? (u(),
+ N('div', cl, [
+ x($A, {
+ class: 'mobile-switchAudioCall',
+ 'is-mobile': I,
+ }),
+ ]))
+ : p('', !0),
+ C('div', ul, [
+ t(M)
+ ? p('', !0)
+ : (u(),
+ h(ZA, {
+ key: 0,
+ class: 'mobile-reject',
+ 'is-mobile': I,
+ })),
+ t(M)
+ ? (u(),
+ h(
+ LA,
+ {
+ key: 1,
+ isGroupCall: t(n),
+ callType: t(e),
+ 'is-mobile': I,
+ isClickable: t(c),
+ },
+ null,
+ 8,
+ ['isGroupCall', 'callType', 'isClickable']
+ ))
+ : p('', !0),
+ t(M) && t(e) === t(z).VIDEO && !t(d)
+ ? (u(),
+ h(De, {
+ key: 2,
+ class: 'mobile-switchcamera',
+ }))
+ : p('', !0),
+ t(M)
+ ? p('', !0)
+ : (u(),
+ h(
+ KA,
+ {
+ key: 3,
+ class: 'mobile-accept',
+ 'is-mobile': I,
+ 'call-type': t(e),
+ },
+ null,
+ 8,
+ ['call-type']
+ )),
+ ]),
+ ],
+ 2
+ ))
+ : p('', !0),
+ t(l) === t(B).CONNECTED && I
+ ? (u(),
+ N(
+ 'div',
+ {
+ key: 1,
+ class: R(['control-wrapper-mobile', t(L)]),
+ },
+ [
+ C('div', Il, [x(ie, { 'call-duration': t(r) }, null, 8, ['call-duration'])]),
+ t(e) === t(z).VIDEO
+ ? (u(),
+ N('div', dl, [
+ x($A, {
+ class: 'mobile-switchAudioCall',
+ 'is-mobile': I,
+ }),
+ ]))
+ : p('', !0),
+ t(e) === t(z).VIDEO
+ ? (u(),
+ N('div', Ml, [
+ x(CA, {
+ class: 'btn',
+ 'is-mobile': I,
+ }),
+ t(d)
+ ? p('', !0)
+ : (u(),
+ h(HA, {
+ key: 0,
+ class: 'btn',
+ })),
+ x(TA, {
+ class: 'btn',
+ 'is-mobile': I,
+ }),
+ ]))
+ : p('', !0),
+ C('div', gl, [
+ t(e) === t(z).AUDIO
+ ? (u(),
+ h(CA, {
+ key: 0,
+ class: 'btn',
+ 'is-mobile': I,
+ }))
+ : p('', !0),
+ x(
+ LA,
+ {
+ class: 'mobile-hangup btn',
+ 'is-mobile': I,
+ isGroupCall: t(n),
+ callType: t(e),
+ isClickable: t(c),
+ },
+ null,
+ 8,
+ ['isGroupCall', 'callType', 'isClickable']
+ ),
+ t(e) === t(z).VIDEO && !t(d)
+ ? (u(),
+ h(De, {
+ key: 1,
+ class: 'btn mobile-switchcamera',
+ }))
+ : p('', !0),
+ t(e) === t(z).AUDIO && !t(d)
+ ? (u(),
+ h(HA, {
+ key: 2,
+ class: 'btn',
+ }))
+ : p('', !0),
+ ]),
+ ],
+ 2
+ ))
+ : p('', !0),
+ t(l) === t(B).CALLING && !I
+ ? (u(),
+ N('div', Nl, [
+ C('div', Ll, [
+ t(e) === t(z).VIDEO
+ ? (u(),
+ h(TA, {
+ key: 0,
+ class: 'btn',
+ 'is-mobile': I,
+ }))
+ : p('', !0),
+ t(M)
+ ? (u(),
+ h(CA, {
+ key: 1,
+ class: 'btn',
+ 'is-mobile': I,
+ }))
+ : p('', !0),
+ t(M)
+ ? p('', !0)
+ : (u(),
+ h(ZA, {
+ key: 2,
+ class: 'btn',
+ 'is-mobile': I,
+ })),
+ t(M)
+ ? p('', !0)
+ : (u(),
+ h(
+ KA,
+ {
+ key: 3,
+ class: 'btn',
+ 'is-mobile': I,
+ 'call-type': t(e),
+ },
+ null,
+ 8,
+ ['call-type']
+ )),
+ t(M)
+ ? (u(),
+ h(
+ LA,
+ {
+ key: 4,
+ class: 'btn',
+ isGroupCall: t(n),
+ callType: t(e),
+ 'is-mobile': I,
+ isClickable: t(c),
+ },
+ null,
+ 8,
+ ['isGroupCall', 'callType', 'isClickable']
+ ))
+ : p('', !0),
+ ]),
+ ]))
+ : p('', !0),
+ t(l) === t(B).CONNECTED && !I
+ ? (u(),
+ N('div', Cl, [
+ C('div', pl, [
+ t(e) === t(z).VIDEO
+ ? (u(),
+ h(TA, {
+ key: 0,
+ class: 'btn',
+ 'is-mobile': I,
+ }))
+ : p('', !0),
+ x(CA, {
+ class: 'btn',
+ 'is-mobile': I,
+ }),
+ t(e) === t(z).VIDEO
+ ? (u(),
+ h($A, {
+ key: 1,
+ class: 'btn',
+ 'is-mobile': I,
+ }))
+ : p('', !0),
+ x(
+ LA,
+ {
+ class: 'btn',
+ 'is-mobile': I,
+ isGroupCall: t(n),
+ callType: t(e),
+ isClickable: t(c),
+ },
+ null,
+ 8,
+ ['isGroupCall', 'callType', 'isClickable']
+ ),
+ ]),
+ ]))
+ : p('', !0),
+ ])
+ )
+ );
+ },
+ });
+const je = /* @__PURE__ */ Q(Dl, [['__scopeId', 'data-v-f4e4b14c']]),
+ Tl =
+ 'data:image/svg+xml;base64,ICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbD0ibm9uZSIgdmlld0JveD0iMCAwIDE2IDE2IiBjbGFzcz0iZGVzaWduLWljb25mb250Ij4KICAgICAgICA8cGF0aAogICAgICAgICAgICBkPSJNMTMuNzMzIDYuOTk5OTZDMTMuNzk5NyA2Ljk5OTk2IDEzLjkzMyA2Ljk5OTk2IDEzLjk5OTcgNi45MzMyOUMxNC4xMzMgNi44NjY2MyAxNC4yNjYzIDYuNzMzMjkgMTQuMzMzIDYuNTk5OTZDMTQuMzk5NyA2LjQ2NjYzIDE0LjM5OTcgNi4yNjY2MyAxNC4zMzMgNi4wNjY2M0MxNC4yNjYzIDUuOTk5OTYgMTQuMjY2MyA1LjkzMzI5IDE0LjE5OTcgNS44NjY2M0wxMC4xOTk3IDEuODY2NjNDOS45MzMwMSAxLjU5OTk2IDkuNTMzMDEgMS41OTk5NiA5LjI2NjM0IDEuODY2NjNDOC45OTk2NyAyLjEzMzI5IDguOTk5NjcgMi41MzMyOSA5LjI2NjM0IDIuNzk5OTZMMTIuMTMzIDUuNjY2NjNIMS45OTk2N0MxLjU5OTY3IDUuNjY2NjMgMS4zMzMwMSA1LjkzMzI5IDEuMzMzMDEgNi4zMzMyOUMxLjMzMzAxIDYuNzMzMjkgMS41OTk2NyA2Ljk5OTk2IDEuOTk5NjcgNi45OTk5NkgxMy43MzNaTTEzLjk5OTcgOC45OTk5NkgyLjI2NjM0QzIuMTk5NjcgOC45OTk5NiAyLjA2NjM0IDguOTk5OTYgMS45OTk2NyA5LjA2NjYzQzEuODY2MzQgOS4xMzMyOSAxLjczMzAxIDkuMjY2NjMgMS42NjYzNCA5LjM5OTk2QzEuNTk5NjcgOS41MzMyOSAxLjU5OTY3IDkuNzMzMjkgMS42NjYzNCA5LjkzMzI5QzEuNzMzMDEgOS45OTk5NiAxLjczMzAxIDEwLjA2NjYgMS43OTk2NyAxMC4xMzMzTDUuNzk5NjcgMTQuMTMzM0M1LjkzMzAxIDE0LjI2NjYgNi4xMzMwMSAxNC4zMzMzIDYuMjY2MzQgMTQuMzMzM0M2LjM5OTY3IDE0LjMzMzMgNi41OTk2NyAxNC4yNjY2IDYuNzMzMDEgMTQuMTMzM0M2Ljk5OTY3IDEzLjg2NjYgNi45OTk2NyAxMy40NjY2IDYuNzMzMDEgMTMuMkwzLjg2NjM0IDEwLjMzMzNIMTMuOTk5N0MxNC4zOTk3IDEwLjMzMzMgMTQuNjY2MyAxMC4wNjY2IDE0LjY2NjMgOS42NjY2M0MxNC42NjYzIDkuMjY2NjMgMTQuMzk5NyA4Ljk5OTk2IDEzLjk5OTcgOC45OTk5NloiCiAgICAgICAgICAgIGZpbGw9IiNmZmYiIC8+CiAgICA8L3N2Zz4=',
+ yl = { class: 'streamBox' },
+ El = ['id'],
+ Sl = {
+ key: 1,
+ class: 'callDuration-text',
+ },
+ vl = {
+ key: 0,
+ class: 'tag',
+ },
+ hl = { class: 'microphone-icon-container' },
+ jl = { class: 'stream-userInfo' },
+ fl = ['id'],
+ Ul = { class: 'tag' },
+ zl = { class: 'microphone-icon-container' },
+ ml = { class: 'stream-userInfo' },
+ Ol = { class: 'screenImg' },
+ wl = ['src'],
+ bl = /* @__PURE__ */ V({
+ __name: 'PusherPlayer',
+ setup(s) {
+ const A = g(i.getData(o.CALL, a.CALL_MEDIA_TYPE)),
+ e = g(i.getData(o.CALL, a.CALL_STATUS)),
+ l = g('largeView'),
+ n = g('smallView'),
+ r = g(!0),
+ c = g(i.getData(o.CALL, a.REMOTE_USER_INFO_LIST)),
+ I = g(i.getData(o.CALL, a.LOCAL_USER_INFO)),
+ d = g(i.getData(o.CALL, a.CALL_DURATION));
+ g(!1);
+ const M = g(!1),
+ L = g(!1),
+ T = !eA.isPC,
+ E = _(() => e.value === B.CONNECTED && c.value.length !== 0 && A.value === z.VIDEO),
+ D = (G) => {
+ I.value = G;
+ },
+ y = (G) => {
+ var Y;
+ (L.value = (Y = G[0]) == null ? void 0 : Y.isEnter), (c.value = G);
+ },
+ j = (G) => {
+ e.value = G;
+ },
+ m = (G) => {
+ A.value = G;
+ },
+ S = (G) => {
+ M.value = G;
+ },
+ k = () => {
+ A.value === z.AUDIO || !M.value || w.toggleMinimize();
+ },
+ U = (G) => {
+ d.value = G;
+ },
+ q = (G) => {
+ G &&
+ (G === 'localVideo'
+ ? ((l.value = 'largeView'), (n.value = 'smallView'), (r.value = !0))
+ : ((n.value = 'largeView'), (l.value = 'smallView'), (r.value = !1)));
+ },
+ v = {
+ [a.IS_MINIMIZED]: S,
+ [a.LOCAL_USER_INFO]: D,
+ [a.REMOTE_USER_INFO_LIST]: y,
+ [a.CALL_STATUS]: j,
+ [a.CALL_MEDIA_TYPE]: m,
+ [a.CALL_DURATION]: U,
+ [a.BIG_SCREEN_USER_ID]: q,
+ };
+ K(() => {
+ i.watch(o.CALL, v, {
+ notifyRangeWhenWatch: a.MYSELF,
+ });
+ }),
+ H(() => {
+ i.unwatch(o.CALL, v);
+ });
+ const O = (G, Y) => {
+ e.value !== B.CONNECTED || (T && Y === 'largeView') || w.switchScreen(G);
+ };
+ return (G, Y) => (
+ u(),
+ N('div', yl, [
+ T
+ ? yA(
+ (u(),
+ N(
+ 'div',
+ {
+ key: 0,
+ class: 'streamBox-mobile',
+ onClick: k,
+ },
+ [
+ C(
+ 'div',
+ {
+ id: 'localVideo',
+ class: R(t(l)),
+ onClick: Y[0] || (Y[0] = (f) => O(t(r) ? t(c)[0].domId : 'localVideo', t(l))),
+ },
+ null,
+ 2
+ ),
+ t(c).length !== 0
+ ? (u(),
+ N(
+ 'div',
+ {
+ key: 0,
+ id: t(c)[0].domId,
+ class: R(t(n)),
+ onClick: Y[1] || (Y[1] = (f) => O(t(r) ? t(c)[0].domId : 'localVideo', t(n))),
+ },
+ null,
+ 10,
+ El
+ ))
+ : p('', !0),
+ t(M) ? (u(), N('div', Sl, b(t(e) !== t(B).CONNECTED ? t(X)('waiting') : t(d)), 1)) : p('', !0),
+ ],
+ 512
+ )),
+ [[EA, t(A) === t(z).VIDEO]]
+ )
+ : p('', !0),
+ T
+ ? p('', !0)
+ : yA(
+ (u(),
+ N(
+ 'div',
+ {
+ key: 1,
+ class: R(['streamBox-deskTop', t(I).isVideoAvailable ? 'streamDisplay' : '']),
+ },
+ [
+ C(
+ 'div',
+ {
+ id: 'localVideo',
+ class: R(t(l)),
+ },
+ [
+ t(e) === t(B).CONNECTED
+ ? (u(),
+ N('span', vl, [
+ C('div', hl, [
+ t(I).isAudioAvailable
+ ? (u(),
+ h(
+ SA,
+ {
+ key: 0,
+ volume: t(I).volume,
+ },
+ null,
+ 8,
+ ['volume']
+ ))
+ : (u(), h(vA, { key: 1 })),
+ ]),
+ C('div', jl, b(`${t(I).displayUserInfo} ${t(X)('me')}`), 1),
+ ]))
+ : p('', !0),
+ ],
+ 2
+ ),
+ t(L)
+ ? (u(),
+ N(
+ 'div',
+ {
+ key: 0,
+ class: R(t(n)),
+ },
+ [
+ C(
+ 'div',
+ {
+ id: t(c)[0].domId,
+ class: 'remoteListBox',
+ },
+ [
+ C('span', Ul, [
+ C('div', zl, [
+ t(c)[0].isAudioAvailable
+ ? (u(),
+ h(
+ SA,
+ {
+ key: 0,
+ volume: t(c)[0].volume,
+ },
+ null,
+ 8,
+ ['volume']
+ ))
+ : (u(), h(vA, { key: 1 })),
+ ]),
+ C('div', ml, b(t(c)[0].displayUserInfo), 1),
+ ]),
+ ],
+ 8,
+ fl
+ ),
+ ],
+ 2
+ ))
+ : p('', !0),
+ t(E)
+ ? (u(),
+ N(
+ 'div',
+ {
+ key: 1,
+ class: 'switchScreenBox',
+ onClick: Y[2] || (Y[2] = (f) => O(t(r) ? t(c)[0].domId : 'localVideo')),
+ },
+ [C('div', Ol, [C('img', { src: t(Tl) }, null, 8, wl)])]
+ ))
+ : p('', !0),
+ ],
+ 2
+ )),
+ [[EA, t(A) === t(z).VIDEO]]
+ ),
+ ])
+ );
+ },
+ });
+const fe = /* @__PURE__ */ Q(bl, [['__scopeId', 'data-v-0e391dc0']]),
+ Vl = /* @__PURE__ */ V({
+ __name: 'Pusher',
+ props: {
+ localClass: {
+ type: String,
+ required: !0,
+ },
+ currentLocalScreen: {
+ type: Boolean,
+ required: !0,
+ },
+ },
+ emits: ['toggleViewSize'],
+ setup(s, { emit: A }) {
+ const e = g(i.getData(o.CALL, a.PUSHER)),
+ l = g(i.getData(o.CALL, a.CALL_STATUS)),
+ n = s,
+ r = (D, y) => {
+ l.value !== B.CONNECTED || n.localClass === 'large-view' || w.switchScreen(n.currentLocalScreen ? 'player' : 'localVideo');
+ },
+ c = (D) => {
+ e.value = Object.assign({}, e.value, D);
+ },
+ I = (D) => {
+ l.value = D;
+ },
+ d = {
+ [a.PUSHER]: c,
+ [a.CALL_STATUS]: I,
+ };
+ K(() => {
+ i.watch(o.CALL, d, { notifyRangeWhenWatch: a.MYSELF });
+ }),
+ H(() => {
+ i.unwatch(o.CALL, d);
+ });
+ function M(D) {
+ w._tuiCallEngine._pusherStateChangeHandler(D);
+ }
+ function L(D) {
+ w._tuiCallEngine._pusherNetStatus(D);
+ }
+ function T(D) {
+ w._tuiCallEngine._pusherNetStatus(D);
+ }
+ function E(D) {
+ w._tuiCallEngine._pusherAudioVolumeNotify(D);
+ }
+ return (D, y) => {
+ const j = WA('live-pusher');
+ return (
+ u(),
+ N(
+ 'div',
+ {
+ class: R(s.localClass),
+ },
+ [
+ C(
+ 'div',
+ {
+ onClick: r,
+ class: 'stream-box',
+ },
+ [
+ x(
+ j,
+ {
+ class: 'stream',
+ url: t(e).url,
+ mode: t(e).mode,
+ autopush: !0,
+ 'enable-camera': t(e).enableCamera,
+ 'enable-mic': !0,
+ muted: !t(e).enableMic,
+ 'enable-agc': !0,
+ 'enable-ans': !0,
+ 'enable-ear-monitor': t(e).enableEarMonitor,
+ 'auto-focus': 'false',
+ zoom: t(e).enableZoom,
+ 'min-bitrate': t(e).minBitrate,
+ 'max-bitrate': t(e).maxBitrate,
+ 'video-width': t(e).videoWidth,
+ 'video-height': t(e).videoHeight,
+ beauty: t(e).beautyLevel,
+ whiteness: t(e).whitenessLevel,
+ orientation: t(e).videoOrientation,
+ aspect: t(e).videoAspect,
+ 'device-position': t(e).frontCamera,
+ 'remote-mirror': t(e).enableRemoteMirror,
+ 'local-mirror': t(e).localMirror,
+ 'background-mute': t(e).enableBackgroundMute,
+ 'audio-quality': t(e).audioQuality,
+ 'audio-volume-type': t(e).audioVolumeType,
+ 'audio-reverb-type': t(e).audioReverbType,
+ 'waiting-img': t(e).waitingImage,
+ 'beauty-style': t(e).beautyStyle,
+ filter: t(e).filter,
+ onStatechange: M,
+ onNetstatus: L,
+ onError: T,
+ onAudiovolumenotify: E,
+ },
+ null,
+ 8,
+ [
+ 'url',
+ 'mode',
+ 'enable-camera',
+ 'muted',
+ 'enable-ear-monitor',
+ 'zoom',
+ 'min-bitrate',
+ 'max-bitrate',
+ 'video-width',
+ 'video-height',
+ 'beauty',
+ 'whiteness',
+ 'orientation',
+ 'aspect',
+ 'device-position',
+ 'remote-mirror',
+ 'local-mirror',
+ 'background-mute',
+ 'audio-quality',
+ 'audio-volume-type',
+ 'audio-reverb-type',
+ 'waiting-img',
+ 'beauty-style',
+ 'filter',
+ ]
+ ),
+ ]
+ ),
+ ],
+ 2
+ )
+ );
+ };
+ },
+ });
+const Pl = /* @__PURE__ */ Q(Vl, [['__scopeId', 'data-v-ba28a885']]),
+ Bl = /* @__PURE__ */ V({
+ __name: 'Player',
+ props: {
+ remoteClass: {
+ type: String,
+ required: !0,
+ },
+ currentLocalScreen: {
+ type: Boolean,
+ required: !0,
+ },
+ },
+ setup(s) {
+ const A = g(i.getData(o.CALL, a.PLAYER)),
+ e = g(i.getData(o.CALL, a.CALL_STATUS)),
+ l = g(i.getData(o.CALL, a.IS_EAR_PHONE) ? IA.EAR : IA.SPEAKER),
+ n = s,
+ r = (y) => {
+ A.value = Object.assign({}, A.value, y);
+ },
+ c = (y) => {
+ e.value = y;
+ },
+ I = (y) => {
+ l.value = y ? IA.EAR : IA.SPEAKER;
+ },
+ d = {
+ [a.PLAYER]: r,
+ [a.CALL_STATUS]: c,
+ [a.IS_EAR_PHONE]: I,
+ };
+ K(() => {
+ i.watch(o.CALL, d, { notifyRangeWhenWatch: a.MYSELF });
+ }),
+ H(() => {
+ i.unwatch(o.CALL, d);
+ });
+ const M = (y, j) => {
+ e.value !== B.CONNECTED || n.remoteClass === 'large-view' || w.switchScreen(n.currentLocalScreen ? 'player' : 'localVideo');
+ };
+ function L(y) {
+ w._tuiCallEngine._playerStateChange(y);
+ }
+ function T(y) {}
+ function E(y) {
+ w._tuiCallEngine._playNetStatus(y);
+ }
+ function D(y) {
+ w._tuiCallEngine._playerAudioVolumeNotify(y);
+ }
+ return (y, j) => {
+ const m = WA('live-player');
+ return (
+ u(),
+ N(
+ 'div',
+ {
+ class: R(s.remoteClass),
+ },
+ [
+ (u(!0),
+ N(
+ iA,
+ null,
+ uA(
+ t(A),
+ (S, k) => (
+ u(),
+ N(
+ 'div',
+ {
+ key: k,
+ onClick: M,
+ class: 'stream-box',
+ },
+ [
+ S.hasAudio || S.hasVideo
+ ? (u(),
+ h(
+ m,
+ {
+ key: 0,
+ class: 'stream',
+ id: S.id,
+ 'data-userid': S.userID,
+ 'data-streamid': S.streamID,
+ 'data-streamtype': S.streamType,
+ src: S.src,
+ mode: 'RTC',
+ autoplay: S.autoplay,
+ 'mute-audio': S.muteAudio,
+ 'mute-video': S.muteVideo,
+ orientation: S.orientation,
+ 'object-fit': S.objectFit,
+ 'background-mute': S.enableBackgroundMute,
+ 'min-cache': S.minCache,
+ 'max-cache': S.maxCache,
+ 'sound-mode': t(l),
+ 'enable-recv-message': S.enableRecvMessage,
+ 'auto-pause-if-navigate': S.autoPauseIfNavigate,
+ 'auto-pause-if-open-native': S.autoPauseIfOpenNative,
+ onStatechange: L,
+ onFullscreenchange: T,
+ onNetstatus: E,
+ onAudiovolumenotify: D,
+ },
+ null,
+ 8,
+ [
+ 'id',
+ 'data-userid',
+ 'data-streamid',
+ 'data-streamtype',
+ 'src',
+ 'autoplay',
+ 'mute-audio',
+ 'mute-video',
+ 'orientation',
+ 'object-fit',
+ 'background-mute',
+ 'min-cache',
+ 'max-cache',
+ 'sound-mode',
+ 'enable-recv-message',
+ 'auto-pause-if-navigate',
+ 'auto-pause-if-open-native',
+ ]
+ ))
+ : p('', !0),
+ ]
+ )
+ )
+ ),
+ 128
+ )),
+ ],
+ 2
+ )
+ );
+ };
+ },
+ });
+const ql = /* @__PURE__ */ Q(Bl, [['__scopeId', 'data-v-9c668a74']]),
+ Rl = {
+ key: 1,
+ class: 'callDuration-text',
+ },
+ xl = /* @__PURE__ */ V({
+ __name: 'WeChatStream',
+ setup(s) {
+ const A = g('large-view'),
+ e = g('small-view'),
+ l = g(!0),
+ n = g(i.getData(o.CALL, a.CALL_MEDIA_TYPE)),
+ r = g(i.getData(o.CALL, a.CALL_STATUS)),
+ c = g(i.getData(o.CALL, a.CALL_DURATION)),
+ I = g(!1),
+ d = (j) => {
+ n.value = j;
+ },
+ M = (j) => {
+ I.value = j;
+ },
+ L = () => {
+ n.value === z.AUDIO || !I.value || w.toggleMinimize();
+ },
+ T = (j) => {
+ r.value = j;
+ },
+ E = (j) => {
+ c.value = j;
+ },
+ D = (j) => {
+ j &&
+ (j === 'localVideo'
+ ? ((A.value = 'large-view'), (e.value = 'small-view'), (l.value = !0))
+ : ((e.value = 'large-view'), (A.value = 'small-view'), (l.value = !1)));
+ },
+ y = {
+ [a.CALL_MEDIA_TYPE]: d,
+ [a.IS_MINIMIZED]: M,
+ [a.CALL_STATUS]: T,
+ [a.CALL_DURATION]: E,
+ [a.BIG_SCREEN_USER_ID]: D,
+ };
+ return (
+ K(function () {
+ i.watch(o.CALL, y, {
+ notifyRangeWhenWatch: a.MYSELF,
+ });
+ }),
+ H(() => {
+ i.unwatch(o.CALL, y);
+ }),
+ (j, m) =>
+ yA(
+ (u(),
+ N(
+ 'div',
+ {
+ onClick: L,
+ class: 'streamBox-mobile',
+ },
+ [
+ x(
+ Pl,
+ {
+ localClass: t(A),
+ currentLocalScreen: t(l),
+ },
+ null,
+ 8,
+ ['localClass', 'currentLocalScreen']
+ ),
+ t(r) === t(B).CONNECTED
+ ? (u(),
+ h(
+ ql,
+ {
+ key: 0,
+ remoteClass: t(e),
+ currentLocalScreen: t(l),
+ },
+ null,
+ 8,
+ ['remoteClass', 'currentLocalScreen']
+ ))
+ : p('', !0),
+ t(I) ? (u(), N('div', Rl, b(t(r) !== t(B).CONNECTED ? t(X)('waiting') : t(c)), 1)) : p('', !0),
+ ],
+ 512
+ )),
+ [[EA, t(n) === t(z).VIDEO]]
+ )
+ );
+ },
+ });
+const Ql = /* @__PURE__ */ Q(xl, [['__scopeId', 'data-v-9f380d5c']]),
+ Gl =
+ 'data:image/svg+xml;base64,IDxzdmcgd2lkdGg9IjI2IiBoZWlnaHQ9IjI2IiB2aWV3Qm94PSIwIDAgMjYgMjYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgICAgICAgPHBhdGggZD0iTTE4LjQ0MzcgMTIuNDQ5QzE4LjQ0MzcgMTQuMTE0MiAxOC4yMzM2IDE1LjM1MTUgMjEuNTA4OSAxNS43MTI2QzI0Ljc4NzUgMTYuMDczNyAyNC4zNjY2IDEzLjY3OTQgMjQuMzY2MiAxMi4wNjY5QzI0LjM2NDkgMTAuMjA2MSAyMC4wNjAyIDcuNjE4OTUgMTMuMjcyNiA3LjYxNzNDNi40ODY2MiA3LjYxNzM1IDIuMTc4OSAxMC4yMDUgMi4xNzg4OCAxMi4wNjdDMi4xNzg4NyAxMy42OCAxLjc1NjIxIDE2LjA3MjYgNS4wMzMxNSAxNS43MTIzQzguMzEwMDkgMTUuMzUzNyA4LjEwMDA1IDE0LjExNTUgOC4wOTgzNyAxMi40NDk1QzguMTAxMzQgMTEuMjg2MiAxMC43NTg3IDExLjAzMTYgMTMuMjcyNSAxMS4wMjk4QzE1Ljc4NjMgMTEuMDI4MSAxOC40NDU0IDExLjI4NDQgMTguNDQzNyAxMi40NDlaIiBmaWxsPSIjRkUzQzQ0Ii8+CiAgICA8L3N2Zz4=',
+ kl =
+ 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik02LjY2NjY2IDQuMTY2NjhDNi42NjY2NiAyLjMyODM0IDguMTYxNjYgMC44MzMzNDQgOS45OTk5OSAwLjgzMzM0NEMxMS44MzgzIDAuODMzMzQ0IDEzLjMzMzMgMi4zMjgzNCAxMy4zMzMzIDQuMTY2NjhWOS4xNjY2OEMxMy4zMzMzIDExLjAwNSAxMS44MzgzIDEyLjUgOS45OTk5OSAxMi41QzguMTYxNjYgMTIuNSA2LjY2NjY2IDExLjAwNSA2LjY2NjY2IDkuMTY2NjhWNC4xNjY2OFpNNi42NjY2NiAxOC4zMzMzQzYuNjY2NjYgMTcuODcyNSA3LjAzOTk5IDE3LjUgNy40OTk5OSAxNy41SDEyLjVDMTIuOTYwOCAxNy41IDEzLjMzMzMgMTcuODcyNSAxMy4zMzMzIDE4LjMzMzNDMTMuMzMzMyAxOC43OTQyIDEyLjk2MDggMTkuMTY2NyAxMi41IDE5LjE2NjdINy40OTk5OUM3LjAzOTk5IDE5LjE2NjcgNi42NjY2NiAxOC43OTQyIDYuNjY2NjYgMTguMzMzM1oiIGZpbGw9IiMxMDE0MTkiLz4KPHBhdGggZD0iTTE1LjgzMzMgOC4zNTEyVjkuNTA4MjVDMTUuODMzMyAxMi4wODEgMTMuMjIxNyAxNSA5Ljk5OTk5IDE1QzYuNzc4MzMgMTUgNC4xNjY2NiAxMi4wODEgNC4xNjY2NiA5LjUwODI1VjguMzMzMzQiIHN0cm9rZT0iIzEwMTQxOSIgc3Ryb2tlLXdpZHRoPSIxLjY2NjY3IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPC9zdmc+',
+ Xl =
+ 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAxNSAyMSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNC42MjQ3IDAuNzE5MTY4QzE0LjE5MzQgMC4zNzQxNTggMTMuNTY0MSAwLjQ0NDA4IDEzLjIxOTEgMC44NzUzNDJMMTAuODE2OCAzLjgzMjAzQzEwLjE3ODkgMy4wMjQ1NSA5LjE1Mzg3IDIuNTAwMDQgOC4wMDAwMSAyLjUwMDA0QzYuMDY5NzYgMi41MDAwNCA0LjUwMDAxIDMuOTY3ODUgNC41MDAwMSA1Ljc3Mjc2VjEwLjY4MTlDNC41MDAwMSAxMC45NTYzIDQuNTM2MyAxMS4yMjI5IDQuNjA0NjMgMTEuNDc3OEwzLjM4OCAxMi45NzUyQzIuOTg0NDkgMTIuMzQzMyAyLjc1MDAxIDExLjY1MjIgMi43NTAwMSAxMC45NzE3VjkuODE4MTlMMi43NDMxOSA5LjcxNTU2QzIuNjg5MiA5LjMxMjEzIDIuMzIxMDggOS4wMDAwMSAxLjg3NTAxIDkuMDAwMDFDMS4zOTE3NiA5LjAwMDAxIDEuMDAwMDEgOS4zNjYzMiAxLjAwMDAxIDkuODE4MTlWMTAuOTcxN0wxLjAwNDY2IDExLjE3NjFDMS4wNTU1NyAxMi4yOTY4IDEuNTIxNjEgMTMuNDAxNiAyLjI2OTM5IDE0LjM1MTlMMC4yMTkxMzcgMTYuODc1M0wwLjE0Njg2MSAxNi45NzgyQy0wLjExMjk3NyAxNy40MDE3IC0wLjAyMjc3NjcgMTcuOTYyNCAwLjM3NTMxMSAxOC4yODA5QzAuODA2NTczIDE4LjYyNTkgMS40MzU4NyAxOC41NTYgMS43ODA4OCAxOC4xMjQ3TDMuNzE2NjEgMTUuNzQyM0MzLjcxODQ5IDE1Ljc0MzcgMy43MjAzOCAxNS43NDUgMy43MjIyNyAxNS43NDY0TDQuMjk5NyAxNS4wMjQ2TDguMjgwODggMTAuMTI0N0wxNC43ODA5IDIuMTI0NzNMMTQuODUzMiAyLjAyMTkxQzE1LjExMyAxLjU5ODM0IDE1LjAyMjggMS4wMzc2NCAxNC42MjQ3IDAuNzE5MTY4Wk03LjcyNDk5IDEzLjk0NDZMMTEuNSA5LjIyNTgyVjEwLjY4MTlDMTEuNSAxMi40ODY4IDkuOTMwMjYgMTMuOTU0NiA4LjAwMDAxIDEzLjk1NDZDNy45MDc0NiAxMy45NTQ2IDcuODE1NzUgMTMuOTUxMiA3LjcyNDk5IDEzLjk0NDZaTTYuNjA0NDUgMTUuMzQ1M0w1LjUwNzk4IDE2LjcxNTlDNi4yOTIyNSAxNy4wMTM2IDcuMTM1MzIgMTcuMTgxOCA4LjAwMDAxIDE3LjE4MThDMTEuNjk3NiAxNy4xODE4IDE1IDE0LjEwNjQgMTUgMTAuOTcxN1Y5LjgzNTcyTDE0Ljk5MzIgOS43MzMwOUMxNC45MzkyIDkuMzI5NjYgMTQuNTcxMSA5LjAxNzU0IDE0LjEyNSA5LjAxNzU0QzEzLjY0MTggOS4wMTc1NCAxMy4yNSA5LjM4Mzg1IDEzLjI1IDkuODM1NzJWMTAuOTcxN0wxMy4yNDQ1IDExLjE1MjdDMTMuMTEzOCAxMy4zMjYyIDEwLjY1ODkgMTUuNTQ1NSA4LjAwMDAxIDE1LjU0NTVDNy41MjQyNCAxNS41NDU1IDcuMDU1MDEgMTUuNDc0NCA2LjYwNDQ1IDE1LjM0NTNaTTUuMzc1MDEgMTguODYzN0M0Ljg5MjAxIDE4Ljg2MzcgNC41MDAwMSAxOS4yMjk0IDQuNTAwMDEgMTkuNjgxOUM0LjUwMDAxIDIwLjEzNDMgNC44OTIwMSAyMC41IDUuMzc1MDEgMjAuNUgxMC42MjVDMTEuMTA4OSAyMC41IDExLjUgMjAuMTM0MyAxMS41IDE5LjY4MTlDMTEuNSAxOS4yMjk0IDExLjEwODkgMTguODYzNyAxMC42MjUgMTguODYzN0g1LjM3NTAxWiIgZmlsbD0iIzEwMTQxOSIvPgo8L3N2Zz4=',
+ Wl =
+ 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yLjMzMzM3IDkuMzMzMzFIMC4zMzMzNzRWMC45OTk5OEMwLjMzMzM3NCAwLjYzMTc5IDAuNjMxODUxIDAuMzMzMzEzIDEuMDAwMDQgMC4zMzMzMTNMOS4zMzMzOCAwLjMzMzMxM1YyLjMzMzMxSDMuNzQ3NThMMTAuMDQwNSA4LjYyNjI0TDguNjI2MjcgMTAuMDQwNEwyLjMzMzM3IDMuNzQ3NTNWOS4zMzMzMVpNMTguMzMzMSAxMS4zMzMzSDIwLjMzMzFWMTkuNjY2NkMyMC4zMzMxIDIwLjAzNDggMjAuMDM0NyAyMC4zMzMzIDE5LjY2NjUgMjAuMzMzM0wxMS4zMzMxIDIwLjMzMzNMMTEuMzMzMSAxOC4zMzMzSDE2LjkxODlMMTAuNjI2IDEyLjA0MDNMMTIuMDQwMiAxMC42MjYxTDE4LjMzMzEgMTYuOTE5VjExLjMzMzNaIiBmaWxsPSIjMTAxNDE5Ii8+Cjwvc3ZnPg==',
+ Fl = { class: 'float-control-panel' },
+ Yl = { class: 'float-control-item-icon' },
+ Kl = ['src'],
+ Zl = { class: 'float-control-item-icon' },
+ Hl = ['src'],
+ Jl = ['src'],
+ _l = { class: 'float-control-item-icon' },
+ $l = ['src'],
+ As = /* @__PURE__ */ V({
+ __name: 'FloatWindow',
+ props: {
+ localUserInfo: {
+ type: Object,
+ required: !0,
+ },
+ callStatus: {
+ type: String,
+ required: !0,
+ },
+ callRole: {
+ type: String,
+ required: !0,
+ },
+ },
+ emits: ['closeFloatWindow'],
+ setup(s, { emit: A }) {
+ const e = A,
+ l = g(!0),
+ n = s;
+ function r() {
+ e('closeFloatWindow');
+ }
+ async function c() {
+ n.callRole === J.CALLEE && n.callStatus === B.CALLING ? await w.reject() : await w.hangup();
+ }
+ async function I() {
+ l.value ? (await w.closeMicrophone(), (l.value = !1)) : (await w.openMicrophone(), (l.value = !0));
+ }
+ return (d, M) => (
+ u(),
+ N('div', Fl, [
+ C('div', Yl, [
+ C(
+ 'div',
+ {
+ class: 'float-control-item-icon-container',
+ onClick: c,
+ },
+ [C('img', { src: t(Gl) }, null, 8, Kl)]
+ ),
+ ]),
+ C('div', Zl, [
+ C(
+ 'div',
+ {
+ class: 'float-control-item-icon-container',
+ onClick: I,
+ },
+ [
+ s.localUserInfo.isAudioAvailable
+ ? (u(),
+ N(
+ 'img',
+ {
+ key: 0,
+ src: t(kl),
+ },
+ null,
+ 8,
+ Hl
+ ))
+ : (u(),
+ N(
+ 'img',
+ {
+ key: 1,
+ src: t(Xl),
+ },
+ null,
+ 8,
+ Jl
+ )),
+ ]
+ ),
+ ]),
+ C('div', _l, [
+ C(
+ 'div',
+ {
+ class: 'float-control-item-icon-container',
+ onClick: r,
+ },
+ [C('img', { src: t(Wl) }, null, 8, $l)]
+ ),
+ ]),
+ ])
+ );
+ },
+ });
+const es = /* @__PURE__ */ Q(As, [['__scopeId', 'data-v-1c12e806']]),
+ ts =
+ 'data:image/svg+xml;base64,PHN2ZyB0PSIxNjk1MzcwNTk5Mjk2IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjEwMDg1IiBkYXRhLXNwbS1hbmNob3ItaWQ9ImEzMTN4LnNlYXJjaF9pbmRleC4wLmkwLjVhNmUzYTgxUGJab1dOIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTEwMDUuODI0IDg2OC40MzczMzNhODgzLjAyOTMzMyA4ODMuMDI5MzMzIDAgMCAxLTU5MS4wMTg2NjctMjU4LjgxNkE4ODMuMDI5MzMzIDg4My4wMjkzMzMgMCAwIDEgMTU1LjgxODY2NyAxNi43MjUzMzNhNzUuMDkzMzMzIDc1LjA5MzMzMyAwIDAgMC02Mi42MzQ2NjcgMjEuMjQ4TDUyLjczNiA3OC40MjEzMzNjLTQ0LjM3MzMzMyA0NC4zNzMzMzMtNjIuMjkzMzMzIDEwOC43MTQ2NjctNDcuNDQ1MzMzIDE2OS44MTMzMzRBMTA0My43OTczMzMgMTA0My43OTczMzMgMCAwIDAgMjI1LjI4IDY3OC45MTJsMTIwLjMyIDEyMC4yMzQ2NjdhMTA0NC40OCAxMDQ0LjQ4IDAgMCAwIDQyNi44MzczMzMgMjE5LjA1MDY2NiAxNzkuNjI2NjY3IDE3OS42MjY2NjcgMCAwIDAgMTcwLjI0LTQ3LjQ0NTMzM2w0MS43MjgtNDEuNzI4YTc0Ljc1MiA3NC43NTIgMCAwIDAgMjEuNDE4NjY3LTYwLjU4NjY2N3oiIGZpbGw9IiM0M0M0OTEiIHAtaWQ9IjEwMDg2Ij48L3BhdGg+PHBhdGggZD0iTTI0MS45MiA0MjAuODY0TDU3LjI1ODY2NyA3My44OTg2NjdsNTguMDI2NjY2LTU4LjAyNjY2N2MyMC40OC0yMC40OCA1My44NDUzMzMtMjAuNDggNzQuMzI1MzM0IDBsMTkxLjU3MzMzMyAxOTEuNTczMzMzYzIwLjQ4IDIwLjQ4IDIwLjQ4IDUzLjg0NTMzMyAwIDc0LjI0TDI0MS45MiA0MjAuOTQ5MzMzeiBtMzU5LjUwOTMzMyAzNTkuNTk0NjY3bDM0Ny4wNTA2NjcgMTg0LjQ5MDY2NiA1OC4wMjY2NjctNTguMDI2NjY2YTUyLjczNiA1Mi43MzYgMCAwIDAgMC03NC4yNEw4MTQuOTMzMzMzIDY0MS4xMDkzMzNhNTIuNzM2IDUyLjczNiAwIDAgMC03NC4yNCAwTDYwMS4zNDQgNzgwLjQ1ODY2N3oiIGZpbGw9IiM0M0M0OTEiIHAtaWQ9IjEwMDg3Ij48L3BhdGg+PC9zdmc+',
+ as = ['src'],
+ ls = { class: 'phone-text' },
+ ss = /* @__PURE__ */ V({
+ __name: 'FloatWindow',
+ setup(s) {
+ const A = g(i.getData(o.CALL, a.CALL_STATUS)),
+ e = g(i.getData(o.CALL, a.CALL_DURATION));
+ function l() {
+ w.toggleMinimize();
+ }
+ K(() => {
+ i.watch(
+ o.CALL,
+ {
+ [a.CALL_STATUS]: n,
+ [a.CALL_DURATION]: r,
+ },
+ {
+ notifyRangeWhenWatch: a.MYSELF,
+ }
+ );
+ }),
+ H(() => {
+ i.unwatch(o.CALL, {
+ [a.CALL_STATUS]: n,
+ [a.CALL_DURATION]: r,
+ });
+ });
+ const n = (c) => {
+ A.value = c;
+ },
+ r = (c) => {
+ e.value = c;
+ };
+ return (c, I) => (
+ u(),
+ N(
+ 'div',
+ {
+ class: 'phone-box',
+ onClick: l,
+ },
+ [
+ C(
+ 'img',
+ {
+ class: 'phone-img',
+ src: t(ts),
+ },
+ null,
+ 8,
+ as
+ ),
+ C('div', ls, b(t(A) !== t(B).CONNECTED ? t(X)('waiting') : t(e)), 1),
+ ]
+ )
+ );
+ },
+ });
+const ns = /* @__PURE__ */ Q(ss, [['__scopeId', 'data-v-65da9f94']]),
+ is =
+ 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxyZWN0IHg9IjAuNzY5MjMxIiB5PSIwLjc2OTIzMSIgd2lkdGg9IjE4LjQ2MTUiIGhlaWdodD0iMTguNDYxNSIgcng9IjAuNzY5MjMxIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjEuNTM4NDYiLz4KICAgIDxwYXRoIGQ9Ik0xMS41Mzg1IDEyLjMwNzdDMTEuNTM4NSAxMS44ODI5IDExLjg4MjkgMTEuNTM4NSAxMi4zMDc3IDExLjUzODVIMTkuMjMwOFYxOC40NjE1QzE5LjIzMDggMTguODg2NCAxOC44ODY0IDE5LjIzMDggMTguNDYxNiAxOS4yMzA4SDExLjUzODVWMTIuMzA3N1oiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMS41Mzg0NiIvPgogICAgPHBhdGggZD0iTTAuNzY5Mjg3IDAuNzY5MjI2TDguOTcyMyA4LjkyNDEyIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjEuNTM4NDYiLz4KICAgIDxwYXRoIGQ9Ik05LjQ5NjcgNC43MTcxNlY5LjQ0ODZINC43NDE0NiIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIxLjUzODQ2IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KICA8L3N2Zz4=',
+ os =
+ 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00LjY2NjgzIDkuMzMzMzdIMy4zMzM1VjQuMDAwMDRDMy4zMzM1IDMuNjMxODUgMy42MzE5NyAzLjMzMzM3IDQuMDAwMTYgMy4zMzMzN0w5LjMzMzUgMy4zMzMzN1Y0LjY2NjcxSDUuNjA5NjNMOS44MDQ5IDguODYxOTlMOC44NjIwOSA5LjgwNDhMNC42NjY4MyA1LjYwOTUyVjkuMzMzMzdaTTE1LjMzMzMgMTAuNjY2N0gxNi42NjY3VjE2QzE2LjY2NjcgMTYuMzY4MiAxNi4zNjgyIDE2LjY2NjcgMTYgMTYuNjY2N0wxMC42NjY3IDE2LjY2NjdMMTAuNjY2NyAxNS4zMzMzSDE0LjM5MDVMMTAuMTk1MyAxMS4xMzhMMTEuMTM4MSAxMC4xOTUyTDE1LjMzMzMgMTQuMzkwNVYxMC42NjY3WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTAuNjY2NjY3IDEuMzMzMzNDMC42NjY2NjcgMC45NjUxNDQgMC45NjUxNDQgMC42NjY2NjcgMS4zMzMzMyAwLjY2NjY2N0gxOC42NjY3QzE5LjAzNDkgMC42NjY2NjcgMTkuMzMzMyAwLjk2NTE0NCAxOS4zMzMzIDEuMzMzMzNWMTguNjY2N0MxOS4zMzMzIDE5LjAzNDkgMTkuMDM0OSAxOS4zMzMzIDE4LjY2NjcgMTkuMzMzM0gxLjMzMzMzQzAuOTY1MTQzIDE5LjMzMzMgMC42NjY2NjcgMTkuMDM0OSAwLjY2NjY2NyAxOC42NjY3VjEuMzMzMzNaIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjEuMzMzMzMiLz4KPC9zdmc+',
+ rs = { class: 'function-buttons' },
+ cs = ['src'],
+ us = ['src'],
+ Is = /* @__PURE__ */ V({
+ __name: 'ToggleSize',
+ props: {
+ allowedFullScreen: {
+ type: Boolean,
+ required: !0,
+ },
+ allowedMinimized: {
+ type: Boolean,
+ required: !0,
+ },
+ },
+ emits: ['openFloatWindow'],
+ setup(s, { emit: A }) {
+ const e = A;
+ function l() {
+ document.fullscreenElement && document.exitFullscreen(), e('openFloatWindow');
+ }
+ function n() {
+ const r = document.getElementById('tui-call-kit-id');
+ document.fullscreenElement
+ ? document.exitFullscreen()
+ : r.requestFullscreen().catch((c) => {
+ alert(`Error attempting to enable fullscreen mode: ${c.message} (${c.name})`);
+ });
+ }
+ return (r, c) => (
+ u(),
+ N('div', rs, [
+ s.allowedMinimized
+ ? (u(),
+ N(
+ 'div',
+ {
+ key: 0,
+ class: 'minimize',
+ onClick: l,
+ },
+ [C('img', { src: t(is) }, null, 8, cs)]
+ ))
+ : p('', !0),
+ s.allowedFullScreen
+ ? (u(),
+ N(
+ 'div',
+ {
+ key: 1,
+ class: 'minimize',
+ onClick: n,
+ },
+ [C('img', { src: t(os) }, null, 8, us)]
+ ))
+ : p('', !0),
+ ])
+ );
+ },
+ });
+const ds = /* @__PURE__ */ Q(Is, [['__scopeId', 'data-v-18b58bb9']]),
+ Ue =
+ 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE0LjUgNi41SDkuNU05LjUgNi41VjEuNU05LjUgNi41TDE0LjUgMS41IiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjEuNyIvPgo8cGF0aCBkPSJNMS41IDkuNUg2LjVNNi41IDkuNVYxNC41TTYuNSA5LjVMMS41IDE0LjUiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMS43Ii8+Cjwvc3ZnPgo=',
+ ze =
+ 'data:image/svg+xml;base64,PHN2ZyB0PSIxNjk1NjExMDcwMzA4IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjU3NDAiIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIj48cGF0aCBkPSJNNjI0LjY0IDE3NC4wOGw3MS42OCA3MS42OEw4ODAuNjQgNjEuNDRsODEuOTIgODEuOTItMTg0LjMyIDE4NC4zMiA3MS42OCA3MS42OGMwIDMwLjcyLTI1LjYgNTYuMzItNTYuMzIgNTYuMzJINjI0LjY0Yy0zMC43MiAwLTU2LjMyLTI1LjYtNTYuMzItNTYuMzJWMjMwLjRjMC0zMC43MiAyNS42LTU2LjMyIDU2LjMyLTU2LjMyek0xNzQuMDggNjI0LjY0YzAtMzAuNzIgMjUuNi01Ni4zMiA1Ni4zMi01Ni4zMmgxNjguOTZjMzAuNzIgMCA1Ni4zMiAyNS42IDU2LjMyIDU2LjMyVjc5My42YzAgMzAuNzItMjUuNiA1Ni4zMi01Ni4zMiA1Ni4zMmwtNzEuNjgtNzEuNjgtMTg0LjMyIDE4NC4zMi04MS45Mi04MS45MiAxODQuMzItMTg0LjMyLTcxLjY4LTcxLjY4eiIgcC1pZD0iNTc0MSI+PC9wYXRoPjwvc3ZnPg==',
+ Ms = ['src'],
+ gs = /* @__PURE__ */ V({
+ __name: 'ZoomOut',
+ props: {
+ isGroupCall: {
+ type: Boolean,
+ required: !0,
+ },
+ callType: {
+ type: Number,
+ required: !0,
+ },
+ },
+ setup(s) {
+ const A = s;
+ let e = g(A.isGroupCall || A.callType === z.AUDIO ? ze : Ue);
+ function l() {
+ w.toggleMinimize();
+ }
+ K(() => {
+ i.watch(
+ o.CALL,
+ {
+ [a.CALL_MEDIA_TYPE]: n,
+ },
+ {
+ notifyRangeWhenWatch: a.MYSELF,
+ }
+ );
+ }),
+ H(() => {
+ i.unwatch(o.CALL, {
+ [a.CALL_MEDIA_TYPE]: n,
+ });
+ });
+ const n = (r) => {
+ e.value = r === z.AUDIO ? ze : Ue;
+ };
+ return (r, c) => (
+ u(),
+ N(
+ 'div',
+ {
+ class: 'zoom-box',
+ onClick: l,
+ },
+ [
+ C(
+ 'img',
+ {
+ class: 'zoom-img',
+ src: t(e),
+ },
+ null,
+ 8,
+ Ms
+ ),
+ ]
+ )
+ );
+ },
+ });
+const Ns = /* @__PURE__ */ Q(gs, [['__scopeId', 'data-v-209bc62d']]),
+ Ls = {
+ key: 0,
+ class: 'inviteHeader',
+ },
+ Cs = {
+ key: 0,
+ class: 'inviteHeader',
+ },
+ ps = {
+ key: 2,
+ class: 'topToolbar-desk',
+ },
+ Ds = /* @__PURE__ */ V({
+ __name: 'SingleCall',
+ props: {
+ allowedFullScreen: {
+ type: Boolean,
+ required: !0,
+ },
+ },
+ setup(s) {
+ const A = !eA.isPC,
+ e = eA.isWeChat,
+ l = g(i.getData(o.CALL, a.CALL_STATUS)),
+ n = g(i.getData(o.CALL, a.CALL_MEDIA_TYPE)),
+ r = g(!e && n.value === z.VIDEO ? 'videoStyle' : 'audioStyle'),
+ c = g(e ? 'weChatBody' : ''),
+ I = g(!1),
+ d = g(i.getData(o.CALL, a.LOCAL_USER_INFO)),
+ M = g(i.getData(o.CALL, a.CALL_DURATION)),
+ L = g(i.getData(o.CALL, a.IS_GROUP)),
+ T = g(i.getData(o.CALL, a.ENABLE_FLOAT_WINDOW)),
+ E = g(i.getData(o.CALL, a.CALL_ROLE)),
+ D = (O) => {
+ l.value = O;
+ },
+ y = (O) => {
+ (n.value = O), !e && (r.value = n.value === z.VIDEO ? 'videoStyle' : '');
+ },
+ j = (O) => {
+ d.value = O;
+ },
+ m = (O) => {
+ I.value = O;
+ },
+ S = (O) => {
+ M.value = O;
+ };
+ function k() {
+ w.toggleMinimize();
+ }
+ function U() {
+ w.toggleMinimize();
+ }
+ function q(O) {
+ T.value = O;
+ }
+ const v = (O) => {
+ E.value = O;
+ };
+ return (
+ K(function () {
+ i.watch(
+ o.CALL,
+ {
+ [a.CALL_STATUS]: D,
+ [a.CALL_MEDIA_TYPE]: y,
+ [a.LOCAL_USER_INFO]: j,
+ [a.IS_MINIMIZED]: m,
+ [a.CALL_DURATION]: S,
+ [a.ENABLE_FLOAT_WINDOW]: q,
+ [a.CALL_ROLE]: v,
+ },
+ {
+ notifyRangeWhenWatch: a.MYSELF,
+ }
+ );
+ }),
+ H(() => {
+ i.unwatch(o.CALL, {
+ [a.CALL_STATUS]: D,
+ [a.CALL_MEDIA_TYPE]: y,
+ [a.LOCAL_USER_INFO]: j,
+ [a.IS_MINIMIZED]: m,
+ [a.CALL_DURATION]: S,
+ [a.ENABLE_FLOAT_WINDOW]: q,
+ [a.CALL_ROLE]: v,
+ });
+ }),
+ (O, G) => (
+ u(),
+ N(
+ 'div',
+ {
+ class: R(t(c)),
+ },
+ [
+ A
+ ? (u(),
+ N(
+ 'div',
+ {
+ key: 0,
+ class: R(['singleCall-mobile', t(r)]),
+ },
+ [
+ (t(l) === t(B).CALLING || t(n) === t(z).AUDIO) && !t(I) ? (u(), N('div', Ls, [x(pe)])) : p('', !0),
+ t(e)
+ ? (u(),
+ h(Ql, {
+ key: 2,
+ class: 'live-pusher',
+ }))
+ : (u(), h(fe, { key: 1 })),
+ t(I)
+ ? p('', !0)
+ : (u(),
+ h(je, {
+ key: 3,
+ class: 'btnOperate btn-operate-mobile',
+ })),
+ ],
+ 2
+ ))
+ : p('', !0),
+ A
+ ? p('', !0)
+ : yA(
+ (u(),
+ N(
+ 'div',
+ {
+ key: 1,
+ class: R(['singleCall-desktop', t(r)]),
+ },
+ [
+ x(
+ ds,
+ {
+ class: 'toggleSize',
+ 'allowed-full-screen': s.allowedFullScreen,
+ 'allowed-minimized': t(T),
+ onOpenFloatWindow: k,
+ },
+ null,
+ 8,
+ ['allowed-full-screen', 'allowed-minimized']
+ ),
+ t(l) === t(B).CALLING || t(n) === t(z).AUDIO ? (u(), N('div', Cs, [x(pe)])) : p('', !0),
+ x(fe),
+ x(je, { class: 'btnOperate' }),
+ ],
+ 2
+ )),
+ [[EA, !t(I)]]
+ ),
+ A
+ ? p('', !0)
+ : (u(),
+ N('div', ps, [
+ t(l) === t(B).CONNECTED && !t(I)
+ ? (u(),
+ h(
+ ie,
+ {
+ key: 0,
+ class: 'topToolbar-time',
+ 'call-duration': t(M),
+ },
+ null,
+ 8,
+ ['call-duration']
+ ))
+ : p('', !0),
+ t(I)
+ ? (u(),
+ h(
+ es,
+ {
+ key: 1,
+ 'local-user-info': t(d),
+ callStatus: t(l),
+ callRole: t(E),
+ onCloseFloatWindow: U,
+ },
+ null,
+ 8,
+ ['local-user-info', 'callStatus', 'callRole']
+ ))
+ : p('', !0),
+ ])),
+ A
+ ? (u(),
+ N(
+ 'div',
+ {
+ key: 3,
+ class: R(t(I) ? 'topToolbar-mobile-floatWindow' : 'topToolbar-mobile'),
+ },
+ [
+ t(T) && !t(I)
+ ? (u(),
+ h(
+ Ns,
+ {
+ key: 0,
+ isGroupCall: t(L),
+ callType: t(n),
+ },
+ null,
+ 8,
+ ['isGroupCall', 'callType']
+ ))
+ : p('', !0),
+ t(I) && (t(n) === t(z).AUDIO || t(L)) ? (u(), h(ns, { key: 1 })) : p('', !0),
+ ],
+ 2
+ ))
+ : p('', !0),
+ ],
+ 2
+ )
+ )
+ );
+ },
+ });
+const Ts = /* @__PURE__ */ Q(Ds, [['__scopeId', 'data-v-445cd42e']]),
+ ys = ['src'],
+ Es = { class: 'nick' },
+ Ss = { class: 'tips' },
+ vs = { class: 'list-tips' },
+ hs = { class: 'list' },
+ js = ['src'],
+ fs = { class: 'list-name' },
+ Us = /* @__PURE__ */ V({
+ __name: 'InviteCallee',
+ props: {
+ remoteUsersList: {
+ type: Array,
+ required: !0,
+ },
+ localUserInfo: {
+ type: Object,
+ required: !0,
+ },
+ callerUserInfo: {
+ type: Object,
+ required: !0,
+ },
+ },
+ setup(s) {
+ const A = s;
+ function e(n) {
+ n.target.src = oA;
+ }
+ const l = _(() => [A.localUserInfo, ...A.remoteUsersList]);
+ return (n, r) => (
+ u(),
+ N('div', null, [
+ C(
+ 'img',
+ {
+ class: 'avatar',
+ src: s.callerUserInfo.avatar || t(oA),
+ onerror: e,
+ },
+ null,
+ 8,
+ ys
+ ),
+ C('div', Es, b(s.callerUserInfo.displayUserInfo), 1),
+ C('div', Ss, b(t(X)('Invited group call')), 1),
+ C('div', vs, b(t(X)('Those involved')), 1),
+ C('div', hs, [
+ (u(!0),
+ N(
+ iA,
+ null,
+ uA(
+ t(l),
+ (c, I) => (
+ u(),
+ N(
+ 'div',
+ {
+ key: I,
+ class: 'list-item',
+ },
+ [
+ C(
+ 'img',
+ {
+ class: 'list-avatar',
+ src: c.avatar || t(oA),
+ onerror: e,
+ },
+ null,
+ 8,
+ js
+ ),
+ C('div', fs, b(c.displayUserInfo), 1),
+ ]
+ )
+ )
+ ),
+ 128
+ )),
+ ]),
+ ])
+ );
+ },
+ });
+const zs = /* @__PURE__ */ Q(Us, [['__scopeId', 'data-v-53f6717e']]),
+ ms = { class: 'singleInvite-message' },
+ Os = { class: 'singleInvite-nick' },
+ ws = { class: 'singleInvite-nick-span' },
+ bs = { class: 'singleInvite-tips' },
+ Vs = /* @__PURE__ */ V({
+ __name: 'InviteInfo',
+ setup(s) {
+ const A = !eA.isPC,
+ e = A ? 'groupInvite-header-mobile' : 'groupInvite-header-desktop',
+ l = g(i.getData(o.CALL, a.CALL_ROLE)),
+ n = g(i.getData(o.CALL, a.CALL_MEDIA_TYPE)),
+ r = g(i.getData(o.CALL, a.IS_GROUP)),
+ c = g(i.getData(o.CALL, a.REMOTE_USER_INFO_LIST)),
+ I = g(i.getData(o.CALL, a.CALL_STATUS)),
+ d = g(i.getData(o.CALL, a.CALL_DURATION)),
+ M = g(i.getData(o.CALL, a.CALL_TIPS)),
+ L = g(i.getData(o.CALL, a.LOCAL_USER_INFO)),
+ T = g(i.getData(o.CALL, a.CALLER_USER_INFO)),
+ E = (O) => {
+ T.value = O;
+ },
+ D = (O) => {
+ L.value = O;
+ },
+ y = (O) => {
+ l.value = O;
+ },
+ j = (O) => {
+ r.value = O;
+ },
+ m = (O) => {
+ n.value = O;
+ },
+ S = (O) => {
+ c.value = O;
+ },
+ k = (O) => {
+ I.value = O;
+ },
+ U = (O) => {
+ d.value = O;
+ },
+ q = (O) => {
+ M.value = O;
+ },
+ v = {
+ [a.CALLER_USER_INFO]: E,
+ [a.LOCAL_USER_INFO]: D,
+ [a.CALL_ROLE]: y,
+ [a.IS_GROUP]: j,
+ [a.CALL_MEDIA_TYPE]: m,
+ [a.REMOTE_USER_INFO_LIST]: S,
+ [a.CALL_STATUS]: k,
+ [a.CALL_DURATION]: U,
+ [a.CALL_TIPS]: q,
+ };
+ return (
+ K(() => {
+ i.watch(o.CALL, v, { notifyRangeWhenWatch: a.MYSELF });
+ }),
+ H(() => {
+ i.unwatch(o.CALL, v);
+ }),
+ (O, G) => (
+ u(),
+ N('div', null, [
+ A && t(c).length !== 0
+ ? (u(),
+ N(
+ 'div',
+ {
+ key: 0,
+ class: R(t(e)),
+ },
+ [
+ x(
+ zs,
+ {
+ 'local-user-info': t(L),
+ callerUserInfo: t(T),
+ 'remote-users-list': t(c),
+ },
+ null,
+ 8,
+ ['local-user-info', 'callerUserInfo', 'remote-users-list']
+ ),
+ ],
+ 2
+ ))
+ : p('', !0),
+ !A && t(c).length !== 0
+ ? (u(),
+ N(
+ 'div',
+ {
+ key: 1,
+ class: R(t(e)),
+ },
+ [C('div', ms, [C('div', Os, [C('div', ws, b(t(T).displayUserInfo), 1)]), C('span', bs, b(t(M)), 1)])],
+ 2
+ ))
+ : p('', !0),
+ ])
+ )
+ );
+ },
+ });
+const Ps = /* @__PURE__ */ Q(Vs, [['__scopeId', 'data-v-7e774bdd']]),
+ Bs =
+ 'data:image/svg+xml;base64,PHN2ZyBjb2xvcj0icmVkIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCA0MCA0MCIgY2xhc3M9ImRlc2lnbi1pY29uZm9udCI+CiAgPHJlY3Qgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiByeD0iMjAiIGZpbGw9IiNEQURBREEiIGZpbGwtb3BhY2l0eT0iLjMiLz4KICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIwIDEyQzE5LjQ0NzcgMTIgMTkgMTIuNDQ3NyAxOSAxM1YxOUgxM0MxMi40NDc3IDE5IDEyIDE5LjQ0NzcgMTIgMjBDMTIgMjAuNTUyMyAxMi40NDc3IDIxIDEzIDIxSDE5VjI3QzE5IDI3LjU1MjMgMTkuNDQ3NyAyOCAyMCAyOEMyMC41NTIzIDI4IDIxIDI3LjU1MjMgMjEgMjdWMjFIMjdDMjcuNTUyMyAyMSAyOCAyMC41NTIzIDI4IDIwQzI4IDE5LjQ0NzcgMjcuNTUyMyAxOSAyNyAxOUgyMVYxM0MyMSAxMi40NDc3IDIwLjU1MjMgMTIgMjAgMTJaIiBmaWxsPSIjZmZmIi8+Cjwvc3ZnPgoK',
+ qs =
+ 'data:image/svg+xml;base64,PHN2ZyBjb2xvcj0iI2ZmZiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgNDAgNDAiIGNsYXNzPSJkZXNpZ24taWNvbmZvbnQiPgogIDxyZWN0IHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgcng9IjIwIiBmaWxsPSIjREFEQURBIiBmaWxsLW9wYWNpdHk9Ii4zIi8+CiAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yMCAxMkMxOS40NDc3IDEyIDE5IDEyLjQ0NzcgMTkgMTNWMTlIMTNDMTIuNDQ3NyAxOSAxMiAxOS40NDc3IDEyIDIwQzEyIDIwLjU1MjMgMTIuNDQ3NyAyMSAxMyAyMUgxOVYyN0MxOSAyNy41NTIzIDE5LjQ0NzcgMjggMjAgMjhDMjAuNTUyMyAyOCAyMSAyNy41NTIzIDIxIDI3VjIxSDI3QzI3LjU1MjMgMjEgMjggMjAuNTUyMyAyOCAyMEMyOCAxOS40NDc3IDI3LjU1MjMgMTkgMjcgMTlIMjFWMTNDMjEgMTIuNDQ3NyAyMC41NTIzIDEyIDIwIDEyWiIgZmlsbD0iIzJjM2U2MyIvPgo8L3N2Zz4KCg==',
+ RA = /* @__PURE__ */ V({
+ __name: 'InviteUser',
+ props: {
+ isMobile: {
+ type: Boolean,
+ required: !0,
+ },
+ },
+ setup(s) {
+ const e = s.isMobile ? qs : Bs,
+ l = async () => {
+ i.update(o.CALL, a.SHOW_SELECT_USER, !0);
+ };
+ return (n, r) => (
+ u(),
+ h(
+ MA,
+ {
+ icon: t(e),
+ text: t(X)('invite member'),
+ isMobile: s.isMobile,
+ onClick: l,
+ },
+ null,
+ 8,
+ ['icon', 'text', 'isMobile']
+ )
+ );
+ },
+ }),
+ Rs = { class: 'btn-operate' },
+ xs = { class: 'btn-operate' },
+ Qs = {
+ key: 0,
+ class: 'btn-operate',
+ },
+ Gs = { class: 'btn-operate' },
+ ks = {
+ key: 2,
+ class: 'control-wrapper-desktop',
+ },
+ Xs = { class: 'panel-button-area' },
+ Ws = {
+ key: 3,
+ class: 'control-wrapper-desktop',
+ },
+ Fs = { class: 'panel-button-area' },
+ me = 'control-wrapper-mobile',
+ Oe = 'black',
+ Ys = /* @__PURE__ */ V({
+ __name: 'BtnOperate',
+ setup(s) {
+ const A = g(i.getData(o.CALL, a.CALL_ROLE)),
+ e = g(i.getData(o.CALL, a.CALL_MEDIA_TYPE)),
+ l = g(i.getData(o.CALL, a.CALL_STATUS)),
+ n = g(i.getData(o.CALL, a.IS_GROUP)),
+ r = g(i.getData(o.CALL, a.CALL_DURATION)),
+ c = g(i.getData(o.CALL, a.IS_CLICKABLE)),
+ I = !eA.isPC,
+ d = eA.isH5;
+ let M = A.value === J.CALLER;
+ const L = g(i.getData(o.CALL, a.LOCAL_USER_INFO)),
+ T = (U) => {
+ L.value = U;
+ },
+ E = (U) => {
+ (M = U === J.CALLER), (A.value = U);
+ },
+ D = (U) => {
+ n.value = U;
+ },
+ y = (U) => {
+ e.value = U;
+ },
+ j = (U) => {
+ l.value = U;
+ },
+ m = (U) => {
+ r.value = U;
+ },
+ S = (U) => {
+ c.value = U;
+ },
+ k = {
+ [a.LOCAL_USER_INFO]: T,
+ [a.CALL_ROLE]: E,
+ [a.IS_GROUP]: D,
+ [a.CALL_MEDIA_TYPE]: y,
+ [a.CALL_STATUS]: j,
+ [a.CALL_DURATION]: m,
+ [a.IS_CLICKABLE]: S,
+ };
+ return (
+ K(() => {
+ i.watch(o.CALL, k, { notifyRangeWhenWatch: a.MYSELF });
+ }),
+ H(() => {
+ i.unwatch(o.CALL, k);
+ }),
+ (U, q) => (
+ u(),
+ N('div', null, [
+ t(l) === t(B).CALLING && I
+ ? (u(),
+ N(
+ 'div',
+ {
+ key: 0,
+ class: R([me, Oe]),
+ },
+ [
+ C('div', Rs, [
+ t(M)
+ ? p('', !0)
+ : (u(),
+ h(ZA, {
+ key: 0,
+ class: 'mobile-reject',
+ 'is-mobile': I,
+ })),
+ t(M)
+ ? p('', !0)
+ : (u(),
+ h(
+ KA,
+ {
+ key: 1,
+ class: 'mobile-accept',
+ 'is-mobile': I,
+ 'call-type': t(e),
+ },
+ null,
+ 8,
+ ['call-type']
+ )),
+ t(M)
+ ? (u(),
+ h(RA, {
+ key: 2,
+ class: 'mobile-invite',
+ 'is-mobile': I,
+ }))
+ : p('', !0),
+ t(M)
+ ? (u(),
+ h(
+ LA,
+ {
+ key: 3,
+ isGroupCall: t(n),
+ callType: t(e),
+ 'is-mobile': I,
+ isClickable: t(c),
+ },
+ null,
+ 8,
+ ['isGroupCall', 'callType', 'isClickable']
+ ))
+ : p('', !0),
+ ]),
+ ],
+ 2
+ ))
+ : p('', !0),
+ t(l) === t(B).CONNECTED && I
+ ? (u(),
+ N(
+ 'div',
+ {
+ key: 1,
+ class: R([me, Oe]),
+ },
+ [
+ C('div', xs, [
+ x(
+ ie,
+ {
+ 'call-duration': t(r),
+ 'call-type': t(e),
+ },
+ null,
+ 8,
+ ['call-duration', 'call-type']
+ ),
+ ]),
+ t(e) === t(z).VIDEO
+ ? (u(),
+ N('div', Qs, [
+ x(
+ CA,
+ {
+ class: 'btn',
+ 'local-user-info': t(L),
+ 'is-mobile': I,
+ },
+ null,
+ 8,
+ ['local-user-info']
+ ),
+ t(d)
+ ? p('', !0)
+ : (u(),
+ h(HA, {
+ key: 0,
+ class: 'btn',
+ })),
+ x(TA, {
+ class: 'btn',
+ 'is-mobile': I,
+ }),
+ ]))
+ : p('', !0),
+ C('div', Gs, [
+ t(e) === t(z).AUDIO
+ ? (u(),
+ h(
+ CA,
+ {
+ key: 0,
+ class: 'btn',
+ 'local-user-info': t(L),
+ 'is-mobile': I,
+ },
+ null,
+ 8,
+ ['local-user-info']
+ ))
+ : p('', !0),
+ x(RA, {
+ class: 'btn',
+ 'is-mobile': I,
+ }),
+ x(
+ LA,
+ {
+ class: 'btn',
+ 'is-mobile': I,
+ isGroupCall: t(n),
+ callType: t(e),
+ isClickable: t(c),
+ },
+ null,
+ 8,
+ ['isGroupCall', 'callType', 'isClickable']
+ ),
+ t(e) === t(z).AUDIO && !t(d)
+ ? (u(),
+ h(HA, {
+ key: 1,
+ class: 'btn',
+ }))
+ : p('', !0),
+ ]),
+ ],
+ 2
+ ))
+ : p('', !0),
+ t(l) === t(B).CALLING && !I
+ ? (u(),
+ N('div', ks, [
+ C('div', Xs, [
+ t(M)
+ ? p('', !0)
+ : (u(),
+ h(ZA, {
+ key: 0,
+ class: 'btn',
+ 'is-mobile': I,
+ })),
+ t(M)
+ ? p('', !0)
+ : (u(),
+ h(
+ KA,
+ {
+ key: 1,
+ class: 'btn',
+ 'is-mobile': I,
+ 'call-type': t(e),
+ },
+ null,
+ 8,
+ ['call-type']
+ )),
+ t(e) === t(z).VIDEO
+ ? (u(),
+ h(TA, {
+ key: 2,
+ class: 'btn',
+ 'is-mobile': I,
+ }))
+ : p('', !0),
+ t(M)
+ ? (u(),
+ h(
+ CA,
+ {
+ key: 3,
+ class: 'btn',
+ 'local-user-info': t(L),
+ 'is-mobile': I,
+ },
+ null,
+ 8,
+ ['local-user-info']
+ ))
+ : p('', !0),
+ t(M)
+ ? (u(),
+ h(RA, {
+ key: 4,
+ class: 'btn',
+ 'is-mobile': I,
+ }))
+ : p('', !0),
+ t(M)
+ ? (u(),
+ h(
+ LA,
+ {
+ key: 5,
+ class: 'btn',
+ isGroupCall: t(n),
+ callType: t(e),
+ 'is-mobile': I,
+ isClickable: t(c),
+ },
+ null,
+ 8,
+ ['isGroupCall', 'callType', 'isClickable']
+ ))
+ : p('', !0),
+ ]),
+ ]))
+ : p('', !0),
+ t(l) === t(B).CONNECTED && !I
+ ? (u(),
+ N('div', Ws, [
+ C('div', Fs, [
+ t(e) === t(z).VIDEO
+ ? (u(),
+ h(TA, {
+ key: 0,
+ class: 'btn',
+ 'is-mobile': I,
+ }))
+ : p('', !0),
+ x(
+ CA,
+ {
+ class: 'btn',
+ 'local-user-info': t(L),
+ 'is-mobile': I,
+ },
+ null,
+ 8,
+ ['local-user-info']
+ ),
+ x(RA, {
+ class: 'btn',
+ 'is-mobile': I,
+ }),
+ x(
+ LA,
+ {
+ class: 'btn',
+ 'is-mobile': I,
+ isGroupCall: t(n),
+ callType: t(e),
+ isClickable: t(c),
+ },
+ null,
+ 8,
+ ['isGroupCall', 'callType', 'isClickable']
+ ),
+ ]),
+ ]))
+ : p('', !0),
+ ])
+ )
+ );
+ },
+ });
+const Ks = /* @__PURE__ */ Q(Ys, [['__scopeId', 'data-v-655fef75']]),
+ Zs = {
+ class: 'swiper-item',
+ name: 'swiper-silder',
+ },
+ Hs = /* @__PURE__ */ V({
+ __name: 'SwiperSlider',
+ props: {
+ index: {},
+ },
+ setup(s) {
+ return (A, e) => (u(), N('div', Zs, [dA(A.$slots, 'default', {}, void 0, !0)]));
+ },
+ });
+const Js = /* @__PURE__ */ Q(Hs, [['__scopeId', 'data-v-5b8dff3a']]);
+var kA = /* @__PURE__ */ ((s) => ((s.LEFT = 'left'), (s.RIGHT = 'right'), s))(kA || {});
+function _s({ pageCount: s }) {
+ const A = g(),
+ e = g(),
+ l = g(0),
+ n = g(kA.RIGHT);
+ function r(M) {
+ (A.value = M.changedTouches[0].pageX), (e.value = M.changedTouches[0].pageY);
+ }
+ function c() {
+ l.value = l.value + 1;
+ }
+ function I() {
+ l.value = l.value - 1;
+ }
+ function d(M) {
+ const L = M.changedTouches[0].pageX - A.value;
+ if (!(Math.abs(L) < 5)) {
+ if (L < 0) {
+ if (l.value === s.value - 1) return;
+ (n.value = kA.LEFT), c();
+ }
+ if (L > 0) {
+ if (l.value === 0) return;
+ (n.value = kA.RIGHT), I();
+ }
+ }
+ }
+ return (
+ rA(s, () => {
+ s.value === 1 && l.value !== 0 && (l.value = 0);
+ }),
+ K(() => {
+ document.addEventListener('touchstart', r, !1), document.addEventListener('touchend', d, !1);
+ }),
+ H(() => {
+ document.removeEventListener('touchstart', r, !1), document.removeEventListener('touchend', d, !1);
+ }),
+ {
+ currentIndex: l,
+ direction: n,
+ }
+ );
+}
+function $s(s) {
+ const A = [];
+ for (let e = 0; e < s.length; e++) {
+ const l = s[e];
+ l.className.includes('swiper-item') && A.push(l);
+ }
+ return A;
+}
+function An(s) {
+ const A = g([]),
+ e = () => {
+ const l = s.value.children,
+ n = $s(l);
+ A.value.length !== n.length && (A.value = n);
+ };
+ return (
+ K(() => {
+ e();
+ }),
+ tt(() => {
+ e();
+ }),
+ A
+ );
+}
+const en = { class: 'swipe' },
+ tn = {
+ key: 0,
+ class: 'swipe-dots-container',
+ },
+ an = /* @__PURE__ */ V({
+ __name: 'Swiper',
+ props: {
+ grid: {},
+ },
+ setup(s) {
+ const A = g(),
+ e = An(A),
+ l = s,
+ n = _(() => {
+ const { rows: E = 1, cols: D = 1 } = (l == null ? void 0 : l.grid) || {};
+ return E * D;
+ }),
+ r = _(() => Math.ceil(e.value.length / n.value)),
+ c = _(() => r.value > 1),
+ { direction: I, currentIndex: d } = _s({ pageCount: r });
+ function M({ count: E, width: D, height: y, rows: j, cols: m, currentIndex: S }) {
+ const k = [],
+ U = (q) => Math.floor(q / (j * m));
+ for (let q = 0; q < E; q++)
+ k[q] = {
+ width: D,
+ height: y,
+ top: `${y * Math.floor((q - U(q) * n.value) / m)}px`,
+ left: `${D * (Math.floor(q % m) + (U(q) - S) * j)}px`,
+ visible: S === U(q),
+ };
+ return k;
+ }
+ function L(E, D) {
+ return parseFloat(E.getPropertyValue(D) || 0);
+ }
+ function T(E) {
+ e.value.forEach((D, y) => {
+ const { width: j, height: m, top: S, left: k, visible: U } = E[y];
+ (D.style.top = S), (D.style.left = k), (D.style.width = j + 'px'), (D.style.height = m + 'px'), (D.style.visible = U);
+ });
+ }
+ return (
+ rA([e, d], () => {
+ var U;
+ const E = A.value.clientWidth,
+ { rows: D = 1, cols: y = 1 } = (l == null ? void 0 : l.grid) || {},
+ j = parseInt(E) / y,
+ m = getComputedStyle((U = e.value) == null ? void 0 : U[0]),
+ S = L(m, 'height');
+ A.value.style.height = `${D * S}px`;
+ const k = M({
+ count: e.value.length,
+ width: j,
+ height: S,
+ rows: D,
+ cols: y,
+ currentIndex: d.value,
+ });
+ T(k);
+ }),
+ ee('direction', I),
+ (E, D) => (
+ u(),
+ N('div', en, [
+ C(
+ 'div',
+ {
+ ref_key: 'swiperContainerRef',
+ ref: A,
+ class: 'swiper-sliders-container',
+ },
+ [dA(E.$slots, 'default')],
+ 512
+ ),
+ t(c)
+ ? (u(),
+ N('div', tn, [
+ (u(!0),
+ N(
+ iA,
+ null,
+ uA(
+ t(r),
+ (y) => (
+ u(),
+ N(
+ 'span',
+ {
+ key: y,
+ class: R(['swipe-dots', [t(d) === y - 1 ? 'swipe-current-dots' : '']]),
+ },
+ null,
+ 2
+ )
+ )
+ ),
+ 128
+ )),
+ ]))
+ : p('', !0),
+ ])
+ )
+ );
+ },
+ });
+const oe =
+ 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAMAAAC5zwKfAAAAsVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+3mHKcAAAAOnRSTlMAChshaFgmE25ORA9eSRa/sTLNloBjBlM/07qFKok2m3c786wukeTf3Kh07PCNe8fDtZ/o16Kl9/nJwyGDfwAABBtJREFUWMOs0cuKBSEMRVEfkEJFwUnKgQiC//+NHbvUWz1rbrKdLw5G/SNUUqGeIUppgZqiCKgvijwhUKeUCNwL+ZwxWxT4RCTuAwb2Qm2sXeIBOeJlqc9ENmhgg2aBgQOiBYA/E3ln1rYu0C6QdxUE8mZHvKjw/ZFh1Ed8TQyMe0CuswnCErViZPKghe+NQXG6MoGHJC8pVnq8QRKD4gU950NCtZrpXa3l3x7RItPD3NtDjhkobqaQt8lckQ3m3vshhxYY2GcP2JJil33pm+zA964y68vUfBB8OWQxfA+L95ssDflgIu+QVvGr0e9KRwGwRR+3OQS84CP1kDEJgMnFU9ECoD2gd00JNFx01BRdlQD77U5WAvTuUxIBaeG9XpAA3X1yWgK8XyB+aehXP53YbZdyQBjA8SFKYpWHNmRZ5aEQ6dn3/2D3NQy6262Nf6/qnH7nmplOEoBs8+gJTg5u7JIi9Mk2ffZcMn0pmiI0Ztt6HsrSvdYVIRJrTWBZuh/IX6DSuxQy4gWMVQ37gczVvZCKPfoSgKvSvvqBSYHPBKNu4aGhJtQxYj9wD2BVXDCIBlDDD6jfqQzDSxzHBBTRiAWMxAz6gONrFOPAu4RLhESm5jSO7wPmlwOIuKgw4Pk3U3E4jeru0UFUhUELf2UzgJG4Hue8dQ9RTbpjfKEXGo7hhM4jftwi/wCV4LE81QVXcxy37TwiF/sAluThmlSbgDXSlhl18wZHHyJkvEBlLNeKzrgbqESBT0jflciGrbnK2+J2sy6e4IdBQEg/1lDVXGg9x9nS73szPQCQkFFKNa87NQftuLe3kZaCYxgSMoAB6yhhyzXeTmUm73kf00AHkIgH6e5tQ6fiwIPM946anob68QhiRfoiumu8A7DyVFW13tnHtRHKei0GYaSg+0Yc4cDDovr9l8emR/BALMljIA8eLjS71jNN00qEl8umLV2GWtEfo4d41Wk9ED2Tf3o2I0HSb7c7UT/s0GNzVgWvHhBKFFWc/M6t5DRLQdQBxKLunyj0I0ozd/V8wEGKnWizj8fbOHWfplKWYrCeMZj+uj8TziTzlaAHKfkpcVh+SY8oakSvRcbaZJkkSVmGRbmaUQ4M+skHFcRqvgpUcPl5cz5B581qupckY28YpZg2M4bGED1pwlgqWXAN2rad56BtVqspDrwSrMTSW9HoaZSWlAOWntd4FbjC3v8gzBjaI/SiuWiRHXwOtuItlfUthV63Vj0C3q24Be9HzFJd4tGfjQTPs5LW+x3EoiybNHqntaMo9ytuwHbNUCpvFujNqIWq2C9AENPbhqU63ZU7dg7cTxACLrM7/36eL9nEPp3z5pSJaEiZtOL6/TVBzVjHA6sMczCbcbaYb9B6R894wbE8+7zJFU9lxl8D9Lp/VcLH/2j8UuYAAAAASUVORK5CYII=',
+ ln = { class: 'invite-calling-list' },
+ sn = ['id'],
+ nn = {
+ key: 0,
+ class: 'invite-calling-item-loading',
+ },
+ on = ['src'],
+ rn = {
+ key: 1,
+ class: 'tag',
+ },
+ cn = { class: 'microphone-icon-container' },
+ un = { class: 'stream-userInfo' },
+ In = ['src'],
+ dn = {
+ key: 0,
+ class: 'invite-calling-item-id',
+ },
+ Mn = /* @__PURE__ */ V({
+ __name: 'RemoteStreamList',
+ props: {
+ remoteList: {
+ type: Array,
+ required: !0,
+ },
+ callStatus: {
+ type: String,
+ required: !0,
+ },
+ localUserInfo: {
+ type: Object,
+ required: !0,
+ },
+ },
+ setup(s) {
+ const A = s,
+ e = _(() => [A.localUserInfo, ...A.remoteList]);
+ function l(n) {
+ n.target.src = oA;
+ }
+ return (n, r) => (
+ u(),
+ N('div', ln, [
+ x(
+ an,
+ { grid: { rows: 2, cols: 2 } },
+ {
+ default: DA(() => [
+ (u(!0),
+ N(
+ iA,
+ null,
+ uA(
+ t(e),
+ (c, I) => (
+ u(),
+ h(
+ Js,
+ {
+ key: `${c.userId}`,
+ index: I,
+ class: 'invite-calling-item',
+ },
+ {
+ default: DA(() => [
+ C(
+ 'div',
+ {
+ id: c.domId,
+ class: 'invite-calling-item-message',
+ },
+ [
+ !c.isEnter && c.domId !== 'localVideo'
+ ? (u(), N('div', nn, [C('img', { src: t(oe) }, null, 8, on)]))
+ : p('', !0),
+ (c.isEnter && s.callStatus === 'connected') || c.domId === 'localVideo'
+ ? (u(),
+ N('span', rn, [
+ C('div', cn, [
+ c.isAudioAvailable
+ ? (u(),
+ h(
+ SA,
+ {
+ key: 0,
+ volume: c.volume,
+ },
+ null,
+ 8,
+ ['volume']
+ ))
+ : (u(), h(vA, { key: 1 })),
+ ]),
+ C(
+ 'div',
+ un,
+ b(c.domId === 'localVideo' ? t(X)('me') : c.displayUserInfo),
+ 1
+ ),
+ ]))
+ : p('', !0),
+ ],
+ 8,
+ sn
+ ),
+ C(
+ 'img',
+ {
+ class: 'avatar',
+ src: c.avatar || t(oA),
+ onerror: l,
+ },
+ null,
+ 8,
+ In
+ ),
+ !c.isEnter && c.domId !== 'localVideo'
+ ? (u(), N('div', dn, b(c.nick || c.userId), 1))
+ : p('', !0),
+ ]),
+ _: 2,
+ },
+ 1032,
+ ['index']
+ )
+ )
+ ),
+ 128
+ )),
+ ]),
+ _: 1,
+ }
+ ),
+ ])
+ );
+ },
+ });
+const gn = /* @__PURE__ */ Q(Mn, [['__scopeId', 'data-v-a3d705eb']]),
+ Nn = { class: 'calling-wrapper' },
+ Ln = {
+ key: 0,
+ class: 'user-view-text-container',
+ },
+ Cn = { class: 'tag' },
+ pn = { class: 'microphone-icon-container' },
+ Dn = { class: 'stream-userInfo' },
+ Tn = ['id'],
+ yn = {
+ key: 0,
+ class: 'invite-calling-item-loading',
+ },
+ En = ['src'],
+ Sn = {
+ key: 1,
+ class: 'user-view-text-container',
+ },
+ vn = { class: 'tag' },
+ hn = { class: 'microphone-icon-container' },
+ jn = { class: 'stream-userInfo' },
+ fn = /* @__PURE__ */ V({
+ __name: 'RemoteStreamList',
+ props: {
+ remoteList: {
+ type: Array,
+ required: !0,
+ },
+ callStatus: {
+ type: String,
+ required: !0,
+ },
+ callType: {
+ type: Number,
+ required: !0,
+ },
+ localUserInfo: {
+ type: Object,
+ required: !0,
+ },
+ },
+ setup(s) {
+ const A = s,
+ e = g(1),
+ l = g([]),
+ n = g('group-user-view'),
+ r = g('group-calling-container'),
+ c = g('user-view-user-id');
+ rA(
+ l,
+ async () => {
+ const d = l.value.length + 1;
+ (n.value = `group-user-view group-user-view-${d}`),
+ (r.value = `group-calling-container group-calling-container-${d}`),
+ (c.value = `user-view-user-id user-view-user-id-${d}`);
+ },
+ { flush: 'post', deep: !0 }
+ ),
+ VA(async () => {
+ await I();
+ });
+ async function I() {
+ const d = [];
+ for (let M = (e.value - 1) * 8; M < e.value * 8 && M < A.remoteList.length; M++) d.push(A.remoteList[M]);
+ l.value = d;
+ }
+ return (d, M) => (
+ u(),
+ N('div', Nn, [
+ C(
+ 'div',
+ {
+ class: R(t(r)),
+ },
+ [
+ C(
+ 'div',
+ {
+ id: 'localVideo',
+ class: R(t(n)),
+ },
+ [
+ s.callStatus !== 'connected' || s.callType === t(z).AUDIO
+ ? (u(),
+ N('div', Ln, [
+ C(
+ 'div',
+ {
+ class: R([t(c), 'localStream-userInfo']),
+ },
+ b(s.localUserInfo.displayUserInfo),
+ 3
+ ),
+ ]))
+ : p('', !0),
+ C('span', Cn, [
+ C('div', pn, [
+ s.localUserInfo.isAudioAvailable
+ ? (u(),
+ h(
+ SA,
+ {
+ key: 0,
+ volume: s.localUserInfo.volume,
+ },
+ null,
+ 8,
+ ['volume']
+ ))
+ : (u(), h(vA, { key: 1 })),
+ ]),
+ C('div', Dn, b(s.localUserInfo.displayUserInfo) + b(t(X)('me')), 1),
+ ]),
+ ],
+ 2
+ ),
+ (u(!0),
+ N(
+ iA,
+ null,
+ uA(
+ s.remoteList,
+ (L) => (
+ u(),
+ N(
+ 'div',
+ {
+ id: L.domId,
+ key: L.userId,
+ class: R(t(n)),
+ },
+ [
+ C('div', null, [
+ L.isEnter ? p('', !0) : (u(), N('div', yn, [C('img', { src: t(oe) }, null, 8, En)])),
+ s.callStatus !== 'connected' || s.callType === t(z).AUDIO
+ ? (u(),
+ N('div', Sn, [
+ C(
+ 'div',
+ {
+ class: R(['invite-userInfo', t(c)]),
+ },
+ b(L.displayUserInfo),
+ 3
+ ),
+ ]))
+ : p('', !0),
+ ]),
+ C('span', vn, [
+ C('div', hn, [
+ L.isAudioAvailable
+ ? (u(),
+ h(
+ SA,
+ {
+ key: 0,
+ volume: L.volume,
+ },
+ null,
+ 8,
+ ['volume']
+ ))
+ : (u(), h(vA, { key: 1 })),
+ ]),
+ C('div', jn, b(L.displayUserInfo), 1),
+ ]),
+ ],
+ 10,
+ Tn
+ )
+ )
+ ),
+ 128
+ )),
+ ],
+ 2
+ ),
+ ])
+ );
+ },
+ });
+const Un = /* @__PURE__ */ Q(fn, [['__scopeId', 'data-v-5a91c8ad']]);
+var XA = /* @__PURE__ */ ((s) => ((s.LEFT = 'left'), (s.RIGHT = 'right'), s))(XA || {});
+const zn = { class: 'swiper-sliders-container' },
+ mn = {
+ key: 0,
+ class: 'swipe-dots-container',
+ },
+ On = /* @__PURE__ */ V({
+ __name: 'Swiper',
+ props: {
+ grid: {},
+ renderStreamList: {},
+ },
+ setup(s) {
+ const A = s,
+ e = g(XA.RIGHT),
+ l = g(0),
+ n = g(),
+ r = g(),
+ c = _(() => {
+ const { rows: m = 1, cols: S = 1 } = (A == null ? void 0 : A.grid) || {};
+ return m * S;
+ }),
+ I = g([]),
+ d = g(0),
+ M = g([]);
+ rA(
+ () => A.renderStreamList,
+ () => {
+ (d.value = Math.ceil(A.renderStreamList.length / c.value)), d.value === 1 && (l.value = 0);
+ let m = [];
+ for (let S = 0; S < d.value; S++) m.push(S);
+ (M.value = m),
+ (I.value = Object.keys(Array.from({ length: A.renderStreamList.length })).map((S) => parseInt(S))),
+ console.log(A.renderStreamList, d.value);
+ },
+ {
+ immediate: !0,
+ }
+ );
+ const L = _(() => d.value > 1),
+ T = _(() => I.value.slice(l.value * c.value, l.value * c.value + c.value));
+ function E(m) {
+ (n.value = m.changedTouches[0].pageX), (r.value = m.changedTouches[0].pageY);
+ }
+ function D() {
+ l.value = l.value + 1;
+ }
+ function y() {
+ l.value = l.value - 1;
+ }
+ function j(m) {
+ const S = m.changedTouches[0].pageX - n.value;
+ if (!(Math.abs(S) < 5)) {
+ if (S < 0) {
+ if (l.value === d.value - 1) return;
+ (e.value = XA.LEFT), D();
+ }
+ if (S > 0) {
+ if (l.value === 0) return;
+ (e.value = XA.RIGHT), y();
+ }
+ }
+ }
+ return (
+ ee('showSliderList', T),
+ ee('direction', e),
+ (m, S) => (
+ u(),
+ N(
+ 'div',
+ {
+ class: 'swipe',
+ onTouchstart: E,
+ onTouchend: j,
+ },
+ [
+ C('div', zn, [dA(m.$slots, 'default')]),
+ t(L)
+ ? (u(),
+ N('div', mn, [
+ (u(!0),
+ N(
+ iA,
+ null,
+ uA(
+ t(M),
+ (k) => (
+ u(),
+ N(
+ 'span',
+ {
+ key: k,
+ class: R(['swipe-dots', [t(l) === k ? 'swipe-current-dots' : '']]),
+ },
+ null,
+ 2
+ )
+ )
+ ),
+ 128
+ )),
+ ]))
+ : p('', !0),
+ ],
+ 32
+ )
+ )
+ );
+ },
+ });
+const wn = {
+ options: {
+ virtualHost: !0,
+ },
+ },
+ bn = /* @__PURE__ */ V({
+ ...wn,
+ __name: 'SwiperSlider',
+ props: {
+ index: {},
+ },
+ setup(s) {
+ const A = s,
+ e = at('showSliderList'),
+ l = g('0px'),
+ n = g('0px');
+ rA(
+ () => A.index,
+ () => {
+ (l.value = (A.index % 2) * 50 + '%'), (n.value = ((A.index % 4) - 1) * 187 + 'px');
+ },
+ { immediate: !0 }
+ );
+ const r = _(() => {
+ var c;
+ switch (((l.value = (A.index % 2) * 50 + '%'), A.index % 4)) {
+ case 0:
+ case 1:
+ n.value = '0px';
+ break;
+ case 2:
+ case 3:
+ n.value = '187px';
+ break;
+ }
+ return (c = e.value) == null ? void 0 : c.includes(A.index);
+ });
+ return (c, I) =>
+ t(r)
+ ? (u(),
+ N(
+ 'div',
+ {
+ key: 0,
+ class: 'swiper-item',
+ style: bA({ left: t(l), top: t(n) }),
+ },
+ [dA(c.$slots, 'default', {}, void 0, !0)],
+ 4
+ ))
+ : p('', !0);
+ },
+ });
+const Vn = /* @__PURE__ */ Q(bn, [['__scopeId', 'data-v-444f63bd']]),
+ Pn = { class: 'invite-calling-list' },
+ Bn = { class: 'invite-calling-item' },
+ qn = {
+ key: 0,
+ class: 'invite-calling-item-message',
+ },
+ Rn = ['src'],
+ xn = ['src'],
+ Qn = { class: 'invite-calling-item-id' },
+ Gn = {
+ key: 0,
+ class: 'pusher-box',
+ },
+ kn = {
+ key: 0,
+ class: 'invite-calling-item-id',
+ },
+ Xn = {
+ key: 1,
+ class: 'player-container',
+ },
+ Wn = {
+ key: 1,
+ class: 'invite-calling-item-id',
+ },
+ Fn = /* @__PURE__ */ V({
+ __name: 'RemoteStreamList',
+ props: {
+ remoteList: {
+ type: Array,
+ required: !0,
+ },
+ callStatus: {
+ type: String,
+ required: !0,
+ },
+ localUserInfo: {
+ type: Object,
+ required: !0,
+ },
+ callType: {
+ type: Number,
+ required: !0,
+ },
+ },
+ setup(s) {
+ const A = g(i.getData(o.CALL, a.PUSHER)),
+ e = g(i.getData(o.CALL, a.PLAYER)),
+ l = g(i.getData(o.CALL, a.IS_EAR_PHONE) ? IA.EAR : IA.SPEAKER),
+ n = g({}),
+ r = s,
+ c = (v) => {
+ Object.assign(A.value, v);
+ },
+ I = (v) => {
+ Object.assign(e.value, v), (n.value = T(e.value));
+ },
+ d = (v) => {
+ l.value = v ? IA.EAR : IA.SPEAKER;
+ },
+ M = {
+ [a.PUSHER]: c,
+ [a.PLAYER]: I,
+ [a.IS_EAR_PHONE]: d,
+ };
+ K(() => {
+ i.watch(o.CALL, M, { notifyRangeWhenWatch: a.MYSELF });
+ }),
+ H(() => {
+ i.unwatch(o.CALL, M);
+ });
+ const L = _(() => [r.localUserInfo, ...r.remoteList]);
+ function T(v = []) {
+ const O = {};
+ for (let G = 0; G < v.length; G++) O[v[G].userID] = v[G];
+ return O;
+ }
+ function E(v) {
+ v.target.src = oA;
+ }
+ function D(v) {
+ w._tuiCallEngine._pusherStateChangeHandler(v);
+ }
+ function y(v) {
+ w._tuiCallEngine._pusherNetStatus(v);
+ }
+ function j(v) {
+ w._tuiCallEngine._pusherNetStatus(v);
+ }
+ function m(v) {
+ w._tuiCallEngine._pusherAudioVolumeNotify(v);
+ }
+ function S(v) {
+ w._tuiCallEngine._playerStateChange(v);
+ }
+ function k(v) {}
+ function U(v) {
+ w._tuiCallEngine._playNetStatus(v);
+ }
+ function q(v) {
+ w._tuiCallEngine._playerAudioVolumeNotify(v);
+ }
+ return (v, O) => {
+ const G = WA('live-pusher'),
+ Y = WA('live-player');
+ return (
+ u(),
+ N('div', Pn, [
+ x(
+ On,
+ {
+ class: 'list-box',
+ 'render-stream-list': t(L),
+ grid: { rows: 2, cols: 2 },
+ },
+ {
+ default: DA(() => [
+ (u(!0),
+ N(
+ iA,
+ null,
+ uA(
+ t(L),
+ (f, $) => (
+ u(),
+ h(
+ Vn,
+ {
+ key: `${f.userId}`,
+ userid: f.userId,
+ index: $,
+ class: 'invite-list',
+ },
+ {
+ default: DA(() => [
+ C('div', Bn, [
+ !f.isEnter || s.callType === t(z).AUDIO
+ ? (u(),
+ N('div', qn, [
+ f.isEnter
+ ? p('', !0)
+ : (u(),
+ N(
+ 'img',
+ {
+ key: 0,
+ class: 'invite-calling-item-loading',
+ src: t(oe),
+ },
+ null,
+ 8,
+ Rn
+ )),
+ C(
+ 'img',
+ {
+ class: 'avatar',
+ src: f.avatar || t(oA),
+ onerror: E,
+ },
+ null,
+ 8,
+ xn
+ ),
+ C('div', Qn, b(f.displayUserInfo), 1),
+ ]))
+ : p('', !0),
+ f.isEnter
+ ? (u(),
+ N(
+ 'div',
+ {
+ key: 1,
+ class: R(
+ s.callType === t(z).AUDIO
+ ? 'invite-calling-audio'
+ : 'invite-calling-item-stream'
+ ),
+ },
+ [
+ f.userId === s.localUserInfo.userId
+ ? (u(),
+ N('div', Gn, [
+ x(
+ G,
+ {
+ class: 'pusher',
+ url: t(A).url,
+ mode: t(A).mode,
+ autopush: !0,
+ 'enable-camera': t(A).enableCamera,
+ 'enable-mic': !0,
+ muted: !t(A).enableMic,
+ 'enable-agc': !0,
+ 'enable-ans': !0,
+ 'enable-ear-monitor': t(A).enableEarMonitor,
+ 'auto-focus': 'false',
+ zoom: t(A).enableZoom,
+ 'min-bitrate': t(A).minBitrate,
+ 'max-bitrate': t(A).maxBitrate,
+ 'video-width': t(A).videoWidth,
+ 'video-height': t(A).videoHeight,
+ beauty: t(A).beautyLevel,
+ whiteness: t(A).whitenessLevel,
+ orientation: t(A).videoOrientation,
+ aspect: t(A).videoAspect,
+ 'device-position': t(A).frontCamera,
+ 'remote-mirror': t(A).enableRemoteMirror,
+ 'local-mirror': t(A).localMirror,
+ 'background-mute': t(A).enableBackgroundMute,
+ 'audio-quality': t(A).audioQuality,
+ 'audio-volume-type': t(A).audioVolumeType,
+ 'audio-reverb-type': t(A).audioReverbType,
+ 'waiting-img': t(A).waitingImage,
+ 'beauty-style': t(A).beautyStyle,
+ filter: t(A).filter,
+ onStatechange: D,
+ onNetstatus: y,
+ onError: j,
+ onAudiovolumenotify: m,
+ },
+ null,
+ 8,
+ [
+ 'url',
+ 'mode',
+ 'enable-camera',
+ 'muted',
+ 'enable-ear-monitor',
+ 'zoom',
+ 'min-bitrate',
+ 'max-bitrate',
+ 'video-width',
+ 'video-height',
+ 'beauty',
+ 'whiteness',
+ 'orientation',
+ 'aspect',
+ 'device-position',
+ 'remote-mirror',
+ 'local-mirror',
+ 'background-mute',
+ 'audio-quality',
+ 'audio-volume-type',
+ 'audio-reverb-type',
+ 'waiting-img',
+ 'beauty-style',
+ 'filter',
+ ]
+ ),
+ s.callType !== t(z).AUDIO
+ ? (u(), N('div', kn, b(f.nick || f.userId), 1))
+ : p('', !0),
+ ]))
+ : (u(),
+ N('div', Xn, [
+ t(n)[f.userId] &&
+ t(n)[f.userId].userID === f.userId &&
+ (t(n)[f.userId].hasAudio || t(n)[f.userId].hasVideo)
+ ? (u(),
+ h(
+ Y,
+ {
+ key: 0,
+ class: 'player',
+ id: t(n)[f.userId].id,
+ 'data-userid': t(n)[f.userId].userID,
+ 'data-streamid': t(n)[f.userId].streamID,
+ 'data-streamtype': t(n)[f.userId].streamType,
+ src: t(n)[f.userId].src,
+ mode: 'RTC',
+ autoplay: t(n)[f.userId].autoplay,
+ 'mute-audio': t(n)[f.userId].muteAudio,
+ 'mute-video': t(n)[f.userId].muteVideo,
+ orientation: t(n)[f.userId].orientation,
+ 'object-fit': t(n)[f.userId].objectFit,
+ 'background-mute':
+ t(n)[f.userId].enableBackgroundMute,
+ 'min-cache': t(n)[f.userId].minCache,
+ 'max-cache': t(n)[f.userId].maxCache,
+ 'sound-mode': t(l),
+ 'enable-recv-message':
+ t(n)[f.userId].enableRecvMessage,
+ 'auto-pause-if-navigate':
+ t(n)[f.userId].autoPauseIfNavigate,
+ 'auto-pause-if-open-native':
+ t(n)[f.userId].autoPauseIfOpenNative,
+ onStatechange: S,
+ onFullscreenchange: k,
+ onNetstatus: U,
+ onAudiovolumenotify: q,
+ },
+ null,
+ 8,
+ [
+ 'id',
+ 'data-userid',
+ 'data-streamid',
+ 'data-streamtype',
+ 'src',
+ 'autoplay',
+ 'mute-audio',
+ 'mute-video',
+ 'orientation',
+ 'object-fit',
+ 'background-mute',
+ 'min-cache',
+ 'max-cache',
+ 'sound-mode',
+ 'enable-recv-message',
+ 'auto-pause-if-navigate',
+ 'auto-pause-if-open-native',
+ ]
+ ))
+ : p('', !0),
+ s.callType !== t(z).AUDIO
+ ? (u(), N('div', Wn, b(f.displayUserInfo), 1))
+ : p('', !0),
+ ])),
+ ],
+ 2
+ ))
+ : p('', !0),
+ ]),
+ ]),
+ _: 2,
+ },
+ 1032,
+ ['userid', 'index']
+ )
+ )
+ ),
+ 128
+ )),
+ ]),
+ _: 1,
+ },
+ 8,
+ ['render-stream-list']
+ ),
+ ])
+ );
+ };
+ },
+ });
+const Yn = /* @__PURE__ */ Q(Fn, [['__scopeId', 'data-v-8c218c4b']]),
+ Kn = { class: 'streamBox' },
+ Zn = /* @__PURE__ */ V({
+ __name: 'PusherPlayer',
+ setup(s) {
+ const A = g(i.getData(o.CALL, a.CALL_STATUS)),
+ e = g(i.getData(o.CALL, a.REMOTE_USER_INFO_LIST)),
+ l = g(i.getData(o.CALL, a.LOCAL_USER_INFO)),
+ n = g(i.getData(o.CALL, a.CALL_MEDIA_TYPE)),
+ r = !eA.isPC,
+ c = eA.isWeChat,
+ I = (E) => {
+ l.value = E;
+ },
+ d = (E) => {
+ e.value = E;
+ },
+ M = (E) => {
+ A.value = E;
+ },
+ L = (E) => {
+ n.value = E;
+ },
+ T = {
+ [a.LOCAL_USER_INFO]: I,
+ [a.REMOTE_USER_INFO_LIST]: d,
+ [a.CALL_STATUS]: M,
+ [a.CALL_MEDIA_TYPE]: L,
+ };
+ return (
+ K(() => {
+ i.watch(o.CALL, T, { notifyRangeWhenWatch: a.MYSELF });
+ }),
+ H(() => {
+ i.unwatch(o.CALL, T);
+ }),
+ (E, D) => (
+ u(),
+ N('div', Kn, [
+ t(e).length !== 0 && r && !t(c)
+ ? (u(),
+ h(
+ gn,
+ {
+ key: 0,
+ 'local-user-info': t(l),
+ 'remote-list': t(e),
+ 'call-status': t(A),
+ },
+ null,
+ 8,
+ ['local-user-info', 'remote-list', 'call-status']
+ ))
+ : p('', !0),
+ t(e).length !== 0 && !r && !t(c)
+ ? (u(),
+ h(
+ Un,
+ {
+ key: 1,
+ 'local-user-info': t(l),
+ 'remote-list': t(e),
+ 'call-status': t(A),
+ 'call-type': t(n),
+ },
+ null,
+ 8,
+ ['local-user-info', 'remote-list', 'call-status', 'call-type']
+ ))
+ : p('', !0),
+ r && t(c)
+ ? (u(),
+ h(
+ Yn,
+ {
+ key: 2,
+ 'local-user-info': t(l),
+ 'remote-list': t(e),
+ 'call-status': t(A),
+ 'call-type': t(n),
+ },
+ null,
+ 8,
+ ['local-user-info', 'remote-list', 'call-status', 'call-type']
+ ))
+ : p('', !0),
+ ])
+ )
+ );
+ },
+ });
+const Hn = /* @__PURE__ */ Q(Zn, [['__scopeId', 'data-v-3308cc63']]),
+ Jn = {
+ key: 0,
+ class: 'dialog-main-header',
+ },
+ _n = { class: 'dialog-main-title' },
+ $n = {
+ key: 1,
+ class: 'dialog-main-footer',
+ },
+ Ai = /* @__PURE__ */ V({
+ __name: 'TDialog',
+ props: {
+ moduleValue: {
+ type: Boolean,
+ default: !1,
+ },
+ isHeaderShow: {
+ type: Boolean,
+ default: !0,
+ },
+ isFooterShow: {
+ type: Boolean,
+ default: !0,
+ },
+ background: {
+ type: Boolean,
+ default: !0,
+ },
+ title: {
+ type: String,
+ default: '',
+ },
+ center: {
+ type: Boolean,
+ default: !1,
+ },
+ isH5: {
+ type: Boolean,
+ default: !1,
+ },
+ },
+ emits: ['update:moduleValue', 'submit'],
+ setup(s, { emit: A }) {
+ const e = {
+ OUTSIDE: 'outside',
+ INSIDE: 'inside',
+ },
+ l = s,
+ n = g(!0),
+ r = g(!0),
+ c = g(!0),
+ I = g('');
+ VA(() => {
+ (I.value = l.title), (n.value = l.isHeaderShow), (r.value = l.isFooterShow), (c.value = l.background);
+ });
+ const d = A,
+ M = (E) => {
+ E === e.OUTSIDE && L();
+ },
+ L = () => {
+ d('update:moduleValue', !1);
+ },
+ T = () => {
+ d('submit'), L();
+ };
+ return (E, D) =>
+ s.moduleValue
+ ? (u(),
+ N(
+ 'div',
+ {
+ key: 0,
+ class: R(['dialog', [l.isH5 ? 'dialog-h5' : '', s.center ? 'center' : '']]),
+ onClick: D[1] || (D[1] = re((y) => M(e.OUTSIDE), ['stop', 'prevent'])),
+ },
+ [
+ C(
+ 'main',
+ {
+ class: R(['dialog-main', [t(c) ? '' : 'dialog-main-back']]),
+ onClick: D[0] || (D[0] = re((y) => M(e.INSIDE), ['stop', 'prevent'])),
+ },
+ [
+ t(n)
+ ? (u(),
+ N('header', Jn, [
+ C('h1', _n, b(t(I)), 1),
+ C('i', {
+ class: 'icon icon-close',
+ onClick: L,
+ }),
+ ]))
+ : p('', !0),
+ C(
+ 'div',
+ {
+ class: R(['dialog-main-content', [l.isH5 ? 'dialog-main-content-uniapp' : '']]),
+ },
+ [dA(E.$slots, 'default', {}, void 0, !0)],
+ 2
+ ),
+ t(r)
+ ? (u(),
+ N('footer', $n, [
+ C(
+ 'button',
+ {
+ class: 'btn btn-cancel',
+ onClick: L,
+ },
+ b(t(X)('Cancel')),
+ 1
+ ),
+ C(
+ 'button',
+ {
+ class: 'btn btn-default',
+ onClick: T,
+ },
+ b(t(X)('Done')),
+ 1
+ ),
+ ]))
+ : p('', !0),
+ ],
+ 2
+ ),
+ ],
+ 2
+ ))
+ : p('', !0);
+ },
+ });
+const ei = /* @__PURE__ */ Q(Ai, [['__scopeId', 'data-v-7a89cdf3']]),
+ ti = ['src'],
+ ai = ['src'],
+ li = /* @__PURE__ */ V({
+ __name: 'TIcon',
+ props: {
+ file: {
+ type: String,
+ default: '',
+ },
+ width: {
+ type: String,
+ default: '20px',
+ },
+ height: {
+ type: String,
+ default: '20px',
+ },
+ isApp: {
+ type: Boolean,
+ default: !1,
+ },
+ },
+ emits: ['click'],
+ setup(s, { emit: A }) {
+ const e = A,
+ l = s,
+ n = () => {
+ e('click');
+ };
+ return (r, c) => (
+ u(),
+ N(
+ 'div',
+ {
+ class: 'icon',
+ onClick: n,
+ },
+ [
+ l.isApp
+ ? (u(),
+ N(
+ 'image',
+ {
+ key: 0,
+ class: 'icon',
+ src: l.file,
+ style: bA({ width: l.width, height: l.height }),
+ },
+ null,
+ 12,
+ ti
+ ))
+ : (u(),
+ N(
+ 'img',
+ {
+ key: 1,
+ class: 'icon',
+ src: l.file,
+ style: bA({ width: l.width, height: l.height }),
+ },
+ null,
+ 12,
+ ai
+ )),
+ ]
+ )
+ );
+ },
+ });
+const xA = /* @__PURE__ */ Q(li, [['__scopeId', 'data-v-b989a330']]),
+ we =
+ 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTZweCIgaGVpZ2h0PSIxNnB4IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSI+CiAgPHRpdGxlPue8lue7hCAxNDwvdGl0bGU+CiAgPGRlZnM+CiAgICA8ZmlsdGVyIHg9Ii0xMC42JSIgeT0iLTUuNCUiIHdpZHRoPSIxMjEuMiUiIGhlaWdodD0iMTEwLjklIiBmaWx0ZXJVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIGlkPSJmaWx0ZXItMSI+CiAgICAgIDxmZU9mZnNldCBkeD0iMCIgZHk9IjciIGluPSJTb3VyY2VBbHBoYSIgcmVzdWx0PSJzaGFkb3dPZmZzZXRPdXRlcjEiPjwvZmVPZmZzZXQ+CiAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjEwIiBpbj0ic2hhZG93T2Zmc2V0T3V0ZXIxIiByZXN1bHQ9InNoYWRvd0JsdXJPdXRlcjEiPjwvZmVHYXVzc2lhbkJsdXI+CiAgICAgIDxmZUNvbG9yTWF0cml4IHZhbHVlcz0iMCAwIDAgMCAwICAgMCAwIDAgMCAwICAgMCAwIDAgMCAwICAwIDAgMCAwLjEgMCIgdHlwZT0ibWF0cml4IiBpbj0ic2hhZG93Qmx1ck91dGVyMSIgcmVzdWx0PSJzaGFkb3dNYXRyaXhPdXRlcjEiPjwvZmVDb2xvck1hdHJpeD4KICAgICAgPGZlTWVyZ2U+CiAgICAgICAgPGZlTWVyZ2VOb2RlIGluPSJzaGFkb3dNYXRyaXhPdXRlcjEiPjwvZmVNZXJnZU5vZGU+CiAgICAgICAgPGZlTWVyZ2VOb2RlIGluPSJTb3VyY2VHcmFwaGljIj48L2ZlTWVyZ2VOb2RlPgogICAgICA8L2ZlTWVyZ2U+CiAgICA8L2ZpbHRlcj4KICA8L2RlZnM+CiAgPGcgaWQ9Im5ldyIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICA8ZyBpZD0i6Ieq5a6a5LmJ5raI5oGvIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNDU4LjAwMDAwMCwgLTMxOC4wMDAwMDApIj4KICAgICAgPGcgaWQ9Iue8lue7hC0zMiIgZmlsdGVyPSJ1cmwoI2ZpbHRlci0xKSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDQuMDAwMDAwLCA2MC4wMDAwMDApIj4KICAgICAgICA8ZyBpZD0i57yW57uELTI0IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMC4wMDAwMDAsIDI1MC4wMDAwMDApIj4KICAgICAgICAgIDxnIGlkPSLnvJbnu4QtMTQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDM4NC4wMDAwMDAsIDguMDAwMDAwKSI+CiAgICAgICAgICAgIDxjaXJjbGUgaWQ9IuakreWchuW9oiIgZmlsbD0iIzAwNkVGRiIgZmlsbC1ydWxlPSJub256ZXJvIiBjeD0iOCIgY3k9IjgiIHI9IjgiPjwvY2lyY2xlPgogICAgICAgICAgICA8cG9seWxpbmUgaWQ9Iui3r+W+hC00IiBzdHJva2U9IiNGRkZGRkYiIHN0cm9rZS13aWR0aD0iMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOC4wNDI2NDEsIDYuMjQyNjQxKSByb3RhdGUoLTMxNS4wMDAwMDApIHRyYW5zbGF0ZSgtOC4wNDI2NDEsIC02LjI0MjY0MSkgIiBwb2ludHM9IjYuMDQyNjQwNjkgMTAuMjQyNjQwNyAxMC4wNDI2NDA3IDEwLjI0MjY0MDcgMTAuMDQyNjQwNyAyLjI0MjY0MDY5Ij48L3BvbHlsaW5lPgogICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgICAgPC9nPgogICAgPC9nPgogIDwvZz4KPC9zdmc+Cg==',
+ si =
+ 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iNDhweCIgaGVpZ2h0PSI0OHB4IiB2aWV3Qm94PSIwIDAgNDggNDgiIHZlcnNpb249IjEuMSI+CiAgPHRpdGxlPmljX2JhY2tfd2hpdGU8L3RpdGxlPgogIDxnIGlkPSLpobXpnaItMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICA8ZyBpZD0iMDIuLeafpeeci+S/oeaBry3npLrkvovlpb3lj4siIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0zMi4wMDAwMDAsIC0yMDAuMDAwMDAwKSI+CiAgICAgIDxnIGlkPSLnvJbnu4QtNiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsIDE3Ni4wMDAwMDApIj4KICAgICAgICA8ZyBpZD0iaWNfYmFja193aGl0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzIuMDAwMDAwLCAyNC4wMDAwMDApIj4KICAgICAgICAgIDxnIGlkPSJpY19iYWNrX2JsYWNrIiBmaWxsPSIjNDQ0NDQ0IiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cGF0aCBkPSJNOS41MTIzMTA3MSwyNCBMMjMuNTE5ODI4NiwzOC43MjkwNDExIEMyMy43ODUzNzgsMzkuMDA4MjY4OSAyMy43NzUzMTY4LDM5LjQ0OTYwODIgMjMuNDk3MzE4NywzOS43MTY0NDQ4IEwyMS42MjU1OTE1LDQxLjUxMzAyMjYgQzIxLjM0NjY4MjcsNDEuNzgwNzMzMiAyMC45MDM1NjAyLDQxLjc3MTY1NTMgMjAuNjM1ODQ5Niw0MS40OTI3NDY2IEMyMC42MzUxMDMyLDQxLjQ5MTk2OSAyMC42MzQzNTg2LDQxLjQ5MTE4OTYgMjAuNjMzNjE1Nyw0MS40OTA0MDg1IEw0LjQ1ODc2Mzk5LDI0LjQ4MjM5NDggQzQuMjAxNzU0NCwyNC4yMTIxNDY3IDQuMjAxNzU0NCwyMy43ODc4NTMzIDQuNDU4NzYzOTksMjMuNTE3NjA1MiBMMjAuNjMzNjE1Nyw2LjUwOTU5MTUyIEMyMC45MDAwMzUsNi4yMjk0NDkwNiAyMS4zNDMxMTA5LDYuMjE4MzI0MjIgMjEuNjIzMjUzMyw2LjQ4NDc0MzUxIEMyMS42MjQwMzQ0LDYuNDg1NDg2MzQgMjEuNjI0ODEzOCw2LjQ4NjIzMDk3IDIxLjYyNTU5MTUsNi40ODY5Nzc0MSBMMjMuNDk3MzE4Nyw4LjI4MzU1NTI0IEMyMy43NzUzMTY4LDguNTUwMzkxNzUgMjMuNzg1Mzc4LDguOTkxNzMxMTQgMjMuNTE5ODI4Niw5LjI3MDk1ODkzIEw5LjUxMjMxMDcxLDI0IEw5LjUxMjMxMDcxLDI0IFoiIGlkPSJQYXRoLTIiPjwvcGF0aD4KICAgICAgICAgIDwvZz4KICAgICAgICAgIDxyZWN0IGlkPSLnn6nlvaIiIHg9IjAiIHk9IjAiIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PC9yZWN0PgogICAgICAgIDwvZz4KICAgICAgPC9nPgogICAgPC9nPgogIDwvZz4KPC9zdmc+Cg==',
+ ni =
+ 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTZweCIgaGVpZ2h0PSIxNnB4IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSI+CiAgPHRpdGxlPua4hemZpDwvdGl0bGU+CiAgPGcgaWQ9Iumhtemdoi0y5aSH5Lu9IiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgIDxnIGlkPSLliJvlu7rnvqTogYoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMjQzLjAwMDAwMCwgLTQxMy4wMDAwMDApIj4KICAgICAgPGcgaWQ9Ikdyb3VwLTEzNjQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDY1MC4wMDAwMDAsIDM0My4wMDAwMDApIj4KICAgICAgICA8ZyBpZD0iR3JvdXAtMTM2MyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjkwLjAwMDAwMCwgNDYuMDAwMDAwKSI+CiAgICAgICAgICA8ZyBpZD0iR3JvdXAtMTM1OCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsIDI0LjAwMDAwMCkiPgogICAgICAgICAgICA8ZyBpZD0i5riF6ZmkIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMDMuMDAwMDAwLCAwLjAwMDAwMCkiPgogICAgICAgICAgICAgIDxwYXRoIGQ9Ik0wLDAgTDE2LDAgTDE2LDE2IEwwLDE2IEwwLDAgWiIgaWQ9IuefqeW9oiI+PC9wYXRoPgogICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xLDggQzEsMTEuODY1OTk5OSA0LjEzNDAwMDA2LDE1IDgsMTUgQzExLjg2NTk5OTksMTUgMTUsMTEuODY1OTk5OSAxNSw4IEMxNSw0LjEzNDAwMDA2IDExLjg2NTk5OTksMSA4LDEgTDgsMSBDNC4xMzQwMDAwNiwxIDEsNC4xMzQwMDAwNiAxLDggWiIgZmlsbD0iIzk5OTk5OSI+PC9wYXRoPgogICAgICAgICAgICAgIDxnIGlkPSLnvJbnu4QiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDguMDAwMDAwLCA4LjAwMDAwMCkgcm90YXRlKC0zMTUuMDAwMDAwKSB0cmFuc2xhdGUoLTguMDAwMDAwLCAtOC4wMDAwMDApIHRyYW5zbGF0ZSg0LjAwMDAwMCwgNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSLnn6nlvaLlpIfku70iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQuMDAwMDAwLCA0LjAwMDAwMCkgcm90YXRlKC05MC4wMDAwMDApIHRyYW5zbGF0ZSgtNC4wMDAwMDAsIC00LjAwMDAwMCkgIiB4PSIxLjgxODk4OTRlLTEyIiB5PSIzLjUiIHdpZHRoPSI4IiBoZWlnaHQ9IjEiIHJ4PSIwLjUiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSLnn6nlvaLlpIfku70iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQuMDAwMDAwLCA0LjAwMDAwMCkgcm90YXRlKC0zNjAuMDAwMDAwKSB0cmFuc2xhdGUoLTQuMDAwMDAwLCAtNC4wMDAwMDApICIgeD0iMCIgeT0iMy41IiB3aWR0aD0iOCIgaGVpZ2h0PSIxIiByeD0iMC41Ij48L3JlY3Q+CiAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgIDxyZWN0IGlkPSLnn6nlvaIiIHg9IjAiIHk9IjAiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PC9yZWN0PgogICAgICAgICAgICA8L2c+CiAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgICA8L2c+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K',
+ ii = (s) => (Pe('data-v-216330b4'), (s = s()), Be(), s),
+ oi = { class: 'title' },
+ ri = /* @__PURE__ */ ii(() => /* @__PURE__ */ C('span', { class: 'space' }, null, -1)),
+ ci = { class: 'main' },
+ ui = { class: 'left' },
+ Ii = { class: 'transfer-header' },
+ di = ['value', 'placeholder'],
+ Mi = ['placeholder', 'value'],
+ gi = { class: 'transfer-left-main' },
+ Ni = { class: 'transfer-list' },
+ Li = {
+ key: 1,
+ class: 'icon-unselected',
+ },
+ Ci = { class: 'select-all' },
+ pi = ['onClick'],
+ Di = ['src'],
+ Ti = { class: 'name' },
+ yi = { key: 0 },
+ Ei = { class: 'right' },
+ Si = {
+ key: 0,
+ class: 'transfer-header',
+ },
+ vi = {
+ key: 1,
+ class: 'transfer-list',
+ },
+ hi = {
+ key: 0,
+ class: 'transfer-text',
+ },
+ ji = { class: 'transfer-list-item-content' },
+ fi = ['src'],
+ Ui = {
+ key: 0,
+ class: 'name',
+ },
+ zi = ['onClick'],
+ mi = { class: 'transfer-right-footer' },
+ Oi = /* @__PURE__ */ V({
+ __name: 'TTransfer',
+ props: {
+ list: {
+ type: Array,
+ default: () => [],
+ },
+ selectedList: {
+ type: Array,
+ default: () => [],
+ },
+ isSearch: {
+ type: Boolean,
+ default: !0,
+ },
+ isRadio: {
+ type: Boolean,
+ default: !1,
+ },
+ isCustomItem: {
+ type: Boolean,
+ default: !1,
+ },
+ title: {
+ type: String,
+ default: '',
+ },
+ type: {
+ type: String,
+ default: '',
+ },
+ resultShow: {
+ type: Boolean,
+ default: !0,
+ },
+ total: {
+ type: Number,
+ default: 0,
+ },
+ isH5: {
+ type: Boolean,
+ default: !1,
+ },
+ },
+ emits: ['search', 'submit', 'cancel', 'getMore'],
+ setup(s, { emit: A }) {
+ const e = s,
+ l = A,
+ n = g(''),
+ r = g([]),
+ c = g(0),
+ I = g([]),
+ d = g(!0),
+ M = g(!1),
+ L = g(''),
+ T = g('');
+ VA(() => {
+ const { list: U, isCustomItem: q, isSearch: v, title: O, total: G, selectedList: Y } = e;
+ if (q) for (let f = 0; f < U.length; f++) U[f].conversationID.indexOf('@TIM#SYSTEM') > -1 && U.splice(f, 1), (r.value = U);
+ else r.value = U;
+ (c.value = G || U.length),
+ (I.value = Y && Y.length > 0 ? Y : I.value),
+ (d.value = v),
+ (M.value = q),
+ (L.value = O),
+ (n.value = e.type);
+ });
+ const E = _(() => r.value.filter((U) => !U.isDisabled)),
+ D = (U) => {
+ (T.value = U.target.value), l('search', U.target.value);
+ },
+ y = (U) => {
+ if (U.isDisabled) return;
+ let q = I.value;
+ const v = q.indexOf(U);
+ if (v > -1) return I.value.splice(v, 1);
+ e.isRadio && (q = []), q.push(U), (I.value = q);
+ },
+ j = () => {
+ I.value.length === E.value.length ? (I.value = []) : (I.value = [...E.value]);
+ },
+ m = () => {
+ l('submit', I.value), (T.value = ''), (I.value = []);
+ },
+ S = () => {
+ l('cancel'), (T.value = ''), (I.value = []);
+ },
+ k = () => {
+ l('getMore');
+ };
+ return (U, q) => (
+ u(),
+ N(
+ 'div',
+ {
+ class: R(['transfer', [e.isH5 ? 'transfer-h5' : '']]),
+ },
+ [
+ e.isH5
+ ? (u(),
+ N(
+ 'header',
+ {
+ key: 0,
+ class: 'transfer-header transfer-h5-header',
+ onClick: S,
+ },
+ [
+ x(
+ xA,
+ {
+ class: 'icon',
+ file: t(si),
+ width: '18px',
+ height: '18px',
+ },
+ null,
+ 8,
+ ['file']
+ ),
+ C('span', oi, b(t(L)), 1),
+ ri,
+ ]
+ ))
+ : p('', !0),
+ C('main', ci, [
+ C('div', ui, [
+ C('header', Ii, [
+ !e.isH5 && t(d)
+ ? (u(),
+ N(
+ 'input',
+ {
+ key: 0,
+ type: 'text',
+ value: t(T),
+ onKeyup: lt(D, ['enter']),
+ placeholder: t(X)('Please enter userID'),
+ enterkeyhint: 'search',
+ class: R([e.isH5 ? 'left-uniapp-input' : '']),
+ },
+ null,
+ 42,
+ di
+ ))
+ : p('', !0),
+ e.isH5 && t(d)
+ ? (u(),
+ N(
+ 'input',
+ {
+ key: 1,
+ type: 'text',
+ onBlur: D,
+ onConfirm: D,
+ placeholder: t(X)('Please enter userID'),
+ enterkeyhint: 'search',
+ value: t(T),
+ class: R([e.isH5 ? 'left-uniapp-input' : '']),
+ },
+ null,
+ 42,
+ Mi
+ ))
+ : p('', !0),
+ ]),
+ C('main', gi, [
+ C('ul', Ni, [
+ t(E).length > 1 && !s.isRadio
+ ? (u(),
+ N(
+ 'li',
+ {
+ key: 0,
+ class: 'transfer-list-item',
+ onClick: j,
+ },
+ [
+ t(I).length === t(E).length
+ ? (u(),
+ h(
+ xA,
+ {
+ key: 0,
+ file: t(we),
+ width: '18px',
+ height: '18px',
+ },
+ null,
+ 8,
+ ['file']
+ ))
+ : (u(), N('i', Li)),
+ C('span', Ci, b(t(X)('Select all')), 1),
+ ]
+ ))
+ : p('', !0),
+ (u(!0),
+ N(
+ iA,
+ null,
+ uA(
+ t(r),
+ (v) => (
+ u(),
+ N(
+ 'li',
+ {
+ class: 'transfer-list-item',
+ key: v.userID,
+ onClick: (O) => y(v),
+ },
+ [
+ t(I).indexOf(v) > -1
+ ? (u(),
+ h(
+ xA,
+ {
+ key: 0,
+ file: t(we),
+ class: R([v.isDisabled && 'disabled']),
+ width: '18px',
+ height: '18px',
+ },
+ null,
+ 8,
+ ['file', 'class']
+ ))
+ : (u(),
+ N(
+ 'i',
+ {
+ key: 1,
+ class: R([v.isDisabled && 'disabled', 'icon-unselected']),
+ },
+ null,
+ 2
+ )),
+ t(M)
+ ? dA(
+ U.$slots,
+ 'left',
+ {
+ key: 3,
+ data: v,
+ },
+ void 0,
+ !0
+ )
+ : (u(),
+ N(
+ iA,
+ { key: 2 },
+ [
+ C(
+ 'img',
+ {
+ class: 'avatar',
+ src:
+ v.avatar ||
+ 'https://web.sdk.qcloud.com/component/TUIKit/assets/avatar_21.png',
+ onerror:
+ "this.src='https://web.sdk.qcloud.com/component/TUIKit/assets/avatar_21.png'",
+ },
+ null,
+ 8,
+ Di
+ ),
+ C('span', Ti, b(v.nick || v.userID), 1),
+ v.isDisabled ? (u(), N('span', yi)) : p('', !0),
+ ],
+ 64
+ )),
+ ],
+ 8,
+ pi
+ )
+ )
+ ),
+ 128
+ )),
+ t(c) > t(r).length
+ ? (u(),
+ N(
+ 'li',
+ {
+ key: 1,
+ class: 'transfer-list-item more',
+ onClick: k,
+ },
+ b(t(X)('View more')),
+ 1
+ ))
+ : p('', !0),
+ ]),
+ ]),
+ ]),
+ C('div', Ei, [
+ e.isH5 ? p('', !0) : (u(), N('header', Si, b(t(L)), 1)),
+ s.resultShow
+ ? (u(),
+ N('ul', vi, [
+ t(I).length > 0 && !e.isH5
+ ? (u(), N('p', hi, b(t(I).length) + ' ' + b(t(X)('people selected')), 1))
+ : p('', !0),
+ (u(!0),
+ N(
+ iA,
+ null,
+ uA(
+ t(I),
+ (v, O) => (
+ u(),
+ N(
+ 'li',
+ {
+ class: 'transfer-list-item space-between',
+ key: O,
+ },
+ [
+ C('aside', ji, [
+ t(M)
+ ? dA(
+ U.$slots,
+ 'right',
+ {
+ key: 1,
+ data: v,
+ },
+ void 0,
+ !0
+ )
+ : (u(),
+ N(
+ iA,
+ { key: 0 },
+ [
+ C(
+ 'img',
+ {
+ class: 'avatar',
+ src:
+ v.avatar ||
+ 'https://web.sdk.qcloud.com/component/TUIKit/assets/avatar_21.png',
+ onerror:
+ "this.src='https://web.sdk.qcloud.com/component/TUIKit/assets/avatar_21.png'",
+ },
+ null,
+ 8,
+ fi
+ ),
+ e.isH5 ? p('', !0) : (u(), N('span', Ui, b(v.nick || v.userID), 1)),
+ ],
+ 64
+ )),
+ ]),
+ e.isH5
+ ? p('', !0)
+ : (u(),
+ N(
+ 'span',
+ {
+ key: 0,
+ onClick: (G) => y(v),
+ },
+ [
+ x(
+ xA,
+ {
+ file: t(ni),
+ width: '18px',
+ height: '18px',
+ },
+ null,
+ 8,
+ ['file']
+ ),
+ ],
+ 8,
+ zi
+ )),
+ ]
+ )
+ )
+ ),
+ 128
+ )),
+ ]))
+ : p('', !0),
+ C('footer', mi, [
+ C(
+ 'button',
+ {
+ class: 'btn btn-cancel',
+ onClick: S,
+ },
+ b(t(X)('Cancel')),
+ 1
+ ),
+ t(I).length > 0
+ ? (u(),
+ N(
+ 'button',
+ {
+ key: 0,
+ class: 'btn',
+ onClick: m,
+ },
+ b(t(X)('Done')),
+ 1
+ ))
+ : (u(),
+ N(
+ 'button',
+ {
+ key: 1,
+ class: 'btn btn-no',
+ onClick: m,
+ },
+ b(t(X)('Done')),
+ 1
+ )),
+ ]),
+ ]),
+ ]),
+ ],
+ 2
+ )
+ );
+ },
+ });
+const wi = /* @__PURE__ */ Q(Oi, [['__scopeId', 'data-v-216330b4']]),
+ bi = /* @__PURE__ */ V({
+ __name: 'SelectUser',
+ props: {
+ isRadio: {
+ type: Boolean,
+ default: !1,
+ },
+ isNeedSearch: {
+ type: Boolean,
+ default: !1,
+ },
+ title: {
+ type: String,
+ default: '',
+ },
+ userList: {
+ type: Array,
+ default: () => [],
+ },
+ total: {
+ type: Number,
+ default: 0,
+ },
+ isShow: {
+ type: Boolean,
+ default: !1,
+ },
+ isPC: {
+ type: Boolean,
+ default: !0,
+ },
+ },
+ emits: ['complete', 'search', 'getMore', 'update:isShow'],
+ setup(s, { emit: A }) {
+ const e = A,
+ l = s,
+ n = g(!1);
+ VA(() => {
+ n.value = l.isShow;
+ });
+ const r = () => {
+ (n.value = !n.value), e('complete', []), e('update:isShow', n.value);
+ },
+ c = (M) => {
+ e('complete', M);
+ },
+ I = (M) => {
+ e('search', M);
+ },
+ d = () => {
+ e('getMore');
+ };
+ return (M, L) => (
+ u(),
+ h(
+ ei,
+ {
+ moduleValue: t(n),
+ isH5: !s.isPC,
+ isHeaderShow: !1,
+ isFooterShow: !1,
+ background: !1,
+ 'onUpdate:moduleValue': r,
+ },
+ {
+ default: DA(() => [
+ x(
+ wi,
+ {
+ isSearch: l.isNeedSearch,
+ title: l.title,
+ list: l.userList,
+ isH5: !s.isPC,
+ isRadio: l.isRadio,
+ total: l.total,
+ onGetMore: d,
+ onSearch: I,
+ onSubmit: c,
+ onCancel: r,
+ },
+ null,
+ 8,
+ ['isSearch', 'title', 'list', 'isH5', 'isRadio', 'total']
+ ),
+ ]),
+ _: 1,
+ },
+ 8,
+ ['moduleValue', 'isH5']
+ )
+ );
+ },
+ }),
+ Vi = { key: 0 },
+ be = 30,
+ Pi = /* @__PURE__ */ V({
+ __name: 'GroupCall',
+ setup(s) {
+ const A = g(i.getData(o.CALL, a.CALL_ROLE)),
+ e = g(i.getData(o.CALL, a.CALL_STATUS)),
+ l = g(i.getData(o.CALL, a.CALL_MEDIA_TYPE)),
+ n = !eA.isPC,
+ r = n ? '' : 'group-deskTop',
+ c = g(i.getData(o.CALL, a.LOCAL_USER_INFO)),
+ I = g(i.getData(o.CALL, a.REMOTE_USER_INFO_LIST)),
+ d = g(!1),
+ M = g(0),
+ L = g([]),
+ T = g([]),
+ E = g(0);
+ K(() => {
+ i.watch(o.CALL, U, { notifyRangeWhenWatch: a.MYSELF });
+ }),
+ H(() => {
+ i.unwatch(o.CALL, U);
+ });
+ const D = (f) => {
+ e.value = f;
+ },
+ y = (f) => {
+ l.value = f;
+ },
+ j = (f) => {
+ A.value = f;
+ },
+ m = (f) => {
+ c.value = f;
+ },
+ S = (f) => {
+ I.value = f;
+ },
+ k = async (f) => {
+ if (((d.value = f), d.value)) {
+ await O();
+ const $ = await w.getGroupProfile();
+ M.value = $.memberCount;
+ }
+ },
+ U = {
+ [a.CALL_STATUS]: D,
+ [a.CALL_MEDIA_TYPE]: y,
+ [a.CALL_ROLE]: j,
+ [a.SHOW_SELECT_USER]: k,
+ [a.LOCAL_USER_INFO]: m,
+ [a.REMOTE_USER_INFO_LIST]: S,
+ },
+ q = () => {
+ (d.value = !1), i.update(o.CALL, a.SHOW_SELECT_USER, !1), (E.value = 0), (L.value = []);
+ },
+ v = async () => {
+ (E.value += be), await O();
+ },
+ O = async () => {
+ const f = await w.getGroupMemberList(be, E.value),
+ $ = [...I.value, c.value].map((W) => W.userId);
+ L.value.push(...f),
+ (L.value = L.value.map((W) => ($.includes(W.userID) && (W = { ...W, isDisabled: !0 }), W))),
+ (T.value = L.value);
+ },
+ G = async (f) => {
+ try {
+ if (f.length <= 0) return;
+ (d.value = !1), i.update(o.CALL, a.SHOW_SELECT_USER, !1), (E.value = 0);
+ const $ = f.map((W) => W.userID);
+ await w.inviteUser({ userIDList: $ }), (L.value = []);
+ } catch ($) {
+ console.debug($);
+ }
+ },
+ Y = (f) => {
+ f ? (L.value = L.value.filter(($) => $.userID.includes(f) || $.nick.includes(f))) : (L.value = T.value);
+ };
+ return (f, $) => (
+ u(),
+ N(
+ 'div',
+ {
+ class: R(t(r)),
+ },
+ [
+ x(
+ bi,
+ {
+ isShow: t(d),
+ isNeedSearch: !0,
+ userList: t(L),
+ isPC: !n,
+ total: t(M),
+ onGetMore: v,
+ onComplete: G,
+ onSearch: Y,
+ 'onUpdate:isShow': q,
+ },
+ null,
+ 8,
+ ['isShow', 'userList', 'isPC', 'total']
+ ),
+ t(e) === t(B).CALLING && t(A) !== t(J).CALLER ? (u(), N('div', Vi, [x(Ps)])) : p('', !0),
+ t(e) === t(B).CONNECTED || t(A) === t(J).CALLER ? (u(), h(Hn, { key: 1 })) : p('', !0),
+ x(Ks),
+ ],
+ 2
+ )
+ );
+ },
+ });
+const Bi = /* @__PURE__ */ Q(Pi, [['__scopeId', 'data-v-06420ee0']]),
+ qi = {},
+ Ri = {
+ viewBox: '0 0 1024 1024',
+ xmlns: 'http://www.w3.org/2000/svg',
+ 'data-v-ea893728': '',
+ },
+ xi = /* @__PURE__ */ C(
+ 'path',
+ {
+ fill: 'currentColor',
+ d: 'M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z',
+ },
+ null,
+ -1
+ ),
+ Qi = [xi];
+function Gi(s, A) {
+ return u(), N('svg', Ri, Qi);
+}
+const ki = /* @__PURE__ */ Q(qi, [['render', Gi]]),
+ Ve =
+ 'data:image/jpeg;base64,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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApo2cKDRs4UCFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBRI2cKACwAAAAAAAAAAAAAAAAAAAAAAAAA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',
+ Xi =
+ 'data:image/jpeg;base64,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AAAVOjT6Ee4cVT6ESELQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hE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ThBt8y1a/wD8lmDYvUvp3lC7t1bXNnJRqRUtKOTWpp+xgeyDmKWO4piUqtXB8MhVtKctFVK1TRdRrcub57C6rwgr08AWKrDqilCajWo1G4uC2ZrVr5gOhBoXWJULfCJ4mpKVFUuMjzaWa1L2meGXNW9w+hdV6Kozqx0uLUs8k9nMBuAADSmtG7klslFS9ueRkY13lea/s1+bGnHr7gMgY6cevuGnHr7glkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19xknms08wAAAAAAAAAAAAAAV5563z7Cwqj5vsAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGH+t/PMSQ/PfXrJAHgcLberPD6VzQjpStaqquOWecVtfs1PszPfGrY9aYHh1ngWN2tK6u50pRhF5KdVwcG8m00mtepbfYeFZUKlfgJdQpRcpKq5ZJa2k4t+Cb9h088CwqdR1JWFFybzeUck/YtXgb1GjSoUlTo04U6a1KMIpJexAcjC3wiphXKamOX3FunlOlymLa1a46LWvdl/gsxynRjwbwuFDjJUHXp6HGpaTi4yazWWWxnQfQ+GOrxrsKDm3m3oLbvy2GxXtqFxCMLilCpGMlKKnFNJrUms+fWwPJ4Xfw9cf7of3I0OE1GKvMKuLipVo2qThOrSllKDex55PLu2JnT16FK5pOlcU4VKbybjNJp5PNamKlGlWpOlVpwnTksnCUU012MDlqtlhELizjLFr67nOrF0oRrxqLPPU2stS6zcmk+HFNtJtWja6nm0erbYZYWlTjLa0pU55ZaUYrNLqfMX8no8o5S6UOOUdFVNFaSW7PbkB5fCTEa+H2EJ2zjCpVqqnxklmoJpvPLZzc5z+Lwo0Kljp4tVvriVeE5Z1E4RiudRWpZtrLXszO1rUaVxSlSr041actsZJNP2M1o4Th0KLpRsaC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Heg4LlWN9O7/AAscqxvp3f4WM+OhyurXDvQcFyrG+nd/hY5VjfTu/wALGfHQ5XVrh3oOC5VjfTu/wscrxvp3f4X8Bnx0OV1a4d6DguVY307v8LHKsb6d3+FjPjocrq1w70HBcqxvp3f4WOVY307v8L+Az46HK6tcO9BwXKsb6d3+FjlWN9O7/Cxnx0OV1a4d6DguVY307v8ACxyrG+nd/hYz46HK6tcO9BwXK8b6d3+F/Acqxvp3f4WM+OhyurXDvQcFyrG+nd/hY5VjfTu/wsZ8dDldWuHeg4LlWN9O7/CxyrG+nd/hYz46HK6tcO9BwfKsb6d3+F/AjlWN9O7/AAsZ8dDldWuHeg4PlWN9O7/C/gOVY307v8L+Az46HK6tcO8BwXK8b6d3+F/Acqxvp3f4WM+OhyurXDvQcFyrG+nd/hY5VjfTu/wsZ8dDldWuHeg4LlWN9O7/AAscqxvp3f4WM+OhyurXDvQcFyrG+nd/hY5VjfTu/wALGfHQ5XVrh3oOC5VjfTu/wscqxvp3f4WM+OhyurXDvQcFyrG+nd/hY5XjfTu/wv4DPjocrq1w70HBcqxvp3f4WOVY307v8LGfHQ5XVrh3oOC5VjfTu/wscqxvp3f4X8Bnx0OV1a4d6DhIYxi1pUi6tWpr/wBFWGpnXYXiNPErVVoJxktU47cmd0XYq7lbaNiuWI3p74boBGlFamz1UkgjTjv8GNOO/wAGBII047/BjTjv8GBII049fcNOPX3ASCNOPX3DTj19wEgjTj19w049fcBII049fcNOPX3ASCNOPX3DTj19wEgjTj19w049fcBII049fcNOPX3ASCNOPX3DTj19wEgjTj19w049fcBII049fcNOPX3ASCNOPX3DTj19wEgjTj19w049fcBII049fcNOPX3ASCNOPX3DTj19wEgjTj19w049fcBII049fcNOPX3ASCNOPX3DTj19wEgjTj19w049fcBII049fcNOPX3ASCNOPX3DTj19wEgjTj19w049fcBII049fcNOPX3ASCNOPX3DTj19wEgjTj19w049fcBII049fcNOPX3ASCNOPX3DTj19wEgjTj19w049fcBII049fcNOPX3ASCNOPX3DTjv8GBII049fcNOPX3ASCNOPX3DTj19wEgjTj19w049fcBII049fcNOPX3ASCNOPX3DTj19wEgjT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',
+ Wi =
+ 'data:image/png;base64,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',
+ Fi =
+ 'data:image/png;base64,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Fqg33HCDf/mFKTTce++99uSTT/rvHTt2tKOOOsoOhA0bNhywAAIAAIBD2/nnn29PPfVUzIPCERcS6tat67sobdmypeC+SZMm+e5KKSkp/nvt2rWtatWq/rNWOVQOpWbqnTt3WmZmpm3atMnWrl1rO3bs8OdoBWLFihV+X1CmpONt377d79Nr9brCFBZ0f+HVEpU56T7dgtWO4P30fL3Hrl27Cp6vn/Xcwu8LAACAQ1eTJk2sW7duHhSWLVtmsRLTxuVvv/3W6tSpY8nJuz8N3a8B8qhRo+yKK67wXoVolSlTxho1auTv3aFDBy9z+vzzz+2iiy6yVatW+XNefPFFf0w7LfXv399+/vlnS01NteOOO85OP/106969u51wwgn+c7169eydd97xc9NAXq/p2rWrjRw50oYNG2b169e31atXW4kSJezZZ5/148+fP9/efPNNW7hwodWqVcsee+wxDxpq3FZQ0K106dLWo0cPDwYPPPCAv5+Cjb4T7QSl8NK7d2/bvHmzf0c6l5tuuskSEhIMAAAAh64gKDzxxBPWs2dPq169uh1sMQ0Js2bNsgULFljbtm19sKuZcQ3GNXDXwPrcc8+1efPm+YD+4osv9seKg8qJNMC+5JJLvDlas/a6NkMQEgIzZsywadOmeZIrX7683zd37lxLSkry3ZeqVatm99xzjweYc845xwf3GqjrXKVChQr24IMPekC47777bOLEiR4m1KCtP7wG/Nddd51/9uHDh/vx7rzzTh/oP/roox409J+kVKlSXg6l60Z07tzZd4PSeev7UiBRYFDQuPLKK61ixYoGAACAQ5vGdBozanwai5AQ03KjFi1a2Pjx461GjRo+4660NGbMGB/Aq8SnZcuWNnbsWGvQoEGxBQRRyZEG8NOnT7dPPvnEQ0paWtovnrdo0SIPD0FACKgcKbhPy0DNmjXzgb0G8/ocWlEQvbZkyZIeDJo2bephQPR5tVKgz6THVVKkwHTKKad4ANHz9d1oFUEUHvSfRPfrvXWcOXPm+IrE66+/bv369fPPlJubawAAADi0abJc4+H27dv7mDAWYhoSTjrpJJ99V7nPI4884qFAJTqa2VcTsertFRouu+wyK26dOnWygQMHelOIzmN3FCR0Dnur91cwCEKBzlslQSppkuBicFoZ0XUgdLw9UQ9EUHem99N/Dl0zYk8qV65szZs3t169evlNqx17ez4AAADinybKFRB0rbA2bdrErJQ8puVGmkl//PHHvZRGg+irr77aLr/8cm8QHj16tA0ePNhuvPFGO+aYY6y4aYCtAb3+AHsavJ966qk2dOhQe+6553wGXysaKvkpTOU/GqTrOPqjqsdAqwna6lSrIJrlV3OyZv+VBNXfsDtXXXWV9zqoN0ErBlopUHAKtmUtql27dv69vfrqqx4YFCyuueaaPfZ3AAAAIP6pHzbWAUES/jfbHdG2OBr4qjRGM+nRfgDtzqPmXzUoi2r4NdBWQNDAuji/oAkTJvgxFVDU76AZfNV8aTVAQUWrCupDUO2XyoIUWFQSpZ2KtNKhMqOZM2da69at/fOLyn7Uv6DjqGRIpUsffvihrwzoedrpSI3FRd9HFCRUilSuXDlbt26d9y3o8yqgaPCv1YjC71f43HQs7cykFQwdTwEFAAAAhy6NOVWWXhzjX00ia1Jc49793AAoPy5CQkC1+WoAHjBggO9AdChTSFDJ0F133WUAAADAwRZNSIir6yToAyh06Hao08qAUiAAAABwqImrlQRROZDKbxhgAwAAAJGLZiUh7rpcVdMPAAAAIHbiqtwIAAAAQOwREgAAAACEEBIAAAAAhBASAAAAAIQQEgAAAACEEBIAAAAAhBASAAAAAIQQEgAAAACEEBIAAAAAhBASAAAAAIQQEgAAAACEEBIAAAAAhBASAAAAAIREHBISEhIsPz/fAAAAAMQnjdkjEXFISEpKstzcXMvLyzMAAAAA8UOT+dnZ2R4SIgkKyRahxMREf8MdO3ZYWlqahwYAAAAAsaeAkJmZ6WP0SEJCQnp6elQ1QzoBrShQegQAAADEB4WD4BaB/IhXEgIpKSl+AwAAAHB4YHcjAAAAACFRrySozIhSIwAAACB+RNqwHIgqJARd0wQFAAAAIL6oHyE5Ofng7m6kUJCVleX9CKmpqexuBAAAAMSJnJwcy8jI8H8j6R+OuCdB10dQKiEgAAAAAPFFKwi6TEGku5BGFRIUDnS9BAAAAADxRWP1SNsCIh7h04MAAAAAHJ5YBgAAAAAQQkgAAAAAEEJIAAAAABBCSAAAAAAQQkgAAAAAEEJIAAAAABBCSAAAAAAQQkgAAAAAEEJIAAAAABBCSAAAAAAQQkgAAAAAEEJIAAAAABASdyEhPz/fAAAAAMROssWJ7du325dffmnjxo2zY4891q6++mqrVKmSAQAAADi44mIlIS8vz55//nkPCa1atbJly5bZHXfcYenp6QYAAADg4IqLkLB06VJbtGiRPfHEE/a73/3O/61Zs6avKgAAAAA4uOIiJKxZs8bKli3rN0lMTLT69evb4sWLLZbUH5GRkWEH265du3x1JVKxOm8AAABEJzs72+JBXISEnJyc3Q6Ks7KyrDgpjOi9Ctu0aZPt3Llzt89X2dOjjz7q/RIHU79+/WzEiBEWqVidNwAAAKLTt29fW758ucVa3OxupNnz9evXF9z0e3F766237L///W/ovpdeeslGjRq12+dXr17drrzySktJSbED7cMPPywY1Ldt29aOP/74/Xm5zZ071yZMmOA/H8zzBgAAQPE5//zz7amnnop5UIibkDB58mS76qqr7PLLL/fbu+++a8Xt4osvtu+//75gNWHr1q3eD6Fmaa1arFy50m9BQElOTrZGjRpZampqwfNXrFjhIUYlPbpt2LDB79uxY8cv3k+P67l6vHATtlZN1q5d6/crGOgYCgkzZsywzMxMH+TXqlXLVz4Kr7Dod9Fr9FodQ++hlZAxY8bYF198YZs3b97jeQfPl23btvlNx1y9enVU5U0AAAAoHk2aNLFu3bp5UFB1SKzEdAvUb7/91urUqeODWg3Si+5mpPtVDqSZ/iuuuMJ7FaJx4okn+oB83bp1PghXY3Tjxo2tZMmS9vLLL/tgORh0P/vssz5wfvDBB+2VV17xAfbrr7/u55Cbm2v33nuv90x88sknfuyNGzfa008/bTVq1Ch4vylTpth7773nx9GxdcyjjjrKPvjgAx/Up6WleYO2zmX+/Pn2/vvvW1JSko0dO9bq1atn06ZNszPOOMMuuOACH8w/+eST9vDDD/uKiELJqlWr7LLLLvOQo52h1IegsKH7HnroIT9v/ed65513/Lz12fXcrl272siRI23w4MG+YrFkyRI75ZRT7M4777SEhAQDAABA7ARBQZv59OzZ0yeQD7aYhoRZs2bZggUL7MILL/QBs2bRAxqsqnl53rx5Hia0ChDMjEdK5Tdnn322ffPNN3bDDTfY119/7ddj0KBcg24N4vUer732mg0aNMiuvfbagtcqIOgctASkc9NqxOOPP24333yz1a1b1z7//HP77LPP7NZbby14jf7A3bt391Dx73//24PB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PWYrV670n9U/8ec//9l/Hj16tN1444128803W69evezss8+2vSl63Ndee82mTp3qP19wwQUeOAo3ahfHygcAAAAODV27dvUKlVgHhbjZAvVgUQP0KaecYv369fNSpoSEhILHNCCfNWuWff311z7Df9ZZZ1mbNm181UCN1H//+9/tpptu8sCikKPXqq9COzLJsmXL7IwzzrC6det62ZBWGfS8du3aWZ06dbz/Yt68eda4cWO78sorbcyYMR5QtKtTZmamVapUyebOneuP6Zh6/qJFi6x27drWqVMnK1OmjL333nv+vGAp6rbbbrOyZct6+Bk1apQHr86dO1vlypUNAAAAhxZNFnfr1s1eeeUVDwqaiNb47mA7Ii+mdt111/kg/ueffw7dP3/+fHvppZesadOmdtlll9mbb77pg3g1UWvQrebqWrVqeenTjBkzrFmzZh4ItALQqFEjmzZtmvcnqF9Bx2nSpIlv4aotXdesWWOlS5e2jh072g8//OABoejrFQwUOjT4VzO3SrIUGLTqod9zc3P9PbQblFYstPqhc9Tz3n77bQ80J554ogcOAAAAHJoUFP70pz/Z5MmTvcw9FmIWElR3v6/bmqrcKKjbLw4atN91111e6rNr166C+zV41+rBeeedZy1atPAZea0qVK9e3Wfr1R9RsWLFgucrOOj3o446yqpWrVpwv4LFqaee6oN/BY7jjjvO6tev789RuNB7asVgT69fvny5P0dhRq/XspMCjC42J1pV+M1vfmMdOnTw52oFRDcFjGOOOcaDDAAAAA5NmjBWb4KuG3b88cdbLMQsJIwdO9bq1atn5cqV+9XnqoTniy++KNb6fA2yNej/4IMPCu7TwFwlPYESJUqEypH21fbt2wu2cw3oYnETJkzwFQM1a2dlZe3x9QpEWlZKTv7/ajD1bej3oC6t8P36TpQ2n376aS9D6t69u40bN84AAABw6NF4T6Xuqh5R2VHRMeXBErOQoN2Azj33XB+Yq/5/bzeFBC216JoJxemOO+7wlBZsr9q6dWsPIyoZ0nupxl8rCqKBuZpI9mVFQyFA/QQqMVq/fr2X/2glQGVLDRs29D6DgI6r9y8cGrSyoPfSEpNWD7755hsPNCpX2h2dk/okLr74Yr9KtfoqAAAAcOj59NNPYx4QJGaNy5oFHzBggL3//vv+uwa5msXXzL1mxzUbrxKfgGbS1QQcrcKlOBUqVLBbbrnFr+wsJ510ki1ZssQefvhhL4Vq2bKlD7xFJT4vvviidenSxVc/gmChMqFgh6bgZ4UNlQEFV4r+/e9/b7/73e/srbfesu+++87PIRjwX3LJJfbGG2/4Z1M40LH1Gu2mpIvJKTzouCo5UtlV4ffT81SupNKtgQMHerjRd6ZSKgAAABx6NM6LdUCQhP8NziOq4dHgVR9CFzyLpCRHoUAz7UEJzQsvvGDNmze3tm3ber2+AoRKZ4LyHw3oq1WrFtF7AQAAAEcaTbxrAxxNLO/nDkn5MVtJ0Ix34ZUCzZTrGgHr1q3zLUG1q4/6BmKx5RMAAABwJIvZSsLuqFZfNVg1a9b00p+gQRcAAADA/olmJSGuQgIAAACA4hFNSKCWBwAAAEAIIQEAAABACCEBAAAAQAghAQAAAEAIIQEAAABACCEBAAAAQAghAQAAAEAIIQEAAABACCEBAAAAQAghAQAAAEAIIQEAAABACCEBAAAAQAghAQAAAEAIIQEAAAA4TCUkJFgkIg4JiYmJlpeXZ/n5+QYAAAAgvmisHqmIQ0JSUpLl5uZadnY2QQEAAACIExqbKyBkZmb6xL5u+yvZIqSlixIlStiuXbssKyvLQwMAAACA2MvJyfGwoPF6JCIOCaJUojfWioJOBAAAAEBsaTI/OTk5ohWEQFQhofBJAAAAADg8sLsRAAAAgJColwBU60TjMgAAABA/VO0T6fanElVIUDgIdjciKAAAAADxQxsLqS0gkrAQcUhQKNCuRikpKZaamsruRgAAAECc0KZCGRkZ/q/G6/sr4p4E7b2qVEJAAAAAAOKLVhDS0tJ8F9JIKn6iCgkKB9FsrQQAAADgwNBYPdK2gIhH+PQgAAAAAIcnlgEAAAAAhBASAAAAAIQQEgAAAACEEBIAAAAAhBASAAAAAIQQEgAAAACEEBIAAAAAhBASAAAAAIQQEgAAAACEEBIAAAAAhBASAAAAAIQQEgAAAACEEBIAAAAAhBASAAAAAITEPCRkZWVZbm6uAQAAAIgPyRYjeXl59u2339pnn31mJUuWtJtvvtkaNmzoj+Xk5NjOnTt/8Zrk5GQrVaqUAQAAADhwYhYSpkyZYv369bMbb7zRNm/ebPfff7/961//snLlytnEiRPtjTfe+MUKQ+nSpa1Xr15WsWJFO1zl5+fbrl27LC0tzQAAAHBkyc7OtpSUFIu1mIWESZMmWatWreySSy7x34cMGWLLli2zpk2bWvPmze2hhx7yAXNh+sLKli1r0dKXv27dOqtdu7bFG30Hffr0sccee8zKlCmz2+coRHz00Ue2adMmu+WWWwgUAAAAh4m+ffvalVdeaXXq1LFYillPQuPGje3HH3+0xYsX+8pBYmKiVa1a1R/TikGjRo3suOOOC93q16/vJUfR0ipGhw4d7Oeff7ZYWblypX311Ve/uL969er+H2NvCXLcuHE2efJka9u2bVwkTQAAABSP888/35566ilbvny5xVLMVhLOOOMMmzVrlv3pT3/yPgPNiAchQf0IGzdu/MVrNCCuUaOGRevLL7/0Afann35qzZo1K7g/IyPDZ+eDwKJAsn37dtuyZYv/XK1aNX9s69atlp6e7uej+xISErxkSp8jNTXVeyr0u46xbdu2gs+klRGFAK1kaJCvkNCiRQurUqVKwTnofRSQdBwdQ++h90tKSvLX6hwVrLSiEpxjcN6i8yE4AAAAHJqaNGli3bp186Cgypq6detaLMQkJKhcZv369XbZZZd5uZEG2bopGGjgq5WFJ554wgfThVWqVMnefvvt0KB6f2nAv3DhQv/SH330UR+Iq8dB9//973/3wb/ORSsNRx99tJf+6Dw08L/99tt9oP/OO+94WNiwYYOXTHXt2tUGDhxo9erV81UAHevBBx+0V155xUaOHGmDBw+2448/3pYsWWKnnHKKXX311fb555/bokWLbNCgQdalS5eChuzCr9Uxp06d6mVRc+fOtWuvvdZLsRRyFAw+/PBDu/zyy/0c9btuWoXp0aOH/wsAAIBDTxAUNB7u2bOnTxQfbDEJCaq10q5GCgtFPfPMM3bOOef47UAYM2aMD9iPOeYYL19SILnooot8VUFh4eGHHy4oaXruuee8R0KDc4UCueeee+yKK67w89Og/KabbrKLL754r++p8PDII494ALnrrru8Wfv666+3ESNG+H+AvdH76z0XLFhgL774ooeqq666ylavXu3hQkFCqwd33nmnhxsFHwUThRwAAAAcmjQuVeXIqlWrjpyQoDKb/v37/6Jx+P3337dhw4bZmWeeaQeCtl1VOKlZs6Z98sknHgaGDh1qF1xwgc2ePdtXNgr3PMyYMcN+97vfFQQEUWOxSpQ0INfsv4KGVhT2RiGhRIkSVrlyZcvMzPRrQ+yrBg0a+PtrFUUrGkVXV1SypUCgciRR+dKKFSsMAAAAhyZNBvfu3dvat2/vY7tYiElIULnQ6NGjvewmGNyq9l+NxBoU64tRU3PRLVC12895550XGrTvj6VLl/ps/llnneXlQyeccIJNmDDBm4jLly/v/xamBKf7NMgPKBgoFOgzaMCu8iCdl8JFcG0HlTApkBwMKs9ScFEZk0qh9N1FU44FAACA2FmzZo0HhAsvvNDatGnjE9OxEJOQ8Le//c26d+9uY8eOtdatW3vZjhp51XCrWXHNhOuxolugqpm3ZcuWPqseCV287dRTT7Vrrrmm4AtXCFCN/29/+1s/Jw36RX8YlRI9//zzNn/+fF8BUJlP586d/VoNelx/xFq1avlqgh5/+umnPfTMnDmzoGF5TzSQVwOyVlVUuhTprk06J523mpsVnubMmeOlTQAAADj0qNom1gFBEv43s55vEVDJjAbEmlmP5ANoMD5q1ChvIlYpjho0NIA/kHv+a3VCg3rdArpegs5BM/FaIVCPgs7n5JNPtgoVKnhgUYDRRd50nxqCFRpUiqSVBr0uOOfp06f7wF/buwZNzWrQ1mdVb4HoM5900kl+lWmdjwb3Z599tgcgUdjQ++m1WvlQcFL/ROH7ix5Tn0Hnrb+DvkOVNQEAAODQo+oajTeLIyBowl1jRo0z97MSJz9mIQEAAADAgRNNSIjZxdQAAAAAxCdCAgAAAIAQQgIAAACAEEICAAAAgBBCAgAAAIAQQgIAAACAEEICAAAAgBBCAgAAAIAQQgIAAACAEEICAAAAgBBCAgAAAIAQQgIAAACAEEICAAAAgBBCAgAAAIAQQgIAAACAEEICAAAAgJCIQ0JCQoLl5+cbAAAAgPikMXskIg4JSUlJlpuba3l5eQYAAAAgfmgyPzs720NCJEEh2SKUmJjob7hjxw5LS0vz0AAAAAAg9hQQMjMzfYweSUhISE9Pj6pmSCegFQVKjwAAAID4oHAQ3CKQH/FKQiAlJcVvAAAAAA4P7G4EAAAAICTqlQSVGVFqBAAAAMSPSBuWA1GFhKBrmqAAAAAAxBf1IyQnJx/c3Y0UCrKysrwfITU1ld2NAAAAgDiRk5NjGRkZ/m8k/cMR9yTo+ghKJQQEAAAAIL5oBUGXKYh0F9KoQoLCga6XAAAAACC+aKweaVtAxCN8ehAAAACAwxPLAAAAAABCCAkAAAAAQggJAAAAAEIICQAAAABCCAkAAAAAQggJAAAAAEIICQAAAABCCAkAAAAAQggJAAAAAEIICQAAAABCCAkAAAAAQggJAAAAAELiJiTk5+cbAAAAgNhLthhSMJg7d6598cUXtnbtWjv11FPtoosuspIlSxoAAACA2IjpSsL48ePt0UcftaSkJGvRooWNHDnSHn74YcvMzCx4jn7Ozc01AAAAAAdHQnp6ekR1PllZWT64L1WqlCUkJNj+ysvLsxtuuMFuu+02O++88/y+7Oxsu/POO61Dhw6+ojB8+HAbMWKElS5d2m655RZr2LChAQAAAPh1qtrZsmWLpaamWmLifq0N5MdsJUEn/L+AYieeeGLBfSkpKXb22WfbnDlzfJXh3XfftUsuucSOPfZYe+CBB2zHjh0GAAAAHK40aR4PYhYSypYt6/9u3Lix4D6tLixdutRq1KhhU6ZMsdatW1u7du18FUGrFevXr7fikJGRYatXr7YVK1bY5s2baZoGAABAXOjbt68tX77cYi1mIUGrBio36tmzp82cOdPWrFljQ4YMsZ9//tlXExo3bmwTJkywJUuW2NixY32JJC0tzaK1ePFi69Wrl73wwgvWp08fe+KJJ2zDhg22v7QS8tlnn+13v4QatfW5AAAAgKLOP/98e+qpp2IeFGK6u1HHjh3930ceecQH2/Xr1/dG5tq1a1u1atV8QN2tWzcrUaKE/eEPf/D7oqEVhGeffdbf94ILLvDgodWLoKdi69atXgKlAKP30v3btm3zx3bu3OkrDtWrV/fXzJgxwz7++GNr2rSp1atXz7Zv3+7BofBrCx9TtWDq3xgzZoz/0Rs1amQVKlSwdevW+bJSxYoVvfcCAAAAR64mTZr4+FdB4aGHHrK6detaLMSkcVk7FmlwXJhCgo4XUDlS+fLlvSRIg3O9R5UqVaJaTVCfw0cffWRPPvmkB4/CtJrxzjvveHDQykKrVq2sa9euvroxePBgO/74431V45RTTrHOnTv7MSZOnOhpT83Xb731lvdMrFq1yi677DL77W9/awsWLLDXX3/dj6nP1759e19CUli59NJLPWB88MEH/v4KH/fee6+HDAAAABzZZs2aZS+99JJX3WicGIloGpdjspLw73//2wYNGhTa6rQoDeIHDBhgb775pn333Xf+ITWofuWVV/yDRkKBo2bNmr8ICKJB/hVXXGHnnHOOD+Jvuukmu/jii/0xrRRotUMrAnfddZfdeOONduutt/r5q6Fa56NdmURB4u233/ZjKSDoGAoSQZBSX4X6Ibp06eKfrWXLlnbVVVd5QCIgAAAAQFRloklzTUBHGhKiEbOQ8Nprr3nJzZ706NHDJk2a5DP2ohKfNm3a+Cy/ypEioXKewo3ShS1btsyaNWvmg3mtjqj0KehVUEhQsKhcubIHA62iFKYVBH0mJTWltKCESE3YzZs33+NKy+WXX27PPPOMh6DrrruuYCtYAAAAHLk0ody7d2+vQtG1xGIhJo3LycnJu53NL6zozLoG91WrVvXXRkrbrc6ePdsWLVpUcJ/ChygYBKFAA3wN+MuUKbNPx1V/gnoXunfvbp06dSroLdC5btq0aY+vUyp89dVX/QJyWsnQTksAAAA4cmkzHwWECy+80CfII7keWXGIyUrCqaeeal999ZXX8u+OBsvTp0+3a665xn9X82+/fv28T6BSpUoWKa1A3HzzzT6Y1xdfrlw5X0FQj4Fu2vVI9+uPU6tWLV9NUKjYnaDp+PPPP/edmBQ81JQ8derUgus56POpUbpt27ZewqTPo2Cgi8TpuWqGVt+CzkPvV7gnAwAAAEee/v37xzwgSEwal1W3/8c//tH++te/2mmnnVawqqDmXtXsq1Zfx9QWqUOHDvXAoLos1f8XR03WypUr/ZgauB999NFeZqRVi/nz5/uqgN5LDcpqklYfg1YV1A8ho0aNspNOOsk/t46hnYrOPfdc/0x6vVYrtESkQKNeheCY2vFI133Q51IDtShcKFQoLJx88sl+fQgAAAAcubRjpqpSiiMgRNO4HJOQIJMnT7ann37adzDSFZXVmKHB9cKFC33rp7vvvtsH3tOmTfPfVdtPYy8AAACwbw7JkCCaQVcIUDjQ8XQsza43aNBgfz8IAAAAgEIO2ZAAAAAA4MCIJiQwXQ8AAAAghJAAAAAAIISQAAAAACCEkAAAAAAghJAAAAAAIISQAAAAACCEkAAAAAAghJAAAAAAIISQAAAAACCEkAAAAAAghJAAAAAAIISQAAAAACCEkAAAAAAghJAAAAAAICTikJCQkGD5+fkGAAAAID5pzB6JiENCUlKS5ebmWl5engEAAACIH5rMz87O9pAQSVBItgglJib6G+7YscPS0tI8NAAAAACIPQWEzMxMH6NHEhIS0tPTo6oZ0gloRYHSIwAAACA+KBwEtwjkR7ySEEhJSfEbAAAAgMMDuxsBAAAACIlqJUElRmpcpoEZAAAAiB9BqZH6iCMRVUhQONCtRIkSNC4DAAAAcUAT+Tk5OZaVleXj9EiCgkJCRB3HwQpCqVKl6EkAAAAA4khqaqrt2rXLbyVLlvy1p/9i+6P/AxLzgaft3EodAAAAAElFTkSuQmCC',
+ Yi = {
+ key: 0,
+ class: 'card',
+ },
+ Ki = { class: 'card-body' },
+ Zi = { class: 'card-wrapper' },
+ Hi = { class: 'title' },
+ Ji = { class: 'button' },
+ _i = { class: 'allow' },
+ $i = { class: 'image-wrapper' },
+ Ao = ['src'],
+ eo = /* @__PURE__ */ V({
+ __name: 'SystemPermitTip',
+ props: {
+ platform: {},
+ language: {},
+ },
+ setup(s) {
+ const A = {
+ mac: {
+ 'zh-cn': Ve,
+ en: Xi,
+ },
+ win: {
+ 'zh-cn': Wi,
+ en: Fi,
+ },
+ },
+ e = s,
+ l = _(() => (e.platform === 'mac' ? 'mac-privacy' : 'win-privacy')),
+ n = _(() => (e.platform === 'mac' ? 'mac-preferences' : 'win-preferences')),
+ r = g(Ve),
+ c = g(!0),
+ I = (M) => {
+ M && eA.isPC && (c.value = !0);
+ },
+ d = () => {
+ c.value = !1;
+ };
+ return (
+ rA(
+ () => e.language,
+ () => {
+ r.value = A[e.platform][e.language];
+ },
+ {
+ immediate: !0,
+ }
+ ),
+ K(() => {
+ i.watch(
+ o.CALL,
+ {
+ [a.SHOW_PERMISSION_TIP]: I,
+ },
+ {
+ notifyRangeWhenWatch: a.MYSELF,
+ }
+ );
+ }),
+ H(() => {
+ i.unwatch(o.CALL, {
+ [a.SHOW_PERMISSION_TIP]: I,
+ });
+ }),
+ (M, L) =>
+ t(c)
+ ? (u(),
+ N('div', Yi, [
+ C('div', Ki, [
+ C(
+ 'div',
+ {
+ class: 'close',
+ onClick: d,
+ },
+ [x(ki)]
+ ),
+ C('div', Zi, [
+ C('div', Hi, b(t(X)('browser-authorization')), 1),
+ C('div', Ji, b(t(X)(t(n))), 1),
+ C('div', _i, b(t(X)(t(l))), 1),
+ C('div', $i, [
+ C(
+ 'img',
+ {
+ src: t(r),
+ class: 'image',
+ alt: 'system permit',
+ },
+ null,
+ 8,
+ Ao
+ ),
+ ]),
+ ]),
+ ]),
+ ]))
+ : p('', !0)
+ );
+ },
+ });
+const to = /* @__PURE__ */ Q(eo, [['__scopeId', 'data-v-2ea845a3']]),
+ ao = { class: 'tip' },
+ lo = { class: 'card' },
+ so = /* @__PURE__ */ V({
+ __name: 'PermitTip',
+ setup(s) {
+ const A = _(() => (eA.isMAC ? te.MAC : te.WIN)),
+ e = g(i.getData(o.CALL, a.LANGUAGE)),
+ l = (n) => (e.value = n);
+ return (
+ K(() => {
+ i.watch(
+ o.CALL,
+ {
+ [a.LANGUAGE]: l,
+ },
+ {
+ notifyRangeWhenWatch: a.MYSELF,
+ }
+ );
+ }),
+ H(() => {
+ i.unwatch(o.CALL, {
+ [a.LANGUAGE]: l,
+ });
+ }),
+ (n, r) => (
+ u(),
+ N('div', ao, [
+ C('div', lo, [
+ x(
+ to,
+ {
+ platform: t(A),
+ language: t(e),
+ },
+ null,
+ 8,
+ ['platform', 'language']
+ ),
+ ]),
+ ])
+ )
+ );
+ },
+ });
+const no = /* @__PURE__ */ Q(so, [['__scopeId', 'data-v-cd63c32e']]),
+ $e = {};
+let Ae = null,
+ io = 1;
+const oo = () => {
+ const s = document.body,
+ A = document.createElement('div');
+ Ae && (s.removeChild(Ae.el), zA(null, A));
+ const e = x(no, {
+ index: `permit-item-${io++}`,
+ // eslint-disable-line
+ destroy() {
+ zA(null, A);
+ },
+ });
+ zA(e, A), s.appendChild(A.firstElementChild), (Ae = e);
+};
+$e.show = () => oo();
+const ro = { class: 'toast-content' },
+ co = /* @__PURE__ */ V({
+ __name: 'Toast',
+ props: {
+ type: {},
+ duration: {},
+ message: {},
+ index: {},
+ showClose: { type: Boolean },
+ destroy: { type: Function },
+ close: { type: Function },
+ },
+ setup(s) {
+ const A = s,
+ e = g(!1),
+ l = g(null),
+ n = _(() => `toast-container ${A.type}`),
+ r = () => {
+ A.destroy();
+ },
+ c = () => {
+ A.close(), (e.value = !1);
+ },
+ I = () => {
+ l.value && clearTimeout(l.value),
+ A.duration &&
+ (l.value = setTimeout(() => {
+ c();
+ }, A.duration));
+ };
+ return (
+ K(() => {
+ (e.value = !0), I();
+ }),
+ H(() => {
+ l.value && clearTimeout(l.value);
+ }),
+ (d, M) => (
+ u(),
+ h(
+ st,
+ {
+ name: 'slide-up',
+ onAfterLeave: r,
+ },
+ {
+ default: DA(() => [
+ yA(
+ (u(),
+ N(
+ 'div',
+ {
+ key: d.index,
+ class: R(t(n)),
+ },
+ [
+ C('div', ro, b(d.message), 1),
+ yA(
+ C(
+ 'i',
+ {
+ onClick: c,
+ class: 'toast-close-icon',
+ },
+ null,
+ 512
+ ),
+ [[EA, d.showClose]]
+ ),
+ ],
+ 2
+ )),
+ [[EA, t(e)]]
+ ),
+ ]),
+ _: 1,
+ }
+ )
+ )
+ );
+ },
+ });
+const uo = /* @__PURE__ */ Q(co, [['__scopeId', 'data-v-27fc22c5']]),
+ NA = {},
+ nA = [];
+let Io = 1;
+function Mo() {
+ var A, e, l;
+ const s = nA.length;
+ return s > 0 ? ((l = (e = (A = nA[s - 1]) == null ? void 0 : A.el) == null ? void 0 : e.style) == null ? void 0 : l.top) : '30px';
+}
+function go() {
+ var A, e;
+ const s = nA.length;
+ return s > 0 ? ((e = (A = nA[s - 1]) == null ? void 0 : A.el) == null ? void 0 : e.offsetHeight) : 0;
+}
+const At = (s) => {
+ const { type: A, duration: e = 3e3, message: l, showClose: n = !1, onClose: r } = s,
+ c = document.body,
+ I = document.createElement('div'),
+ d = x(uo, {
+ type: A,
+ duration: e,
+ message: l,
+ showClose: n,
+ index: `toast-item-${Io++}`,
+ // eslint-disable-line
+ close() {
+ var D, y, j, m;
+ const T = nA.findIndex((S) => S === d);
+ console.log((y = (D = nA[T]) == null ? void 0 : D.el) == null ? void 0 : y.offsetHeight);
+ const E = parseInt((m = (j = nA[T]) == null ? void 0 : j.el) == null ? void 0 : m.offsetHeight) + 20;
+ for (let S = 0; S < nA.length; S++) S < T || (nA[S].el.style.top = parseInt(nA[S].el.style.top) - E + 'px');
+ nA.splice(T, 1);
+ },
+ destroy() {
+ zA(null, I);
+ },
+ });
+ zA(d, I), c.appendChild(I.firstElementChild);
+ const M = Mo(),
+ L = go();
+ (d.el.style.top = parseInt(M) + parseInt(L) + 20 + 'px'), nA.push(d);
+};
+['info', 'waring', 'error', 'success'].forEach((s) => {
+ let A = {};
+ NA[s] = (e) => {
+ typeof e == 'string' ? (A.message = e) : (A = e), At({ type: s, ...A });
+ };
+});
+NA.show = (s) => {
+ let A = {};
+ return typeof s == 'string' ? ((A.message = s), (A.type = 'info')) : (A = s), At({ type: 'info', ...A });
+};
+const JA = /* @__PURE__ */ V({
+ __name: 'TUICallKit',
+ props: {
+ beforeCalling: {},
+ afterCalling: {},
+ onMinimized: {},
+ onMessageSentByMe: {},
+ kickedOut: {},
+ statusChanged: {},
+ allowedMinimized: { type: Boolean, default: !1 },
+ allowedFullScreen: { type: Boolean, default: !0 },
+ videoDisplayMode: { default: 'cover' },
+ videoResolution: { default: '480p' },
+ },
+ setup(s) {
+ const A = !eA.isPC,
+ e = g(i.getData(o.CALL, a.CALL_STATUS)),
+ l = g(i.getData(o.CALL, a.IS_GROUP)),
+ n = A ? 'TUICallKit-mobile transition-animation' : 'TUICallKit-desktop',
+ r = g(''),
+ c = g(''),
+ I = g(''),
+ d = g(!1),
+ M = g(i.getData(o.CALL, a.CALL_MEDIA_TYPE)),
+ L = s,
+ {
+ beforeCalling: T,
+ afterCalling: E,
+ onMinimized: D,
+ onMessageSentByMe: y,
+ videoDisplayMode: j,
+ videoResolution: m,
+ kickedOut: S,
+ statusChanged: k,
+ allowedMinimized: U,
+ } = nt(L),
+ q = (W) => {
+ e.value = W;
+ },
+ v = (W) => {
+ l.value = W;
+ },
+ O = (W) => {
+ W.text && $(W.text, W.type || 'info');
+ },
+ G = (W) => {
+ (M.value = W), A && d.value && ((I.value = 'miniMized-mobile-audio'), (c.value = '')), A && !d.value && (c.value = 'mobile-audio');
+ },
+ Y = (W) => {
+ (d.value = W),
+ W
+ ? A
+ ? M.value === z.AUDIO
+ ? (c.value = 'miniMized-mobile-audio')
+ : (I.value = 'miniMized-mobile-video')
+ : (r.value = 'miniMized')
+ : ((c.value = 'mobile-audio'), (r.value = ''), (I.value = ''));
+ },
+ f = (W) => {
+ if (W && eA.isPC)
+ try {
+ $e.show();
+ } catch (PA) {
+ console.debug(PA);
+ }
+ };
+ VA(() => {
+ w.setCallback({
+ beforeCalling: T && T.value,
+ afterCalling: E && E.value,
+ onMinimized: D && D.value,
+ onMessageSentByMe: y && y.value,
+ kickedOut: S && S.value,
+ statusChanged: k && k.value,
+ });
+ }),
+ K(() => {
+ U.value && w.enableFloatWindow(U.value),
+ w.setVideoDisplayMode(j.value),
+ w.setVideoResolution(m.value),
+ i.watch(
+ o.CALL,
+ {
+ [a.CALL_STATUS]: q,
+ [a.IS_GROUP]: v,
+ [a.TOAST_INFO]: O,
+ [a.CALL_MEDIA_TYPE]: G,
+ [a.SHOW_PERMISSION_TIP]: f,
+ },
+ {
+ notifyRangeWhenWatch: a.MYSELF,
+ }
+ ),
+ i.watch(o.CALL, {
+ [a.IS_MINIMIZED]: Y,
+ });
+ });
+ function $(W, PA) {
+ switch (PA) {
+ case 'info':
+ NA == null || NA.info(W);
+ break;
+ case 'error':
+ NA == null || NA.error(W);
+ break;
+ }
+ }
+ return (
+ H(() => {
+ i.unwatch(o.CALL, {
+ [a.CALL_STATUS]: q,
+ [a.IS_GROUP]: v,
+ [a.TOAST_INFO]: O,
+ [a.IS_MINIMIZED]: Y,
+ [a.SHOW_PERMISSION_TIP]: f,
+ });
+ }),
+ (W, PA) =>
+ t(e) !== t(B).IDLE
+ ? (u(),
+ N(
+ 'div',
+ {
+ key: 0,
+ id: 'tui-call-kit-id',
+ class: R([t(n), t(r), t(I), t(c)]),
+ },
+ [
+ t(l)
+ ? (u(),
+ h(Bi, {
+ key: 1,
+ class: 'singCall',
+ }))
+ : (u(),
+ h(
+ Ts,
+ {
+ key: 0,
+ class: 'singCall',
+ 'allowed-full-screen': W.allowedFullScreen,
+ },
+ null,
+ 8,
+ ['allowed-full-screen']
+ )),
+ ],
+ 2
+ ))
+ : p('', !0)
+ );
+ },
+});
+const No = (s) => (s.component('TUICallKit', { server: w }), w.bindTUICore(s), JA),
+ Lo = (s) => {
+ s.component('TUICallKit', JA), console.log('TUICallKit&mini installed', s);
+ };
+JA.plugin = No;
+JA.install = Lo;
+const To = {
+ AUDIO_CALL: 1,
+ VIDEO_CALL: 2,
+ },
+ yo = '2.5.2';
+export {
+ z as CallMediaType,
+ J as CallRole,
+ a as NAME,
+ AA as STATUS,
+ o as StoreName,
+ JA as TUICallKit,
+ w as TUICallKitServer,
+ To as TUICallType,
+ eA as TUIGlobal,
+ i as TUIStore,
+ yo as Version,
+ mA as VideoDisplayMode,
+ OA as VideoResolution,
+ Lo as install,
+ No as plugin,
+ X as t,
+};
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/tuicall-uikit-vue.umd.js b/iweb/src/TUIKit/TUIComponents/components/call/tuicall-uikit-vue.umd.js
new file mode 100644
index 0000000..e6dce5c
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/tuicall-uikit-vue.umd.js
@@ -0,0 +1,2 @@
+(function(){"use strict";try{if(typeof document!="undefined"){var t=document.createElement("style");t.appendChild(document.createTextNode('@charset "UTF-8";.singleInvite-message[data-v-b7fbc004]{display:flex;flex-direction:column;padding:0 16px;justify-content:center;align-items:center}.singleInvite-message .singleInvite-nick[data-v-b7fbc004]{line-height:40px;text-align:center;font-size:20px;color:#333;letter-spacing:0;font-weight:500;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.singleInvite-message .singleInvite-tips[data-v-b7fbc004]{height:20px;font-size:14px;color:#97989c;letter-spacing:0;font-weight:400;text-align:center}.singleInvite-avatar[data-v-b7fbc004]{width:100px;height:100px;border-radius:12px;margin:0 auto}.singleInvite-box[data-v-5121a73b]{display:flex}.singleInvite-box .singleInvite-message[data-v-5121a73b]{color:#fff;display:flex;flex-direction:column;padding:0 16px;justify-content:center}.singleInvite-box .singleInvite-message .singleInvite-nick[data-v-5121a73b]{font-size:20px;letter-spacing:0;margin:0 auto;font-weight:600;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.singleInvite-box .singleInvite-message .singleInvite-tips[data-v-5121a73b]{font-size:14px;letter-spacing:0;text-align:center;font-weight:400}.singleInvite-box .singleInvite-avatar[data-v-5121a73b]{width:100px;height:100px;border-radius:12px}.singleInvite-header-mobile{display:flex;justify-content:flex-end;padding:0 26px}.singleInvite-header-mobile .singleAudio{margin:0 auto}.singleInvite-header-mobile .singleVideo{display:flex}.singleInvite-header-desktop{display:flex;flex-direction:column;justify-content:flex-start;align-items:center;position:relative;top:30%}.singleInvite-header-desktop .singleInvite-message .singleInvite-nick{font-style:normal;font-weight:600;font-size:40px;line-height:56px;display:flex;flex-direction:row;align-items:center;justify-content:center;width:100%;color:#fff}.singleInvite-header-desktop .singleInvite-message .singleInvite-nick .singleInvite-nick-span{max-width:250px;overflow:hidden;text-overflow:ellipsis;text-align:center;line-height:normal;white-space:nowrap}.singleInvite-header-desktop .singleInvite-message .singleInvite-nick .microphone-icon-container{width:24px;height:24px;background:rgba(0,0,0,.4);border-radius:12px;line-height:24px;margin-left:8px}.singleInvite-header-desktop .singleInvite-tips{font-style:normal;font-weight:400;font-size:14px;line-height:20px;color:#fff}.btn-container[data-v-08b206cb]{display:flex;flex-direction:column;align-items:center;width:70px}.btn-container .btn-body[data-v-08b206cb]{cursor:pointer}.btn-container .btn-body.mobile[data-v-08b206cb]{display:flex;align-items:center;justify-content:center}.btn-container .btn-body img[data-v-08b206cb]{width:100%;height:100%}.btn-container .btn-body image[data-v-08b206cb]{width:100%;height:100%}.btn-container .btn-body .invite-calling-item-loading[data-v-08b206cb]{width:100%;height:100%;animation:rotation-08b206cb 2s linear infinite}@keyframes rotation-08b206cb{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.btn-container .btn-body .invite-calling-item-loading img[data-v-08b206cb]{width:100%;height:100%}.btn-container .btn-text[data-v-08b206cb]{margin-top:5px;white-space:nowrap;font-weight:400;font-size:16px;line-height:20px;text-align:center}.btn-container .btn-text.desktop[data-v-08b206cb]{font-size:14px}.btn-operate-mobile[data-v-5467a3cd]{display:flex;flex-direction:column;align-items:center;position:relative}.btn-operate-mobile .call-operate[data-v-5467a3cd]{width:50px;height:50px;border-radius:8vh;margin:0 5vw;box-sizing:border-box;display:flex;justify-content:center;align-items:center}.btn-operate-mobile .call-operate .invite-calling-item-loading[data-v-5467a3cd]{width:40px;height:40px;animation:rotation-5467a3cd 2s linear infinite}.btn-operate-mobile .call-operate .invite-calling-item-loading img[data-v-5467a3cd]{width:100%;height:100%}.btn-operate-mobile .call-operate .operate-img[data-v-5467a3cd]{width:100%;height:100%;background:none}.btn-operate-mobile .call-operate .operate-img .hangup-img[data-v-5467a3cd]{width:100%;height:100%}.btn-operate-mobile .call-operate .switchAudioCall[data-v-5467a3cd]{width:6vw;height:3vh}.btn-operate-mobile .call-switch .call-operate[data-v-5467a3cd]{width:4vh;height:3vh}.btn-operate-mobile .operate-text[data-v-5467a3cd]{margin:6px 0}.btn-operate-desktop .call-operate[data-v-5467a3cd]{display:flex;flex-direction:column;width:40px;height:40px;margin:0 40px;cursor:pointer}.btn-operate-desktop .invite-calling-item-loading[data-v-5467a3cd]{width:40px;height:40px;animation:rotation-5467a3cd 2s linear infinite}@keyframes rotation-5467a3cd{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.btn-operate-desktop .invite-calling-item-loading img[data-v-5467a3cd]{width:100%;height:100%}.btn-operate-desktop img[data-v-5467a3cd]{width:100%;display:flex;flex-direction:row;justify-content:center;align-items:center;position:relative}.btn-operate-desktop span[data-v-5467a3cd]{display:block;margin-top:5px;white-space:nowrap;font-weight:400;font-size:14px;line-height:20px;text-align:center}.btn-operate-item[data-v-ac984e67]{position:absolute;width:100%;height:100%;top:10px;right:-100px}.btn-operate-item .operate-img[data-v-ac984e67]{width:32px;height:32px}.btn-operate-desktop .call-operate[data-v-76389d5e]{display:flex;flex-direction:column;width:40px;height:40px;cursor:pointer}.btn-operate-desktop .operate-img[data-v-76389d5e]{width:100%;display:flex;flex-direction:row;justify-content:center;align-items:center;position:relative}.btn-operate-desktop span[data-v-76389d5e]{display:block;margin-top:5px;white-space:nowrap;font-weight:400;font-size:14px;line-height:20px;text-align:center}.btn-operate-mobile[data-v-76389d5e]{display:flex;flex-direction:column;align-items:center;margin-bottom:20px}.btn-operate-mobile .call-operate[data-v-76389d5e]{width:28px;height:26px;border-radius:8vh;box-sizing:border-box;display:flex;justify-content:center;align-items:center}.btn-operate-mobile .call-operate .operate-img[data-v-76389d5e]{width:100%;height:100%;background:none}.btn-operate-mobile span[data-v-76389d5e]{margin-top:10px}.popover-container[data-v-f800d151]{position:absolute;width:180px;display:flex;flex-direction:column;align-items:center}.popover-container .body[data-v-f800d151]{display:flex;overflow:hidden;flex-direction:column;align-items:flex-start;width:100%;box-sizing:border-box;padding:10px;border-radius:10px;background-color:#6b758a82;text-overflow:ellipsis;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);color:#fff;z-index:10}.popover-container .triangle[data-v-f800d151]{width:6px;height:6px;background-color:#6b758a82;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);transform:rotate(45deg);margin-top:-3px}.scroll-container[data-v-66448e1e]{width:100%;overflow:hidden}.scroll-container .scroll-content[data-v-66448e1e]{max-height:60px;margin-right:-20px;overflow:hidden auto;padding-right:20px}.device-select-label[data-v-66448e1e]{width:100%;overflow:hidden;padding:5px 3px;text-overflow:ellipsis;white-space:nowrap;font-size:14px;text-align:left;line-height:20px;cursor:pointer}.device-select-label.btn[data-v-66448e1e]{border-top:1px solid rgba(255,255,255,.2)}.device-select-label[data-v-66448e1e]:hover{border-radius:5px;background:rgba(255,255,255,.3215686275)}.device-select-label.select[data-v-66448e1e]{background-color:#0f101433;border-radius:3px}.scroll-container[data-v-23fb3fba]{width:100%;overflow:hidden}.scroll-container .scroll-content[data-v-23fb3fba]{max-height:60px;margin-right:-20px;overflow:hidden auto;padding-right:20px}.camera-container[data-v-23fb3fba]{position:relative;display:flex}.camera-container .arrow-btn[data-v-23fb3fba]{left:43px;width:12px;height:12px;margin-top:7px;padding:5px 5px 5px 0;cursor:pointer}.camera-container .arrow-btn img[data-v-23fb3fba]{width:100%;height:100%}.device-select-label[data-v-23fb3fba]{width:100%;overflow:hidden;padding:5px 3px;text-overflow:ellipsis;white-space:nowrap;font-size:14px;text-align:left;line-height:20px;cursor:pointer}.device-select-label.btn[data-v-23fb3fba]{border-top:1px solid rgba(255,255,255,.2)}.device-select-label[data-v-23fb3fba]:hover{border-radius:5px;background:rgba(255,255,255,.3215686275)}.scroll-container[data-v-f1733acd]{width:100%;overflow:hidden}.scroll-container .scroll-content[data-v-f1733acd]{max-height:60px;margin-right:-20px;overflow:hidden auto;padding-right:20px}.camera-container[data-v-f1733acd]{position:relative;display:flex}.camera-container .arrow-btn[data-v-f1733acd]{left:43px;width:12px;height:12px;margin-top:7px;padding:5px 5px 5px 0;cursor:pointer}.camera-container .arrow-btn img[data-v-f1733acd]{width:100%;height:100%}.device-select-label[data-v-f1733acd]{width:100%;overflow:hidden;padding:5px 3px;text-overflow:ellipsis;white-space:nowrap;font-size:14px;text-align:left;line-height:20px;cursor:pointer}.device-select-label.btn[data-v-f1733acd]{border-top:1px solid rgba(255,255,255,.2)}.device-select-label[data-v-f1733acd]:hover{border-radius:5px;background:rgba(255,255,255,.3215686275)}.text[data-v-c15a821a]{display:block;margin-bottom:20px}.control-wrapper-desktop[data-v-f4e4b14c]{transform:translate(-50%);position:absolute;bottom:0;padding-bottom:40px;left:50%;width:100%;color:#fff;border-radius:inherit;background:linear-gradient(180deg,rgba(0,0,0,0) 0%,rgba(0,0,0,.4) 100%);display:flex;flex-direction:column;flex-wrap:wrap;align-items:center;-webkit-user-select:none;user-select:none}.control-wrapper-desktop .panel-button-area[data-v-f4e4b14c]{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-evenly;margin:30px 0;min-width:40%}.control-wrapper-desktop .panel-button-area .btn[data-v-f4e4b14c]{margin:0 35px}.control-wrapper-desktop .panel-button-area .btn-operate-desktop .call-operate[data-v-f4e4b14c]{display:flex;flex-direction:column;width:40px;height:40px;margin:0 40px;cursor:pointer}.control-wrapper-desktop .panel-button-area .btn-operate-desktop img[data-v-f4e4b14c]{width:100%;display:flex;flex-direction:row;justify-content:center;align-items:center;position:relative}.control-wrapper-desktop .panel-button-area .btn-operate-desktop span[data-v-f4e4b14c]{display:block;margin-top:5px;white-space:nowrap;font-weight:400;font-size:14px;line-height:20px;text-align:center}.control-wrapper-mobile[data-v-f4e4b14c]{position:absolute;bottom:20px;width:100%;display:flex;flex-direction:column;justify-content:center;align-items:center}.control-wrapper-mobile .btn-operate[data-v-f4e4b14c]{display:flex;justify-content:center;align-items:center;position:relative;font-size:16px;letter-spacing:0;font-weight:400;margin-bottom:6px}.control-wrapper-mobile .btn-operate .mobile-reject[data-v-f4e4b14c],.control-wrapper-mobile .btn-operate .mobile-accept[data-v-f4e4b14c]{margin:0px 16vw 40px}.control-wrapper-mobile .btn-operate .mobile-switchAudioCall[data-v-f4e4b14c]{font-size:14px}.control-wrapper-mobile .btn-operate .mobile-switchcamera[data-v-f4e4b14c]{position:absolute;left:80px;top:10px}.control-wrapper-mobile .btn-operate .btn[data-v-f4e4b14c]{margin:0 5vw}.black[data-v-f4e4b14c]{color:#000}.white[data-v-f4e4b14c]{color:#fff}.streamDisplay .remoteListBox>div,.streamDisplay .remoteList-desk>div,.streamDisplay .localVideo>div{background-color:#4c515a!important}.streamBox[data-v-0e391dc0]{width:100%;height:100%}.streamBox .callDuration-text[data-v-0e391dc0]{position:absolute;bottom:20px;left:50%;transform:translate(-50%);font-size:12px;color:#fff;font-family:PingFang SC;font-weight:500px;line-height:20px}.streamBox-mobile[data-v-0e391dc0]{position:relative;height:100%}.streamBox-mobile .smallView[data-v-0e391dc0]{position:fixed;top:8%;right:10%;z-index:999;width:40%;height:30%}.streamBox-mobile .smallView .remoteListBox[data-v-0e391dc0]{width:40%;height:30%}.streamBox-mobile .largeView[data-v-0e391dc0]{width:100%;height:100%}.streamBox-deskTop[data-v-0e391dc0]{position:relative;width:100%;height:100%}.streamBox-deskTop .switchScreenBox[data-v-0e391dc0]{cursor:pointer;position:absolute;top:20px;left:260px;z-index:999}.streamBox-deskTop .switchScreenBox .screenImg[data-v-0e391dc0]{width:16px}.streamBox-deskTop .largeView[data-v-0e391dc0],.streamBox-deskTop .largeView .remoteListBox[data-v-0e391dc0]{width:100%;height:100%}.streamBox-deskTop .smallView[data-v-0e391dc0]{position:absolute;top:20px;left:20px;width:260px;height:180px;z-index:999;background-color:#000}.streamBox-deskTop .smallView .remoteListBox[data-v-0e391dc0]{width:100%;height:100%}.streamBox-deskTop .tag[data-v-0e391dc0]{color:#fff;z-index:inherit;background:rgba(0,0,0,.6);padding:2px 10px;border-top-right-radius:inherit;border-bottom-left-radius:inherit;font-size:14px;position:absolute;left:0;bottom:0;z-index:11;display:flex;align-items:center}.streamBox-deskTop .tag .microphone-icon-container[data-v-0e391dc0]{margin-left:0;margin-right:2px;width:20px;background-color:transparent}.streamBox-deskTop .tag .stream-userInfo[data-v-0e391dc0]{max-width:120px;overflow:hidden;text-overflow:ellipsis;line-height:normal;white-space:nowrap}.small-view[data-v-ba28a885]{position:fixed;top:8%;right:10%;width:40%;height:30%;z-index:999;background-color:#000}.small-view .stream-box[data-v-ba28a885],.small-view .stream-box .stream[data-v-ba28a885]{width:100%;height:100%}.large-view[data-v-ba28a885]{width:100%;height:100%;background-color:#000}.large-view .stream-box[data-v-ba28a885]{width:100%;height:100%}.large-view .stream-box .stream[data-v-ba28a885]{z-index:1;width:100%;height:100%}.small-view[data-v-9c668a74]{position:fixed;top:8%;right:10%;width:40%;height:30%;z-index:999;background-color:#000}.small-view .stream-box[data-v-9c668a74],.small-view .stream-box .stream[data-v-9c668a74]{width:100%;height:100%}.large-view[data-v-9c668a74]{width:100%;height:100%;background-color:#000}.large-view .stream-box[data-v-9c668a74]{width:100%;height:100%}.large-view .stream-box .stream[data-v-9c668a74]{z-index:1;width:100%;height:100%}.streamBox-mobile[data-v-9f380d5c]{width:100%;height:100%;position:relative;background-color:#000}.streamBox-mobile .callDuration-text[data-v-9f380d5c]{position:absolute;bottom:20px;left:50%;transform:translate(-50%);font-size:12px;color:#fff;font-family:PingFang SC;font-weight:500px;line-height:20px}.float-control-panel[data-v-1c12e806]{width:168px;height:56px;background:white;z-index:13;display:flex;flex-wrap:nowrap;justify-content:center;border-radius:40px;box-shadow:#00000029 0 3px 6px,#0000003b 0 3px 6px}.float-control-item-icon[data-v-1c12e806]{display:flex;flex-direction:row;justify-content:center;align-items:center;width:56px;height:56px;position:relative}.float-control-item-icon-container[data-v-1c12e806]{border-radius:40px;width:40px;height:40px;margin:.5rem;cursor:pointer;display:flex;flex-direction:row;justify-content:center;align-items:center}.float-control-item-icon-container[data-v-1c12e806]:hover{background:rgba(218,218,218,.3)}.phone-box[data-v-65da9f94]{width:72px;height:72px;background-color:#fff;display:flex;justify-content:center;align-items:center;flex-direction:column;border-radius:12px;box-shadow:#00000029 0 3px 6px,#0000003b 0 3px 6px}.phone-box .phone-img[data-v-65da9f94]{height:36px;margin-bottom:4px}.phone-box .phone-text[data-v-65da9f94]{font-size:12px;color:#1c66e5;font-family:PingFang SC;font-weight:500px;line-height:16px}.minimize[data-v-18b58bb9]{margin-left:10px}.zoom-box[data-v-209bc62d]{display:block;width:20px;height:20px}.zoom-box .zoom-img[data-v-209bc62d]{width:100%;height:100%}.btn-operate-mobile[data-v-445cd42e]{z-index:99}.videoStyle[data-v-445cd42e]{background:#00183c}.audioStyle[data-v-445cd42e]{position:absolute;background-color:#fff}.singleCall-mobile[data-v-445cd42e]{width:100%;height:100%;display:flex;flex-direction:column;z-index:0}.singleCall-mobile .inviteHeader[data-v-445cd42e]{width:100%;position:fixed;top:107px;z-index:99}.singleCall-mobile .live-pusher[data-v-445cd42e]{width:100%;height:100%}.singleCall-desktop[data-v-445cd42e]{width:100%;height:100%;text-align:center;z-index:0;background:#00183c;position:relative}.singleCall-desktop .toggleSize[data-v-445cd42e]{position:absolute;right:12px;top:12px;z-index:13;cursor:pointer;display:flex;flex-direction:row;justify-content:flex-start}.singleCall-desktop .inviteHeader[data-v-445cd42e]{position:absolute;left:50%;top:42%;transform:translate(-50%,-50%);z-index:99}.topToolbar-desk[data-v-445cd42e]{position:absolute;top:40px;transform:translate(-50%,-50%);left:50%}.topToolbar-desk .topToolbar-time[data-v-445cd42e]{font-size:16px;font-weight:500}.topToolbar-mobile[data-v-445cd42e]{position:absolute;top:30px;left:20px;z-index:99}.topToolbar-mobile-floatWindow[data-v-445cd42e]{position:absolute;z-index:99}.weChatBody[data-v-445cd42e]{width:100%;height:100%}.avatar[data-v-53f6717e]{width:120px;height:120px;border-radius:12px;display:block;margin:40px auto 15px}.tips[data-v-53f6717e]{width:126px;height:auto;font-family:PingFangSC-Regular;font-weight:400;font-size:14px;color:#333;letter-spacing:0;margin:16px auto 40px;text-align:center}.nick[data-v-53f6717e]{font-size:20px;letter-spacing:0;margin:0 auto;font-weight:600;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center}.list-tips[data-v-53f6717e]{width:112px;height:auto;font-family:PingFangSC-Regular;font-weight:400;font-size:14px;color:#333;letter-spacing:0;margin:0 auto 24px;text-align:center}.list[data-v-53f6717e]{position:absolute;left:14vw;margin-top:0 auto;display:flex;width:272px;justify-content:center;flex-wrap:wrap}.list-item[data-v-53f6717e]{flex:.25;text-align:center;width:64px;margin:2px}.list-item .list-avatar[data-v-53f6717e]{border-radius:10%;width:64px;height:64px}.list-item .list-name[data-v-53f6717e]{font-family:PingFangSC-Regular;font-weight:400;font-size:12px;color:#666;letter-spacing:0;line-height:18px;max-width:60px;overflow:hidden;text-overflow:ellipsis;line-height:normal;white-space:nowrap}.groupInvite-header-desktop[data-v-7e774bdd]{display:flex;flex-direction:column;justify-content:flex-start;align-items:center;position:absolute;left:50%;top:42%;transform:translate(-50%,-50%)}.groupInvite-header-desktop .singleInvite-message[data-v-7e774bdd]{text-align:center}.groupInvite-header-desktop .singleInvite-message .singleInvite-nick[data-v-7e774bdd]{font-style:normal;font-weight:600;font-size:40px;line-height:56px;display:flex;align-items:center;justify-content:center;color:#fff}.groupInvite-header-desktop .singleInvite-message .singleInvite-nick .singleInvite-nick-span[data-v-7e774bdd]{max-width:250px;overflow:hidden;text-overflow:ellipsis;text-align:center;line-height:normal;white-space:nowrap}.groupInvite-header-desktop .singleInvite-message .singleInvite-tips[data-v-7e774bdd]{font-style:normal;font-weight:400;font-size:14px;line-height:20px;color:#fff}.control-wrapper-desktop[data-v-655fef75]{transform:translate(-50%);position:absolute;bottom:0;padding-bottom:40px;left:50%;width:100%;color:#fff;border-radius:inherit;background:linear-gradient(180deg,rgba(0,0,0,0) 0%,rgba(0,0,0,.4) 100%);display:flex;flex-direction:column;flex-wrap:wrap;align-items:center;-webkit-user-select:none;user-select:none}.control-wrapper-desktop .panel-button-area[data-v-655fef75]{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-evenly;margin:30px 0;min-width:40%}.control-wrapper-desktop .panel-button-area .btn[data-v-655fef75]{margin:0 40px}.control-wrapper-desktop .panel-button-area .btn-operate-desktop .call-operate[data-v-655fef75]{display:flex;flex-direction:column;width:40px;height:40px;margin:0 40px;cursor:pointer}.control-wrapper-desktop .panel-button-area .btn-operate-desktop img[data-v-655fef75]{width:100%;display:flex;flex-direction:row;justify-content:center;align-items:center;position:relative}.control-wrapper-desktop .panel-button-area .btn-operate-desktop span[data-v-655fef75]{display:block;margin-top:5px;white-space:nowrap;font-weight:400;font-size:14px;line-height:20px;text-align:center}.control-wrapper-mobile[data-v-655fef75]{position:absolute;bottom:20px;width:100%;display:flex;flex-direction:column;justify-content:center;align-items:center}.control-wrapper-mobile .btn-operate[data-v-655fef75]{display:flex;justify-content:center;align-items:center;position:relative;font-size:16px;letter-spacing:0;font-weight:400;margin-bottom:10px}.control-wrapper-mobile .btn-operate .btn[data-v-655fef75]{margin:0 5vw}.control-wrapper-mobile .btn-operate .mobile-invite[data-v-655fef75]{margin-right:30px}.control-wrapper-mobile .btn-operate .mobile-reject[data-v-655fef75],.control-wrapper-mobile .btn-operate .mobile-accept[data-v-655fef75]{margin:0px 16vw 20px}.control-wrapper-mobile .btn-operate .mobile-switchAudioCall[data-v-655fef75]{font-size:14px}.black[data-v-655fef75]{color:#000}.white[data-v-655fef75]{color:#fff}.swiper-item[data-v-5b8dff3a]{position:absolute;display:flex;flex-direction:row;flex-wrap:wrap}.slide-left-enter-active[data-v-5b8dff3a]{transition:all .3s}.slide-left-leave-active[data-v-5b8dff3a]{transform:all .3s}.slide-left-enter-from[data-v-5b8dff3a]{transform:translate(100%)}.slide-left-leave-to[data-v-5b8dff3a]{opacity:0;transform:translate(0)}.slide-right-enter-active[data-v-5b8dff3a],.slide-right-leave-active[data-v-5b8dff3a]{transition:all .3s}.slide-right-enter-from[data-v-5b8dff3a]{opacity:0;transform:translate(-100%)}.slide-right-leave-to[data-v-5b8dff3a]{opacity:0;transform:translate(100%)}.swipe .swiper-sliders-container{position:relative;display:flex;flex-wrap:wrap;align-content:flex-start;width:100%;overflow-x:hidden}.swipe .swiper-sliders-container.swiper-sliders-container-column{flex-direction:column}.swipe .swiper-sliders-container.swiper-sliders-container-row{flex-direction:row}#localVideo[data-v-a3d705eb]{width:100%;height:100%}.invite-calling-list[data-v-a3d705eb]{display:flex;flex-wrap:wrap;width:100%;justify-content:flex-start}.invite-calling-item[data-v-a3d705eb]{height:187px;background-color:#000}.invite-calling-item image[data-v-a3d705eb]{width:100%;height:100%}.invite-calling-item-message[data-v-a3d705eb]{position:absolute;top:0;left:0;float:left;width:100%;height:100%;z-index:2}.invite-calling-item-message .tag[data-v-a3d705eb]{color:#fff;z-index:inherit;background:rgba(0,0,0,.6);padding:2px 10px;border-top-right-radius:inherit;border-bottom-left-radius:inherit;font-size:14px;position:absolute;left:0;bottom:0;z-index:11;display:flex;align-items:center}.invite-calling-item-message .tag .microphone-icon-container[data-v-a3d705eb]{margin-top:4px;margin-right:2px;width:16px;background-color:transparent}.invite-calling-item-message .tag .stream-userInfo[data-v-a3d705eb]{max-width:120px;overflow:hidden;text-overflow:ellipsis;line-height:normal;white-space:nowrap}.invite-calling-item-loading[data-v-a3d705eb]{position:absolute;left:calc(50% - 20px);top:calc(50% - 20px);width:40px;height:40px;animation:rotation-a3d705eb 2s linear infinite}@keyframes rotation-a3d705eb{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.invite-calling-item-loading img[data-v-a3d705eb]{width:100%;height:100%}.invite-calling-item-id[data-v-a3d705eb]{position:absolute;left:2%;bottom:2%;font-family:PingFangSC-Regular;font-weight:400;font-size:12px;color:#fff;max-width:120px;overflow:hidden;text-overflow:ellipsis;line-height:normal;white-space:nowrap}.avatar[data-v-a3d705eb]{background-color:#000;width:100%;height:100%}.group-user-view>span+div{background-color:#4c515a!important}.calling-wrapper[data-v-5a91c8ad]{position:relative;width:100%;height:100%;border-radius:inherit;background:rgba(0,24,60,.7);-webkit-backdrop-filter:blur(34px);backdrop-filter:blur(34px);display:flex;flex-direction:column;justify-content:center;overflow:hidden;z-index:-1}.calling-wrapper[data-v-5a91c8ad]:hover{z-index:inherit;transition:all .5s ease-in-out}#local-dialing[data-v-5a91c8ad],#localVideo[data-v-5a91c8ad]{background-color:#4c515a;background-repeat:no-repeat;background-size:auto;background-position-x:center;background-position-y:calc(50% + 10px)}.localStream-userInfo[data-v-5a91c8ad]{max-width:120px;overflow:hidden;text-overflow:ellipsis;line-height:normal;white-space:nowrap}.panel-button-area[data-v-5a91c8ad]{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:center;margin:30px 0}.panel-dialing-info[data-v-5a91c8ad]{text-align:center}.control-wrapper[data-v-5a91c8ad]:hover{z-index:13}.control-item[data-v-5a91c8ad]{display:flex;flex-direction:column;width:100px;margin:0 20px}.invite-calling-item-loading[data-v-5a91c8ad]{position:absolute;left:calc(50% - 20px);top:calc(50% - 40px);width:40px;height:40px;animation:rotation-5a91c8ad 2s linear infinite}.invite-userInfo[data-v-5a91c8ad]{max-width:120px;overflow:hidden;text-overflow:ellipsis;line-height:normal;white-space:nowrap}@keyframes rotation-5a91c8ad{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.invite-calling-item-loading img[data-v-5a91c8ad]{width:100%;height:100%}.tag[data-v-5a91c8ad]{color:#fff;z-index:inherit;background:rgba(0,0,0,.6);padding:2px 10px;border-top-right-radius:inherit;border-bottom-left-radius:inherit;font-size:14px;position:absolute;left:0;bottom:0;z-index:11;display:flex;align-items:center}.tag .microphone-icon-container[data-v-5a91c8ad]{margin-left:0;margin-right:2px;width:20px;background-color:transparent}.tag .stream-userInfo[data-v-5a91c8ad]{max-width:120px;overflow:hidden;text-overflow:ellipsis;line-height:normal;white-space:nowrap}.switch-large-small[data-v-5a91c8ad]{position:absolute;right:12px;top:12px;width:16px;height:16px;z-index:inherit;cursor:pointer}.small-h5[data-v-5a91c8ad]{position:absolute;width:94px;height:160px;min-height:100px;max-height:60%;top:30px;right:10px;z-index:2;overflow:hidden;background:#000;border-radius:4px}.small[data-v-5a91c8ad]{position:absolute;width:260px;height:170px;min-height:100px;max-height:60%;top:30px;left:30px;z-index:2;overflow:hidden;resize:both;background:#000;border-radius:4px}.large[data-v-5a91c8ad]{min-height:100px;width:100%;height:100%;z-index:1;border-radius:inherit;overflow:hidden}.large .switch-large-small[data-v-5a91c8ad]{display:none}.group-calling-container[data-v-5a91c8ad]{width:100%;height:100%;display:flex;flex-wrap:wrap;justify-content:center}.group-user-view[data-v-5a91c8ad]{width:33.333%;height:33.333%;position:relative;background-color:#4c515a;-webkit-backdrop-filter:blur(34px);backdrop-filter:blur(34px);color:#fff;overflow:hidden}.user-view-text-container[data-v-5a91c8ad]{position:absolute;left:0;top:0;width:100%;height:100%;z-index:11;display:flex;flex-direction:column;justify-content:center;align-items:center;transform:translateY(-20px)}.user-view-user-id[data-v-5a91c8ad]{font-family:PingFang SC;font-style:normal;font-weight:600;font-size:24px;line-height:34px}.user-view-info[data-v-5a91c8ad]{font-family:PingFang SC;font-style:normal;font-weight:400;font-size:12px;line-height:17px}.page-turn[data-v-5a91c8ad]{width:40px;height:86px;border-radius:4.21px;background:rgba(0,0,0,.2);position:absolute;top:50%;transform:translateY(-50%);z-index:11;display:flex;justify-content:center;align-items:center;cursor:pointer}.turn-icon-container[data-v-5a91c8ad]{width:14px;height:23px}.right[data-v-5a91c8ad]{right:0}.microphone-icon-container[data-v-5a91c8ad]{width:24px;height:24px;background:rgba(0,0,0,.4);border-radius:12px;display:flex;justify-content:center;align-items:center;margin-left:8px}.group-user-view-1[data-v-5a91c8ad]{width:100%;height:100%}.group-calling-container-1[data-v-5a91c8ad]{height:100%}.group-user-view-2[data-v-5a91c8ad]{width:50%;height:100%}.group-calling-container-2[data-v-5a91c8ad]{height:50%}.group-user-view-3[data-v-5a91c8ad],.group-user-view-4[data-v-5a91c8ad]{width:50%;height:50%}.group-calling-container-3[data-v-5a91c8ad],.group-calling-container-4[data-v-5a91c8ad]{height:100%}.group-user-view-5[data-v-5a91c8ad],.group-user-view-6[data-v-5a91c8ad]{width:33.333%;height:50%}.group-calling-container-5[data-v-5a91c8ad],.group-calling-container-6[data-v-5a91c8ad]{height:66%}.user-view-user-id-1[data-v-5a91c8ad]{font-size:24px}.user-view-user-id-2[data-v-5a91c8ad],.user-view-user-id-3[data-v-5a91c8ad],.user-view-user-id-4[data-v-5a91c8ad]{font-size:22px}.user-view-user-id-5[data-v-5a91c8ad],.user-view-user-id-6[data-v-5a91c8ad],.user-view-user-id-7[data-v-5a91c8ad],.user-view-user-id-8[data-v-5a91c8ad],.user-view-user-id-9[data-v-5a91c8ad]{font-size:18px}.float-control-panel[data-v-5a91c8ad]{width:168px;height:56px;background:white;z-index:13;position:fixed;top:20px;right:20px;display:flex;flex-wrap:nowrap;justify-content:center;border-radius:40px;box-shadow:#00000029 0 3px 6px,#0000003b 0 3px 6px}.function-buttons[data-v-5a91c8ad]{position:absolute;right:12px;top:12px;z-index:13;cursor:pointer;display:flex;flex-direction:row;justify-content:flex-start}.minimize[data-v-5a91c8ad]{margin-left:10px}.float-control-item-icon[data-v-5a91c8ad]{display:flex;flex-direction:row;justify-content:center;align-items:center;width:56px;height:56px;position:relative}.float-control-item-icon-container[data-v-5a91c8ad]{border-radius:40px;width:40px;height:40px;margin:.5rem;cursor:pointer;display:flex;flex-direction:row;justify-content:center;align-items:center}.float-control-item-icon-container[data-v-5a91c8ad]:hover{background:rgba(218,218,218,.3)}.swipe{width:100%;height:100%;position:absolute;flex-wrap:wrap;display:flex;align-items:flex-start;align-content:flex-start}.swipe .swiper-sliders-container{position:relative;width:100%}.swipe .swipe-dots-container{position:absolute;width:100%;display:flex;justify-content:center;top:400px}.swipe .swipe-dots-container .swipe-dots{width:8px;height:8px;background:#000;opacity:.15;border-radius:20px;margin:5px}.swipe .swipe-dots-container .swipe-current-dots{width:8px;height:8px;background:#000;opacity:1;border-radius:20px;margin:5px}.swiper-item[data-v-444f63bd]{position:absolute;display:flex;flex-direction:row;flex-wrap:wrap;width:50%;height:187px}.slide-left-enter-active[data-v-444f63bd]{transition:all .3s}.slide-left-leave-active[data-v-444f63bd]{transform:all .3s}.slide-left-enter-from[data-v-444f63bd]{transform:translate(100%)}.slide-left-leave-to[data-v-444f63bd]{opacity:0;transform:translate(0)}.slide-right-enter-active[data-v-444f63bd],.slide-right-leave-active[data-v-444f63bd]{transition:all .3s}.slide-right-enter-from[data-v-444f63bd]{opacity:0;transform:translate(-100%)}.slide-right-leave-to[data-v-444f63bd]{opacity:0;transform:translate(100%)}.invite-list[data-v-8c218c4b]{width:100%;height:187px}.invite-calling-list[data-v-8c218c4b],.invite-calling-list .list-box[data-v-8c218c4b]{display:flex;flex-wrap:wrap;width:100%;justify-content:flex-start}.invite-calling-list .list-box .invite-calling-item[data-v-8c218c4b]{width:100%;height:187px}.invite-calling-list .list-box .invite-calling-item .invite-calling-item-message[data-v-8c218c4b]{width:100%;height:100%;position:relative}.invite-calling-list .list-box .invite-calling-item .invite-calling-item-message .invite-calling-item-loading[data-v-8c218c4b]{position:absolute;left:calc(50% - 20px);top:calc(50% - 20px);width:40px;height:40px;animation:rotation-8c218c4b 2s linear infinite}@keyframes rotation-8c218c4b{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.invite-calling-list .list-box .invite-calling-item .invite-calling-item-message .avatar[data-v-8c218c4b]{width:100%;height:100%}.invite-calling-list .list-box .invite-calling-item .invite-calling-item-message .invite-calling-item-id[data-v-8c218c4b]{position:absolute;left:2%;bottom:2%;font-family:PingFangSC-Regular;font-weight:400;font-size:12px;color:#fff}.invite-calling-list .list-box .invite-calling-item .invite-calling-audio[data-v-8c218c4b],.invite-calling-list .list-box .invite-calling-item .invite-calling-audio .pusher-box[data-v-8c218c4b],.invite-calling-list .list-box .invite-calling-item .invite-calling-audio .pusher-box .pusher[data-v-8c218c4b],.invite-calling-list .list-box .invite-calling-item .invite-calling-audio .player-container[data-v-8c218c4b],.invite-calling-list .list-box .invite-calling-item .invite-calling-audio .player-container .player[data-v-8c218c4b]{width:0px;height:0px}.invite-calling-list .list-box .invite-calling-item .invite-calling-item-stream[data-v-8c218c4b],.invite-calling-list .list-box .invite-calling-item .invite-calling-item-stream .pusher-box[data-v-8c218c4b],.invite-calling-list .list-box .invite-calling-item .invite-calling-item-stream .pusher-box .pusher[data-v-8c218c4b]{width:100%;height:100%}.invite-calling-list .list-box .invite-calling-item .invite-calling-item-stream .pusher-box .invite-calling-item-id[data-v-8c218c4b]{position:absolute;left:2%;bottom:2%;font-family:PingFangSC-Regular;font-weight:400;font-size:12px;color:#fff}.invite-calling-list .list-box .invite-calling-item .invite-calling-item-stream .player-container[data-v-8c218c4b]{width:100%;height:100%;background-color:#000}.invite-calling-list .list-box .invite-calling-item .invite-calling-item-stream .player-container .player[data-v-8c218c4b]{width:100%;height:100%}.invite-calling-list .list-box .invite-calling-item .invite-calling-item-stream .player-container .invite-calling-item-id[data-v-8c218c4b]{position:absolute;left:2%;bottom:2%;font-family:PingFangSC-Regular;font-weight:400;font-size:12px;color:#fff}.streamBox[data-v-3308cc63]{width:100%;height:100%}.dialog[data-v-7a89cdf3]{background:rgba(0,0,0,.3)}.dialog-main[data-v-7a89cdf3]{background:#FFFFFF}.dialog-main-header[data-v-7a89cdf3]{font-weight:500;color:#333}.dialog-main-title[data-v-7a89cdf3]{font-family:PingFangSC-Medium;font-weight:500;color:#333}.dialog-main-back[data-v-7a89cdf3]{background:none}.dialog-main-content[data-v-7a89cdf3]{font-weight:400;color:#333}.btn[data-v-7a89cdf3]{font-weight:400;color:#fff;letter-spacing:0}.btn-cancel[data-v-7a89cdf3]{border:1px solid #dddddd;color:#666}.btn-default[data-v-7a89cdf3]{background:#006EFF;border:1px solid #006EFF}.dialog[data-v-7a89cdf3]{position:absolute;width:100%;height:100%;left:0;top:0;z-index:6;display:flex;justify-content:center;align-items:center}.dialog-main[data-v-7a89cdf3]{min-width:368px;border-radius:10px;padding:20px 30px}.dialog-main-header[data-v-7a89cdf3]{display:flex;justify-content:space-between;align-items:center;font-size:16px;line-height:30px}.dialog-main-title[data-v-7a89cdf3]{font-size:16px;line-height:30px}.dialog-main-content[data-v-7a89cdf3]{font-size:14px}.dialog-main-footer[data-v-7a89cdf3]{display:flex;justify-content:flex-end}.btn[data-v-7a89cdf3]{padding:8px 20px;margin:0 6px;border-radius:4px;border:none;font-size:14px;text-align:center;line-height:20px}.btn[data-v-7a89cdf3]:disabled{opacity:.3}.btn[data-v-7a89cdf3]:last-child{margin-right:0}.dialog-h5[data-v-7a89cdf3]{height:100%;top:0;align-items:inherit}.dialog-h5 .dialog-main[data-v-7a89cdf3]{border-radius:0;padding:0;display:flex;flex-direction:column;overflow:hidden;width:100%;min-height:80px;min-width:120px}.dialog-h5 .dialog-main-content[data-v-7a89cdf3]{flex:1;min-width:0;min-height:0;text-align:center}.dialog-h5 .dialog-main-content-uniapp[data-v-7a89cdf3]{padding:40px 0}.dialog-h5 .dialog-main-footer[data-v-7a89cdf3]{border-top:1px solid #DDDDDD}.dialog-h5 .dialog-main-footer .btn[data-v-7a89cdf3]{flex:1;margin:0;background:none;border-right:1px solid #DDDDDD}.dialog-h5 .dialog-main-footer .btn-default[data-v-7a89cdf3]{color:#ff584c;border:none}.center[data-v-7a89cdf3]{align-items:center;padding:20px;box-sizing:border-box}.icon[data-v-b989a330]{display:inline-flex;justify-content:center;align-items:center;margin:0}.main[data-v-216330b4]{background:#FFFFFF;border:1px solid #E0E0E0;box-shadow:0 -4px 12px #0000000f}.main .left[data-v-216330b4]{border-right:1px solid #E8E8E9}.main .transfer-header[data-v-216330b4]{font-weight:500;color:#000;letter-spacing:0}.main .transfer-header input[data-v-216330b4]{background:#FFFFFF;border:1px solid #DEE0E3;font-weight:500;color:#8f959e;letter-spacing:0}.main .transfer-list .transfer-text[data-v-216330b4]{font-weight:500;color:#8f959e;letter-spacing:0}.main .transfer-list-item .disabled[data-v-216330b4]{background:#eeeeee}.btn[data-v-216330b4]{background:#3370FF;border:0 solid #2F80ED;font-weight:400;color:#fff}.btn-cancel[data-v-216330b4]{background:#FFFFFF;border:1px solid #DDDDDD;color:#828282}.btn-no[data-v-216330b4]{background:#e8e8e9;border:1px solid #DDDDDD;font-weight:400;color:#fff}.transfer-h5-header[data-v-216330b4]{background:#FFFFFF}.transfer-h5-header .title[data-v-216330b4]{font-family:PingFangSC-Medium;font-weight:500;color:#000;letter-spacing:0}.main[data-v-216330b4]{box-sizing:border-box;width:541px;height:390px;display:flex;border-radius:8px;padding:20px 0}.main .right[data-v-216330b4]{padding:0 20px;flex:1}.main .right .transfer-list[data-v-216330b4]{padding-right:20px}.main .left[data-v-216330b4]{flex:1;overflow-y:hidden;display:flex;flex-direction:column}.main .left .transfer-header[data-v-216330b4]{padding:0 20px}.main .left .transfer-left-main[data-v-216330b4]{flex:1;overflow-y:auto;padding:0 13px}.main .right[data-v-216330b4]{display:flex;flex-direction:column;text-align:left}.main .right .transfer-right-footer[data-v-216330b4]{align-self:flex-end}.main .right .transfer-right-footer .btn-cancel[data-v-216330b4]{margin-right:12px}.main .right .transfer-list[data-v-216330b4]{overflow-y:auto}.main .transfer-header[data-v-216330b4]{font-size:14px;line-height:14px;padding-bottom:20px}.main .transfer-header input[data-v-216330b4]{box-sizing:border-box;width:100%;border-radius:30px;font-size:10px;line-height:14px;padding:9px 12px}.main .transfer-list[data-v-216330b4]{flex:1;display:flex;flex-direction:column}.main .transfer-list .transfer-text[data-v-216330b4]{font-size:10px;line-height:14px}.main .transfer-list-item[data-v-216330b4]{padding:6px 0;display:flex;align-items:center;font-size:14px;text-align:left}.main .transfer-list-item-content[data-v-216330b4]{flex:1;display:flex;align-items:center}.main .transfer-list-item .avatar[data-v-216330b4]{margin:0 5px 0 8px;border-radius:50%}.main .transfer-list-item .name[data-v-216330b4]{width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.avatar[data-v-216330b4]{width:36px;height:36px;border-radius:5px;font-size:12px;display:flex;justify-content:center;align-items:center}.btn[data-v-216330b4],.btn-no[data-v-216330b4]{padding:4px 28px;font-size:12px;line-height:24px;border-radius:4px}.space-between[data-v-216330b4]{justify-content:space-between}.select-all[data-v-216330b4]{padding-left:8px;font-size:14px}.more[data-v-216330b4]{display:flex;justify-content:center;align-items:center;cursor:pointer;font-size:14px}.transfer-h5[data-v-216330b4]{width:100vw;height:100vh;display:flex;flex-direction:column}.transfer-h5-header[data-v-216330b4]{position:relative;display:flex;justify-content:space-between;align-items:center;font-size:18px;padding:16px 18px}.transfer-h5-header .space[data-v-216330b4],.transfer-h5-header .icon[data-v-216330b4]{width:18px;height:18px}.transfer-h5 .main[data-v-216330b4]{flex-direction:column;width:auto;height:550px;border-radius:0;border:none;box-shadow:none;max-height:calc(100% - 50px);padding:0}.transfer-h5 .main .avatar[data-v-216330b4]{border-radius:5px}.transfer-h5 .main .left[data-v-216330b4]{padding:0;flex:1;border:none;display:flex;flex-direction:column}.transfer-h5 .main .left .transfer-header[data-v-216330b4]{position:sticky;top:0;padding:0 18px}.transfer-h5 .main .left .transfer-header input[data-v-216330b4]{border-radius:5px;font-size:14px}.transfer-h5 .main .left-uniapp-input[data-v-216330b4]{height:36px}.transfer-h5 .main .right[data-v-216330b4]{flex:0;flex-direction:row;align-items:center;box-shadow:inset 0 1px #eee;padding:8px 18px}.transfer-h5 .main .right .transfer-list[data-v-216330b4]{flex-direction:row;width:0}.transfer-h5 .main .right .transfer-list-item-content[data-v-216330b4]{flex:none}.transfer-h5 .main .right .transfer-right-footer[data-v-216330b4]{padding:6px 0;display:flex;align-items:center}.transfer-h5 .main .right .transfer-right-footer .btn[data-v-216330b4]{font-size:14px}ul[data-v-216330b4],ol[data-v-216330b4],li[data-v-216330b4]{margin:0;padding:0}.icon-unselected[data-v-216330b4]{width:18px;height:18px;background:#FFFFFF;border:1px solid #DDDDDD;border-radius:11px;box-sizing:border-box}.group-deskTop[data-v-06420ee0]{background:#00183c;z-index:0}.card[data-v-2ea845a3]{box-sizing:border-box;border-radius:4px;border:1px solid #EBEEF5;background-color:#fff;overflow:hidden;color:#303133;transition:.3s;box-shadow:0 2px 12px #0000001a}.card .card-body[data-v-2ea845a3]{padding:20px}.card-wrapper[data-v-2ea845a3]{display:flex;flex-direction:column;align-items:center;width:500px;position:relative}.card-wrapper .button[data-v-2ea845a3]{box-sizing:border-box;background-color:#104ef5;color:#fff;font-size:12px;height:37px;border-radius:4px;padding:10px}.card-wrapper .image-wrapper[data-v-2ea845a3]{box-sizing:border-box}.title[data-v-2ea845a3]{padding:10px 0;font-size:16px;font-weight:500;line-height:22px}.desc[data-v-2ea845a3]{font-size:12px;margin-bottom:10px}.button[data-v-2ea845a3]{background-color:#104ef5;color:#fff;font-size:12px;height:37px;border-radius:4px;padding:10px}.allow[data-v-2ea845a3]{font-size:12px;color:#666;padding:10px 0 20px}.image[data-v-2ea845a3]{width:100%;border-radius:10px}.close[data-v-2ea845a3]{position:absolute;z-index:999;display:flex;justify-content:center;align-items:center;font-size:20px;right:20px;cursor:pointer;width:20px;height:20px}.tips[data-v-cd63c32e]{width:100%;height:100%}.card[data-v-cd63c32e]{position:fixed;right:0;bottom:0;box-shadow:0 2px 12px #0000001a;border-radius:4px;border:1px solid #EBEEF5;background-color:#fff;overflow:hidden;color:#303133;transition:.3s}.tag[data-v-cd63c32e]{position:fixed;left:0;top:0;width:320px;text-align:left}.toast-container[data-v-27fc22c5]{position:fixed;display:flex;align-items:center;z-index:1002;justify-content:space-between;left:50%;transform:translate(-50%);padding:15px 15px 15px 20px;background-color:#000;color:#fff;box-sizing:border-box;border-radius:4px;border-width:1px;border-style:solid}.toast-container .toast-content[data-v-27fc22c5]{margin-right:16px}.toast-container .toast-close-icon[data-v-27fc22c5]{width:16px;line-height:16px;cursor:pointer}.toast-container .toast-close-icon[data-v-27fc22c5]:before{font-style:normal;content:url(data:image/svg+xml;base64,PHN2ZyB0PSIxNjg4OTk4OTI4NDQ1IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjE2MDkiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCI+PHBhdGggZD0iTTUxMiA0NjYuNzUyTDg2LjY1NiA0MS4zNDRhMzIgMzIgMCAwIDAtNDUuMzEyIDQ1LjMxMkw0NjYuNzUyIDUxMiA0MS4zNDQgOTM3LjM0NGEzMiAzMiAwIDAgMCA0NS4zMTIgNDUuMzEyTDUxMiA1NTcuMjQ4bDQyNS4zNDQgNDI1LjQwOGEzMiAzMiAwIDAgMCA0NS4zMTItNDUuMzEyTDU1Ny4yNDggNTEybDQyNS40MDgtNDI1LjM0NGEzMiAzMiAwIDAgMC00NS4zMTItNDUuMzEyTDUxMiA0NjYuNzUyeiIgZmlsbD0iIzcwNzA3MCIgcC1pZD0iMTYxMCI+PC9wYXRoPjwvc3ZnPg==)}.info[data-v-27fc22c5]{border-color:#ebeef5;color:#909399;background-color:#edf2fc}.success[data-v-27fc22c5]{color:#67c23a;background-color:#f0f9eb;border-color:#e1f3d8}.waring[data-v-27fc22c5]{color:#e6a23c;background-color:#fdf6ec;border-color:#faecd8}.error[data-v-27fc22c5]{color:#f56c6c;background-color:#fef0f0;border-color:#fde2e2}.slide-up-enter-active[data-v-27fc22c5],.slide-up-leave-active[data-v-27fc22c5]{transition:all .5s ease-out}.slide-up-enter-from[data-v-27fc22c5]{opacity:0;transform:translate(-50%,20px)}.slide-up-leave-to[data-v-27fc22c5]{opacity:0;transform:translate(-50%,-20px)}.fade-enter-from[data-v-27fc22c5],.fade-leave-to[data-v-27fc22c5]{opacity:0;transform:translate(-50%,-100%)}.TUICallKit-mobile,.TUICallKit-mobile .singCall{width:100%;height:100%}.transition-animation{transform:translateY(-100%);animation:slideInDown .5s ease forwards}@keyframes slideInDown{0%{transform:translateY(-100%)}to{transform:translateY(0)}}.TUICallKit-desktop{margin:0 auto;position:relative;border-radius:inherit;width:100%;height:100%;color:#fff;display:flex;flex-direction:column;justify-content:center;overflow:hidden;z-index:12;border-radius:16px}.TUICallKit-desktop .singCall{width:100%;height:100%}.mobile-audio{background-color:#fff}.miniMized{width:168px!important;height:56px!important;overflow:visible!important}.miniMized-mobile-audio{width:72px;height:72px;position:fixed;top:40px;right:40px}.miniMized-mobile-video{width:40%;height:30%;position:fixed;top:40px;right:40px}')),document.head.appendChild(t)}}catch(e){console.error("vite-plugin-css-injected-by-js",e)}})();
+(function(R,U){typeof exports=="object"&&typeof module<"u"?U(exports,require("tuicall-engine-webrtc"),require("vue")):typeof define=="function"&&define.amd?define(["exports","tuicall-engine-webrtc","vue"],U):(R=typeof globalThis<"u"?globalThis:R||self,U(R["tuicall-uikit-vue"]={},R.TUICALL_ENGINE_WEBRTC,R.Vue))})(this,function(R,U,A){"use strict";var s=(o=>(o.CALL="call",o.CUSTOM="custom",o))(s||{}),T=(o=>(o[o.UNKNOWN=0]="UNKNOWN",o[o.AUDIO=1]="AUDIO",o[o.VIDEO=2]="VIDEO",o))(T||{}),x=(o=>(o.UNKNOWN="unknown",o.CALLEE="callee",o.CALLER="caller",o))(x||{}),j=(o=>(o.IDLE="idle",o.CALLING="calling",o.CONNECTED="connected",o))(j||{}),nA=(o=>(o.CONTAIN="contain",o.COVER="cover",o.FILL="fill",o))(nA||{}),oA=(o=>(o.RESOLUTION_480P="480p",o.RESOLUTION_720P="720p",o.RESOLUTION_1080P="1080p",o))(oA||{}),RA=(o=>(o.EN="en",o["ZH-CN"]="zh-cn",o.JA_JP="ja_JP",o))(RA||{});const G={IDLE:"idle",BE_INVITED:"be-invited",DIALING_C2C:"dialing-c2c",DIALING_GROUP:"dialing-group",CALLING_C2C_AUDIO:"calling-c2c-audio",CALLING_C2C_VIDEO:"calling-c2c-video",CALLING_GROUP_AUDIO:"calling-group-audio",CALLING_GROUP_VIDEO:"calling-group-video"};var J=(o=>(o.EAR="ear",o.SPEAKER="speaker",o))(J||{}),H=(o=>(o.MICROPHONE="microphone",o.CAMERA="camera",o.SPEAKER="speaker",o))(H||{}),iA=(o=>(o[o.FRONT=0]="FRONT",o[o.BACK=1]="BACK",o))(iA||{});const xA={SWITCH_TO_AUDIO_CALL_FAILED:60001,SWITCH_TO_VIDEO_CALL_FAILED:60002,MICROPHONE_UNAVAILABLE:60003,CAMERA_UNAVAILABLE:60004,BAN_DEVICE:60005,NOT_SUPPORTED_WEBRTC:60006,ERROR_BLACKLIST:20007},ze={SWITCH_TO_AUDIO_CALL_FAILED:"switchToAudioCall-call-failed",SWITCH_TO_VIDEO_CALL_FAILED:"switchToVideoCall-call-failed",MICROPHONE_UNAVAILABLE:"microphone-unavailable",CAMERA_UNAVAILABLE:"camera-unavailable",BAN_DEVICE:"ban-device",NOT_SUPPORTED_WEBRTC:"not-supported-webrtc",ERROR_BLACKLIST:"blacklist-user-tips"},NA={CALL_STATUS:"callStatus",CALL_ROLE:"callRole",CALL_MEDIA_TYPE:"callMediaType",LOCAL_USER_INFO:"localUserInfo",LOCAL_USER_INFO_EXCLUDE_VOLUMN:"localUserInfoExcludeVolume",REMOTE_USER_INFO_LIST:"remoteUserInfoList",REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST:"remoteUserInfoExcludeVolumeList",CALLER_USER_INFO:"callerUserInfo",IS_GROUP:"isGroup",CALL_DURATION:"callDuration",CALL_TIPS:"callTips",TOAST_INFO:"toastInfo",IS_MINIMIZED:"isMinimized",ENABLE_FLOAT_WINDOW:"enableFloatWindow",BIG_SCREEN_USER_ID:"bigScreenUserId",LANGUAGE:"language",IS_CLICKABLE:"isClickable",DISPLAY_MODE:"displayMode",VIDEO_RESOLUTION:"videoResolution",PUSHER:"pusher",PLAYER:"player",IS_EAR_PHONE:"isEarPhone",SHOW_PERMISSION_TIP:"SHOW_PERMISSION_TIP",GROUP_ID:"groupID",ROOM_ID:"roomID",SHOW_SELECT_USER:"showSelectUser"},a={PREFIX:"【CallService】",AUDIO:"audio",VIDEO:"video",LOCAL_VIDEO:"localVideo",ERROR:"error",TIMEOUT:"timeout",RAF:"raf",INTERVAL:"interval",DEFAULT:"default",BOOLEAN:"boolean",STRING:"string",NUMBER:"number",OBJECT:"object",ARRAY:"array",FUNCTION:"function",UNDEFINED:"undefined",ALL:"all",MYSELF:"myself",DEVICE_LIST:"deviceList",CAMERA_POSITION:"cameraPosition",...NA},QA=2147483647;var jA=(o=>(o.MAC="mac",o.WIN="win",o))(jA||{}),GA=(o=>(o[o.TUI_CALL_KIT=14]="TUI_CALL_KIT",o[o.TIM_CALL_KIT=15]="TIM_CALL_KIT",o))(GA||{});const Ve={hangup:"Hang up",reject:"Decline",accept:"Accept",camera:"Camera",microphone:"Microphone",speaker:"speaker","open camera":"Open Camera","close camera":"Close Camera","open microphone":"Open Microphone","close microphone":"Close Microphone","video-to-audio":"Switch to audio","other side reject call":"other side reject call","reject call":"Reject Call",cancel:"Cancel Call","other side line busy":"other side line busy","in busy":"in busy","call timeout":"call timeout","no response from the other side":"no response from the other side","end call":"end call","caller calling message":"Awaiting response","callee calling video message":"invites you to a video call","callee calling audio message":"invites you to a voice call","no microphone access":"no microphone access","no camera access":"no camera access","invite member":"Invite Member","Invited group call":"invites you to a group call",waiting:"Calling...",me:"(me)","browser-authorization":"Browser authorization","mac-privacy":"System Preferences -> Security and Privacy -> Privacy","win-privacy":"Setting -> Privacy and Security -> App permissions","mac-preferences":"Open System Preferences","win-preferences":"Open Setting","Please enter userID":"Please enter userID","View more":"View more","people selected":"people selected","Select all":"Select all",Cancel:"Cancel",Done:"Done","camera enabled":"Camera On","camera disabled":"Camera Off","microphone enabled":"Unmuted","microphone disabled":"Muted","speaker phone":"Speaker","ear piece":"Earpiece","wait to be called":"Waiting",answered:"Connected","people in the call":" other(s) in the call","failed to obtain speakers":"failed to obtain speakers","you have a new call":"You have a new call","Those involved":"Those involved in the call are",call:"call","video-call":"video call","audio-call":"audio call",search:"search","search-result":"search result","no-user":"user not found","member-not-added":"member not added","input-phone-userID":"phone number or userID","not-login":"not logged in","login-status-expire":"login status is invalid, please refresh the page and try again","experience-multi-call":"experience multi-person calls, please download the full-featured demo: ","not-support-multi-call":"multi-person call interface is not open",userID:"userID","already-enter":"entered the call","camera-opened":"Camera on","camera-closed":"Camera off","microphone-opened":"Mic on","microphone-closed":"Mic off",timeout:"timeout","kick out":"kick out","image-resolution":"Resolution","default-image-resolution":"Default","invited-person":"Invite","be-rejected":"Call declined, ","be-no-response":"No response, ","be-line-busy":"Line busy, ","be-canceled":"The call is canceled, ","voice-call-end":"Voice call ended","video-call-end":"Video call ended","method-call-failed":"Failed to sync the operation","failed-to-obtain-permission":"Failed to obtain permissions","environment-detection-failed":"Failed to check the environment","switchToAudioCall-call-failed":"switch to audio call method failed","switchToVideoCall-call-failed":"switch to video call method failed","microphone-unavailable":"No mic found","camera-unavailable":"No camera found","ban-device":"Device access denied","not-supported-webrtc":"Your current environment does not support WebRTC","blacklist-user-tips":"The identifier is in blacklist. Failed to send this message!","is-already-calling":"TUICallKit is already on a call","need-init":"Before initiating a call with TUICallKit, ensure that the TUICallKitServer.init() method has executed successfully. ","can't call yourself":"Can't call yourself","Use-phone-and-computer":"Use your mobile phone and computer to experience video calls","Wechat scan right QR code":"Wechat scan right QR code","Scan the QR code above":"Scan the QR code above","accept-error":"Accept failed","accept-device-error":"Accept failed, unable to auth calling device","call-error":"Start call failed"},Oe={hangup:"挂断",reject:"拒绝",accept:"接受",camera:"摄像头",microphone:"麦克风",speaker:"扬声器","open camera":"打开摄像头","close camera":"关闭摄像头","open microphone":"打开麦克风","close microphone":"关闭麦克风","video-to-audio":"转语音通话","other side reject call":"对方已拒绝","reject call":"拒绝通话",cancel:"取消通话","other side line busy":"对方忙线","in busy":"正在忙","call timeout":"呼叫超时","end call":"结束通话","caller calling message":"等待对方接受邀请","callee calling video message":"邀请你视频通话","callee calling audio message":"邀请你语音通话","no microphone access":"没有麦克风权限","no camera access":"没有摄像头权限","invite member":"邀请成员","Invited group call":"邀请你加入多人通话","Those involved":"参与通话的有:",waiting:"等待接听...",me:"(我)","browser-authorization":"浏览器授权","mac-privacy":"系统偏好设置 -> 安全与隐私 -> 隐私","win-privacy":"设置 -> 隐私和安全性 -> 应用权限","mac-preferences":"打开系统偏好设置","win-preferences":"打开系统设置","Please enter userID":"请输入 userID","View more":"查看更多","people selected":"人已选中","Select all":"全选",Cancel:"取消",Done:"完成","camera enabled":"摄像头已开","camera disabled":"摄像头已关","microphone enabled":"麦克风已开","microphone disabled":"麦克风已关","speaker phone":"扬声器已开","ear piece":"扬声器已关","wait to be called":"等待接听",answered:"已接通","people in the call":"人参与通话","failed to obtain speakers":"无法获取扬声器","you have a new call":"您有一个新的通话",timeout:"超时","kick out":"被踢",call:"通话","video-call":"视频通话","audio-call":"音频通话",search:"搜索","search-result":"搜索结果","Wechat scan right QR code":"微信扫右二维码","Use-phone-and-computer":"用手机与电脑互打体验视频通话","Scan the QR code above":"扫描上方二维码","no-user":"未搜索到用户","member-not-added":"未添加成员","not-login":"未登录","login-status-expire":"登录状态已失效,请刷新网页重试","experience-multi-call":"体验多人通话请下载全功能demo:","not-support-multi-call":"多人通话接口未开放","input-phone-userID":"请输入手机号/用户ID",userID:"用户ID","already-enter":"已经进入当前通话","image-resolution":"分辨率","default-image-resolution":"默认分辨率","invited-person":"添加成员","be-rejected":"对方已拒绝,","be-no-response":"对方无应答,","be-line-busy":"对方忙线中,","be-canceled":"对方已取消","voice-call-end":"语音通话结束","video-call-end":"视频通话结束","method-call-failed":"同步操作失败","failed-to-obtain-permission":"权限获取失败","environment-detection-failed":"环境检测失败","switchToAudioCall-call-failed":"切语音调用失败","switchToVideoCall-call-failed":"切视频调用失败","microphone-unavailable":"没有可用的麦克风设备","camera-unavailable":"没有可用的摄像头设备","ban-device":"用户禁止使用设备","not-supported-webrtc":"当前环境不支持 WebRTC","blacklist-user-tips":"发起通话失败,被对方拉入黑名单,禁止发起!","is-already-calling":"TUICallKit 已在通话状态","need-init":"TUICallKit 发起通话前需保证 TUICallKitServer.init() 方法执行成功","can't call yourself":"不能呼叫自己","accept-error":"接通失败","accept-device-error":"接通失败,通话设备获取失败","call-error":"发起通话失败"},Be={hangup:"通話終了",reject:"拒否",accept:"応答",camera:"カメラ",microphone:"マイク",speaker:"スピーカー","other side reject call":"通話が拒否されました","reject call":"通話拒否",cancel:"通話をキャンセル","other side line busy":"相手が通話中です","in busy":"通話中","call timeout":"呼び出しタイムアウト","end call":"通話終了","caller calling message":"応答を待っています","callee calling video message":"ビデオ通話に招待されました","callee calling audio message":"音声通話に招待されました","no microphone access":"マイクにアクセスできません","no camera access":"カメラにアクセスできません","invite member":"メンバーを招待する","browser-authorization":"ブラウザ認証","mac-privacy":"システム環境設定 -> セキュリティとプライバシー ->プライバシー","win-privacy":"設定 -> セキュリティとプライバシー ->アプリのアクセス許可","mac-preferences":"システム環境設定を開く","win-preferences":"システム設定を開く","Please enter userID":"ユーザーIDを入力してください","View more":"もっと見る","people selected":"人が選択されました","Select all":"すべて選択",Cancel:"キャンセル",Done:"完了","open camera":"オープンカメラ","close camera":"カメラを閉じる","open microphone":"オープンマイク","close microphone":"マイクを閉じる","camera enabled":"カメラオン","camera disabled":"カメラオフ","microphone enabled":"マイクオン","microphone disabled":"マイクオフ","speaker phone":"スピーカーオン","wait to be called":"待機中",answered:"接続済み","people in the call":"通話に参加している人たち","failed to obtain speakers":"スピーカーが見つかりません","you have a new call":"新しい通話があります",timeout:"タイムアウト","kick out":"キックアウトされました","Invited group call":"グループ通話に招待されました。","Those involved":"参加者:",call:"通話","video-call":"ビデオ通話","audio-call":"音声通話",search:"検索","search-result":"検索結果","Wechat scan right QR code":"WeChatで右側にあるQRコードを読み取ります。","Use-phone-and-computer":"携帯電話とコンピュータを使用してビデオ通話を体験してください","Scan the QR code above":"上のQRコードを読み取ります。","no-user":"ユーザーが見つかりませんでした","member-not-added":"メンバーが追加されていません","not-login":"ログインしていません","login-status-expire":"ログインの有効期限が過ぎています。ページを更新してもう一度お試しください","experience-multi-call":"複数人で同時に音声通話できるグループ通話機能を体験するには、全機能のデモをダウンロードしてください","not-support-multi-call":"グループ通話インターフェイスが開いていません","input-phone-userID":"携帯電話番号/ユーザーIDを入力してください",userID:"ユーザーID","already-enter":"すでに通話に参加しています",waiting:"応答を待っています...","camera-opened":"カメラがオンになっています","camera-closed":"カメラがオフになっています","microphone-opened":"マイクがオンになっています","microphone-closed":"マイクがオフになっています","image-resolution":"解像度","default-image-resolution":"デフォルト解像度","invited-person":"メンバーを招待","video-to-audio":"音声通話に切り替えます",me:"(自分)","be-rejected":"通話が拒否されました, ","be-no-response":"応答なし, ","be-line-busy":"相手が通話中です, ","be-canceled":"相手が通話をキャンセルしました","voice-call-end":"音声通話が終了しました","video-call-end":"ビデオ通話が終了しました","method-call-failed":"操作の同期に失敗しました","failed-to-obtain-permission":"権限の取得に失敗しました","environment-detection-failed":"環境の検出に失敗しました","switchToAudioCall-call-failed":"音声通話に切り替えることはできません","switchToVideoCall-call-failed":"ビデオ通話に切り替えることはできません","microphone-unavailable":"使用できるマイクがありません","camera-unavailable":"使用できるカメラがありません","ban-device":"デバイスへのアクセスが拒否されました","not-supported-webrtc":"現在の環境はWebRTCをサポートしていません","blacklist-user-tips":"ユーザーはブラックリストに登録され、通話が開始できませんでした","is-already-calling":"TUICallKit はすでに通話中です","need-init":"TUICallKitで通話を開始する前に、TUICallKitServer.init() メソッドが正常に実行されたことを確認してください。","can't call yourself":"自分に電話をかけることができません","accept-error":"接続できませんでした","accept-device-error":"接続できませんでした。発信側デバイスを認証できません","call-error":"通話が開始できませんでした"},W={OTHER_SIDE:"other side",CANCEL:"cancel",OTHER_SIDE_REJECT_CALL:"other side reject call",REJECT_CALL:"reject call",OTHER_SIDE_LINE_BUSY:"other side line busy",IN_BUSY:"in busy",CALL_TIMEOUT:"call timeout",END_CALL:"end call",TIMEOUT:"timeout",KICK_OUT:"kick out",CALLER_CALLING_MSG:"caller calling message",CALLER_GROUP_CALLING_MSG:"wait to be called",CALLEE_CALLING_VIDEO_MSG:"callee calling video message",CALLEE_CALLING_AUDIO_MSG:"callee calling audio message",NO_MICROPHONE_DEVICE_PERMISSION:"no microphone access",NO_CAMERA_DEVICE_PERMISSION:"no camera access"},XA={en:Ve,"zh-cn":Oe,ja_JP:Be};function B(o){var n;const e=r.getData(s.CALL,a.LANGUAGE);for(const l in XA)if(l===e){const i=XA[l];for(const c in i)if(c===o)return i[c]}const t=(n=o.en)==null?void 0:n.key;return console.error(`${a.PREFIX}translation is not found: ${o}.`),t}async function we(o){if(!o)return!1;try{const e=await new Promise((t,n)=>{const l=new XMLHttpRequest;l.open("HEAD",o,!0),l.onload=()=>t(l),l.onerror=()=>n(l),l.send()});return e.status===200&&e.getResponseHeader("Content-Type")==="audio/mpeg"}catch(e){return console.warn(e),!1}}const CA=typeof wx<"u"&&typeof wx.getSystemInfoSync=="function"&&!!wx.getSystemInfoSync().fontSizeSetting,FA=typeof uni<"u"&&typeof uni>"u",WA=CA||FA,YA=typeof uni<"u",KA=function(){return(typeof uni<"u"||typeof window<"u")&&!WA}(),be=function(){return CA?wx:YA?uni:window}(),$=KA&&window&&window.navigator&&window.navigator.userAgent||"",ke=/Android/i.test($),Pe=/(?:Windows Phone)/.test($),qe=/(?:SymbianOS)/.test($),Re=/iPad/i.test($)||/iPhone/i.test($)||/iPod/i.test($),ZA=ke||Pe||qe||Re,zA=KA&&!ZA,xe=zA&&$.includes("Windows NT"),Qe=zA&&$.includes("Mac");let vA=class IA{constructor(){this.global=be,this.isPC=!1,this.isH5=!1,this.isWeChat=!1,this.isApp=!1,this.isUniPlatform=!1,this.isOfficial=!1,this.isWIN=!1,this.isMAC=!1,this.initEnv()}static getInstance(){return IA.instance||(IA.instance=new IA),IA.instance}initEnv(){this.isPC=zA,this.isH5=ZA,this.isWeChat=CA,this.isApp=FA&&!CA,this.isUniPlatform=YA,this.isWIN=xe,this.isMAC=Qe}initOfficial(e){this.isOfficial=e===1400187352||e===1400188366}};const VA=function(o){return typeof o===a.UNDEFINED},Ge=function(o){if(typeof o!==a.OBJECT||o===null)return!1;const e=Object.getPrototypeOf(o);if(e===null)return!0;let t=e;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return e===t},HA=function(o){return typeof Array.isArray===a.FUNCTION?Array.isArray(o):Object.prototype.toString.call(o).match(/^\[object (.*)\]$/)[1].toLowerCase()===a.ARRAY},OA=function(o){return typeof o===a.STRING},Xe=function(o){return typeof o===a.BOOLEAN},JA=function(o){return o!==null&&(typeof o===a.NUMBER&&!isNaN(o-0)||typeof o===a.OBJECT&&o.constructor===Number)};function Fe(o){const e=Math.floor(o/3600),t=Math.floor(o%3600/60),n=Math.floor(o%60);let l=e>9?`${e}`:`0${e}`;return l+=t>9?`:${t}`:`:0${t}`,l+=n>9?`:${n}`:`:0${n}`,l}function _A(o){return(o==null?void 0:o.message.indexOf("is ongoing, please avoid repeated calls"))!==-1}function We(o){const{message:e}=o;return e.indexOf("NotAllowedError: Permission denied")!==-1}function BA(){return Date.now()}const uA=function(o){return typeof o===a.FUNCTION},Ye=()=>{if(vA.getInstance().isWeChat)return"zh-cn";const o=((navigator==null?void 0:navigator.language)||(navigator==null?void 0:navigator.userLanguage)||"").substr(0,2);let e="en";switch(o){case"zh":e="zh-cn";break;case"ja":e="ja_JP";break;default:e="en"}return e},Ke=function(o){return Object.prototype.toString.call(o).match(/^\[object (.*)\]$/)[1].toLowerCase()};function Ze(o,e,t){if(!o.hasOwnProperty(e))return o;const n={};return Object.keys(o).forEach(l=>{l===e?n[t]=o[l]:n[l]=o[l]}),n}const ve=0,He=1,$A=2;function Je({retryFunction:o,settings:e,onError:t,onRetrying:n,onRetryFailed:l,context:i}){return function(...c){const d=e.retries||5;let I=0,M=-1,g=ve;const C=async(p,N)=>{const u=i||this;try{const D=await o.apply(u,c);I=0,p(D)}catch(D){const y=()=>{clearTimeout(M),I=0,g=$A,N(D)},L=()=>{g!==$A&&I{M=-1,C(p,N)},VA(e.timeout)?1e3:e.timeout)):(y(),uA(l)&&l.call(u,D))};uA(t)?t.call(u,D,L,N,c):L()}};return new Promise(C)}}function _e(o){return function(e,t,n){const{retries:l=5,timeout:i=2e3,onError:c,onRetrying:d,onRetryFailed:I}=o,M=Je({retryFunction:n.value,settings:{retries:l,timeout:i},onError:c,onRetrying:d,onRetryFailed:I,context:null});return n.value=function(...g){return M.apply(this,g)},n}}const $e="data:audio/mpeg;base64,SUQzAwAAAAAAGFRYWFgAAAAOAAAAVFhYWABpc29taXNvMv/zNGQAAqwAvnihCAADQAF4CUAQAFYAg3Lh8u+XUD5///wx//wQOAhKAgb/////xOoH4g8Hz4Pq8RoAbdTgMsMt9hcb990EP//zNGQQBPDjEgDItAAFWcIoAYoQAN9P/03QQ//umn//91SXL5uXP+pf8WYTvzgJPAQ+p/7f///1//6f///WH///F4BtJhNFkP/zNGQGA/jjNADHiAAEQDJcAYkQAGWrn6vw6ljfPtj/////////9Pv9sL/mL/QezSepgwrimv07//////y3u602OiyhOYb+LP/zNGQIBKTBKADoCACDoCZMAckAAKHKCUIAFsqGZXtSZ/////////Sn/Vy3nVUOJBqSX2UAkQxBddzv//////yq3lcgaTmTQ//zNGQHA9SrJgA8AliD4C5IAApYAKh3FKlMunKHm8H/2//77vkdqB2xfsXaHiDKBGtFKqONF3/////Z9VXClT5ND+syHkjBq//zNGQLBITJIAA8AmQEiDI4AAjSAGa1Vffm3ff/1/0//11tvZpAaIw3dBiIrjJgHQrGVWmdBU1f/////oDqEKrV1OpBUTjQtv/zNGQHAsjDKAAwAl4D0Co8AAmCBHIQNtld6fm0+/VigZzuMnGZlkAMLMJFv/////33UIWeFQkKsaceBsangecHzYXKI//////zNGQUA4QjKAA3CAID8CpEABMCBPfuStx4FQVHYMgKcO6jIJh//////9uIlspQkGQ2YyZscAV83Bv/////ncL6BEiWHyA2K//zNEQbAogfJgAx5hAEwDJcCAsEBtICgF3/////WJaIuuqMCCVGucgkrtwiwBO//////pW4YFRWQhaRRhZZnVwGhf////+ocv/zNEQmApgVJAANjwAFkC5YCApeAolD4kQb+EQJYNKwLWGmc6sqMBwJvf////6tDEOWDgFJk1VywKMGoM2f////+N1JmgJuPv/zNGQuA4AbJAAl5hIDwC48AAIGBEho7wTL5b6kSO7IUAA5uDABYNNjGDBSJEN//////xtQsszVy27IcWBbQkLgzv7YmZYW///zNGQ2AqzFNAgcA1+D8CZIAAhMAP/3/rozCAsBjIqCY/DBWMfQZp1f/////0F6phXSNisgAJjo6icT2vpvM/Vf9v///97eu//z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",Ae="data:audio/mpeg;base64,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//BP/+hwIa///Nf///wqXf/1IwFkb//wi3/1Pf/7FEQGAABjEVkFKKAADSOrIKOcAAKAUWQYooAAUpGswwRwAF//QA7//6iH/7//E1CP66uDpoqjowL/6/GGwzFQx/T3Vp/9XC73/yvuUKYdmmN6evmjf5L5ZKr/8hlL/f/7FGQCgAB5FF2GBKAADYOrUMEIAAGod2YcVoAANI6rg4pQAEZrqH8GxT/UqjT/+aDlf/6dvj/r/4+rR//UH//+wTMuo///86//9QGR//+wCCxv//+MCD//BP//oAIP///7FGQFAABgEdsNFKAAC2I68KOcAAMggWoYVQAAP46tAwQgAMzq//QwCv//4WM/+a0//YWHBbCL/5Hi/IAIkheLBSvsvr6F98kyv/4Zg7A3/0+pcfN//8bL5ar/+8wV/v/7FGQCgACDFF0GFKAADkQLYMCIAAGod2occoAANg7rw4pQAKbXi7oTBez1IPl9X/4G2b//1b7/r6/a/Gy//6HAX//+gDAv///nHf/xoBf//hF////ILP0V//lQuP//qP/7FGQDj/BVHVmBQC2QC6O6wDQHsgGEd2gUI4AAMA7sAopQAE8l+F//2DK3//y4f+Bj5j/+oX//8FpP///x0n//GAf//8Kf///xIcrp/ZHCA4SBM2nH8U7C55TDl+3X6P/7FGQKAADZI1uGFOAAEoRrMMKUAAGQd24cUQAANQ7sQ44gAHOZwyYabiX/9COkKb/T6rj9/09fUt+LGTgn/8YALf/+g43///kFf/zgX///UK////hxPTX/+4Sz//+sR//7FGQEA7BbHdmBoC2QDSEL3gADCQGgAXyUIQAAMw7rwpRwAK/hAeAAAAdAAAAAHQz///6wB/xxxyrjsayv6H/+r/+aBD//+Nm///8QulX+1VhmOIUu/+2UD0jR2CVfp//7FGQIgADVI1uGCOACD+RrYMCIAAGcd2ocE4AAMw7sQ4RQAGP+f8eIEjMMke//iRoP//tvp+v/Unyv4pqf/5n//84CQx///0FRv/+K///C3///6gKLdKr//EJ//9QHx//7FGQED/BSHdkBQBWQC4PKwCgHsgFYR2wUI4AANA7sAopQAD5hv/6Br//+SDvyge2n/+gP//8ISf/w9t//oDv//8K///8ggL6a+nTBTVf043E0UOgZIIdw1v/9FHfE3//7FGQLAADO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";class At{constructor(){this._bellContext=null,this._isMuteBell=!1,this._calleeBellFilePath=Ae,this._callRole=x.UNKNOWN,this._callStatus=j.IDLE,this._bellContext=new Audio,this._bellContext.loop=!0}setBellSrc(){try{let e=$e;this._callRole===x.CALLEE&&(e=this._calleeBellFilePath||Ae),this._bellContext.src=e}catch(e){console.warn(`${a.PREFIX}Failed to setBellSrc, ${e}`)}}setBellProperties(e){this._callRole=e.callRole||this._callRole,this._callStatus=e.callStatus||this._callStatus,this._calleeBellFilePath=e.calleeBellFilePath||this._calleeBellFilePath,this._isMuteBell=VA(e.isMuteBell)?this._isMuteBell:e.isMuteBell}async play(){try{if(this._callStatus!==j.CALLING)return;this.setBellSrc(),this._callRole===x.CALLEE&&!this._isMuteBell&&await this._bellContext.play(),this._callRole===x.CALLER&&await this._bellContext.play()}catch(e){console.warn(`${a.PREFIX}Failed to play audio file, ${e}`)}}async stop(){try{await this._bellContext.pause()}catch(e){console.warn(`${a.PREFIX}Failed to stop audio file, ${e}`)}}async setBellMute(e){this._callStatus!==j.CALLING&&this._callRole!==x.CALLEE||(e?await this.stop():await this.play())}destroy(){try{this._isMuteBell=!1,this._calleeBellFilePath="",this._callRole=x.UNKNOWN,this._callStatus=j.IDLE,this._bellContext.pause(),this._bellContext=null}catch(e){console.warn(`${a.PREFIX}Failed to destroy, ${e}`)}}}function F(){return function(o,e,t){const n=t.value,l=new Set;return t.value=async function(...i){if(l.has(this)){console.warn(`${a.PREFIX}previous ${e}() is ongoing, please avoid repeated calls`);return}try{l.add(this);const c=await n.apply(this,i);return l.delete(this),c}catch(c){throw l.delete(this),c}},t}}const cA=a.PREFIX+"API";function Y(o){return function(e,t,n){let l=n.value;return n.value=function(...i){return et.call(this,o,i,t),l.apply(this,i)},n}}function et(o,e,t){try{if(e[0].SDKAppID||(o=Ze(o,"SDKAppID","sdkAppID")),HA(o))for(let n=0;n: ${c} is required.`);return}const d=e.some(M=>M===Ke(n));let I="";if(!d){for(let M=0;M: ${c} must be ${I}, current ${c} is ${typeof n}.`)}if(l===!1&&OA(n)&&n.trim()==="")throw new Error(`${cA}<${i}>: ${c} is blank.`);if(HA(t)&&t&&t.indexOf(n)===-1)throw new Error(`${cA}<${i}>: ${c} error, only be ${t}, current ${c} is ${n}.`);if(OA(t)&&t.indexOf("~")!==-1){const M=t.split("~");if(n<+M[0]||n>+M[1]||JA(n)&&Number.isNaN(n))throw new Error(`${cA}<${i}>: ${c} error, only be ${t}, current ${c} is ${n}.`)}}const K={init:{SDKAppID:{required:!0,rules:[a.NUMBER],allowEmpty:!1},userID:{required:!0,rules:[a.STRING],allowEmpty:!1},userSig:{required:!0,rules:[a.STRING],allowEmpty:!1},tim:{required:!1,rules:[a.OBJECT]}},call:{userID:{required:!0,rules:[a.STRING],allowEmpty:!1},type:{required:!0,rules:[a.NUMBER],range:[1,2],allowEmpty:!1},roomID:{required:!1,rules:[a.NUMBER],range:`1~${QA}`,allowEmpty:!1},userData:{required:!1,rules:[a.STRING],allowEmpty:!1},timeout:{required:!1,rules:[a.NUMBER],allowEmpty:!1}},groupCall:{userIDList:{required:!0,rules:[a.ARRAY],allowEmpty:!1},type:{required:!0,rules:[a.NUMBER],range:[1,2],allowEmpty:!1},groupID:{required:!0,rules:[a.STRING],allowEmpty:!1},roomID:{required:!1,rules:[a.NUMBER],range:`1~${QA}`,allowEmpty:!1},timeout:{required:!1,rules:[a.NUMBER],allowEmpty:!1},userData:{required:!1,rules:[a.STRING],allowEmpty:!1},offlinePushInfo:{required:!1,rules:[a.OBJECT],allowEmpty:!1}},joinInGroupCall:{type:{required:!0,rules:[a.NUMBER],range:[1,2],allowEmpty:!1},groupID:{required:!0,rules:[a.STRING],allowEmpty:!1},roomID:{required:!0,rules:[a.NUMBER],allowEmpty:!1}},inviteUser:{userIDList:{required:!0,rules:[a.ARRAY],allowEmpty:!1}},setSelfInfo:{nickName:{required:!1,rules:[a.STRING],allowEmpty:!1},avatar:{required:!1,rules:[a.STRING],allowEmpty:!1}},enableFloatWindow:[{key:"enable",required:!1,rules:[a.BOOLEAN],allowEmpty:!1}],enableAIVoice:[{key:"enable",required:!0,rules:[a.BOOLEAN],allowEmpty:!1}],enableMuteMode:[{key:"enable",required:!0,rules:[a.BOOLEAN],allowEmpty:!1}],setCallingBell:[{key:"filePath",required:!1,rules:[a.STRING],allowEmpty:!0}],setLanguage:[{key:"language",required:!0,rules:[a.STRING],allowEmpty:!1}],setVideoDisplayMode:[{key:"displayMode",required:!0,rules:[a.STRING],range:[nA.CONTAIN,nA.COVER,nA.FILL],allowEmpty:!1}],setVideoResolution:[{key:"resolution",required:!0,rules:[a.STRING],range:[oA.RESOLUTION_1080P,oA.RESOLUTION_480P,oA.RESOLUTION_720P],allowEmpty:!1}]};function wA(o,e){const t={userId:o,nick:"",avatar:"",remark:"",displayUserInfo:"",isAudioAvailable:!1,isVideoAvailable:!1,isEnter:!1,domId:e||o};return e?t:{...t,isEnter:!1}}async function tt(o,e,t){var l,i,c,d,I;let n=wA(o,a.LOCAL_VIDEO);try{if(!e)return n;const M=await e.getMyProfile(),g=t==null?void 0:t.getData(s.CALL,a.LOCAL_USER_INFO);return(M==null?void 0:M.code)===0&&(n={...n,...g,userId:(l=M==null?void 0:M.data)==null?void 0:l.userID,nick:(i=M==null?void 0:M.data)==null?void 0:i.nick,avatar:(c=M==null?void 0:M.data)==null?void 0:c.avatar,displayUserInfo:((d=M==null?void 0:M.data)==null?void 0:d.nick)||((I=M==null?void 0:M.data)==null?void 0:I.userID)}),n}catch(M){return console.error(`${a.PREFIX}getMyProfile failed, error: ${M}.`),n}}async function pA(o,e,t){let n=o.map(l=>wA(l));try{if(!e)return n;const l=await e.getFriendProfile({userIDList:o});if(l.code===0){const{friendList:i=[],failureUserIDList:c=[]}=l.data;let d=c.map(C=>C.userID);if(c.length>0){const C=await e.getUserProfile({userIDList:c.map(p=>p.userID)});(C==null?void 0:C.code)===0&&(d=(C==null?void 0:C.data)||[])}const I=t==null?void 0:t.getData(s.CALL,a.REMOTE_USER_INFO_LIST),M=i.map(C=>C.userID),g=d.map(C=>C.userID);n=o.map(C=>{var z,f,S,O,q,m,Q;const p=wA(C),N=M.indexOf(C),u=g.indexOf(C);let D="",y="",L="",w="";N!==-1&&(D=((z=i[N])==null?void 0:z.remark)||"",y=((S=(f=i[N])==null?void 0:f.profile)==null?void 0:S.nick)||"",L=D||y||p.userId||"",w=((q=(O=i[N])==null?void 0:O.profile)==null?void 0:q.avatar)||""),u!==-1&&(y=((m=d[u])==null?void 0:m.nick)||"",L=y||p.userId||"",w=((Q=d[u])==null?void 0:Q.avatar)||"");const E=I.find(b=>b.userId===C)||{};return{...p,...E,remark:D,nick:y,displayUserInfo:L,avatar:w}})}return n}catch(l){return console.error(`${a.PREFIX}getRemoteUserProfile failed, error: ${l}.`),n}}function AA(o,e,t,n){const l=o.getData(s.CALL,a.IS_GROUP);let i=`${B(e)}`;return l&&(i=t?`${t} ${i}`:i,i=n?`${i} ${n}`:i),i}function LA(o){const e=o.getData(s.CALL,a.CALL_STATUS);if(e===j.IDLE)return G.IDLE;const t=o.getData(s.CALL,a.IS_GROUP);if(e===j.CALLING)return t?G.DIALING_GROUP:G.DIALING_C2C;const n=o.getData(s.CALL,a.CALL_MEDIA_TYPE);return t?n===T.AUDIO?G.CALLING_GROUP_AUDIO:G.CALLING_GROUP_VIDEO:n===T.AUDIO?G.CALLING_C2C_AUDIO:G.CALLING_C2C_VIDEO}async function at(o,e,t,n){let l=[];try{const i=await e.getGroupMemberList({groupID:o,count:t,offset:n});if(i.code===0)return i.data.memberList||l}catch(i){return console.error(`${a.PREFIX}getGroupMember failed, error: ${i}.`),l}}async function nt(o,e){let t={};try{const n=await e.getGroupProfile({groupID:o});if(n.code===0)return n.data.group||t}catch(n){return console.error(`${a.PREFIX}getGroupProfile failed, error: ${n}.`),t}}let fA=class{static generateTaskID(){return this.currentTaskID++}static run(e=a.TIMEOUT,t,n){e===a.INTERVAL?n={delay:2e3,count:0,backgroundTask:!0,...n}:n={delay:2e3,count:0,backgroundTask:!0,...n},Ge(t)&&(n={...n,...t}),uA(e)&&(t=e,e=a.TIMEOUT);const l={taskID:this.generateTaskID(),loopCount:0,intervalID:null,timeoutID:null,taskName:e,callback:t,...n};return this.taskMap.set(l.taskID,l),e===a.INTERNAL?this.interval(l):this.timeout(l),l.taskID}static interval(e){const t=()=>{e.callback(),e.loopCount+=1,this.isBreakLoop(e)};return e.intervalID=setInterval(t,e.delay)}static timeout(e){const t=()=>{if(e.callback(),e.loopCount+=1,!this.isBreakLoop(e))return e.timeoutID=setTimeout(t,e.delay)};return e.timeoutID=setTimeout(t,e.delay)}static hasTask(e){return this.taskMap.has(e)}static clearTask(e){if(!this.taskMap.has(e))return!0;const{intervalID:t,timeoutID:n,onVisibilitychange:l}=this.taskMap.get(e);return t&&clearInterval(t),n&&clearTimeout(n),l&&document.removeEventListener("visibilitychange",l),this.taskMap.delete(e),!0}static isBreakLoop(e){return this.taskMap.has(e.taskID)?e.count!==0&&e.loopCount>=e.count?(this.clearTask(e.taskID),!0):!1:!0}};fA.taskMap=new Map,fA.currentTaskID=1;class ot{constructor(){this.defaultStore={callStatus:j.IDLE,callRole:x.UNKNOWN,callMediaType:T.UNKNOWN,localUserInfo:{userId:""},localUserInfoExcludeVolume:{userId:""},remoteUserInfoList:[],remoteUserInfoExcludeVolumeList:[],callerUserInfo:{userId:""},isGroup:!1,callDuration:"00:00:00",callTips:"",toastInfo:{text:""},isMinimized:!1,enableFloatWindow:!1,bigScreenUserId:"",language:Ye(),isClickable:!1,deviceList:{cameraList:[],microphoneList:[],currentCamera:{},currentMicrophone:{}},showPermissionTip:!1,groupID:"",roomID:0,cameraPosition:iA.FRONT,displayMode:nA.COVER,videoResolution:oA.RESOLUTION_480P,showSelectUser:!1,pusher:{},player:[],isEarPhone:!1},this.store=Object.assign({},this.defaultStore)}update(e,t){switch(e){default:this.store[e]=t}}getData(e){return e?this.store[e]:this.store}reset(e=[]){e.length===0&&(e=Object.keys(this.store));const t=e.reduce((n,l)=>({...n,[l]:this.defaultStore[l]}),{});this.store={...this.defaultStore,...this.store,...t}}}let lt=class MA{constructor(){this.timerId=-1,this.storeMap={[s.CALL]:new ot},this.task={}}static getInstance(){return MA.instance||(MA.instance=new MA),MA.instance}watch(e,t,n){this.task[e]||(this.task[e]={});const l=this.task[e];Object.keys(t).forEach(i=>{const c=t[i];l[i]||(l[i]=new Map),l[i].set(c,1);const{notifyRangeWhenWatch:d}=n||{};if(d===a.ALL&&this.notify(e,i),d===a.MYSELF){const I=this.getData(e,i);c.call(this,I)}})}unwatch(e,t){if(!this.task[e])return;const n=this.task[e];Object.keys(t).forEach(l=>{n[l].delete(t[l])})}update(e,t,n){var l;(OA(n)||JA(n)||Xe(n))&&this.storeMap[e].store[t]===n||((l=this.storeMap[e])==null||l.update(t,n),this.notify(e,t))}getData(e,t){var n;return(n=this.storeMap[e])==null?void 0:n.getData(t)}notify(e,t){if(!this.task[e])return;const n=this.task[e];if(n[t]){const l=n[t],i=this.getData(e,t);for(const[c]of l.entries())c.call(this,i)}}reset(e,t=[],n=!1){if(e in this.storeMap){const l=this.storeMap[e];t.length===0&&(t=Object.keys(l==null?void 0:l.store)),l.reset(t),n&&t.forEach(i=>{this.notify(e,i)})}}updateStore(e,t){const n=t||s.CALL;Object.keys(e).forEach(l=>{this.update(n,l,e[l])})}};var rt=Object.defineProperty,st=Object.getOwnPropertyDescriptor,P=(o,e,t,n)=>{for(var l=n>1?void 0:n?st(e,t):e,i=o.length-1,c;i>=0;i--)(c=o[i])&&(l=(n?c(e,t,l):c(l))||l);return n&&l&&rt(e,t,l),l};const X=vA.getInstance(),r=lt.getInstance(),te="2.5.2",it="vue3",k=class gA{constructor(){this._tim=null,this._TUICore=null,this._timerId=-1,this._startTimeStamp=BA(),this._bellContext=null,this._defaultOfflinePushInfo={title:"",description:B("you have a new call")},this._handleCallStatusChange=async e=>{var t,n;try{const l={callRole:r.getData(s.CALL,a.CALL_ROLE),callStatus:r.getData(s.CALL,a.CALL_STATUS)};if(this._bellContext.setBellProperties(l),e===j.CALLING)await((t=this==null?void 0:this._bellContext)==null?void 0:t.play());else{if(e===j.CONNECTED){const i=r.getData(s.CALL,a.IS_GROUP),c=r.getData(s.CALL,a.CALL_MEDIA_TYPE),d=r.getData(s.CALL,a.REMOTE_USER_INFO_LIST),I=i?G.DIALING_GROUP:G.DIALING_C2C;r.update(s.CALL,a.CALL_TIPS,""),this.statusChanged&&this.statusChanged({oldStatus:I,newStatus:LA(r)}),!i&&c===T.VIDEO&&this.switchScreen(d[0].domId)}await((n=this==null?void 0:this._bellContext)==null?void 0:n.stop())}}catch(l){console.warn(`${a.PREFIX}handleCallStatusChange, ${l}.`)}},console.log(`${a.PREFIX}version: ${te}`),this._watchTUIStore(),this._bellContext=new At}static getInstance(){return gA.instance||(gA.instance=new gA),gA.instance}async init(e){try{if(this._tuiCallEngine)return;let{userID:t,tim:n,userSig:l,sdkAppID:i,SDKAppID:c,isFromChat:d,component:I=GA.TUI_CALL_KIT}=e;this._TUICore&&(i=this._TUICore.SDKAppID,n=this._TUICore.tim),this._tim=n,console.log(`${a.PREFIX}init sdkAppId: ${i||c}, userId: ${t}`),this._tuiCallEngine=U.TUICallEngine.createInstance({tim:n,SDKAppID:i||c,frameWork:it,language:6,callkitVersion:te,chat:d||!1,component:I}),this._addListenTuiCallEngineEvent(),r.update(s.CALL,a.LOCAL_USER_INFO,{userId:t}),r.update(s.CALL,a.LOCAL_USER_INFO_EXCLUDE_VOLUMN,{userId:t}),await this._tuiCallEngine.login({userID:t,userSig:l,assetsPath:""})}catch(t){throw console.error(`${a.PREFIX}init failed, error: ${t}.`),t}}async destroyed(){try{const e=r.getData(s.CALL,a.CALL_STATUS);if(e!==j.IDLE)throw new Error(`please destroyed when status is idle, current status: ${e}`);this._tuiCallEngine&&(this._removeListenTuiCallEngineEvent(),await this._tuiCallEngine.destroyInstance(),this._tuiCallEngine=null)}catch(e){throw console.error(`${a.PREFIX}destroyed failed, error: ${e}.`),e}}async call(e){try{const{type:t,userID:n,offlinePushInfo:l}=e;if(r.getData(s.CALL,a.CALL_STATUS)!==j.IDLE)return;await this._updateCallStoreBeforeCall(t,[{userId:n}]),this._executeExternalBeforeCalling(),e.offlinePushInfo={...this._defaultOfflinePushInfo,...l};const i=await this._tuiCallEngine.call(e);await this._updateCallStoreAfterCall([n],i)}catch(t){this._handleCallError(t,"call")}}async groupCall(e){try{const{userIDList:t,type:n,groupID:l,offlinePushInfo:i}=e;if(r.getData(s.CALL,a.CALL_STATUS)!==j.IDLE)return;const c=t.map(I=>({userId:I}));await this._updateCallStoreBeforeCall(n,c,l),this._executeExternalBeforeCalling(),e.offlinePushInfo={...this._defaultOfflinePushInfo,...i};const d=await this._tuiCallEngine.groupCall(e);await this._updateCallStoreAfterCall(t,d)}catch(t){this._handleCallError(t,"groupCall")}}async inviteUser(e){try{const{userIDList:t}=e;let n=await pA(t,this.getTim(),r);const l=r.getData(s.CALL,a.REMOTE_USER_INFO_LIST);r.update(s.CALL,a.REMOTE_USER_INFO_LIST,[...l,...n]),r.update(s.CALL,a.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST,[...l,...n]),this._tuiCallEngine&&await this._tuiCallEngine.inviteUser(e)}catch(t){throw console.error(`${a.PREFIX}inviteUser failed, error: ${t}.`),this._resetCallStore(),t}}async joinInGroupCall(e){try{const t={[a.CALL_ROLE]:x.CALLEE,[a.IS_GROUP]:!0,[a.CALL_STATUS]:j.CONNECTED,[a.CALL_MEDIA_TYPE]:e.type,[a.GROUP_ID]:e.groupID,[a.ROOM_ID]:e.roomID};r.updateStore(t,s.CALL);const n=await this._tuiCallEngine.joinInGroupCall(e);e.type===T.VIDEO&&await this.openCamera(a.LOCAL_VIDEO),r.update(s.CALL,a.IS_CLICKABLE,!0),this._startTimer(),this._updateDeviceList(),await this._tuiCallEngine.setVideoQuality(r.getData(s.CALL,a.VIDEO_RESOLUTION));const l=r.getData(s.CALL,a.LOCAL_USER_INFO);r.update(s.CALL,a.LOCAL_USER_INFO,{...l,isEnter:!0}),r.update(s.CALL,a.LOCAL_USER_INFO_EXCLUDE_VOLUMN,{...l,isEnter:!0}),this._setLocalUserInfoAudioVideoAvailable(!0,a.AUDIO)}catch(t){throw console.error(`${a.PREFIX}joinInGroupCall failed, error: ${t}.`),this._resetCallStore(),t}}getTUICallEngineInstance(){return(this==null?void 0:this._tuiCallEngine)||null}setLogLevel(e){var t;(t=this==null?void 0:this._tuiCallEngine)==null||t.setLogLevel(e)}setLanguage(e){e&&Object.values(RA).includes(e)&&r.update(s.CALL,a.LANGUAGE,e)}enableFloatWindow(e){r.update(s.CALL,a.ENABLE_FLOAT_WINDOW,e)}async setSelfInfo(e){const{nickName:t,avatar:n}=e;try{await this._tuiCallEngine.setSelfInfo({nickName:t,avatar:n})}catch(l){console.error(`${a.PREFIX}setSelfInfo failed, error: ${l}.`)}}async enableAIVoice(e){try{await this._tuiCallEngine.enableAIVoice(e),console.log(`${a.PREFIX}enableAIVoice: ${e}.`)}catch(t){throw console.error(`${a.PREFIX}enableAIVoice failed, error: ${t}.`),t}}async setCallingBell(e){let t=!0;if(t=await we(e),!t){console.warn(`${a.PREFIX}setCallingBell failed, filePath: ${e}.`);return}const n={calleeBellFilePath:e};this._bellContext.setBellProperties(n)}async enableMuteMode(e){try{const t={isMuteBell:e};this._bellContext.setBellProperties(t),await this._bellContext.setBellMute(e)}catch(t){console.warn(`${a.PREFIX}enableMuteMode failed, error: ${t}.`)}}async accept(){try{if(r.update(s.CALL,a.CALL_STATUS,j.CONNECTED),this._updateDeviceList(),await this._tuiCallEngine.accept()){r.update(s.CALL,a.IS_CLICKABLE,!0),this._startTimer(),r.getData(s.CALL,a.CALL_MEDIA_TYPE)===T.VIDEO&&await this.openCamera(a.LOCAL_VIDEO),await this._tuiCallEngine.setVideoQuality(r.getData(s.CALL,a.VIDEO_RESOLUTION));const n=r.getData(s.CALL,a.LOCAL_USER_INFO);r.update(s.CALL,a.LOCAL_USER_INFO,{...n,isEnter:!0}),r.update(s.CALL,a.LOCAL_USER_INFO_EXCLUDE_VOLUMN,{...n,isEnter:!0}),this._setLocalUserInfoAudioVideoAvailable(!0,a.AUDIO)}}catch(e){if(_A(e))return;this._noDevicePermissionToast(e,T.AUDIO),this._resetCallStore()}}async hangup(){try{const e=await this._tuiCallEngine.hangup()}catch(e){console.debug(e)}this._resetCallStore()}async reject(){try{const e=await this._tuiCallEngine.reject()}catch(e){console.debug(e)}this._resetCallStore()}async openCamera(e){try{await this._tuiCallEngine.openCamera(e),this._setLocalUserInfoAudioVideoAvailable(!0,a.VIDEO)}catch(t){this._noDevicePermissionToast(t,T.VIDEO),console.error(`${a.PREFIX}openCamera error: ${t}.`)}}async closeCamera(){try{await this._tuiCallEngine.closeCamera(),this._setLocalUserInfoAudioVideoAvailable(!1,a.VIDEO)}catch(e){console.error(`${a.PREFIX}closeCamera error: ${e}.`)}}async openMicrophone(){try{await this._tuiCallEngine.openMicrophone(),this._setLocalUserInfoAudioVideoAvailable(!0,a.AUDIO)}catch(e){console.error(`${a.PREFIX}openMicrophone failed, error: ${e}.`)}}async closeMicrophone(){try{await this._tuiCallEngine.closeMicrophone(),this._setLocalUserInfoAudioVideoAvailable(!1,a.AUDIO)}catch(e){console.error(`${a.PREFIX}closeMicrophone failed, error: ${e}.`)}}switchScreen(e){e&&r.update(s.CALL,a.BIG_SCREEN_USER_ID,e)}async switchCallMediaType(){try{const e=r.getData(s.CALL,a.CALL_MEDIA_TYPE);if(e===T.AUDIO){console.warn(`${a.PREFIX}switchCallMediaType failed, ${e} not support.`);return}const t=await this._tuiCallEngine.switchCallMediaType(T.AUDIO);r.update(s.CALL,a.CALL_MEDIA_TYPE,T.AUDIO);const l=r.getData(s.CALL,a.IS_GROUP)?G.CALLING_GROUP_VIDEO:G.CALLING_C2C_VIDEO,i=LA(r);this.statusChanged&&this.statusChanged({oldStatus:l,newStatus:i})}catch(e){console.error(`${a.PREFIX}switchCallMediaType failed, error: ${e}.`)}}async switchCamera(){const t=r.getData(s.CALL,a.CAMERA_POSITION)===iA.BACK?iA.FRONT:iA.BACK;try{await this._tuiCallEngine.switchCamera(t),r.update(s.CALL,a.CAMERA_POSITION,t)}catch(n){console.error(`${a.PREFIX}_switchCamera failed, error: ${n}.`)}}getTim(){var e,t;return this._tim?this._tim:this._tuiCallEngine?((e=this._tuiCallEngine)==null?void 0:e.tim)||((t=this._tuiCallEngine)==null?void 0:t.getTim()):(console.warn(`${a.PREFIX}getTim warning: _tuiCallEngine Instance is not available.`),null)}async switchDevice(e){try{await this._tuiCallEngine.switchDevice(e)}catch(t){console.error(`${a.PREFIX}_switchDevice failed, error: ${t}.`)}}_addListenTuiCallEngineEvent(){if(!this._tuiCallEngine){console.warn(`${a.PREFIX}add engine event listener failed, engine is empty.`);return}this._tuiCallEngine.on(U.TUICallEvent.ERROR,this._handleError,this),this._tuiCallEngine.on(U.TUICallEvent.INVITED,this._handleNewInvitationReceived,this),this._tuiCallEngine.on(U.TUICallEvent.USER_ACCEPT,this._handleUserAccept,this),this._tuiCallEngine.on(U.TUICallEvent.USER_ENTER,this._handleUserEnter,this),this._tuiCallEngine.on(U.TUICallEvent.USER_LEAVE,this._handleUserLeave,this),this._tuiCallEngine.on(U.TUICallEvent.REJECT,this._handleInviteeReject,this),this._tuiCallEngine.on(U.TUICallEvent.NO_RESP,this._handleNoResponse,this),this._tuiCallEngine.on(U.TUICallEvent.LINE_BUSY,this._handleLineBusy,this),this._tuiCallEngine.on(U.TUICallEvent.CALLING_CANCEL,this._handleCallingCancel,this),this._tuiCallEngine.on(U.TUICallEvent.SDK_READY,this._handleSDKReady,this),this._tuiCallEngine.on(U.TUICallEvent.KICKED_OUT,this._handleKickedOut,this),this._tuiCallEngine.on(U.TUICallEvent.MESSAGE_SENT_BY_ME,this._messageSentByMe,this),this._tuiCallEngine.on(U.TUICallEvent.CALLING_END,this._handleCallingEnd,this),this._tuiCallEngine.on(U.TUICallEvent.CALL_TYPE_CHANGED,this._handleCallTypeChange,this),this._tuiCallEngine.on(U.TUICallEvent.USER_VIDEO_AVAILABLE,this._handleUserVideoAvailable,this),this._tuiCallEngine.on(U.TUICallEvent.USER_AUDIO_AVAILABLE,this._handleUserAudioAvailable,this),this._tuiCallEngine.on(U.TUICallEvent.USER_VOICE_VOLUME,this._handleUserVoiceVolume,this),this._tuiCallEngine.on(U.TUICallEvent.DEVICED_UPDATED,this._handleDeviceUpdate,this)}_removeListenTuiCallEngineEvent(){this._tuiCallEngine.off(U.TUICallEvent.ERROR,this._handleError),this._tuiCallEngine.off(U.TUICallEvent.INVITED,this._handleNewInvitationReceived),this._tuiCallEngine.off(U.TUICallEvent.USER_ACCEPT,this._handleUserAccept),this._tuiCallEngine.off(U.TUICallEvent.USER_ENTER,this._handleUserEnter),this._tuiCallEngine.off(U.TUICallEvent.USER_LEAVE,this._handleUserLeave),this._tuiCallEngine.off(U.TUICallEvent.REJECT,this._handleInviteeReject),this._tuiCallEngine.off(U.TUICallEvent.NO_RESP,this._handleNoResponse),this._tuiCallEngine.off(U.TUICallEvent.LINE_BUSY,this._handleLineBusy),this._tuiCallEngine.off(U.TUICallEvent.CALLING_CANCEL,this._handleCallingCancel),this._tuiCallEngine.off(U.TUICallEvent.SDK_READY,this._handleSDKReady),this._tuiCallEngine.off(U.TUICallEvent.KICKED_OUT,this._handleKickedOut),this._tuiCallEngine.off(U.TUICallEvent.MESSAGE_SENT_BY_ME,this._messageSentByMe),this._tuiCallEngine.off(U.TUICallEvent.CALLING_END,this._handleCallingEnd),this._tuiCallEngine.off(U.TUICallEvent.CALL_TYPE_CHANGED,this._handleCallTypeChange),this._tuiCallEngine.off(U.TUICallEvent.USER_VIDEO_AVAILABLE,this._handleUserVideoAvailable),this._tuiCallEngine.off(U.TUICallEvent.USER_AUDIO_AVAILABLE,this._handleUserAudioAvailable),this._tuiCallEngine.off(U.TUICallEvent.USER_VOICE_VOLUME,this._handleUserVoiceVolume),this._tuiCallEngine.off(U.TUICallEvent.DEVICED_UPDATED,this._handleDeviceUpdate)}_handleError(e){const{code:t,message:n}=e||{},l=Object.values(xA).indexOf(t);let i="";if(l!==-1){const c=Object.keys(xA)[l];i=B(ze[c]),i&&r.update(s.CALL,a.TOAST_INFO,{text:i,type:a.ERROR})}this._executeExternalAfterCalling(),console.error(`${a.PREFIX}_handleError, errorCode: ${t}; errorMessage: ${i||n}.`)}async _handleNewInvitationReceived(e){console.log(`${a.PREFIX}onCallReceived event data: ${JSON.stringify(e)}.`);const{sponsor:t="",isFromGroup:n,callMediaType:l,inviteData:i={},calleeIdList:c=[],groupID:d=""}=this._analyzeEventData(e),I=r.getData(s.CALL,a.LOCAL_USER_INFO),M=[t,...c.filter(D=>D!==I.userId)],g=l||i.callType,C=g===T.AUDIO?W.CALLEE_CALLING_AUDIO_MSG:W.CALLEE_CALLING_VIDEO_MSG;let p={[a.CALL_ROLE]:x.CALLEE,[a.IS_GROUP]:n,[a.CALL_STATUS]:j.CALLING,[a.CALL_MEDIA_TYPE]:g,[a.CALL_TIPS]:B(C),[a.CALLER_USER_INFO]:{userId:t},[a.GROUP_ID]:d};r.updateStore(p,s.CALL),this._executeExternalBeforeCalling(),this.statusChanged&&this.statusChanged({oldStatus:G.IDLE,newStatus:G.BE_INVITED});const N=await pA(M,this.getTim(),r),[u]=N.filter(D=>D.userId===t);N.length>0&&r.updateStore({[a.REMOTE_USER_INFO_LIST]:N,[a.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST]:N,[a.CALLER_USER_INFO]:{userId:t,nick:(u==null?void 0:u.nick)||"",avatar:(u==null?void 0:u.avatar)||"",displayUserInfo:(u==null?void 0:u.remark)||(u==null?void 0:u.nick)||t}},s.CALL)}_handleUserAccept(e){this._callerChangeToConnected(),r.update(s.CALL,a.TOAST_INFO,B("answered")),console.log(`${a.PREFIX}accept event data: ${JSON.stringify(e)}.`)}async _handleUserEnter(e){this._callerChangeToConnected();const{userID:t,data:n}=this._analyzeEventData(e);let l=r.getData(s.CALL,a.REMOTE_USER_INFO_LIST);if(!l.find(c=>(c==null?void 0:c.userId)===t)){l.push({userId:t}),l.length>0&&(r.update(s.CALL,a.REMOTE_USER_INFO_LIST,l),r.update(s.CALL,a.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST,l));const[c]=await pA([t],this.getTim(),r);l=r.getData(s.CALL,a.REMOTE_USER_INFO_LIST),l.forEach(d=>{(d==null?void 0:d.userId)===t&&(d=Object.assign(d,c))})}l=l.map(c=>(c.userId===t&&(c.isEnter=!0),c)),l.length>0&&(r.update(s.CALL,a.REMOTE_USER_INFO_LIST,l),r.update(s.CALL,a.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST,l)),console.log(`${a.PREFIX}userEnter event data: ${JSON.stringify(e)}.`)}_callerChangeToConnected(){const e=r.getData(s.CALL,a.CALL_ROLE);r.getData(s.CALL,a.CALL_STATUS)===j.CALLING&&e===x.CALLER&&(r.update(s.CALL,a.CALL_STATUS,j.CONNECTED),this._startTimer())}_handleUserLeave(e){console.log(`${a.PREFIX}userLeave event data: ${JSON.stringify(e)}.`);const{data:t,userID:n}=this._analyzeEventData(e);if(r.getData(s.CALL,a.IS_GROUP)){const i=(r.getData(s.CALL,a.REMOTE_USER_INFO_LIST).find(d=>d.userId===n)||{}).displayUserInfo||n,c=AA(r,W.END_CALL,i);r.update(s.CALL,a.TOAST_INFO,{text:c})}n&&this._deleteRemoteUser([n])}_unNormalEventsManager(e,t){console.log(`${a.PREFIX}${t} event data: ${JSON.stringify(e)}.`);const n=r.getData(s.CALL,a.IS_GROUP),l=r.getData(s.CALL,a.REMOTE_USER_INFO_LIST);switch(t){case U.TUICallEvent.REJECT:case U.TUICallEvent.LINE_BUSY:{const{userID:i}=this._analyzeEventData(e);let c=t===U.TUICallEvent.REJECT?W.OTHER_SIDE_REJECT_CALL:W.OTHER_SIDE_LINE_BUSY,d=AA(r,c);if(n){const I=(l.find(M=>M.userId===i)||{}).displayUserInfo||i;c=t===U.TUICallEvent.REJECT?W.REJECT_CALL:W.IN_BUSY,d=AA(r,c,I)}r.update(s.CALL,a.TOAST_INFO,{text:d}),i&&this._deleteRemoteUser([i]);break}case U.TUICallEvent.NO_RESP:{const{userIDList:i=[]}=this._analyzeEventData(e),c=n?W.TIMEOUT:W.CALL_TIMEOUT,d=i.map(M=>(l.find(C=>C.userId===M)||{}).displayUserInfo||M),I=n?AA(r,c,d.join()):AA(r,c);r.update(s.CALL,a.TOAST_INFO,{text:I}),i.length>0&&this._deleteRemoteUser(i);break}case U.TUICallEvent.CALLING_CANCEL:{this._resetCallStore();break}}}_handleInviteeReject(e){this._unNormalEventsManager(e,U.TUICallEvent.REJECT)}_handleNoResponse(e){this._unNormalEventsManager(e,U.TUICallEvent.NO_RESP)}_handleLineBusy(e){this._unNormalEventsManager(e,U.TUICallEvent.LINE_BUSY)}_handleCallingCancel(e){this._executeExternalAfterCalling(),this._unNormalEventsManager(e,U.TUICallEvent.CALLING_CANCEL)}_handleCallingEnd(e){console.log(`${a.PREFIX}callEnd event data: ${JSON.stringify(e)}.`),this._executeExternalAfterCalling(),this._resetCallStore()}async _handleSDKReady(e){let t=r.getData(s.CALL,a.LOCAL_USER_INFO);t=await tt(t.userId,this.getTim(),r),this._defaultOfflinePushInfo.title=t==null?void 0:t.displayUserInfo,r.update(s.CALL,a.LOCAL_USER_INFO,t),r.update(s.CALL,a.LOCAL_USER_INFO_EXCLUDE_VOLUMN,t)}_handleKickedOut(e){console.log(`${a.PREFIX}kickOut event data: ${JSON.stringify(e)}.`),this.kickedOut&&this.kickedOut(e),r.update(s.CALL,a.CALL_TIPS,AA(r,W.KICK_OUT)),this._resetCallStore()}_handleCallTypeChange(e){const{newCallType:t,type:n}=this._analyzeEventData(e);r.update(s.CALL,a.CALL_MEDIA_TYPE,t||n)}_messageSentByMe(e){const t=e==null?void 0:e.data;this.onMessageSentByMe&&this.onMessageSentByMe(t)}async _handleUserVideoAvailable(e){const{userID:t,isVideoAvailable:n}=this._analyzeEventData(e);console.log(`${a.PREFIX}_handleUserVideoAvailable event data: ${JSON.stringify(e)}.`);try{n&&await this._startRemoteView(t)}catch(l){console.error(`${a.PREFIX}_startRemoteView failed, error: ${l}.`)}this._setRemoteUserInfoAudioVideoAvailable(n,a.VIDEO,t)}_handleUserAudioAvailable(e){const{userID:t,isAudioAvailable:n}=this._analyzeEventData(e);console.log(`${a.PREFIX}_handleUserAudioAvailable event data: ${JSON.stringify(e)}.`),this._setRemoteUserInfoAudioVideoAvailable(n,a.AUDIO,t)}_handleUserVoiceVolume(e){try{const{volumeMap:t}=this._analyzeEventData(e);if((t||[]).length===0)return;const n=r.getData(s.CALL,a.LOCAL_USER_INFO);let l=r.getData(s.CALL,a.REMOTE_USER_INFO_LIST);const[i]=t.filter(I=>I.userId===n.userId),c=t.reduce((I,M)=>M.userId!==n.userId?{...I,[M.userId]:M.audioVolume}:I,{});n.volume=i.audioVolume,l=l.map(I=>({...I,volume:c[I.userId]}));const d={[a.LOCAL_USER_INFO]:n,[a.REMOTE_USER_INFO_LIST]:l};r.updateStore(d,s.CALL)}catch(t){console.debug(t)}}_handleDeviceUpdate(e){const{cameraList:t,microphoneList:n,speakerList:l,currentCamera:i,currentMicrophone:c,currentSpeaker:d}=e;r.update(s.CALL,a.DEVICE_LIST,{cameraList:t,microphoneList:n,speakerList:l,currentCamera:i,currentMicrophone:c,currentSpeaker:d})}_updateDeviceList(){r.getData(s.CALL,a.CALL_MEDIA_TYPE)===T.VIDEO&&this._tuiCallEngine.getDeviceList("camera").then(t=>{const n=r.getData(s.CALL,a.DEVICE_LIST),l=(t==null?void 0:t[0])||{};r.update(s.CALL,a.DEVICE_LIST,{...n,cameraList:t,currentCamera:l})}).catch(t=>{console.error(`${a.PREFIX}updateCameraList failed, error: ${t}.`)}),this._tuiCallEngine.getDeviceList("microphones").then(t=>{const n=r.getData(s.CALL,a.DEVICE_LIST),l=(t==null?void 0:t[0])||{};r.update(s.CALL,a.DEVICE_LIST,{...n,microphoneList:t,currentMicrophone:l})}).catch(t=>{console.error(`${a.PREFIX}updateMicrophoneList failed, error: ${t}.`)})}_handleCallError(e,t){if(!_A(e))throw this._noDevicePermissionToast(e,T.AUDIO),console.error(`${a.PREFIX}${t} failed, error: ${e}.`),this._resetCallStore(),e}setCallback(e){const{beforeCalling:t,afterCalling:n,onMinimized:l,onMessageSentByMe:i,kickedOut:c,statusChanged:d}=e;t&&(this.beforeCalling=t),n&&(this.afterCalling=n),l&&(this.onMinimized=l),i&&(this.onMessageSentByMe=i),c&&(this.kickedOut=c),d&&(this.statusChanged=d)}async getDeviceList(e){try{return await this._tuiCallEngine.getDeviceList(e)}catch(t){this._handleCallError(t,"call")}}toggleMinimize(){const e=r.getData(s.CALL,a.IS_MINIMIZED);r.update(s.CALL,a.IS_MINIMIZED,!e),console.log(`${a.PREFIX}toggleMinimize: ${e} -> ${!e}.`),this.onMinimized&&this.onMinimized(e,!e)}_executeExternalBeforeCalling(){this.beforeCalling&&this.beforeCalling()}_executeExternalAfterCalling(){this.afterCalling&&this.afterCalling()}setVideoDisplayMode(e){r.update(s.CALL,a.DISPLAY_MODE,e)}async setVideoResolution(e){try{if(!e)return;r.update(s.CALL,a.VIDEO_RESOLUTION,e),await this._tuiCallEngine.setVideoQuality(e)}catch(t){console.warn(`${a.PREFIX}setVideoResolution failed, error: ${t}.`)}}async _startRemoteView(e){if(!e){console.warn(`${a.PREFIX}_startRemoteView userID is empty`);return}if(!document.getElementById(e))return console.warn(`${a.PREFIX}_startRemoteView can't find HTMLElement sid: ${e}`),Promise.reject();try{const t=r.getData(s.CALL,a.DISPLAY_MODE);await this._tuiCallEngine.startRemoteView({userID:e,videoViewDomID:e,options:{objectFit:t}})}catch(t){return console.error(`${a.PREFIX}_startRemoteView error: ${t}.`),Promise.reject(t)}}_setRemoteUserInfoAudioVideoAvailable(e,t,n){let l=r.getData(s.CALL,a.REMOTE_USER_INFO_LIST);l=l.map(i=>{if(i.userId===n){if(t===a.AUDIO)return{...i,isAudioAvailable:e};if(t===a.VIDEO)return{...i,isVideoAvailable:e}}return i}),l.length>0&&(r.update(s.CALL,a.REMOTE_USER_INFO_LIST,l),r.update(s.CALL,a.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST,l))}_setLocalUserInfoAudioVideoAvailable(e,t){let n=r.getData(s.CALL,a.LOCAL_USER_INFO);t===a.AUDIO&&(n={...n,isAudioAvailable:e}),t===a.VIDEO&&(n={...n,isVideoAvailable:e}),r.update(s.CALL,a.LOCAL_USER_INFO,n),r.update(s.CALL,a.LOCAL_USER_INFO_EXCLUDE_VOLUMN,n)}async _updateCallStoreBeforeCall(e,t,n){const l=n||r.getData(s.CALL,a.IS_MINIMIZED)?W.CALLER_GROUP_CALLING_MSG:W.CALLER_CALLING_MSG;let i={[a.CALL_MEDIA_TYPE]:e,[a.CALL_ROLE]:x.CALLER,[a.REMOTE_USER_INFO_LIST]:t,[a.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST]:t,[a.IS_GROUP]:!!n,[a.CALL_TIPS]:B(l),[a.GROUP_ID]:n};r.updateStore({...i,[a.CALL_STATUS]:j.CALLING},s.CALL),this.statusChanged&&this.statusChanged({oldStatus:G.IDLE,newStatus:n?G.DIALING_GROUP:G.DIALING_C2C}),this._updateDeviceList();const c=await pA(t.map(d=>d.userId),this.getTim(),r);c.length>0&&(r.update(s.CALL,a.REMOTE_USER_INFO_LIST,c),r.update(s.CALL,a.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST,c))}async _updateCallStoreAfterCall(e,t){if(t){if(r.update(s.CALL,a.IS_CLICKABLE,!0),r.update(s.CALL,a.ROOM_ID,t.roomID),t.code===0){r.getData(s.CALL,a.CALL_MEDIA_TYPE)===T.VIDEO&&await this.openCamera(a.LOCAL_VIDEO);try{await this._tuiCallEngine.setVideoQuality(r.getData(s.CALL,a.VIDEO_RESOLUTION))}catch(i){console.warn(`${a.PREFIX}setVideoQuality failed, error: ${i}.`)}}else{this._resetCallStore();return}const n=r.getData(s.CALL,a.LOCAL_USER_INFO);r.update(s.CALL,a.LOCAL_USER_INFO,{...n,isEnter:!0}),r.update(s.CALL,a.LOCAL_USER_INFO_EXCLUDE_VOLUMN,{...n,isEnter:!0}),this._setLocalUserInfoAudioVideoAvailable(!0,a.AUDIO)}else this._resetCallStore()}_resetCurrentDevice(){const{cameraList:e,microphoneList:t,speakerList:n}=r.getData(s.CALL,a.DEVICE_LIST);r.update(s.CALL,a.DEVICE_LIST,{microphoneList:t,cameraList:e,speakerList:n,currentCamera:(e==null?void 0:e[0])||{},currentMicrophone:(t==null?void 0:t[0])||{},currentSpeaker:(n==null?void 0:n[0])||{}})}_resetCallStore(){const e=LA(r);this._stopTimer();let t=Object.keys(NA).filter(i=>{switch(NA[i]){case a.CALL_STATUS:case a.LANGUAGE:case a.IS_GROUP:case a.DISPLAY_MODE:case a.VIDEO_RESOLUTION:case a.ENABLE_FLOAT_WINDOW:case a.LOCAL_USER_INFO:case a.LOCAL_USER_INFO_EXCLUDE_VOLUMN:return!1;default:return!0}});t=t.map(i=>NA[i]),r.reset(s.CALL,t),r.getData(s.CALL,a.CALL_STATUS)!==j.IDLE&&r.reset(s.CALL,[a.CALL_STATUS],!0),r.reset(s.CALL,[a.IS_MINIMIZED],!0),r.reset(s.CALL,[a.IS_EAR_PHONE],!0),r.update(s.CALL,a.LOCAL_USER_INFO,{...r.getData(s.CALL,a.LOCAL_USER_INFO),isVideoAvailable:!1,isAudioAvailable:!1}),r.update(s.CALL,a.LOCAL_USER_INFO_EXCLUDE_VOLUMN,{...r.getData(s.CALL,a.LOCAL_USER_INFO_EXCLUDE_VOLUMN),isVideoAvailable:!1,isAudioAvailable:!1}),r.update(s.CALL,a.REMOTE_USER_INFO_LIST,[]),r.update(s.CALL,a.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST,[]),this._resetCurrentDevice();const l=LA(r);e!==l&&this.statusChanged&&this.statusChanged({oldStatus:e,newStatus:l})}_noDevicePermissionToast(e,t){var n;if(We(e)){let l="";t===T.AUDIO&&(l=AA(r,W.NO_MICROPHONE_DEVICE_PERMISSION)),t===T.VIDEO&&(l=AA(r,W.NO_CAMERA_DEVICE_PERMISSION));const i=(n=this._tuiCallEngine)==null?void 0:n.getDevicePermission();i!=null&&i.audio||r.update(s.CALL,a.SHOW_PERMISSION_TIP,!0),l&&r.update(s.CALL,a.TOAST_INFO,{text:l,type:a.ERROR}),console.error(`${a.PREFIX}call failed, error: ${e.message}.`)}}_startTimer(){this._timerId===-1&&(this._startTimeStamp=BA(),this._timerId=fA.run(a.TIMEOUT,this._updateCallDuration.bind(this),{delay:1e3}))}_updateCallDuration(){const e=Math.round((BA()-this._startTimeStamp)/1e3),t=Fe(e);r.update(s.CALL,a.CALL_DURATION,t)}_stopTimer(){this._timerId!==-1&&(fA.clearTask(this._timerId),this._timerId=-1)}_deleteRemoteUser(e){if(e.length===0)return;let t=r.getData(s.CALL,a.REMOTE_USER_INFO_LIST);e.forEach(n=>{t=t.filter(l=>l.userId!==n)}),r.update(s.CALL,a.REMOTE_USER_INFO_LIST,t),r.update(s.CALL,a.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST,t)}_analyzeEventData(e){return e||{}}async getGroupMemberList(e,t){const n=r.getData(s.CALL,a.GROUP_ID);return await at(n,this.getTim(),e,t)}async getGroupProfile(){const e=r.getData(s.CALL,a.GROUP_ID);return await nt(e,this.getTim())}_watchTUIStore(){r==null||r.watch(s.CALL,{[a.CALL_STATUS]:this._handleCallStatusChange})}_unwatchTUIStore(){r==null||r.unwatch(s.CALL,{[a.CALL_STATUS]:this._handleCallStatusChange})}bindTUICore(e){this._TUICore=e}};P([F(),Y(K.init)],k.prototype,"init",1),P([F(),Y(K.call)],k.prototype,"call",1),P([F(),Y(K.groupCall)],k.prototype,"groupCall",1),P([F(),Y(K.inviteUser)],k.prototype,"inviteUser",1),P([F(),Y(K.joinInGroupCall)],k.prototype,"joinInGroupCall",1),P([Y(K.setLanguage)],k.prototype,"setLanguage",1),P([Y(K.enableFloatWindow)],k.prototype,"enableFloatWindow",1),P([Y(K.setSelfInfo)],k.prototype,"setSelfInfo",1),P([Y(K.enableAIVoice)],k.prototype,"enableAIVoice",1),P([Y(K.setCallingBell)],k.prototype,"setCallingBell",1),P([Y(K.enableMuteMode)],k.prototype,"enableMuteMode",1),P([F()],k.prototype,"accept",1),P([F()],k.prototype,"hangup",1),P([F()],k.prototype,"reject",1),P([F()],k.prototype,"openCamera",1),P([F()],k.prototype,"closeCamera",1),P([F()],k.prototype,"openMicrophone",1),P([F()],k.prototype,"closeMicrophone",1),P([F()],k.prototype,"switchScreen",1),P([F()],k.prototype,"switchCallMediaType",1),P([F()],k.prototype,"switchCamera",1),P([F()],k.prototype,"switchDevice",1),P([Y(K.setVideoDisplayMode)],k.prototype,"setVideoDisplayMode",1),P([Y(K.setVideoResolution)],k.prototype,"setVideoResolution",1),P([_e({retries:5,timeout:200,onRetrying(o){console.warn(`${a.PREFIX}_startRemoteView, retrying [${o}]`)}})],k.prototype,"_startRemoteView",1);const h=k.getInstance(),v="data:image/png;base64,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",ct={class:"singleInvite-message"},dt=["src"],It={class:"singleInvite-nick"},Mt={key:0,class:"singleInvite-tips"},gt=A.defineComponent({__name:"SingleAudio",props:{isSponsor:{type:Boolean,required:!0},remoteUsersList:{type:Array,required:!0},callAlertMessage:{type:String,required:!0},callStatus:{type:String,required:!0}},setup(o){function e(t){t.target.src=v}return(t,n)=>(A.openBlock(),A.createElementBlock("div",ct,[A.createElementVNode("img",{class:"singleInvite-avatar",src:o.remoteUsersList[0].avatar||A.unref(v),onerror:e},null,8,dt),A.createElementVNode("div",It,A.toDisplayString(o.remoteUsersList[0].displayUserInfo),1),o.callStatus===A.unref(j).CALLING?(A.openBlock(),A.createElementBlock("span",Mt,A.toDisplayString(o.callAlertMessage),1)):A.createCommentVNode("",!0)]))}}),br="",V=(o,e)=>{const t=o.__vccOpts||o;for(const[n,l]of e)t[n]=l;return t},Nt=V(gt,[["__scopeId","data-v-b7fbc004"]]),Ct={class:"singleInvite-box"},ut={class:"singleInvite-message"},pt={class:"singleInvite-nick"},Lt={class:"singleInvite-tips"},ft=["src"],Dt=A.defineComponent({__name:"SingleVideo",props:{isSponsor:{type:Boolean,required:!0},remoteUsersList:{type:Array,required:!0},callAlertMessage:{type:String,required:!0}},setup(o){function e(t){t.target.src=v}return(t,n)=>(A.openBlock(),A.createElementBlock("div",Ct,[A.createElementVNode("div",ut,[A.createElementVNode("div",pt,A.toDisplayString(o.remoteUsersList[0].displayUserInfo),1),A.createElementVNode("span",Lt,A.toDisplayString(o.callAlertMessage),1)]),A.createElementVNode("img",{class:"singleInvite-avatar",src:o.remoteUsersList[0].avatar||A.unref(v),onerror:e},null,8,ft)]))}}),kr="",mt=V(Dt,[["__scopeId","data-v-5121a73b"]]),Et={xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 16 16",class:"design-iconfont"},Tt={key:0},yt=[A.createElementVNode("path",{d:"M8.62462 7.17395C8.90076 7.17395 9.12462 7.38807 9.12462 7.65221C9.12462 7.89434 8.93651 8.09444 8.69246 8.12611L8.62462 8.13047H7.3335C7.05735 8.13047 6.8335 7.91635 6.8335 7.65221C6.8335 7.41009 7.0216 7.20998 7.26565 7.17832L7.3335 7.17395H8.62462Z",fill:"#43D92B"},null,-1)],St={key:1},ht=[A.createElementVNode("path",{d:"M8.62462 5.57971C8.90076 5.57971 9.12462 5.79384 9.12462 6.05797C9.12462 6.3001 8.93651 6.5002 8.69246 6.53187L8.62462 6.53623H7.3335C7.05735 6.53623 6.8335 6.32211 6.8335 6.05797C6.8335 5.81585 7.0216 5.61575 7.26565 5.58408L7.3335 5.57971H8.62462Z",fill:"#43D92B"},null,-1)],Ut={key:2},jt=[A.createElementVNode("path",{d:"M8.62462 3.98547C8.90076 3.98547 9.12462 4.1996 9.12462 4.46373C9.12462 4.70586 8.93651 4.90596 8.69246 4.93763L8.62462 4.942H7.3335C7.05735 4.942 6.8335 4.72787 6.8335 4.46373C6.8335 4.22161 7.0216 4.02151 7.26565 3.98984L7.3335 3.98547H8.62462Z",fill:"#43D92B"},null,-1)],zt=A.createElementVNode("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M11.3301 3.45938C11.2517 1.89175 9.77808 0.658081 8 0.658081C6.17253 0.658081 4.66667 1.96123 4.66667 3.59077V7.72539L4.66994 7.85678C4.7483 9.42442 6.22192 10.6581 8 10.6581C9.82747 10.6581 11.3333 9.35493 11.3333 7.72539V3.59077L11.3301 3.45938ZM6.0035 3.54179C6.06337 2.69234 6.92083 1.99146 8.00016 1.99146C9.11947 1.99146 10.0002 2.74521 10.0002 3.63675V7.67949L9.99682 7.77446C9.93695 8.62391 9.07949 9.32479 8.00016 9.32479C6.88086 9.32479 6.00016 8.57103 6.00016 7.67949V3.63675L6.0035 3.54179ZM8.33333 15.3333C8.51743 15.3333 8.66667 15.1841 8.66667 15V13.2964C11.5402 12.9793 14 10.6655 14 8.27322V7.68092C14 7.49682 13.8508 7.34758 13.6667 7.34758H13C12.8159 7.34758 12.6667 7.49682 12.6667 7.68092V8.27322L12.6634 8.39309C12.5681 10.1524 10.3982 11.9979 8.00396 12C8.00264 12 8.00132 12 8 12C7.99868 12 7.99736 12 7.99604 12C5.54737 11.9979 3.33333 10.0675 3.33333 8.27322L3.33043 7.65652C3.32956 7.47164 3.17839 7.32278 2.99352 7.32477L2.32975 7.33191C2.14706 7.33387 2 7.48252 2 7.66522V8.27322L2.00292 8.4162C2.09825 10.757 4.51708 12.9856 7.33333 13.2964V15C7.33333 15.1841 7.48257 15.3333 7.66667 15.3333H8.33333Z",fill:"#fff"},null,-1),lA=A.defineComponent({__name:"MicVolume",props:{volume:{}},setup(o){return(e,t)=>(A.openBlock(),A.createElementBlock("svg",Et,[e.volume&&e.volume>0?(A.openBlock(),A.createElementBlock("g",Tt,yt)):A.createCommentVNode("",!0),e.volume&&e.volume>5?(A.openBlock(),A.createElementBlock("g",St,ht)):A.createCommentVNode("",!0),e.volume&&e.volume>10?(A.openBlock(),A.createElementBlock("g",Ut,jt)):A.createCommentVNode("",!0),zt]))}}),Vt={},Ot={xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 16 16",class:"design-iconfont"},Bt=[A.createElementVNode("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M4.82825 12.4759C5.58172 12.9048 6.43742 13.1978 7.33333 13.2967V15.0002C7.33333 15.1843 7.48257 15.3335 7.66667 15.3335H8.33333C8.51743 15.3335 8.66667 15.1843 8.66667 15.0002V13.2967C11.5402 12.9796 14 10.6658 14 8.27347V7.68116C14 7.49707 13.8508 7.34783 13.6667 7.34783H13C12.8159 7.34783 12.6667 7.49707 12.6667 7.68116V8.27347L12.6634 8.39333C12.5681 10.1526 10.3982 11.9982 8.00396 12.0002L8 12.0002L7.99604 12.0002C7.22514 11.9996 6.47749 11.8078 5.81487 11.4893L4.82825 12.4759ZM6.83168 10.4725C7.196 10.5927 7.5899 10.6583 8 10.6583C9.82747 10.6583 11.3333 9.35517 11.3333 7.72563V5.97083L6.83168 10.4725ZM10.9068 2.1547L4.73629 8.32524C4.70043 8.17327 4.67793 8.01689 4.66994 7.85702L4.66667 7.72563V3.59102C4.66667 1.96148 6.17253 0.658325 8 0.658325C9.24072 0.658325 10.3332 1.25901 10.9068 2.1547ZM3.62455 9.43698L2.64622 10.4153C2.26208 9.78985 2.03108 9.10804 2.00292 8.41644L2 8.27347V7.66546C2 7.48277 2.14706 7.33411 2.32975 7.33215L2.99352 7.32502C3.17839 7.32303 3.32956 7.47188 3.33043 7.65676L3.33333 8.27347C3.33333 8.66191 3.4371 9.05672 3.62455 9.43698Z",fill:"#fff"},null,-1),A.createElementVNode("rect",{x:".609863",y:"13.4514",width:"19.0127",height:"1.5",rx:".75",transform:"rotate(-45 .609863 13.4514)",fill:"#FE3C44"},null,-1)];function wt(o,e){return A.openBlock(),A.createElementBlock("svg",Ot,Bt)}const rA=V(Vt,[["render",wt]]),bt={key:0,class:"singleInvite-header-mobile"},kt={key:1,class:"singleInvite-header-desktop"},Pt={class:"singleInvite-message"},qt={class:"singleInvite-nick"},Rt={class:"singleInvite-nick-span"},xt={key:0,class:"microphone-icon-container"},Qt={key:0,class:"singleInvite-tips"},ae=A.defineComponent({__name:"InviteInfo",setup(o){const{CALL_ROLE:e,CALL_MEDIA_TYPE:t,IS_GROUP:n,REMOTE_USER_INFO_LIST:l,CALL_STATUS:i,CALL_TIPS:c}=a,d=A.ref(r.getData(s.CALL,e)),I=A.ref(r.getData(s.CALL,t)),M=A.ref(r.getData(s.CALL,n)),g=A.ref(r.getData(s.CALL,l)),C=A.ref(r.getData(s.CALL,i)),p=A.ref(r.getData(s.CALL,c)),N=!X.isPC,u=d.value===x.CALLER,D=f=>{d.value=f},y=f=>{M.value=f},L=f=>{I.value=f},w=f=>{g.value=f},E=f=>{C.value=f},z=f=>{p.value=f};return A.onMounted(()=>{r.watch(s.CALL,{[e]:D,[n]:y,[t]:L,[l]:w,[i]:E,[c]:z},{notifyRangeWhenWatch:a.MYSELF})}),A.onUnmounted(()=>{r.unwatch(s.CALL,{[i]:E,[t]:L,[e]:D,[n]:y,[l]:w,[c]:z})}),(f,S)=>(A.openBlock(),A.createElementBlock("div",null,[!A.unref(M)&&N?(A.openBlock(),A.createElementBlock("div",bt,[A.unref(I)===A.unref(T).AUDIO&&A.unref(g).length!==0?(A.openBlock(),A.createBlock(Nt,{key:0,class:"singleAudio","remote-users-list":A.unref(g),"is-sponsor":u,"call-alert-message":A.unref(p),"call-status":A.unref(C)},null,8,["remote-users-list","call-alert-message","call-status"])):A.createCommentVNode("",!0),A.unref(I)===A.unref(T).VIDEO&&A.unref(g).length!==0?(A.openBlock(),A.createBlock(mt,{key:1,class:"singleVideo","remote-users-list":A.unref(g),"is-sponsor":u,"call-alert-message":A.unref(p)},null,8,["remote-users-list","call-alert-message"])):A.createCommentVNode("",!0)])):A.createCommentVNode("",!0),!A.unref(M)&&!N&&A.unref(g).length!==0?(A.openBlock(),A.createElementBlock("div",kt,[A.createElementVNode("div",Pt,[A.createElementVNode("div",qt,[A.createElementVNode("div",Rt,A.toDisplayString(A.unref(g)[0].displayUserInfo),1),A.unref(I)===A.unref(T).AUDIO&&A.unref(C)==="connected"?(A.openBlock(),A.createElementBlock("div",xt,[A.unref(g)[0].isAudioAvailable?(A.openBlock(),A.createBlock(lA,{key:0,volume:A.unref(g)[0].volume},null,8,["volume"])):(A.openBlock(),A.createBlock(rA,{key:1}))])):A.createCommentVNode("",!0)]),A.unref(C)!==A.unref(j).CONNECTED?(A.openBlock(),A.createElementBlock("span",Qt,A.toDisplayString(A.unref(p)),1)):A.createCommentVNode("",!0)])])):A.createCommentVNode("",!0)]))}}),Gr="",ne="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAAw1BMVEUAAAD7WV77WF/7WF77WF/6WV/7WV76WF77WV/7WmD6WWD/XmP/Zmb/gID/gID/XmH6WV/7WF77WF77WF77WV76WF/6WV/7WV/7WV/8WV77WF/7WV/8WWD8WF/8W177Wl/7XGD6WGL/XWf/YGD6WF76WF7////++Pj+8vP9z9H7f4T6Ymj7lJj7jZH7iIz6aW/+/Pz8srT8rrD8mp78ubv6b3T6XGL92tv91db9x8n9vsD8qKv+6+v+5eb+3+H8oqX7dXpC6t/gAAAAJXRSTlMA7cO6idPGqYVCNxwMBgQf2vv58+nfzK+slXx0XktJPj00FRDZDO0oagAAA7VJREFUeNrE1wl2okAUBdDPjBic5zGJeUhEjUYTZ5P9r6pP253uIyoUCFV3Acrnv8OrolgGVsc0FF2rSqWSVNV0xTA71oC4eOipcgVXVWS190BpsjOmXkSgom5mbEqH1ZTARGpalLh86wURvLTylKSnOiKrP1FSHhXEojxSEjIyYpMzdK9sA3dpZOkeuXYZdyq3cxRbX0MCtH7c8VUkRM3F2r6MxMgxktCVkCCpSxGpSJhKUdgGEmfYESpXQQoU5qp+riEVtWfG4isgJYU80/wFpKbwzLD/GlJUC82BrSBVik3BDKTMiPf94fVF6oKDbkD/SOBAutlMORlcyDmuAWCPQR/c9K8uQAM32rUltMFRmy5ky+ConCW/BrhqkE8GnGXonAzOZDrzCO7Ob64KuFPO7v8Q4In+q0OAOv2ThxB5+tGCEC36UYAQL/SXBUEs+qMJQZp0YksQRLLF1IC/EEwIY9JvOoTRT5fBIoQpPhBRDwL1TodxgVQRRxH/saSCGLzvydfydXXcu7Ph0HX3q9ftfDHyEFWFaICIvOlus3euc9fzqYcoBhGLYPS+mjnBZsflCMws6oDV53QzdNi42+knmHTIZJ196zpRuPMPMDDJYBp+cbx404fN/Gsxno6mk8l4t309XK5mPUEog+U8/DZ3fdNtFh9Xwvm+9q/oMEYIJbwJvPn5z7oBGfMW61m0R9BJQyDv/fzvV+OQdL35l3UcIYBGVQQZ+5PnIczG8du+4aYqSbjte+34DBFq6VwYTnCLRCXctLsM9gGhds4VY9xQ+sWcneQwCMNQAEWqEFWXVZfsip2GeaYDEtz/VF11ZzdEVfV5B0DBjpLYDs4+v8KWnDoWmFVbgJ6CnAVPcipYYrUUqJswMyx4kVPKokHbhKFPJDknp4FFHYlC9SCyLEnJKWNRqx1EB5LNSiDdDHsk7xBEPp8xI7n1LFlIFKnXcS3csLakLaqitbeNyTsG8aYI1FOfD6Ryr2IiWaw+yRr+mB9LKoTeaxW2ItlJf5S2htncm6KiH1VlqX/j+uVZPq4D/dtlD4UJvDSDF6fw8hzeoMC3aOBNKnibDt6oxLdqg4Qgkv206+EDC/jIBj+0go/t8INL+OgWP7yGj+/f3dtBCQAgAMDACpawf0VBE/iQGy7Hzg8MfOHwEwvfePzI5FcuPrP5nc8PjX7p9FMr33r92OzXbj+3+73fAwdPPALIxTMfD5089QpgN8/9AuAxQD4D6PWw3zEvGpv9fgWfC/Q7gN9f8P8FGlRGjHL2An8AAAAASUVORK5CYII=",oe="data:image/svg+xml;base64,IDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgNDAgNDAiIGNsYXNzPSJkZXNpZ24taWNvbmZvbnQiPgogICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDIwQzAgOC45NTQzMSA4Ljk1NDMxIDAgMjAgMEMzMS4wNDU3IDAgNDAgOC45NTQzMSA0MCAyMEM0MCAzMS4wNDU3IDMxLjA0NTcgNDAgMjAgNDBDOC45NTQzMSA0MCAwIDMxLjA0NTcgMCAyMFoiIGZpbGw9IiNGRTNDNDQiIC8+CiAgICA8cGF0aCBkPSJNMjUuNDQzNyAyMC40NDlDMjUuNDQzNyAyMi4xMTQyIDI1LjIzMzYgMjMuMzUxNSAyOC41MDg5IDIzLjcxMjZDMzEuNzg3NSAyNC4wNzM3IDMxLjM2NjYgMjEuNjc5NCAzMS4zNjYyIDIwLjA2NjlDMzEuMzY0OSAxOC4yMDYxIDI3LjA2MDIgMTUuNjE5IDIwLjI3MjYgMTUuNjE3M0MxMy40ODY2IDE1LjYxNzMgOS4xNzg5IDE4LjIwNSA5LjE3ODg4IDIwLjA2N0M5LjE3ODg3IDIxLjY4IDguNzU2MjEgMjQuMDcyNiAxMi4wMzMyIDIzLjcxMjNDMTUuMzEwMSAyMy4zNTM3IDE1LjEgMjIuMTE1NSAxNS4wOTg0IDIwLjQ0OTVDMTUuMTAxMyAxOS4yODYyIDE3Ljc1ODcgMTkuMDMxNiAyMC4yNzI1IDE5LjAyOThDMjIuNzg2MyAxOS4wMjgxIDI1LjQ0NTQgMTkuMjg0NCAyNS40NDM3IDIwLjQ0OVoiIGZpbGw9IiNmZmYiIC8+CiAgPC9zdmc+",Gt="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjg5NTk1MTk0MDUzIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjIzNDQiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTUxMiAxNzAuNjY2NjY3djg1LjMzMzMzM2EyNTYgMjU2IDAgMSAxLTIyMy41NzMzMzMgMTMxLjJMMjEzLjkzMDY2NyAzNDUuNkEzNDEuMzMzMzMzIDM0MS4zMzMzMzMgMCAxIDAgNTEyIDE3MC42NjY2Njd6IiBmaWxsPSIjMDAwMDAwIiBvcGFjaXR5PSIuMyIgcC1pZD0iMjM0NSI+PC9wYXRoPjwvc3ZnPg==",le="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAMAAAC5zwKfAAAAsVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+3mHKcAAAAOnRSTlMAChshaFgmE25ORA9eSRa/sTLNloBjBlM/07qFKok2m3c786wukeTf3Kh07PCNe8fDtZ/o16Kl9/nJwyGDfwAABBtJREFUWMOs0cuKBSEMRVEfkEJFwUnKgQiC//+NHbvUWz1rbrKdLw5G/SNUUqGeIUppgZqiCKgvijwhUKeUCNwL+ZwxWxT4RCTuAwb2Qm2sXeIBOeJlqc9ENmhgg2aBgQOiBYA/E3ln1rYu0C6QdxUE8mZHvKjw/ZFh1Ed8TQyMe0CuswnCErViZPKghe+NQXG6MoGHJC8pVnq8QRKD4gU950NCtZrpXa3l3x7RItPD3NtDjhkobqaQt8lckQ3m3vshhxYY2GcP2JJil33pm+zA964y68vUfBB8OWQxfA+L95ssDflgIu+QVvGr0e9KRwGwRR+3OQS84CP1kDEJgMnFU9ECoD2gd00JNFx01BRdlQD77U5WAvTuUxIBaeG9XpAA3X1yWgK8XyB+aehXP53YbZdyQBjA8SFKYpWHNmRZ5aEQ6dn3/2D3NQy6262Nf6/qnH7nmplOEoBs8+gJTg5u7JIi9Mk2ffZcMn0pmiI0Ztt6HsrSvdYVIRJrTWBZuh/IX6DSuxQy4gWMVQ37gczVvZCKPfoSgKvSvvqBSYHPBKNu4aGhJtQxYj9wD2BVXDCIBlDDD6jfqQzDSxzHBBTRiAWMxAz6gONrFOPAu4RLhESm5jSO7wPmlwOIuKgw4Pk3U3E4jeru0UFUhUELf2UzgJG4Hue8dQ9RTbpjfKEXGo7hhM4jftwi/wCV4LE81QVXcxy37TwiF/sAluThmlSbgDXSlhl18wZHHyJkvEBlLNeKzrgbqESBT0jflciGrbnK2+J2sy6e4IdBQEg/1lDVXGg9x9nS73szPQCQkFFKNa87NQftuLe3kZaCYxgSMoAB6yhhyzXeTmUm73kf00AHkIgH6e5tQ6fiwIPM946anob68QhiRfoiumu8A7DyVFW13tnHtRHKei0GYaSg+0Yc4cDDovr9l8emR/BALMljIA8eLjS71jNN00qEl8umLV2GWtEfo4d41Wk9ED2Tf3o2I0HSb7c7UT/s0GNzVgWvHhBKFFWc/M6t5DRLQdQBxKLunyj0I0ozd/V8wEGKnWizj8fbOHWfplKWYrCeMZj+uj8TziTzlaAHKfkpcVh+SY8oakSvRcbaZJkkSVmGRbmaUQ4M+skHFcRqvgpUcPl5cz5B581qupckY28YpZg2M4bGED1pwlgqWXAN2rad56BtVqspDrwSrMTSW9HoaZSWlAOWntd4FbjC3v8gzBjaI/SiuWiRHXwOtuItlfUthV63Vj0C3q24Be9HzFJd4tGfjQTPs5LW+x3EoiybNHqntaMo9ytuwHbNUCpvFujNqIWq2C9AENPbhqU63ZU7dg7cTxACLrM7/36eL9nEPp3z5pSJaEiZtOL6/TVBzVjHA6sMczCbcbaYb9B6R894wbE8+7zJFU9lxl8D9Lp/VcLH/2j8UuYAAAAASUVORK5CYII=",Xt={class:"btn-container"},Ft=["src"],Wt=["src"],Yt=A.defineComponent({__name:"IconBtn",props:{text:{type:String,default:""},icon:{type:String},size:{type:Number},loadingIcon:{type:String,default:le},loading:{type:Boolean,default:!1},isMobile:{type:Boolean,default:!1}},emits:["click"],setup(o,{emit:e}){const t=o,n=A.computed(()=>`btn-body ${t.isMobile?"mobile":"desktop"}`),l=A.computed(()=>`btn-text ${t.isMobile?"mobile":"desktop"}`),i=e,c=()=>{!t.loading&&i("click")},d=A.computed(()=>{const I=t.size?t.size:t.isMobile?50:40,M=t.size?t.size:t.isMobile?50:40;return{width:`${I}px`,height:`${M}px`}});return(I,M)=>(A.openBlock(),A.createElementBlock("div",Xt,[A.createElementVNode("div",{class:A.normalizeClass(A.unref(n)),onClick:c,style:A.normalizeStyle({width:A.unref(d).width,height:A.unref(d).height})},[o.loading?(A.openBlock(),A.createElementBlock("img",{key:0,class:"invite-calling-item-loading",src:o.loadingIcon},null,8,Ft)):A.createCommentVNode("",!0),o.icon&&!o.loading?(A.openBlock(),A.createElementBlock("img",{key:1,src:o.icon},null,8,Wt)):A.createCommentVNode("",!0),A.renderSlot(I.$slots,"default",{},void 0,!0)],6),A.createElementVNode("div",{class:A.normalizeClass(A.unref(l))},A.toDisplayString(o.text),3)]))}}),Xr="",_=V(Yt,[["__scopeId","data-v-08b206cb"]]),Kt=A.defineComponent({__name:"Hangup",props:{isMobile:{type:Boolean,required:!0},isClickable:{type:Boolean,required:!0},isGroupCall:{type:Boolean,required:!0},callType:{type:Number,required:!0}},setup(o){const e=o,t=e.isMobile?ne:oe,n=e.isMobile&&!e.isGroupCall&&e.callType===T.VIDEO,l=!e.isMobile||n?le:Gt,i=async()=>{await h.hangup()};return(c,d)=>(A.openBlock(),A.createBlock(_,{loadingIcon:A.unref(l),loading:!o.isClickable,icon:A.unref(t),text:A.unref(B)("hangup"),isMobile:o.isMobile,onClick:i},null,8,["loadingIcon","loading","icon","text","isMobile"]))}}),Fr="",eA=V(Kt,[["__scopeId","data-v-5467a3cd"]]),Zt="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAe1BMVEX///8AAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9z+u+qAAAAKHRSTlMzAC8EKxkTKB0L70n76823e0Mhu1TAhDs29NWOd15NPyTdwqOdgGnjem2xqgAAAitJREFUWMOll+lyqzAMhU+8AA4UCNnbJmnT5fL+T3jHxHSMkQrU50cmzvKNjixkCytGMtFNqgQgVNroRHK/owEmUwikMjMXILUCKaXlDIDUAqyEllOAxP2dRSS/AmSKSaWSBxiBGRKGAySYqYQGZJitjAK8YYHexoAMi5SFgAQLlQwBBotlfIAUWCwhPUCKPyh1gEEClqcBjIHXNtArZcIBNEbarEPAeoORtAXQAWzbkbZkCBagOQPTJnQHUJyBaRPKAgxvYNqEWSF4CPLqqf1FT1UePBIYOsgHwZNG8qEHSPiqWl/F4XLML/W+8D+s4EtiWIVB/AcX1913MaxGaPjyfvhu473hoRfvC/jSaBjAZ7eXH+gJDKBBSgP2wMFm4Xwu6xMA7GlACkUDdgBK9/55A+BakAAFQQJKu9gVPcHGsCUBAiABNaw+++UXgNoD8PIdAKd3L6ArDWAsHNHpuy8/ADfaApPEG4C+qr/R6UgnkdnGq7cJ/x7h7JhtbNgkfv3UFMAmsWFKeWtT+OwWRZfSkinlhAQU1sOmJ5TOAQFIINlSBk51eT4Xjzq40wCJlSIB7QucPrp2aF8JgApbWjsm3Nbu2e4VtjTDANq7a14Hu2AAJmzrw462ry/58XIoWIAaHSxcS2Zamh4dbdU0oBodbSv917auB8f78oNFyNgLRuwVJ/qSFXvNi71oxl51oy/b8df9+IEjfuSJH7rix774wTN+9I0fvqPH//+TfI0R8kWyJgAAAABJRU5ErkJggg==",vt=A.defineComponent({__name:"SwitchCamera",setup(o){function e(){h.switchCamera()}return(t,n)=>(A.openBlock(),A.createBlock(_,{icon:A.unref(Zt),size:32,text:" ",isMobile:!0,onClick:e},null,8,["icon"]))}}),Wr="",re=V(vt,[["__scopeId","data-v-ac984e67"]]),Ht="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAMAAABlApw1AAAA81BMVEUAAAAPqmkQqmgWr2wQqmkQqmgPq2kPq2oQqmkXqnMhvHkQqmgQqmkPqmgQqmgPqmgQqmgPqmkPqmkQqmkRq2gPqWkPqmgQq2kPqmoVrWsUtXIrqoAQqWkPqWkQqmgPqWkPqmgPqmkQqmkQq2kQq2kTrWoQrGgRqmwTrmocqnEQqmgPqWjr9P8vtH4arW8Vq2zc7/QmsXip3tLp9P3W7fDP6+yE0bd5zbDg8fe/5uCx4Nab2chvy6rT7O6549yK07xaw5sgsHTl8vqS1sJPv5RIvY87uIc2t4LE5+Rmx6RgxZ+i281Buoq24tt/0LXK6ehVwZgDiGedAAAAK3RSTlMA6PEXgK2HQT0QB8B9+r389u/e0pp3ZFhSIwwG4v3hysa4saNtNTEtKQnjdBIG/QAAByZJREFUeNrt3QdW20AQBuCRZDuy5d4bAQIEyL9uGAgtgEMLkHb/06Q8zNpEOPY2SSTfCTx+s9omzZAGjltNlONeqW0V8rlcvmC1S168nKi6DoVcarOeXlu28Sx7eS1d30xRGLXctJfBXDJe2m1RqGxUVvNYSH61skHhkKrFbQix47Xgs8kt25Bgl10KUCNWhLRirEGBaFVXoMhKtUWmba+3oVB7fZtMalYsKGZVmmRKMlaABoVYkkxIJmxoYicMhFCzoJFVI722stAsu0X6NBMZaJdJaBvN9dcw4nWddHDewJg3Din3yoJB1itSLJ2DUbm02vTJwrisE9X0UZ9GsSUEYilGKqTiCEw8RdKSWQQomyRJTgmBKjkkpVFEwIoNkvDWQuCstyTslY0QsF8J//4MQiEjGMHbUPz/v9hCWdQIQf6PWQIj2Qn8+TOp6NCCkiWESilJC0llETLZFC0ijtCJ0wJiCKHYAhPAEkJoae7pwAnRA3SS5dB8QjeAx7I0lzRCKz3XAMghtHKvojsA5h4GbxBqb+gv6hA0+Hq0c3wF7eo0U/M1hIzOhuyXoy40e92kWRIQctJnD46WoFmCZtjKQMQx486gWWaLnudBxDGbMBxAM4+eVYOIOzblPXSr0TOSFgQMDtiUQ+hmJZWO4H32RAfyhMZx0oaAXp8x0zlkJxXuYq7YU5+gXYx8NAsQ8Z4x8zlU8JvNKhByz/7wFdpV6A/bFoTssCByyNqmp9YhhgfA3UC7dXqi1YaYHRZIDrVbNK0KIf4BfIN+VZq2AkFHLJgcWqEpDQjyD2Af+jXUHMX5B7AH/WI0qQhRO8zPNbQr0gQXwo5ZUDnkEleGsDMWVA6V6VHKhrD3LKgcslMSOzHuhPk6g341JdcZd8zXB+gXpzEb4i6Zv8/QzqYHG5BwzYLLoQ2+ExDXZf52oRvfFaxCxm5wObRKv7XykHHKfH3sQLt8i0/D4o79f/8dDHAV3Kn6z2SHNzAhzQ9ExZ2zPwz3ezDCo59SGUi5YU/tfYYhmRQRbULSAZt23IUxm/xSSdwRm9Q/h0F1FdfC+2zC0QBm8FG8BkmXEw/PE5i1RkTLkDTiS9AbGLbMl6IS9vh5kGk2kQNZfC4e9mCaQy6knQtvJOW5VIW07pA9uIVpVUpA3hHfxZiWoDKk8Y39F5hWpjjkddiDgx4Mi5MHBb6xB5cwzKMS5PHVxAUMK9E7KNDhx0GGtcmCCqf8asMsiwpQ4ZZf05tVoDxU6B7wK1aj8pSDEsf8OMionKIA+CsTxzAqR3mo8Wm8pxnBpDwVoMZdMMO4QBbUWNobTwVLMMiiNtTgK7pzGNSmEhTp9sfnWj2YUyIPqnxlD05gjkdxqDIaT2b9LoyJUxnKvOfX3MaUKQFleh/Gc8EApiSoCmX4XHAPU6rkQqFD9uA7DHHJgTp8RbTbhRkOkQ2FdgzvLW1+uKtG54A9uIIJy/x4XQ2+oPjWhQFr6r97OzX6JErzKyZVOh9Nrqvr/JJPFT4fDy+h3Sa/ZlWGTwb9DvTh16zkQS3+JPrUhV6enq9X+YXHqeYI0vSLC9UuTEXg8tdtlOodzo7g8zWUyLf4C09qDfps7MvTCHq3n1Rd5azyV85Uu2SPTkdToe331e15KvylP+Xes0cfrnnu3A9Vbpw3+GuX6l2wRx9v8Uvv7pBNOIcsW28djx3GXfQw+LrLpgyvIClOYzWoxB9F3OHxkD11cA05tcmXvzUY7TF/ipYadooelaFDZ5fNtjeAhDJxLqSIRCC/WHJlP0HhxCP40oOoopF6PJ0PbLYdiIpJf4bFyURwAUENmrICTTp7bLZ9CFmhaVXoMjpls51ARJWmtd5Bl9498yG5qGi36Il16HPGZvoosKhYF/ggWsLtkE2SX1RY2/SHCjS67LNZdjtYTEWgKICcwReVi4pCM4DicvsKJ7SYosIYnHwafcf87CT5SkCYfBrdY34JweIw8m77jBP+dtFKipbnkTfYYfIfztXoWR60O99lvk4xr6xUiSp5o4sh83GLOWW2aIYEDLjheSRQVikhX6ZN3tUhm9I/6WFOr5s0Ux1mnO9NLIXOuphbPSylCnuXF7+Hc//orof5vQlVscju4GaEhVjOyy/XGf2CqdEvWRvamqmW86+UbY5+4ezoly6PfvH4yJfvj34Dhei3sIh+E5Hot3GJfiOd6Lcyin4zqei384p+Q7Xot7SLflPBF9DWMfqNNaPf2vQFNJeNfnvf6DdYfgEtrn/a8qCZt0V+/rd5fzmN9n9KxgrQoBBLkinNigXFrEqTTNpeb0Oh9vo2mdaqrkCRlWqLAtGIFSGtGGtQgNyyDQl22aWgpWpxG0LseC1F4bBRWc1jIfnVygaFSsuNeRnMJePF3BaFUWqznl5btvEse3ktXd8MS948y3GriXLcK7WtQj6XyxesdsmLlxNV1yH1fgACmQEX1CWf4AAAAABJRU5ErkJggg==",Jt="data:image/svg+xml;base64,ICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbD0ibm9uZSIgdmlld0JveD0iMCAwIDQwIDQwIiBjbGFzcz0iZGVzaWduLWljb25mb250Ij4KICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMCAyMEMwIDguOTU0MzEgOC45NTQzMSAwIDIwIDBWMEMzMS4wNDU3IDAgNDAgOC45NTQzMSA0MCAyMFYyMEM0MCAzMS4wNDU3IDMxLjA0NTcgNDAgMjAgNDBWNDBDOC45NTQzMSA0MCAwIDMxLjA0NTcgMCAyMFYyMFoiIGZpbGw9IiMxOUQyNTUiIC8+CiAgICA8cGF0aCBkPSJNMjMuNTM5NyAxNi45NTM1QzI0LjcxNzIgMTguMTMxIDI1LjQ0MzYgMTkuMTU0NCAyOC4wMTQ5IDE3LjA5MzhDMzAuNTg4NSAxNS4wMzA4IDI4LjU5NzkgMTMuNjM1NCAyNy40NTczIDEyLjQ5NTVDMjYuMTQwNyAxMS4xODA2IDIxLjI2NzQgMTIuMzk1MSAxNi40NjY3IDE3LjE5MzVDMTEuNjY4MyAyMS45OTE5IDEwLjQ1MjEgMjYuODY3NyAxMS43Njg3IDI4LjE4NDRDMTIuOTA5MiAyOS4zMjQ5IDE0LjMwMjIgMzEuMzE1NiAxNi4zNjQ2IDI4Ljc0MzdDMTguNDI4MiAyNi4xNzMgMTcuNDA0MSAyNS40NDYgMTYuMjI0OCAyNC4yNjkxQzE1LjQwNDMgMjMuNDQ0NCAxNy4xMDM0IDIxLjM4NTMgMTguODc5NyAxOS42MDY2QzIwLjY1NiAxNy44Mjc4IDIyLjcxNzQgMTYuMTI4OCAyMy41Mzk3IDE2Ljk1MzVaIiBmaWxsPSJ3aGl0ZSIgLz4KICA8L3N2Zz4=",_t="data:image/svg+xml;base64,IDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgNDAgNDAiIGNsYXNzPSJkZXNpZ24taWNvbmZvbnQiPgogICAgICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIgogICAgICAgICAgICBkPSJNMCAyMEMwIDguOTU0MzEgOC45NTQzMSAwIDIwIDBDMzEuMDQ1NyAwIDQwIDguOTU0MzEgNDAgMjBDNDAgMzEuMDQ1NyAzMS4wNDU3IDQwIDIwIDQwQzguOTU0MzEgNDAgMCAzMS4wNDU3IDAgMjBaIgogICAgICAgICAgICBmaWxsPSIjMTlEMjU1IiAvPgogICAgICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIgogICAgICAgICAgICBkPSJNMjQuMDQyMSAxNC44MTI5QzIzLjg4MTQgMTQuMDc5MiAyMy4zNjg0IDEzLjUyMzEgMjIuNzI5MSAxMy4zOTAyQzIxLjY2NzQgMTMuMjEyNiAyMC4zNDk1IDEzIDE3LjY2NjcgMTNDMTQuNzMxOSAxMyAxMy41MDExIDEzLjIwMDkgMTIuNTI2MyAxMy4zNjY5QzExLjkyMzUgMTMuNTI5NSAxMS40NDg0IDE0LjA2ODggMTEuMjkyNiAxNC43Njc1QzExLjE1MyAxNS42NDE5IDExIDE3LjgyOTggMTEgMTkuNjY2N0MxMSAyMS40NzI0IDExLjE0ODEgMjMuNjQ2MSAxMS4yOTEyIDI0LjUyMDVDMTEuNDUxOSAyNS4yNTQyIDExLjk2NDkgMjUuODEwMyAxMi42MDQyIDI1Ljk0MzFDMTMuNjY2IDI2LjEyMDcgMTQuOTgzOSAyNi4zMzMzIDE3LjY2NjcgMjYuMzMzM0MyMC4zNDk1IDI2LjMzMzMgMjEuNjY3NCAyNi4xMjA3IDIyLjczMDUgMjUuOTUyMkMyMy4zNzI2IDI1LjgxOTQgMjMuODg5MSAyNS4yNiAyNC4wNTEyIDI0LjUyMzFDMjQuMTg1MyAyMy42NDYxIDI0LjMzMzMgMjEuNDcyNCAyNC4zMzMzIDE5LjY2NjdDMjQuMzMzMyAxNy44NjA5IDI0LjE4NTMgMTUuNjg3MiAyNC4wNDIxIDE0LjgxMjlaTTEyLjY2NjcgMTUuNUMxMi42NjY3IDE1LjAzOTggMTMuMDM5OCAxNC42NjY3IDEzLjUgMTQuNjY2N0gxNC4zMzMzQzE0Ljc5MzYgMTQuNjY2NyAxNS4xNjY3IDE1LjAzOTggMTUuMTY2NyAxNS41QzE1LjE2NjcgMTUuOTYwMiAxNC43OTM2IDE2LjMzMzMgMTQuMzMzMyAxNi4zMzMzSDEzLjVDMTMuMDM5OCAxNi4zMzMzIDEyLjY2NjcgMTUuOTYwMiAxMi42NjY3IDE1LjVaTTI4LjUgMTQuNjY2N0MyNy4wOTQyIDE0LjY2NjcgMjYgMTYuNTQ3IDI2IDE3LjY0MjlWMjEuNjkwNUMyNiAyMi45ODA0IDI2LjgwMDggMjQuNjY2NyAyOC41IDI0LjY2NjdDMjkuMjg1OCAyNC42NjY3IDI5LjMzMzMgMjEuNDUyNCAyOS4zMzMzIDE5LjY2NjdDMjkuMzMzMyAxNy44ODEgMjkuMzMzMyAxNC42NjY3IDI4LjUgMTQuNjY2N1oiCiAgICAgICAgICAgIGZpbGw9IiNmZmYiIC8+CiAgICA8L3N2Zz4=",DA=A.defineComponent({__name:"Accept",props:{isMobile:{type:Boolean,required:!0},callType:{type:Number,required:!0}},setup(o){const e=o,t=e.isMobile?Ht:e.callType===T.AUDIO?Jt:_t,n=async()=>{await h.accept()};return(l,i)=>(A.openBlock(),A.createBlock(_,{icon:A.unref(t),text:A.unref(B)("accept"),isMobile:o.isMobile,onClick:n},null,8,["icon","text","isMobile"]))}}),mA=A.defineComponent({__name:"Reject",props:{isMobile:{type:Boolean,required:!0}},setup(o){const t=o.isMobile?ne:oe,n=async()=>{await h.reject()};return(l,i)=>(A.openBlock(),A.createBlock(_,{icon:A.unref(t),text:A.unref(B)("reject"),isMobile:o.isMobile,onClick:n},null,8,["icon","text","isMobile"]))}}),$t="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADgAAAAkCAMAAADrTAnMAAAAn1BMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8Kd3m4AAAANHRSTlMA+LcMRx7t6ODcoIBxYUAInFv18cuOhn4yGBLRzb2ka1MnIw/61sWKeU06NyytpZWSVzYEGKQRgAAAAaZJREFUSMedVet6gjAMBVEElaGAeJvi/e6mW97/2Za0ED5gRe35w6H9Tgk5SWq8hd+WoYW1A3tLR3gAgJuOsAeIrobQj0i51FBO2igMJ4rdczRvqpQXE5V3xaaLe6PyYpbMBDdNhSlAaEwLPriwSJ2kYzs1QnDGRo4+LgwlfSDdtmqEYHpFA2Eg+QxpohYS+n62NKUA2xab2fgv42NgfHJI1wBfj4KukAV+MXPLjgMF2OzLiD6ZZ/1k5Gj1TaiAfbFsfPkR9I6sx7LNsCor+LLgMu1xiinwHajgyB/1kH4JNhBM4hSqZGz3B7J5iRnNLTwVjinLJXYN63TOWh7O9jGzXGCok5Pwt72Mdet03O8NNuGILKZSCdSyvABa5JYMupMe8Q0SwTz2Th+Icslxf+wkbSM9iydhP7BURU5Y5u1xoUhSV2DXrG+rFf3OTPIYQHT1kArIf6GRTVmpPkX4ENnaek9HRywC5ZyGG2robIURVafuZjFLUmZnu3a3Oh4j1XiUHtgWsb3xDjzgOli9quF57PqaN8DVeBux7p0zEkNIA9bNOWT8DweSes56/3r9AAAAAElFTkSuQmCC",Aa="data:image/svg+xml;base64,ICAgIDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgNDAgNDAiIGNsYXNzPSJkZXNpZ24taWNvbmZvbnQiPgogICAgICAgIDxyZWN0IHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgcng9IjIwIiBmaWxsPSIjREFEQURBIiBmaWxsLW9wYWNpdHk9Ii4zIiAvPgogICAgICAgIDxwYXRoIGQ9Ik0xNy43MzExIDE1Ljc0ODVDMTcuNzMxMSAxNS40MzM5IDE4LjEzMzMgMTUuMjg5IDE4LjM1OTYgMTUuNTA3TDIyLjk4MDggMTkuNjgzMUMyMy4xMzE0IDE5LjgyOCAyMy4xMzE0IDIwLjA0NTMgMjIuOTgwOCAyMC4xNjZMMTguMzM0MSAyNC4zNDM1QzE4LjEwODYgMjQuNTYwOCAxNy43MDYzIDI0LjM5MTcgMTcuNzA2MyAyNC4xMDJWMjIuMzM5NkMxNy43MDYzIDIyLjE0NjQgMTcuNTMwMyAyMi4wMDE2IDE3LjMyOTYgMjIuMDAxNkMxNC4yMTQ3IDIyLjA3NCAxMi40MzE5IDIyLjg3MDcgMTAuNjQ5IDI0LjUzNjZDMTAuMzcyNiAyNC43NzggOS44OTUzOCAyNC41MzY2IDEwLjAyMDUgMjQuMTk4NkMxMS4xMDA3IDIxLjE1NjUgMTIuOTM0NSAxOC40MDQyIDE3LjczMTEgMTcuODAwNlYxNS43NDg1WiIgZmlsbD0iI2ZmZiIgLz4KICAgICAgICA8cGF0aCBkPSJNMjQuNzYwMyAxNy4wNDExQzI2LjQxMDMgMTguNjkxMSAyNi40MzI4IDIxLjM0MzggMjQuODEwNiAyMi45NjYxQzI0LjU3ODggMjMuMTk3OCAyNC4xOTk5IDIzLjE5NDYgMjMuOTY0MiAyMi45NTg5QzIzLjcyODQgMjIuNzIzMiAyMy43MjUyIDIyLjM0NDIgMjMuOTU3IDIyLjExMjRDMjUuMTE1NyAyMC45NTM3IDI1LjA5OTYgMTkuMDU4OSAyMy45MjExIDE3Ljg4MDNDMjMuNjg1MyAxNy42NDQ2IDIzLjY4MjEgMTcuMjY1NiAyMy45MTM5IDE3LjAzMzlDMjQuMTQ1NiAxNi44MDIxIDI0LjUyNDYgMTYuODA1MyAyNC43NjAzIDE3LjA0MTFaIiBmaWxsPSIjZmZmIiAvPgogICAgICAgIDxwYXRoIGQ9Ik0yNi44NzY1IDE0LjkyNUMyOS43MDUxIDE3Ljc1MzYgMjkuNzQzNyAyMi4zMDExIDI2Ljk2MjcgMjUuMDgyMUMyNi43MzEgMjUuMzEzOCAyNi4zNTIgMjUuMzEwNiAyNi4xMTYzIDI1LjA3NDlDMjUuODgwNiAyNC44MzkyIDI1Ljg3NzMgMjQuNDYwMiAyNi4xMDkxIDI0LjIyODVDMjguNDI2NiAyMS45MTEgMjguMzk0NCAxOC4xMjE0IDI2LjAzNzMgMTUuNzY0MkMyNS44MDE2IDE1LjUyODUgMjUuNzk4MyAxNS4xNDk1IDI2LjAzMDEgMTQuOTE3OEMyNi4yNjE4IDE0LjY4NiAyNi42NDA4IDE0LjY4OTMgMjYuODc2NSAxNC45MjVaIiBmaWxsPSIjZmZmIiAvPgogICAgPC9zdmc+",ea={class:"call-operate"},ta=["src"],aa=A.defineComponent({__name:"SwitchAudioCall",props:{isMobile:{type:Boolean,required:!0}},setup(o){const e=o,t=e.isMobile?$t:Aa,n=e.isMobile?"btn-operate-mobile":"btn-operate-desktop",l=e.isMobile?28:40,i=async()=>{await h.switchCallMediaType()};return(c,d)=>(A.openBlock(),A.createBlock(_,{class:A.normalizeClass(A.unref(n)),style:{width:"40px"},size:A.unref(l),text:A.unref(B)("video-to-audio"),isMobile:o.isMobile,onClick:i},{default:A.withCtx(()=>[A.createElementVNode("div",ea,[A.createElementVNode("img",{class:"operate-img",src:A.unref(t)},null,8,ta)])]),_:1},8,["class","size","text","isMobile"]))}}),Yr="",bA=V(aa,[["__scopeId","data-v-76389d5e"]]),se="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGgAAABoCAMAAAAqwkWTAAAAqFBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8lQWY7VXb29/mlscAnQ2jn6u69xdFjd5ExS25GXn0wSm7p7PDh5erM09vBydSgrb2SoLN7jKJxhJwqRmpLY4Hu8POVo7WVorRccY0F8cuqAAAAHnRSTlMA7R4Ex+jZ0q5OSRXJ4Yz59biyo453bGVXPi8qC41r8AF3AAADgUlEQVRo3rzW147CMBAF0DHpld7Za5bQVyD+/+tWSHmgGGecmJznSFcej2dCfMl8mg/cIBPdrsgCd5BP5wnZtpyEAgoinCzJFiceetDwhrFDzS1yD5W8fEHNRCmY0ojqmwUwEMyontiHIT8mc50QNYQd004b91BLb+wYHcdFba7BoSKBBkTELdsIDY1Y5Vv10Vh/RZWSFBakSWUb+LDC71TkZLAk0yYlPqzxE00fpLAoXX3s6z6s6jukNoJlI1KKYF2kbDgB60RHcUEuvsB9v6YxvmL8VrgevqL3WrwQXxLSkxhM283+eDod95stmGJ65IPlfCtkqbidweLTgxlYdgf54LADy+NfWACOayGfFFdwBKYzYVfIF8XOcD6kYDgf5JvDGQwplRbguEmFGzgWZdAPGLaFVCi2YMjLKeeBYSOVNmDwHIPHupdKe4NHOwTHUSodwTGkOw8cJ6l0Aod3z1mCRX4AliURTdoImvAXhPyAvyxEG0GCKEEbQUho3k7QnKbtBE3pp52gnAbtBA3IbSfIrdzil/X6og8qv9ELKIPeWsq1Pqj8Ri8jwRimv/qh+ssYroK6jPXwp18Tf4x10f2v1upaG4ShKIzBupcy2Mvo0OaKdg+mhqjV///P5oE9lFU9N2uWufPSYiDH3MTcr0OJxmkWu+747PQ7MiJqOg9/ve7KMeSZ6ehhaPDa68EJFtuww0CPNzaglbVwS1psIzve/IPtYKC1ABKW6+gHy68gN81jZDkkFjP9c/QK4pdqj5W45SDfYWU9v1S5mxiwS3YpbbHYoYG7Cer4vmxjyvlErDQYFO74NK68wsRdOZdalh3GKoUrVwUnF8xm7O2ANRi5KIITZbjlMV/r5JtNXYvnPufYKQNI8UfAFFdUUpgj4EUZQCIkVlkPaE+FrUVqW5ywGpXdgHd9kF+Z4wxMpQzy9WlLLsPHzQ00SK7Ca1jVpHfdNU3n+qDqCVJLNerGjyAZfVPnaiC1BPZ5EECUB2FP0v9oRAdS0IhF9EhKNNGInknRKRbREymjRSN6CysMnudvhjMvDAaWOsEzxxRS6gR2v0W0I+XoWKZ7eUhVYE/WMkjVBEnV1knVqErWekvVTPz79mjchu82WtjxmvLbkRnEEU5sSwpyt7hli3KdOwRI25VU/UQktn3ZG3DINEK+7PB/pIkxxZZ6+Wh2LR/NguSjn/9F6h0IFyvQAAAAAElFTkSuQmCC",na="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGgAAABoCAMAAAAqwkWTAAAAkFBMVEUAAAD////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////HztfO1N3p7O/K0dnv8fT9/f7R197a3uT7/Pz3+Prk6OzM0tvz9ffV2+H5+vvd4ufg5OknoyjnAAAAHnRSTlMA7bCNHgTo0k5JLBXJx/nf2djGuKN3bGVXPgv14/RLhx5LAAAEBklEQVRo3rTWxxXEIBADUIIDXnDOSf2XuXdnYPgNzJPQAfadnkcpmrTkRcHLtBFynDWj9hsExwUuhh+jEmddggdJl8UUWWSCV4n0zaUMPjKKuZtSWEgn5iarYKnKmL1IwIGIbJfWr3Cy97FVnBzOcotQisMDV19rk/AkP9W3tPDWLuyVNiBg9OsMapCoo5c7G4hsj5d0DTK1ftiBASGz3O66Ban2buUSxCS7pEBOXQ6Ogxy/mF6cI4D8/Ew9guhPxa0IYj+WJxCIOPwP/pSW3Y6CMBCFa4yYVaPGGF1vDqVQ/sH3f7ulhNltYKUz31VDyJxMz/wUTLokt8bYPCnA5Ev5XJkyffxLz5S6Ko9vsEhN7FGn01etU6zgv8L24JDEMxIMlIO6xgp76UxI4zk6AzLrDsz5cGL5YxZCDYCcUvvMiXQO4NAvdBK6zh7rHCRTu1vo5AAal6bNeFN8F8krYQpf6OFgSgSIdoJmzWc6pqSPKbdp7+Bg/zGococ3wtyVIwIHr+YofOMOLRhE/JrDnwaFL2o3HjoQobp7SIUofEsGMXjQghAKpWRQJVgWG7lQRQOpBZONUkfwmBnUjQYV4HJUL7GQLsigBmxe6ikSovBvrkHEU22lQgkZlEPAlv0q8UdpaegG0bDL7iYTsrTrzChRaPC4Bbc4vQi8UdrTDbqa8P5Z3+cXrKOnRe3vOjLINa33zxoXtWEM0wxATaO0pF031oQBkLlUgx17DmcUd9OaaEEGlZia1jrpOJzR+adas+1pEAbieIZumhkTX2jUGEcpBQrj4ft/OwPhvDRmuX+hduxekSzhP9pr73cPolDLENJ0DCP0Uzk7eysJiUtX8s7kLowMvGnyodoJzsBvqXTNMMIQQfEik5xBdG87bokZX3xyYMRq+jYzPljJveUDq+j/MoyQT6S6mz+tEA+sfAXVM/u6MFKmpGka5H5N5Eu10tOLGEZ4gzJS15V4qQJhYpj2gmGEJHU+PWooYLwDgc+otDAOjFSKEjE40n4ioTzX1oWR8je17AoQhZ4gOLGXYOTcgJF2B+HWpSUytUYjbQID5F8YMVmTjtZDAAkhsQsjZ2uMzbOWIRywIwL5DCMkyaYwJD6AaQvDiJuP6cGcIHuFEjGCEZIkK2q8egKkli6M2KwvJpE+88DUwx5KlhlGGLxOXnaHpf+KYt1ioSNW0FAU65YKPXOJRkbINUKPHkWnNUIPQhktmNCHX2EwVymZ383w4lnqZB1XCTusbMl/CSVCOTrU0n3fxyqwR2sZxGqCxGrrxGpURWu9xWomXr89Grbhu40Wdrim/HbGDMIMTmxrFGT1cEuUcZ2vt/02B5CWjlRte0jMd+ztNgb50NHE2xq2DDM++gMth+mh+w6ysAAAAABJRU5ErkJggg==",ie="data:image/svg+xml;base64,ICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbD0ibm9uZSIgdmlld0JveD0iMCAwIDQwIDQwIiBjbGFzcz0iZGVzaWduLWljb25mb250Ij4KICAgICAgICA8cmVjdCB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHJ4PSIyMCIgZmlsbD0iI0RBREFEQSIgZmlsbC1vcGFjaXR5PSIuMyIgLz4KICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIKICAgICAgICAgICAgZD0iTTE2LjY2NjUgMTQuMTY2N0MxNi42NjY1IDEyLjMyODQgMTguMTYxNSAxMC44MzM0IDE5Ljk5OTggMTAuODMzNEMyMS44MzgyIDEwLjgzMzQgMjMuMzMzMiAxMi4zMjg0IDIzLjMzMzIgMTQuMTY2N1YxOS4xNjY3QzIzLjMzMzIgMjEuMDA1IDIxLjgzODIgMjIuNSAxOS45OTk4IDIyLjVDMTguMTYxNSAyMi41IDE2LjY2NjUgMjEuMDA1IDE2LjY2NjUgMTkuMTY2N1YxNC4xNjY3Wk0xNi42NjY1IDI4LjMzMzRDMTYuNjY2NSAyNy44NzI1IDE3LjAzOTggMjcuNSAxNy40OTk4IDI3LjVIMjIuNDk5OEMyMi45NjA3IDI3LjUgMjMuMzMzMiAyNy44NzI1IDIzLjMzMzIgMjguMzMzNEMyMy4zMzMyIDI4Ljc5NDIgMjIuOTYwNyAyOS4xNjY3IDIyLjQ5OTggMjkuMTY2N0gxNy40OTk4QzE3LjAzOTggMjkuMTY2NyAxNi42NjY1IDI4Ljc5NDIgMTYuNjY2NSAyOC4zMzM0WiIKICAgICAgICAgICAgZmlsbD0iI2ZmZiIgLz4KICAgICAgICA8cGF0aAogICAgICAgICAgICBkPSJNMjUuODMzMiAxOC4zNTEyVjE5LjUwODNDMjUuODMzMiAyMi4wODExIDIzLjIyMTUgMjUgMTkuOTk5OCAyNUMxNi43NzgyIDI1IDE0LjE2NjUgMjIuMDgxMSAxNC4xNjY1IDE5LjUwODNWMTguMzMzNCIKICAgICAgICAgICAgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjEuNjY2NjciIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgLz4KICAgIDwvc3ZnPg==",oa="data:image/svg+xml;base64,ICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbD0ibm9uZSIgdmlld0JveD0iMCAwIDQwIDQwIiBjbGFzcz0iZGVzaWduLWljb25mb250Ij4KICAgIDxyZWN0IG9wYWNpdHk9Ii4zIiB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHJ4PSIyMCIgZmlsbD0iI2ZmZiIgLz4KICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIgogICAgICBkPSJNMjAgMTEuNUMxOC4wNjk3IDExLjUgMTYuNSAxMi45Njc4IDE2LjUgMTQuNzcyN1YxOS42ODE4QzE2LjUgMjAuMjYyMyAxNi42NjIzIDIwLjgwNzggMTYuOTQ2OCAyMS4yODFMMjMuNDk5NyAxNC43MjgxQzIzLjQ3NDEgMTIuOTQzNyAyMS45MTQzIDExLjUgMjAgMTEuNVpNMjMuNSAxOC45NzA0TDE5LjU0MzYgMjIuOTI2OUMxOS42OTMgMjIuOTQ1MSAxOS44NDUzIDIyLjk1NDUgMjAgMjIuOTU0NUMyMS45MzAzIDIyLjk1NDUgMjMuNSAyMS40ODY3IDIzLjUgMTkuNjgxOFYxOC45NzA0Wk0xNS43MzIxIDIyLjQ5NTdDMTUuMTIwNyAyMS43NDUyIDE0Ljc1IDIwLjg3MjcgMTQuNzUgMjAuMDE3MVYxOC44NjM2TDE0Ljc0MzIgMTguNzYxQzE0LjY4OTIgMTguMzU3NSAxNC4zMjExIDE4LjA0NTQgMTMuODc1IDE4LjA0NTRDMTMuMzkxOCAxOC4wNDU0IDEzIDE4LjQxMTcgMTMgMTguODYzNlYyMC4wMTcxTDEzLjAwNDcgMjAuMjIxNUMxMy4wNjExIDIxLjQ2NDcgMTMuNjI4NCAyMi42ODgzIDE0LjUyNDUgMjMuNzAzM0wxNS43MzIxIDIyLjQ5NTdaTTE2Ljk0ODIgMjUuNTIyMkwxOC4yMDk0IDI0LjI2MUMxOC43Nzc3IDI0LjQ3MTUgMTkuMzgzNCAyNC41OTA5IDIwIDI0LjU5MDlDMjIuNjU4OSAyNC41OTA5IDI1LjExMzggMjIuMzcxNiAyNS4yNDQ1IDIwLjE5ODFMMjUuMjUgMjAuMDE3MVYxOC44ODExQzI1LjI1IDE4LjQyOTMgMjUuNjQxOCAxOC4wNjI5IDI2LjEyNSAxOC4wNjI5QzI2LjU3MTEgMTguMDYyOSAyNi45MzkyIDE4LjM3NTEgMjYuOTkzMiAxOC43Nzg1TDI3IDE4Ljg4MTFWMjAuMDE3MUMyNyAyMy4xNTE4IDIzLjY5NzYgMjYuMjI3MiAyMCAyNi4yMjcyQzE4LjkyNTYgMjYuMjI3MiAxNy44ODQ1IDI1Ljk2NzYgMTYuOTQ4MiAyNS41MjIyWk0xNi41IDI4LjY4MThDMTYuNSAyOC4yMjk0IDE2Ljg5MiAyNy44NjM2IDE3LjM3NSAyNy44NjM2SDIyLjYyNUMyMy4xMDg5IDI3Ljg2MzYgMjMuNSAyOC4yMjk0IDIzLjUgMjguNjgxOEMyMy41IDI5LjEzNDMgMjMuMTA4OSAyOS41IDIyLjYyNSAyOS41SDE3LjM3NUMxNi44OTIgMjkuNSAxNi41IDI5LjEzNDMgMTYuNSAyOC42ODE4WiIKICAgICAgZmlsbD0iI2ZmZiIgLz4KICAgIDxyZWN0IHg9IjI3LjI0OSIgeT0iMTEuNzY4OCIgd2lkdGg9IjEuNSIgaGVpZ2h0PSIyMiIgcng9Ii43NSIgdHJhbnNmb3JtPSJyb3RhdGUoNDUgMjcuMjQ5IDExLjc2ODgpIgogICAgICBmaWxsPSIjRkUzQzQ0IiAvPgogIDwvc3ZnPg==",ce="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAABySURBVHgB7c7RCYAwDIThw8kcwVHcoDM4ipM4giu4QcyLCIK02rQp5T641+QHiIiICCIy6ia0QEOC3AI8PWJ8o15ifKIiMXWjEmPqRH2MKRv1M6ZMVGaMbZRRzGVGLj2yi50t9m9IaFpg49CtICIi6twJIS39bzNKa9EAAAAASUVORK5CYII=",la=o=>(A.pushScopeId("data-v-f800d151"),o=o(),A.popScopeId(),o),ra={class:"body"},sa=la(()=>A.createElementVNode("div",{class:"triangle"},null,-1)),ia=180,ca=A.defineComponent({__name:"Popover",props:{showPopover:{type:Boolean},targetBoundingClientRect:{},width:{}},setup(o){const e=o,t=A.ref(!1),n=A.ref();return A.watch(()=>e.showPopover,()=>{t.value=e.showPopover}),A.watch(()=>e.targetBoundingClientRect,()=>{const{width:l,height:i}=e.targetBoundingClientRect;n.value={left:`${l/2-ia/2}px`,bottom:`${i+10}px`}}),(l,i)=>A.unref(t)?(A.openBlock(),A.createElementBlock("div",{key:0,class:"popover-container",style:A.normalizeStyle(A.unref(n))},[A.createElementVNode("div",ra,[A.renderSlot(l.$slots,"default",{},void 0,!0)]),sa],4)):A.createCommentVNode("",!0)}}),Kr="",da=V(ca,[["__scopeId","data-v-f800d151"]]),Ia={class:"scroll-container"},Ma={class:"scroll-content"},ga=["onClick"],Na=A.defineComponent({__name:"DeviceSelectPopover",props:{isMobile:{type:Boolean},deviceType:{},targetBoundingClientRect:{},showDeviceSelect:{type:Boolean}},setup(o){const e=o,t=A.ref(""),n=A.ref(r.getData(s.CALL,a.LOCAL_USER_INFO)),l=A.ref(r.getData(s.CALL,a.DEVICE_LIST)),i=A.ref("");A.watch(()=>{var g,C;return e.deviceType===H.MICROPHONE?(g=n.value)==null?void 0:g.isAudioAvailable:(C=n.value)==null?void 0:C.isVideoAvailable},()=>{var p,N;const C=(e.deviceType===H.MICROPHONE?(p=n.value)==null?void 0:p.isAudioAvailable:(N=n.value)==null?void 0:N.isVideoAvailable)?"close":"open";t.value=`${C} ${e.deviceType}`},{deep:!0,immediate:!0});const c=async()=>{var g,C;e.deviceType===H.CAMERA&&((g=n.value)!=null&&g.isVideoAvailable?await h.closeCamera():await h.openCamera("localVideo")),e.deviceType===H.MICROPHONE&&((C=n.value)!=null&&C.isAudioAvailable?await h.closeMicrophone():await h.openMicrophone())},d=async g=>{try{await h.switchDevice({deviceType:e.deviceType===H.CAMERA?"video":"audio",deviceId:g}),i.value=g}catch(C){console.error(C)}},I=g=>{n.value=g},M=g=>{var C,p;e.deviceType===H.CAMERA?(l.value=(g==null?void 0:g.cameraList)||[],i.value=((C=g==null?void 0:g.currentCamera)==null?void 0:C.deviceId)||""):e.deviceType===H.MICROPHONE&&(i.value=((p=g==null?void 0:g.currentMicrophone)==null?void 0:p.deviceId)||"",l.value=(g==null?void 0:g.microphoneList)||[])};return A.onMounted(()=>{r.watch(s.CALL,{[a.LOCAL_USER_INFO]:I,[a.DEVICE_LIST]:M},{notifyRangeWhenWatch:a.MYSELF})}),A.onUnmounted(()=>{r.unwatch(s.CALL,{[a.LOCAL_USER_INFO]:I,[a.DEVICE_LIST]:M})}),(g,C)=>g.isMobile?A.createCommentVNode("",!0):(A.openBlock(),A.createBlock(da,{key:0,class:"device-select-container",showPopover:g.showDeviceSelect,targetBoundingClientRect:g.targetBoundingClientRect},{default:A.withCtx(()=>[A.createElementVNode("div",Ia,[A.createElementVNode("div",Ma,[(A.openBlock(!0),A.createElementBlock(A.Fragment,null,A.renderList(A.unref(l),p=>(A.openBlock(),A.createElementBlock("div",{class:A.normalizeClass(["device-select-label",p.deviceId===A.unref(i)?"select":""]),key:p.deviceId,onClick:()=>d(p.deviceId)},[A.createElementVNode("span",null,A.toDisplayString(p.label),1)],10,ga))),128))])]),A.createElementVNode("div",{class:"device-select-label btn",onClick:c},[A.createElementVNode("span",null,A.toDisplayString(A.unref(B)(A.unref(t))),1)])]),_:1},8,["showPopover","targetBoundingClientRect"]))}}),Zr="",de=V(Na,[["__scopeId","data-v-66448e1e"]]);function Ca(...o){let e=window==null?void 0:window.document,t="",n=()=>{},l={};if(typeof o[0]=="string"?[t,n,l]=o:[e,t,n,l]=o,!!e)return e==null||e.addEventListener(t,n,l),()=>{e==null||e.removeEventListener(t,n,l)}}function Ie(o,e){let t=()=>{};A.onMounted(()=>{t=Ca("click",l=>{const i=o.map(I=>A.unref(I)),c=l.composedPath(),d=[];for(let I=0;I!I)&&e()},{passive:!0})}),A.onUnmounted(()=>{t==null||t()})}const ua={class:"camera-container"},pa=["src"],La=A.defineComponent({__name:"Microphone",props:{isMobile:{type:Boolean,required:!0}},setup(o){const e=o,t=A.ref(),n=A.ref(r.getData(s.CALL,a.LOCAL_USER_INFO)),l=A.ref(),i=A.ref(),c=A.ref("");c.value=e.isMobile?se:ie;const d=async()=>{var N;(N=n.value)!=null&&N.isAudioAvailable?e.isMobile?c.value=se:c.value=ie:e.isMobile?c.value=na:c.value=oa},I=A.ref(),M=A.ref(!1),g=async()=>{M.value=!M.value};A.watch(()=>{var N;return(N=n.value)==null?void 0:N.isAudioAvailable},()=>{d()},{deep:!0,immediate:!0});const C=async()=>{var N;(N=n.value)!=null&&N.isAudioAvailable?await h.closeMicrophone():await h.openMicrophone()};Ie([l,i],()=>{M.value=!1});const p=N=>{n.value=N};return A.onMounted(()=>{var N,u,D;I.value=((D=(u=(N=t.value)==null?void 0:N.$el)==null?void 0:u.getBoundingClientRect)==null?void 0:D.call(u))||{},r.watch(s.CALL,{[a.LOCAL_USER_INFO]:p},{notifyRangeWhenWatch:a.MYSELF})}),A.onUnmounted(()=>{r.unwatch(s.CALL,{[a.LOCAL_USER_INFO]:p})}),(N,u)=>(A.openBlock(),A.createElementBlock("div",ua,[A.createVNode(_,{ref_key:"btnRef",ref:t,icon:A.unref(c),text:A.unref(B)("microphone"),isMobile:o.isMobile,onClick:C},null,8,["icon","text","isMobile"]),o.isMobile?A.createCommentVNode("",!0):(A.openBlock(),A.createElementBlock("div",{key:0,ref_key:"arrowRef",ref:i,class:"arrow-btn",onClick:g},[A.createElementVNode("img",{class:"arrow-img",src:A.unref(ce)},null,8,pa)],512)),o.isMobile?A.createCommentVNode("",!0):(A.openBlock(),A.createBlock(de,{key:1,ref_key:"deviceSelectRef",ref:l,isMobile:o.isMobile,deviceType:A.unref(H).MICROPHONE,showDeviceSelect:A.unref(M),targetBoundingClientRect:A.unref(I)},null,8,["isMobile","deviceType","showDeviceSelect","targetBoundingClientRect"]))]))}}),vr="",tA=V(La,[["__scopeId","data-v-23fb3fba"]]),Me="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGgAAABoCAMAAAAqwkWTAAAA2FBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8lQWb3+Pnc4Oawusg8VXdJYYAtSGwpRGnT2eGRn7Lh5erBydRtgJlDXHw1T3IvSm7z9fft8PLl6O3X3OO2v8yptMOjr7+ap7iGlapne5VbcIxVa4h4iaB3iJ/L0tvK0drGzte5ws6bqLmWpLYxS27fH+7xAAAAInRSTlMABO3H0q5OyY4e4fsfjPXo59nYuLKjd2xlV0pIPi8qFxQLhSvRRQAAAuZJREFUaN601eeS2jAUBeCLbGMwvXdYjii7wLI92ZZk0t//jSIxTFiPkbGQ/P2S9YMzHK4vlNxk2C01HTdghQILXKdZ6g4nZNu44zEcwbzOmGzJDFoVxKi0BhkyNypVcVK1NCIzWR8J+VmDznouNLi9Mxvs16Cp1id9eQ9n8PK6rbXLOEu5rdVf0cHZnKLGrDEYYNmkteVgKJeovmkDxhpTOunChwX+xcmprsOKev5ETgBLgtikizqsqce0N/VhkT9VznUDVjVUU56DZTnFPoB1WTqiyGAdK1JExkEKnOjP1EYq2pE3tYxUlPMU5iElHoX0kZp+aBJqSE0tQwc9pKhHBy5S5GrvBPP94CNVPu2NoGWxXG6hZXTO1p5945xfQktpP9tVJDe/5BJC1pufiFPNkDRAcosrHg2arzhfIM6ApBYAjdqiQc/i4mqNGC2SKnq1RYOe7sXN8hFqFRLGurVJCPnMha8FqI2JqKNbm4SwDRdeoNYhIk+jNlUQ3mV5s/g/C5a4tmjQp5c5dh7/istXKDGiCY7bLnmMfc6Kr34cyrt7gNKEhjhuyU8HvcpPf4L0cCfOz1AaUhfH8QRB65WcNuz8Ecd3KHUpZxCE31z4BWku39pZzLprmgTh5rBhb8VxC5UmOUZB17K8NaQ3cXqDikOuQdD+K23+r4cbqLgUmAUtxMMXSN93J5WAmFnQtXi4/XBSYVQwC5qJh/sPJ5XCv2rtHQdAEIiiqIkNjUuwsdFluP9VaaxMbBwgx5HKjoQg8z6XbcSOjl0Gdr3ZD8ueIPaosjHBBh8b5UqcMLkVEJB7k4BkkliJ/Kht2WttCzNi1loO0/kdO751Ca2p0v5vYfuPAo2RRTQqdGIxGgsGVdSpwlsWR6uAnVUGqgRRtY4qqlj1psrE7+vR8+qRwvfaqVuFnaWU74UZZAInOqAg+eCWNlwnJ4BUi1TlhsQc9natubwB+cr8HzRRwJZPfLTc8dESwkcPSwpvc/EgQfkAAAAASUVORK5CYII=",ge="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGgAAABoCAMAAAAqwkWTAAAAdVBMVEUAAAD////////////////////////////////////////////////////////////////////////////////////////////////////////Hztf9/f7V2uH29/nt7/LR197O1NzL0trK0dnd4efz9ffY3eNuFy3tAAAAGnRSTlMAyO2wjR4E59nSTkks3/n1uKN3bGVXPhcUC/2+zKoAAAJVSURBVGjetNXXcsIwEIXhVUFumF6PCJD6/o+YxDMZTRKjspa+K674R+u1TPGOh51WounlYiH7Rii9Oxwpt/lWSYyQajunXEy3ruBRrTuT4yy6QlClp56rFYgkWuLbN0jQ7Imnq5Go7ijdTIFBzSiN2SzBstyYpOMIsImEQ7USE8g2dmwaE+mo8Z1XmGx1pqCTQAbiFFyDGlnUs0CnRya9t3SqkU3tmd5ZICPxcCPMClmtDI3TyEzTqBbZtaMLJ5GdHFk9I1CAMPTXBkVs/g1uiSKWf4enUIiiXzoU0/0K1SimJnL2KGhPToOCGvadwL8fBIoSP505ktyen29IMufc2pc3a+0dSTQNTIV417v9hiSVSX5Zb682NeRe2jWc8NhYofUQquCExsYMVW7n4sbGCLm928IJjI0f2roPRHhsvJD7WEhEj40fkkTHh++/9UCqIx0wznV8oevFPcQrPA60wzgbE3p/ebr8dJ5efKUdaW5o6Fj7XRo61vpKmtSE0Ie1Q2nofPnwrZ1gh4a/H0rux0OCGnbIlcIdNNSzQ670GuygJ8kOuVK4A0kLXsiV7jEdLD6rtYMbgEEYCIKfVJEX9N8kNWCs4UgDkSKCfbfLXsQ+HTsM7HizH5ZdQexSZWOCDT42ytVywtYttkCylVgt+Sy2sCDGomU1LM9/6/mK8X8U4r8pNFhFo0onVqOpYpBVnaq8ZXW0KtgZMlAQRGEdBaoYelMw8T4e7QW+GQi7D8rnaAY94kSWCnIstyTqOgcCUq5SVZHE8rW3HZHvHTWxS7Zk+ugC7XReZgJ+kWsAAAAASUVORK5CYII=",EA=A.defineComponent({__name:"Speaker",setup(o){const e=A.ref(r.getData(s.CALL,a.IS_EAR_PHONE)?ge:Me),t=l=>{e.value=l?ge:Me};A.onMounted(()=>{r.watch(s.CALL,{[a.IS_EAR_PHONE]:t})}),A.onUnmounted(()=>{r.unwatch(s.CALL,{[a.IS_EAR_PHONE]:t})});const n=()=>{h.setSoundMode()};return(l,i)=>(A.openBlock(),A.createBlock(_,{icon:A.unref(e),text:A.unref(B)("speaker"),isMobile:!0,onClick:n},null,8,["icon","text"]))}}),Ne="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGgAAABoCAMAAAAqwkWTAAAAkFBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////8lQWaDk6g8VXb19/hxg5v6+/zo6+/f4+nb3+bBydSqtcNofJVJYYA2UHIwSm4nQ2ju8PO3wMxec47Fc9FRAAAAHHRSTlMAS+0eBOfZ0snGrowV3/n1uLKjjndsZVc+LyoLFK3R0wAAAtFJREFUaN6014luqzAQheGxw75k33uA0DZL0zR9/7e7cqVWKOSaMdjfA/DDeCQL4su263QWh7kcj2UexrN0vc3Itv0qkXhCJqs92eKJuQ8Nfy48Gm6X+ujkpzsaRkRgigT1twlhINxQPyKAoUCQuVGCHpIRmfGWE/QyWXpGnxOjt3hEbEJiACm4Y1tgoAVrfC9TDDZ9oU5ZBAuirHMNAlgRjDo6OSzJtaUsgDVBptmDCBZF/90Ibwqrph49t4BlC3pKwDrxdOEkrJMjavFiOBC3j2kJJ5atwU3gxORxeAkcSbQb527zAjgTUMMGDm0aoRAOhZoTcnVKEZyKfjs78NyLB3fw/P4BpGD5uj6Grl9gSemH54OlLlpqsPgeKYI9uLa7yTrMTQdnPrw5KT5/cH2H56vOHjpvdVUwVPUbdPZEtNJ2rgXTVVtadV0QdcFWd10WEhoVP1RBQxJl0Gk/rjy9Hw7vp7L9CtDJaGsSqs74c65MQltaG4QuBzQcLgahNaX8UIkHJT+U0owdukA5lh+fnx/lEcqFHZpRzA1Vam6v5a34cStf1fQqbiimkBs6q8538edblc7cUEg5M1QBQNk6sooZykkyQyWA460Zuh1VmhmSNGaGTo2nNtonZmj8r1ozxmEQhqGoYUE0MIBURCt3Y0Hc/36VB4ZMhJK8mlzAUuTE3/+/5EKLqq5xoVVVl9RCyVdnPbfFhTbru+Sr65lCvTTM1TXSMs3QysC09yCBebBBJuYLmmRmPtVZOmZMdCI1Mfhqk1vEKH+YgCTEydMkMSG33kci/3PiHIl8GcsXGsVOVV4SV/tqWUrkx6ulhNJrS9jX/9KL2IsyNDCLhjKdMBuNMgYxq5MybzE7mjLYsciACkGoWIcKqrDojQoT/x+P5g18fUTY+UJ5P5hBHnDCFwpyGW7xiOtcAJD8IlW/QGL+sbczIN990MRcsCWGj34B+Zek3m5aKggAAAAASUVORK5CYII=",fa="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGgAAABoCAMAAAAqwkWTAAAAeFBMVEUAAAD////////////////////+/v/////////////////////////////////////////////////////////////////////////////////////////Hztfs7/LM09v19vjg5On4+fvw8vTc4Ob29/nY3ePR197iGM+VAAAAHHRSTlMAyLCNHgT77OfSTkkV3/Xu2di4o3dsZVc+LyoL33XkRAAAAxRJREFUaN7VmumSqjAQRhNQFgX3fT7MsPr+b3ida5VTQ67pjgQuc/5a5TGh7YTuFnyS08H3ZJyGQRCmsfT8wykRrrnsvRDQCb39xZlkOt9GMBBt51MHmrMfgSTyzx01MwkmctZBc4xhQXx8UzNfwZLVXNgz8fAG3sQ20nYLvMViN7VajsTbSItFzZbowHLG3TYfHfFZ2/exQWc2H7QnkXCATMgwWMMJ6wnhSeGI1GhK1nDGOjHEgYRD5MfLuN7AKZtXUe7DMf6LfADnzP4ZcEs4ZznRPVOJHpD6Y9qhF3baxi3QC4v25nnoCa91P0Bv/LxHrNAbqx/3KvTIUXwTo0diMie4zw8SvSKf93jwuGYtruBxtsvagWqLVIAHxTVgZPFpBBZVplE9l6pMpuiR8ebsjdO5Pj+50n/aLXfjdNTn8xcUMLD9K4rAoTJ4yLiIvjwXmCgqbSW0R+dyF+2NHpW58GBPHRAV2/NZUYdFCAOK7VEKBkIhEpjQvz8va6Ao87Yny2AiEScbkfp+GG0PITqJg4WoCQwes+ggfL4oh8FDiHzhsUUNvqjzm9KeDy3yiLNIS9V5lukehkgSp3g7fzYvPKQoFilTpIj1EKJUhExRDqDWPHc1TxSKgCkqAeSaByVTFLBFNYCb5kHBFbG3Dnfazwd32FuXWojacWAhStnhXej54PaID2Z4S24w6HkntwgGyU5BuZ7faovw9rhJVf+fPtSKKfKJY8LgaR5LZIoOxMFHrCdQXNGJc5Trnlte45FjuaKEuJyY71V5xhWF1HXL5AmajC3yqAukwXNVGV+0p67E+vPJywKoy7ylIUQX6pJvOOdsRBH52kJ4uKIt+SJm4VF4zZx8teR7sop8tRS+C48q6JLnubtHVQYPznRBo3x6OiAZJZrGgQczRtGpcuCJOWW0oGpKdOQ4VGFwsFLnUMXbwcrRQxXYB2sZDNUEGbCtM3yjavjWm/tm4v9vj7pt+I6jhe2uKT+eMQM3gxPjGgXpPNwyxnGdDgNI4x2pemdIbPxjbzaDfL9nNNHVsOVg46N/AFdMocBqUNAVAAAAAElFTkSuQmCC",Ce="data:image/svg+xml;base64,IDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgNDAgNDAiIGNsYXNzPSJkZXNpZ24taWNvbmZvbnQiPgogICAgPHJlY3Qgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiByeD0iMjAiIGZpbGw9IiNEQURBREEiIGZpbGwtb3BhY2l0eT0iLjMiIC8+CiAgICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIKICAgICAgZD0iTTI0LjAxNjQgMTQuNTM5NUMyMy44NDk4IDEzLjcxNDEgMjMuMzE4MiAxMy4wODg0IDIyLjY1NTYgMTIuOTM5QzIxLjU1NTMgMTIuNzM5MiAyMC4xODk1IDEyLjUgMTcuNDA5MSAxMi41QzE0LjM2NzYgMTIuNSAxMy4wOTIgMTIuNzI2IDEyLjA4MTggMTIuOTEyN0MxMS40NTcxIDEzLjA5NTcgMTAuOTY0NyAxMy43MDI0IDEwLjgwMzMgMTQuNDg4NEMxMC42NTg1IDE1LjQ3MjEgMTAuNSAxNy45MzM1IDEwLjUgMjBDMTAuNSAyMi4wMzE1IDEwLjY1MzUgMjQuNDc2OSAxMC44MDE4IDI1LjQ2MDVDMTAuOTY4NCAyNi4yODU5IDExLjUgMjYuOTExNiAxMi4xNjI1IDI3LjA2MUMxMy4yNjI5IDI3LjI2MDggMTQuNjI4NyAyNy41IDE3LjQwOTEgMjcuNUMyMC4xODk1IDI3LjUgMjEuNTU1MyAyNy4yNjA4IDIyLjY1NzEgMjcuMDcxMkMyMy4zMjI1IDI2LjkyMTggMjMuODU3OCAyNi4yOTI1IDI0LjAyNTggMjUuNDYzNEMyNC4xNjQ3IDI0LjQ3NjkgMjQuMzE4MiAyMi4wMzE1IDI0LjMxODIgMjBDMjQuMzE4MiAxNy45Njg1IDI0LjE2NDcgMTUuNTIzMSAyNC4wMTY0IDE0LjUzOTVaTTEyLjIyNzMgMTUuMjA4M0MxMi4yMjczIDE0Ljc0ODEgMTIuNjAwNCAxNC4zNzUgMTMuMDYwNiAxNC4zNzVIMTMuOTg0OEMxNC40NDUxIDE0LjM3NSAxNC44MTgyIDE0Ljc0ODEgMTQuODE4MiAxNS4yMDgzVjE1LjQxNjdDMTQuODE4MiAxNS44NzY5IDE0LjQ0NTEgMTYuMjUgMTMuOTg0OCAxNi4yNUgxMy4wNjA2QzEyLjYwMDQgMTYuMjUgMTIuMjI3MyAxNS44NzY5IDEyLjIyNzMgMTUuNDE2N1YxNS4yMDgzWk0yOC42MzY0IDE0LjM3NUMyNy4xNzk0IDE0LjM3NSAyNi4wNDU1IDE2LjQ5MDQgMjYuMDQ1NSAxNy43MjMyVjIyLjI3NjhDMjYuMDQ1NSAyMy43Mjc5IDI2Ljg3NTQgMjUuNjI1IDI4LjYzNjQgMjUuNjI1QzI5LjQ1MDggMjUuNjI1IDI5LjUgMjIuMDA4OSAyOS41IDIwQzI5LjUgMTcuOTkxMSAyOS41IDE0LjM3NSAyOC42MzY0IDE0LjM3NVoiCiAgICAgIGZpbGw9IiNmZmYiIC8+CiAgPC9zdmc+",Da="data:image/svg+xml;base64,ICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbD0ibm9uZSIgdmlld0JveD0iMCAwIDQwIDQwIiBjbGFzcz0iZGVzaWduLWljb25mb250Ij4KICAgIDxyZWN0IHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgcng9IjIwIiBmaWxsPSIjREFEQURBIiBmaWxsLW9wYWNpdHk9Ii4zIiAvPgogICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yMi43MjIxIDEyLjk1NTdDMjIuNzAwMSAxMi45NDk2IDIyLjY3NzkgMTIuOTQ0IDIyLjY1NTYgMTIuOTM5QzIxLjU1NTMgMTIuNzM5MiAyMC4xODk1IDEyLjUgMTcuNDA5MSAxMi41QzE0LjM2NzYgMTIuNSAxMy4wOTIgMTIuNzI2IDEyLjA4MTggMTIuOTEyN0MxMS40NTcxIDEzLjA5NTcgMTAuOTY0NyAxMy43MDI0IDEwLjgwMzMgMTQuNDg4NEMxMC42NTg1IDE1LjQ3MjEgMTAuNSAxNy45MzM1IDEwLjUgMjBDMTAuNSAyMS43MzQzIDEwLjYxMTggMjMuNzcwMyAxMC43MzY5IDI0Ljk0MDlMMjIuNzIyMSAxMi45NTU3Wk0xMi43NTUgMjcuMTY1NEMxMy43NzA0IDI3LjMzNTUgMTUuMTAzMyAyNy41IDE3LjQwOTEgMjcuNUMyMC4xNjU4IDI3LjUgMjEuNTMxOSAyNy4yNjQ5IDIyLjYyODkgMjcuMDc2MUwyMi42NTcxIDI3LjA3MTJDMjMuMzIyNSAyNi45MjE4IDIzLjg1NzggMjYuMjkyNSAyNC4wMjU4IDI1LjQ2MzRDMjQuMTY0NyAyNC40NzY5IDI0LjMxODIgMjIuMDMxNSAyNC4zMTgyIDIwQzI0LjMxODIgMTguNTc5NyAyNC4yNDMyIDE2Ljk1NyAyNC4xNDczIDE1Ljc3M0wxMi43NTUgMjcuMTY1NFpNMTMuMDYwNiAxNC4zNzVDMTIuNjAwNCAxNC4zNzUgMTIuMjI3MyAxNC43NDgxIDEyLjIyNzMgMTUuMjA4M1YxNS40MTY3QzEyLjIyNzMgMTUuODc2OSAxMi42MDA0IDE2LjI1IDEzLjA2MDYgMTYuMjVIMTMuOTg0OEMxNC40NDUxIDE2LjI1IDE0LjgxODIgMTUuODc2OSAxNC44MTgyIDE1LjQxNjdWMTUuMjA4M0MxNC44MTgyIDE0Ljc0ODEgMTQuNDQ1MSAxNC4zNzUgMTMuOTg0OCAxNC4zNzVIMTMuMDYwNlpNMjYuMDQ1NSAxNy43MjMyQzI2LjA0NTUgMTYuNDkwNCAyNy4xNzk0IDE0LjM3NSAyOC42MzY0IDE0LjM3NUMyOS41IDE0LjM3NSAyOS41IDE3Ljk5MTEgMjkuNSAyMEMyOS41IDIyLjAwODkgMjkuNDUwOCAyNS42MjUgMjguNjM2NCAyNS42MjVDMjYuODc1NCAyNS42MjUgMjYuMDQ1NSAyMy43Mjc5IDI2LjA0NTUgMjIuMjc2OFYxNy43MjMyWiIgZmlsbD0iI2ZmZiIgLz4KICAgIDxyZWN0IHg9IjI0Ljg1NzQiIHk9IjExLjg1NjQiIHdpZHRoPSIxLjUiIGhlaWdodD0iMjIiIHJ4PSIuNzUiIHRyYW5zZm9ybT0icm90YXRlKDQ1IDI0Ljg1NzQgMTEuODU2NCkiIGZpbGw9IiNGRTNDNDQiIC8+CiAgPC9zdmc+",ma={class:"camera-container"},Ea=["src"],Ta=A.defineComponent({__name:"Camera",props:{isMobile:{type:Boolean,required:!0}},setup(o){const e=o,t=A.ref(),n=A.ref(""),l=A.ref(r.getData(s.CALL,a.LOCAL_USER_INFO)),i=A.ref(),c=A.ref();n.value=e.isMobile?Ne:Ce;const d=A.ref(),I=A.ref(!1),M=async()=>{I.value=!I.value},g=async()=>{var N;(N=l.value)!=null&&N.isVideoAvailable?e.isMobile?n.value=Ne:n.value=Ce:e.isMobile?n.value=fa:n.value=Da};A.watch(()=>{var N;return(N=l.value)==null?void 0:N.isVideoAvailable},()=>{g()},{deep:!0,immediate:!0});const C=async()=>{var N;(N=l.value)!=null&&N.isVideoAvailable?await h.closeCamera():await h.openCamera("localVideo")};Ie([i,c],()=>{I.value=!1});const p=N=>{l.value=N};return A.onMounted(()=>{var N,u,D;d.value=((D=(u=(N=t.value)==null?void 0:N.$el)==null?void 0:u.getBoundingClientRect)==null?void 0:D.call(u))||{},r.watch(s.CALL,{[a.LOCAL_USER_INFO]:p},{notifyRangeWhenWatch:a.MYSELF})}),A.onUnmounted(()=>{r.unwatch(s.CALL,{[a.LOCAL_USER_INFO]:p})}),(N,u)=>(A.openBlock(),A.createElementBlock("div",ma,[A.createVNode(_,{ref_key:"btnRef",ref:t,icon:A.unref(n),text:A.unref(B)("camera"),isMobile:o.isMobile,onClick:C},null,8,["icon","text","isMobile"]),o.isMobile?A.createCommentVNode("",!0):(A.openBlock(),A.createElementBlock("div",{key:0,ref_key:"arrowRef",ref:c,class:"arrow-btn",onClick:M},[A.createElementVNode("img",{class:"arrow-img",src:A.unref(ce)},null,8,Ea)],512)),o.isMobile?A.createCommentVNode("",!0):(A.openBlock(),A.createBlock(de,{key:1,ref_key:"deviceSelectRef",ref:i,isMobile:o.isMobile,deviceType:A.unref(H).CAMERA,showDeviceSelect:A.unref(I),targetBoundingClientRect:A.unref(d)},null,8,["isMobile","deviceType","showDeviceSelect","targetBoundingClientRect"]))]))}}),Hr="",sA=V(Ta,[["__scopeId","data-v-f1733acd"]]),ya={class:"text"},Sa=A.defineComponent({__name:"Timer",props:{callDuration:{type:String,required:!0}},setup(o){return(e,t)=>(A.openBlock(),A.createElementBlock("span",ya,A.toDisplayString(o.callDuration),1))}}),Jr="",kA=V(Sa,[["__scopeId","data-v-c15a821a"]]),ha={key:0,class:"btn-operate"},Ua={class:"btn-operate"},ja={class:"btn-operate"},za={key:0,class:"btn-operate"},Va={key:1,class:"btn-operate"},Oa={class:"btn-operate"},Ba={key:2,class:"control-wrapper-desktop"},wa={class:"panel-button-area"},ba={key:3,class:"control-wrapper-desktop"},ka={class:"panel-button-area"},Pa=A.defineComponent({__name:"BtnOperate",setup(o){const e=A.ref(r.getData(s.CALL,a.CALL_ROLE)),t=A.ref(r.getData(s.CALL,a.CALL_MEDIA_TYPE)),n=A.ref(r.getData(s.CALL,a.CALL_STATUS)),l=A.ref(r.getData(s.CALL,a.IS_GROUP)),i=A.ref(r.getData(s.CALL,a.CALL_DURATION)),c=A.ref(r.getData(s.CALL,a.IS_CLICKABLE)),d=!X.isPC,I=X.isH5;let M=e.value===x.CALLER;const g=A.ref(t.value===T.AUDIO?"black":"white"),C=L=>{M=L===x.CALLER,e.value=L},p=L=>{l.value=L},N=L=>{t.value=L,g.value=t.value===T.AUDIO?"black":"white"},u=L=>{n.value=L},D=L=>{i.value=L},y=L=>{c.value=L};return A.onMounted(()=>{r.watch(s.CALL,{[a.CALL_ROLE]:C,[a.IS_GROUP]:p,[a.CALL_MEDIA_TYPE]:N,[a.CALL_STATUS]:u,[a.CALL_DURATION]:D,[a.IS_CLICKABLE]:y},{notifyRangeWhenWatch:a.MYSELF})}),A.onUnmounted(()=>{r.unwatch(s.CALL,{[a.CALL_ROLE]:C,[a.IS_GROUP]:p,[a.CALL_MEDIA_TYPE]:N,[a.CALL_STATUS]:u,[a.CALL_DURATION]:D,[a.IS_CLICKABLE]:y})}),(L,w)=>(A.openBlock(),A.createElementBlock("div",null,[A.unref(n)===A.unref(j).CALLING&&d?(A.openBlock(),A.createElementBlock("div",{key:0,class:A.normalizeClass(["control-wrapper-mobile",A.unref(g)])},[A.unref(t)===A.unref(T).VIDEO&&A.unref(M)&&!A.unref(I)?(A.openBlock(),A.createElementBlock("div",ha,[A.createVNode(bA,{class:"mobile-switchAudioCall","is-mobile":d})])):A.createCommentVNode("",!0),A.createElementVNode("div",Ua,[A.unref(M)?A.createCommentVNode("",!0):(A.openBlock(),A.createBlock(mA,{key:0,class:"mobile-reject","is-mobile":d})),A.unref(M)?(A.openBlock(),A.createBlock(eA,{key:1,isGroupCall:A.unref(l),callType:A.unref(t),"is-mobile":d,isClickable:A.unref(c)},null,8,["isGroupCall","callType","isClickable"])):A.createCommentVNode("",!0),A.unref(M)&&A.unref(t)===A.unref(T).VIDEO&&!A.unref(I)?(A.openBlock(),A.createBlock(re,{key:2,class:"mobile-switchcamera"})):A.createCommentVNode("",!0),A.unref(M)?A.createCommentVNode("",!0):(A.openBlock(),A.createBlock(DA,{key:3,class:"mobile-accept","is-mobile":d,"call-type":A.unref(t)},null,8,["call-type"]))])],2)):A.createCommentVNode("",!0),A.unref(n)===A.unref(j).CONNECTED&&d?(A.openBlock(),A.createElementBlock("div",{key:1,class:A.normalizeClass(["control-wrapper-mobile",A.unref(g)])},[A.createElementVNode("div",ja,[A.createVNode(kA,{"call-duration":A.unref(i)},null,8,["call-duration"])]),A.unref(t)===A.unref(T).VIDEO?(A.openBlock(),A.createElementBlock("div",za,[A.createVNode(bA,{class:"mobile-switchAudioCall","is-mobile":d})])):A.createCommentVNode("",!0),A.unref(t)===A.unref(T).VIDEO?(A.openBlock(),A.createElementBlock("div",Va,[A.createVNode(tA,{class:"btn","is-mobile":d}),A.unref(I)?A.createCommentVNode("",!0):(A.openBlock(),A.createBlock(EA,{key:0,class:"btn"})),A.createVNode(sA,{class:"btn","is-mobile":d})])):A.createCommentVNode("",!0),A.createElementVNode("div",Oa,[A.unref(t)===A.unref(T).AUDIO?(A.openBlock(),A.createBlock(tA,{key:0,class:"btn","is-mobile":d})):A.createCommentVNode("",!0),A.createVNode(eA,{class:"mobile-hangup btn","is-mobile":d,isGroupCall:A.unref(l),callType:A.unref(t),isClickable:A.unref(c)},null,8,["isGroupCall","callType","isClickable"]),A.unref(t)===A.unref(T).VIDEO&&!A.unref(I)?(A.openBlock(),A.createBlock(re,{key:1,class:"btn mobile-switchcamera"})):A.createCommentVNode("",!0),A.unref(t)===A.unref(T).AUDIO&&!A.unref(I)?(A.openBlock(),A.createBlock(EA,{key:2,class:"btn"})):A.createCommentVNode("",!0)])],2)):A.createCommentVNode("",!0),A.unref(n)===A.unref(j).CALLING&&!d?(A.openBlock(),A.createElementBlock("div",Ba,[A.createElementVNode("div",wa,[A.unref(t)===A.unref(T).VIDEO?(A.openBlock(),A.createBlock(sA,{key:0,class:"btn","is-mobile":d})):A.createCommentVNode("",!0),A.unref(M)?(A.openBlock(),A.createBlock(tA,{key:1,class:"btn","is-mobile":d})):A.createCommentVNode("",!0),A.unref(M)?A.createCommentVNode("",!0):(A.openBlock(),A.createBlock(mA,{key:2,class:"btn","is-mobile":d})),A.unref(M)?A.createCommentVNode("",!0):(A.openBlock(),A.createBlock(DA,{key:3,class:"btn","is-mobile":d,"call-type":A.unref(t)},null,8,["call-type"])),A.unref(M)?(A.openBlock(),A.createBlock(eA,{key:4,class:"btn",isGroupCall:A.unref(l),callType:A.unref(t),"is-mobile":d,isClickable:A.unref(c)},null,8,["isGroupCall","callType","isClickable"])):A.createCommentVNode("",!0)])])):A.createCommentVNode("",!0),A.unref(n)===A.unref(j).CONNECTED&&!d?(A.openBlock(),A.createElementBlock("div",ba,[A.createElementVNode("div",ka,[A.unref(t)===A.unref(T).VIDEO?(A.openBlock(),A.createBlock(sA,{key:0,class:"btn","is-mobile":d})):A.createCommentVNode("",!0),A.createVNode(tA,{class:"btn","is-mobile":d}),A.unref(t)===A.unref(T).VIDEO?(A.openBlock(),A.createBlock(bA,{key:1,class:"btn","is-mobile":d})):A.createCommentVNode("",!0),A.createVNode(eA,{class:"btn","is-mobile":d,isGroupCall:A.unref(l),callType:A.unref(t),isClickable:A.unref(c)},null,8,["isGroupCall","callType","isClickable"])])])):A.createCommentVNode("",!0)]))}}),_r="",ue=V(Pa,[["__scopeId","data-v-f4e4b14c"]]),qa="data:image/svg+xml;base64,ICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbD0ibm9uZSIgdmlld0JveD0iMCAwIDE2IDE2IiBjbGFzcz0iZGVzaWduLWljb25mb250Ij4KICAgICAgICA8cGF0aAogICAgICAgICAgICBkPSJNMTMuNzMzIDYuOTk5OTZDMTMuNzk5NyA2Ljk5OTk2IDEzLjkzMyA2Ljk5OTk2IDEzLjk5OTcgNi45MzMyOUMxNC4xMzMgNi44NjY2MyAxNC4yNjYzIDYuNzMzMjkgMTQuMzMzIDYuNTk5OTZDMTQuMzk5NyA2LjQ2NjYzIDE0LjM5OTcgNi4yNjY2MyAxNC4zMzMgNi4wNjY2M0MxNC4yNjYzIDUuOTk5OTYgMTQuMjY2MyA1LjkzMzI5IDE0LjE5OTcgNS44NjY2M0wxMC4xOTk3IDEuODY2NjNDOS45MzMwMSAxLjU5OTk2IDkuNTMzMDEgMS41OTk5NiA5LjI2NjM0IDEuODY2NjNDOC45OTk2NyAyLjEzMzI5IDguOTk5NjcgMi41MzMyOSA5LjI2NjM0IDIuNzk5OTZMMTIuMTMzIDUuNjY2NjNIMS45OTk2N0MxLjU5OTY3IDUuNjY2NjMgMS4zMzMwMSA1LjkzMzI5IDEuMzMzMDEgNi4zMzMyOUMxLjMzMzAxIDYuNzMzMjkgMS41OTk2NyA2Ljk5OTk2IDEuOTk5NjcgNi45OTk5NkgxMy43MzNaTTEzLjk5OTcgOC45OTk5NkgyLjI2NjM0QzIuMTk5NjcgOC45OTk5NiAyLjA2NjM0IDguOTk5OTYgMS45OTk2NyA5LjA2NjYzQzEuODY2MzQgOS4xMzMyOSAxLjczMzAxIDkuMjY2NjMgMS42NjYzNCA5LjM5OTk2QzEuNTk5NjcgOS41MzMyOSAxLjU5OTY3IDkuNzMzMjkgMS42NjYzNCA5LjkzMzI5QzEuNzMzMDEgOS45OTk5NiAxLjczMzAxIDEwLjA2NjYgMS43OTk2NyAxMC4xMzMzTDUuNzk5NjcgMTQuMTMzM0M1LjkzMzAxIDE0LjI2NjYgNi4xMzMwMSAxNC4zMzMzIDYuMjY2MzQgMTQuMzMzM0M2LjM5OTY3IDE0LjMzMzMgNi41OTk2NyAxNC4yNjY2IDYuNzMzMDEgMTQuMTMzM0M2Ljk5OTY3IDEzLjg2NjYgNi45OTk2NyAxMy40NjY2IDYuNzMzMDEgMTMuMkwzLjg2NjM0IDEwLjMzMzNIMTMuOTk5N0MxNC4zOTk3IDEwLjMzMzMgMTQuNjY2MyAxMC4wNjY2IDE0LjY2NjMgOS42NjY2M0MxNC42NjYzIDkuMjY2NjMgMTQuMzk5NyA4Ljk5OTk2IDEzLjk5OTcgOC45OTk5NloiCiAgICAgICAgICAgIGZpbGw9IiNmZmYiIC8+CiAgICA8L3N2Zz4=",Ra={class:"streamBox"},xa=["id"],Qa={key:1,class:"callDuration-text"},Ga={key:0,class:"tag"},Xa={class:"microphone-icon-container"},Fa={class:"stream-userInfo"},Wa=["id"],Ya={class:"tag"},Ka={class:"microphone-icon-container"},Za={class:"stream-userInfo"},va={class:"screenImg"},Ha=["src"],Ja=A.defineComponent({__name:"PusherPlayer",setup(o){const e=A.ref(r.getData(s.CALL,a.CALL_MEDIA_TYPE)),t=A.ref(r.getData(s.CALL,a.CALL_STATUS)),n=A.ref("largeView"),l=A.ref("smallView"),i=A.ref(!0),c=A.ref(r.getData(s.CALL,a.REMOTE_USER_INFO_LIST)),d=A.ref(r.getData(s.CALL,a.LOCAL_USER_INFO)),I=A.ref(r.getData(s.CALL,a.CALL_DURATION));A.ref(!1);const M=A.ref(!1),g=A.ref(!1),C=!X.isPC,p=A.computed(()=>t.value===j.CONNECTED&&c.value.length!==0&&e.value===T.VIDEO),N=O=>{d.value=O},u=O=>{var q;g.value=(q=O[0])==null?void 0:q.isEnter,c.value=O},D=O=>{t.value=O},y=O=>{e.value=O},L=O=>{M.value=O},w=()=>{e.value===T.AUDIO||!M.value||h.toggleMinimize()},E=O=>{I.value=O},z=O=>{O&&(O==="localVideo"?(n.value="largeView",l.value="smallView",i.value=!0):(l.value="largeView",n.value="smallView",i.value=!1))},f={[a.IS_MINIMIZED]:L,[a.LOCAL_USER_INFO]:N,[a.REMOTE_USER_INFO_LIST]:u,[a.CALL_STATUS]:D,[a.CALL_MEDIA_TYPE]:y,[a.CALL_DURATION]:E,[a.BIG_SCREEN_USER_ID]:z};A.onMounted(()=>{r.watch(s.CALL,f,{notifyRangeWhenWatch:a.MYSELF})}),A.onUnmounted(()=>{r.unwatch(s.CALL,f)});const S=(O,q)=>{t.value!==j.CONNECTED||C&&q==="largeView"||h.switchScreen(O)};return(O,q)=>(A.openBlock(),A.createElementBlock("div",Ra,[C?A.withDirectives((A.openBlock(),A.createElementBlock("div",{key:0,class:"streamBox-mobile",onClick:w},[A.createElementVNode("div",{id:"localVideo",class:A.normalizeClass(A.unref(n)),onClick:q[0]||(q[0]=m=>S(A.unref(i)?A.unref(c)[0].domId:"localVideo",A.unref(n)))},null,2),A.unref(c).length!==0?(A.openBlock(),A.createElementBlock("div",{key:0,id:A.unref(c)[0].domId,class:A.normalizeClass(A.unref(l)),onClick:q[1]||(q[1]=m=>S(A.unref(i)?A.unref(c)[0].domId:"localVideo",A.unref(l)))},null,10,xa)):A.createCommentVNode("",!0),A.unref(M)?(A.openBlock(),A.createElementBlock("div",Qa,A.toDisplayString(A.unref(t)!==A.unref(j).CONNECTED?A.unref(B)("waiting"):A.unref(I)),1)):A.createCommentVNode("",!0)],512)),[[A.vShow,A.unref(e)===A.unref(T).VIDEO]]):A.createCommentVNode("",!0),C?A.createCommentVNode("",!0):A.withDirectives((A.openBlock(),A.createElementBlock("div",{key:1,class:A.normalizeClass(["streamBox-deskTop",A.unref(d).isVideoAvailable?"streamDisplay":""])},[A.createElementVNode("div",{id:"localVideo",class:A.normalizeClass(A.unref(n))},[A.unref(t)===A.unref(j).CONNECTED?(A.openBlock(),A.createElementBlock("span",Ga,[A.createElementVNode("div",Xa,[A.unref(d).isAudioAvailable?(A.openBlock(),A.createBlock(lA,{key:0,volume:A.unref(d).volume},null,8,["volume"])):(A.openBlock(),A.createBlock(rA,{key:1}))]),A.createElementVNode("div",Fa,A.toDisplayString(`${A.unref(d).displayUserInfo} ${A.unref(B)("me")}`),1)])):A.createCommentVNode("",!0)],2),A.unref(g)?(A.openBlock(),A.createElementBlock("div",{key:0,class:A.normalizeClass(A.unref(l))},[A.createElementVNode("div",{id:A.unref(c)[0].domId,class:"remoteListBox"},[A.createElementVNode("span",Ya,[A.createElementVNode("div",Ka,[A.unref(c)[0].isAudioAvailable?(A.openBlock(),A.createBlock(lA,{key:0,volume:A.unref(c)[0].volume},null,8,["volume"])):(A.openBlock(),A.createBlock(rA,{key:1}))]),A.createElementVNode("div",Za,A.toDisplayString(A.unref(c)[0].displayUserInfo),1)])],8,Wa)],2)):A.createCommentVNode("",!0),A.unref(p)?(A.openBlock(),A.createElementBlock("div",{key:1,class:"switchScreenBox",onClick:q[2]||(q[2]=m=>S(A.unref(i)?A.unref(c)[0].domId:"localVideo"))},[A.createElementVNode("div",va,[A.createElementVNode("img",{src:A.unref(qa)},null,8,Ha)])])):A.createCommentVNode("",!0)],2)),[[A.vShow,A.unref(e)===A.unref(T).VIDEO]])]))}}),$r="",As="",pe=V(Ja,[["__scopeId","data-v-0e391dc0"]]),_a=A.defineComponent({__name:"Pusher",props:{localClass:{type:String,required:!0},currentLocalScreen:{type:Boolean,required:!0}},emits:["toggleViewSize"],setup(o,{emit:e}){const t=A.ref(r.getData(s.CALL,a.PUSHER)),n=A.ref(r.getData(s.CALL,a.CALL_STATUS)),l=o,i=(N,u)=>{n.value!==j.CONNECTED||l.localClass==="large-view"||h.switchScreen(l.currentLocalScreen?"player":"localVideo")},c=N=>{t.value=Object.assign({},t.value,N)},d=N=>{n.value=N},I={[a.PUSHER]:c,[a.CALL_STATUS]:d};A.onMounted(()=>{r.watch(s.CALL,I,{notifyRangeWhenWatch:a.MYSELF})}),A.onUnmounted(()=>{r.unwatch(s.CALL,I)});function M(N){h._tuiCallEngine._pusherStateChangeHandler(N)}function g(N){h._tuiCallEngine._pusherNetStatus(N)}function C(N){h._tuiCallEngine._pusherNetStatus(N)}function p(N){h._tuiCallEngine._pusherAudioVolumeNotify(N)}return(N,u)=>{const D=A.resolveComponent("live-pusher");return A.openBlock(),A.createElementBlock("div",{class:A.normalizeClass(o.localClass)},[A.createElementVNode("div",{onClick:i,class:"stream-box"},[A.createVNode(D,{class:"stream",url:A.unref(t).url,mode:A.unref(t).mode,autopush:!0,"enable-camera":A.unref(t).enableCamera,"enable-mic":!0,muted:!A.unref(t).enableMic,"enable-agc":!0,"enable-ans":!0,"enable-ear-monitor":A.unref(t).enableEarMonitor,"auto-focus":"false",zoom:A.unref(t).enableZoom,"min-bitrate":A.unref(t).minBitrate,"max-bitrate":A.unref(t).maxBitrate,"video-width":A.unref(t).videoWidth,"video-height":A.unref(t).videoHeight,beauty:A.unref(t).beautyLevel,whiteness:A.unref(t).whitenessLevel,orientation:A.unref(t).videoOrientation,aspect:A.unref(t).videoAspect,"device-position":A.unref(t).frontCamera,"remote-mirror":A.unref(t).enableRemoteMirror,"local-mirror":A.unref(t).localMirror,"background-mute":A.unref(t).enableBackgroundMute,"audio-quality":A.unref(t).audioQuality,"audio-volume-type":A.unref(t).audioVolumeType,"audio-reverb-type":A.unref(t).audioReverbType,"waiting-img":A.unref(t).waitingImage,"beauty-style":A.unref(t).beautyStyle,filter:A.unref(t).filter,onStatechange:M,onNetstatus:g,onError:C,onAudiovolumenotify:p},null,8,["url","mode","enable-camera","muted","enable-ear-monitor","zoom","min-bitrate","max-bitrate","video-width","video-height","beauty","whiteness","orientation","aspect","device-position","remote-mirror","local-mirror","background-mute","audio-quality","audio-volume-type","audio-reverb-type","waiting-img","beauty-style","filter"])])],2)}}}),es="",$a=V(_a,[["__scopeId","data-v-ba28a885"]]),An=A.defineComponent({__name:"Player",props:{remoteClass:{type:String,required:!0},currentLocalScreen:{type:Boolean,required:!0}},setup(o){const e=A.ref(r.getData(s.CALL,a.PLAYER)),t=A.ref(r.getData(s.CALL,a.CALL_STATUS)),n=A.ref(r.getData(s.CALL,a.IS_EAR_PHONE)?J.EAR:J.SPEAKER),l=o,i=u=>{e.value=Object.assign({},e.value,u)},c=u=>{t.value=u},d=u=>{n.value=u?J.EAR:J.SPEAKER},I={[a.PLAYER]:i,[a.CALL_STATUS]:c,[a.IS_EAR_PHONE]:d};A.onMounted(()=>{r.watch(s.CALL,I,{notifyRangeWhenWatch:a.MYSELF})}),A.onUnmounted(()=>{r.unwatch(s.CALL,I)});const M=(u,D)=>{t.value!==j.CONNECTED||l.remoteClass==="large-view"||h.switchScreen(l.currentLocalScreen?"player":"localVideo")};function g(u){h._tuiCallEngine._playerStateChange(u)}function C(u){}function p(u){h._tuiCallEngine._playNetStatus(u)}function N(u){h._tuiCallEngine._playerAudioVolumeNotify(u)}return(u,D)=>{const y=A.resolveComponent("live-player");return A.openBlock(),A.createElementBlock("div",{class:A.normalizeClass(o.remoteClass)},[(A.openBlock(!0),A.createElementBlock(A.Fragment,null,A.renderList(A.unref(e),(L,w)=>(A.openBlock(),A.createElementBlock("div",{key:w,onClick:M,class:"stream-box"},[L.hasAudio||L.hasVideo?(A.openBlock(),A.createBlock(y,{key:0,class:"stream",id:L.id,"data-userid":L.userID,"data-streamid":L.streamID,"data-streamtype":L.streamType,src:L.src,mode:"RTC",autoplay:L.autoplay,"mute-audio":L.muteAudio,"mute-video":L.muteVideo,orientation:L.orientation,"object-fit":L.objectFit,"background-mute":L.enableBackgroundMute,"min-cache":L.minCache,"max-cache":L.maxCache,"sound-mode":A.unref(n),"enable-recv-message":L.enableRecvMessage,"auto-pause-if-navigate":L.autoPauseIfNavigate,"auto-pause-if-open-native":L.autoPauseIfOpenNative,onStatechange:g,onFullscreenchange:C,onNetstatus:p,onAudiovolumenotify:N},null,8,["id","data-userid","data-streamid","data-streamtype","src","autoplay","mute-audio","mute-video","orientation","object-fit","background-mute","min-cache","max-cache","sound-mode","enable-recv-message","auto-pause-if-navigate","auto-pause-if-open-native"])):A.createCommentVNode("",!0)]))),128))],2)}}}),ts="",en=V(An,[["__scopeId","data-v-9c668a74"]]),tn={key:1,class:"callDuration-text"},an=A.defineComponent({__name:"WeChatStream",setup(o){const e=A.ref("large-view"),t=A.ref("small-view"),n=A.ref(!0),l=A.ref(r.getData(s.CALL,a.CALL_MEDIA_TYPE)),i=A.ref(r.getData(s.CALL,a.CALL_STATUS)),c=A.ref(r.getData(s.CALL,a.CALL_DURATION)),d=A.ref(!1),I=D=>{l.value=D},M=D=>{d.value=D},g=()=>{l.value===T.AUDIO||!d.value||h.toggleMinimize()},C=D=>{i.value=D},p=D=>{c.value=D},N=D=>{D&&(D==="localVideo"?(e.value="large-view",t.value="small-view",n.value=!0):(t.value="large-view",e.value="small-view",n.value=!1))},u={[a.CALL_MEDIA_TYPE]:I,[a.IS_MINIMIZED]:M,[a.CALL_STATUS]:C,[a.CALL_DURATION]:p,[a.BIG_SCREEN_USER_ID]:N};return A.onMounted(function(){r.watch(s.CALL,u,{notifyRangeWhenWatch:a.MYSELF})}),A.onUnmounted(()=>{r.unwatch(s.CALL,u)}),(D,y)=>A.withDirectives((A.openBlock(),A.createElementBlock("div",{onClick:g,class:"streamBox-mobile"},[A.createVNode($a,{localClass:A.unref(e),currentLocalScreen:A.unref(n)},null,8,["localClass","currentLocalScreen"]),A.unref(i)===A.unref(j).CONNECTED?(A.openBlock(),A.createBlock(en,{key:0,remoteClass:A.unref(t),currentLocalScreen:A.unref(n)},null,8,["remoteClass","currentLocalScreen"])):A.createCommentVNode("",!0),A.unref(d)?(A.openBlock(),A.createElementBlock("div",tn,A.toDisplayString(A.unref(i)!==A.unref(j).CONNECTED?A.unref(B)("waiting"):A.unref(c)),1)):A.createCommentVNode("",!0)],512)),[[A.vShow,A.unref(l)===A.unref(T).VIDEO]])}}),as="",nn=V(an,[["__scopeId","data-v-9f380d5c"]]),on="data:image/svg+xml;base64,IDxzdmcgd2lkdGg9IjI2IiBoZWlnaHQ9IjI2IiB2aWV3Qm94PSIwIDAgMjYgMjYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgICAgICAgPHBhdGggZD0iTTE4LjQ0MzcgMTIuNDQ5QzE4LjQ0MzcgMTQuMTE0MiAxOC4yMzM2IDE1LjM1MTUgMjEuNTA4OSAxNS43MTI2QzI0Ljc4NzUgMTYuMDczNyAyNC4zNjY2IDEzLjY3OTQgMjQuMzY2MiAxMi4wNjY5QzI0LjM2NDkgMTAuMjA2MSAyMC4wNjAyIDcuNjE4OTUgMTMuMjcyNiA3LjYxNzNDNi40ODY2MiA3LjYxNzM1IDIuMTc4OSAxMC4yMDUgMi4xNzg4OCAxMi4wNjdDMi4xNzg4NyAxMy42OCAxLjc1NjIxIDE2LjA3MjYgNS4wMzMxNSAxNS43MTIzQzguMzEwMDkgMTUuMzUzNyA4LjEwMDA1IDE0LjExNTUgOC4wOTgzNyAxMi40NDk1QzguMTAxMzQgMTEuMjg2MiAxMC43NTg3IDExLjAzMTYgMTMuMjcyNSAxMS4wMjk4QzE1Ljc4NjMgMTEuMDI4MSAxOC40NDU0IDExLjI4NDQgMTguNDQzNyAxMi40NDlaIiBmaWxsPSIjRkUzQzQ0Ii8+CiAgICA8L3N2Zz4=",ln="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik02LjY2NjY2IDQuMTY2NjhDNi42NjY2NiAyLjMyODM0IDguMTYxNjYgMC44MzMzNDQgOS45OTk5OSAwLjgzMzM0NEMxMS44MzgzIDAuODMzMzQ0IDEzLjMzMzMgMi4zMjgzNCAxMy4zMzMzIDQuMTY2NjhWOS4xNjY2OEMxMy4zMzMzIDExLjAwNSAxMS44MzgzIDEyLjUgOS45OTk5OSAxMi41QzguMTYxNjYgMTIuNSA2LjY2NjY2IDExLjAwNSA2LjY2NjY2IDkuMTY2NjhWNC4xNjY2OFpNNi42NjY2NiAxOC4zMzMzQzYuNjY2NjYgMTcuODcyNSA3LjAzOTk5IDE3LjUgNy40OTk5OSAxNy41SDEyLjVDMTIuOTYwOCAxNy41IDEzLjMzMzMgMTcuODcyNSAxMy4zMzMzIDE4LjMzMzNDMTMuMzMzMyAxOC43OTQyIDEyLjk2MDggMTkuMTY2NyAxMi41IDE5LjE2NjdINy40OTk5OUM3LjAzOTk5IDE5LjE2NjcgNi42NjY2NiAxOC43OTQyIDYuNjY2NjYgMTguMzMzM1oiIGZpbGw9IiMxMDE0MTkiLz4KPHBhdGggZD0iTTE1LjgzMzMgOC4zNTEyVjkuNTA4MjVDMTUuODMzMyAxMi4wODEgMTMuMjIxNyAxNSA5Ljk5OTk5IDE1QzYuNzc4MzMgMTUgNC4xNjY2NiAxMi4wODEgNC4xNjY2NiA5LjUwODI1VjguMzMzMzQiIHN0cm9rZT0iIzEwMTQxOSIgc3Ryb2tlLXdpZHRoPSIxLjY2NjY3IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPC9zdmc+",rn="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAxNSAyMSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNC42MjQ3IDAuNzE5MTY4QzE0LjE5MzQgMC4zNzQxNTggMTMuNTY0MSAwLjQ0NDA4IDEzLjIxOTEgMC44NzUzNDJMMTAuODE2OCAzLjgzMjAzQzEwLjE3ODkgMy4wMjQ1NSA5LjE1Mzg3IDIuNTAwMDQgOC4wMDAwMSAyLjUwMDA0QzYuMDY5NzYgMi41MDAwNCA0LjUwMDAxIDMuOTY3ODUgNC41MDAwMSA1Ljc3Mjc2VjEwLjY4MTlDNC41MDAwMSAxMC45NTYzIDQuNTM2MyAxMS4yMjI5IDQuNjA0NjMgMTEuNDc3OEwzLjM4OCAxMi45NzUyQzIuOTg0NDkgMTIuMzQzMyAyLjc1MDAxIDExLjY1MjIgMi43NTAwMSAxMC45NzE3VjkuODE4MTlMMi43NDMxOSA5LjcxNTU2QzIuNjg5MiA5LjMxMjEzIDIuMzIxMDggOS4wMDAwMSAxLjg3NTAxIDkuMDAwMDFDMS4zOTE3NiA5LjAwMDAxIDEuMDAwMDEgOS4zNjYzMiAxLjAwMDAxIDkuODE4MTlWMTAuOTcxN0wxLjAwNDY2IDExLjE3NjFDMS4wNTU1NyAxMi4yOTY4IDEuNTIxNjEgMTMuNDAxNiAyLjI2OTM5IDE0LjM1MTlMMC4yMTkxMzcgMTYuODc1M0wwLjE0Njg2MSAxNi45NzgyQy0wLjExMjk3NyAxNy40MDE3IC0wLjAyMjc3NjcgMTcuOTYyNCAwLjM3NTMxMSAxOC4yODA5QzAuODA2NTczIDE4LjYyNTkgMS40MzU4NyAxOC41NTYgMS43ODA4OCAxOC4xMjQ3TDMuNzE2NjEgMTUuNzQyM0MzLjcxODQ5IDE1Ljc0MzcgMy43MjAzOCAxNS43NDUgMy43MjIyNyAxNS43NDY0TDQuMjk5NyAxNS4wMjQ2TDguMjgwODggMTAuMTI0N0wxNC43ODA5IDIuMTI0NzNMMTQuODUzMiAyLjAyMTkxQzE1LjExMyAxLjU5ODM0IDE1LjAyMjggMS4wMzc2NCAxNC42MjQ3IDAuNzE5MTY4Wk03LjcyNDk5IDEzLjk0NDZMMTEuNSA5LjIyNTgyVjEwLjY4MTlDMTEuNSAxMi40ODY4IDkuOTMwMjYgMTMuOTU0NiA4LjAwMDAxIDEzLjk1NDZDNy45MDc0NiAxMy45NTQ2IDcuODE1NzUgMTMuOTUxMiA3LjcyNDk5IDEzLjk0NDZaTTYuNjA0NDUgMTUuMzQ1M0w1LjUwNzk4IDE2LjcxNTlDNi4yOTIyNSAxNy4wMTM2IDcuMTM1MzIgMTcuMTgxOCA4LjAwMDAxIDE3LjE4MThDMTEuNjk3NiAxNy4xODE4IDE1IDE0LjEwNjQgMTUgMTAuOTcxN1Y5LjgzNTcyTDE0Ljk5MzIgOS43MzMwOUMxNC45MzkyIDkuMzI5NjYgMTQuNTcxMSA5LjAxNzU0IDE0LjEyNSA5LjAxNzU0QzEzLjY0MTggOS4wMTc1NCAxMy4yNSA5LjM4Mzg1IDEzLjI1IDkuODM1NzJWMTAuOTcxN0wxMy4yNDQ1IDExLjE1MjdDMTMuMTEzOCAxMy4zMjYyIDEwLjY1ODkgMTUuNTQ1NSA4LjAwMDAxIDE1LjU0NTVDNy41MjQyNCAxNS41NDU1IDcuMDU1MDEgMTUuNDc0NCA2LjYwNDQ1IDE1LjM0NTNaTTUuMzc1MDEgMTguODYzN0M0Ljg5MjAxIDE4Ljg2MzcgNC41MDAwMSAxOS4yMjk0IDQuNTAwMDEgMTkuNjgxOUM0LjUwMDAxIDIwLjEzNDMgNC44OTIwMSAyMC41IDUuMzc1MDEgMjAuNUgxMC42MjVDMTEuMTA4OSAyMC41IDExLjUgMjAuMTM0MyAxMS41IDE5LjY4MTlDMTEuNSAxOS4yMjk0IDExLjEwODkgMTguODYzNyAxMC42MjUgMTguODYzN0g1LjM3NTAxWiIgZmlsbD0iIzEwMTQxOSIvPgo8L3N2Zz4=",sn="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yLjMzMzM3IDkuMzMzMzFIMC4zMzMzNzRWMC45OTk5OEMwLjMzMzM3NCAwLjYzMTc5IDAuNjMxODUxIDAuMzMzMzEzIDEuMDAwMDQgMC4zMzMzMTNMOS4zMzMzOCAwLjMzMzMxM1YyLjMzMzMxSDMuNzQ3NThMMTAuMDQwNSA4LjYyNjI0TDguNjI2MjcgMTAuMDQwNEwyLjMzMzM3IDMuNzQ3NTNWOS4zMzMzMVpNMTguMzMzMSAxMS4zMzMzSDIwLjMzMzFWMTkuNjY2NkMyMC4zMzMxIDIwLjAzNDggMjAuMDM0NyAyMC4zMzMzIDE5LjY2NjUgMjAuMzMzM0wxMS4zMzMxIDIwLjMzMzNMMTEuMzMzMSAxOC4zMzMzSDE2LjkxODlMMTAuNjI2IDEyLjA0MDNMMTIuMDQwMiAxMC42MjYxTDE4LjMzMzEgMTYuOTE5VjExLjMzMzNaIiBmaWxsPSIjMTAxNDE5Ii8+Cjwvc3ZnPg==",cn={class:"float-control-panel"},dn={class:"float-control-item-icon"},In=["src"],Mn={class:"float-control-item-icon"},gn=["src"],Nn=["src"],Cn={class:"float-control-item-icon"},un=["src"],pn=A.defineComponent({__name:"FloatWindow",props:{localUserInfo:{type:Object,required:!0},callStatus:{type:String,required:!0},callRole:{type:String,required:!0}},emits:["closeFloatWindow"],setup(o,{emit:e}){const t=e,n=A.ref(!0),l=o;function i(){t("closeFloatWindow")}async function c(){l.callRole===x.CALLEE&&l.callStatus===j.CALLING?await h.reject():await h.hangup()}async function d(){n.value?(await h.closeMicrophone(),n.value=!1):(await h.openMicrophone(),n.value=!0)}return(I,M)=>(A.openBlock(),A.createElementBlock("div",cn,[A.createElementVNode("div",dn,[A.createElementVNode("div",{class:"float-control-item-icon-container",onClick:c},[A.createElementVNode("img",{src:A.unref(on)},null,8,In)])]),A.createElementVNode("div",Mn,[A.createElementVNode("div",{class:"float-control-item-icon-container",onClick:d},[o.localUserInfo.isAudioAvailable?(A.openBlock(),A.createElementBlock("img",{key:0,src:A.unref(ln)},null,8,gn)):(A.openBlock(),A.createElementBlock("img",{key:1,src:A.unref(rn)},null,8,Nn))])]),A.createElementVNode("div",Cn,[A.createElementVNode("div",{class:"float-control-item-icon-container",onClick:i},[A.createElementVNode("img",{src:A.unref(sn)},null,8,un)])])]))}}),ns="",Ln=V(pn,[["__scopeId","data-v-1c12e806"]]),fn="data:image/svg+xml;base64,PHN2ZyB0PSIxNjk1MzcwNTk5Mjk2IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjEwMDg1IiBkYXRhLXNwbS1hbmNob3ItaWQ9ImEzMTN4LnNlYXJjaF9pbmRleC4wLmkwLjVhNmUzYTgxUGJab1dOIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTEwMDUuODI0IDg2OC40MzczMzNhODgzLjAyOTMzMyA4ODMuMDI5MzMzIDAgMCAxLTU5MS4wMTg2NjctMjU4LjgxNkE4ODMuMDI5MzMzIDg4My4wMjkzMzMgMCAwIDEgMTU1LjgxODY2NyAxNi43MjUzMzNhNzUuMDkzMzMzIDc1LjA5MzMzMyAwIDAgMC02Mi42MzQ2NjcgMjEuMjQ4TDUyLjczNiA3OC40MjEzMzNjLTQ0LjM3MzMzMyA0NC4zNzMzMzMtNjIuMjkzMzMzIDEwOC43MTQ2NjctNDcuNDQ1MzMzIDE2OS44MTMzMzRBMTA0My43OTczMzMgMTA0My43OTczMzMgMCAwIDAgMjI1LjI4IDY3OC45MTJsMTIwLjMyIDEyMC4yMzQ2NjdhMTA0NC40OCAxMDQ0LjQ4IDAgMCAwIDQyNi44MzczMzMgMjE5LjA1MDY2NiAxNzkuNjI2NjY3IDE3OS42MjY2NjcgMCAwIDAgMTcwLjI0LTQ3LjQ0NTMzM2w0MS43MjgtNDEuNzI4YTc0Ljc1MiA3NC43NTIgMCAwIDAgMjEuNDE4NjY3LTYwLjU4NjY2N3oiIGZpbGw9IiM0M0M0OTEiIHAtaWQ9IjEwMDg2Ij48L3BhdGg+PHBhdGggZD0iTTI0MS45MiA0MjAuODY0TDU3LjI1ODY2NyA3My44OTg2NjdsNTguMDI2NjY2LTU4LjAyNjY2N2MyMC40OC0yMC40OCA1My44NDUzMzMtMjAuNDggNzQuMzI1MzM0IDBsMTkxLjU3MzMzMyAxOTEuNTczMzMzYzIwLjQ4IDIwLjQ4IDIwLjQ4IDUzLjg0NTMzMyAwIDc0LjI0TDI0MS45MiA0MjAuOTQ5MzMzeiBtMzU5LjUwOTMzMyAzNTkuNTk0NjY3bDM0Ny4wNTA2NjcgMTg0LjQ5MDY2NiA1OC4wMjY2NjctNTguMDI2NjY2YTUyLjczNiA1Mi43MzYgMCAwIDAgMC03NC4yNEw4MTQuOTMzMzMzIDY0MS4xMDkzMzNhNTIuNzM2IDUyLjczNiAwIDAgMC03NC4yNCAwTDYwMS4zNDQgNzgwLjQ1ODY2N3oiIGZpbGw9IiM0M0M0OTEiIHAtaWQ9IjEwMDg3Ij48L3BhdGg+PC9zdmc+",Dn=["src"],mn={class:"phone-text"},En=A.defineComponent({__name:"FloatWindow",setup(o){const e=A.ref(r.getData(s.CALL,a.CALL_STATUS)),t=A.ref(r.getData(s.CALL,a.CALL_DURATION));function n(){h.toggleMinimize()}A.onMounted(()=>{r.watch(s.CALL,{[a.CALL_STATUS]:l,[a.CALL_DURATION]:i},{notifyRangeWhenWatch:a.MYSELF})}),A.onUnmounted(()=>{r.unwatch(s.CALL,{[a.CALL_STATUS]:l,[a.CALL_DURATION]:i})});const l=c=>{e.value=c},i=c=>{t.value=c};return(c,d)=>(A.openBlock(),A.createElementBlock("div",{class:"phone-box",onClick:n},[A.createElementVNode("img",{class:"phone-img",src:A.unref(fn)},null,8,Dn),A.createElementVNode("div",mn,A.toDisplayString(A.unref(e)!==A.unref(j).CONNECTED?A.unref(B)("waiting"):A.unref(t)),1)]))}}),os="",Tn=V(En,[["__scopeId","data-v-65da9f94"]]),yn="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxyZWN0IHg9IjAuNzY5MjMxIiB5PSIwLjc2OTIzMSIgd2lkdGg9IjE4LjQ2MTUiIGhlaWdodD0iMTguNDYxNSIgcng9IjAuNzY5MjMxIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjEuNTM4NDYiLz4KICAgIDxwYXRoIGQ9Ik0xMS41Mzg1IDEyLjMwNzdDMTEuNTM4NSAxMS44ODI5IDExLjg4MjkgMTEuNTM4NSAxMi4zMDc3IDExLjUzODVIMTkuMjMwOFYxOC40NjE1QzE5LjIzMDggMTguODg2NCAxOC44ODY0IDE5LjIzMDggMTguNDYxNiAxOS4yMzA4SDExLjUzODVWMTIuMzA3N1oiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMS41Mzg0NiIvPgogICAgPHBhdGggZD0iTTAuNzY5Mjg3IDAuNzY5MjI2TDguOTcyMyA4LjkyNDEyIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjEuNTM4NDYiLz4KICAgIDxwYXRoIGQ9Ik05LjQ5NjcgNC43MTcxNlY5LjQ0ODZINC43NDE0NiIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIxLjUzODQ2IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KICA8L3N2Zz4=",Sn="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00LjY2NjgzIDkuMzMzMzdIMy4zMzM1VjQuMDAwMDRDMy4zMzM1IDMuNjMxODUgMy42MzE5NyAzLjMzMzM3IDQuMDAwMTYgMy4zMzMzN0w5LjMzMzUgMy4zMzMzN1Y0LjY2NjcxSDUuNjA5NjNMOS44MDQ5IDguODYxOTlMOC44NjIwOSA5LjgwNDhMNC42NjY4MyA1LjYwOTUyVjkuMzMzMzdaTTE1LjMzMzMgMTAuNjY2N0gxNi42NjY3VjE2QzE2LjY2NjcgMTYuMzY4MiAxNi4zNjgyIDE2LjY2NjcgMTYgMTYuNjY2N0wxMC42NjY3IDE2LjY2NjdMMTAuNjY2NyAxNS4zMzMzSDE0LjM5MDVMMTAuMTk1MyAxMS4xMzhMMTEuMTM4MSAxMC4xOTUyTDE1LjMzMzMgMTQuMzkwNVYxMC42NjY3WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTAuNjY2NjY3IDEuMzMzMzNDMC42NjY2NjcgMC45NjUxNDQgMC45NjUxNDQgMC42NjY2NjcgMS4zMzMzMyAwLjY2NjY2N0gxOC42NjY3QzE5LjAzNDkgMC42NjY2NjcgMTkuMzMzMyAwLjk2NTE0NCAxOS4zMzMzIDEuMzMzMzNWMTguNjY2N0MxOS4zMzMzIDE5LjAzNDkgMTkuMDM0OSAxOS4zMzMzIDE4LjY2NjcgMTkuMzMzM0gxLjMzMzMzQzAuOTY1MTQzIDE5LjMzMzMgMC42NjY2NjcgMTkuMDM0OSAwLjY2NjY2NyAxOC42NjY3VjEuMzMzMzNaIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjEuMzMzMzMiLz4KPC9zdmc+",hn={class:"function-buttons"},Un=["src"],jn=["src"],zn=A.defineComponent({__name:"ToggleSize",props:{allowedFullScreen:{type:Boolean,required:!0},allowedMinimized:{type:Boolean,required:!0}},emits:["openFloatWindow"],setup(o,{emit:e}){const t=e;function n(){document.fullscreenElement&&document.exitFullscreen(),t("openFloatWindow")}function l(){const i=document.getElementById("tui-call-kit-id");document.fullscreenElement?document.exitFullscreen():i.requestFullscreen().catch(c=>{alert(`Error attempting to enable fullscreen mode: ${c.message} (${c.name})`)})}return(i,c)=>(A.openBlock(),A.createElementBlock("div",hn,[o.allowedMinimized?(A.openBlock(),A.createElementBlock("div",{key:0,class:"minimize",onClick:n},[A.createElementVNode("img",{src:A.unref(yn)},null,8,Un)])):A.createCommentVNode("",!0),o.allowedFullScreen?(A.openBlock(),A.createElementBlock("div",{key:1,class:"minimize",onClick:l},[A.createElementVNode("img",{src:A.unref(Sn)},null,8,jn)])):A.createCommentVNode("",!0)]))}}),ls="",Vn=V(zn,[["__scopeId","data-v-18b58bb9"]]),Le="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE0LjUgNi41SDkuNU05LjUgNi41VjEuNU05LjUgNi41TDE0LjUgMS41IiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjEuNyIvPgo8cGF0aCBkPSJNMS41IDkuNUg2LjVNNi41IDkuNVYxNC41TTYuNSA5LjVMMS41IDE0LjUiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMS43Ii8+Cjwvc3ZnPgo=",fe="data:image/svg+xml;base64,PHN2ZyB0PSIxNjk1NjExMDcwMzA4IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjU3NDAiIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIj48cGF0aCBkPSJNNjI0LjY0IDE3NC4wOGw3MS42OCA3MS42OEw4ODAuNjQgNjEuNDRsODEuOTIgODEuOTItMTg0LjMyIDE4NC4zMiA3MS42OCA3MS42OGMwIDMwLjcyLTI1LjYgNTYuMzItNTYuMzIgNTYuMzJINjI0LjY0Yy0zMC43MiAwLTU2LjMyLTI1LjYtNTYuMzItNTYuMzJWMjMwLjRjMC0zMC43MiAyNS42LTU2LjMyIDU2LjMyLTU2LjMyek0xNzQuMDggNjI0LjY0YzAtMzAuNzIgMjUuNi01Ni4zMiA1Ni4zMi01Ni4zMmgxNjguOTZjMzAuNzIgMCA1Ni4zMiAyNS42IDU2LjMyIDU2LjMyVjc5My42YzAgMzAuNzItMjUuNiA1Ni4zMi01Ni4zMiA1Ni4zMmwtNzEuNjgtNzEuNjgtMTg0LjMyIDE4NC4zMi04MS45Mi04MS45MiAxODQuMzItMTg0LjMyLTcxLjY4LTcxLjY4eiIgcC1pZD0iNTc0MSI+PC9wYXRoPjwvc3ZnPg==",On=["src"],Bn=A.defineComponent({__name:"ZoomOut",props:{isGroupCall:{type:Boolean,required:!0},callType:{type:Number,required:!0}},setup(o){const e=o;let t=A.ref(e.isGroupCall||e.callType===T.AUDIO?fe:Le);function n(){h.toggleMinimize()}A.onMounted(()=>{r.watch(s.CALL,{[a.CALL_MEDIA_TYPE]:l},{notifyRangeWhenWatch:a.MYSELF})}),A.onUnmounted(()=>{r.unwatch(s.CALL,{[a.CALL_MEDIA_TYPE]:l})});const l=i=>{t.value=i===T.AUDIO?fe:Le};return(i,c)=>(A.openBlock(),A.createElementBlock("div",{class:"zoom-box",onClick:n},[A.createElementVNode("img",{class:"zoom-img",src:A.unref(t)},null,8,On)]))}}),rs="",wn=V(Bn,[["__scopeId","data-v-209bc62d"]]),bn={key:0,class:"inviteHeader"},kn={key:0,class:"inviteHeader"},Pn={key:2,class:"topToolbar-desk"},qn=A.defineComponent({__name:"SingleCall",props:{allowedFullScreen:{type:Boolean,required:!0}},setup(o){const e=!X.isPC,t=X.isWeChat,n=A.ref(r.getData(s.CALL,a.CALL_STATUS)),l=A.ref(r.getData(s.CALL,a.CALL_MEDIA_TYPE)),i=A.ref(!t&&l.value===T.VIDEO?"videoStyle":"audioStyle"),c=A.ref(t?"weChatBody":""),d=A.ref(!1),I=A.ref(r.getData(s.CALL,a.LOCAL_USER_INFO)),M=A.ref(r.getData(s.CALL,a.CALL_DURATION)),g=A.ref(r.getData(s.CALL,a.IS_GROUP)),C=A.ref(r.getData(s.CALL,a.ENABLE_FLOAT_WINDOW)),p=A.ref(r.getData(s.CALL,a.CALL_ROLE)),N=S=>{n.value=S},u=S=>{l.value=S,!t&&(i.value=l.value===T.VIDEO?"videoStyle":"")},D=S=>{I.value=S},y=S=>{d.value=S},L=S=>{M.value=S};function w(){h.toggleMinimize()}function E(){h.toggleMinimize()}function z(S){C.value=S}const f=S=>{p.value=S};return A.onMounted(function(){r.watch(s.CALL,{[a.CALL_STATUS]:N,[a.CALL_MEDIA_TYPE]:u,[a.LOCAL_USER_INFO]:D,[a.IS_MINIMIZED]:y,[a.CALL_DURATION]:L,[a.ENABLE_FLOAT_WINDOW]:z,[a.CALL_ROLE]:f},{notifyRangeWhenWatch:a.MYSELF})}),A.onUnmounted(()=>{r.unwatch(s.CALL,{[a.CALL_STATUS]:N,[a.CALL_MEDIA_TYPE]:u,[a.LOCAL_USER_INFO]:D,[a.IS_MINIMIZED]:y,[a.CALL_DURATION]:L,[a.ENABLE_FLOAT_WINDOW]:z,[a.CALL_ROLE]:f})}),(S,O)=>(A.openBlock(),A.createElementBlock("div",{class:A.normalizeClass(A.unref(c))},[e?(A.openBlock(),A.createElementBlock("div",{key:0,class:A.normalizeClass(["singleCall-mobile",A.unref(i)])},[(A.unref(n)===A.unref(j).CALLING||A.unref(l)===A.unref(T).AUDIO)&&!A.unref(d)?(A.openBlock(),A.createElementBlock("div",bn,[A.createVNode(ae)])):A.createCommentVNode("",!0),A.unref(t)?(A.openBlock(),A.createBlock(nn,{key:2,class:"live-pusher"})):(A.openBlock(),A.createBlock(pe,{key:1})),A.unref(d)?A.createCommentVNode("",!0):(A.openBlock(),A.createBlock(ue,{key:3,class:"btnOperate btn-operate-mobile"}))],2)):A.createCommentVNode("",!0),e?A.createCommentVNode("",!0):A.withDirectives((A.openBlock(),A.createElementBlock("div",{key:1,class:A.normalizeClass(["singleCall-desktop",A.unref(i)])},[A.createVNode(Vn,{class:"toggleSize","allowed-full-screen":o.allowedFullScreen,"allowed-minimized":A.unref(C),onOpenFloatWindow:w},null,8,["allowed-full-screen","allowed-minimized"]),A.unref(n)===A.unref(j).CALLING||A.unref(l)===A.unref(T).AUDIO?(A.openBlock(),A.createElementBlock("div",kn,[A.createVNode(ae)])):A.createCommentVNode("",!0),A.createVNode(pe),A.createVNode(ue,{class:"btnOperate"})],2)),[[A.vShow,!A.unref(d)]]),e?A.createCommentVNode("",!0):(A.openBlock(),A.createElementBlock("div",Pn,[A.unref(n)===A.unref(j).CONNECTED&&!A.unref(d)?(A.openBlock(),A.createBlock(kA,{key:0,class:"topToolbar-time","call-duration":A.unref(M)},null,8,["call-duration"])):A.createCommentVNode("",!0),A.unref(d)?(A.openBlock(),A.createBlock(Ln,{key:1,"local-user-info":A.unref(I),callStatus:A.unref(n),callRole:A.unref(p),onCloseFloatWindow:E},null,8,["local-user-info","callStatus","callRole"])):A.createCommentVNode("",!0)])),e?(A.openBlock(),A.createElementBlock("div",{key:3,class:A.normalizeClass(A.unref(d)?"topToolbar-mobile-floatWindow":"topToolbar-mobile")},[A.unref(C)&&!A.unref(d)?(A.openBlock(),A.createBlock(wn,{key:0,isGroupCall:A.unref(g),callType:A.unref(l)},null,8,["isGroupCall","callType"])):A.createCommentVNode("",!0),A.unref(d)&&(A.unref(l)===A.unref(T).AUDIO||A.unref(g))?(A.openBlock(),A.createBlock(Tn,{key:1})):A.createCommentVNode("",!0)],2)):A.createCommentVNode("",!0)],2))}}),ss="",Rn=V(qn,[["__scopeId","data-v-445cd42e"]]),xn=["src"],Qn={class:"nick"},Gn={class:"tips"},Xn={class:"list-tips"},Fn={class:"list"},Wn=["src"],Yn={class:"list-name"},Kn=A.defineComponent({__name:"InviteCallee",props:{remoteUsersList:{type:Array,required:!0},localUserInfo:{type:Object,required:!0},callerUserInfo:{type:Object,required:!0}},setup(o){const e=o;function t(l){l.target.src=v}const n=A.computed(()=>[e.localUserInfo,...e.remoteUsersList]);return(l,i)=>(A.openBlock(),A.createElementBlock("div",null,[A.createElementVNode("img",{class:"avatar",src:o.callerUserInfo.avatar||A.unref(v),onerror:t},null,8,xn),A.createElementVNode("div",Qn,A.toDisplayString(o.callerUserInfo.displayUserInfo),1),A.createElementVNode("div",Gn,A.toDisplayString(A.unref(B)("Invited group call")),1),A.createElementVNode("div",Xn,A.toDisplayString(A.unref(B)("Those involved")),1),A.createElementVNode("div",Fn,[(A.openBlock(!0),A.createElementBlock(A.Fragment,null,A.renderList(A.unref(n),(c,d)=>(A.openBlock(),A.createElementBlock("div",{key:d,class:"list-item"},[A.createElementVNode("img",{class:"list-avatar",src:c.avatar||A.unref(v),onerror:t},null,8,Wn),A.createElementVNode("div",Yn,A.toDisplayString(c.displayUserInfo),1)]))),128))])]))}}),is="",Zn=V(Kn,[["__scopeId","data-v-53f6717e"]]),vn={class:"singleInvite-message"},Hn={class:"singleInvite-nick"},Jn={class:"singleInvite-nick-span"},_n={class:"singleInvite-tips"},$n=A.defineComponent({__name:"InviteInfo",setup(o){const e=!X.isPC,t=e?"groupInvite-header-mobile":"groupInvite-header-desktop",n=A.ref(r.getData(s.CALL,a.CALL_ROLE)),l=A.ref(r.getData(s.CALL,a.CALL_MEDIA_TYPE)),i=A.ref(r.getData(s.CALL,a.IS_GROUP)),c=A.ref(r.getData(s.CALL,a.REMOTE_USER_INFO_LIST)),d=A.ref(r.getData(s.CALL,a.CALL_STATUS)),I=A.ref(r.getData(s.CALL,a.CALL_DURATION)),M=A.ref(r.getData(s.CALL,a.CALL_TIPS)),g=A.ref(r.getData(s.CALL,a.LOCAL_USER_INFO)),C=A.ref(r.getData(s.CALL,a.CALLER_USER_INFO)),p=S=>{C.value=S},N=S=>{g.value=S},u=S=>{n.value=S},D=S=>{i.value=S},y=S=>{l.value=S},L=S=>{c.value=S},w=S=>{d.value=S},E=S=>{I.value=S},z=S=>{M.value=S},f={[a.CALLER_USER_INFO]:p,[a.LOCAL_USER_INFO]:N,[a.CALL_ROLE]:u,[a.IS_GROUP]:D,[a.CALL_MEDIA_TYPE]:y,[a.REMOTE_USER_INFO_LIST]:L,[a.CALL_STATUS]:w,[a.CALL_DURATION]:E,[a.CALL_TIPS]:z};return A.onMounted(()=>{r.watch(s.CALL,f,{notifyRangeWhenWatch:a.MYSELF})}),A.onUnmounted(()=>{r.unwatch(s.CALL,f)}),(S,O)=>(A.openBlock(),A.createElementBlock("div",null,[e&&A.unref(c).length!==0?(A.openBlock(),A.createElementBlock("div",{key:0,class:A.normalizeClass(A.unref(t))},[A.createVNode(Zn,{"local-user-info":A.unref(g),callerUserInfo:A.unref(C),"remote-users-list":A.unref(c)},null,8,["local-user-info","callerUserInfo","remote-users-list"])],2)):A.createCommentVNode("",!0),!e&&A.unref(c).length!==0?(A.openBlock(),A.createElementBlock("div",{key:1,class:A.normalizeClass(A.unref(t))},[A.createElementVNode("div",vn,[A.createElementVNode("div",Hn,[A.createElementVNode("div",Jn,A.toDisplayString(A.unref(C).displayUserInfo),1)]),A.createElementVNode("span",_n,A.toDisplayString(A.unref(M)),1)])],2)):A.createCommentVNode("",!0)]))}}),cs="",Ao=V($n,[["__scopeId","data-v-7e774bdd"]]),eo="data:image/svg+xml;base64,PHN2ZyBjb2xvcj0icmVkIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCA0MCA0MCIgY2xhc3M9ImRlc2lnbi1pY29uZm9udCI+CiAgPHJlY3Qgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiByeD0iMjAiIGZpbGw9IiNEQURBREEiIGZpbGwtb3BhY2l0eT0iLjMiLz4KICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIwIDEyQzE5LjQ0NzcgMTIgMTkgMTIuNDQ3NyAxOSAxM1YxOUgxM0MxMi40NDc3IDE5IDEyIDE5LjQ0NzcgMTIgMjBDMTIgMjAuNTUyMyAxMi40NDc3IDIxIDEzIDIxSDE5VjI3QzE5IDI3LjU1MjMgMTkuNDQ3NyAyOCAyMCAyOEMyMC41NTIzIDI4IDIxIDI3LjU1MjMgMjEgMjdWMjFIMjdDMjcuNTUyMyAyMSAyOCAyMC41NTIzIDI4IDIwQzI4IDE5LjQ0NzcgMjcuNTUyMyAxOSAyNyAxOUgyMVYxM0MyMSAxMi40NDc3IDIwLjU1MjMgMTIgMjAgMTJaIiBmaWxsPSIjZmZmIi8+Cjwvc3ZnPgoK",to="data:image/svg+xml;base64,PHN2ZyBjb2xvcj0iI2ZmZiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgNDAgNDAiIGNsYXNzPSJkZXNpZ24taWNvbmZvbnQiPgogIDxyZWN0IHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgcng9IjIwIiBmaWxsPSIjREFEQURBIiBmaWxsLW9wYWNpdHk9Ii4zIi8+CiAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yMCAxMkMxOS40NDc3IDEyIDE5IDEyLjQ0NzcgMTkgMTNWMTlIMTNDMTIuNDQ3NyAxOSAxMiAxOS40NDc3IDEyIDIwQzEyIDIwLjU1MjMgMTIuNDQ3NyAyMSAxMyAyMUgxOVYyN0MxOSAyNy41NTIzIDE5LjQ0NzcgMjggMjAgMjhDMjAuNTUyMyAyOCAyMSAyNy41NTIzIDIxIDI3VjIxSDI3QzI3LjU1MjMgMjEgMjggMjAuNTUyMyAyOCAyMEMyOCAxOS40NDc3IDI3LjU1MjMgMTkgMjcgMTlIMjFWMTNDMjEgMTIuNDQ3NyAyMC41NTIzIDEyIDIwIDEyWiIgZmlsbD0iIzJjM2U2MyIvPgo8L3N2Zz4KCg==",TA=A.defineComponent({__name:"InviteUser",props:{isMobile:{type:Boolean,required:!0}},setup(o){const t=o.isMobile?to:eo,n=async()=>{r.update(s.CALL,a.SHOW_SELECT_USER,!0)};return(l,i)=>(A.openBlock(),A.createBlock(_,{icon:A.unref(t),text:A.unref(B)("invite member"),isMobile:o.isMobile,onClick:n},null,8,["icon","text","isMobile"]))}}),ao={class:"btn-operate"},no={class:"btn-operate"},oo={key:0,class:"btn-operate"},lo={class:"btn-operate"},ro={key:2,class:"control-wrapper-desktop"},so={class:"panel-button-area"},io={key:3,class:"control-wrapper-desktop"},co={class:"panel-button-area"},De="control-wrapper-mobile",me="black",Io=A.defineComponent({__name:"BtnOperate",setup(o){const e=A.ref(r.getData(s.CALL,a.CALL_ROLE)),t=A.ref(r.getData(s.CALL,a.CALL_MEDIA_TYPE)),n=A.ref(r.getData(s.CALL,a.CALL_STATUS)),l=A.ref(r.getData(s.CALL,a.IS_GROUP)),i=A.ref(r.getData(s.CALL,a.CALL_DURATION)),c=A.ref(r.getData(s.CALL,a.IS_CLICKABLE)),d=!X.isPC,I=X.isH5;let M=e.value===x.CALLER;const g=A.ref(r.getData(s.CALL,a.LOCAL_USER_INFO)),C=E=>{g.value=E},p=E=>{M=E===x.CALLER,e.value=E},N=E=>{l.value=E},u=E=>{t.value=E},D=E=>{n.value=E},y=E=>{i.value=E},L=E=>{c.value=E},w={[a.LOCAL_USER_INFO]:C,[a.CALL_ROLE]:p,[a.IS_GROUP]:N,[a.CALL_MEDIA_TYPE]:u,[a.CALL_STATUS]:D,[a.CALL_DURATION]:y,[a.IS_CLICKABLE]:L};return A.onMounted(()=>{r.watch(s.CALL,w,{notifyRangeWhenWatch:a.MYSELF})}),A.onUnmounted(()=>{r.unwatch(s.CALL,w)}),(E,z)=>(A.openBlock(),A.createElementBlock("div",null,[A.unref(n)===A.unref(j).CALLING&&d?(A.openBlock(),A.createElementBlock("div",{key:0,class:A.normalizeClass([De,me])},[A.createElementVNode("div",ao,[A.unref(M)?A.createCommentVNode("",!0):(A.openBlock(),A.createBlock(mA,{key:0,class:"mobile-reject","is-mobile":d})),A.unref(M)?A.createCommentVNode("",!0):(A.openBlock(),A.createBlock(DA,{key:1,class:"mobile-accept","is-mobile":d,"call-type":A.unref(t)},null,8,["call-type"])),A.unref(M)?(A.openBlock(),A.createBlock(TA,{key:2,class:"mobile-invite","is-mobile":d})):A.createCommentVNode("",!0),A.unref(M)?(A.openBlock(),A.createBlock(eA,{key:3,isGroupCall:A.unref(l),callType:A.unref(t),"is-mobile":d,isClickable:A.unref(c)},null,8,["isGroupCall","callType","isClickable"])):A.createCommentVNode("",!0)])],2)):A.createCommentVNode("",!0),A.unref(n)===A.unref(j).CONNECTED&&d?(A.openBlock(),A.createElementBlock("div",{key:1,class:A.normalizeClass([De,me])},[A.createElementVNode("div",no,[A.createVNode(kA,{"call-duration":A.unref(i),"call-type":A.unref(t)},null,8,["call-duration","call-type"])]),A.unref(t)===A.unref(T).VIDEO?(A.openBlock(),A.createElementBlock("div",oo,[A.createVNode(tA,{class:"btn","local-user-info":A.unref(g),"is-mobile":d},null,8,["local-user-info"]),A.unref(I)?A.createCommentVNode("",!0):(A.openBlock(),A.createBlock(EA,{key:0,class:"btn"})),A.createVNode(sA,{class:"btn","is-mobile":d})])):A.createCommentVNode("",!0),A.createElementVNode("div",lo,[A.unref(t)===A.unref(T).AUDIO?(A.openBlock(),A.createBlock(tA,{key:0,class:"btn","local-user-info":A.unref(g),"is-mobile":d},null,8,["local-user-info"])):A.createCommentVNode("",!0),A.createVNode(TA,{class:"btn","is-mobile":d}),A.createVNode(eA,{class:"btn","is-mobile":d,isGroupCall:A.unref(l),callType:A.unref(t),isClickable:A.unref(c)},null,8,["isGroupCall","callType","isClickable"]),A.unref(t)===A.unref(T).AUDIO&&!A.unref(I)?(A.openBlock(),A.createBlock(EA,{key:1,class:"btn"})):A.createCommentVNode("",!0)])],2)):A.createCommentVNode("",!0),A.unref(n)===A.unref(j).CALLING&&!d?(A.openBlock(),A.createElementBlock("div",ro,[A.createElementVNode("div",so,[A.unref(M)?A.createCommentVNode("",!0):(A.openBlock(),A.createBlock(mA,{key:0,class:"btn","is-mobile":d})),A.unref(M)?A.createCommentVNode("",!0):(A.openBlock(),A.createBlock(DA,{key:1,class:"btn","is-mobile":d,"call-type":A.unref(t)},null,8,["call-type"])),A.unref(t)===A.unref(T).VIDEO?(A.openBlock(),A.createBlock(sA,{key:2,class:"btn","is-mobile":d})):A.createCommentVNode("",!0),A.unref(M)?(A.openBlock(),A.createBlock(tA,{key:3,class:"btn","local-user-info":A.unref(g),"is-mobile":d},null,8,["local-user-info"])):A.createCommentVNode("",!0),A.unref(M)?(A.openBlock(),A.createBlock(TA,{key:4,class:"btn","is-mobile":d})):A.createCommentVNode("",!0),A.unref(M)?(A.openBlock(),A.createBlock(eA,{key:5,class:"btn",isGroupCall:A.unref(l),callType:A.unref(t),"is-mobile":d,isClickable:A.unref(c)},null,8,["isGroupCall","callType","isClickable"])):A.createCommentVNode("",!0)])])):A.createCommentVNode("",!0),A.unref(n)===A.unref(j).CONNECTED&&!d?(A.openBlock(),A.createElementBlock("div",io,[A.createElementVNode("div",co,[A.unref(t)===A.unref(T).VIDEO?(A.openBlock(),A.createBlock(sA,{key:0,class:"btn","is-mobile":d})):A.createCommentVNode("",!0),A.createVNode(tA,{class:"btn","local-user-info":A.unref(g),"is-mobile":d},null,8,["local-user-info"]),A.createVNode(TA,{class:"btn","is-mobile":d}),A.createVNode(eA,{class:"btn","is-mobile":d,isGroupCall:A.unref(l),callType:A.unref(t),isClickable:A.unref(c)},null,8,["isGroupCall","callType","isClickable"])])])):A.createCommentVNode("",!0)]))}}),ds="",Mo=V(Io,[["__scopeId","data-v-655fef75"]]),go={class:"swiper-item",name:"swiper-silder"},No=A.defineComponent({__name:"SwiperSlider",props:{index:{}},setup(o){return(e,t)=>(A.openBlock(),A.createElementBlock("div",go,[A.renderSlot(e.$slots,"default",{},void 0,!0)]))}}),Is="",Co=V(No,[["__scopeId","data-v-5b8dff3a"]]);var yA=(o=>(o.LEFT="left",o.RIGHT="right",o))(yA||{});function uo({pageCount:o}){const e=A.ref(),t=A.ref(),n=A.ref(0),l=A.ref(yA.RIGHT);function i(M){e.value=M.changedTouches[0].pageX,t.value=M.changedTouches[0].pageY}function c(){n.value=n.value+1}function d(){n.value=n.value-1}function I(M){const g=M.changedTouches[0].pageX-e.value;if(!(Math.abs(g)<5)){if(g<0){if(n.value===o.value-1)return;l.value=yA.LEFT,c()}if(g>0){if(n.value===0)return;l.value=yA.RIGHT,d()}}}return A.watch(o,()=>{o.value===1&&n.value!==0&&(n.value=0)}),A.onMounted(()=>{document.addEventListener("touchstart",i,!1),document.addEventListener("touchend",I,!1)}),A.onUnmounted(()=>{document.removeEventListener("touchstart",i,!1),document.removeEventListener("touchend",I,!1)}),{currentIndex:n,direction:l}}function po(o){const e=[];for(let t=0;t{const n=o.value.children,l=po(n);e.value.length!==l.length&&(e.value=l)};return A.onMounted(()=>{t()}),A.onUpdated(()=>{t()}),e}const fo={class:"swipe"},Do={key:0,class:"swipe-dots-container"},mo=A.defineComponent({__name:"Swiper",props:{grid:{}},setup(o){const e=A.ref(),t=Lo(e),n=o,l=A.computed(()=>{const{rows:p=1,cols:N=1}=(n==null?void 0:n.grid)||{};return p*N}),i=A.computed(()=>Math.ceil(t.value.length/l.value)),c=A.computed(()=>i.value>1),{direction:d,currentIndex:I}=uo({pageCount:i});function M({count:p,width:N,height:u,rows:D,cols:y,currentIndex:L}){const w=[],E=z=>Math.floor(z/(D*y));for(let z=0;z{const{width:D,height:y,top:L,left:w,visible:E}=p[u];N.style.top=L,N.style.left=w,N.style.width=D+"px",N.style.height=y+"px",N.style.visible=E})}return A.watch([t,I],()=>{var E;const p=e.value.clientWidth,{rows:N=1,cols:u=1}=(n==null?void 0:n.grid)||{},D=parseInt(p)/u,y=getComputedStyle((E=t.value)==null?void 0:E[0]),L=g(y,"height");e.value.style.height=`${N*L}px`;const w=M({count:t.value.length,width:D,height:L,rows:N,cols:u,currentIndex:I.value});C(w)}),A.provide("direction",d),(p,N)=>(A.openBlock(),A.createElementBlock("div",fo,[A.createElementVNode("div",{ref_key:"swiperContainerRef",ref:e,class:"swiper-sliders-container"},[A.renderSlot(p.$slots,"default")],512),A.unref(c)?(A.openBlock(),A.createElementBlock("div",Do,[(A.openBlock(!0),A.createElementBlock(A.Fragment,null,A.renderList(A.unref(i),u=>(A.openBlock(),A.createElementBlock("span",{key:u,class:A.normalizeClass(["swipe-dots",[A.unref(I)===u-1?"swipe-current-dots":""]])},null,2))),128))])):A.createCommentVNode("",!0)]))}}),Ms="",PA="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAMAAAC5zwKfAAAAsVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+3mHKcAAAAOnRSTlMAChshaFgmE25ORA9eSRa/sTLNloBjBlM/07qFKok2m3c786wukeTf3Kh07PCNe8fDtZ/o16Kl9/nJwyGDfwAABBtJREFUWMOs0cuKBSEMRVEfkEJFwUnKgQiC//+NHbvUWz1rbrKdLw5G/SNUUqGeIUppgZqiCKgvijwhUKeUCNwL+ZwxWxT4RCTuAwb2Qm2sXeIBOeJlqc9ENmhgg2aBgQOiBYA/E3ln1rYu0C6QdxUE8mZHvKjw/ZFh1Ed8TQyMe0CuswnCErViZPKghe+NQXG6MoGHJC8pVnq8QRKD4gU950NCtZrpXa3l3x7RItPD3NtDjhkobqaQt8lckQ3m3vshhxYY2GcP2JJil33pm+zA964y68vUfBB8OWQxfA+L95ssDflgIu+QVvGr0e9KRwGwRR+3OQS84CP1kDEJgMnFU9ECoD2gd00JNFx01BRdlQD77U5WAvTuUxIBaeG9XpAA3X1yWgK8XyB+aehXP53YbZdyQBjA8SFKYpWHNmRZ5aEQ6dn3/2D3NQy6262Nf6/qnH7nmplOEoBs8+gJTg5u7JIi9Mk2ffZcMn0pmiI0Ztt6HsrSvdYVIRJrTWBZuh/IX6DSuxQy4gWMVQ37gczVvZCKPfoSgKvSvvqBSYHPBKNu4aGhJtQxYj9wD2BVXDCIBlDDD6jfqQzDSxzHBBTRiAWMxAz6gONrFOPAu4RLhESm5jSO7wPmlwOIuKgw4Pk3U3E4jeru0UFUhUELf2UzgJG4Hue8dQ9RTbpjfKEXGo7hhM4jftwi/wCV4LE81QVXcxy37TwiF/sAluThmlSbgDXSlhl18wZHHyJkvEBlLNeKzrgbqESBT0jflciGrbnK2+J2sy6e4IdBQEg/1lDVXGg9x9nS73szPQCQkFFKNa87NQftuLe3kZaCYxgSMoAB6yhhyzXeTmUm73kf00AHkIgH6e5tQ6fiwIPM946anob68QhiRfoiumu8A7DyVFW13tnHtRHKei0GYaSg+0Yc4cDDovr9l8emR/BALMljIA8eLjS71jNN00qEl8umLV2GWtEfo4d41Wk9ED2Tf3o2I0HSb7c7UT/s0GNzVgWvHhBKFFWc/M6t5DRLQdQBxKLunyj0I0ozd/V8wEGKnWizj8fbOHWfplKWYrCeMZj+uj8TziTzlaAHKfkpcVh+SY8oakSvRcbaZJkkSVmGRbmaUQ4M+skHFcRqvgpUcPl5cz5B581qupckY28YpZg2M4bGED1pwlgqWXAN2rad56BtVqspDrwSrMTSW9HoaZSWlAOWntd4FbjC3v8gzBjaI/SiuWiRHXwOtuItlfUthV63Vj0C3q24Be9HzFJd4tGfjQTPs5LW+x3EoiybNHqntaMo9ytuwHbNUCpvFujNqIWq2C9AENPbhqU63ZU7dg7cTxACLrM7/36eL9nEPp3z5pSJaEiZtOL6/TVBzVjHA6sMczCbcbaYb9B6R894wbE8+7zJFU9lxl8D9Lp/VcLH/2j8UuYAAAAASUVORK5CYII=",Eo={class:"invite-calling-list"},To=["id"],yo={key:0,class:"invite-calling-item-loading"},So=["src"],ho={key:1,class:"tag"},Uo={class:"microphone-icon-container"},jo={class:"stream-userInfo"},zo=["src"],Vo={key:0,class:"invite-calling-item-id"},Oo=A.defineComponent({__name:"RemoteStreamList",props:{remoteList:{type:Array,required:!0},callStatus:{type:String,required:!0},localUserInfo:{type:Object,required:!0}},setup(o){const e=o,t=A.computed(()=>[e.localUserInfo,...e.remoteList]);function n(l){l.target.src=v}return(l,i)=>(A.openBlock(),A.createElementBlock("div",Eo,[A.createVNode(mo,{grid:{rows:2,cols:2}},{default:A.withCtx(()=>[(A.openBlock(!0),A.createElementBlock(A.Fragment,null,A.renderList(A.unref(t),(c,d)=>(A.openBlock(),A.createBlock(Co,{key:`${c.userId}`,index:d,class:"invite-calling-item"},{default:A.withCtx(()=>[A.createElementVNode("div",{id:c.domId,class:"invite-calling-item-message"},[!c.isEnter&&c.domId!=="localVideo"?(A.openBlock(),A.createElementBlock("div",yo,[A.createElementVNode("img",{src:A.unref(PA)},null,8,So)])):A.createCommentVNode("",!0),c.isEnter&&o.callStatus==="connected"||c.domId==="localVideo"?(A.openBlock(),A.createElementBlock("span",ho,[A.createElementVNode("div",Uo,[c.isAudioAvailable?(A.openBlock(),A.createBlock(lA,{key:0,volume:c.volume},null,8,["volume"])):(A.openBlock(),A.createBlock(rA,{key:1}))]),A.createElementVNode("div",jo,A.toDisplayString(c.domId==="localVideo"?A.unref(B)("me"):c.displayUserInfo),1)])):A.createCommentVNode("",!0)],8,To),A.createElementVNode("img",{class:"avatar",src:c.avatar||A.unref(v),onerror:n},null,8,zo),!c.isEnter&&c.domId!=="localVideo"?(A.openBlock(),A.createElementBlock("div",Vo,A.toDisplayString(c.nick||c.userId),1)):A.createCommentVNode("",!0)]),_:2},1032,["index"]))),128))]),_:1})]))}}),gs="",Bo=V(Oo,[["__scopeId","data-v-a3d705eb"]]),wo={class:"calling-wrapper"},bo={key:0,class:"user-view-text-container"},ko={class:"tag"},Po={class:"microphone-icon-container"},qo={class:"stream-userInfo"},Ro=["id"],xo={key:0,class:"invite-calling-item-loading"},Qo=["src"],Go={key:1,class:"user-view-text-container"},Xo={class:"tag"},Fo={class:"microphone-icon-container"},Wo={class:"stream-userInfo"},Yo=A.defineComponent({__name:"RemoteStreamList",props:{remoteList:{type:Array,required:!0},callStatus:{type:String,required:!0},callType:{type:Number,required:!0},localUserInfo:{type:Object,required:!0}},setup(o){const e=o,t=A.ref(1),n=A.ref([]),l=A.ref("group-user-view"),i=A.ref("group-calling-container"),c=A.ref("user-view-user-id");A.watch(n,async()=>{const I=n.value.length+1;l.value=`group-user-view group-user-view-${I}`,i.value=`group-calling-container group-calling-container-${I}`,c.value=`user-view-user-id user-view-user-id-${I}`},{flush:"post",deep:!0}),A.watchEffect(async()=>{await d()});async function d(){const I=[];for(let M=(t.value-1)*8;M(A.openBlock(),A.createElementBlock("div",wo,[A.createElementVNode("div",{class:A.normalizeClass(A.unref(i))},[A.createElementVNode("div",{id:"localVideo",class:A.normalizeClass(A.unref(l))},[o.callStatus!=="connected"||o.callType===A.unref(T).AUDIO?(A.openBlock(),A.createElementBlock("div",bo,[A.createElementVNode("div",{class:A.normalizeClass([A.unref(c),"localStream-userInfo"])},A.toDisplayString(o.localUserInfo.displayUserInfo),3)])):A.createCommentVNode("",!0),A.createElementVNode("span",ko,[A.createElementVNode("div",Po,[o.localUserInfo.isAudioAvailable?(A.openBlock(),A.createBlock(lA,{key:0,volume:o.localUserInfo.volume},null,8,["volume"])):(A.openBlock(),A.createBlock(rA,{key:1}))]),A.createElementVNode("div",qo,A.toDisplayString(o.localUserInfo.displayUserInfo)+A.toDisplayString(A.unref(B)("me")),1)])],2),(A.openBlock(!0),A.createElementBlock(A.Fragment,null,A.renderList(o.remoteList,g=>(A.openBlock(),A.createElementBlock("div",{id:g.domId,key:g.userId,class:A.normalizeClass(A.unref(l))},[A.createElementVNode("div",null,[g.isEnter?A.createCommentVNode("",!0):(A.openBlock(),A.createElementBlock("div",xo,[A.createElementVNode("img",{src:A.unref(PA)},null,8,Qo)])),o.callStatus!=="connected"||o.callType===A.unref(T).AUDIO?(A.openBlock(),A.createElementBlock("div",Go,[A.createElementVNode("div",{class:A.normalizeClass(["invite-userInfo",A.unref(c)])},A.toDisplayString(g.displayUserInfo),3)])):A.createCommentVNode("",!0)]),A.createElementVNode("span",Xo,[A.createElementVNode("div",Fo,[g.isAudioAvailable?(A.openBlock(),A.createBlock(lA,{key:0,volume:g.volume},null,8,["volume"])):(A.openBlock(),A.createBlock(rA,{key:1}))]),A.createElementVNode("div",Wo,A.toDisplayString(g.displayUserInfo),1)])],10,Ro))),128))],2)]))}}),Ns="",Cs="",Ko=V(Yo,[["__scopeId","data-v-5a91c8ad"]]);var SA=(o=>(o.LEFT="left",o.RIGHT="right",o))(SA||{});const Zo={class:"swiper-sliders-container"},vo={key:0,class:"swipe-dots-container"},Ho=A.defineComponent({__name:"Swiper",props:{grid:{},renderStreamList:{}},setup(o){const e=o,t=A.ref(SA.RIGHT),n=A.ref(0),l=A.ref(),i=A.ref(),c=A.computed(()=>{const{rows:y=1,cols:L=1}=(e==null?void 0:e.grid)||{};return y*L}),d=A.ref([]),I=A.ref(0),M=A.ref([]);A.watch(()=>e.renderStreamList,()=>{I.value=Math.ceil(e.renderStreamList.length/c.value),I.value===1&&(n.value=0);let y=[];for(let L=0;LparseInt(L)),console.log(e.renderStreamList,I.value)},{immediate:!0});const g=A.computed(()=>I.value>1),C=A.computed(()=>d.value.slice(n.value*c.value,n.value*c.value+c.value));function p(y){l.value=y.changedTouches[0].pageX,i.value=y.changedTouches[0].pageY}function N(){n.value=n.value+1}function u(){n.value=n.value-1}function D(y){const L=y.changedTouches[0].pageX-l.value;if(!(Math.abs(L)<5)){if(L<0){if(n.value===I.value-1)return;t.value=SA.LEFT,N()}if(L>0){if(n.value===0)return;t.value=SA.RIGHT,u()}}}return A.provide("showSliderList",C),A.provide("direction",t),(y,L)=>(A.openBlock(),A.createElementBlock("div",{class:"swipe",onTouchstart:p,onTouchend:D},[A.createElementVNode("div",Zo,[A.renderSlot(y.$slots,"default")]),A.unref(g)?(A.openBlock(),A.createElementBlock("div",vo,[(A.openBlock(!0),A.createElementBlock(A.Fragment,null,A.renderList(A.unref(M),w=>(A.openBlock(),A.createElementBlock("span",{key:w,class:A.normalizeClass(["swipe-dots",[A.unref(n)===w?"swipe-current-dots":""]])},null,2))),128))])):A.createCommentVNode("",!0)],32))}}),us="",Jo={options:{virtualHost:!0}},_o=A.defineComponent({...Jo,__name:"SwiperSlider",props:{index:{}},setup(o){const e=o,t=A.inject("showSliderList"),n=A.ref("0px"),l=A.ref("0px");A.watch(()=>e.index,()=>{n.value=e.index%2*50+"%",l.value=(e.index%4-1)*187+"px"},{immediate:!0});const i=A.computed(()=>{var c;switch(n.value=e.index%2*50+"%",e.index%4){case 0:case 1:l.value="0px";break;case 2:case 3:l.value="187px";break}return(c=t.value)==null?void 0:c.includes(e.index)});return(c,d)=>A.unref(i)?(A.openBlock(),A.createElementBlock("div",{key:0,class:"swiper-item",style:A.normalizeStyle({left:A.unref(n),top:A.unref(l)})},[A.renderSlot(c.$slots,"default",{},void 0,!0)],4)):A.createCommentVNode("",!0)}}),ps="",$o=V(_o,[["__scopeId","data-v-444f63bd"]]),Al={class:"invite-calling-list"},el={class:"invite-calling-item"},tl={key:0,class:"invite-calling-item-message"},al=["src"],nl=["src"],ol={class:"invite-calling-item-id"},ll={key:0,class:"pusher-box"},rl={key:0,class:"invite-calling-item-id"},sl={key:1,class:"player-container"},il={key:1,class:"invite-calling-item-id"},cl=A.defineComponent({__name:"RemoteStreamList",props:{remoteList:{type:Array,required:!0},callStatus:{type:String,required:!0},localUserInfo:{type:Object,required:!0},callType:{type:Number,required:!0}},setup(o){const e=A.ref(r.getData(s.CALL,a.PUSHER)),t=A.ref(r.getData(s.CALL,a.PLAYER)),n=A.ref(r.getData(s.CALL,a.IS_EAR_PHONE)?J.EAR:J.SPEAKER),l=A.ref({}),i=o,c=f=>{Object.assign(e.value,f)},d=f=>{Object.assign(t.value,f),l.value=C(t.value)},I=f=>{n.value=f?J.EAR:J.SPEAKER},M={[a.PUSHER]:c,[a.PLAYER]:d,[a.IS_EAR_PHONE]:I};A.onMounted(()=>{r.watch(s.CALL,M,{notifyRangeWhenWatch:a.MYSELF})}),A.onUnmounted(()=>{r.unwatch(s.CALL,M)});const g=A.computed(()=>[i.localUserInfo,...i.remoteList]);function C(f=[]){const S={};for(let O=0;O{const O=A.resolveComponent("live-pusher"),q=A.resolveComponent("live-player");return A.openBlock(),A.createElementBlock("div",Al,[A.createVNode(Ho,{class:"list-box","render-stream-list":A.unref(g),grid:{rows:2,cols:2}},{default:A.withCtx(()=>[(A.openBlock(!0),A.createElementBlock(A.Fragment,null,A.renderList(A.unref(g),(m,Q)=>(A.openBlock(),A.createBlock($o,{key:`${m.userId}`,userid:m.userId,index:Q,class:"invite-list"},{default:A.withCtx(()=>[A.createElementVNode("div",el,[!m.isEnter||o.callType===A.unref(T).AUDIO?(A.openBlock(),A.createElementBlock("div",tl,[m.isEnter?A.createCommentVNode("",!0):(A.openBlock(),A.createElementBlock("img",{key:0,class:"invite-calling-item-loading",src:A.unref(PA)},null,8,al)),A.createElementVNode("img",{class:"avatar",src:m.avatar||A.unref(v),onerror:p},null,8,nl),A.createElementVNode("div",ol,A.toDisplayString(m.displayUserInfo),1)])):A.createCommentVNode("",!0),m.isEnter?(A.openBlock(),A.createElementBlock("div",{key:1,class:A.normalizeClass(o.callType===A.unref(T).AUDIO?"invite-calling-audio":"invite-calling-item-stream")},[m.userId===o.localUserInfo.userId?(A.openBlock(),A.createElementBlock("div",ll,[A.createVNode(O,{class:"pusher",url:A.unref(e).url,mode:A.unref(e).mode,autopush:!0,"enable-camera":A.unref(e).enableCamera,"enable-mic":!0,muted:!A.unref(e).enableMic,"enable-agc":!0,"enable-ans":!0,"enable-ear-monitor":A.unref(e).enableEarMonitor,"auto-focus":"false",zoom:A.unref(e).enableZoom,"min-bitrate":A.unref(e).minBitrate,"max-bitrate":A.unref(e).maxBitrate,"video-width":A.unref(e).videoWidth,"video-height":A.unref(e).videoHeight,beauty:A.unref(e).beautyLevel,whiteness:A.unref(e).whitenessLevel,orientation:A.unref(e).videoOrientation,aspect:A.unref(e).videoAspect,"device-position":A.unref(e).frontCamera,"remote-mirror":A.unref(e).enableRemoteMirror,"local-mirror":A.unref(e).localMirror,"background-mute":A.unref(e).enableBackgroundMute,"audio-quality":A.unref(e).audioQuality,"audio-volume-type":A.unref(e).audioVolumeType,"audio-reverb-type":A.unref(e).audioReverbType,"waiting-img":A.unref(e).waitingImage,"beauty-style":A.unref(e).beautyStyle,filter:A.unref(e).filter,onStatechange:N,onNetstatus:u,onError:D,onAudiovolumenotify:y},null,8,["url","mode","enable-camera","muted","enable-ear-monitor","zoom","min-bitrate","max-bitrate","video-width","video-height","beauty","whiteness","orientation","aspect","device-position","remote-mirror","local-mirror","background-mute","audio-quality","audio-volume-type","audio-reverb-type","waiting-img","beauty-style","filter"]),o.callType!==A.unref(T).AUDIO?(A.openBlock(),A.createElementBlock("div",rl,A.toDisplayString(m.nick||m.userId),1)):A.createCommentVNode("",!0)])):(A.openBlock(),A.createElementBlock("div",sl,[A.unref(l)[m.userId]&&A.unref(l)[m.userId].userID===m.userId&&(A.unref(l)[m.userId].hasAudio||A.unref(l)[m.userId].hasVideo)?(A.openBlock(),A.createBlock(q,{key:0,class:"player",id:A.unref(l)[m.userId].id,"data-userid":A.unref(l)[m.userId].userID,"data-streamid":A.unref(l)[m.userId].streamID,"data-streamtype":A.unref(l)[m.userId].streamType,src:A.unref(l)[m.userId].src,mode:"RTC",autoplay:A.unref(l)[m.userId].autoplay,"mute-audio":A.unref(l)[m.userId].muteAudio,"mute-video":A.unref(l)[m.userId].muteVideo,orientation:A.unref(l)[m.userId].orientation,"object-fit":A.unref(l)[m.userId].objectFit,"background-mute":A.unref(l)[m.userId].enableBackgroundMute,"min-cache":A.unref(l)[m.userId].minCache,"max-cache":A.unref(l)[m.userId].maxCache,"sound-mode":A.unref(n),"enable-recv-message":A.unref(l)[m.userId].enableRecvMessage,"auto-pause-if-navigate":A.unref(l)[m.userId].autoPauseIfNavigate,"auto-pause-if-open-native":A.unref(l)[m.userId].autoPauseIfOpenNative,onStatechange:L,onFullscreenchange:w,onNetstatus:E,onAudiovolumenotify:z},null,8,["id","data-userid","data-streamid","data-streamtype","src","autoplay","mute-audio","mute-video","orientation","object-fit","background-mute","min-cache","max-cache","sound-mode","enable-recv-message","auto-pause-if-navigate","auto-pause-if-open-native"])):A.createCommentVNode("",!0),o.callType!==A.unref(T).AUDIO?(A.openBlock(),A.createElementBlock("div",il,A.toDisplayString(m.displayUserInfo),1)):A.createCommentVNode("",!0)]))],2)):A.createCommentVNode("",!0)])]),_:2},1032,["userid","index"]))),128))]),_:1},8,["render-stream-list"])])}}}),Ls="",dl=V(cl,[["__scopeId","data-v-8c218c4b"]]),Il={class:"streamBox"},Ml=A.defineComponent({__name:"PusherPlayer",setup(o){const e=A.ref(r.getData(s.CALL,a.CALL_STATUS)),t=A.ref(r.getData(s.CALL,a.REMOTE_USER_INFO_LIST)),n=A.ref(r.getData(s.CALL,a.LOCAL_USER_INFO)),l=A.ref(r.getData(s.CALL,a.CALL_MEDIA_TYPE)),i=!X.isPC,c=X.isWeChat,d=p=>{n.value=p},I=p=>{t.value=p},M=p=>{e.value=p},g=p=>{l.value=p},C={[a.LOCAL_USER_INFO]:d,[a.REMOTE_USER_INFO_LIST]:I,[a.CALL_STATUS]:M,[a.CALL_MEDIA_TYPE]:g};return A.onMounted(()=>{r.watch(s.CALL,C,{notifyRangeWhenWatch:a.MYSELF})}),A.onUnmounted(()=>{r.unwatch(s.CALL,C)}),(p,N)=>(A.openBlock(),A.createElementBlock("div",Il,[A.unref(t).length!==0&&i&&!A.unref(c)?(A.openBlock(),A.createBlock(Bo,{key:0,"local-user-info":A.unref(n),"remote-list":A.unref(t),"call-status":A.unref(e)},null,8,["local-user-info","remote-list","call-status"])):A.createCommentVNode("",!0),A.unref(t).length!==0&&!i&&!A.unref(c)?(A.openBlock(),A.createBlock(Ko,{key:1,"local-user-info":A.unref(n),"remote-list":A.unref(t),"call-status":A.unref(e),"call-type":A.unref(l)},null,8,["local-user-info","remote-list","call-status","call-type"])):A.createCommentVNode("",!0),i&&A.unref(c)?(A.openBlock(),A.createBlock(dl,{key:2,"local-user-info":A.unref(n),"remote-list":A.unref(t),"call-status":A.unref(e),"call-type":A.unref(l)},null,8,["local-user-info","remote-list","call-status","call-type"])):A.createCommentVNode("",!0)]))}}),fs="",gl=V(Ml,[["__scopeId","data-v-3308cc63"]]),Nl={key:0,class:"dialog-main-header"},Cl={class:"dialog-main-title"},ul={key:1,class:"dialog-main-footer"},pl=A.defineComponent({__name:"TDialog",props:{moduleValue:{type:Boolean,default:!1},isHeaderShow:{type:Boolean,default:!0},isFooterShow:{type:Boolean,default:!0},background:{type:Boolean,default:!0},title:{type:String,default:""},center:{type:Boolean,default:!1},isH5:{type:Boolean,default:!1}},emits:["update:moduleValue","submit"],setup(o,{emit:e}){const t={OUTSIDE:"outside",INSIDE:"inside"},n=o,l=A.ref(!0),i=A.ref(!0),c=A.ref(!0),d=A.ref("");A.watchEffect(()=>{d.value=n.title,l.value=n.isHeaderShow,i.value=n.isFooterShow,c.value=n.background});const I=e,M=p=>{p===t.OUTSIDE&&g()},g=()=>{I("update:moduleValue",!1)},C=()=>{I("submit"),g()};return(p,N)=>o.moduleValue?(A.openBlock(),A.createElementBlock("div",{key:0,class:A.normalizeClass(["dialog",[n.isH5?"dialog-h5":"",o.center?"center":""]]),onClick:N[1]||(N[1]=A.withModifiers(u=>M(t.OUTSIDE),["stop","prevent"]))},[A.createElementVNode("main",{class:A.normalizeClass(["dialog-main",[A.unref(c)?"":"dialog-main-back"]]),onClick:N[0]||(N[0]=A.withModifiers(u=>M(t.INSIDE),["stop","prevent"]))},[A.unref(l)?(A.openBlock(),A.createElementBlock("header",Nl,[A.createElementVNode("h1",Cl,A.toDisplayString(A.unref(d)),1),A.createElementVNode("i",{class:"icon icon-close",onClick:g})])):A.createCommentVNode("",!0),A.createElementVNode("div",{class:A.normalizeClass(["dialog-main-content",[n.isH5?"dialog-main-content-uniapp":""]])},[A.renderSlot(p.$slots,"default",{},void 0,!0)],2),A.unref(i)?(A.openBlock(),A.createElementBlock("footer",ul,[A.createElementVNode("button",{class:"btn btn-cancel",onClick:g},A.toDisplayString(A.unref(B)("Cancel")),1),A.createElementVNode("button",{class:"btn btn-default",onClick:C},A.toDisplayString(A.unref(B)("Done")),1)])):A.createCommentVNode("",!0)],2)],2)):A.createCommentVNode("",!0)}}),Ds="",Ll=V(pl,[["__scopeId","data-v-7a89cdf3"]]),fl=["src"],Dl=["src"],ml=A.defineComponent({__name:"TIcon",props:{file:{type:String,default:""},width:{type:String,default:"20px"},height:{type:String,default:"20px"},isApp:{type:Boolean,default:!1}},emits:["click"],setup(o,{emit:e}){const t=e,n=o,l=()=>{t("click")};return(i,c)=>(A.openBlock(),A.createElementBlock("div",{class:"icon",onClick:l},[n.isApp?(A.openBlock(),A.createElementBlock("image",{key:0,class:"icon",src:n.file,style:A.normalizeStyle({width:n.width,height:n.height})},null,12,fl)):(A.openBlock(),A.createElementBlock("img",{key:1,class:"icon",src:n.file,style:A.normalizeStyle({width:n.width,height:n.height})},null,12,Dl))]))}}),ms="",hA=V(ml,[["__scopeId","data-v-b989a330"]]),Ee="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTZweCIgaGVpZ2h0PSIxNnB4IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSI+CiAgPHRpdGxlPue8lue7hCAxNDwvdGl0bGU+CiAgPGRlZnM+CiAgICA8ZmlsdGVyIHg9Ii0xMC42JSIgeT0iLTUuNCUiIHdpZHRoPSIxMjEuMiUiIGhlaWdodD0iMTEwLjklIiBmaWx0ZXJVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIGlkPSJmaWx0ZXItMSI+CiAgICAgIDxmZU9mZnNldCBkeD0iMCIgZHk9IjciIGluPSJTb3VyY2VBbHBoYSIgcmVzdWx0PSJzaGFkb3dPZmZzZXRPdXRlcjEiPjwvZmVPZmZzZXQ+CiAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjEwIiBpbj0ic2hhZG93T2Zmc2V0T3V0ZXIxIiByZXN1bHQ9InNoYWRvd0JsdXJPdXRlcjEiPjwvZmVHYXVzc2lhbkJsdXI+CiAgICAgIDxmZUNvbG9yTWF0cml4IHZhbHVlcz0iMCAwIDAgMCAwICAgMCAwIDAgMCAwICAgMCAwIDAgMCAwICAwIDAgMCAwLjEgMCIgdHlwZT0ibWF0cml4IiBpbj0ic2hhZG93Qmx1ck91dGVyMSIgcmVzdWx0PSJzaGFkb3dNYXRyaXhPdXRlcjEiPjwvZmVDb2xvck1hdHJpeD4KICAgICAgPGZlTWVyZ2U+CiAgICAgICAgPGZlTWVyZ2VOb2RlIGluPSJzaGFkb3dNYXRyaXhPdXRlcjEiPjwvZmVNZXJnZU5vZGU+CiAgICAgICAgPGZlTWVyZ2VOb2RlIGluPSJTb3VyY2VHcmFwaGljIj48L2ZlTWVyZ2VOb2RlPgogICAgICA8L2ZlTWVyZ2U+CiAgICA8L2ZpbHRlcj4KICA8L2RlZnM+CiAgPGcgaWQ9Im5ldyIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICA8ZyBpZD0i6Ieq5a6a5LmJ5raI5oGvIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNDU4LjAwMDAwMCwgLTMxOC4wMDAwMDApIj4KICAgICAgPGcgaWQ9Iue8lue7hC0zMiIgZmlsdGVyPSJ1cmwoI2ZpbHRlci0xKSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDQuMDAwMDAwLCA2MC4wMDAwMDApIj4KICAgICAgICA8ZyBpZD0i57yW57uELTI0IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMC4wMDAwMDAsIDI1MC4wMDAwMDApIj4KICAgICAgICAgIDxnIGlkPSLnvJbnu4QtMTQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDM4NC4wMDAwMDAsIDguMDAwMDAwKSI+CiAgICAgICAgICAgIDxjaXJjbGUgaWQ9IuakreWchuW9oiIgZmlsbD0iIzAwNkVGRiIgZmlsbC1ydWxlPSJub256ZXJvIiBjeD0iOCIgY3k9IjgiIHI9IjgiPjwvY2lyY2xlPgogICAgICAgICAgICA8cG9seWxpbmUgaWQ9Iui3r+W+hC00IiBzdHJva2U9IiNGRkZGRkYiIHN0cm9rZS13aWR0aD0iMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOC4wNDI2NDEsIDYuMjQyNjQxKSByb3RhdGUoLTMxNS4wMDAwMDApIHRyYW5zbGF0ZSgtOC4wNDI2NDEsIC02LjI0MjY0MSkgIiBwb2ludHM9IjYuMDQyNjQwNjkgMTAuMjQyNjQwNyAxMC4wNDI2NDA3IDEwLjI0MjY0MDcgMTAuMDQyNjQwNyAyLjI0MjY0MDY5Ij48L3BvbHlsaW5lPgogICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgICAgPC9nPgogICAgPC9nPgogIDwvZz4KPC9zdmc+Cg==",El="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iNDhweCIgaGVpZ2h0PSI0OHB4IiB2aWV3Qm94PSIwIDAgNDggNDgiIHZlcnNpb249IjEuMSI+CiAgPHRpdGxlPmljX2JhY2tfd2hpdGU8L3RpdGxlPgogIDxnIGlkPSLpobXpnaItMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICA8ZyBpZD0iMDIuLeafpeeci+S/oeaBry3npLrkvovlpb3lj4siIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0zMi4wMDAwMDAsIC0yMDAuMDAwMDAwKSI+CiAgICAgIDxnIGlkPSLnvJbnu4QtNiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsIDE3Ni4wMDAwMDApIj4KICAgICAgICA8ZyBpZD0iaWNfYmFja193aGl0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzIuMDAwMDAwLCAyNC4wMDAwMDApIj4KICAgICAgICAgIDxnIGlkPSJpY19iYWNrX2JsYWNrIiBmaWxsPSIjNDQ0NDQ0IiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cGF0aCBkPSJNOS41MTIzMTA3MSwyNCBMMjMuNTE5ODI4NiwzOC43MjkwNDExIEMyMy43ODUzNzgsMzkuMDA4MjY4OSAyMy43NzUzMTY4LDM5LjQ0OTYwODIgMjMuNDk3MzE4NywzOS43MTY0NDQ4IEwyMS42MjU1OTE1LDQxLjUxMzAyMjYgQzIxLjM0NjY4MjcsNDEuNzgwNzMzMiAyMC45MDM1NjAyLDQxLjc3MTY1NTMgMjAuNjM1ODQ5Niw0MS40OTI3NDY2IEMyMC42MzUxMDMyLDQxLjQ5MTk2OSAyMC42MzQzNTg2LDQxLjQ5MTE4OTYgMjAuNjMzNjE1Nyw0MS40OTA0MDg1IEw0LjQ1ODc2Mzk5LDI0LjQ4MjM5NDggQzQuMjAxNzU0NCwyNC4yMTIxNDY3IDQuMjAxNzU0NCwyMy43ODc4NTMzIDQuNDU4NzYzOTksMjMuNTE3NjA1MiBMMjAuNjMzNjE1Nyw2LjUwOTU5MTUyIEMyMC45MDAwMzUsNi4yMjk0NDkwNiAyMS4zNDMxMTA5LDYuMjE4MzI0MjIgMjEuNjIzMjUzMyw2LjQ4NDc0MzUxIEMyMS42MjQwMzQ0LDYuNDg1NDg2MzQgMjEuNjI0ODEzOCw2LjQ4NjIzMDk3IDIxLjYyNTU5MTUsNi40ODY5Nzc0MSBMMjMuNDk3MzE4Nyw4LjI4MzU1NTI0IEMyMy43NzUzMTY4LDguNTUwMzkxNzUgMjMuNzg1Mzc4LDguOTkxNzMxMTQgMjMuNTE5ODI4Niw5LjI3MDk1ODkzIEw5LjUxMjMxMDcxLDI0IEw5LjUxMjMxMDcxLDI0IFoiIGlkPSJQYXRoLTIiPjwvcGF0aD4KICAgICAgICAgIDwvZz4KICAgICAgICAgIDxyZWN0IGlkPSLnn6nlvaIiIHg9IjAiIHk9IjAiIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PC9yZWN0PgogICAgICAgIDwvZz4KICAgICAgPC9nPgogICAgPC9nPgogIDwvZz4KPC9zdmc+Cg==",Tl="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTZweCIgaGVpZ2h0PSIxNnB4IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSI+CiAgPHRpdGxlPua4hemZpDwvdGl0bGU+CiAgPGcgaWQ9Iumhtemdoi0y5aSH5Lu9IiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgIDxnIGlkPSLliJvlu7rnvqTogYoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMjQzLjAwMDAwMCwgLTQxMy4wMDAwMDApIj4KICAgICAgPGcgaWQ9Ikdyb3VwLTEzNjQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDY1MC4wMDAwMDAsIDM0My4wMDAwMDApIj4KICAgICAgICA8ZyBpZD0iR3JvdXAtMTM2MyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjkwLjAwMDAwMCwgNDYuMDAwMDAwKSI+CiAgICAgICAgICA8ZyBpZD0iR3JvdXAtMTM1OCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsIDI0LjAwMDAwMCkiPgogICAgICAgICAgICA8ZyBpZD0i5riF6ZmkIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMDMuMDAwMDAwLCAwLjAwMDAwMCkiPgogICAgICAgICAgICAgIDxwYXRoIGQ9Ik0wLDAgTDE2LDAgTDE2LDE2IEwwLDE2IEwwLDAgWiIgaWQ9IuefqeW9oiI+PC9wYXRoPgogICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xLDggQzEsMTEuODY1OTk5OSA0LjEzNDAwMDA2LDE1IDgsMTUgQzExLjg2NTk5OTksMTUgMTUsMTEuODY1OTk5OSAxNSw4IEMxNSw0LjEzNDAwMDA2IDExLjg2NTk5OTksMSA4LDEgTDgsMSBDNC4xMzQwMDAwNiwxIDEsNC4xMzQwMDAwNiAxLDggWiIgZmlsbD0iIzk5OTk5OSI+PC9wYXRoPgogICAgICAgICAgICAgIDxnIGlkPSLnvJbnu4QiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDguMDAwMDAwLCA4LjAwMDAwMCkgcm90YXRlKC0zMTUuMDAwMDAwKSB0cmFuc2xhdGUoLTguMDAwMDAwLCAtOC4wMDAwMDApIHRyYW5zbGF0ZSg0LjAwMDAwMCwgNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSLnn6nlvaLlpIfku70iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQuMDAwMDAwLCA0LjAwMDAwMCkgcm90YXRlKC05MC4wMDAwMDApIHRyYW5zbGF0ZSgtNC4wMDAwMDAsIC00LjAwMDAwMCkgIiB4PSIxLjgxODk4OTRlLTEyIiB5PSIzLjUiIHdpZHRoPSI4IiBoZWlnaHQ9IjEiIHJ4PSIwLjUiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSLnn6nlvaLlpIfku70iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQuMDAwMDAwLCA0LjAwMDAwMCkgcm90YXRlKC0zNjAuMDAwMDAwKSB0cmFuc2xhdGUoLTQuMDAwMDAwLCAtNC4wMDAwMDApICIgeD0iMCIgeT0iMy41IiB3aWR0aD0iOCIgaGVpZ2h0PSIxIiByeD0iMC41Ij48L3JlY3Q+CiAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgIDxyZWN0IGlkPSLnn6nlvaIiIHg9IjAiIHk9IjAiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PC9yZWN0PgogICAgICAgICAgICA8L2c+CiAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgICA8L2c+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K",yl=o=>(A.pushScopeId("data-v-216330b4"),o=o(),A.popScopeId(),o),Sl={class:"title"},hl=yl(()=>A.createElementVNode("span",{class:"space"},null,-1)),Ul={class:"main"},jl={class:"left"},zl={class:"transfer-header"},Vl=["value","placeholder"],Ol=["placeholder","value"],Bl={class:"transfer-left-main"},wl={class:"transfer-list"},bl={key:1,class:"icon-unselected"},kl={class:"select-all"},Pl=["onClick"],ql=["src"],Rl={class:"name"},xl={key:0},Ql={class:"right"},Gl={key:0,class:"transfer-header"},Xl={key:1,class:"transfer-list"},Fl={key:0,class:"transfer-text"},Wl={class:"transfer-list-item-content"},Yl=["src"],Kl={key:0,class:"name"},Zl=["onClick"],vl={class:"transfer-right-footer"},Hl=A.defineComponent({__name:"TTransfer",props:{list:{type:Array,default:()=>[]},selectedList:{type:Array,default:()=>[]},isSearch:{type:Boolean,default:!0},isRadio:{type:Boolean,default:!1},isCustomItem:{type:Boolean,default:!1},title:{type:String,default:""},type:{type:String,default:""},resultShow:{type:Boolean,default:!0},total:{type:Number,default:0},isH5:{type:Boolean,default:!1}},emits:["search","submit","cancel","getMore"],setup(o,{emit:e}){const t=o,n=e,l=A.ref(""),i=A.ref([]),c=A.ref(0),d=A.ref([]),I=A.ref(!0),M=A.ref(!1),g=A.ref(""),C=A.ref("");A.watchEffect(()=>{const{list:E,isCustomItem:z,isSearch:f,title:S,total:O,selectedList:q}=t;if(z)for(let m=0;m-1&&E.splice(m,1),i.value=E;else i.value=E;c.value=O||E.length,d.value=q&&q.length>0?q:d.value,I.value=f,M.value=z,g.value=S,l.value=t.type});const p=A.computed(()=>i.value.filter(E=>!E.isDisabled)),N=E=>{C.value=E.target.value,n("search",E.target.value)},u=E=>{if(E.isDisabled)return;let z=d.value;const f=z.indexOf(E);if(f>-1)return d.value.splice(f,1);t.isRadio&&(z=[]),z.push(E),d.value=z},D=()=>{d.value.length===p.value.length?d.value=[]:d.value=[...p.value]},y=()=>{n("submit",d.value),C.value="",d.value=[]},L=()=>{n("cancel"),C.value="",d.value=[]},w=()=>{n("getMore")};return(E,z)=>(A.openBlock(),A.createElementBlock("div",{class:A.normalizeClass(["transfer",[t.isH5?"transfer-h5":""]])},[t.isH5?(A.openBlock(),A.createElementBlock("header",{key:0,class:"transfer-header transfer-h5-header",onClick:L},[A.createVNode(hA,{class:"icon",file:A.unref(El),width:"18px",height:"18px"},null,8,["file"]),A.createElementVNode("span",Sl,A.toDisplayString(A.unref(g)),1),hl])):A.createCommentVNode("",!0),A.createElementVNode("main",Ul,[A.createElementVNode("div",jl,[A.createElementVNode("header",zl,[!t.isH5&&A.unref(I)?(A.openBlock(),A.createElementBlock("input",{key:0,type:"text",value:A.unref(C),onKeyup:A.withKeys(N,["enter"]),placeholder:A.unref(B)("Please enter userID"),enterkeyhint:"search",class:A.normalizeClass([t.isH5?"left-uniapp-input":""])},null,42,Vl)):A.createCommentVNode("",!0),t.isH5&&A.unref(I)?(A.openBlock(),A.createElementBlock("input",{key:1,type:"text",onBlur:N,onConfirm:N,placeholder:A.unref(B)("Please enter userID"),enterkeyhint:"search",value:A.unref(C),class:A.normalizeClass([t.isH5?"left-uniapp-input":""])},null,42,Ol)):A.createCommentVNode("",!0)]),A.createElementVNode("main",Bl,[A.createElementVNode("ul",wl,[A.unref(p).length>1&&!o.isRadio?(A.openBlock(),A.createElementBlock("li",{key:0,class:"transfer-list-item",onClick:D},[A.unref(d).length===A.unref(p).length?(A.openBlock(),A.createBlock(hA,{key:0,file:A.unref(Ee),width:"18px",height:"18px"},null,8,["file"])):(A.openBlock(),A.createElementBlock("i",bl)),A.createElementVNode("span",kl,A.toDisplayString(A.unref(B)("Select all")),1)])):A.createCommentVNode("",!0),(A.openBlock(!0),A.createElementBlock(A.Fragment,null,A.renderList(A.unref(i),f=>(A.openBlock(),A.createElementBlock("li",{class:"transfer-list-item",key:f.userID,onClick:S=>u(f)},[A.unref(d).indexOf(f)>-1?(A.openBlock(),A.createBlock(hA,{key:0,file:A.unref(Ee),class:A.normalizeClass([f.isDisabled&&"disabled"]),width:"18px",height:"18px"},null,8,["file","class"])):(A.openBlock(),A.createElementBlock("i",{key:1,class:A.normalizeClass([f.isDisabled&&"disabled","icon-unselected"])},null,2)),A.unref(M)?A.renderSlot(E.$slots,"left",{key:3,data:f},void 0,!0):(A.openBlock(),A.createElementBlock(A.Fragment,{key:2},[A.createElementVNode("img",{class:"avatar",src:f.avatar||"https://web.sdk.qcloud.com/component/TUIKit/assets/avatar_21.png",onerror:"this.src='https://web.sdk.qcloud.com/component/TUIKit/assets/avatar_21.png'"},null,8,ql),A.createElementVNode("span",Rl,A.toDisplayString(f.nick||f.userID),1),f.isDisabled?(A.openBlock(),A.createElementBlock("span",xl)):A.createCommentVNode("",!0)],64))],8,Pl))),128)),A.unref(c)>A.unref(i).length?(A.openBlock(),A.createElementBlock("li",{key:1,class:"transfer-list-item more",onClick:w},A.toDisplayString(A.unref(B)("View more")),1)):A.createCommentVNode("",!0)])])]),A.createElementVNode("div",Ql,[t.isH5?A.createCommentVNode("",!0):(A.openBlock(),A.createElementBlock("header",Gl,A.toDisplayString(A.unref(g)),1)),o.resultShow?(A.openBlock(),A.createElementBlock("ul",Xl,[A.unref(d).length>0&&!t.isH5?(A.openBlock(),A.createElementBlock("p",Fl,A.toDisplayString(A.unref(d).length)+" "+A.toDisplayString(A.unref(B)("people selected")),1)):A.createCommentVNode("",!0),(A.openBlock(!0),A.createElementBlock(A.Fragment,null,A.renderList(A.unref(d),(f,S)=>(A.openBlock(),A.createElementBlock("li",{class:"transfer-list-item space-between",key:S},[A.createElementVNode("aside",Wl,[A.unref(M)?A.renderSlot(E.$slots,"right",{key:1,data:f},void 0,!0):(A.openBlock(),A.createElementBlock(A.Fragment,{key:0},[A.createElementVNode("img",{class:"avatar",src:f.avatar||"https://web.sdk.qcloud.com/component/TUIKit/assets/avatar_21.png",onerror:"this.src='https://web.sdk.qcloud.com/component/TUIKit/assets/avatar_21.png'"},null,8,Yl),t.isH5?A.createCommentVNode("",!0):(A.openBlock(),A.createElementBlock("span",Kl,A.toDisplayString(f.nick||f.userID),1))],64))]),t.isH5?A.createCommentVNode("",!0):(A.openBlock(),A.createElementBlock("span",{key:0,onClick:O=>u(f)},[A.createVNode(hA,{file:A.unref(Tl),width:"18px",height:"18px"},null,8,["file"])],8,Zl))]))),128))])):A.createCommentVNode("",!0),A.createElementVNode("footer",vl,[A.createElementVNode("button",{class:"btn btn-cancel",onClick:L},A.toDisplayString(A.unref(B)("Cancel")),1),A.unref(d).length>0?(A.openBlock(),A.createElementBlock("button",{key:0,class:"btn",onClick:y},A.toDisplayString(A.unref(B)("Done")),1)):(A.openBlock(),A.createElementBlock("button",{key:1,class:"btn btn-no",onClick:y},A.toDisplayString(A.unref(B)("Done")),1))])])])],2))}}),Es="",Jl=V(Hl,[["__scopeId","data-v-216330b4"]]),_l=A.defineComponent({__name:"SelectUser",props:{isRadio:{type:Boolean,default:!1},isNeedSearch:{type:Boolean,default:!1},title:{type:String,default:""},userList:{type:Array,default:()=>[]},total:{type:Number,default:0},isShow:{type:Boolean,default:!1},isPC:{type:Boolean,default:!0}},emits:["complete","search","getMore","update:isShow"],setup(o,{emit:e}){const t=e,n=o,l=A.ref(!1);A.watchEffect(()=>{l.value=n.isShow});const i=()=>{l.value=!l.value,t("complete",[]),t("update:isShow",l.value)},c=M=>{t("complete",M)},d=M=>{t("search",M)},I=()=>{t("getMore")};return(M,g)=>(A.openBlock(),A.createBlock(Ll,{moduleValue:A.unref(l),isH5:!o.isPC,isHeaderShow:!1,isFooterShow:!1,background:!1,"onUpdate:moduleValue":i},{default:A.withCtx(()=>[A.createVNode(Jl,{isSearch:n.isNeedSearch,title:n.title,list:n.userList,isH5:!o.isPC,isRadio:n.isRadio,total:n.total,onGetMore:I,onSearch:d,onSubmit:c,onCancel:i},null,8,["isSearch","title","list","isH5","isRadio","total"])]),_:1},8,["moduleValue","isH5"]))}}),$l={key:0},Te=30,Ar=A.defineComponent({__name:"GroupCall",setup(o){const e=A.ref(r.getData(s.CALL,a.CALL_ROLE)),t=A.ref(r.getData(s.CALL,a.CALL_STATUS)),n=A.ref(r.getData(s.CALL,a.CALL_MEDIA_TYPE)),l=!X.isPC,i=l?"":"group-deskTop",c=A.ref(r.getData(s.CALL,a.LOCAL_USER_INFO)),d=A.ref(r.getData(s.CALL,a.REMOTE_USER_INFO_LIST)),I=A.ref(!1),M=A.ref(0),g=A.ref([]),C=A.ref([]),p=A.ref(0);A.onMounted(()=>{r.watch(s.CALL,E,{notifyRangeWhenWatch:a.MYSELF})}),A.onUnmounted(()=>{r.unwatch(s.CALL,E)});const N=m=>{t.value=m},u=m=>{n.value=m},D=m=>{e.value=m},y=m=>{c.value=m},L=m=>{d.value=m},w=async m=>{if(I.value=m,I.value){await S();const Q=await h.getGroupProfile();M.value=Q.memberCount}},E={[a.CALL_STATUS]:N,[a.CALL_MEDIA_TYPE]:u,[a.CALL_ROLE]:D,[a.SHOW_SELECT_USER]:w,[a.LOCAL_USER_INFO]:y,[a.REMOTE_USER_INFO_LIST]:L},z=()=>{I.value=!1,r.update(s.CALL,a.SHOW_SELECT_USER,!1),p.value=0,g.value=[]},f=async()=>{p.value+=Te,await S()},S=async()=>{const m=await h.getGroupMemberList(Te,p.value),Q=[...d.value,c.value].map(b=>b.userId);g.value.push(...m),g.value=g.value.map(b=>(Q.includes(b.userID)&&(b={...b,isDisabled:!0}),b)),C.value=g.value},O=async m=>{try{if(m.length<=0)return;I.value=!1,r.update(s.CALL,a.SHOW_SELECT_USER,!1),p.value=0;const Q=m.map(b=>b.userID);await h.inviteUser({userIDList:Q}),g.value=[]}catch(Q){console.debug(Q)}},q=m=>{m?g.value=g.value.filter(Q=>Q.userID.includes(m)||Q.nick.includes(m)):g.value=C.value};return(m,Q)=>(A.openBlock(),A.createElementBlock("div",{class:A.normalizeClass(A.unref(i))},[A.createVNode(_l,{isShow:A.unref(I),isNeedSearch:!0,userList:A.unref(g),isPC:!l,total:A.unref(M),onGetMore:f,onComplete:O,onSearch:q,"onUpdate:isShow":z},null,8,["isShow","userList","isPC","total"]),A.unref(t)===A.unref(j).CALLING&&A.unref(e)!==A.unref(x).CALLER?(A.openBlock(),A.createElementBlock("div",$l,[A.createVNode(Ao)])):A.createCommentVNode("",!0),A.unref(t)===A.unref(j).CONNECTED||A.unref(e)===A.unref(x).CALLER?(A.openBlock(),A.createBlock(gl,{key:1})):A.createCommentVNode("",!0),A.createVNode(Mo)],2))}}),Ts="",er=V(Ar,[["__scopeId","data-v-06420ee0"]]),tr={},ar={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg","data-v-ea893728":""},nr=[A.createElementVNode("path",{fill:"currentColor",d:"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"},null,-1)];function or(o,e){return A.openBlock(),A.createElementBlock("svg",ar,nr)}const lr=V(tr,[["render",or]]),ye="data:image/jpeg;base64,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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApo2cKDRs4UCFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBRI2cKACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACjn21JtIu7eBkBju7iF3cQGQGO7uIXdxAZAY7u4hd3EBkBju7iF3cQGQGO7uIXdxAZAY7u4hd3EBkBju7iF3cQGQGO7uIXdxAZAY7u4hd3EBkBju7iF3cQGQGO7uIXdxAZAY7u4hd3EBkBju7iF3cQGQGO7uIXdxAZAY7u4hd3EBkBju7iF3cQGQGO7uIXdxAZAY7u4hd3EBkBju7iF3cQGQGO7uIXdxAZAY7u4hd3EBkBju7iF3cQGQGO7uIXdxAZAY7u4hd3EBkBjzO36y6QyKmt6J+FwJA0D/AEvwjQP9L8IADQP9L8I0D/S/CAA0D/S/CNA/0vwgANA/0vwjQP8AS/CAA0D/AEvwjQv9L8IAFVzRr59lTehYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvYACMyDMgEgjMgzIBIIzIMyASCMyDMgEgjMgzIBIIzIMyASCMyDMgEgjMgzIBIIzIMyASCMyDMgEgjMgzIBIIzIMyASCMyDMgEgjMgzIBIIzIMyASCMyDMgEgjMgzIBIIzIMyASCMyDMgEgjMgzIBIIzIMyASCMyDMgEgjMgzIBiTeWKt2FgBqYhUVFLG2aGFJY2r+9S/nW9htmjiNRV0zFkghjkiYxXPVzrKlgKTVlU+FKmjjikp1Zmu/Nm7ENJMarH6NIY6aZ79jI3OV347vxK1sj6mooVSKVySU+dYon5TTp6f8AfVato6lVa7+WWyt9+8D1MSyLExZURslvORF1IpyqXEMSq4EmhpIVY69ryWNrBHK/CadXKrlVF1qvtU5uDUlXLhsb4q90LFVbMSNFtrA2KbEcSq2OfFSQqjXK1byW1obOG1s1U+ojnibG+FyNVGrc52EUtXJTyLFXuiRJXIqJGi3XebOCMfHVYgySRZHpI271S19QHXAAFVWyom8sUXpt/EuAKSzRwMzyyNjbvctkLlJYo5mZJY2yN3ObdANKsxKDksnJaynSa3m3eikUeMUk9LHJLPFFIqecxzkSympLS0tFi6aWnh5NUts3MxLMen5XJxSlpZJoKGnp4WSSuzPcxiIrWJtA6sNVT1CqkM0ciptRrr2Nasq5WV9LSQZcz1zSXTYxDYbBBSMe+CnY1UbsY1EV3sOHRLW8urJnsvVOp8zGcN9iAb82KOdRVs0LEatO/I1yrfMp0IX54Y3OtdzUVTg1eDU9Ng75XsV1S1l3PzLtudCiwihiSGdkNpERHIud223vA2MSquRUMk38yJZib1XYaa19c2eOlbTxyz6FJH+dltrsauNLUy10WZuWmimYxL/zuXXcy1r4VxBaiDFYqeRrNE5FYjuv2gZJsRr6bRunoo2sc9GXSW+03MTq3UVLpmMR7syIiKttpw4ah1fBE+sxWNuV+ZYljai6l3odLGpGTYW2SNyOY6RllTr1gXpq6rfiHJainjYuTOqtfmshrzYxM2qdLGxHUET0jkfbXfensQwSI+Sev0tQlMukTSqqa9Fbzbe8vDRzXfh0WJIjGMvkWmaqK1fb1gdxHNVmdFTLa976rHEdjkraiSVIHSUau0cbk1Xd7zNgsaxxTNjnWelbdrWubZcybfwNKqrXLU01ItA+OKyqtPq8/d/cDcrMUqssUUNO+Ope/wDhrZy5E2r/AM3GWjxaSsVuShkyK7Kr8yeb7zTnq5ExFuVYKJ2gRbzN1pr6NzJhlQ9MTfAktNK2RiyOdC23nX6wO2AAKuXKlyxSToKXAAADhc81y0TatKWHROXKnn61W9thmrsagZSScnqI+UN2NVFXX1oaFCv+HwpJdVPpXrf/AL7rlubeKKyHFaJWUyy5WvVWMbrdqsBuU+L0dRo2tnbpH28yy7dxuSyxwRuklejGN2qvUc+krYpqxKd1C+CTLnRXsRNROLsfUupqNrVVssl5FtqRqawMldVSQ1FGyNUyzSZXauo2ppo4GZ5XtY29rqttZyccqGw1tDqukb9I/wD7UuiXM74Jq7EkdOzJTU63Yi/9R3F7gNrEJn09DNNHbOxt0uYpK2WKigmSBZVe1FdZyNtdPaY8eifJh0j2zOjRjVVzU/n95oVUMseDxMlrI9DKjdcrVVWrZFREt7gM7cVrecHxcieqJHm0eZMya9tzo0NUtXBpVi0aXsnnI66b7oedWpVZXy85U2d8WiVcj9nZtOzgefkaN0sMkTfNYsbVT33uB0gABenS8jl3IbBr03Tk/D9TYAHOxKuqKWopYKaFksk+ayOdbZY6Jx8YV7cUw1Y25nokytRetcuoDEmOyNp6nTRMbOx+iijY7Nnf8tRMWL10C08FbQuWaV2VHI9uv8E3GlT0cEuF0tRHDUyVKOdnkgdlei3W9+0x1FNIxr6jQ4s2VjFtI+ZPN1b9tgPUVEj4oHviiWV6JqYi2ucjnPFJ6taSKihglRmddLJmsmzqNylbLVYLA1J3xyPiYulRbuvqPORzLz5I12IztaiaPlFk39fsuB6KurZ6SOkYjY31E8jY1TXl9qnROKjVlx6GNz3SpQwXc5drnr8tZ0qKrirqZtRDfI69rprA2AABD2o9qtXrNaJbxoptGnAqJEgGUEZkGZAJBGZBmQCQRmQZkAkEZkGZAJBGZBmQCQRmQZkAkEZkGZAJBGZBmQCQRmQZkAkEZkGZAJBGZBmQCQRmQZkAkEZkGZAJBGZBmQCQRmQZkAkEZkGZAJBGZBmQCQRmQZkAkEZkGZAJBGZBmQCQRmQZkAkEZkGZAJBGZCb3AAAAAAAAAAAAAABTbrLlE2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFG7CxVCwA0cYnjhw+Vr186VisY1EurlVDeMMlLDJUx1D23kiRUat9lwOHTxQ4jNRNVHOZFT5JLKrVa5OpQuGNidVqtHPKme0SNeqarbdus61RhVFVSLJNA1z12qiq1V7DDzDh3oXf+R3iAp82HYEmn818Ua3T29SGthuCUklBC+eFyyObmcudybfxOg3DKRlKtMkX7pXZlarl2m0BwMIwqjqaaR80aqrZnNRc7k1J+Js4HHHDU18cX8NsiI3Xc3X4dSPp3QOhTRufnVMy7d5elpIKOPR08aRtVbqgGcAAUXpt/EuVVLqi7iwAgkwVdLFWQ6KZHKy99S2A5+K1lPUxOooWcrmfsaxeiu9V6jWonSYPO5cRjc5ZbJyhFzIn/ap2qelgpWZIImxp12TaZHNa9qtciORdqKm0CI5Y5mI+J7XtXYrVuhzNEyfHKuKRLsfTtRUv7TcpsPpqWZ8sDNGr0sqIvm9hdtLG2rfUpfSPajV16rAcnFMHoafDppooVa9qXRc7l6/ebNNglBo4pNCueyOvndt7TfqIGVMD4Zb5HpZbKXY1GMRjdjUsgHOx3+BS/8AyWfqa72QYrWpHBCzk8TrzSoxEzrwop1KqljqmsbLezHo9LL1oZWMZGlmNRqXvZEsB5mhp0goIMQbA2ZqZmzMVqLduZfOT2odDFZIZcHjfT5dE6RmXKlk2nRpKWOjp0givkbfat9pE9HDPTpA5uWNqoqIzVawHNdTT1dZNNVRNpo3QLCl5EdmW+017y0lNDWvexskVO6F7Vddy8NrfgduppIKtqNqI0kRq3RFNfmXDvVW9qgRh7UosIa1iJJIyNXqxq61XbY5MtDJPX0jqxVbPVZ1dlXoWTzUT3HepaGmo1ctPEkau22XaTLSxy1MM7r54b5bLq1gcSSOobiiMe+kkmbTJmdOnmr53V7TLQte3HW6RKVF0C/R083pdftOlPhtLU1Onnj0jsuWy7BBhtLTVOngj0bsuWybANsAAUk6ClyrkuliwAAAeYpo6qqwWCmip0yKubTq9ERlnL1HRw9/LsTnrU1xRt0MS8XWqm5FQQRUK0bc2iVFTWuvWX5HByTkqMtDly2RbAad0f8AtHqW+Sl1+xcxs11fDRR3kW73dCNOk5SaOgp6JHaCPKrukqrdVJSip0q3VWjRZnfzLrt7twGpSUDp2Tz1zf3tSmVWJ/I3qaUpKt1A9KGuXKiaoZl6L03LuU6xiqKeKpiWOZiPYvUoGpjDpXUq08FO+V07VS7djfeaNQyrip6BKxY0y1USNaz+VERdqnbhiZBE2KNLMYlkQxVlHDWxsZOiua16PtfaoHHY6s5Sy76m/KPOu9uj0ebt2G9gX0SX+u/8zJzNh/qrP7mekpIqOLRQoqMuq2VQM4AAvTdOT8P1Ng1qdbSuTehsgDjYw98eK4Y+OPSPTSqjL2zeamo7JgmpIpqmCd988GbJZdWtLKB5h0atdNDV0jVktNVZdIv7pLak1Lr1oXbRU7ImzT0jdBNA10b0kfZr1TorrvtU9K6lge+R7omq+RuR7ra1TcaUWA0Eb2PRki5FzNasiqiL7gMVM6SvwFsVIqU8rUSJya/MstlTfsNaKhposXlo3NTQNorLdf8Au2/qd6ONkebIxrcy5lslrrvML6GB9TJUOaqvkj0TkVdStA4+DV1FA2qqpqiKNZpfNYrtaMbqbq2mT9naiF9RXU8D80SSaSNbW1LtOlFhlDD/AA6SFFTryIql20cLaxaprVSVY9HqXVa99gGwAABpQ/w0Nt7kYxXL1IasaWjQCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADZrAXYBcAAAAAAAAAAAAAKJsLlE2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEKnWhHnbiwArr3DXuLACuvcNe4sAK69w17iwArr3DXuLACuvcNe4sAK69w17iwArr3DXuLACuvcNe4sAK69w17iwArr3DXuLACuvcNe4sAK69w17iwArr3DXuLACuvcNe4sAK69w17iwArr3DXuLACuvcNe4sAK69w17iwArr3DXuLACuvcNe4sAK69w17iwArr3DXuLACuvcNe4sAK69w17iwAoqKvsVNilknmalljR3tvYkAOVS+gTv/ACHKpfQJ3/kAA5VL6BO/8hyqX0Cd/wCQADlUvoE7/wAhyqX0Cd/5AAOVS+gTv/Icql9Anf8AkAA5VL6BO/8AIcpl9Anf+QAFV0kqppLIifyoWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF2ALsAuAAAAAAAAAAAAAFE2FyibAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF2ALsAuAAAAAAAAAAAAAFE2FyibAAAAAHPxLEuSrookRZFS6qv8AKRMxTGsu7duq5V40ugDzfKq6TzmvlVP+1NROmr+KfsUq3Yw18Ke0PRg85pq/in7FGmr+KfsUbsYOFPaHowec01fxT9ijTV/FP2KN2MHCntD0YPOaav4p+xRpq/in7FG7GDhT2h6MHnNNX8U/Yo01fxT9ijdjBwp7Q9GDzmmr+KfsUaav4p+xRuxg4U9oejB5zTV/FP2KNNX8U/Yo3YwcKe0PRg85pq/in7FGmr+KfsUbsYOFPaHowec01fxT9ijTV/FP2KN2MHCntD0YPOaav4p+xRpq/in7FG7GDhT2h6MHnNNX8U/Yo01fxT9ijdjBwp7Q9GDzmmr+KfsUaav4p+xRuxg4U9oejB5zTV/FP2KNNX8U/Yo3YwcKe0PRg85pq/in7FGmr+KfsUbsYOFPaHowec01fxT9ijTV/FP2KN2MHCntD0YPOaav4p+xRpq/in7FG7GDhT2h6MHnNNX8U/Yo01fxT9ijdjBwp7Q9GDzmmr+KfsUaav4p+xRuxg4U9oejB5zTV/FP2KNNX8U/Yo3YwcKe0PRg85pq/in7FGmr+KfsUbsYOFPaHowec01fxT9ijTV/FP2KN2MHCntD0YPOaav4p+xRpq/in7FG7GDhT2h6MHnNNX8U/Yo01fxT9ijdjBwp7Q9GDzmmr+KfsUaav4p+xRuxg4U9oejB5zTV/FP2KNNX8U/Yo3YwcKe0PRg85pq/in7FGmr+KfsUbsYOFPaHowec01fxT9ijTV/FP2KN2MHCntD0YPONr62nemdzl9j02ncoqptXDnbqVNTk3Kd03Iq+im76aq3Gs/WGcAXTeds4CMyDMgEgjMgzIBIIzIMyASCMyDMgEgjMgzIBIIzIMyASCMyDMgEgjMgzIBIIzIMyASCMyDMgEgjMgzIBIIzIMyASCMyDMgEgjMgzIBIIzIMyASCMyDMgEgjMgzIBIIzIMyASCMyDMgEgjMgzIBIIzIMyASCMyDMgEgjMgzIBIIzIMyASCMyDMgEgjMgzIBIIzIMyASCMyDMgEgjMgzIBIIzIMyASCMyDMgEgjMgzIBIIzIMyASCMyDMgEgjMgzIBIIzIMyASCMyDMgEgjMgzIBIIzIMyASCMyDMgEgjMgzIBIIzIMyASCMyDMgEgjMhN03gAAAAAALsAXYBcAAAAAAAAAAAAAKJsLlE2AAAAPNzJpcUc12tFlyr7r2PSHm1+tv8AX/3FN34bvR/2n/HXmxVKOV0DadFRlrLmt+hj5/8Asyd/5Gjin0+X8PyQ1TREO6LNE06zDs8//ZU7/wAhz/8AZU7/AMjjAaOti3h2ef8A7Knf+Q5/+yp3/kclsErku2J7k9jVLcmn9BL3FGkOdq06nP8A9lTv/Ic//ZU7/wAjl8mn9BL3FHJp/QS9xRpBtWXU5/8Asqd/5Dn/AOyp3/kcp0ErUu6J7U9rVMY0hMWbU+zs8/8A2VO/8hz/APZU7/yOMBonj28Ozz/9lTv/ACHP/wBlTv8AyOMBoce3h2ef/sqd/wCQ5/8Asqd/5HGA0OPbw7PP/wBlTv8AyHP/ANlTv/I4wGhx7eHZ5/8Asqd/5Dn/AOyp3/kcYDQ49vDs8/8A2VO/8hz/APZU7/yOMBoce3h2ef8A7Knf+Q5/+yp3/kcYDQ49vDs8/wD2VO/8hz/9lTv/ACOMBoce3h2ef/sqd/5Dn/7Knf8AkcYDQ49vDs8//ZU7/wAhz/8AZU7/AMjjAaHHt4dnn/7Knf8AkOf/ALKnf+RxgNDj28Ozz/8AZU7/AMhz/wDZU7/yOMBoce3h2ef/ALKnf+Q5/wDsqd/5HGA0OPbw7PP/ANlTv/Ic/wD2VO/8jjAaHHt4dnn/AOyp3/kOf/sqd/5HGA0OPbw7PP8A9lTv/Ic//ZU7/wAjjAaHHt4dnn/7Knf+Q5/+yp3/AJHGA0OPbw7PP/2VO/8AIc//AGVO/wDI4wGhx7eHZ5/+yp3/AJDn/wCyp3/kcYDQ49vDs8//AGVO/wDIc/8A2VO/8jjAaHHt4dnn/wCyp3/kOf8A7Knf+RxgNDj28Ozz/wDZU7/yHP8A9lTv/I4wGhx7eHbq5G1uFumczKtlVEve1jTwFy6aVvUrUU2I/qJ33HfmprYD9Ik+7+pnr/khzTGliuP9dp24gl21CC55wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlu4khu1SQAAABdgC7ALgAAAAAAAAAAAABRNhcomwAAAB5t31t/r/7j0h5t31t/r/7im78N3o/7fplxT6fL+H5IaptYp9Pl/D8kNU0x7NFv7YDr4dRsZG2Z6Xe7Wl/5UOQuw9E3UiJuIln9VXNMREfLJcXNGfFKOnkVks6I5NqIirbsMfPdB6x8DvAPP+rpXFzm890HrHwO8Dap6uGqYroJEeibbdQPq2LmhiNGx8bpo0RHt1rb+ZDczELrRUXrDuiuaatYedATYCXsAMkELqiZsTLZnbLmSKhqZsyxx5ka7Kq5k2hzNdMe8tcG5zVW+h+JPE1pYnwyLHI3K5NqAiumfaVAZnUsrYYpVRLSrZqJtMs2GVUKN/d58yX8xFW3vCPOnLUBLmqxytcioqalRSWRvkVUYxzrJdbJfUHesaaqgyw0750kVlv3bcy33GIIiYkAASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA68f1Ev3XfmprYF9Ik+5+psx/US/dd+amtgX0iT7n6mev8Akhnp/iuft2nbUIJdtQgtecAAAAAANalrWVcs7Y2uyROy5+py9djYRUVLtVFT2ASDBWVTaOBZnse5rV15Evb2lZa2FlC6ra5Hxo26KnX7ANkGKCZJoI5LZc7UdZV2XE88dPC6aV1mN2qmsDKDm8/4d6d3cd4Ec/4d6d3cd4AdMGlTYtR1cyQwyK567EyqhjkxmljkcxzZrtVUW0agdEHM5+o82W0116tGpPPlJwz/APjUDpAxzTNhp3zO6LGq5SKablFNHNlViPbmsoGUGtQ1ja2BZmMVrcyol+u3WbIAEOVGtVXKiIm1VIY9sjEexzXNXYqLdFAsAAAAAAx1EyQQvlVrnIxL2Yl1UrS1MNXCk0D8zF/sBmBqtrW84Oo3MVrsmdjlXU9DaAA1ZK5kVdHSyMVukbdj16Ll3GObGaCCV0Us+V7VsqZHeAG8DSpsWoquZIYJsz12Jkcn6Gatq46KmdPJrRuxE2uXcBnBo1GKQ0r6dkyKx82tUVUTIntMnOdD63D30A2gRdFbmulrXuYKGrStpknaxWtcqol+uwGwDWpaxtVLUMYxUSF+RXcSmyABqNr2OkqmaN/+HteyXV19yGBmNQPRVZBVOstltEq2UDpA0qTE4auZ0UccyK3pK5lkT2GWuq2UNMsz0VyIqIiJtW4GwDQr8WgoXRseiukftan8qb1MtNiVJVy6OCbO9EvaypqA2gDDDVwTveyKVrnsWzk60AzA16OrbWNlVrVbo5FjW/XY2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlu1SSG7VJAAAAF2ALsAuAAAAAAAAAAAAAFE2FyibAAAAHm3fW3+v/uPSHm3fW3+v/uKbvw3ej/t+mXFPp8v4fkhqm1in0+X8PyQ1TTHs0W/tgXYd7McFdh2sxEsvq/h41yq5yq5bqq3UgA5Yw6mASpFUzK5bMSJXL+Cocs3cN//AJf/AMZ/6AZcRxeWpflhc6OJNllsrveegpJFfSQuct3Ojaqr+B409bRO/wAFB/Sb+QHLTYAmwHb2YdHBnQpUsa6NVlVVyuvqRLGxRZHYlMsUbmx5HIt7qircwYMtOk7MzXrOqrlXqRLf/wCm9BM+pRzrPREkyWjdayb7ESxXZ/6lekaxJUVrWJq2thc3+6nEipJZapsLmua5da3TYm87VO9rnyKx8z1ZJkVM1/xOTWyOp66VIZHrZMquct12a9YgszOsxDstdGyubBorrHFdjtyEQq5rHzrDPnvZGOfe/wCGwxPiz16u0SyObG2y58qJt2mwqJVRPY57l680epG+xF6yFM6OTisDGMimRjmPkVVcjluooI2uai01SsdSm1rtjicXVrdDFG27Ebma9VVVdcxtrqdqInIY1VOu5LVHlNuNGxBK6V9a98bWObCrXZdl9ZyT0UCIlI5zaSNj5E/h3tmQ5klXCxXMdh8bHbLKutP7BFqv6zpDQABLUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA68f1Ev3XfmprYF9Ik+5+psx/US/dd+amtgX0iT7n6mev+SGen+K5+3adtQgl21CC15wAABy8arZoWJTwRyK+VNcjW3yp7PadQxVU7aamkmetkY1VA5tLXMpadkFPh1c5rU2rFa/tMOGzvo650EkEkFPUOVYUf8Ayu60LtjfH+yztJfO6NXLf2rf8jdRYI8MhmqGI5sUbXpdt7LbqAtXVklKl20r5mZVVytXU05yUa1rKeGCDQ0Mv7+XzukvCdOqekmGzPbsdCqp2HMoYMPxGnp4ZW6SaKFL2cqZU/ACjsJokxplOkP7pYM6tzu25vedmlpYaOLRwMyMve11XX+JxXYTRJjTKdIv3SwZ1TOu2516Ohp6FHJTx5Ef0tar+YGyefwfEmUlMkdTG+OJz1yzWu299i7j0BysCY2TCsj2o5rnuRUVLousDpte17UcxyOauxUW6Kcyeprn19RBTPhayFiO89qre6G3R0ENEsmgzo163yK66N9xqM+t8R/ot/IDRidWTImJrU0qSJEqIxU2J7t5sRVuIIlFLK+FY6l6NsjVulzRp4mLhaOXCnSLkX99mT26zb//AIODf1WAbGMRrU1tFSrLIyKbSI9GOteyIppyJUUVRUUtNJPNeJrWZ35sl1tf2G3jEUM2IYfHUW0TtJe626k6ymHU9PBjNRHTI3RaFNWbN1gXp8GY2nbosRqsiJ/05bN9tjPgUj5cKhfI9z3rmurluvSUrSUs1DUTsZZaNzc7UVdbF3J7Cf2fS2D0/wDm/wDsoFMekctNHSRr+8qXoxPd1/oVwNVg5RQPXXTv82/W1f8An9zXmSpr8be+kfG1KRMiK9Lpdb3/AF7CHNq6DF4KqrfE5s/7pyxpb3X/ALdgG7W4tyStbTaB0jnMzNyrrVb2tYiHFZOVMp6yldTOk6Cq7Mjl3GvVzRw/tNA6VyNRYbIq9SrmLY5IyWWigicjplnRyW12QDNVYusFc6kbTOlkyorMruku72E0uKPfVpS1dM6mlcl2XdmRxraaOH9qH6VUbmhRrVXfqLYrIybE8PhicjpWy5nW15U1eAHRq6iSnY1Y6d86qtlRnUaNLSUmI0zp2RyQaV+ZyMfbWl0OscXAq2nioWQvkRHoj3qm5EXrA04qWhSvqmVVS5iRORIldLZdms7GG01LHmlpZnyovmqqyZkNfCKaKphlq54GPWeVz252otk6i+BIjaafKiInKH2RANWnkj5ldUVbHT6GZXJd2u+ayazPJjD4mJJLh8zGKqJmW1tZqwRST/s3URxMV73SLZE6/OQtXTVVZRtp24fO1UVutfYBt1CWx+j/AKTzVxRlU/EqV02VtM2oYyNiLfN7VNqp+v6P+k8viCxy11FTuR6v0mlTKuzLvA1GxxMr5450SqqXMc9z1amWJP5UsprtbDUYfRRTRsjWoXXOkbdqO6PsuWlka/Dlq4oZIWTTKtQ6N93ImzsNitfR01DDS5NNTtVukXN5zEXY4DNjebk9NEyR8aSVDI3KxbLZUU0pY34RVxsppKiZmhe5I3Oul/chtY62OSmo2uVFjdUsRVv1WXrMMNNSU2OUzaS1nRvvZ+YC1Fg/+HzLX1LZHLeRIpLNR3X+JlwlJZKashdUSuVs742yOdmciJYyx0ctLiayUyJyea6ysVei7ehhwpsj6WvSKTRyOqX5X2vbYBrUEa0+J1j5q1zWxObmVyomfUu00oZIlfUO0kNnTOVM1Q9l09yGzBRLyjEXuc+ephtkejUut01+bsIpHVNSlStLUOekcSK1Vha1c+239lQDP+z9TCktRDnTSPlVWoiq66W3r+pGJVPK8XpqREXRRypmXe/5EYHLLLXOyTrJEseeb92jfPXq1G3ibWtrsPyoiZplVbda2A5CWw+pq1fVzxyI6zXZMyyfiUjmfFTPqIquflkllcmi1Lr323Gaoas2eSTSyNbdNNV+axv3W9amKnnmfFHBLO9KKOVGOt5rrLraq+wD1FQ2Z8Dkge1kttTnJdDQp4lqatHVlHoqmDWkrF81/wCP6G5VUbKuNrHSSsRq3RY32VTk4lR09FAtqqrdO/VFHpbq5fcBt4FrgqndTql6p/Y6Z5rDqSnRUpaqaqpqnrZpMrXe47tHRso2OaySWTMt/wB47MBsA1ecqTlPJ9O3S3tb27r7DaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlu1SSG7VJAAAAF2ALsAuAAAAAAAAAAAAAFE2FyibAAAAHm3fW3+v/ALj0h5t31t/r/wC4pu/Dd6P+36ZcU+ny/h+SGqbWKfT5fw/JDVNMezRb+2Bdh1sxyV2HQa+7UXehEs3q/h5h7FY9zHJZWrZSp6d8UUi3fGxy71aileTU/oIu4hyxPNHSwNiunkcqXZkyrf2qh0+TU/oIu4hkajWJZjUam5EsBya7CnNdnpkzMX+XradenRY6aJjtrWI1ewZiHPytVdyAj3c9NgCbAdvZhuYdNT08mml0mkb0Ubs2GWCvhpWK+ONXTSO8/MupEv1HOAV1Wqap1l1GYjTU6ukghdpJF85FXUhpVj4ZJs8CORHJdUd1KYACm1TTOsOpLX0yzrJonS+YiIirZL+1C8eKRozSvc/SI1USJqWahyANHOxS2XVavokp3sRytW7Xbk3GaKpoqZiOihdJNba/YimgA6m3TP0ZZqqaabSveudNltVvcbS1sVTTqyrYqyNTzJG7TQATNFMgADsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB14/qJfuu/NTWwL6RJ9z9TZj+ol+6781NbAvpEn3P1M9f8kM9P8Vz9u07ahBLtqEFrzgAADnTYa+rqlfVzrJA112Qolk/HedEAYqmnbUU0kDvNa9uXV1HOdhNXJAlPLiKugRETKkSIqontOsAMU0DZaV8F1a1zMl06ksVo6OGhhSOBlk6163e8zgDUdSOXFG1eZMrYdHbrve5tgADUwykdRUmhe5rlzKt09ptgAcyfC5Zq6adKp8TJGo20e1bJ1nTAHKbgzmQ6FtfUJHa2VLWsVTBpI5KZW1cj44Ho7I/YiJuOuANOtw+Otngkl1tizeYqanXJpsNp6SofNA1WK9uVWp0TbAGlXUtXUOVsNWkMTm2c3Roq9pnpadlLTRwM6LEtfeZgBhp6WGlR6Qsy53Zna1W6/iKqlhq49HOzOxFva6pr/AzADlVFFyjGmulhz06wZXKuy91Nqkwyjo5FkghRr9l1VV/M2wByX0HKMandPBnp3woiKuy90Nykw2konOdTxI1ztSqqqq/3NoAQqXRU37jlLgcbaVtPDIrEc5Fmfbznpu9h1gBqVFPU5I2UU7IGNblsrM3uLUFIlFSthR6vW6qrl/mVTZAGphlI6iplie5HLnV109psvRVY5GrZ1tS7iwA51PQVHLW1VXUNlexqtYjWZUS5sto421z6u7nSOYjERdjU9hsADkxYZWUzHRU1e1sN1VGuhR1rmamwxWrUOq5uUPqERrly5bIdAAaNRhkU9LT02ZUjhejrLrzInUTFhVLBVMqIWaNzUVLN2Lc3QBrVkNVLl5LUpBtzXYjrlaSi5HRLBFIqyLddIqfzL12NsAcyLDqqOOoclWnKKhzVdIjNiJuKpg3J2uWhqZIXvajXqvnZtetfedUAc2lwrkU7H01Q9GL/ABWP15/b7FM9ZSOqKilka5GpC/MqL1m2AOW7B086VZlnqb3Y6fzmt/AyU2GI2CoZVPSZ9Qt5FRLe6x0ABqSUs7KKOnpalY1ZZFe5uZVQrR4ZDSyLM5z5p12ySLdfw3G6AMFXRw1sSxzszJ1L1t9xWhgmpodHNOs1l81yprt7TZAHJ5qnzaHTR8l02m6Pn3ve3zOsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLdqkkN2qSAAAALsAXYBcAAAAAAAAAAAAAKJsLlE2AAAAPNu+tv9f8A3HpDzbvrb/X/ANxTd+G70f8Ab9MuKfT5fw/JDVNrFPp8v4fkhqmmPZot/bAZIptGmV3R6l3GMAroiuNJbaTRr/OnaTpo+NvaadhZCPFn4sZbmmj429o00fG3tNOyCyDxOLGW2s0afzp2mCWbSJlb0etd5jsBo7o9PTTOoACWgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB14/qJfuu/NTWwL6RJ9z9TZj+ol+6781NbAvpEn3P1M9f8kM9P8AFc/btO2oQS7ahBa84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS3apJDdqkgAAAC7AF2AXAAAAAAAAAAAAACibC5RNgAAADzbvrb/X/3HpDzbvrb/X/3FN34bfR/2/TsVGEcqmdNp8ubqyX9m8x8wL6z8HzOvH0ELl+rPF6uPpEuL5Pr6z8HzHk+vrPwfM7QGqd+5lxfJ9fWfg+Y8n19Z+D5nYzt3oM7eJO0ayci5lx/J9fWfg+Y8n19Z+D5nYzt4k7RnbxJ2jWTkXMuP5Pr6z8HzHk+vrPwfM7CPbvQsNZORcy4vk+vrPwfMeT6+s/B8ztAam/cy4vk+vrPwfMeT6+s/B8ztAam/cy4vk+vrPwfMeT6+s/B8ztAam/cy4vk+vrPwfMeT6+s/B8ztAam/cy4vk+vrPwfMeT6+s/B8ztAam/cy4vk+vrPwfMeT6+s/B8ztAam/cy4vk+vrPwfMeT6+s/B8ztAam/cy4vk+vrPwfMeT6+s/B8ztAam/cy4vk+vrPwfMeT6+s/B8ztAam/cy4vk+vrPwfMeT6+s/B8ztAam/cy4vk+vrPwfMeT6+s/B8ztAam/cy4vk+vrPwfMeT6+s/B8ztAam/cy4vk+vrPwfMeT6+s/B8ztAam/cy4vk+vrPwfMeT6+s/B8ztAam/cy4vk+vrPwfMeT6+s/B8ztAam/cy4vk+vrPwfMeT6+s/B8ztAam/cy4vk+vrPwfMeT6+s/B8ztAam/cy4vk+vrPwfMeT6+s/B8ztAam/cy4vk+vrPwfMeT6+s/B8ztAam/cy4vk+vrPwfMeT6+s/B8ztAam/cy4vk+vrPwfMeT6+s/B8ztAam/cy4vk+vrPwfMeT6+s/B8ztAam/cy5M9PyXC5Ic2bKxddre00MC+kSfd/U62KfRJ/uHJwL6RJ939Siv74abU62K5l2nbUIJdtQguYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLdqkkN2qSAAAALsAXYBcAAAAAAAAAAAAAKJsLlE2AAAAPNu+tv9f/cekPNu+tv9f/cU3fhu9H/b9PVx9BC5SPoIXLmENaWVVVUTYbDuipoZiYRK9xcpmNXEql1NQTSs6TU1fitiUN24ueE00ul0ukfpL3zX1nrsNqXVNBFK/pOTX70WxBo3bmSKVUVEXYYMwzEjoAhvRQk5dAKue1iXe5Gp7Vsa9XiFNSU7ppJEVrbXRqoqgbQMaVEKpfSx95C6KjkRUW6L1oBIBgo6uKsiWSFVyo5WrdLa0AzgGrU4hSUkiR1E7I3Kl0R24DaBoc94b65F2melrqaszcnmbJl25eoDYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhin0Sf7hycC+kSfc/U62KfRJ/uHJwL6RJ9z9Smr74brP/nrdp21CCXbUILmEAAEtarlshfQv3CHpobAGvoX7hoX7jYAGvoX7hoX7jYAGvoX7hoX7jYAGvoX7hoX7jYAGvoX7hoX7jYAGvoX7hoX7jYAGvoX7hoX7jYAGvoX7hoX7jYAGvoX7hoX7jYAGvoX7hoX7jYAGvoX7hoX7jYAGvoX7hoX7jYAGvoX7hoX7jYAGvoX7hoX7jYAGvoX7hoX7jYAGvoX7hoX7jYAGvoX7hoX7jYAGvoX7hoX7jYAGvoX7hoX7jYAGvoX7hoX7jYAGvoX7hoX7jYAGvoX7hoX7jYAGvoX7hoX7jYAGvoX7hoX7jYAGvoX7hoX7jYAGvoX7hoX7jYAGvoX7hoX7jYAGvoX7hoX7jYAGvoX7hoX7jYAGvoX7hoX7jYAGvoX7hoX7jYAGvoX7hoX7jYAGvoX7hoX7jYAGvoX7hoX7jYAGvoX7hoX7jYAGvoX7hoX7jYAGvoX7hoX7jYAGvoX7hoX7jYAGvoX7hoX7jYAGvoX7hoX7jYAGo5qtWykGSbpqYwAAAlu1SSG7VJAAAAF2ALsAuAAAAAAAAAAAAAFE2FyibAAAAHm3fW3+v/uPSHm3fW3+v/uKbvw3ej/t+nq4+ghcpH0ELlzCh3RU5eY6juipx8wRK75GsY57ls1qXVfYc/FJ2VGDSSROzMday/5kNiqu+kmam10aonYcyBFn/Z90cetzb6v81yRxD02FzsgwaOSV2Vjb3X/Mp5k7c6LB+z7Yn6nOtq/zXIS7bJEexHtW7XJdFJzGtS3ZSxNXa1iIvYZcxKHYb0UJIb0UJIS0MWbBJTZJWQSPRczGSvyoq/8ALnm8SgYyikclJRRqlvOinzOTXuPQYw6ghYySsp0nkXzY2o26qu489S0s0mJStdS0cMj0uyCoRyJb2W2gbbaaOyf4DDf/APpPQLBTVNFydlnQZUamR3UntPOUka1GJJTNocOlY1U0r4mus1OvWq7T08FPFTR6OCNsbL3s0DzTqfD9PNFFh1dNonqxzo3KqXT8TBSUccULuVYZXudmVbsuiWN+pbX4ZWKlPND/AI2p81qtuqX6y8kmLrXpQuqKfM+JX5tHqtsA28FpaNIG1lJHIzStVLPeq6r/ACNavRef3K2Bs720V2xu2Kuc6WF0rqKgipnuRzmIt1T3qpo6aNn7RVU8r0ayCmRqqvVdbgYZ66mlw+GSjpoOUTyJG1jo0XK7rv8A86zPhbGx41ibWojUTRWREsnROSyTR4kmNcmy0TpVb7daWz2OtQPYmOYm7MmVyRKi31L5oHYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhin0Sf7hycC+kSfc/U62KfRJ/uHJwL6RJ9z9Smr74brP8A563adtQgl21CC5hAABkh6aGwa8PTQ2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA15umpjMk3TUxgAABLdqkkN2qSAAAALsAXYBcAAAAAAAAAAAAAKJsLlE2AAAAPNu+tv9f8A3HpDzbvrb/X/ANxTd+G70f8Ab9PVx9BC5SPoIXLmFDuipw8x3HdFTz7rtcqLtRbAZMxy3RT4fO+SmZpIXrd0abUN/Ma1VLVtenJomPbbWqr19oGDnGl0l+Ru033EuWbFPXztlqWaOFi3bGu1TBlxDlXKNAzPltbMlvzNyllq3OdyiJjG21Ki9faBvZhmMWYlt3ORE2qtgPQN6KEkN6KEgadctbePkUUD113dKq+b2fiaMuCz4g5rsTq0ejdbY4mI1E/HadoAcWHCq/DmqzDquN0V76OZn6obzXYhyBXLHByvqairk2m4AOXR4bLypK2vmSaoRLMa1LMj9wr6OsdXxVtE6HSMjVitlvZU/A6gA5dFR1q4itbXPhzJHo2MhvZNd76ylLgzXxz8vRssk0+kWy6rJsT8+064AxSU8UsDoHsRYlblVttVjkV+ByS1DeSvZHTvayOZi8LVuluw7gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQxT6JP9w5OBfSJPufqdbFPok/3Dk4F9Ik+5+pTV98N1n/z1u07ahBLtqEFzCAADJD00Ng14emhsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABrzdNTGZJumpjAAACW7VJIbtUkAAAAXYAuwC4AAAAAAAAAAAAAUTYXKJsAAAAebX62/1/wDcekPNzLocUc52pElzL7r3Kbvw3ej/ALR/j1cfQQuY4XI6JqoqKi7FQyXLmGYDm11C5zlki2rtQ6V0F0A88sMqLrjd2EaOT0b+6ehs32CzdyAee0cno390aOT0b+6ehs3cgs3cgHn0hlVdUbuw36GhcxySS7U2IdGzfYTdAAF0F0AAXQXQABdBdAAF0F0AAXQXQABdBdAAF0F0AAXQXQABdBdAAF0F0AAXQXQABdBdAAF0F0AAXQXQABdBdAAF0F0AAXQXQABdBdAAF0F0AAXQXQABdBdAAF0F0A0MU+iT/cOTgP0iT7v6nTxiRrKSXMtlclk9pzcBRdNK7qRqIU1ffDfajT01Tsu2oQS7ahBcwAAAyQ9NDYNeHpobAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa83TUxmSbpqYwAAAlu1SSG7VJAAAAF2ALsAuAAAAAAAAAAAAAFE2FyibAAAAHPxLDeVLpYlRJESyov8AMdAETETGku7dyq3V5UvOpR4hGlmxzIn/AGrqJ5PiXDP2qeoj6CFyvajLVzausPKcnxLhn7VHJ8S4Z+1T1YG1GTmz1h5Tk+JcM/ao5PiXDP2qequm9BmbvQbUZObPWHleT4lwz9qjk+JcM/ap6rM3egzN3oNqMnNnrDyvJ8S4Z+1RyfEuGftU9VdN6EjajJzZ6w8pyfEuGftUcnxLhn7VPVgbUZObPWHlOT4lwz9qjk+JcM/ap6sDajJzZ6w8pyfEuGftUcnxLhn7VPVgbUZObPWHlOT4lwz9qjk+JcM/ap6sDajJzZ6w8pyfEuGftUcnxLhn7VPVgbUZObPWHlOT4lwz9qjk+JcM/ap6sDajJzZ6w8pyfEuGftUcnxLhn7VPVgbUZObPWHlOT4lwz9qjk+JcM/ap6sDajJzZ6w8pyfEuGftUcnxLhn7VPVgbUZObPWHlOT4lwz9qjk+JcM/ap6sDajJzZ6w8pyfEuGftUcnxLhn7VPVgbUZObPWHlOT4lwz9qjk+JcM/ap6sDajJzZ6w8pyfEuGftUcnxLhn7VPVgbUZObPWHlOT4lwz9qjk+JcM/ap6sDajJzZ6w8pyfEuGftUcnxLhn7VPVgbUZObPWHlOT4lwz9qjk+JcM/ap6sDajJzZ6w8pyfEuGftUcnxLhn7VPVgbUZObPWHlOT4lwz9qjk+JcM/ap6sDajJzZ6w8pyfEuGftUcnxLhn7VPVgbUZObPWHlOT4lwz9qjk+JcM/ap6sDajJzZ6w8pyfEuGftUcnxLhn7VPVgbUZObPWHlOT4lwz9qjk+JcM/ap6sDajJzZ6w8mmH1s7/wB4x6e167Dt0VI2kh0bdarrcu9Tak6alDqm3FP1VXfU1XI0n6Qh21CCXbUIO2cAMc08UDc0r0antHsmImZ0hsQ9NDYORHi9G191etvuqZue6Ljd3VOfOnKzYudZdEHO57ouN3dUc90XG7uqPOnJsXOsuiDnc90XG7uqOe6Ljd3VHnTk2LnWXRBzue6Ljd3VHPdFxu7qjzpybFzrLog53PdFxu7qjnui43d1R505Ni51l0Qc7nui43d1Rz3Rekd3VHnTk2LnWXRBy+e6b0qf+NRz3T+lT/xqPOnJsXOsuoDl890/pU/8ajnun9Kn/jUedOTYudZdQHMbjdJ/NIv4MUtz3Rcbu6o86cmxc6y6IOdz3Rcbu6o57ouN3dUedOTYudZdEHO57ouN3dUc90XG7uqPOnJsXOsuiDnc90XG7uqOe6Ljd3VHnTk2LnWXRBzue6Ljd3VHPdFxu7qjzpybFzrLog53PdFxu7qjnui43d1R505Ni51l0Qc7nui43d1Rz3Rcbu6o86cmxc6y6IOdz3Rcbu6o57ouN3dUedOTYudZdEHO57ouN3dUc90XG7uqPOnJsXOsuiDnc90XG7uqOe6Ljd3VHnTk2LnWXRBzue6Ljd3VHPdFxu7qjzpybFzrLog53PdFxu7qjnui43d1R505Ni51l0Qc7nui43d1Rz3Rcbu6o86cmxc6y6IOdz3Rcbu6o57ouN3dUedOTYudZdEHO57ouN3dUc90XG7uqPOnJsXOsuiDnc90XG7uqOe6Ljd3VHnTk2LnWXRBzue6Ljd3VHPdFxu7qjzpybFzrLog58eMUT3WSbL95qobzXI5LoqKi9ZMTE+ziqiqj7o0WABLkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa83TUxmSbpqYwAAAlu1SSG7VJAAAAF2ALsAuAAAAAAAAAAAAAFE2FyibAAAAAADPH0ELlI+ghcAa8sqqtk2Gd3RU0cxMIla4uUzGKqldFSzSM6TGK5PeiEobFxc0sLqZKnD4pZVu917ra3WqF31sTKyOlXNpHtzJq1dfgoG1cyxSqi2XYa+YnMBvghvRQk5dAMFTVQ0kaPqJEjYrkairvK1FfS0qMWedkaPS7brtA2QaHPWHeuRdptU88VTEksL0kYuxyAZQVcuVqrZVsl7IYaOrirqdJ4VXIqqmtLKlgNgA121kDqt9KkqaZqXVgGwDXlraSF6slqYY3pta+REUR19HI9GR1cD3u2NbIiqoGwDXqa6mo8vKJmx5tmbrMLMYw+R7WMqo1c5bIm9QN4FJJWRse9y6mJd1uorTTsqadk0V8j0ul0AygAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMEvTUoXl6alAIdtQgl21CAIc5GMc5diJdTzv73Eazb5zt+xqHeqfo0v3F/I4+C/TV+4v6FNz6zEN/pf8AmiquPeG1HgTXKiLOvdMnk6z1h3dOlF0jPdTrbpwp5d7LjeTrPWHd0eTrPWHd07N1F1G3Tg5V7s43k6z1h3dHk6z1h3dOzdRdRt04OVe7ON5Os9Yd3R5Os9Yd3Ts3UXUbdODlXuzjeTrPWHd0eTrPWHd07N1F1G3Tg5V7s43k6z1h3dHk6z1h3dOzdRdRt04OVe7ON5Os9Yd3R5Os9Yd3Ts3UXUbdODlXuzjeTrPWHd0eTrPWHd07N1F1G3Tg5V7s43k6z1h3dHk6z1h3dOzdRdRt04OVe7ON5Os9Yd3R5Os9Yd3Ts3UXUbdODlXuzjeTrPWHd0eTrPWHd07N1F1G3Tg5V7s43k6z1h3dHk6z1h3dOzdRdRt04OVe7ON5Os9Yd3R5Os9Yd3Ts3UXUbdODlXuzjeTrPWHd0eTrPWHd07N1F1G3Tg5V7s43k6z1h3dHk6z1h3dOzdRdRt04OVe7ON5Os9Yd3R5Os9Yd3Ts3UXUbdODlXuzjeTrPWHd0eTrPWHd07N1F1G3Tg5V7s43k6z1h3dHk6z1h3dOzdRdRt04OVe7ON5Os9Yd3R5Os9Yd3Ts3UXUbdODlXuzjeTrPWHd0eTrPWHd07N1F1G3Tg5V7s43k6z1h3dHk6z1h3dOzdRdRt04OVe7ON5Os9Yd3R5Os9Yd3Ts3UXUbdODlXuzjeTrPWHd0eTrPWHd07N1F1G3Tg5V7s43k6z1h3dHk6z1h3dOzdRdRt04OVe7ON5Os9Yd3R5Os9Yd3Ts3UXUbdODlXuzgVWBOihc+KXOrUurVS1yf2fqnaVaZy3aqXb7FO3Iq6N3uU81gn1lH7l/I4mIpqjRoorqvWa/P66PVArdRdS95ywK3UXUCwK3UXUCwK3UXUCwK3UXUCwK3UXUCwK3UXUCwK3UXUCwK3UXUCwK3UXUCwK3UXUCwK3UXUCwK3UXUCwK3UXUCwK3UXUDDN01MZeXpFAAAAlu1SSG7VJAAAAF2ALsAuAAAAAAAAAAAAAFE2FyibAAAAAADPH0ELlI+ghcCHdFTmZjpu6KnHzBEsuY48U8srMXZI9zmsRyNRV2dLwLTq/n2ntmy6Jfd/N8jXp1+t/83+4kZIa19DgVPIxqOVXq2y+93gZahf8A8jpV/wDaX/cc+df/AMfpv6q/7jdnX/8AIKb+kv8AuIHUjqYpnyMjejnRrZyblMmY4+FL/jcQ/qfq46eYkdhvRQkhvRQkhLnYpiFJTo6CrikexzLutHmbYwrTup8LhWhbDLEjVei1V1ytXXqNvGPqmr/pO/I49WlEuH0kksb55Ujii0bJMqpdLpcDXokrabCX1raeifE5XSrpGqrttjvPmpo8JSWoajIHxpnRqLbzurV7zhvooo43K7BqpGNS6/4jUiHbwaKBmHsfTMcxkvn5XOzWA83UJgba6mdC1XUy3SZvn6ty7xXJgarAykarUWRNK/z9TevabsuIu5fVxz4s+lSORWsakWbV2EPxCNGKrf2gkVyJqTQbf7AdDBpcJbK+LDbo9zczkVH60T73vMbqnD8VrYI1ZPHUNdmjflyLq1ql9xu4LPJUYXBLM7PI5Fu5evWpr4g9rMdw971RrUZKqquxNQGKKmgqf2hr0nhjlRrI7Z2ottQr6SnpsUwxYII4ldI6+RqJfUVroY1xOKWGsqI5a1ERqQomxE2r7CIKVq4w2KatqZJqZNIxsqJZyLuAy4xmjxKgnWmlnijSTOkcefalkNOoq4sSSl5HQVDUSoY5ZNDZtkXXrQ6OMNqo4ZamKv5PFHHrZokdmX3rv1IcuFlfhuF0crK20cj2podEmpHLfaBuM+mY9/TZ/wDRTewT6npf6aGiz6Zj39Nn/wBFN7BPqel/poBvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMEvTUoXl6alAIdtQgl21CAMVT9Gl+4v5HHwX6av3F/Q7FT9Gl+4v5HHwX6av3F/Qpr++G6x/BW9BF0jMYYukZi5hAAAAAAAAAAAAJRLgQQXshqzV9LCqo6VMydSa1/sJnRMUzPs2AaTcWonLbO5PexUNuKWKZuaJ7XpvRbkRMSmqiqn3hYFspUlyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsn8N3uU81gv1lH7l/I9LJ/Dd7lPNYL9ZR+5fyKbn3Q3em/iufp6cAFzCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMMvSKF5ekUAAACW7VJIbtUkAAAAXYAuwC4AAAAAAAAAAAAAUTYXKJsAAAAAAM8fQQuUj6CFwId0VOHmO47oqefVcqqm4DJmOVHHJG3E3PYrUfmVqr19LxOjmMdQiyU8jG7XMVE7ANGKmdV4PBG1yNVHquv3uMs6/wDrtOv/ALa/7jLQxvgpI43pZzb3T8TIscazNmVqaRqWRQM7Ua1VVrURXa1VE2k5jHmCLdUROsD0DeihJDeihIGvX07quimgY/Isjcua17HKqcDWGghgoUTStmY98jtq2vr/AL7DugDjzUeMSQSMWuhcjmqltFa5vYZC+mw6CGVER7GIi2U2gBxYsPxKOsq5IZ4oWSyZkzNzX8DJJS4u6NzeW063RUtotp1gBpYRTyUmGQwSoiSMRb2W/WpixDCGYjVwSzPXRRtVFjRNq33nSAHLoMPljrpqupyZk/dwMZsYxNxfFKGSodBUUqtbUwPRWquxU60U6IA5ldQT4hVxsmkalEyzlYnSe7cvsKVFHXVtVE2dYGUkMukRGXzOtsudYAc3EWYhJpIqSKnWOVmVz3uVFRV1G1QU60tDDAqoqxsRqqm82AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYJempQvL01KAQ7ahBLtqEAYqn6NL9xfyOPgv01fuL+h2Kn6NL9xfyOPgv01fuL+hTX98N1j+Ct6CLpGYwxdIzFzCAAARdEC6kucKoqHzyKrlXL1JuJhZbtzXLu3F0POXM8VNLJE6VnRb13Gi6fTxHvLug0sNqHSxua9bqzrN0hnqpmmdJQuwtdGtuupEQquxTSxidY6ZI0XXItl9xEzo4mYiNZc3EMUfUuVkLlbCmy213yNC/YVf5q/kdHRw4exiSxtmqVTMqO6MfzKqaKrlWkPT3rVm1FUfLno9q7HJ2l4p3wvR8b8rt6KbzMSutpqeF7f+1tlQ23RRZWyRojo3pdq2Iv2q7EazH0V2/WUXfpo2cNr21rFRbJK3pIn5m27pHNgVsMqORETqXV1HSdtQmzd3IZrtMU1fT2AAXKgHJxHEanlrcPw9jXVDku97tjEMU78Zw6NaiWaKriZrexG5VRPYB2wYYKiOemZUMd+7e3NdeorFXUk0mjiqYXv3NeiqBsAq97I2K97mtam1XLZEMUFZTVKqkE8ciptRj0UDOCksscLFfK9sbE63LZDE2tpXsR7amFWq7Ki5027veBsA5ktTMn7RQ06PXROgVys6r3U3Z6qCmRFnmjjvszuRLgZgUjkjmYj4ntexditW6FlVGoqqtkQCQcKKsxLFpJH0L2U1MxcrXubmV/aZaWurKavZRYijHLKn7qZmpHewDsA5MNa5mN10c86NgiYxURyojW3RDpQVENQ3NBKyRN7HXAyA131tKxHK+phajXZVu9NS7veXlqIYY0kllYxi7Fc6yKBlBigqIahuaCVkiJtVjrlX1lMzPnqIm5Fs67081faBnBgWspmwpMtREkS7H50sv4mSKaOdmeKRkjN7XXQC4ME1bSwPyTVEUb9znoimZFRzUc1UVF2KgEgAAAAAAArJ/Dd7lPNYL9ZR+5fyPSyfw3e5TzWC/WUfuX8im590N3pv4rn6enABcwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDL0iheXpFAAAAlu1SSG7VJAAAAF2ALsAuAAAAAAAAAAAAAFE2FyibAAAAAADPH0ELlI+ghcAcuuon51liTMi7UQ6gA82t2rZUVPeRc9JlTcMqbkA83cXPSZU3IMqbkA84l1WyIq+46FBRPzpLKmVE2Ip08qbiQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwS9NSheXpqUAh21CCXbUIAxVP0aX7i/kcfBfpq/cX9DsVP0aX7i/kcfBfpq/cX9Cmv74brH8Fb0EXSMxhi6RmLmEAAFXbFODTU76lytYqJZL6zvrsU85DM+nlR7Vs5NqbyYavT66ToyR08j6jQKlnX1+w3sQmbTwtpYtWrX7jKuIU2hWoTLpVbbLfX7jivkdI9XuW7lW6kraYquVa1R7Ong+2X8P1OocrBdsq+79TqkSzX/AL5QuxTkY8v76HdlX9DrrsU52OQq6BsqfyLr9xxV7M1yNaZcZiIs0SrsSRqr2mbFczcRmzdaoqe6xrG4lRBVRNjrMzXsSzZmpfV7Tv09yLdX1ZvKaqPDDRzHao0VMLizfzPVU9xpNgw6Jcz6p8+5jG2udBXukRFVqMREsjU6kJ9f6mibfjT8r/SW589ZQuw6abG+45rUzva1OtTpr1e4wekp0iZbL0+0AANqhxMNsn7R4kj/AOJZqp93V8jYxCqxGmdK+KmhfTsbmzufZbW16hiOGSzVLKyjlSGqYlrrscntNaaixevboaueCGBenor5nAYa6rkr8Ow5jk0SVkyNfk3XtYzYxhdJT4a+amiSGWGzmPbqXabldhcdRQR00TliWGyxOT+VUNOTD8VrmNp62ogSnumdYr5ngYqt64lVYVTTK5IpY9LI3ZmW17f2/uWxyjgw+GGto42wyxSInmasybjexHDHVDYH0siQz0/8JV2W3Ka3N2IV00S4lLDoYnZtHDfzl9oFcQjbW4/TUk91gbFpMl9Tl1mDHaCmpX0csDGxK6ZrVa3Ujvbb/m028bjpX1FNpKl1JU/9KXLq9ynNr4FWejbJX8sqXTNRqNsiNb16k/ADpTf/ALXB/wDGX83HOjlbUYpWzVNBPWZHrGxGtzNYiKvUdqSikdjUVajmaNkOjVL+de6+JrzYfW09bJU4bLEiTa5I5b2vvQDBgjZYsSqWspZ6eke3M1sjbI12r5nWxBFXD6lG9LRPt2KYMPpqyOSSatqdI9+pI2XyM9xvAc39nFauCwZf+6/vzKdFysRzUcrbrsucZuG1+GzSLhkkToJFvopb+avsMtLhtVJXNrcRmZJIxLRxxp5rQNVlHDV/tPWadiPYxjFRi7FXKhkhgjov2nSOnajI5afM5ibL3XwNynopYsXqqxzmaOZrUaiLr1Im3sJfRSOxuOtRzNG2HRql/OvdfEDmYRh9PVVuIS1EaS5ahyNR2xNe4ypBHiH7Qzx1Dc0VLG1I412a0TXY3sMopKOSrdI5ipNMsjcq7EXeYq3DqnlqV2HysZOrcr2ydF6Aa00EeG49RrSt0bKjMySNuxbddvx/sUw+igqsZxJ88bZEY9MrXa01312/A26TD6p9c2txCVjpGJaNkfRaZaCikpq2tne5itqHo5qIutLX29oHMwzDaV+L18T40fFA5MkbtbW5tur8DLhyJQ4ji0cLbRxta9GJvtc36Kilp8Rrah7mKydWq1EXWlt5FNQSRYnWVL1Ysc6NRERdepOsDh4bopKV0tThlTWSzOVXS5LouvqOr+zqTx0ssU0czGMkXRJKlly7jHFh+J4fniw+aB1O5VVqTXuw6OH001NAraiodPK5bucq6k9iewDaAAAAAAABWT+G73KeawX6yj9y/kelk/hu9ynmsF+so/cv5FNz7obvTfxXP09OAC5hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGGXpFC8vSKAAABLdqkkN2qSAAAALsAXYBcAAAAAAAAAAAAAKJsLlE2AAAAAAGePoIXKR9BC4AAAAYnVMDVs6ZiL7XIV5ZT+nj7yE6S58oyzgwcrp/Tx95Byun9PH3kGk4PKnLODC2pgctmysVfY5DMRpomJiQABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBL01KF5empQCHbUIJdtQgDFU/RpfuL+Rx8F+mr9xf0OxU/RpfuL+Rx8F+mr9xf0Ka/vhusfwVvQRdIzGGLpGYuYQAADn1OGNmer2OyKu3VdDoAOqK5onWHI5nd6b4fmEwdb65tX3TrgnVbyK8sNNTsp40YxNX5mYAhTMzM6yhdih7EliVrkujkJKoqt6rpu3BDztdRPpHqqIroupd3vNRNZ6xzo3oqORfxQ0JsMpJFVURWr/wBqKhXNGFFVrDm0MOd+kcmpuz3m+rkvlTznbkMsVDCxiNzyWTq1mzFHBEnmpb8DPNiqurWWu1NNujSPdFHTqzz39Jf7Gw7pe5CNJfotVffqIRFRNa3U1U0xTGkOJmZnWVgAdIAAAAAAAAYaimhqo8k8TZG7nIY6XDqOkdngp2Mdv2qbQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKyfw3e5TzWC/WUfuX8j0sn8N3uU81gv1lH7l/IpufdDd6b+K5+npwAXMIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwy9IoXl6RQAAAJbtUkhu1SQAAABdgC7ALgAAAAAAAAAAAABRNhcomwAAAAAAzx9BC5SPoIXAHBxKvfJK6KNytjatlt1qd1y+ap49XKqqu80+moiqZmfhk9VXNMREfK9zNDTTz64o1VN+xDLR08bYVqqr+GnRbxKUqMSml81jtFGmxrNRqmqZnShkimIjWtn5pqrbGe7Ma09NPT/AMWNUTf1GXkNRyTlWk6s1rrexSnxOeHzXrpY12tfrOYmufaYl1MUR7xMNe50MMr3xytikcro3LZL9SmKspo3QpV0v8Jek3hU0UflVFTah1pTdpcxNVqp7EEN6KEnmPWAYaqpjpKd88yqjGbVRDK1yOajk2KlwJBp1GI09PJJHI52aJmkdZqrZt7GyksboklR7VjVM2a+q28C4NXnOg9dpv8Ayt8S9RVxU7oUkct5noxlkvdVAzgAADFU1EdLTvnlVUYxLrZC8b0kja9uxyIqAWBiqJ46aF80rsrGJdVEE8c8bHsXU9qORF1Lb3AZQYKSrirIdLCqqy6prS2wzIqOS6KipvQCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGCXpqULy9NSgEO2oQS7ahAGOdqvgkam1WqiHCwuZsFYiyLlRUVt16j0Jy67CtK9ZIFRFdrVqlVyJ+kw2emuUxE0V+0utE5qre6GbMm9O08umFVjlskSL/mQtzPXeh+JPEjcqw641r8kPTZk3p2jMm9O08zzPXeh+JPEcz13ofiTxG5Vg41r8kPTZk3p2jMm9O08zzPXeh+JPEcz13ofiTxG5Vg41r8kPTZk3p2jMm9O08zzPXeh+JPEcz13ofiTxG5Vg41r8kPTZk3p2jMm9O08zzPXeh+JPEcz13ofiTxG5Vg41r8kPTZk3p2jMm9O08zzPXeh+JPEcz13ofiTxG5Vg41r8kPTZk3p2jMm9O08zzPXeh+JPEcz13ofiTxG5Vg41r8kPTZk3p2jMm9O08zzPXeh+JPEcz13ofiTxG5Vg41r8kPTZk3p2jMm9O08zzPXeh+JPEcz13ofiTxG5Vg41r8kPTZk3p2jMm9O08zzPXeh+JPEcz13ofiTxG5Vg41r8kPTZk3p2jMm9O08zzPXeh+JPEcz13ofiTxG5Vg41r8kPTZk3p2jMm9O08zzPXeh+JPEcz13ofiTxG5Vg41r8kPTZk3p2jMm9O08zzPXeh+JPEcz13ofiTxG5Vg41r8kPTZk3p2jMm9O08zzPXeh+JPEcz13ofiTxG5Vg41r8kPTZk3p2jMm9O08zzPXeh+JPEcz13ofiTxG5Vg41r8kPTZk3p2jMm9O08zzPXeh+JPEcz13ofiTxG5Vg41r8kPTZk3p2jMm9O08zzPXeh+JPEcz13ofiTxG5Vg41r8kPTZk3p2jMm9O08zzPXeh+JPEcz13ofiTxG5Vg41r8kPTZk3p2jMm9O08zzPXeh+JPEcz13ofiTxG5Vg41r8kPTZk3p2jMm9O08zzPXeh+JPEcz13ofiTxG5Vg41r8kPTZk3p2jMm9O08zzPXeh+JPEcz13ofiTxG5Vg41r8kPTZk3p2jMm9O08zzPXeh+JPEcz13ofiTxG5Vg41r8kPTZk3p2jMm9O08zzPXeh+JPEcz13ofiTxG5Vg41r8kPTZk3p2jMm9O08zzPXeh+JPEcz13ofiTxG5Vg41r8kPTZk3p2jMm9O08zzPXeh+JPEcz13ofiTxG5Vg41r8kO/V1MdPA973ImrUl9qnCwNquxBHJsa1VUhmC1rls5iMTerk/Q7lBQMoYlRvnOXpO3j/qqqJmNEzNuzbmmmdZltAmyjKpcwIBOVRlUCATlUZVAgE5VGVQIBOVRlUCATlUZVAgE5VGVQIBOVRlUCATlUZVAgE5VGVQIBOVRlUCATlUZVAgE5VGVQIBOVRlUCATlUZVAwS9IoXl6RQAAAJbtUkhu1SQAAABdgC7ALgAAAAAAAAAAAABRNhcomwAAAAAAzx9BC5SPoIXAh3RU8fCxZZmRptc5EPYO6Knk8OciV8F9mdDX6adKapY/UxrNMNjF5kWoSBmpkLUaiERNw17G55Jo3W16rpcw4iitr50XbmNa5qoo1ojSWaqr/udYeiWi/wWXlknJ8ubYmzacyVuHMjdo5JpH21arJc7C5eQLT5k0ug6PXsseYKLETVM6yuvzFOmkOjg8qadYH645mqip7TSmYsUz412scqGXDUV2IQonFcjEVR1fPbjUviNLk/pT70R+3rGdFCSGdFCTynqw4P7QUyVVXRwJLKj535VYjvNyJrVbb/AwMZSphDa5Z8RySOsjWy3de6ob+Lx4a6dj62oWKVrfNyvyrY87C6nTBbNdOkyORXrryNTP1e0DKkbHYk9rosWVqw62/8AU29fsO1QtgT9n5nUyzLE5kitSZbqmpUt7tRyG1UHOj3861CM0SJptGt1W+y1jqYR/wDqrv6cv5uA5MuXyfT/ANKyrkb/AInK3emveb+LJiHKKFM1PkWZugSzrov/AHGrPDVt/Zpr316LCsbbQaJE601X2nQknjr8UwyOB6PZG10rlT2ak/ugGxh9XWuxGakrFgVY40eixIvX7zRrcKgixShga+bJOr8/7xepLobtNr/aStXdCxDVxXEaRmLYfKkzHti0mfRrmVLoltgEYxT1dJhk0UL4eRNaiWerlk1rv95blOK0UVGsq0qwyyMiRGo7NZS2MVfLcNggjZJG6slRiNkbZ1kXbbsM+OoiNw9ieuR2/uBr/tCkzpoGPlp2UvSySvVudydS+zYazZaifEoKmGooXzp5ixQOVM7Ou99xtftEuWqw92aFtnP1zJ5iak2mrBJnxvD/AN7RSWWT6Mlreb1gUwylw2Wle6uqbObI7NE6bKia9x3MGkjlwyF8UOhYqLlZe9tanFop0nhc5+EcsmV7ryaJrWrr3noaRXrTM0kKQPtrjRUVG9gGcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgl6alC8vTUoBDtqEEu2oQAAAGSHpobBrw9NDYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXm6amMyTdNTGAAAEt2qSQ3apIAAAAuwBdgFwAAAAAAAAAAAAAomwuUTYAAAAAAZ4+ghcpH0ELgQ7oqeKa5WuRzVsrVuintXdFTxcjVjkcxdrVVDb6PSdYY/VfDo4mxKqGOvhTU5LSInUppUsemqYo+JyIvuL0Va6kcqWR8TtTmLsU20pKapcklBUJFJt0b1sqL7C7WbceM+3xKnSK58o91+V/+vqt/Nvov0/M5tTHoamSPqa5UQ3OZa3PfzL3vmzGRaSmpXrJX1CSybdGxbqq+0imqimf+Z1+iaqaqo+saK4YxKWGSvlSyNTLGi9anNc5XOVyrdVW6mxW1j6t6JZGRt1NYmxDBGxZJGsTa5UQtopmNaqvdXVMTpTS9ozooSQ3ooSeQ9VifTwyvR8kMb3olkc5qKqHHZhdSmAQUatbpmSI5UzarZlU7oA5c9NWR4nLWUzY3qsCRtR7rXXNrFLhT24MyhmmdG7XmdEu9VW39zqADlwfs/h8Fl0OlcmxZXZv7bDFR4fV0kc1S1sDqyV1smxjGp1JY7IA5uGUdRFPU1VY5izzqmqPotRNht09HTUv8CCONV62t1mcAcuGhqX4lLW1TmOexFZTMTotTepi5HiVbWU8lcsEcMD86NiVVVy9W07IA5+I0T6qtoXoxr4onOWRHblTcYG4fO7GIZ9DTwwQK/Ksepz7pbWdcAcSlpMXoInQU6Ub486ua56uvrOhhdI+ioI4JHo97bq5yb1W5tgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwS9NSheXpqUAh21CCXbUIAAADJD00Ng14emhsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABrzdNTGZJumpjAAACW7VJIbtUkAAAAXYAuwC4AAAAAAAAAAAAAUTYXKJsAAAAAAM8fQQuUj6CFwBxsVwp0sizwWzLtbvOyDqiuaJ1hxXRFcaS8c6kqGrZYJPwbcjk0/oJe4p7HKm4ZU3IauZVhn4sZeP0NVbLoprbsqkcmn9BJ3FPY5U3IMqbkHLnBxYy8e2kqXLZIJPxbY6+FYU6KRJ57Zk2N3HYypuQscXPU1Vxp7O6PT00zqAAzNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBL01KF5empQCHbUIJdtQgAAAMkPTQ2DXh6aGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGvN01MZkm6amMAAAJbtUkhu1SQAAABdgC7ALgAAAAAAAAAAAABRNhcomwAAAAAAzx9BC5SPoIXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMEvTUoXl6alAIdtQgl21CAAAAyQ9NDYNeHpobAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa83TUxmSbpqYwAAAlu1SSG7VJAAAAF2ALsAuAAAAAAAAAAAAAFE2FyibAAAAAADPH0ELlI+ghcAAQrkTaoEgjO3egzt3oBIIzt3oM7d6ASCM7d6BHIuxQJAAAGGqqY6SnfPMqoxm2yGVrkc1FTYqXAkGlHilJNWupGSosrerqVdyKboAGtVV0FGsfKH5Ekdla62q/tXqNkAAYHVULdN56K6Bt5ETa3VcDODSlxOnioGVrldon2y6tev2G6ABVXtb0nInvUjSMRquztyptW+oC4NOfFaCBt5KuJPYjsy9iGxTzR1ELJonZmPS6KBkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYJempQvL01KAQ7ahBLtqEAAABkh6aGwa8PTQ2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA15umpjMk3TUxgAABLdqkkN2qSAAAALsAXYBcAAAAAAAAAAAAAKJsLlE2AAAAAAGePoIXKR9BC4A11VU0jtGxyNXrXXs9xsGrkzSPXRRvs7a5df5AFRzb3jj83zl87amvVsCo5t7xx+b5y+dtTXq2GPJb/oxea/fv/D2/2GS3/Ri81+/f+Ht/sBkVHNveOPzfOXztqa9WwKjm3vHH5vnL521NerYY8lv+jF5r9+/8Pb/YZLf9GLzX79/4e3+wGRUc2944/M85fO2pr1bCcrmubdrE87ai+/2GLJb/AKMXmv37/wAPb/Yu2PI9n7uNt3bW7evVsA2wABwv2hgWpnpYEnlbpnZXRtd5uVNarbeaycpWhjlpq+SOGpRUdLVzJ5lupPapvYyzDVlY+sqFimaxcuV6otl9xwYXQ8102TNpEqWZ1m/hJrd/beBvx0U1TRx08C0DWxORWzRSq57Xb/ednCpaiaja+odG9bqjZI11PTecGmW9Ui3hX/Gt/gdDoLsO1+zv1JTe5f8A7KBs4hHDJQztqUvFkVXey3Wc/wDZqtdUUOhlvpYLJr2q1U1KMXmWuqGYVTuXM9bzuT+Rm4jEWc2VkOIxN/co1Ip2t4epfwA7Rwm/S8f/AKbf/o47bHtkYj2ORzXJdFTrQ49dJI3EpqSkpInvqIM8rnOyqqXVoGjBDJicOH0Kse2niiSWV6arrrsiG1hdHSVTnPbJVxywSWfE+W9lRdVzBTYrWU2Fsljo4uTsXRtvIt9tjcoZpUxqSOppIoZ5Ic6vY9VzIi2QCMVp4qrG8PhnZnjcyS6X9hzZY2RYDi0bEysZWK1qbkRzTo4vUx0mNYfNLmRjWyXsl+o5rpEnw6pjYi/4vELMRUsqotlA3osQ/Z2FUWNsTV36Bb/kdikqoayBJqd2aNVsi2VPzNHFfrTC/wCq78jqgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGCXpqULy9NSgEO2oQS7ahAAAAXi6RsNW5rxdIzt6wLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQq2JKu6gF1F1IAE3UXUgATdRdSABN1F1IAE3UXUgATdRdSABN1F1IAE3UXUgATdRdSABN1F1IAE3UXUgATdRdSABN1F1IAE3UXUgATdRdSABN1F1IAE3UXUgATdRdSABN1F1IAE3UXUgAYZekULy9IoAAAEt2qSQ3apIAAAAuwBdgFwAAAAAAAAAAAAAomwuUTYAAAAAAZ4+ghcpH0ELgDSe3z5FWGN/nol3Lr6vYbpjfTxPdmdG1V3qgGm5nT/cRJsZt2X69ntJWJXOe1IYUXKnXs2+w2eSQeiZ2DkkHomdgGu6BVv8AuYUulk17P7ELEque1IYUXKnXs2+w2OSU/oWdhPJIPRM7ANZG+ci8nh85cqJfZa/sLMb58apDGzz1S7V19fsM/JIPRM7CzKeJjszY2ou9EAyAADDLTxSqr3RRuky2Rzmoqp+JyW4XUc00FM5jHPhna+RFXVlut/zO4AOJDQVUEU0qU1Msz5ke2O/msS1rp7TYgoqumwWOkgljZUNS2ZdaJdddjpgDSw7DosPiVGuc+R63kkdtcptvY2RjmPajmuSyovWhYAc3D8Pnw+d8cc6PolS7I3dJi7kXca3IcX5dyzTUek0ej6LrZb3O2APO8y4nyFKPT0ujzZ9jr3vcz8hxflyVizUek0ej6LrZb3O2AMT6eJ88c7mIskaKjHbr7TUdQyTYu2rme10MLbQsTqVdqqdAAaFdSyz11DKxEVkL3K/XvQ3wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBL01KF5empQCHbUIJdtQgAAALxdIzt6zBF0jO3rAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABV3UWKu6gIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYZekULy9IoAAAEt2qSQ3apIAAAAuwBdgFwAAAAAAAAAAAAAomwuUTYAAAAAAZ4+ghcpH0ELgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGCXpqULy9NSgEO2oQS7ahAAAAXi6Rnb1mCLpGdvWBYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACruosVd1AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwy9IoXl6RQAAAJbtUkhu1SQAAABdgC7ALgAAAAAAAAAAAABRNhcomwAAAAAAzx9BC5SPoIXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMEvTUoXl6alAIdtQgl21CAAAAvF0jO3rMEXSM7esCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFXdRYq7qAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhl6RQvL0igAAAS3apJDdqkgAAAC7AF2AXAAAAAAAAAAAAACibC5RNgAAAAABnj6CFykfQQuANGfFIIZFZZz3JtypsN13RU8rHHLMmdtkRetV2lluiKvdTduTRpo7KYzB1xydieJt09VFUNvG5F3p1oee5JNxR9q+BKUs7Vu17EXejl8CybUfCqm/V8vTg83krfWF/8AI4ZK31lf/I452f8AXe/GHpAebyVvrC/+Rxkhq6ujejpXrJFfztd7ETamExfifeHoAEW6XBUvADXrKyGijbJO5Wsc5G3RL61A2AAABSWVkMbpJHIxjUuqr1GtQ4lS4gjuTyZlbtRUsvvA3ADUXE6Fqqi1kCKmpU0iAbYNd1ZAyeGBX+fMirHq1Lb2jlkXLeSIqrLkz2RNSIBsAhVRqK5yoiJtVTRnxihgyXqI3q9yNTI9Ft7V16kA3wYI62llejI6qF7l2NbIiqpkllZDE6SRbMYl1XcgFwYqeoiqYmywvR7HbFQxrWRJXcjW6SqzOl01KnsA2QDWkrYYquKlkVWySoqsumpfZfeBsg15a+kherJaqBj02tdIiKhEdfSSvSOKqge9djWyIqqBsgxVNQylp3zS3yMS62Qq+rp44mSSzRxtel2q9yNv2gZwavOVD67Tf+VviZJ6mGnh0s0jWR8S7AMwNFmL4e9VRtVGqoiquvqQjnrDvXIu0DfBip6iKpiSSGRJGLqzIZQAAAAAAAAAAAAAAAAAAAwS9NSheXpqUAh21CCXbUIAAAC8XSM7eswRdIzt6wLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVd1FiruoCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGGXpFC8vSKAAABLdqkkN2qSAAAALsAXYBcAAAAAAAAAAAAAKJsLlE2AAAAAAGePoIXKR9BC4FZf4anEa1GtRE2JqO1L/AA3HHQutfLNf+EgISXs6ASCBBRzUciouxdRchQOzF/DQsUi/hoXMb0XIxeidWV9Iro5HU7Gv0mRbdWr+5zFhwtUs7DcUVPa1fE71bT1kzmrS1vJkRNaaJH37Tlxc6y4lNRtxVLRMRzn8nbtXqsBhp6XDp5mxJQ4ixXasz0VGp79ZvYe+XC8CjWogldK1VTRtTM66uWxgoG4rWLUJzpk0Ezovo7VvbrOtQpIkGWWqbVPRyosiNRv4WQDgT1jamrtjD1ijjVHNpWMc72pmXrLV1dhlS5k9LUPp6mPUyRsTrW3Lq2HTkr8RZI9rMJc9qKqI7TtTMm85uCVlbFSPbDhzpmrK5c2ma2y7gOjhmIVNQ9sVXTOY9WZ2ysTzHp+m00L4WzHqvlLaZsbGNYjXMSyuXWq+87tLJLLTo+aFYJFvdiuR1te88w+i5LBjDJXJLK1sblkVOtVVVA2ayjdLi8cHLZGxxtWe+pEhS/mohVlFI3F6hrcSlTLE1ZZlttXot7ClRT1DsTWknlgVtY9HyKirdI2rqbr3/mI6SfnNtDVSU6tkk5RKrL69zdf5AdjFq9KWB7HU9RIjo3efGy7W+9eo883ROw+mbFh0/KWNzZuSo5svv61T2nd/aJUTD0R8kjYlkakiRtu5ybkNCqq6Sp0cLKHEYaiFqaNzIvPYnbsAwSVMUdbh8rMLngkYrle1tPlzrb+Xed6XEY4qNlTLDOxr1tkWPzk27U/A4bcQSeup6yZax1PG+0V6dES66tbrnqQOJRUlPVRTzYbUT0zZH+c1EsiKm2yfiajaGafGJYpcRlzUrUVki2v5yazewGaNkU0bntR76mTK2+tbbTBQ0NLi1VW1lRGkrXTZI1uqampa+oDoUVHNBKsj6+Wpba2V1re857FZXUNXLXveraWqcrHs1OYiW2Gf9n4mQur4425WNqVa1NyIakCK7BcYREVVWol1J+AGSXE8GkVZpqXOq7Xvp73/ABL1VPTwYzhS08McSPWRVyNRt/NQ1K3EoZ8A5GyOfS6Njdca2ulr/kb9b9a4N/qf/VAMP7Svq4qOZ2mhSmfZmRW+cq+816iKap/Z1000kE6Rta6FWN6Nuki/h+Rlx6OeqWqdIxW01LHdn/e9ev8ABDew/D4YKd78ypDPE1XxL0UW2tfxA0cXpaJ1BTtpqaFj6uRjWOaxEVEXXc2/2iaiYW1qIlklYlvxOXgLmTYo2KSdHx0rXJTIv8yX29n/ADUdX9o/q1P6zPzA0KqOKokxSojYxsdNCsLMrbXd/Mv6F6OKvWjgVlFh7m6NuVXbVS3WYK+aFlbXMpZGyR1FK50iMW6I9Ov/AJvMdThtHS0uH1r6dXQOa3lCI5dd26l27wOt+zN+aW3tfSP2e86xzcER6UrrUqU1OrrwsVVV1t7rnSAAAAAAAAAAAAAAAAAAADBL01KF5empQCHbUIJdtQgAAALxdIz2Uww9NDYArZws4sAK2cLOLACtnCziwArZws4sAK2cLOLACtnCziwArZws4sAK2cLOLACtnCziwArZws4sAK2cLOLACtnCziwArZws4sAK2cLOLACtnCziwArZws4sAK2cLOLACtnCziwArZws4sAK2cLKWAFcqjKpYAVyqMqlgBXKoyqWAFcqjKpYAVyqMqlgBXKoyqWAFcqjKpYAVyqMqlgBXKoyqWAFcqjKpYAVyqMqlgBXKoyqWAFcqjKpYAVyqMqlgBXKoyqWAFcqjKpYAVyqMqlgBXKoyqWAFcqjKpYAVyqMqlgBrS9IoZJumpjAAACW7VJIbtUkAAAAXYAuwC4AAAAAAAAAAAAAUTYXKJsAAAAAAM8fQQuUj6CFwKS/w3HGQ7Mv8NTiopda+Wa/8LghFFy9nSCLi4ElVJuVVSEu1F/DQuVi/hoWMb0GjiCYi5zWUSwsa5POkftb7kJw3D20Eb0zullkXNJI7a5TdAHGZSYpRT1PJOSvimlWVNIrroq+42KGiqaPDpI2vjWqe5z1cqLlzKdEAcrR476ei7rjXo8PxiiiWKKekyq5Xa0cutTugDTom4g17uWyQObbzdEipr/E0a/BJKyoqpUqXxJM1iI1q6ltxJ1naAHAqMDq5JJ5mVrXSSPRzUdHuXUl+r8A/BK1ZXzpWMfKszZbOjtdUXVr9iXO+AOVi9HX1uWOB1O2FFR/n3zZk93UYUosYSudWI+h0jo9Gqefa17nbAHnEwfFEoI6PS0ejjfnRfOve99x3aXlGhTlaxLLfXor2/uZgBwFwGWCCR0EjX1cr7OldqyNXbl9pvrBU0NJBBhscLmsSztKqp+Or8ToADRwqjlo4JNO5rpppXSvVuy67iuE0stIyqSVERZKl8jbLfUtjoAAuzVtOQymr6rEqaprGwRMp82VI3KqqqpY64A1MUp31WHTwRWzvbZLqalTh9XVsgpVnbFSNjRJUZ0nKnV7jrADm1mEwz00UcH7iSD+C9v8pSspKyrwmKGTRuqEe1X5VsmpTqgDQq8PY6iqIqSKGKSZuVXZbXvvsa9LhE2jayurHTxtZkSFqWZa1vx951wBz8MpKmhV8D5klpkRNDdPOb7FOgAAAAAAAAAAAAAAAAAAAAGCXpqULy9NSgEO2oQS7ahAAAAZIemhsGo1ytW6F9M/eBsA19M/eNM/eBsA19M/eNM/eBsA19M/eNM/eBsA19M/eNM/eBsBVsa+mfvI0rgNi67lF14VMGmfvGmfvAz3XhUXXhUwaZ+8aZ+8DPffqJNbTP3jTO3gbINfTP3jTP3gbANfTP3jTP3gbANfTP3jTP3gbANfTP3jTP3gbANfTP3jTP3gbANfTP3jTP3gbANfTP3jTP3gbANfTP3jTP3gbANfTP3jTP3gbANfTP3jTP3gbANfTP3jTP3gbANfTP3jTP3gbANfTP3jTP3gbANfTP3jTP3gbANfTP3jTP3gbANfTP3jTP3gbANfTP3jTP3gbANfTP3jTP3gbANfTP3jTP3gbANfTP3jTP3gbANfTP3jTP3gbANfTP3jTP3gbANfTP3jTP3gbANfTP3jTP3gbANfTP3jTP3gbANfTP3jTP3gbANfTP3jTP3gbANfTP3jTP3gbANfTP3jTP3gbANfTP3jTP3gbANfTP3jTP3gbANfTP3jTP3gJumpjJc5XLdSAAAAlu1SSG7VJAAAAF2ALsAuAAAAAAAAAAAAAFE2FyibAAAAAADPH0ELlI+ghcCNqGjNQZnq6N1r9Sm+CYmY9nM0xPu5nN0nE0c3ScTTpg63KnO1RhzObpOJo5uk4mnTA3Kjaow5nN0nE0yQ4flejpHXt1Ib4E11SRbpj4E1AA4WAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMEvTUoXl6alAIdtQgl21CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACW7VJIbtUkAAAAXYAuwC4AAAAAAAAAAAAAUTYXKJsAAAAAAM8fQQuUj6CFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBL01KF5empQCHbUIJdtQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlu1SSG7VJAAAAF2ALsAuAAAAAAAAAAAAAFE2FyibAAAAAADPH0ELlI+ghcAcyoxdscisjjz5Vsq3sdF3RU8vDTyStR6uyouzVctt0xV7qL1c06aOlz270Cd/5G7TYjBUJ0sjuFynE5Evpvg+Y5Evpvg+ZZNun4U03q493pczd6DMm9DzXIF9L8HzHIF9L8HzOdn/VnI/x6TMm9CUVF2HmuQr6X4PmWiWahekrH5mJ027NRE2sSRfzD0gIat0RSSlpADWqa2GllhjmVWrM7K1bar+1QNkAAAa3LYeWPpc/7xjM7tWpE94fXU7HwNz5uULaNW60X8QNkA15q6kgvpamFip1K9LgbANSDE6KojWSOoZkR2XM5ct1/EyNrKZ7kayphc5dSIj0VVAzgGtNXQwVUNPI5Wvm6C21L+IGyAAANZtdA6onhz2dA1HSKupGp7yXVkDZ4Ic13ToqxqmtFREvtA2AAABgZVxPrJKVFXSsajl1arKZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBL01KF5empQCHbUIJdtQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlu1SSG7VJAAAAF2ALsAuAAAAAAAAAAAAAFE2FyibAAAAAADPH0ELlI+ghcCkv8NTjNSyWOzL/DccdC618s1/4SAhJezoBIAgq5LpYsQpA7MX8NCxSL+GhcxvRaVdTVk7mrS1vJ0RNaaNHZlONT0dbjVI9lTiKo6ORWvjWBFyuT26j0xwcVl5mrkr4XNVs/mzQKtlducgGN7MUbiUVDHiivVWK97tC3zE6vedRZnYZh75a2p06suufKjVduSxr4CxJYn175Gyz1C3erVvkTqadCopoqlrWzMR7WuRyIu9APNQ1KuwqrqbZquvm0LWp+XYq/2LTwYnTS4bA7kl43ZYsubbb+b5GxhsVTJQq6lZTukZVPVFmvZvusUxBcW5bQaZKPSaRdHkzWvbrA7FFzjndy7k2W3m6HNe/tucDGFhY9qtwt8T1qEVZHNT95r2J7zu0i4ppv8YlIkVv+lmzX/E4WKOfiisqXo5lK2dsMTV1K66+cv9gNqul5bLQRzUUkEaVCJkkRLOSxlxKipqaqw50EEcblqWoqtbYxTR1UNRQQ1LkkbHVIkUl/Oc23WbmNfSMN/wDlNAzYhTV0rs1JXaBEZbR6NHZl967DkU9DWY1RxyzYmqKx+tiwJdj09qKemPPYlOuBVzqiBWvjqbq+BV1o7iQAjcUdii0TMUV2SPPI/Qt83cljpTVK4Xhukq5tPI26ZsuVXquxLGLAoWtpFqnSpNNUrnkei9fD+BvTU8VQsaysR2jfnbfqUDzMb3PwRUZ51Zicyp8Wv8PEyzR4pDiWGxLyPSMa9sOXNlsjdeb8DLhEdW7B6OSjjpnSMWTXPfzbr1WKVS4tzvQaRKPTWk0eXNl6Ou4HaoeX+fy7k/Vk0Ob8b3/A5lVRxc8Ngklq2pUNc9rmz2TNfW1EsdGjXEllXlqUqR5dWhzXv+P4mnNhVW5WyzYsv7q7mudA3zfaBpwYVE7G6mDlFTlZG1cyS+dr3qbOEU7H1s8kclSsdPIrGufNmR6216rHJgdWpPyx1a6KCpkWJajImu2pFVOpDt0OEVNEkbI8ScsLXZlZok87XddYHXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYJempQvL01KAQ7ahBLtqEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEt2qSQ3apIAAAAuwBdgFwAAAAAAAAAAAAAomwuUTYAAAAAAZ4+ghcpH0ELgUl/huOMh2ZEuxxxdmpS618s9/4XBXMMxezLArmGYCxVRmI2rZCEu1F/DQuVjS0aFjG9Bo1yYi97GUToY2KnnSP1q33IUosIip5VqJ3uqalf+rJ1e5Oo6IA5U+D5JnVGHTLSTLtREux3vQ3KJapYP8a2NJUW37tVVFTebIA0MHpZaOmkZMiI50rnpZb6lFfSS1FZQyxomWGRXPuvVY3wANDFaSSqghZCjbsma9b6tSG+AOfiuHLiK06Z8rI5MztdlVPYa7sAjZUU8sEsn7qRHuSR6uuibjsADQrm4nLKkdI+GGJU86RyXci+xCKLCYaVzppFdUVDulLJrVfduOgAOTLg74JXT4XOtM92t0apeN34dRv0a1Dqdq1bWNm/mRi6jOANDBKWWiwyKCZESRqrdEW/WoqqSWXFaGoaiaOFH59e9LIb4AdWo478OrsQd/6lO1sCL/AgvZ3vU7AAwupYH03J3Rt0OXLktqsaEFDXUEzGUtQ2Wkvrjm6TE9inVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgl6alC8vTUoBDtqEEu2oQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS3apJDdqkgAAAC7AF2AXAAAAAAAAAAAAACibC5RNgAAAAABnj6CFzUmrIKSJFmeiX2JtVTV5/peGXsTxOZqiPdZTarqjWIdTaas1CyR2Zq5VU1ef6Xgl7qeI8oKXgl7E8RFyI9pTPprk+9LNzanpF7BzanpF7DDz/AEvBL2J4jn+l4JexPE63v9c8Ovqzc2p6Rewc2p6Reww8/wBLwS9ieI5/peCXsTxG9/pw6+rNzb/7i9hkhoWRuzOXMqGr5QUvBL2J4jygpeCXsTxI3on5THpK4/q6oOVz/S8EvYniOf6Xgl7E8Tnzpy6493q6oOVz/S8EvYniOf6Xgl7E8R505OPd6uqDlc/0vBL2J4jn+l4JexPEedOTj3erqg5XP9LwS9ieI5/peCXsTxHnTk493q6oOVz/AEvBL2J4jn+l4JexPEedOTj3erqg5XP9LwS9ieI5/peCXsTxHnTk493q6oOVz/S8EvYniOf6Xgl7E8R505OPd6uqDlc/0vBL2J4jn+l4JexPEedOTj3erqg5XP8AS8EvYniOf6Xgl7E8R505OPd6uqDlc/0vBL2J4jn+l4JexPEedOTj3erqg5XP9LwS9ieI5/peCXsTxHnTk493q6oOVz/S8EvYniOf6Xgl7E8R505OPd6uqDlc/wBLwS9ieI5/peCXsTxHnTk493q6oOVz/S8EvYniOf6Xgl7E8R505OPd6uqDlc/0vBL2J4jn+l4JexPEedOTj3erqg5XP9LwS9ieI5/peCXsTxHnTk493q6oOVz/AEvBL2J4jn+l4JexPEedOTj3erqg5XP9LwS9ieI5/peCXsTxHnTk493q6oOVz/S8EvYniOf6Xgl7E8R505OPd6uqDlc/0vBL2J4jn+l4JexPEedOTj3erqg5XP8AS8EvYniOf6Xgl7E8R505OPd6uqDlc/0vBL2J4hMepVXoyJ7VRPEedOTj3erel6alCsdRHUpniejk9hY7VTEx9JQ7ahBLtqEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlu1SSG7VJAAAAF2ALsAuAAAAAAAAAAAAAFE2FyibAAAAEPcjGOcuxqXJMdT9Gl+4v5ES6pjWdHn4Y5cTrrK6yu1qvCh1k/Z6C2uWS/4eBo4B9Yf5F/Q9KU26YmNZbvVXq7dfjROkOT5PU/pZe1PAeT1P6WXtTwOuCzwpwzci72cjyep/Sy9qeA8nqf0svangdbMm9BmbvQeFODkXezk+T1P6WXtTwHk9T+ll7U8DrZm70GZu9B4U4ORd7OT5PU/pZe1PAeT1P6WXtTwOtmTehI8KcHIu9nI8nqf0svangPJ6n9LL2p4HXA8KcHIu9nI8nqf0svangPJ6n9LL2p4HXA8KcHIu9nI8nqf0svangPJ6n9LL2p4HXA8KcHIu9nI8nqf0svangPJ6n9LL2p4HXA8KcHIu9nI8nqf0svangPJ6n9LL2p4HXA8KcHIu9nI8nqf0svangPJ6n9LL2p4HXA8KcHIu9nI8nqf0svangPJ6n9LL2p4HXA8KcHIu9nI8nqf0svangPJ6n9LL2p4HXA8KcHIu9nI8nqf0svangPJ6n9LL2p4HXA8KcHIu9nI8nqf0svangPJ6n9LL2p4HXA8KcHIu9nI8nqf0svangPJ6n9LL2p4HXA8KcHIu9nI8nqf0svangPJ6n9LL2p4HXA8KcHIu9nI8nqf0svangPJ6n9LL2p4HXA8KcHIu9nI8nqf0svangPJ6n9LL2p4HXA8KcHIu9nI8nqf0svangPJ6n9LL2p4HXA8KcHIu9nI8nqf0svangPJ6n9LL2p4HXA8KcHIu9nI8nqf0svangPJ6n9LL2p4HXA8KcHIu9nI8nqf0svangPJ6n9LL2p4HXA8KcHIu9nI8nqf0svangPJ6n9LL2p4HXA8KcHIu9nI8nqf0svangPJ6n9LL2p4HXA8KcHIu9nI8nqf0svangPJ6n9LL2p4HXA8KcHIu9nI8nqf0sv9vAq/wDZ6HKuSaRHdV7Kh2QNunBHqbvZ5OkfJQ4gjHcWR6dSnojztd9byf1EPRHFr5hf6v6+NfzMIdtQgl21CC5hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEt2qSQ3apIAAAAuwBdgFwAAAAAAAAAAAAAomwuUTYAAAAx1P0aX7i/kZDHU/RpfuL+RE+zqn7ocfAPrD/Iv6HpjzOAfWH+Rf0PTFdr7Wn1v8ocfEMQfnWKFcqJqVUOu7oqeVc7M5VXaq3IvVTEaQj0tuK6pmfhKuc5buVVX2i5lpKV9U+yLZidJ242nVdNR+bSxpI9Nr3GeKdfrLbVXET40xrLSyPtfKtvcVubnO9Te/me7KXbV01WuWqjRjl2PaT40z7Sjzrp+s0tFHK3Wiqi+w6OHYg5ZEimXMjtSKppVdK+lfZVu1ei5DC12VyOTai3FM1USmqim7RrD1YIb0UJNryAGKoqIqWJZZ3oxibXKanPuGeuM7FA6AOfz7hnrjOxTabUwrAk+lakTkuj1WyAZgaT8WoWSxxLURqsl7KjkVEtvXqE2LUUOS9TG7O9GJlci2v1ruQDdBhiqqeZ2WKeKR1r2a9FUx1OIUlG5GVE7Y3OS6IvWBtA0OfMN9cj/ALmzT1MNXFpIJEey9roBmBimqIoXxskejXSOysTepWmq4ql0qRKqrFIsbrp1oBnBR8jY2Oe5dTEuvuK007KqBk0SqrHpdLoBlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeUrvreT+oh6E89XfW8n9RD0JTa95bvVfbR+kO2oQS7ahBcwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACW7VJIbtUkAAAAXYAuwC4AAAAAAAAAAAAAUTYXKJsAAAAY6n6NL9xfyMhjqfo0v3F/IifZ1T7w4+AfWH+Rf0PTHmcA+sP8i/oemK7X2tPrf5VXdFfceTuesf0V9x5ONU0jb7Loc3vhZ6L+zpVbuR0UdM3U56Znr/z/AJqOal1WyJdVN3GlVK3XwJYphSt5fHm9tvfYrqjWrRot/wDNrz/+p5sqsmbR/hdLmot0VUVLKh6085iuXl8mX2X99jqu3FMawr9PfquVaTDYpHcsopKZ2tzEzMX/AJ/zWc25u4Kv+N/yLc0pFTSOtsupzP1iJW0R411Ux+3rWdFPcSQzooSa3juT+031Q+23O38zVmXEaeaGKXm1rplysXRutf3m1+0K5qemh65aljbHFxV+HTPY+JtSkj50c/MjtnXYDdrecI1jppUw/NU3Y1GRuv7zr0lE2PDoqSoYyVGMRrkVLtW3vPMzphnOFNkbVaKztJfNm2arHfiqIWYSrqWXQMZ5rX1CLq19d9oHDfTrUVszmQZW0872NSGja9qp7daXLS0L5cqrBI3I5Hebh7G39/na09hqSJHiFVKzT0TEVcz6hyZLr7LrrLKyFaV80TsPc5iqmjcmVzrdaawPQ/s+yKXDoarQQMmejkc6ONG/zKnV7iMRrInua2CsoGvaqo9J1RTD+z1W2ViRMqYFYjVVsLWK1zVvfr2lsSpkpahKxIKWSmXVLG+NqKn/AHI7rA1+USevYN2GT9nKymioVikqIWyOmdZudEvfchz+WUjcXfULht6XQdHRJsv07f2OnhNGlRI6ulgp44nomhiYxq5U33ttAwYy6ndirErap8UUUd40iR2a69d7ew51DJh6OqdNXVkaLMuTIrvOb1Kurad/FJ6ttdR01JK2JZ893OZm2IinHhkxCkpsRqIqmNNFUO0iaPpOuiXTcBvQvbJXYxIxfNdBGqL7Mhv4F9TUv3DRiVXV+MKu1YGL8BvYF9TUv3AN8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5Su+t5P6iHoTz1d9byf1EPQlNr3lu9V9tH6Q7ahBLtqEFzCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJbtUkhu1SQAAABdgC7ALgAAAAAAAAAAAABRNhcomwAAABjqfo0v3F/IyGOp+jS/cX8iJ9nVP3Q4+AfWH+Rf0PTHmf2f+sP8i/oemK7X2tPrf5VX9FfceQuewd0VPHuRWuVq7UWxF34W+h/s6dYnLaKOqYl3sTLIn/P+azmIqo5FRbW6zPRVj6SS7Uu1ek1es23UdLW+fSytjeu2Nxxp5fWGimdn/mr2YOdavJl0v42S5qK5VVVXWq9ZvczVV7fu/fmMjaOlovPq5kkemyNo8ap9yLlqn7P/wATRpyKhkqn6nyJljT/AJ/zUcy5nrKx9XJdUysTotTqMDUVz0am1VsROId26ZiJqq95ewZ0U9xJDeihJqeI0KmikqMVpahzm6GBrly9eZf+f2MMNBVT4klXXPZlhVUhiZsT2qdUAaNTSyS4rRVLcujhR+fXr1pZDbkjZMxWSsa9q7WuS6KXAHOp8NRldVzzMheyZWZEtdW2SymrBhdRDQPjjhpdM6Vy3lS6Ixd1us7YA08OoW0VLDGqMdLGzKsiN1rrv2Gs7CXTTPqKyVap7VVYYnamN3ajqgDk0VLVyYlLWVkUcbVh0SMa7NfXcszCXUtS2SgqFhjV15IVS7FTrtuU6gA1Kij09dS1WktyfP5tulmS205qYLPOlXHLO6GKapfIrWIi52ra3u2HdAHNr2YgueKjip1ifHlVz1VFTqNnDqdaSghgcqK5jERVTZc2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeUrvreT+oh6E89XfW8n9RD0JTa95bvVfbR+kO2oQS7ahBcwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACW7VJIbtUkAAAAXYAuwC4AAAAAAAAAAAAAUTYXKJsAAAAY6n6NL9xfyMhWVueF7U2uaqET7OqfuhxcA1Yh/kX9D0x5PC6htHXI6VFRLK1fYekStplS6VEXfQqtTHi1+spq3NYhnOJimGP0jpoW5kdrc1NtzqcspvWIu+hPLKb1iLvoWVREwz2qq7dWsQ8qrVatnIqL7UIPVcrpPTxd5Byqk9PF3kK9uMtvMq6vL6R9rZ3W3XKnquVUnpou8g5VSemi7yDbjJy5j+jyzWq7U1qqvsQ6uF4Y/SJNO3KjdbWrtudRKql6p4u8hPLKb1iLvoTTREfKu56muuNIjRnBg5ZS+sRd9Byyl9Yi76FmsMfjVhnBg5ZS+sRd9Byyl9Yi76DWDxqwzgwcspfWIu+g5ZS+sRd9BrB41YZwYOWUvrEXfQcspfWIu+g1g8asM4MHLKX1iLvoOWUvrEXfQaweNWGcGDllL6xF30HLKX1iLvoNYPGrDODByyl9Yi76DllL6xF30GsHjVhnBg5ZS+sRd9Byyl9Yi76DWDxqwzgwcspfWIu+g5ZS+sRd9BrB41YZwYOWUvrEXfQcspfWIu+g1g8asM4MHLKX1iLvoOWUvrEXfQaweNWGcGDllL6xF30HLKX1iLvoNYPGrDODByyl9Yi76DllL6xF30GsHjVhnBg5ZS+sRd9Byyl9Yi76DWDxqwzgwcspfWIu+g5ZS+sRd9BrB41YZwYOWUvrEXfQcspfWIu+g1g8asM4MHLKX1iLvoOWUvrEXfQaweNWGcGDllL6xF30HLKX1iLvoNYPGrDODByyl9Yi76DllL6xF30GsHjVhnBg5ZS+sRd9Byyl9Yi76DWDxqwzgwcspfWIu+g5ZS+sRd9BrB41YZwYOW03rEXfQq+vpWNVVqI9W5yKNYIoqw85XfW8n9RD0R5tXcsxPMxFs+S6e49IVWvmWz1f0iiJwh21CCXbUILmEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS3apJDdqkgAAAC7AF2AXAAAAAAAAAAAAACibC5RNgAAAAABpVuDsqv3sTtHIu3cpo8w1fFF3l8D0UfQQsVzbpmdWij1VyiNIl5vmGr3xd5fAcw1e+LvL4HpQRtUu+bdea5hq98XeXwHMNXvi7y+B6UDapObdea5hq98XeXwHMNXvi7y+B6UDapObdea5hq98XeXwHMNXvi7y+B6UDapObdea5hq98XeXwHMNXvi7y+B6UDapObdea5hq98XeXwHMNXvi7y+B6UDapObdea5hq98XeXwHMNXvi7y+B6UDapObdea5hq98XeXwHMNXvi7y+B6UDapObdea5hq98XeXwHMNXvi7y+B6UDapObdea5hq98XeXwHMNXvi7y+B6UDapObdea5hq98XeXwHMNXvi7y+B6UDapObdea5hq98XeXwHMNXvi7y+B6UDapObdea5hq98XeXwHMNXvi7y+B6UDapObdea5hq98XeXwHMNXvi7y+B6UDapObdea5hq98XeXwHMNXvi7y+B6UDapObdea5hq98XeXwHMNXvi7y+B6UDapObdea5hq98XeXwHMNXvi7y+B6UDapObdea5hq98XeXwHMNXvi7y+B6UDapObdea5hq98XeXwHMNXvi7y+B6UDapObdea5hq98XeXwHMNXvi7y+B6UDapObdea5hq98XeXwHMNXvi7y+B6UDapObdea5hq98XeXwHMNXvi7y+B6UDapObdea5hq98XeXwHMNXvi7y+B6UDapObdea5hq98XeXwHMNXvi7y+B6UDapObdea5hq98XeXwHMNXvi7y+B6UDapObdea5hq98XeXwCYBV31uiRPevgelA2qTm3XKosNZRKqqueTrdbZ7jbLy9NShZEREaQz1V1VzrUh21CCXbUIJcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACW7VJIbtUkAAAAXYAuwC4AAAAAAAP/2Q==",rr="data:image/jpeg;base64,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AAAVOjT6Ee4cVT6ESELQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hE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ThBt8y1a/wD8lmDYvUvp3lC7t1bXNnJRqRUtKOTWpp+xgeyDmKWO4piUqtXB8MhVtKctFVK1TRdRrcub57C6rwgr08AWKrDqilCajWo1G4uC2ZrVr5gOhBoXWJULfCJ4mpKVFUuMjzaWa1L2meGXNW9w+hdV6Kozqx0uLUs8k9nMBuAADSmtG7klslFS9ueRkY13lea/s1+bGnHr7gMgY6cevuGnHr7glkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19xknms08wAAAAAAAAAAAAAAV5563z7Cwqj5vsAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGH+t/PMSQ/PfXrJAHgcLberPD6VzQjpStaqquOWecVtfs1PszPfGrY9aYHh1ngWN2tK6u50pRhF5KdVwcG8m00mtepbfYeFZUKlfgJdQpRcpKq5ZJa2k4t+Cb9h088CwqdR1JWFFybzeUck/YtXgb1GjSoUlTo04U6a1KMIpJexAcjC3wiphXKamOX3FunlOlymLa1a46LWvdl/gsxynRjwbwuFDjJUHXp6HGpaTi4yazWWWxnQfQ+GOrxrsKDm3m3oLbvy2GxXtqFxCMLilCpGMlKKnFNJrUms+fWwPJ4Xfw9cf7of3I0OE1GKvMKuLipVo2qThOrSllKDex55PLu2JnT16FK5pOlcU4VKbybjNJp5PNamKlGlWpOlVpwnTksnCUU012MDlqtlhELizjLFr67nOrF0oRrxqLPPU2stS6zcmk+HFNtJtWja6nm0erbYZYWlTjLa0pU55ZaUYrNLqfMX8no8o5S6UOOUdFVNFaSW7PbkB5fCTEa+H2EJ2zjCpVqqnxklmoJpvPLZzc5z+Lwo0Kljp4tVvriVeE5Z1E4RiudRWpZtrLXszO1rUaVxSlSr041actsZJNP2M1o4Th0KLpRsaC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Heg4LlWN9O7/AAscqxvp3f4WM+OhyurXDvQcFyrG+nd/hY5VjfTu/wALGfHQ5XVrh3oOC5VjfTu/wscrxvp3f4X8Bnx0OV1a4d6DguVY307v8LHKsb6d3+FjPjocrq1w70HBcqxvp3f4WOVY307v8L+Az46HK6tcO9BwXKsb6d3+FjlWN9O7/Cxnx0OV1a4d6DguVY307v8ACxyrG+nd/hYz46HK6tcO9BwXK8b6d3+F/Acqxvp3f4WM+OhyurXDvQcFyrG+nd/hY5VjfTu/wsZ8dDldWuHeg4LlWN9O7/CxyrG+nd/hYz46HK6tcO9BwfKsb6d3+F/AjlWN9O7/AAsZ8dDldWuHeg4PlWN9O7/C/gOVY307v8L+Az46HK6tcO8BwXK8b6d3+F/Acqxvp3f4WM+OhyurXDvQcFyrG+nd/hY5VjfTu/wsZ8dDldWuHeg4LlWN9O7/AAscqxvp3f4WM+OhyurXDvQcFyrG+nd/hY5VjfTu/wALGfHQ5XVrh3oOC5VjfTu/wscqxvp3f4WM+OhyurXDvQcFyrG+nd/hY5XjfTu/wv4DPjocrq1w70HBcqxvp3f4WOVY307v8LGfHQ5XVrh3oOC5VjfTu/wscqxvp3f4X8Bnx0OV1a4d6DhIYxi1pUi6tWpr/wBFWGpnXYXiNPErVVoJxktU47cmd0XYq7lbaNiuWI3p74boBGlFamz1UkgjTjv8GNOO/wAGBII047/BjTjv8GBII049fcNOPX3ASCNOPX3DTj19wEgjTj19w049fcBII049fcNOPX3ASCNOPX3DTj19wEgjTj19w049fcBII049fcNOPX3ASCNOPX3DTj19wEgjTj19w049fcBII049fcNOPX3ASCNOPX3DTj19wEgjTj19w049fcBII049fcNOPX3ASCNOPX3DTj19wEgjTj19w049fcBII049fcNOPX3ASCNOPX3DTj19wEgjTj19w049fcBII049fcNOPX3ASCNOPX3DTj19wEgjTj19w049fcBII049fcNOPX3ASCNOPX3DTj19wEgjTj19w049fcBII049fcNOPX3ASCNOPX3DTj19wEgjTj19w049fcBII049fcNOPX3ASCNOPX3DTjv8GBII049fcNOPX3ASCNOPX3DTj19wEgjTj19w049fcBII049fcNOPX3ASCNOPX3DTj19wEgjT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",sr="data:image/png;base64,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",ir="data:image/png;base64,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Fqg33HCDf/mFKTTce++99uSTT/rvHTt2tKOOOsoOhA0bNhywAAIAAIBD2/nnn29PPfVUzIPCERcS6tat67sobdmypeC+SZMm+e5KKSkp/nvt2rWtatWq/rNWOVQOpWbqnTt3WmZmpm3atMnWrl1rO3bs8OdoBWLFihV+X1CmpONt377d79Nr9brCFBZ0f+HVEpU56T7dgtWO4P30fL3Hrl27Cp6vn/Xcwu8LAACAQ1eTJk2sW7duHhSWLVtmsRLTxuVvv/3W6tSpY8nJuz8N3a8B8qhRo+yKK67wXoVolSlTxho1auTv3aFDBy9z+vzzz+2iiy6yVatW+XNefPFFf0w7LfXv399+/vlnS01NteOOO85OP/106969u51wwgn+c7169eydd97xc9NAXq/p2rWrjRw50oYNG2b169e31atXW4kSJezZZ5/148+fP9/efPNNW7hwodWqVcsee+wxDxpq3FZQ0K106dLWo0cPDwYPPPCAv5+Cjb4T7QSl8NK7d2/bvHmzf0c6l5tuuskSEhIMAAAAh64gKDzxxBPWs2dPq169uh1sMQ0Js2bNsgULFljbtm19sKuZcQ3GNXDXwPrcc8+1efPm+YD+4osv9seKg8qJNMC+5JJLvDlas/a6NkMQEgIzZsywadOmeZIrX7683zd37lxLSkry3ZeqVatm99xzjweYc845xwf3GqjrXKVChQr24IMPekC47777bOLEiR4m1KCtP7wG/Nddd51/9uHDh/vx7rzzTh/oP/roox409J+kVKlSXg6l60Z07tzZd4PSeev7UiBRYFDQuPLKK61ixYoGAACAQ5vGdBozanwai5AQ03KjFi1a2Pjx461GjRo+4660NGbMGB/Aq8SnZcuWNnbsWGvQoEGxBQRRyZEG8NOnT7dPPvnEQ0paWtovnrdo0SIPD0FACKgcKbhPy0DNmjXzgb0G8/ocWlEQvbZkyZIeDJo2bephQPR5tVKgz6THVVKkwHTKKad4ANHz9d1oFUEUHvSfRPfrvXWcOXPm+IrE66+/bv369fPPlJubawAAADi0abJc4+H27dv7mDAWYhoSTjrpJJ99V7nPI4884qFAJTqa2VcTsertFRouu+wyK26dOnWygQMHelOIzmN3FCR0Dnur91cwCEKBzlslQSppkuBicFoZ0XUgdLw9UQ9EUHem99N/Dl0zYk8qV65szZs3t169evlNqx17ez4AAADinybKFRB0rbA2bdrErJQ8puVGmkl//PHHvZRGg+irr77aLr/8cm8QHj16tA0ePNhuvPFGO+aYY6y4aYCtAb3+AHsavJ966qk2dOhQe+6553wGXysaKvkpTOU/GqTrOPqjqsdAqwna6lSrIJrlV3OyZv+VBNXfsDtXXXWV9zqoN0ErBlopUHAKtmUtql27dv69vfrqqx4YFCyuueaaPfZ3AAAAIP6pHzbWAUES/jfbHdG2OBr4qjRGM+nRfgDtzqPmXzUoi2r4NdBWQNDAuji/oAkTJvgxFVDU76AZfNV8aTVAQUWrCupDUO2XyoIUWFQSpZ2KtNKhMqOZM2da69at/fOLyn7Uv6DjqGRIpUsffvihrwzoedrpSI3FRd9HFCRUilSuXDlbt26d9y3o8yqgaPCv1YjC71f43HQs7cykFQwdTwEFAAAAhy6NOVWWXhzjX00ia1Jc49793AAoPy5CQkC1+WoAHjBggO9AdChTSFDJ0F133WUAAADAwRZNSIir6yToAyh06Hao08qAUiAAAABwqImrlQRROZDKbxhgAwAAAJGLZiUh7rpcVdMPAAAAIHbiqtwIAAAAQOwREgAAAACEEBIAAAAAhBASAAAAAIQQEgAAAACEEBIAAAAAhBASAAAAAIQQEgAAAACEEBIAAAAAhBASAAAAAIQQEgAAAACEEBIAAAAAhBASAAAAAIREHBISEhIsPz/fAAAAAMQnjdkjEXFISEpKstzcXMvLyzMAAAAA8UOT+dnZ2R4SIgkKyRahxMREf8MdO3ZYWlqahwYAAAAAsaeAkJmZ6WP0SEJCQnp6elQ1QzoBrShQegQAAADEB4WD4BaB/IhXEgIpKSl+AwAAAHB4YHcjAAAAACFRrySozIhSIwAAACB+RNqwHIgqJARd0wQFAAAAIL6oHyE5Ofng7m6kUJCVleX9CKmpqexuBAAAAMSJnJwcy8jI8H8j6R+OuCdB10dQKiEgAAAAAPFFKwi6TEGku5BGFRIUDnS9BAAAAADxRWP1SNsCIh7h04MAAAAAHJ5YBgAAAAAQQkgAAAAAEEJIAAAAABBCSAAAAAAQQkgAAAAAEEJIAAAAABBCSAAAAAAQQkgAAAAAEEJIAAAAABBCSAAAAAAQQkgAAAAAEEJIAAAAABASdyEhPz/fAAAAAMROssWJ7du325dffmnjxo2zY4891q6++mqrVKmSAQAAADi44mIlIS8vz55//nkPCa1atbJly5bZHXfcYenp6QYAAADg4IqLkLB06VJbtGiRPfHEE/a73/3O/61Zs6avKgAAAAA4uOIiJKxZs8bKli3rN0lMTLT69evb4sWLLZbUH5GRkWEH265du3x1JVKxOm8AAABEJzs72+JBXISEnJyc3Q6Ks7KyrDgpjOi9Ctu0aZPt3Llzt89X2dOjjz7q/RIHU79+/WzEiBEWqVidNwAAAKLTt29fW758ucVa3OxupNnz9evXF9z0e3F766237L///W/ovpdeeslGjRq12+dXr17drrzySktJSbED7cMPPywY1Ldt29aOP/74/Xm5zZ071yZMmOA/H8zzBgAAQPE5//zz7amnnop5UIibkDB58mS76qqr7PLLL/fbu+++a8Xt4osvtu+//75gNWHr1q3eD6Fmaa1arFy50m9BQElOTrZGjRpZampqwfNXrFjhIUYlPbpt2LDB79uxY8cv3k+P67l6vHATtlZN1q5d6/crGOgYCgkzZsywzMxMH+TXqlXLVz4Kr7Dod9Fr9FodQ++hlZAxY8bYF198YZs3b97jeQfPl23btvlNx1y9enVU5U0AAAAoHk2aNLFu3bp5UFB1SKzEdAvUb7/91urUqeODWg3Si+5mpPtVDqSZ/iuuuMJ7FaJx4okn+oB83bp1PghXY3Tjxo2tZMmS9vLLL/tgORh0P/vssz5wfvDBB+2VV17xAfbrr7/u55Cbm2v33nuv90x88sknfuyNGzfa008/bTVq1Ch4vylTpth7773nx9GxdcyjjjrKPvjgAx/Up6WleYO2zmX+/Pn2/vvvW1JSko0dO9bq1atn06ZNszPOOMMuuOACH8w/+eST9vDDD/uKiELJqlWr7LLLLvOQo52h1IegsKH7HnroIT9v/ed65513/Lz12fXcrl272siRI23w4MG+YrFkyRI75ZRT7M4777SEhAQDAABA7ARBQZv59OzZ0yeQD7aYhoRZs2bZggUL7MILL/QBs2bRAxqsqnl53rx5Hia0ChDMjEdK5Tdnn322ffPNN3bDDTfY119/7ddj0KBcg24N4vUer732mg0aNMiuvfbagtcqIOgctASkc9NqxOOPP24333yz1a1b1z7//HP77LPP7NZbby14jf7A3bt391Dx73//24PB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PWYrV670n9U/8ec//9l/Hj16tN1444128803W69evezss8+2vSl63Ndee82mTp3qP19wwQUeOAo3ahfHygcAAAAODV27dvUKlVgHhbjZAvVgUQP0KaecYv369fNSpoSEhILHNCCfNWuWff311z7Df9ZZZ1mbNm181UCN1H//+9/tpptu8sCikKPXqq9COzLJsmXL7IwzzrC6det62ZBWGfS8du3aWZ06dbz/Yt68eda4cWO78sorbcyYMR5QtKtTZmamVapUyebOneuP6Zh6/qJFi6x27drWqVMnK1OmjL333nv+vGAp6rbbbrOyZct6+Bk1apQHr86dO1vlypUNAAAAhxZNFnfr1s1eeeUVDwqaiNb47mA7Ii+mdt111/kg/ueffw7dP3/+fHvppZesadOmdtlll9mbb77pg3g1UWvQrebqWrVqeenTjBkzrFmzZh4ItALQqFEjmzZtmvcnqF9Bx2nSpIlv4aotXdesWWOlS5e2jh072g8//OABoejrFQwUOjT4VzO3SrIUGLTqod9zc3P9PbQblFYstPqhc9Tz3n77bQ80J554ogcOAAAAHJoUFP70pz/Z5MmTvcw9FmIWElR3v6/bmqrcKKjbLw4atN91111e6rNr166C+zV41+rBeeedZy1atPAZea0qVK9e3Wfr1R9RsWLFgucrOOj3o446yqpWrVpwv4LFqaee6oN/BY7jjjvO6tev789RuNB7asVgT69fvny5P0dhRq/XspMCjC42J1pV+M1vfmMdOnTw52oFRDcFjGOOOcaDDAAAAA5NmjBWb4KuG3b88cdbLMQsJIwdO9bq1atn5cqV+9XnqoTniy++KNb6fA2yNej/4IMPCu7TwFwlPYESJUqEypH21fbt2wu2cw3oYnETJkzwFQM1a2dlZe3x9QpEWlZKTv7/ajD1bej3oC6t8P36TpQ2n376aS9D6t69u40bN84AAABw6NF4T6Xuqh5R2VHRMeXBErOQoN2Azj33XB+Yq/5/bzeFBC216JoJxemOO+7wlBZsr9q6dWsPIyoZ0nupxl8rCqKBuZpI9mVFQyFA/QQqMVq/fr2X/2glQGVLDRs29D6DgI6r9y8cGrSyoPfSEpNWD7755hsPNCpX2h2dk/okLr74Yr9KtfoqAAAAcOj59NNPYx4QJGaNy5oFHzBggL3//vv+uwa5msXXzL1mxzUbrxKfgGbS1QQcrcKlOBUqVLBbbrnFr+wsJ510ki1ZssQefvhhL4Vq2bKlD7xFJT4vvviidenSxVc/gmChMqFgh6bgZ4UNlQEFV4r+/e9/b7/73e/srbfesu+++87PIRjwX3LJJfbGG2/4Z1M40LH1Gu2mpIvJKTzouCo5UtlV4ffT81SupNKtgQMHerjRd6ZSKgAAABx6NM6LdUCQhP8NziOq4dHgVR9CFzyLpCRHoUAz7UEJzQsvvGDNmze3tm3ber2+AoRKZ4LyHw3oq1WrFtF7AQAAAEcaTbxrAxxNLO/nDkn5MVtJ0Ix34ZUCzZTrGgHr1q3zLUG1q4/6BmKx5RMAAABwJIvZSsLuqFZfNVg1a9b00p+gQRcAAADA/olmJSGuQgIAAACA4hFNSKCWBwAAAEAIIQEAAABACCEBAAAAQAghAQAAAEAIIQEAAABACCEBAAAAQAghAQAAAEAIIQEAAABACCEBAAAAQAghAQAAAEAIIQEAAABACCEBAAAAQAghAQAAAEAIIQEAAAA4TCUkJFgkIg4JiYmJlpeXZ/n5+QYAAAAgvmisHqmIQ0JSUpLl5uZadnY2QQEAAACIExqbKyBkZmb6xL5u+yvZIqSlixIlStiuXbssKyvLQwMAAACA2MvJyfGwoPF6JCIOCaJUojfWioJOBAAAAEBsaTI/OTk5ohWEQFQhofBJAAAAADg8sLsRAAAAgJColwBU60TjMgAAABA/VO0T6fanElVIUDgIdjciKAAAAADxQxsLqS0gkrAQcUhQKNCuRikpKZaamsruRgAAAECc0KZCGRkZ/q/G6/sr4p4E7b2qVEJAAAAAAOKLVhDS0tJ8F9JIKn6iCgkKB9FsrQQAAADgwNBYPdK2gIhH+PQgAAAAAIcnlgEAAAAAhBASAAAAAIQQEgAAAACEEBIAAAAAhBASAAAAAIQQEgAAAACEEBIAAAAAhBASAAAAAIQQEgAAAACEEBIAAAAAhBASAAAAAIQQEgAAAACEEBIAAAAAhBASAAAAAITEPCRkZWVZbm6uAQAAAIgPyRYjeXl59u2339pnn31mJUuWtJtvvtkaNmzoj+Xk5NjOnTt/8Zrk5GQrVaqUAQAAADhwYhYSpkyZYv369bMbb7zRNm/ebPfff7/961//snLlytnEiRPtjTfe+MUKQ+nSpa1Xr15WsWJFO1zl5+fbrl27LC0tzQAAAHBkyc7OtpSUFIu1mIWESZMmWatWreySSy7x34cMGWLLli2zpk2bWvPmze2hhx7yAXNh+sLKli1r0dKXv27dOqtdu7bFG30Hffr0sccee8zKlCmz2+coRHz00Ue2adMmu+WWWwgUAAAAh4m+ffvalVdeaXXq1LFYillPQuPGje3HH3+0xYsX+8pBYmKiVa1a1R/TikGjRo3suOOOC93q16/vJUfR0ipGhw4d7Oeff7ZYWblypX311Ve/uL969er+H2NvCXLcuHE2efJka9u2bVwkTQAAABSP888/35566ilbvny5xVLMVhLOOOMMmzVrlv3pT3/yPgPNiAchQf0IGzdu/MVrNCCuUaOGRevLL7/0Afann35qzZo1K7g/IyPDZ+eDwKJAsn37dtuyZYv/XK1aNX9s69atlp6e7uej+xISErxkSp8jNTXVeyr0u46xbdu2gs+klRGFAK1kaJCvkNCiRQurUqVKwTnofRSQdBwdQ++h90tKSvLX6hwVrLSiEpxjcN6i8yE4AAAAHJqaNGli3bp186Cgypq6detaLMQkJKhcZv369XbZZZd5uZEG2bopGGjgq5WFJ554wgfThVWqVMnefvvt0KB6f2nAv3DhQv/SH330UR+Iq8dB9//973/3wb/ORSsNRx99tJf+6Dw08L/99tt9oP/OO+94WNiwYYOXTHXt2tUGDhxo9erV81UAHevBBx+0V155xUaOHGmDBw+2448/3pYsWWKnnHKKXX311fb555/bokWLbNCgQdalS5eChuzCr9Uxp06d6mVRc+fOtWuvvdZLsRRyFAw+/PBDu/zyy/0c9btuWoXp0aOH/wsAAIBDTxAUNB7u2bOnTxQfbDEJCaq10q5GCgtFPfPMM3bOOef47UAYM2aMD9iPOeYYL19SILnooot8VUFh4eGHHy4oaXruuee8R0KDc4UCueeee+yKK67w89Og/KabbrKLL754r++p8PDII494ALnrrru8Wfv666+3ESNG+H+AvdH76z0XLFhgL774ooeqq666ylavXu3hQkFCqwd33nmnhxsFHwUThRwAAAAcmjQuVeXIqlWrjpyQoDKb/v37/6Jx+P3337dhw4bZmWeeaQeCtl1VOKlZs6Z98sknHgaGDh1qF1xwgc2ePdtXNgr3PMyYMcN+97vfFQQEUWOxSpQ0INfsv4KGVhT2RiGhRIkSVrlyZcvMzPRrQ+yrBg0a+PtrFUUrGkVXV1SypUCgciRR+dKKFSsMAAAAhyZNBvfu3dvat2/vY7tYiElIULnQ6NGjvewmGNyq9l+NxBoU64tRU3PRLVC12895550XGrTvj6VLl/ps/llnneXlQyeccIJNmDDBm4jLly/v/xamBKf7NMgPKBgoFOgzaMCu8iCdl8JFcG0HlTApkBwMKs9ScFEZk0qh9N1FU44FAACA2FmzZo0HhAsvvNDatGnjE9OxEJOQ8Le//c26d+9uY8eOtdatW3vZjhp51XCrWXHNhOuxolugqpm3ZcuWPqseCV287dRTT7Vrrrmm4AtXCFCN/29/+1s/Jw36RX8YlRI9//zzNn/+fF8BUJlP586d/VoNelx/xFq1avlqgh5/+umnPfTMnDmzoGF5TzSQVwOyVlVUuhTprk06J523mpsVnubMmeOlTQAAADj0qNom1gFBEv43s55vEVDJjAbEmlmP5ANoMD5q1ChvIlYpjho0NIA/kHv+a3VCg3rdArpegs5BM/FaIVCPgs7n5JNPtgoVKnhgUYDRRd50nxqCFRpUiqSVBr0uOOfp06f7wF/buwZNzWrQ1mdVb4HoM5900kl+lWmdjwb3Z599tgcgUdjQ++m1WvlQcFL/ROH7ix5Tn0Hnrb+DvkOVNQEAAODQo+oajTeLIyBowl1jRo0z97MSJz9mIQEAAADAgRNNSIjZxdQAAAAAxCdCAgAAAIAQQgIAAACAEEICAAAAgBBCAgAAAIAQQgIAAACAEEICAAAAgBBCAgAAAIAQQgIAAACAEEICAAAAgBBCAgAAAIAQQgIAAACAEEICAAAAgBBCAgAAAIAQQgIAAACAEEICAAAAgJCIQ0JCQoLl5+cbAAAAgPikMXskIg4JSUlJlpuba3l5eQYAAAAgfmgyPzs720NCJEEh2SKUmJjob7hjxw5LS0vz0AAAAAAg9hQQMjMzfYweSUhISE9Pj6pmSCegFQVKjwAAAID4oHAQ3CKQH/FKQiAlJcVvAAAAAA4P7G4EAAAAICTqlQSVGVFqBAAAAMSPSBuWA1GFhKBrmqAAAAAAxBf1IyQnJx/c3Y0UCrKysrwfITU1ld2NAAAAgDiRk5NjGRkZ/m8k/cMR9yTo+ghKJQQEAAAAIL5oBUGXKYh0F9KoQoLCga6XAAAAACC+aKweaVtAxCN8ehAAAACAwxPLAAAAAABCCAkAAAAAQggJAAAAAEIICQAAAABCCAkAAAAAQggJAAAAAEIICQAAAABCCAkAAAAAQggJAAAAAEIICQAAAABCCAkAAAAAQggJAAAAAELiJiTk5+cbAAAAgNhLthhSMJg7d6598cUXtnbtWjv11FPtoosuspIlSxoAAACA2IjpSsL48ePt0UcftaSkJGvRooWNHDnSHn74YcvMzCx4jn7Ozc01AAAAAAdHQnp6ekR1PllZWT64L1WqlCUkJNj+ysvLsxtuuMFuu+02O++88/y+7Oxsu/POO61Dhw6+ojB8+HAbMWKElS5d2m655RZr2LChAQAAAPh1qtrZsmWLpaamWmLifq0N5MdsJUEn/L+AYieeeGLBfSkpKXb22WfbnDlzfJXh3XfftUsuucSOPfZYe+CBB2zHjh0GAAAAHK40aR4PYhYSypYt6/9u3Lix4D6tLixdutRq1KhhU6ZMsdatW1u7du18FUGrFevXr7fikJGRYatXr7YVK1bY5s2baZoGAABAXOjbt68tX77cYi1mIUGrBio36tmzp82cOdPWrFljQ4YMsZ9//tlXExo3bmwTJkywJUuW2NixY32JJC0tzaK1ePFi69Wrl73wwgvWp08fe+KJJ2zDhg22v7QS8tlnn+13v4QatfW5AAAAgKLOP/98e+qpp2IeFGK6u1HHjh3930ceecQH2/Xr1/dG5tq1a1u1atV8QN2tWzcrUaKE/eEPf/D7oqEVhGeffdbf94ILLvDgodWLoKdi69atXgKlAKP30v3btm3zx3bu3OkrDtWrV/fXzJgxwz7++GNr2rSp1atXz7Zv3+7BofBrCx9TtWDq3xgzZoz/0Rs1amQVKlSwdevW+bJSxYoVvfcCAAAAR64mTZr4+FdB4aGHHrK6detaLMSkcVk7FmlwXJhCgo4XUDlS+fLlvSRIg3O9R5UqVaJaTVCfw0cffWRPPvmkB4/CtJrxzjvveHDQykKrVq2sa9euvroxePBgO/74431V45RTTrHOnTv7MSZOnOhpT83Xb731lvdMrFq1yi677DL77W9/awsWLLDXX3/dj6nP1759e19CUli59NJLPWB88MEH/v4KH/fee6+HDAAAABzZZs2aZS+99JJX3WicGIloGpdjspLw73//2wYNGhTa6rQoDeIHDBhgb775pn333Xf+ITWofuWVV/yDRkKBo2bNmr8ICKJB/hVXXGHnnHOOD+Jvuukmu/jii/0xrRRotUMrAnfddZfdeOONduutt/r5q6Fa56NdmURB4u233/ZjKSDoGAoSQZBSX4X6Ibp06eKfrWXLlnbVVVd5QCIgAAAAQFRloklzTUBHGhKiEbOQ8Nprr3nJzZ706NHDJk2a5DP2ohKfNm3a+Cy/ypEioXKewo3ShS1btsyaNWvmg3mtjqj0KehVUEhQsKhcubIHA62iFKYVBH0mJTWltKCESE3YzZs33+NKy+WXX27PPPOMh6DrrruuYCtYAAAAHLk0ody7d2+vQtG1xGIhJo3LycnJu53NL6zozLoG91WrVvXXRkrbrc6ePdsWLVpUcJ/ChygYBKFAA3wN+MuUKbNPx1V/gnoXunfvbp06dSroLdC5btq0aY+vUyp89dVX/QJyWsnQTksAAAA4cmkzHwWECy+80CfII7keWXGIyUrCqaeeal999ZXX8u+OBsvTp0+3a665xn9X82+/fv28T6BSpUoWKa1A3HzzzT6Y1xdfrlw5X0FQj4Fu2vVI9+uPU6tWLV9NUKjYnaDp+PPPP/edmBQ81JQ8derUgus56POpUbpt27ZewqTPo2Cgi8TpuWqGVt+CzkPvV7gnAwAAAEee/v37xzwgSEwal1W3/8c//tH++te/2mmnnVawqqDmXtXsq1Zfx9QWqUOHDvXAoLos1f8XR03WypUr/ZgauB999NFeZqRVi/nz5/uqgN5LDcpqklYfg1YV1A8ho0aNspNOOsk/t46hnYrOPfdc/0x6vVYrtESkQKNeheCY2vFI133Q51IDtShcKFQoLJx88sl+fQgAAAAcubRjpqpSiiMgRNO4HJOQIJMnT7ann37adzDSFZXVmKHB9cKFC33rp7vvvtsH3tOmTfPfVdtPYy8AAACwbw7JkCCaQVcIUDjQ8XQsza43aNBgfz8IAAAAgEIO2ZAAAAAA4MCIJiQwXQ8AAAAghJAAAAAAIISQAAAAACCEkAAAAAAghJAAAAAAIISQAAAAACCEkAAAAAAghJAAAAAAIISQAAAAACCEkAAAAAAghJAAAAAAIISQAAAAACCEkAAAAAAghJAAAAAAICTikJCQkGD5+fkGAAAAID5pzB6JiENCUlKS5ebmWl5engEAAACIH5rMz87O9pAQSVBItgglJib6G+7YscPS0tI8NAAAAACIPQWEzMxMH6NHEhIS0tPTo6oZ0gloRYHSIwAAACA+KBwEtwjkR7ySEEhJSfEbAAAAgMMDuxsBAAAACIlqJUElRmpcpoEZAAAAiB9BqZH6iCMRVUhQONCtRIkSNC4DAAAAcUAT+Tk5OZaVleXj9EiCgkJCRB3HwQpCqVKl6EkAAAAA4khqaqrt2rXLbyVLlvy1p/9i+6P/AxLzgaft3EodAAAAAElFTkSuQmCC",cr={key:0,class:"card"},dr={class:"card-body"},Ir={class:"card-wrapper"},Mr={class:"title"},gr={class:"button"},Nr={class:"allow"},Cr={class:"image-wrapper"},ur=["src"],pr=A.defineComponent({__name:"SystemPermitTip",props:{platform:{},language:{}},setup(o){const e={mac:{"zh-cn":ye,en:rr},win:{"zh-cn":sr,en:ir}},t=o,n=A.computed(()=>t.platform==="mac"?"mac-privacy":"win-privacy"),l=A.computed(()=>t.platform==="mac"?"mac-preferences":"win-preferences"),i=A.ref(ye),c=A.ref(!0),d=M=>{M&&X.isPC&&(c.value=!0)},I=()=>{c.value=!1};return A.watch(()=>t.language,()=>{i.value=e[t.platform][t.language]},{immediate:!0}),A.onMounted(()=>{r.watch(s.CALL,{[a.SHOW_PERMISSION_TIP]:d},{notifyRangeWhenWatch:a.MYSELF})}),A.onUnmounted(()=>{r.unwatch(s.CALL,{[a.SHOW_PERMISSION_TIP]:d})}),(M,g)=>A.unref(c)?(A.openBlock(),A.createElementBlock("div",cr,[A.createElementVNode("div",dr,[A.createElementVNode("div",{class:"close",onClick:I},[A.createVNode(lr)]),A.createElementVNode("div",Ir,[A.createElementVNode("div",Mr,A.toDisplayString(A.unref(B)("browser-authorization")),1),A.createElementVNode("div",gr,A.toDisplayString(A.unref(B)(A.unref(l))),1),A.createElementVNode("div",Nr,A.toDisplayString(A.unref(B)(A.unref(n))),1),A.createElementVNode("div",Cr,[A.createElementVNode("img",{src:A.unref(i),class:"image",alt:"system permit"},null,8,ur)])])])])):A.createCommentVNode("",!0)}}),Ss="",Lr=V(pr,[["__scopeId","data-v-2ea845a3"]]),fr={class:"tip"},Dr={class:"card"},mr=A.defineComponent({__name:"PermitTip",setup(o){const e=A.computed(()=>X.isMAC?jA.MAC:jA.WIN),t=A.ref(r.getData(s.CALL,a.LANGUAGE)),n=l=>t.value=l;return A.onMounted(()=>{r.watch(s.CALL,{[a.LANGUAGE]:n},{notifyRangeWhenWatch:a.MYSELF})}),A.onUnmounted(()=>{r.unwatch(s.CALL,{[a.LANGUAGE]:n})}),(l,i)=>(A.openBlock(),A.createElementBlock("div",fr,[A.createElementVNode("div",Dr,[A.createVNode(Lr,{platform:A.unref(e),language:A.unref(t)},null,8,["platform","language"])])]))}}),hs="",Er=V(mr,[["__scopeId","data-v-cd63c32e"]]),Se={};let qA=null,Tr=1;const yr=()=>{const o=document.body,e=document.createElement("div");qA&&(o.removeChild(qA.el),A.render(null,e));const t=A.createVNode(Er,{index:`permit-item-${Tr++}`,destroy(){A.render(null,e)}});A.render(t,e),o.appendChild(e.firstElementChild),qA=t};Se.show=()=>yr();const Sr={class:"toast-content"},hr=A.defineComponent({__name:"Toast",props:{type:{},duration:{},message:{},index:{},showClose:{type:Boolean},destroy:{type:Function},close:{type:Function}},setup(o){const e=o,t=A.ref(!1),n=A.ref(null),l=A.computed(()=>`toast-container ${e.type}`),i=()=>{e.destroy()},c=()=>{e.close(),t.value=!1},d=()=>{n.value&&clearTimeout(n.value),e.duration&&(n.value=setTimeout(()=>{c()},e.duration))};return A.onMounted(()=>{t.value=!0,d()}),A.onUnmounted(()=>{n.value&&clearTimeout(n.value)}),(I,M)=>(A.openBlock(),A.createBlock(A.Transition,{name:"slide-up",onAfterLeave:i},{default:A.withCtx(()=>[A.withDirectives((A.openBlock(),A.createElementBlock("div",{key:I.index,class:A.normalizeClass(A.unref(l))},[A.createElementVNode("div",Sr,A.toDisplayString(I.message),1),A.withDirectives(A.createElementVNode("i",{onClick:c,class:"toast-close-icon"},null,512),[[A.vShow,I.showClose]])],2)),[[A.vShow,A.unref(t)]])]),_:1}))}}),Us="",Ur=V(hr,[["__scopeId","data-v-27fc22c5"]]),aA={},Z=[];let jr=1;function zr(){var e,t,n;const o=Z.length;return o>0?(n=(t=(e=Z[o-1])==null?void 0:e.el)==null?void 0:t.style)==null?void 0:n.top:"30px"}function Vr(){var e,t;const o=Z.length;return o>0?(t=(e=Z[o-1])==null?void 0:e.el)==null?void 0:t.offsetHeight:0}const he=o=>{const{type:e,duration:t=3e3,message:n,showClose:l=!1,onClose:i}=o,c=document.body,d=document.createElement("div"),I=A.createVNode(Ur,{type:e,duration:t,message:n,showClose:l,index:`toast-item-${jr++}`,close(){var N,u,D,y;const C=Z.findIndex(L=>L===I);console.log((u=(N=Z[C])==null?void 0:N.el)==null?void 0:u.offsetHeight);const p=parseInt((y=(D=Z[C])==null?void 0:D.el)==null?void 0:y.offsetHeight)+20;for(let L=0;L{let e={};aA[o]=t=>{typeof t=="string"?e.message=t:e=t,he({type:o,...e})}}),aA.show=o=>{let e={};return typeof o=="string"?(e.message=o,e.type="info"):e=o,he({type:"info",...e})};const dA=A.defineComponent({__name:"TUICallKit",props:{beforeCalling:{},afterCalling:{},onMinimized:{},onMessageSentByMe:{},kickedOut:{},statusChanged:{},allowedMinimized:{type:Boolean,default:!1},allowedFullScreen:{type:Boolean,default:!0},videoDisplayMode:{default:"cover"},videoResolution:{default:"480p"}},setup(o){const e=!X.isPC,t=A.ref(r.getData(s.CALL,a.CALL_STATUS)),n=A.ref(r.getData(s.CALL,a.IS_GROUP)),l=e?"TUICallKit-mobile transition-animation":"TUICallKit-desktop",i=A.ref(""),c=A.ref(""),d=A.ref(""),I=A.ref(!1),M=A.ref(r.getData(s.CALL,a.CALL_MEDIA_TYPE)),g=o,{beforeCalling:C,afterCalling:p,onMinimized:N,onMessageSentByMe:u,videoDisplayMode:D,videoResolution:y,kickedOut:L,statusChanged:w,allowedMinimized:E}=A.toRefs(g),z=b=>{t.value=b},f=b=>{n.value=b},S=b=>{b.text&&Q(b.text,b.type||"info")},O=b=>{M.value=b,e&&I.value&&(d.value="miniMized-mobile-audio",c.value=""),e&&!I.value&&(c.value="mobile-audio")},q=b=>{I.value=b,b?e?M.value===T.AUDIO?c.value="miniMized-mobile-audio":d.value="miniMized-mobile-video":i.value="miniMized":(c.value="mobile-audio",i.value="",d.value="")},m=b=>{if(b&&X.isPC)try{Se.show()}catch(UA){console.debug(UA)}};A.watchEffect(()=>{h.setCallback({beforeCalling:C&&C.value,afterCalling:p&&p.value,onMinimized:N&&N.value,onMessageSentByMe:u&&u.value,kickedOut:L&&L.value,statusChanged:w&&w.value})}),A.onMounted(()=>{E.value&&h.enableFloatWindow(E.value),h.setVideoDisplayMode(D.value),h.setVideoResolution(y.value),r.watch(s.CALL,{[a.CALL_STATUS]:z,[a.IS_GROUP]:f,[a.TOAST_INFO]:S,[a.CALL_MEDIA_TYPE]:O,[a.SHOW_PERMISSION_TIP]:m},{notifyRangeWhenWatch:a.MYSELF}),r.watch(s.CALL,{[a.IS_MINIMIZED]:q})});function Q(b,UA){switch(UA){case"info":aA==null||aA.info(b);break;case"error":aA==null||aA.error(b);break}}return A.onUnmounted(()=>{r.unwatch(s.CALL,{[a.CALL_STATUS]:z,[a.IS_GROUP]:f,[a.TOAST_INFO]:S,[a.IS_MINIMIZED]:q,[a.SHOW_PERMISSION_TIP]:m})}),(b,UA)=>A.unref(t)!==A.unref(j).IDLE?(A.openBlock(),A.createElementBlock("div",{key:0,id:"tui-call-kit-id",class:A.normalizeClass([A.unref(l),A.unref(i),A.unref(d),A.unref(c)])},[A.unref(n)?(A.openBlock(),A.createBlock(er,{key:1,class:"singCall"})):(A.openBlock(),A.createBlock(Rn,{key:0,class:"singCall","allowed-full-screen":b.allowedFullScreen},null,8,["allowed-full-screen"]))],2)):A.createCommentVNode("",!0)}}),js="",Ue=o=>(o.component("TUICallKit",{server:h}),h.bindTUICore(o),dA),je=o=>{o.component("TUICallKit",dA),console.log("TUICallKit&mini installed",o)};dA.plugin=Ue,dA.install=je;const Or={AUDIO_CALL:1,VIDEO_CALL:2},Br="2.5.2";R.CallMediaType=T,R.CallRole=x,R.NAME=a,R.STATUS=G,R.StoreName=s,R.TUICallKit=dA,R.TUICallKitServer=h,R.TUICallType=Or,R.TUIGlobal=X,R.TUIStore=r,R.Version=Br,R.VideoDisplayMode=nA,R.VideoResolution=oA,R.install=je,R.plugin=Ue,R.t=B,Object.defineProperty(R,Symbol.toStringTag,{value:"Module"})});
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/types/Components/assets/desktop/permission/index.d.ts b/iweb/src/TUIKit/TUIComponents/components/call/types/Components/assets/desktop/permission/index.d.ts
new file mode 100644
index 0000000..b0259de
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/types/Components/assets/desktop/permission/index.d.ts
@@ -0,0 +1,5 @@
+import MacPermitZhPng from './mac/permit-zh.jpg';
+import MacPermitEnPng from './mac/permit-en.jpg';
+import WinPermitZhPng from './win/permit-zh.png';
+import WinPermitEnPng from './win/permit-en.png';
+export { MacPermitZhPng, MacPermitEnPng, WinPermitZhPng, WinPermitEnPng, };
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/types/Components/components/common/Button/Btn/hooks/useListenerEvent.d.ts b/iweb/src/TUIKit/TUIComponents/components/call/types/Components/components/common/Button/Btn/hooks/useListenerEvent.d.ts
new file mode 100644
index 0000000..b081f07
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/types/Components/components/common/Button/Btn/hooks/useListenerEvent.d.ts
@@ -0,0 +1,13 @@
+/**
+* @function 给目标元素添加事件监听
+* @description 给目标元素添加事件监听
+* @param {HTMLElement} 需要监听的元素,,为空默认window.document
+* @param {String} 事件名
+* @param {Function} 回调函数
+* @param {Object} 监听事件的选项,同addEventListener的options参数
+* @return {void} 返回停止监听的函数
+* @example
+* useListenEvent(btnEl, 'click', () => { console.log('click btn');});
+*/
+export declare function useListenEvent(event: string, handler: Function, options: object): () => any;
+export declare function useListenEvent(target: HTMLElement, event: string, handler: Function, options: object): () => any;
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/types/Components/components/common/Button/Btn/hooks/useOnClickOutSide.d.ts b/iweb/src/TUIKit/TUIComponents/components/call/types/Components/components/common/Button/Btn/hooks/useOnClickOutSide.d.ts
new file mode 100644
index 0000000..045e3bf
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/types/Components/components/common/Button/Btn/hooks/useOnClickOutSide.d.ts
@@ -0,0 +1 @@
+export declare function useOnClickOutSide(targetEls: any[], handler: () => any): void;
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/types/Components/components/common/PermitTip/PermitTip.d.ts b/iweb/src/TUIKit/TUIComponents/components/call/types/Components/components/common/PermitTip/PermitTip.d.ts
new file mode 100644
index 0000000..256a787
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/types/Components/components/common/PermitTip/PermitTip.d.ts
@@ -0,0 +1,3 @@
+declare const PermitTip: any;
+export declare const createToast: () => void;
+export { PermitTip, };
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/types/Components/components/common/SelectUser/index.d.ts b/iweb/src/TUIKit/TUIComponents/components/call/types/Components/components/common/SelectUser/index.d.ts
new file mode 100644
index 0000000..ad1bf11
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/types/Components/components/common/SelectUser/index.d.ts
@@ -0,0 +1,6 @@
+import TDialog from "./components/Dialog/TDialog.vue";
+import TTransfer from "./components/Transfer/TTransfer.vue";
+import TIcon from "./components/Icon/TIcon.vue";
+import SelectUser from "./SelectUser.vue";
+export { TDialog, TTransfer, TIcon };
+export default SelectUser;
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/types/Components/components/common/Swiper/index.d.ts b/iweb/src/TUIKit/TUIComponents/components/call/types/Components/components/common/Swiper/index.d.ts
new file mode 100644
index 0000000..5ba27b7
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/types/Components/components/common/Swiper/index.d.ts
@@ -0,0 +1,7 @@
+import Swiper from './Swiper.vue';
+import SwiperSlider from './SwiperSlider.vue';
+export declare enum Direction {
+ LEFT = "left",
+ RIGHT = "right"
+}
+export { Swiper, SwiperSlider };
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/types/Components/components/common/Swiper/useSlide.d.ts b/iweb/src/TUIKit/TUIComponents/components/call/types/Components/components/common/Swiper/useSlide.d.ts
new file mode 100644
index 0000000..6623b31
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/types/Components/components/common/Swiper/useSlide.d.ts
@@ -0,0 +1,7 @@
+import { Direction } from '.';
+export default function useSlide({ pageCount }: {
+ pageCount: any;
+}): {
+ currentIndex: import("@vue/reactivity").Ref;
+ direction: import("@vue/reactivity").Ref;
+};
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/types/Components/components/common/Swiper/useSwiperSliders.d.ts b/iweb/src/TUIKit/TUIComponents/components/call/types/Components/components/common/Swiper/useSwiperSliders.d.ts
new file mode 100644
index 0000000..29a5d49
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/types/Components/components/common/Swiper/useSwiperSliders.d.ts
@@ -0,0 +1 @@
+export declare function useSwiperSliders(swiperContainerRef: any): any;
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/types/Components/components/common/SwiperWx/index.d.ts b/iweb/src/TUIKit/TUIComponents/components/call/types/Components/components/common/SwiperWx/index.d.ts
new file mode 100644
index 0000000..37b2ca7
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/types/Components/components/common/SwiperWx/index.d.ts
@@ -0,0 +1,4 @@
+export declare enum Direction {
+ LEFT = "left",
+ RIGHT = "right"
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/types/Components/components/common/Toast/Toast.d.ts b/iweb/src/TUIKit/TUIComponents/components/call/types/Components/components/common/Toast/Toast.d.ts
new file mode 100644
index 0000000..118ee3f
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/types/Components/components/common/Toast/Toast.d.ts
@@ -0,0 +1,4 @@
+import { CreateToast, TToast } from './type';
+declare const Toast: TToast;
+export declare const createToast: CreateToast;
+export { Toast, };
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/types/Components/components/common/Toast/index.d.ts b/iweb/src/TUIKit/TUIComponents/components/call/types/Components/components/common/Toast/index.d.ts
new file mode 100644
index 0000000..9011456
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/types/Components/components/common/Toast/index.d.ts
@@ -0,0 +1,2 @@
+import { createToast, Toast } from './Toast';
+export { createToast, Toast, };
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/types/Components/components/common/Toast/type.d.ts b/iweb/src/TUIKit/TUIComponents/components/call/types/Components/components/common/Toast/type.d.ts
new file mode 100644
index 0000000..b8dc9bf
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/types/Components/components/common/Toast/type.d.ts
@@ -0,0 +1,16 @@
+export type ToastType = 'info' | 'waring' | 'error';
+export type TToastOptions = {
+ type?: ToastType;
+ duration?: number;
+ message: string;
+ showClose?: boolean;
+ onClose?: () => void;
+};
+export type CreateToast = (options: TToastOptions) => any;
+export type TToast = {
+ info?: (options: TToastOptions) => void;
+ success?: (options: TToastOptions) => void;
+ waring?: (options: TToastOptions) => void;
+ error?: (options: TToastOptions) => void;
+ show?: (options: TToastOptions) => void;
+};
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/CallService/bellContext.d.ts b/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/CallService/bellContext.d.ts
new file mode 100644
index 0000000..b3dd8e2
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/CallService/bellContext.d.ts
@@ -0,0 +1,15 @@
+import { IBellParams } from '../interface/index';
+export declare class BellContext {
+ private _bellContext;
+ private _isMuteBell;
+ private _calleeBellFilePath;
+ private _callRole;
+ private _callStatus;
+ constructor();
+ setBellSrc(): void;
+ setBellProperties(bellParams: IBellParams): void;
+ play(): Promise;
+ stop(): Promise;
+ setBellMute(enable: boolean): Promise;
+ destroy(): void;
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/CallService/index.d.ts b/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/CallService/index.d.ts
new file mode 100644
index 0000000..681c8c8
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/CallService/index.d.ts
@@ -0,0 +1,109 @@
+import { ITUICallService, ICallParams, IGroupCallParams, ICallbackParam, ISelfInfoParams, IInviteUserParams, IJoinInGroupCallParams, IInitParams } from '../interface/ICallService';
+import { LanguageType, LOG_LEVEL, VideoDisplayMode, VideoResolution } from '../const/index';
+import { ITUIGlobal } from '../interface/ITUIGlobal';
+import { ITUIStore } from '../interface/ITUIStore';
+declare const TUIGlobal: ITUIGlobal;
+declare const TUIStore: ITUIStore;
+export { TUIGlobal, TUIStore };
+export default class TUICallService implements ITUICallService {
+ static instance: TUICallService;
+ _tuiCallEngine: any;
+ private _tim;
+ private _TUICore;
+ private _timerId;
+ private _startTimeStamp;
+ private _bellContext;
+ private _defaultOfflinePushInfo;
+ constructor();
+ static getInstance(): TUICallService;
+ init(params: IInitParams): Promise;
+ destroyed(): Promise;
+ call(callParams: ICallParams): Promise;
+ groupCall(groupCallParams: IGroupCallParams): Promise;
+ inviteUser(params: IInviteUserParams): Promise;
+ joinInGroupCall(params: IJoinInGroupCallParams): Promise;
+ getTUICallEngineInstance(): any;
+ setLogLevel(level: LOG_LEVEL): void;
+ setLanguage(language: LanguageType): void;
+ enableFloatWindow(enable: boolean): void;
+ setSelfInfo(params: ISelfInfoParams): Promise;
+ enableAIVoice(enable: boolean): Promise;
+ setCallingBell(filePath?: string): Promise;
+ enableMuteMode(enable: boolean): Promise;
+ accept(): Promise;
+ hangup(): Promise;
+ reject(): Promise;
+ openCamera(videoViewDomID: string): Promise;
+ closeCamera(): Promise;
+ openMicrophone(): Promise;
+ closeMicrophone(): Promise;
+ switchScreen(userId: string): void;
+ switchCallMediaType(): Promise;
+ switchCamera(): Promise;
+ setSoundMode(type?: string): void;
+ getTim(): any;
+ switchDevice(params: any): Promise;
+ private _addListenTuiCallEngineEvent;
+ private _removeListenTuiCallEngineEvent;
+ private _handleError;
+ private _handleNewInvitationReceived;
+ private _handleUserAccept;
+ private _handleUserEnter;
+ private _callerChangeToConnected;
+ private _handleUserLeave;
+ private _unNormalEventsManager;
+ private _handleInviteeReject;
+ private _handleNoResponse;
+ private _handleLineBusy;
+ private _handleCallingCancel;
+ private _handleCallingEnd;
+ private _handleSDKReady;
+ private _handleKickedOut;
+ private _handleCallTypeChange;
+ private _messageSentByMe;
+ private _handleUserVideoAvailable;
+ private _handleUserAudioAvailable;
+ private _handleUserVoiceVolume;
+ private _handleDeviceUpdate;
+ private _updateDeviceList;
+ private _handleUserUpdate;
+ private _handleCallError;
+ beforeCalling: ((...args: any[]) => void) | undefined;
+ afterCalling: ((...args: any[]) => void) | undefined;
+ onMinimized: ((...args: any[]) => void) | undefined;
+ onMessageSentByMe: ((...args: any[]) => void) | undefined;
+ kickedOut: ((...args: any[]) => void) | undefined;
+ statusChanged: ((...args: any[]) => void) | undefined;
+ setCallback(params: ICallbackParam): void;
+ getDeviceList(deviceType: string): Promise;
+ toggleMinimize(): void;
+ private _executeExternalBeforeCalling;
+ private _executeExternalAfterCalling;
+ setVideoDisplayMode(displayMode: VideoDisplayMode): void;
+ setVideoResolution(resolution: VideoResolution): Promise;
+ private _startRemoteView;
+ private _setRemoteUserInfoAudioVideoAvailable;
+ private _handleExceptionExit;
+ private _setLocalUserInfoAudioVideoAvailable;
+ private _updateCallStoreBeforeCall;
+ private _updateCallStoreAfterCall;
+ private _resetCurrentDevice;
+ private _resetCallStore;
+ private _noDevicePermissionToast;
+ private _startTimer;
+ private _updateCallDuration;
+ private _stopTimer;
+ private _deleteRemoteUser;
+ private _analyzeEventData;
+ getGroupMemberList(count: number, offset: number): Promise;
+ getGroupProfile(): Promise;
+ private _handleCallStatusChange;
+ private _watchTUIStore;
+ private _unwatchTUIStore;
+ bindTUICore(TUICore: any): void;
+ private _callTUIService;
+ onNotifyEvent(eventName: string, subKey: string): Promise;
+ onCall(method: String, params: any): Promise;
+ private _handleTUICoreOnClick;
+ onGetExtension(extensionID: string, params: any): any[];
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/CallService/miniProgram.d.ts b/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/CallService/miniProgram.d.ts
new file mode 100644
index 0000000..bd5ede2
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/CallService/miniProgram.d.ts
@@ -0,0 +1,6 @@
+import { CallMediaType, CallStatus } from '../const/index';
+export declare function initialUI(): void;
+export declare function checkRunPlatform(): void;
+export declare function initAndCheckRunEnv(): void;
+export declare function beforeCall(type: CallMediaType, that: any): Promise;
+export declare function handlePackageError(error: any): void;
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/CallService/utils.d.ts b/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/CallService/utils.d.ts
new file mode 100644
index 0000000..ee19134
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/CallService/utils.d.ts
@@ -0,0 +1,9 @@
+import { IUserInfo } from '../interface/ICallService';
+import { ITUIStore } from '../interface/ITUIStore';
+export declare function setDefaultUserInfo(userId: string, domId?: string): IUserInfo;
+export declare function getMyProfile(myselfUserId: string, tim: any, TUIStore: any): Promise;
+export declare function getRemoteUserProfile(userIdList: Array, tim: any, TUIStore: any): Promise;
+export declare function generateText(TUIStore: ITUIStore, key: string, prefix?: string, suffix?: string): string;
+export declare function generateStatusChangeText(TUIStore: ITUIStore): string;
+export declare function getGroupMemberList(groupID: string, tim: any, count: any, offset: any): Promise;
+export declare function getGroupProfile(groupID: string, tim: any): Promise;
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/TUIGlobal/tuiGlobal.d.ts b/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/TUIGlobal/tuiGlobal.d.ts
new file mode 100644
index 0000000..81b787d
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/TUIGlobal/tuiGlobal.d.ts
@@ -0,0 +1,21 @@
+import { ITUIGlobal } from '../interface/ITUIGlobal';
+export default class TUIGlobal implements ITUIGlobal {
+ static instance: TUIGlobal;
+ global: any;
+ isPC: boolean;
+ isH5: boolean;
+ isWeChat: boolean;
+ isApp: boolean;
+ isUniPlatform: boolean;
+ isOfficial: boolean;
+ isWIN: boolean;
+ isMAC: boolean;
+ constructor();
+ /**
+ * 获取 TUIGlobal 实例
+ * @returns {TUIGlobal}
+ */
+ static getInstance(): TUIGlobal;
+ initEnv(): void;
+ initOfficial(SDKAppID: number): void;
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/TUIStore/callStore.d.ts b/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/TUIStore/callStore.d.ts
new file mode 100644
index 0000000..b9ada5a
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/TUIStore/callStore.d.ts
@@ -0,0 +1,8 @@
+import { ICallStore } from '../interface/ICallStore';
+export default class CallStore {
+ defaultStore: ICallStore;
+ store: ICallStore;
+ update(key: keyof ICallStore, data: any): void;
+ getData(key: string | undefined): any;
+ reset(keyList?: Array): void;
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/TUIStore/tuiStore.d.ts b/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/TUIStore/tuiStore.d.ts
new file mode 100644
index 0000000..964ae33
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/TUIStore/tuiStore.d.ts
@@ -0,0 +1,50 @@
+import { ITUIStore, IOptions, Task } from '../interface/ITUIStore';
+import { StoreName } from '../const/index';
+export default class TUIStore implements ITUIStore {
+ static instance: TUIStore;
+ task: Task;
+ private storeMap;
+ private timerId;
+ constructor();
+ /**
+ * 获取 TUIStore 实例
+ * @returns {TUIStore}
+ */
+ static getInstance(): TUIStore;
+ /**
+ * UI 组件注册监听回调
+ * @param {StoreName} storeName store 名称
+ * @param {IOptions} options 监听信息
+ * @param {Object} params 扩展参数
+ * @param {String} params.notifyRangeWhenWatch 注册时监听时的通知范围, 'all' - 通知所有注册该 key 的监听; 'myself' - 通知本次注册该 key 的监听; 默认不通知
+ */
+ watch(storeName: StoreName, options: IOptions, params?: any): void;
+ /**
+ * UI 取消组件监听回调
+ * @param {StoreName} storeName store 名称
+ * @param {IOptions} options 监听信息,包含需要取消的回掉等
+ */
+ unwatch(storeName: StoreName, options: IOptions): void;
+ /**
+ * 通用 store 数据更新,messageList 的变更需要单独处理
+ * @param {StoreName} storeName store 名称
+ * @param {string} key 变更的 key
+ * @param {unknown} data 变更的数据
+ */
+ update(storeName: StoreName, key: string, data: unknown): void;
+ /**
+ * 获取 Store 数据
+ * @param {StoreName} storeName store 名称
+ * @param {string} key 待获取的 key
+ * @returns {Any}
+ */
+ getData(storeName: StoreName, key: string): any;
+ /**
+ * UI 组件注册监听回调
+ * @param {StoreName} storeName store 名称
+ * @param {string} key 变更的 key
+ */
+ private notify;
+ reset(storeName: StoreName, keyList?: Array, isNotificationNeeded?: boolean): void;
+ updateStore(params: any, name?: StoreName): void;
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/const/call.d.ts b/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/const/call.d.ts
new file mode 100644
index 0000000..76dbbc9
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/const/call.d.ts
@@ -0,0 +1,98 @@
+/**
+ * @property {String} call 1v1 通话 + 群组通话
+ * @property {String} CUSTOM 自定义 Store
+*/
+export declare enum StoreName {
+ CALL = "call",
+ CUSTOM = "custom"
+}
+/**
+ * @property {String} idle 空闲
+ * @property {String} connecting 呼叫等待中
+ * @property {String} connected 通话中
+*/
+export declare enum CallMediaType {
+ UNKNOWN = 0,
+ AUDIO = 1,
+ VIDEO = 2
+}
+/**
+ * @property {String} caller 主叫
+ * @property {String} callee 被叫
+*/
+export declare enum CallRole {
+ UNKNOWN = "unknown",
+ CALLEE = "callee",
+ CALLER = "caller"
+}
+/**
+ * @property {String} idle 空闲
+ * @property {String} calling 呼叫等待中
+ * @property {String} connected 通话中
+*/
+export declare enum CallStatus {
+ IDLE = "idle",
+ CALLING = "calling",
+ CONNECTED = "connected"
+}
+/**
+ * 视频画面显示模式
+ * 播放视频流默认使用 cover 模式; 播放屏幕共享流默认使用 contain 模式。
+ * @property {String} contain 优先保证视频内容全部显示。视频尺寸等比缩放,直至视频窗口的一边与视窗边框对齐。如果视频尺寸与显示视窗尺寸不一致,在保持长宽比的前提下,将视频进行缩放后填满视窗,缩放后的视频四周会有一圈黑边。
+ * @property {String} cover 优先保证视窗被填满。视频尺寸等比缩放,直至整个视窗被视频填满。如果视频长宽与显示窗口不同,则视频流会按照显示视窗的比例进行周边裁剪或图像拉伸后填满视窗
+ * @property {String} fill 保证视窗被填满的同时保证视频内容全部显示,但是不保证视频尺寸比例不变。视频的宽高会被拉伸至和视窗尺寸一致。(该选项值自 v4.12.1 开始支持)
+*/
+export declare enum VideoDisplayMode {
+ CONTAIN = "contain",
+ COVER = "cover",
+ FILL = "fill"
+}
+/**
+ * 视频分辨率
+ * @property {String} 480p
+ * @property {String} 720p
+ * @property {String} 1080p
+*/
+export declare enum VideoResolution {
+ RESOLUTION_480P = "480p",
+ RESOLUTION_720P = "720p",
+ RESOLUTION_1080P = "1080p"
+}
+export declare enum LanguageType {
+ EN = "en",
+ 'ZH-CN' = "zh-cn",
+ JA_JP = "ja_JP"
+}
+export type TDeviceList = {
+ cameraList: any[];
+ microphoneList: any[];
+ currentCamera: any;
+ currentMicrophone: any;
+};
+export declare const StatusChange: {
+ readonly IDLE: "idle";
+ readonly BE_INVITED: "be-invited";
+ readonly DIALING_C2C: "dialing-c2c";
+ readonly DIALING_GROUP: "dialing-group";
+ readonly CALLING_C2C_AUDIO: "calling-c2c-audio";
+ readonly CALLING_C2C_VIDEO: "calling-c2c-video";
+ readonly CALLING_GROUP_AUDIO: "calling-group-audio";
+ readonly CALLING_GROUP_VIDEO: "calling-group-video";
+};
+/**
+ * @property {String} ear 听筒
+ * @property {String} speaker 免提
+*/
+export declare enum AudioPlayBackDevice {
+ EAR = "ear",
+ SPEAKER = "speaker"
+}
+export declare enum DeviceType {
+ MICROPHONE = "microphone",
+ CAMERA = "camera",
+ SPEAKER = "speaker"
+}
+export declare enum CameraPosition {
+ FRONT = 0,
+ BACK = 1
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/const/error.d.ts b/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/const/error.d.ts
new file mode 100644
index 0000000..000d4a0
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/const/error.d.ts
@@ -0,0 +1,2 @@
+export declare const ErrorCode: any;
+export declare const ErrorMessage: any;
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/const/index.d.ts b/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/const/index.d.ts
new file mode 100644
index 0000000..b0c6d04
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/const/index.d.ts
@@ -0,0 +1,16 @@
+export * from './call';
+export * from './error';
+export * from './log';
+export declare const CALL_DATA_KEY: any;
+export declare const NAME: any;
+export declare const AudioCallIcon = "https://web.sdk.qcloud.com/component/TUIKit/assets/call.png";
+export declare const VideoCallIcon = "https://web.sdk.qcloud.com/component/TUIKit/assets/call-video-reverse.svg";
+export declare const MAX_NUMBER_ROOM_ID = 2147483647;
+export declare enum PLATFORM {
+ MAC = "mac",
+ WIN = "win"
+}
+export declare enum COMPONENT {
+ TUI_CALL_KIT = 14,
+ TIM_CALL_KIT = 15
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/const/log.d.ts b/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/const/log.d.ts
new file mode 100644
index 0000000..d265832
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/const/log.d.ts
@@ -0,0 +1,7 @@
+export declare enum LOG_LEVEL {
+ NORMAL = 0,
+ RELEASE = 1,
+ WARNING = 2,
+ ERROR = 3,
+ NONE = 4
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/index.d.ts b/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/index.d.ts
new file mode 100644
index 0000000..fc8bcff
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/index.d.ts
@@ -0,0 +1,5 @@
+import TUICallService, { TUIGlobal, TUIStore } from './CallService/index';
+import { StoreName, NAME, CallRole, CallMediaType, CallStatus, StatusChange, VideoResolution, VideoDisplayMode, AudioPlayBackDevice } from './const/index';
+import { t } from './locales/index';
+declare const TUICallKitServer: TUICallService;
+export { TUIGlobal, TUIStore, StoreName, TUICallKitServer, NAME, CallStatus, CallRole, CallMediaType, StatusChange, VideoResolution, VideoDisplayMode, AudioPlayBackDevice, t, };
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/interface/ICallService.d.ts b/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/interface/ICallService.d.ts
new file mode 100644
index 0000000..c5d70ea
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/interface/ICallService.d.ts
@@ -0,0 +1,94 @@
+import { CallStatus, CallRole } from '../const/index';
+/**
+ * @interface ITUICallService
+*/
+export interface ITUICallService {
+ /**
+ * 初始化 Service
+ * @function
+ * @private
+ */
+ init(params: any): void;
+ /**
+ * 1v1 通话
+ * @function
+ * @param {SwitchUserStatusParams} options 用户状态控制参数
+ */
+ call(callParams: ICallParams): void;
+}
+type SDKAppID = {
+ SDKAppID: number;
+} | {
+ sdkAppID: number;
+};
+export interface IInitParamsBase {
+ userID: string;
+ userSig: string;
+ tim?: any;
+ isFromChat?: boolean;
+ component?: number;
+}
+export type IInitParams = IInitParamsBase & SDKAppID;
+export interface ICallParams {
+ userID: string;
+ type: number;
+ roomID?: number;
+ userData?: string;
+ timeout?: number;
+ offlinePushInfo?: IOfflinePushInfo;
+}
+export interface IGroupCallParams {
+ userIDList: Array;
+ type: number;
+ groupID: string;
+ roomID?: number;
+ userData?: string;
+ timeout?: number;
+ offlinePushInfo?: IOfflinePushInfo;
+}
+export interface IUserInfo {
+ userId: string;
+ nick?: string;
+ avatar?: string;
+ remark?: string;
+ displayUserInfo?: string;
+ isAudioAvailable?: boolean;
+ isVideoAvailable?: boolean;
+ volume?: number;
+ isEnter?: boolean;
+ domId?: string;
+}
+export interface IOfflinePushInfo {
+ title?: string;
+ description?: string;
+ androidOPPOChannelID?: string;
+ extension: String;
+}
+export interface ICallbackParam {
+ beforeCalling?: (...args: any[]) => void;
+ afterCalling?: (...args: any[]) => void;
+ onMinimized?: (...args: any[]) => void;
+ onMessageSentByMe?: (...args: any[]) => void;
+ kickedOut?: (...args: any[]) => void;
+ statusChanged?: (...args: any[]) => void;
+}
+export interface ISelfInfoParams {
+ nickName: string;
+ avatar: string;
+}
+export interface IBellParams {
+ callRole?: CallRole;
+ callStatus?: CallStatus;
+ isMuteBell?: boolean;
+ calleeBellFilePath?: string;
+}
+export interface IInviteUserParams {
+ userIDList: string[];
+ offlinePushInfo?: IOfflinePushInfo;
+}
+export interface IJoinInGroupCallParams {
+ type: number;
+ groupID: string;
+ roomID: number;
+}
+export {};
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/interface/ICallStore.d.ts b/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/interface/ICallStore.d.ts
new file mode 100644
index 0000000..8eb280f
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/interface/ICallStore.d.ts
@@ -0,0 +1,36 @@
+import { CallStatus, CallRole, CallMediaType, VideoDisplayMode, VideoResolution, TDeviceList, CameraPosition } from '../const/index';
+import { IUserInfo } from './index';
+export interface IToastInfo {
+ text: string;
+ type?: string;
+}
+export interface ICallStore {
+ callStatus: CallStatus;
+ callRole: CallRole;
+ callMediaType: CallMediaType;
+ localUserInfo: IUserInfo;
+ localUserInfoExcludeVolume: IUserInfo;
+ remoteUserInfoList: Array;
+ remoteUserInfoExcludeVolumeList: Array;
+ callerUserInfo: IUserInfo;
+ isGroup: boolean;
+ callDuration: string;
+ callTips: string;
+ toastInfo: IToastInfo;
+ isMinimized: boolean;
+ enableFloatWindow: boolean;
+ bigScreenUserId: string;
+ language: string;
+ isClickable: boolean;
+ showPermissionTip: boolean;
+ deviceList: TDeviceList;
+ groupID: string;
+ roomID: number;
+ cameraPosition: CameraPosition;
+ displayMode: VideoDisplayMode;
+ videoResolution: VideoResolution;
+ pusher: any;
+ player: any[];
+ isEarPhone: boolean;
+ showSelectUser: boolean;
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/interface/ITUIGlobal.d.ts b/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/interface/ITUIGlobal.d.ts
new file mode 100644
index 0000000..91b86ce
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/interface/ITUIGlobal.d.ts
@@ -0,0 +1,36 @@
+/**
+ * @interface TUIGlobal
+ * @property {Object} global 根据运行环境代理 wx、uni、window
+ * @property {Boolean} isPC true 标识是 pc 网页
+ * @property {Boolean} isH5 true 标识是 手机 H5
+ * @property {Boolean} isWeChat true 标识是 微信小程序
+ * @property {Boolean} isApp true 标识是 uniapp 打包的 native app
+ * @property {Boolean} isUniPlatform true 标识当前应用是通过 uniapp 平台打包的产物
+ * @property {Boolean} isOfficial true 标识是腾讯云官网 Demo 应用
+ * @property {Boolean} isWIN true 标识是window系统pc
+ * @property {Boolean} isMAC true 标识是mac os系统pc
+*/
+export interface ITUIGlobal {
+ global: any;
+ isPC: boolean;
+ isH5: boolean;
+ isWeChat: boolean;
+ isApp: boolean;
+ isUniPlatform: boolean;
+ isOfficial: boolean;
+ isWIN: boolean;
+ isMAC: boolean;
+ /**
+ * 初始化 TUIGlobal 环境变量
+ * @function
+ * @private
+ */
+ initEnv(): void;
+ /**
+ * 初始化 isOfficial
+ * @function
+ * @param {number} SDKAppID 当前实例的应用 SDKAppID
+ * @private
+ */
+ initOfficial(SDKAppID: number): void;
+}
diff --git a/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/interface/ITUIStore.d.ts b/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/interface/ITUIStore.d.ts
new file mode 100644
index 0000000..5784ffa
--- /dev/null
+++ b/iweb/src/TUIKit/TUIComponents/components/call/types/TUICallService/interface/ITUIStore.d.ts
@@ -0,0 +1,75 @@
+import { StoreName } from '../const/index';
+export type Task = Record