trtc-sdk-v5 5.8.7-beta.16 → 5.8.7-beta.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.d.ts +15 -1
- package/package.json +1 -1
- package/plugins/cdn-streaming/package.json +1 -1
- package/plugins/cross-room/cross-room.esm.js +1 -1
- package/plugins/cross-room/cross-room.iife.js +1 -1
- package/plugins/cross-room/package.json +1 -1
- package/plugins/device-detector/device-detector.esm.js +3 -3
- package/plugins/device-detector/device-detector.iife.js +3 -3
- package/plugins/device-detector/package.json +1 -1
- package/plugins/video-decoder/package.json +1 -1
- package/plugins/video-effect/basic-beauty/basic-beauty.esm.js +2 -2
- package/plugins/video-effect/basic-beauty/basic-beauty.iife.js +2 -2
- package/plugins/video-effect/basic-beauty/package.json +1 -1
- package/plugins/video-effect/beauty/beauty.esm.js +34 -34
- package/plugins/video-effect/beauty/beauty.iife.js +35 -35
- package/plugins/video-effect/beauty/package.json +1 -1
- package/plugins/video-effect/virtual-background/package.json +1 -1
- package/plugins/video-effect/watermark/package.json +1 -1
- package/plugins/video-effect/watermark/watermark.esm.js +1 -1
- package/plugins/video-effect/watermark/watermark.iife.js +1 -1
- package/trtc.esm.js +25 -25
- package/trtc.js +1 -1
package/index.d.ts
CHANGED
|
@@ -1088,6 +1088,20 @@ export declare const TRTCEvent: {
|
|
|
1088
1088
|
* })
|
|
1089
1089
|
*/
|
|
1090
1090
|
readonly CUSTOM_MESSAGE: 'custom-message';
|
|
1091
|
+
/**
|
|
1092
|
+
* @since v5.9.0
|
|
1093
|
+
* @description started rendering the first video frame of the local or a remote user.
|
|
1094
|
+
* @default 'first-video-frame'
|
|
1095
|
+
* @memberof module:EVENT
|
|
1096
|
+
* @example
|
|
1097
|
+
* trtc.on(TRTC.EVENT.FIRST_VIDEO_FRAME, event => {
|
|
1098
|
+
* // event.height: video height.
|
|
1099
|
+
* // event.width: video width.
|
|
1100
|
+
* // event.streamType: video stream type.
|
|
1101
|
+
* // event.userId: The user ID of the local or a remote user. If it is empty, it indicates that the first local video frame is available; if it is not empty, it indicates that the first video frame of a remote user is available.
|
|
1102
|
+
* })
|
|
1103
|
+
*/
|
|
1104
|
+
readonly FIRST_VIDEO_FRAME: 'first-video-frame';
|
|
1091
1105
|
};
|
|
1092
1106
|
export declare interface TRTCEventTypes {
|
|
1093
1107
|
[TRTCEvent.ERROR]: [RtcError];
|
|
@@ -1743,7 +1757,7 @@ export declare class TRTC {
|
|
|
1743
1757
|
/**
|
|
1744
1758
|
* Used to control the playback volume of remote audio.<br>
|
|
1745
1759
|
*
|
|
1746
|
-
* -
|
|
1760
|
+
* - Since `v5.9.0`, iOS Safari is supported
|
|
1747
1761
|
* @param {string} userId - Remote user ID。'*' represents all remote users.
|
|
1748
1762
|
* @param {number} volume - Volume, ranging from 0 to 100. The default value is 100.<br>
|
|
1749
1763
|
* Since `v5.1.3+`, the volume can be set higher than 100.
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var C=Object.defineProperty,G=Object.defineProperties,w=Object.getOwnPropertyDescriptor,W=Object.getOwnPropertyDescriptors;var _=Object.getOwnPropertySymbols;var H=Object.prototype.hasOwnProperty,K=Object.prototype.propertyIsEnumerable;var I=(s,e,r)=>e in s?C(s,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):s[e]=r,y=(s,e)=>{for(var r in e||(e={}))H.call(e,r)&&I(s,r,e[r]);if(_)for(var r of _(e))K.call(e,r)&&I(s,r,e[r]);return s},E=(s,e)=>G(s,W(e));var f=(s,e,r,o)=>{for(var t=o>1?void 0:o?w(e,r):e,a=s.length-1,n;a>=0;a--)(n=s[a])&&(t=(o?n(e,r,t):n(t))||t);return o&&t&&C(e,r,t),t};var b=(s,e,r)=>(I(s,typeof e!="symbol"?e+"":e,r),r);var D={properties:{roomId:{type:"number"},strRoomId:{type:"string"}}},N={name:"option",required:!0,properties:E(y({},D.properties),{userId:{type:"string"}})},k={name:"option",required:!0,properties:{updateList:{type:"array",required:!0,arrayItem:{required:!0,type:"object",properties:E(y({},N.properties),{userId:{required:!1,type:"string"},muteAudio:{type:"boolean"},muteVideo:{type:"boolean"},muteSubStream:{type:"boolean"}})}}}},L={name:"option",properties:y({},D.properties)};var p=s=>typeof s=="function";var j=0,
|
|
1
|
+
var C=Object.defineProperty,G=Object.defineProperties,w=Object.getOwnPropertyDescriptor,W=Object.getOwnPropertyDescriptors;var _=Object.getOwnPropertySymbols;var H=Object.prototype.hasOwnProperty,K=Object.prototype.propertyIsEnumerable;var I=(s,e,r)=>e in s?C(s,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):s[e]=r,y=(s,e)=>{for(var r in e||(e={}))H.call(e,r)&&I(s,r,e[r]);if(_)for(var r of _(e))K.call(e,r)&&I(s,r,e[r]);return s},E=(s,e)=>G(s,W(e));var f=(s,e,r,o)=>{for(var t=o>1?void 0:o?w(e,r):e,a=s.length-1,n;a>=0;a--)(n=s[a])&&(t=(o?n(e,r,t):n(t))||t);return o&&t&&C(e,r,t),t};var b=(s,e,r)=>(I(s,typeof e!="symbol"?e+"":e,r),r);var D={properties:{roomId:{type:"number"},strRoomId:{type:"string"}}},N={name:"option",required:!0,properties:E(y({},D.properties),{userId:{type:"string"}})},k={name:"option",required:!0,properties:{updateList:{type:"array",required:!0,arrayItem:{required:!0,type:"object",properties:E(y({},N.properties),{userId:{required:!1,type:"string"},muteAudio:{type:"boolean"},muteVideo:{type:"boolean"},muteSubStream:{type:"boolean"}})}}}},L={name:"option",properties:y({},D.properties)};var p=s=>typeof s=="function";var j=0,F=1,V=2;function X({retryFunction:s,settings:e,onError:r,onRetrying:o,onRetryFailed:t,onRetrySuccess:a,context:n}){return function(...d){let{retries:m=5,timeout:u=1e3}=e,i=0,l=-1,c=j,g=async(P,A)=>{let M=n||this;try{let R=await s.apply(M,d);i>0&&a&&a.call(this,i),i=0,P(R)}catch(R){let h=()=>{clearTimeout(l),i=0,c=V,A(R)},O=()=>{c!==V&&i<(p(m)?m():m)?(i++,c=F,p(o)&&o.call(this,i,h),l=window.setTimeout(()=>{l=-1,g(P,A)},p(u)?u(i):u)):(h(),p(t)&&t.call(this,R))};p(r)?r.call(this,{error:R,retry:O,reject:A,retryFuncArgs:d,retriedCount:i}):O()}};return new Promise(g)}}var B=X;var T=new WeakMap;function U({settings:s={retries:5,timeout:2e3},onError:e,onRetrying:r,onRetryFailed:o}){return function(t,a,n){let d=B({retryFunction:n.value,settings:s,onError({error:m,retry:u,reject:i,retryFuncArgs:l}){var c;e?e.call(this,m,()=>{var g;(g=T.get(t))!=null&&g.has(a)?u():i(m)},i,l):(c=T.get(t))!=null&&c.has(a)?u():i(m)},onRetrying(m,u){var i;p(r)&&r.call(this,m,u),(i=T.get(t))!=null&&i.has(a)&&(T.get(t).get(a).stopRetry=u)},onRetryFailed:o});return n.value=function(...m){let u=T.get(t);return u?u.set(a,{args:m}):T.set(t,new Map([[a,{args:m}]])),d.apply(this,m).finally(()=>{var i;return(i=T.get(t))==null?void 0:i.delete(a)})},n}}var S=class S{constructor(e){this.core=e;b(this,"disableRandomCall",!0);b(this,"connectedRoomIdSet",new Set);b(this,"updateSeq",0);b(this,"_log");this._log=this.core.log.createChild({id:`${this.getAlias()}`})}getName(){return S.Name}getAlias(){return"crs-r"}getGroup(e){var o;let r=(e==null?void 0:e.userId)||((o=e==null?void 0:e.updateList)==null?void 0:o[0].userId)||"";return r||(e?e.updateList?String(e.updateList[0].roomId)||e.updateList[0].strRoomId||"":String(e.roomId)||e.strRoomId||"":"*")}getValidateRule(e){switch(e){case"start":return N;case"update":return k;case"stop":return L}}async start({roomId:e,strRoomId:r,userId:o}){let{RtcError:t,ErrorCode:a}=this.core.errorModule;if(!this.core.room.sendSignalMessage)throw new t({code:a.ENV_NOT_SUPPORTED});let n=e||r,d=await this.core.room.sendSignalMessage({command:"connect_other_room",responseCommand:String(8209),data:{roomId:n,userId:o,localRoomId:o?void 0:this.core.room.roomId},retries:3});if(d.data.code!==0)throw new t({code:a.SERVER_ERROR,extraCode:d.data.code,message:d.data.message});o||this.connectedRoomIdSet.add(n)}async update({updateList:e}){var n;let{RtcError:r,ErrorCode:o}=this.core.errorModule;if(!this.core.room.sendSignalMessage)throw new r({code:o.ENV_NOT_SUPPORTED});let t=e.find(d=>d.userId)?0:1,a=await this.core.room.sendSignalMessage({command:"update_other_room_forward_mode",responseCommand:String(8213),data:{seq:++this.updateSeq,operationType:t,updateList:e.map(({roomId:d,strRoomId:m,userId:u,muteAudio:i,muteVideo:l,muteSubStream:c})=>({roomId:d||m,userId:u,muteAudio:i,muteVideo:l,muteSubStream:c}))},retries:3});if(a.data.data.expectSeq)return this.updateSeq=a.data.data.expectSeq,this.update({updateList:e});if(a.data.code!==0)throw new r({code:o.SERVER_ERROR,extraCode:a.data.code,message:a.data.message});if(((n=a.data.data.errorList)==null?void 0:n.length)>0)throw new r({code:o.UNKNOWN_ERROR,message:a.data.data.errorList[0].message})}async stop({roomId:e,strRoomId:r}={}){let o=e||r;if(o)await this.doStop(o);else if(this.connectedRoomIdSet.size>0)for(let t of[...this.connectedRoomIdSet.values()])await this.doStop(t);else await this.doStop()}async doStop(e){let{RtcError:r,ErrorCode:o}=this.core.errorModule;if(!this.core.room.sendSignalMessage)throw new r({code:o.ENV_NOT_SUPPORTED});let t=await this.core.room.sendSignalMessage({command:"disconnect_other_room",responseCommand:String(8211),data:{roomId:e,localRoomId:this.core.room.roomId},retries:3});if(t.data.code!==0)throw new r({code:o.SERVER_ERROR,extraCode:t.data.code,message:t.data.message});this.connectedRoomIdSet.delete(e)}destroy(){}};b(S,"Name","CrossRoom"),f([U({settings:{retries:3,timeout:1e3},onRetrying(s){this._log.warn(`retry start: ${s}`)}})],S.prototype,"start",1),f([U({settings:{retries:3,timeout:1e3},onRetrying(s){this._log.warn(`retry update: ${s}`)}})],S.prototype,"update",1);var x=S;var ne=x;export{x as CrossRoom,ne as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var CrossRoom=(()=>{var y=Object.defineProperty,W=Object.defineProperties,D=Object.getOwnPropertyDescriptor,H=Object.getOwnPropertyDescriptors,K=Object.getOwnPropertyNames,C=Object.getOwnPropertySymbols;var k=Object.prototype.hasOwnProperty,j=Object.prototype.propertyIsEnumerable;var f=(o,e,r)=>e in o?y(o,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):o[e]=r,A=(o,e)=>{for(var r in e||(e={}))k.call(e,r)&&f(o,r,e[r]);if(C)for(var r of C(e))j.call(e,r)&&f(o,r,e[r]);return o},N=(o,e)=>W(o,H(e));var
|
|
1
|
+
"use strict";var CrossRoom=(()=>{var y=Object.defineProperty,W=Object.defineProperties,D=Object.getOwnPropertyDescriptor,H=Object.getOwnPropertyDescriptors,K=Object.getOwnPropertyNames,C=Object.getOwnPropertySymbols;var k=Object.prototype.hasOwnProperty,j=Object.prototype.propertyIsEnumerable;var f=(o,e,r)=>e in o?y(o,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):o[e]=r,A=(o,e)=>{for(var r in e||(e={}))k.call(e,r)&&f(o,r,e[r]);if(C)for(var r of C(e))j.call(e,r)&&f(o,r,e[r]);return o},N=(o,e)=>W(o,H(e));var F=(o,e)=>{for(var r in e)y(o,r,{get:e[r],enumerable:!0})},X=(o,e,r,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of K(e))!k.call(o,t)&&t!==r&&y(o,t,{get:()=>e[t],enumerable:!(a=D(e,t))||a.enumerable});return o};var q=o=>X(y({},"__esModule",{value:!0}),o),U=(o,e,r,a)=>{for(var t=a>1?void 0:a?D(e,r):e,s=o.length-1,n;s>=0;s--)(n=o[s])&&(t=(a?n(e,r,t):n(t))||t);return a&&t&&y(e,r,t),t};var b=(o,e,r)=>(f(o,typeof e!="symbol"?e+"":e,r),r);var Z={};F(Z,{CrossRoom:()=>I,default:()=>z});var L={properties:{roomId:{type:"number"},strRoomId:{type:"string"}}},x={name:"option",required:!0,properties:N(A({},L.properties),{userId:{type:"string"}})},V={name:"option",required:!0,properties:{updateList:{type:"array",required:!0,arrayItem:{required:!0,type:"object",properties:N(A({},x.properties),{userId:{required:!1,type:"string"},muteAudio:{type:"boolean"},muteVideo:{type:"boolean"},muteSubStream:{type:"boolean"}})}}}},B={name:"option",properties:A({},L.properties)};var p=o=>typeof o=="function";var v=0,Y=1,M=2;function J({retryFunction:o,settings:e,onError:r,onRetrying:a,onRetryFailed:t,onRetrySuccess:s,context:n}){return function(...d){let{retries:m=5,timeout:u=1e3}=e,i=0,l=-1,c=v,g=async(h,E)=>{let w=n||this;try{let R=await o.apply(w,d);i>0&&s&&s.call(this,i),i=0,h(R)}catch(R){let O=()=>{clearTimeout(l),i=0,c=M,E(R)},_=()=>{c!==M&&i<(p(m)?m():m)?(i++,c=Y,p(a)&&a.call(this,i,O),l=window.setTimeout(()=>{l=-1,g(h,E)},p(u)?u(i):u)):(O(),p(t)&&t.call(this,R))};p(r)?r.call(this,{error:R,retry:_,reject:E,retryFuncArgs:d,retriedCount:i}):_()}};return new Promise(g)}}var G=J;var T=new WeakMap;function P({settings:o={retries:5,timeout:2e3},onError:e,onRetrying:r,onRetryFailed:a}){return function(t,s,n){let d=G({retryFunction:n.value,settings:o,onError({error:m,retry:u,reject:i,retryFuncArgs:l}){var c;e?e.call(this,m,()=>{var g;(g=T.get(t))!=null&&g.has(s)?u():i(m)},i,l):(c=T.get(t))!=null&&c.has(s)?u():i(m)},onRetrying(m,u){var i;p(r)&&r.call(this,m,u),(i=T.get(t))!=null&&i.has(s)&&(T.get(t).get(s).stopRetry=u)},onRetryFailed:a});return n.value=function(...m){let u=T.get(t);return u?u.set(s,{args:m}):T.set(t,new Map([[s,{args:m}]])),d.apply(this,m).finally(()=>{var i;return(i=T.get(t))==null?void 0:i.delete(s)})},n}}var S=class S{constructor(e){this.core=e;b(this,"disableRandomCall",!0);b(this,"connectedRoomIdSet",new Set);b(this,"updateSeq",0);b(this,"_log");this._log=this.core.log.createChild({id:`${this.getAlias()}`})}getName(){return S.Name}getAlias(){return"crs-r"}getGroup(e){var a;let r=(e==null?void 0:e.userId)||((a=e==null?void 0:e.updateList)==null?void 0:a[0].userId)||"";return r||(e?e.updateList?String(e.updateList[0].roomId)||e.updateList[0].strRoomId||"":String(e.roomId)||e.strRoomId||"":"*")}getValidateRule(e){switch(e){case"start":return x;case"update":return V;case"stop":return B}}async start({roomId:e,strRoomId:r,userId:a}){let{RtcError:t,ErrorCode:s}=this.core.errorModule;if(!this.core.room.sendSignalMessage)throw new t({code:s.ENV_NOT_SUPPORTED});let n=e||r,d=await this.core.room.sendSignalMessage({command:"connect_other_room",responseCommand:String(8209),data:{roomId:n,userId:a,localRoomId:a?void 0:this.core.room.roomId},retries:3});if(d.data.code!==0)throw new t({code:s.SERVER_ERROR,extraCode:d.data.code,message:d.data.message});a||this.connectedRoomIdSet.add(n)}async update({updateList:e}){var n;let{RtcError:r,ErrorCode:a}=this.core.errorModule;if(!this.core.room.sendSignalMessage)throw new r({code:a.ENV_NOT_SUPPORTED});let t=e.find(d=>d.userId)?0:1,s=await this.core.room.sendSignalMessage({command:"update_other_room_forward_mode",responseCommand:String(8213),data:{seq:++this.updateSeq,operationType:t,updateList:e.map(({roomId:d,strRoomId:m,userId:u,muteAudio:i,muteVideo:l,muteSubStream:c})=>({roomId:d||m,userId:u,muteAudio:i,muteVideo:l,muteSubStream:c}))},retries:3});if(s.data.data.expectSeq)return this.updateSeq=s.data.data.expectSeq,this.update({updateList:e});if(s.data.code!==0)throw new r({code:a.SERVER_ERROR,extraCode:s.data.code,message:s.data.message});if(((n=s.data.data.errorList)==null?void 0:n.length)>0)throw new r({code:a.UNKNOWN_ERROR,message:s.data.data.errorList[0].message})}async stop({roomId:e,strRoomId:r}={}){let a=e||r;if(a)await this.doStop(a);else if(this.connectedRoomIdSet.size>0)for(let t of[...this.connectedRoomIdSet.values()])await this.doStop(t);else await this.doStop()}async doStop(e){let{RtcError:r,ErrorCode:a}=this.core.errorModule;if(!this.core.room.sendSignalMessage)throw new r({code:a.ENV_NOT_SUPPORTED});let t=await this.core.room.sendSignalMessage({command:"disconnect_other_room",responseCommand:String(8211),data:{roomId:e,localRoomId:this.core.room.roomId},retries:3});if(t.data.code!==0)throw new r({code:a.SERVER_ERROR,extraCode:t.data.code,message:t.data.message});this.connectedRoomIdSet.delete(e)}destroy(){}};b(S,"Name","CrossRoom"),U([P({settings:{retries:3,timeout:1e3},onRetrying(o){this._log.warn(`retry start: ${o}`)}})],S.prototype,"start",1),U([P({settings:{retries:3,timeout:1e3},onRetrying(o){this._log.warn(`retry update: ${o}`)}})],S.prototype,"update",1);var I=S;var z=I;return q(Z);})().default;
|
|
@@ -1137,7 +1137,7 @@ var ws=Object.create;var ct=Object.defineProperty,xs=Object.defineProperties,Ts=
|
|
|
1137
1137
|
bottom: 36px;
|
|
1138
1138
|
}
|
|
1139
1139
|
}
|
|
1140
|
-
`,v=Ha;var q=window.navigator&&window.navigator.userAgent||"",xo=/AppleWebKit\/([\d.]+)/i.exec(q),Xa=xo?parseFloat(xo.pop()||"0"):null,To=/iPad/i.test(q),di=/iPhone/i.test(q)&&!To,_a=/iPod/i.test(q),We=di||To||_a,Jc=We&&function(){let t=q.match(/OS (\d+)_/i);return t&&t[1]?t[1]:null}(),te=/Android/i.test(q),yo=te&&function(){let t=q.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(!t)return null;let e=t[1]&&parseFloat(t[1]),i=t[2]&&parseFloat(t[2]);return e&&i?parseFloat(`${t[1]}.${t[2]}`):e||null}(),zc=te&&/webkit/i.test(q)&&yo<2.3,jc=te&&yo<5&&Xa<537,ie=/Firefox/i.test(q),ge=ie&&function(){let t=q.match(/Firefox\/(\d+)/);return t&&t[1]?parseFloat(t[1]):null}(),re=/Edge\//i.test(q),Uo=re&&function(){let t=q.match(/Edge\/(\d+)/i);if(t&&t[1])return t[1]}(),Ve=/Edg\//i.test(q),me=Ve&&function(){let t=q.match(/Edg\/(\d+)/);return t&&t[1]?parseFloat(t[1]):null}(),Ze=/SogouMobileBrowser\//i.test(q),Ro=Ze&&function(){let t=q.match(/SogouMobileBrowser\/(\d+)/);return t&&t[1]?parseFloat(t[1]):null}(),Pe=/MetaSr\s/i.test(q),Do=Pe&&function(){let t=q.match(/MetaSr(\s\d+(\.\d+)+)/);return t&&t[1]?parseFloat(t[1]):null}(),k=/TBS\/\d+/i.test(q),bo=k&&function(){let t=q.match(/TBS\/(\d+)/i);if(t&&t[1])return t[1]}(),Je=/XWEB\/\d+/i.test(q),ko=Je&&function(){let t=q.match(/XWEB\/(\d+)/i);if(t&&t[1])return t[1]}(),Hc=/MSIE\s8\.0/.test(q),$a=/MSIE\/\d+/i.test(q),Xc=$a&&function(){let t=/MSIE\s(\d+)\.\d/.exec(q),e=t&&parseFloat(t[1]);return!e&&/Trident\/7.0/i.test(q)&&/rv:11.0/.test(q)&&(e=11),e}(),_c=/windowswechat/i.test(q),hi=/(micromessenger|webbrowser)/i.test(q),No=hi&&function(){let t=q.match(/MicroMessenger\/(\d+)/i);if(t&&t[1])return t[1]}(),ze=!k&&/MQQBrowser\/\d+/i.test(q)&&/COVC\/\d+/i.test(q),je=!k&&/MQQBrowser\/\d+/i.test(q)&&!/COVC\/\d+/i.test(q),ui=(je||ze)&&function(){let t=q.match(/ MQQBrowser\/([\d.]+)/);return t&&t[1]?t[1]:null}(),He=!k&&/ QQBrowser\/\d+/i.test(q),Bo=He&&function(){let t=q.match(/ QQBrowser\/([\d.]+)/);return t&&t[1]?t[1]:null}(),Xe=!k&&/QQBrowserLite\/\d+/i.test(q),Oo=Xe&&function(){let t=q.match(/QQBrowserLite\/([\d.]+)/);return t&&t[1]?t[1]:null}(),_e=!k&&/MQBHD\/\d+/i.test(q),Qo=_e&&function(){let t=q.match(/MQBHD\/([\d.]+)/);return t&&t[1]?t[1]:null}(),Fo=/Windows/i.test(q),Lo=!We&&/MAC OS X/i.test(q),Ko=!te&&/Linux/i.test(q),$c=/MicroMessenger/i.test(q),Go=/UCBrowser/i.test(q),el=/Electron/i.test(q),$e=/MiuiBrowser/i.test(q),Yo=$e&&function(){let t=q.match(/MiuiBrowser\/([\d.]+)/);return t&&t[1]?t[1]:null}(),et=/HuaweiBrowser/i.test(q),Wo=et&&function(){let t=q.match(/HuaweiBrowser\/([\d.]+)/);return t&&t[1]?t[1]:null}(),tt=/SamsungBrowser/i.test(q),Zo=tt&&function(){let t=q.match(/SamsungBrowser\/([\d.]+)/);return t&&t[1]?t[1]:null}(),it=/HeyTapBrowser/i.test(q),Po=it&&function(){let t=q.match(/HeyTapBrowser\/([\d.]+)/);return t&&t[1]?t[1]:null}(),rt=/VivoBrowser/i.test(q),Jo=rt&&function(){let t=q.match(/VivoBrowser\/([\d.]+)/);return t&&t[1]?t[1]:null}(),eq=/Chrome/i.test(q),P=!re&&!Pe&&!Ze&&!k&&!Je&&!Ve&&!He&&!$e&&!et&&!tt&&!it&&!rt&&/Chrome/i.test(q),tl=P&&function(){let t=q.match(/Chrome\/(\d+)/);return t&&t[1]?parseFloat(t[1]):null}(),gi=P&&function(){let t=q.match(/Chrome\/([\d.]+)/);return t&&t[1]?t[1]:null}(),Vt=!eq&&!je&&!ze&&!Xe&&!_e&&/Safari/i.test(q);var mi=Vt&&function(){let t=q.match(/Version\/([\d.]+)/);return t&&t[1]?t[1]:null}(),il=P?`Chrome/${gi}`:Vt?`Safari/${mi}`:"NotSupportedBrowser",zo=location.protocol==="file:"||location.hostname==="localhost"||/^\d+\.\d+\.\d+\.\d+$/.test(location.hostname);var jo=new Map([[te,"Android"],[We,"iOS"],[Fo,"Windows"],[Lo,"MacOS"],[Ko,"Linux"]]),Xo=()=>{let t="unknown";return jo.get(!0)&&(t=jo.get(!0)),t},Ho=new Map([[ie,["Firefox",ge]],[Ve,["Edg",me]],[P,["Chrome",gi]],[Vt,["Safari",mi]],[k,["TBS",bo]],[Je,["XWEB",ko]],[hi&&di,["WeChat",No]],[He,["QQ(Win)",Bo]],[je,["QQ(Mobile)",ui]],[ze,["QQ(Mobile X5)",ui]],[Xe,["QQ(Mac)",Oo]],[_e,["QQ(iPad)",Qo]],[$e,["MI",Yo]],[et,["HW",Wo]],[tt,["Samsung",Zo]],[it,["OPPO",Po]],[rt,["VIVO",Jo]],[re,["EDGE",Uo]],[Ze,["SogouMobile",Ro]],[Pe,["Sogou",Do]]]),_o=()=>{let t="unknown",e="unknown";return Ho.get(!0)&&([t,e]=Ho.get(!0)),{name:t,version:e}},$o=navigator.userAgent,es=()=>{let t;if(screen.width){let e=screen.width?screen.width*window.devicePixelRatio:"",i=screen.height?screen.height*window.devicePixelRatio:"";t={width:e,height:i}}return t},ts=()=>{var t;return(t=window.navigator)==null?void 0:t.hardwareConcurrency},is=navigator.language||navigator.userLanguage||navigator.browserLanguage||navigator.systemLanguage||"en";var rs=()=>{var t;return!!((t=navigator.mediaDevices)!=null&&t.getDisplayMedia)},Vs=()=>{let t={isSupported:!1},e=["AudioContext","webkitAudioContext","mozAudioContext","msAudioContext"];for(let i=0;i<e.length;i++)if(e[i]in window){t.isSupported=!0;break}return t.isSupported},os=()=>"WebSocket"in window&&window.WebSocket.CLOSING===2,ss=()=>Go||re||Ve&&typeof me=="number"&&me<80?!1:!(ie&&ge&&ge<56),As=()=>["RTCPeerConnection","webkitRTCPeerConnection","RTCIceGatherer"].filter(e=>e in window).length>0,ns=()=>{let t=!1;return["captureStream","mozCaptureStream","webkitCaptureStream"].forEach(e=>{typeof document=="undefined"||typeof document.createElement!="function"||!t&&e in document.createElement("canvas")&&(t=!0)}),t},as=()=>{let t=!1;return["captureStream","mozCaptureStream","webkitCaptureStream"].forEach(e=>{typeof document=="undefined"||typeof document.createElement!="function"||!t&&e in document.createElement("video")&&(t=!0)}),t},qs=()=>{let t=!1;return ie&&typeof window.mozRTCPeerConnection!="undefined"?"getSenders"in window.mozRTCPeerConnection.prototype&&(t=!0):P&&typeof window.webkitRTCPeerConnection!="undefined"&&"getSenders"in window.webkitRTCPeerConnection.prototype&&(t=!0),t},cs=()=>typeof MediaStreamTrack!="undefined"&&"applyConstraints"in MediaStreamTrack.prototype;var{toString:ol}=Object.prototype;var ls=t=>typeof t=="undefined";var Si,Ii,M=()=>Si,x=()=>Ii,ps=t=>{Si=t},ds=t=>{Ii=t},hs=()=>{Si=null,Ii=null};var tq=function(){let t=x();return ls(navigator.mediaDevices)?(t&&t.error("navigator.mediaDevices is not supported on your browser"),!0):!1},iq=function(){let t=x();return location.protocol==="http:"&&!zo?(t&&t.error("you should use https"),!0):!1},us=()=>{if(!navigator.mediaDevices)return!1;let t=["getUserMedia","enumerateDevices"];return t.filter(e=>e in navigator.mediaDevices).length===t.length},J=async t=>{if(iq()||tq())return[];let e=!1,i=!1,r=!1,V=!1,o=!1,s=[],A=[],n=[],d={},l;return t&&(l=await navigator.mediaDevices.getUserMedia(t)),(await navigator.mediaDevices.enumerateDevices()).forEach(g=>{let p={};for(let E in g)try{typeof g[E]!="function"&&(p[E]=g[E])}catch(oe){}let w=p.deviceId||"",N=p.label||"",z=p.kind||"";d[w+N+z]||(p.kind==="audio"&&(p.kind="audioinput"),p.kind==="video"&&(p.kind="videoinput"),p.deviceId||(p.deviceId=p.id),p.label?(p.kind==="videoinput"&&!V&&(V=!0),p.kind==="audioinput"&&!o&&(o=!0)):p.kind==="videoinput"?p.label=`Camera ${n.length+1}`:p.kind==="audioinput"?p.label=`Microphone ${s.length+1}`:p.kind==="audiooutput"?p.label=`Speaker ${A.length+1}`:p.label="Please invoke getUserMedia once.",p.kind==="audioinput"&&(e=!0,s.indexOf(p)===-1&&s.push(p)),p.kind==="audiooutput"&&(i=!0,A.indexOf(p)===-1&&A.push(p)),p.kind==="videoinput"&&(r=!0,n.indexOf(p)===-1&&n.push(p)),d[p.deviceId+p.label+p.kind]=p,l==null||l.getTracks().forEach(E=>E.stop()))}),{hasWebCamPermission:V,hasMicrophonePermission:o,cameras:n,speakers:A,microphones:s}};async function gs(t){return{cameraList:(await J({video:!0,audio:!1})).cameras}}var ms=async t=>({microphoneList:(await J({video:!1,audio:!0})).microphones});async function fs(){return(await J({video:!1,audio:!0})).speakers}var Ss=async()=>{let t={sdp:"",type:"offer"},e=!1,i=!1;try{let r=new RTCPeerConnection,V=document.createElement("canvas");V.getContext("2d");let o=V.captureStream(0);return r.addTrack(o.getVideoTracks()[0],o),t=await r.createOffer(),t&&t.sdp&&(t.sdp.toLowerCase().indexOf("h264")!==-1&&(e=!0),t.sdp.toLowerCase().indexOf("vp8")!==-1&&(i=!0)),r.close(),{isH264EncodeSupported:e,isVp8EncodeSupported:i}}catch(r){return{isH264EncodeSupported:!1,isVp8EncodeSupported:!1}}},Is=async()=>{let t={sdp:"",type:"offer"},e=!1,i=!1;try{let r=new RTCPeerConnection;return t=await r.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0}),t&&t.sdp&&(t.sdp.toLowerCase().indexOf("h264")!==-1&&(e=!0),t.sdp.toLowerCase().indexOf("vp8")!==-1&&(i=!0)),r.close(),{isH264DecodeSupported:e,isVp8DecodeSupported:i}}catch(r){return{isH264DecodeSupported:!1,isVp8DecodeSupported:!1}}};async function Ei(){return new Promise(async(t,e)=>{try{let z=function(){clearInterval(w),clearInterval(o),clearTimeout(N),A.close(),n.close(),s.getTracks().forEach(E=>E.stop())};var i=z;let r=document.createElement("canvas"),V=r.getContext("2d");r.width=640,r.height=480;let o=setInterval(()=>{V&&V.fillText("test",0,0)},33),s=r.captureStream(15),A=new RTCPeerConnection({}),n=new RTCPeerConnection({});A.addEventListener("icecandidate",E=>{n.addIceCandidate(E.candidate)}),n.addEventListener("icecandidate",E=>{A.addIceCandidate(E.candidate)});let d=RTCRtpSender.getCapabilities("video"),u=(d?d.codecs:[]).find(E=>E.mimeType==="video/H264");A.addTransceiver(s.getVideoTracks()[0],{direction:"sendonly",streams:[s],sendEncodings:[{maxBitrate:500*1e3}]}),n.addTransceiver("video",{direction:"recvonly"}),u&&A.getTransceivers()[0].setCodecPreferences([u].filter(E=>E!==void 0));let g=await A.createOffer();await A.setLocalDescription(g),await n.setRemoteDescription(g);let p=await n.createAnswer();await n.setLocalDescription(p),await A.setRemoteDescription(p);let w=-1,N=-1;N=setTimeout(()=>{z(),t(!1)},30*1e3),w=setInterval(async()=>{(await A.getStats()).forEach(oe=>{oe.type==="outbound-rtp"&&oe.mediaType==="video"&&(typeof oe.encoderImplementation=="undefined"&&(z(),e(new Error("your browser does not support to detect HW acceleration enabled."))),oe.encoderImplementation==="ExternalEncoder"&&(z(),t(!0)))})},500)}catch(r){e(r)}})}var rq={system:null,APISupported:null,devices:null,codecsSupported:null,report:null,networkInfo:null,TRTCInitDone:!1,mirror:!1,async getReportAsync(){return this.getSystem(),this.getAPISupported(),await this.getCodecAsync(),await this.getDevicesAsync(),this.report={system:this.system,APISupported:this.APISupported,codecsSupported:this.codecsSupported,devices:this.devices},this.report},async isTRTCSupported(){await this.getReportAsync();let{isWebRTCSupported:t,isUserMediaSupported:e,isWebSocketSupported:i}=this.APISupported;if(!t)return{result:!1,reason:"you browser does not support WebRTC."};if(!i)return{result:!1,reason:"you browser does not support WebSocket."};if(!e)return{result:!1,reason:"you browser does not support getUserMedia."};let{isH264EncodeSupported:r,isVp8EncodeSupported:V,isH264DecodeSupported:o,isVp8DecodeSupported:s}=this.codecsSupported;return!r&&!V?{result:!1,reason:`isH264EncodeSupported: ${r} isVp8EncodeSupported: ${V} `}:!o&&!s?{result:!1,reason:`isH264DecodeSupported: ${o} isVp8DecodeSupported: ${s} `}:ss()?{result:!0}:{result:!1,reason:"your browser does not qualify, it is recommended to use Chrome and firefox."}},async getCodecAsync(){let{isH264EncodeSupported:t,isVp8EncodeSupported:e}=await Ss(),{isH264DecodeSupported:i,isVp8DecodeSupported:r}=await Is();return this.codecsSupported={isH264EncodeSupported:t,isVp8EncodeSupported:e,isH264DecodeSupported:i,isVp8DecodeSupported:r},this.codecsSupported},async getDevicesAsync(){let{hasWebCamPermission:t,hasMicrophonePermission:e,cameras:i,microphones:r,speakers:V}=await J();return this.devices={cameras:i,microphones:r,speakers:V||[],hasWebCamPermission:t,hasMicrophonePermission:e},this.devices},getSystem(){return this.system={UA:$o,OS:Xo(),browser:_o(),displayResolution:es(),hardwareConcurrency:ts(),language:is},this.system},getAPISupported(){return this.APISupported={isUserMediaSupported:us(),isWebRTCSupported:As(),isWebSocketSupported:os(),isWebAudioSupported:Vs(),isScreenCaptureAPISupported:rs(),isCanvasCapturingSupported:ns(),isVideoCapturingSupported:as(),isRTPSenderReplaceTracksSupported:qs(),isApplyConstraintsSupported:cs()},this.APISupported},async isHardWareAccelerationEnabled(){return await Ei()}},m=rq;function Es(){let t=`https://web.sdk.qcloud.com/trtc/electron/download/resources/media/TestSpeaker.mp3?t=${new Date().getTime()}`,e=3e3;return Promise.race([fetch(t,{mode:"cors"}),new Promise((i,r)=>setTimeout(()=>r(!1),e))]).then(i=>{if(!i.ok)throw new Error("\u7F51\u7EDC\u9519\u8BEF");return!0}).catch(()=>!1)}var vs={0:"\u672A\u77E5",1:"\u6781\u4F73",2:"\u8F83\u597D",3:"\u4E00\u822C",4:"\u5DEE",5:"\u6781\u5DEE",6:"\u65AD\u5F00"},Cs={0:"Unknown",1:"Excellent",2:"Good",3:"Average",4:"Poor",5:"Very Poor",6:"Disconnected"},vi=t=>{let i=(navigator.language||navigator.userLanguage||navigator.browserLanguage||navigator.systemLanguage||"en").indexOf("zh")>-1,r=x();switch(r.error("getUserMedia error",t),t.name){case"NotReadableError":i?r.error("\u6682\u65F6\u65E0\u6CD5\u8BBF\u95EE\u6444\u50CF\u5934/\u9EA6\u514B\u98CE\uFF0C\u8BF7\u786E\u4FDD\u7CFB\u7EDF\u6388\u4E88\u5F53\u524D\u6D4F\u89C8\u5668\u6444\u50CF\u5934/\u9EA6\u514B\u98CE\u6743\u9650\uFF0C\u5E76\u4E14\u6CA1\u6709\u5176\u4ED6\u5E94\u7528\u5360\u7528\u6444\u50CF\u5934/\u9EA6\u514B\u98CE"):r.error("Cannot access camera/microphone temporarily. Please make sure the system has granted the current browser permission to access the camera/microphone and no other application is using the camera/microphone");return;case"NotAllowedError":i?r.error("\u7528\u6237/\u7CFB\u7EDF\u5DF2\u62D2\u7EDD\u6388\u6743\u8BBF\u95EE\u6444\u50CF\u5934\u6216\u9EA6\u514B\u98CE"):r.error("User/system has denied access to camera/microphone");return;case"NotFoundError":i?r.error("\u627E\u4E0D\u5230\u6444\u50CF\u5934\u6216\u9EA6\u514B\u98CE\u8BBE\u5907"):r.error("Cannot find camera or microphone device");return;case"OverConstrainedError":i?r.error("\u91C7\u96C6\u5C5E\u6027\u8BBE\u7F6E\u9519\u8BEF\uFF0C\u5982\u679C\u60A8\u6307\u5B9A\u4E86 cameraId/microphoneId\uFF0C\u8BF7\u786E\u4FDD\u5B83\u4EEC\u662F\u4E00\u4E2A\u6709\u6548\u7684\u975E\u7A7A\u5B57\u7B26\u4E32"):r.error("Capture attribute setting error. If you specified cameraId/microphoneId, please make sure they are valid non-empty strings");return;default:i?r.error("\u521D\u59CB\u5316\u672C\u5730\u6D41\u65F6\u9047\u5230\u672A\u77E5\u9519\u8BEF, \u8BF7\u91CD\u8BD5"):r.error("Unknown error encountered when initializing local stream, please try again");return}};var S=class S extends f{constructor(){super(),this.progress=0,this.remindAnimation=!1;let e=navigator.language||navigator.userLanguage||navigator.browserLanguage||navigator.systemLanguage||"en";this.isChinese=e.indexOf("zh")>-1,this.showConnectResult=!1,this.connectResult={info:this.isChinese?"\u8FDE\u63A5\u51FA\u9519\uFF0C\u8BF7\u91CD\u8BD5":"Connection error, please try again",success:!1,remind:this.isMobile?this.isChinese?S.mobileFailAttention:S.mobileFailAttentionEng:this.isChinese?S.deviceFailAttention:S.deviceFailAttentionEng},this.envresult=m.getSystem(),this.isMobile=this.envresult.OS==="iOS"||this.envresult.OS==="Android",this.isFirefoxOrIOS=this.envresult.browser.name==="Firefox"||this.envresult.OS==="iOS",this.deviceState={},this.showRemind=!1,this.startTime=new Date().getTime(),this.attachShadow({mode:"open"})}render(){return c`
|
|
1140
|
+
`,v=Ha;var q=window.navigator&&window.navigator.userAgent||"",xo=/AppleWebKit\/([\d.]+)/i.exec(q),Xa=xo?parseFloat(xo.pop()||"0"):null,To=/iPad/i.test(q),di=/iPhone/i.test(q)&&!To,_a=/iPod/i.test(q),We=di||To||_a,Jc=We&&function(){let t=q.match(/OS (\d+)_/i);return t&&t[1]?t[1]:null}(),te=/Android/i.test(q),yo=te&&function(){let t=q.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(!t)return null;let e=t[1]&&parseFloat(t[1]),i=t[2]&&parseFloat(t[2]);return e&&i?parseFloat(`${t[1]}.${t[2]}`):e||null}(),zc=te&&/webkit/i.test(q)&&yo<2.3,jc=te&&yo<5&&Xa<537,ie=/Firefox/i.test(q),ge=ie&&function(){let t=q.match(/Firefox\/(\d+)/);return t&&t[1]?parseFloat(t[1]):null}(),re=/Edge\//i.test(q),Uo=re&&function(){let t=q.match(/Edge\/(\d+)/i);if(t&&t[1])return t[1]}(),Ve=/Edg\//i.test(q),me=Ve&&function(){let t=q.match(/Edg\/(\d+)/);return t&&t[1]?parseFloat(t[1]):null}(),Ze=/SogouMobileBrowser\//i.test(q),Ro=Ze&&function(){let t=q.match(/SogouMobileBrowser\/(\d+)/);return t&&t[1]?parseFloat(t[1]):null}(),Pe=/MetaSr\s/i.test(q),Do=Pe&&function(){let t=q.match(/MetaSr(\s\d+(\.\d+)+)/);return t&&t[1]?parseFloat(t[1]):null}(),k=/TBS\/\d+/i.test(q),bo=k&&function(){let t=q.match(/TBS\/(\d+)/i);if(t&&t[1])return t[1]}(),Je=/XWEB\/\d+/i.test(q),ko=Je&&function(){let t=q.match(/XWEB\/(\d+)/i);if(t&&t[1])return t[1]}(),Hc=/MSIE\s8\.0/.test(q),$a=/MSIE\/\d+/i.test(q),Xc=$a&&function(){let t=/MSIE\s(\d+)\.\d/.exec(q),e=t&&parseFloat(t[1]);return!e&&/Trident\/7.0/i.test(q)&&/rv:11.0/.test(q)&&(e=11),e}(),_c=/windowswechat/i.test(q),hi=/(micromessenger|webbrowser)/i.test(q),No=hi&&function(){let t=q.match(/MicroMessenger\/(\d+)/i);if(t&&t[1])return t[1]}(),ze=!k&&/MQQBrowser\/\d+/i.test(q)&&/COVC\/\d+/i.test(q),je=!k&&/MQQBrowser\/\d+/i.test(q)&&!/COVC\/\d+/i.test(q),ui=(je||ze)&&function(){let t=q.match(/ MQQBrowser\/([\d.]+)/);return t&&t[1]?t[1]:null}(),He=!k&&/ QQBrowser\/\d+/i.test(q),Bo=He&&function(){let t=q.match(/ QQBrowser\/([\d.]+)/);return t&&t[1]?t[1]:null}(),Xe=!k&&/QQBrowserLite\/\d+/i.test(q),Oo=Xe&&function(){let t=q.match(/QQBrowserLite\/([\d.]+)/);return t&&t[1]?t[1]:null}(),_e=!k&&/MQBHD\/\d+/i.test(q),Qo=_e&&function(){let t=q.match(/MQBHD\/([\d.]+)/);return t&&t[1]?t[1]:null}(),Fo=/Windows/i.test(q),Lo=!We&&/MAC OS X/i.test(q),Ko=!te&&/Linux/i.test(q),$c=/MicroMessenger/i.test(q),Go=/UCBrowser/i.test(q),el=/Electron/i.test(q),$e=/MiuiBrowser/i.test(q),Yo=$e&&function(){let t=q.match(/MiuiBrowser\/([\d.]+)/);return t&&t[1]?t[1]:null}(),et=/HuaweiBrowser/i.test(q),Wo=et&&function(){let t=q.match(/HuaweiBrowser\/([\d.]+)/);return t&&t[1]?t[1]:null}(),tt=/SamsungBrowser/i.test(q),Zo=tt&&function(){let t=q.match(/SamsungBrowser\/([\d.]+)/);return t&&t[1]?t[1]:null}(),it=/HeyTapBrowser/i.test(q),Po=it&&function(){let t=q.match(/HeyTapBrowser\/([\d.]+)/);return t&&t[1]?t[1]:null}(),rt=/VivoBrowser/i.test(q),Jo=rt&&function(){let t=q.match(/VivoBrowser\/([\d.]+)/);return t&&t[1]?t[1]:null}(),eq=/Chrome/i.test(q),P=!re&&!Pe&&!Ze&&!k&&!Je&&!Ve&&!He&&!$e&&!et&&!tt&&!it&&!rt&&/Chrome/i.test(q),tl=P&&function(){let t=q.match(/Chrome\/(\d+)/);return t&&t[1]?parseFloat(t[1]):null}(),gi=P&&function(){let t=q.match(/Chrome\/([\d.]+)/);return t&&t[1]?t[1]:null}(),Vt=!eq&&!je&&!ze&&!Xe&&!_e&&/Safari/i.test(q);var mi=Vt&&function(){let t=q.match(/Version\/([\d.]+)/);return t&&t[1]?t[1]:null}(),il=P?`Chrome/${gi}`:Vt?`Safari/${mi}`:"NotSupportedBrowser",zo=location.protocol==="file:"||location.hostname==="localhost"||/^\d+\.\d+\.\d+\.\d+$/.test(location.hostname);var jo=new Map([[te,"Android"],[We,"iOS"],[Fo,"Windows"],[Lo,"MacOS"],[Ko,"Linux"]]),Xo=()=>{let t="unknown";return jo.get(!0)&&(t=jo.get(!0)),t},Ho=new Map([[ie,["Firefox",ge]],[Ve,["Edg",me]],[P,["Chrome",gi]],[Vt,["Safari",mi]],[k,["TBS",bo]],[Je,["XWEB",ko]],[hi&&di,["WeChat",No]],[He,["QQ(Win)",Bo]],[je,["QQ(Mobile)",ui]],[ze,["QQ(Mobile X5)",ui]],[Xe,["QQ(Mac)",Oo]],[_e,["QQ(iPad)",Qo]],[$e,["MI",Yo]],[et,["HW",Wo]],[tt,["Samsung",Zo]],[it,["OPPO",Po]],[rt,["VIVO",Jo]],[re,["EDGE",Uo]],[Ze,["SogouMobile",Ro]],[Pe,["Sogou",Do]]]),_o=()=>{let t="unknown",e="unknown";return Ho.get(!0)&&([t,e]=Ho.get(!0)),{name:t,version:e}},$o=navigator.userAgent,es=()=>{let t;if(screen.width){let e=screen.width?screen.width*window.devicePixelRatio:"",i=screen.height?screen.height*window.devicePixelRatio:"";t={width:e,height:i}}return t},ts=()=>{var t;return(t=window.navigator)==null?void 0:t.hardwareConcurrency},is=navigator.language||navigator.userLanguage||navigator.browserLanguage||navigator.systemLanguage||"en";var rs=()=>{var t;return!!((t=navigator.mediaDevices)!=null&&t.getDisplayMedia)},Vs=()=>{let t={isSupported:!1},e=["AudioContext","webkitAudioContext","mozAudioContext","msAudioContext"];for(let i=0;i<e.length;i++)if(e[i]in window){t.isSupported=!0;break}return t.isSupported},os=()=>"WebSocket"in window&&window.WebSocket.CLOSING===2,ss=()=>Go||re||Ve&&typeof me=="number"&&me<80?!1:!(ie&&ge&&ge<56),As=()=>["RTCPeerConnection","webkitRTCPeerConnection","RTCIceGatherer"].filter(e=>e in window).length>0,ns=()=>{let t=!1;return["captureStream","mozCaptureStream","webkitCaptureStream"].forEach(e=>{typeof document=="undefined"||typeof document.createElement!="function"||!t&&e in document.createElement("canvas")&&(t=!0)}),t},as=()=>{let t=!1;return["captureStream","mozCaptureStream","webkitCaptureStream"].forEach(e=>{typeof document=="undefined"||typeof document.createElement!="function"||!t&&e in document.createElement("video")&&(t=!0)}),t},qs=()=>{let t=!1;return ie&&typeof window.mozRTCPeerConnection!="undefined"?"getSenders"in window.mozRTCPeerConnection.prototype&&(t=!0):P&&typeof window.webkitRTCPeerConnection!="undefined"&&"getSenders"in window.webkitRTCPeerConnection.prototype&&(t=!0),t},cs=()=>typeof MediaStreamTrack!="undefined"&&"applyConstraints"in MediaStreamTrack.prototype;var{toString:ol}=Object.prototype;var ls=t=>typeof t=="undefined";var Si,Ii,M=()=>Si,x=()=>Ii,ps=t=>{Si=t},ds=t=>{Ii=t},hs=()=>{Si=null,Ii=null};var tq=function(){let t=x();return ls(navigator.mediaDevices)?(t&&t.error("navigator.mediaDevices is not supported on your browser"),!0):!1},iq=function(){let t=x();return location.protocol==="http:"&&!zo?(t&&t.error("you should use https"),!0):!1},us=()=>{if(!navigator.mediaDevices)return!1;let t=["getUserMedia","enumerateDevices"];return t.filter(e=>e in navigator.mediaDevices).length===t.length},J=async t=>{if(iq()||tq())return[];let e=!1,i=!1,r=!1,V=!1,o=!1,s=[],A=[],n=[],d={},l;return t&&(l=await navigator.mediaDevices.getUserMedia(t)),(await navigator.mediaDevices.enumerateDevices()).forEach(g=>{let p={};for(let E in g)try{typeof g[E]!="function"&&(p[E]=g[E])}catch(oe){}let w=p.deviceId||"",N=p.label||"",z=p.kind||"";d[w+N+z]||(p.kind==="audio"&&(p.kind="audioinput"),p.kind==="video"&&(p.kind="videoinput"),p.deviceId||(p.deviceId=p.id),p.label?(p.kind==="videoinput"&&!V&&(V=!0),p.kind==="audioinput"&&!o&&(o=!0)):p.kind==="videoinput"?p.label=`Camera ${n.length+1}`:p.kind==="audioinput"?p.label=`Microphone ${s.length+1}`:p.kind==="audiooutput"?p.label=`Speaker ${A.length+1}`:p.label="Please invoke getUserMedia once.",p.kind==="audioinput"&&(e=!0,s.indexOf(p)===-1&&s.push(p)),p.kind==="audiooutput"&&(i=!0,A.indexOf(p)===-1&&A.push(p)),p.kind==="videoinput"&&(r=!0,n.indexOf(p)===-1&&n.push(p)),d[p.deviceId+p.label+p.kind]=p,l==null||l.getTracks().forEach(E=>E.stop()))}),{hasWebCamPermission:V,hasMicrophonePermission:o,cameras:n,speakers:A,microphones:s}};async function gs(t){return{cameraList:(await J({video:!0,audio:!1})).cameras}}var ms=async t=>({microphoneList:(await J({video:!1,audio:!0})).microphones});async function fs(){return(await J({video:!1,audio:!0})).speakers}var Ss=async()=>{let t={sdp:"",type:"offer"},e=!1,i=!1;try{let r=new RTCPeerConnection,V=document.createElement("canvas");V.getContext("2d");let o=V.captureStream(0);return r.addTrack(o.getVideoTracks()[0],o),t=await r.createOffer(),t&&t.sdp&&(t.sdp.toLowerCase().indexOf("h264")!==-1&&(e=!0),t.sdp.toLowerCase().indexOf("vp8")!==-1&&(i=!0)),r.close(),{isH264EncodeSupported:e,isVp8EncodeSupported:i}}catch(r){return{isH264EncodeSupported:!1,isVp8EncodeSupported:!1}}},Is=async()=>{let t={sdp:"",type:"offer"},e=!1,i=!1;try{let r=new RTCPeerConnection;return t=await r.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0}),t&&t.sdp&&(t.sdp.toLowerCase().indexOf("h264")!==-1&&(e=!0),t.sdp.toLowerCase().indexOf("vp8")!==-1&&(i=!0)),r.close(),{isH264DecodeSupported:e,isVp8DecodeSupported:i}}catch(r){return{isH264DecodeSupported:!1,isVp8DecodeSupported:!1}}};async function Ei(){return new Promise(async(t,e)=>{try{let z=function(){clearInterval(w),clearInterval(o),clearTimeout(N),A.close(),n.close(),s.getTracks().forEach(E=>E.stop())};var i=z;let r=document.createElement("canvas"),V=r.getContext("2d");r.width=640,r.height=480;let o=setInterval(()=>{V&&V.fillText("test",0,0)},33),s=r.captureStream(15),A=new RTCPeerConnection({}),n=new RTCPeerConnection({});A.addEventListener("icecandidate",E=>{n.addIceCandidate(E.candidate)}),n.addEventListener("icecandidate",E=>{A.addIceCandidate(E.candidate)});let d=RTCRtpSender.getCapabilities("video"),u=(d?d.codecs:[]).find(E=>E.mimeType==="video/H264");A.addTransceiver(s.getVideoTracks()[0],{direction:"sendonly",streams:[s],sendEncodings:[{maxBitrate:500*1e3}]}),n.addTransceiver("video",{direction:"recvonly"}),u&&A.getTransceivers()[0].setCodecPreferences([u].filter(E=>E!==void 0));let g=await A.createOffer();await A.setLocalDescription(g),await n.setRemoteDescription(g);let p=await n.createAnswer();await n.setLocalDescription(p),await A.setRemoteDescription(p);let w=-1,N=-1;N=setTimeout(()=>{z(),t(!1)},30*1e3),w=setInterval(async()=>{(await A.getStats()).forEach(oe=>{oe.type==="outbound-rtp"&&oe.mediaType==="video"&&(typeof oe.encoderImplementation=="undefined"&&(z(),e(new Error("your browser does not support to detect HW acceleration enabled."))),oe.encoderImplementation==="ExternalEncoder"&&(z(),t(!0)))})},500)}catch(r){e(r)}})}var rq={system:null,APISupported:null,devices:null,codecsSupported:null,report:null,networkInfo:null,TRTCInitDone:!1,mirror:!1,async getReportAsync(){return this.getSystem(),this.getAPISupported(),await this.getCodecAsync(),await this.getDevicesAsync(),this.report={system:this.system,APISupported:this.APISupported,codecsSupported:this.codecsSupported,devices:this.devices},this.report},async isTRTCSupported(){await this.getReportAsync();let{isWebRTCSupported:t,isUserMediaSupported:e,isWebSocketSupported:i}=this.APISupported;if(!t)return{result:!1,reason:"you browser does not support WebRTC."};if(!i)return{result:!1,reason:"you browser does not support WebSocket."};if(!e)return{result:!1,reason:"you browser does not support getUserMedia."};let{isH264EncodeSupported:r,isVp8EncodeSupported:V,isH264DecodeSupported:o,isVp8DecodeSupported:s}=this.codecsSupported;return!r&&!V?{result:!1,reason:`isH264EncodeSupported: ${r} isVp8EncodeSupported: ${V} `}:!o&&!s?{result:!1,reason:`isH264DecodeSupported: ${o} isVp8DecodeSupported: ${s} `}:ss()?{result:!0}:{result:!1,reason:"your browser does not qualify, it is recommended to use Chrome and firefox."}},async getCodecAsync(){let{isH264EncodeSupported:t,isVp8EncodeSupported:e}=await Ss(),{isH264DecodeSupported:i,isVp8DecodeSupported:r}=await Is();return this.codecsSupported={isH264EncodeSupported:t,isVp8EncodeSupported:e,isH264DecodeSupported:i,isVp8DecodeSupported:r},this.codecsSupported},async getDevicesAsync(){let{hasWebCamPermission:t,hasMicrophonePermission:e,cameras:i,microphones:r,speakers:V}=await J();return this.devices={cameras:i,microphones:r,speakers:V||[],hasWebCamPermission:t,hasMicrophonePermission:e},this.devices},getSystem(){return this.system={UA:$o,OS:Xo(),browser:_o(),displayResolution:es(),hardwareConcurrency:ts(),language:is},this.system},getAPISupported(){return this.APISupported={isUserMediaSupported:us(),isWebRTCSupported:As(),isWebSocketSupported:os(),isWebAudioSupported:Vs(),isScreenCaptureAPISupported:rs(),isCanvasCapturingSupported:ns(),isVideoCapturingSupported:as(),isRTPSenderReplaceTracksSupported:qs(),isApplyConstraintsSupported:cs()},this.APISupported},async isHardWareAccelerationEnabled(){return await Ei()}},m=rq;function Es(){let t=`https://web.sdk.qcloud.com/trtc/electron/download/resources/media/TestSpeaker.mp3?t=${new Date().getTime()}`,e=3e3;return Promise.race([fetch(t,{mode:"cors"}),new Promise((i,r)=>setTimeout(()=>r(!1),e))]).then(i=>{if(!i.ok)throw new Error("\u7F51\u7EDC\u9519\u8BEF");return!0}).catch(()=>!1)}var vs={0:"\u672A\u77E5",1:"\u6781\u4F73",2:"\u8F83\u597D",3:"\u4E00\u822C",4:"\u5DEE",5:"\u6781\u5DEE",6:"\u65AD\u5F00"},Cs={0:"Unknown",1:"Excellent",2:"Good",3:"Average",4:"Poor",5:"Very Poor",6:"Disconnected"},vi=t=>{let i=(navigator.language||navigator.userLanguage||navigator.browserLanguage||navigator.systemLanguage||"en").indexOf("zh")>-1,r=x();switch(r.error("getUserMedia error",t),t.name){case"NotReadableError":i?r.error("\u6682\u65F6\u65E0\u6CD5\u8BBF\u95EE\u6444\u50CF\u5934/\u9EA6\u514B\u98CE\uFF0C\u8BF7\u786E\u4FDD\u7CFB\u7EDF\u6388\u4E88\u5F53\u524D\u6D4F\u89C8\u5668\u6444\u50CF\u5934/\u9EA6\u514B\u98CE\u6743\u9650\uFF0C\u5E76\u4E14\u6CA1\u6709\u5176\u4ED6\u5E94\u7528\u5360\u7528\u6444\u50CF\u5934/\u9EA6\u514B\u98CE"):r.error("Cannot access camera/microphone temporarily. Please make sure the system has granted the current browser permission to access the camera/microphone and no other application is using the camera/microphone");return;case"NotAllowedError":i?r.error("\u7528\u6237/\u7CFB\u7EDF\u5DF2\u62D2\u7EDD\u6388\u6743\u8BBF\u95EE\u6444\u50CF\u5934\u6216\u9EA6\u514B\u98CE"):r.error("User/system has denied access to camera/microphone");return;case"NotFoundError":i?r.error("\u627E\u4E0D\u5230\u6444\u50CF\u5934\u6216\u9EA6\u514B\u98CE\u8BBE\u5907"):r.error("Cannot find camera or microphone device");return;case"OverConstrainedError":i?r.error("\u91C7\u96C6\u5C5E\u6027\u8BBE\u7F6E\u9519\u8BEF\uFF0C\u5982\u679C\u60A8\u6307\u5B9A\u4E86 cameraId/microphoneId\uFF0C\u8BF7\u786E\u4FDD\u5B83\u4EEC\u662F\u4E00\u4E2A\u6709\u6548\u7684\u975E\u7A7A\u5B57\u7B26\u4E32"):r.error("Capture attribute setting error. If you specified cameraId/microphoneId, please make sure they are valid non-empty strings");return;default:i?r.error("\u521D\u59CB\u5316\u672C\u5730\u6D41\u65F6\u9047\u5230\u672A\u77E5\u9519\u8BEF, \u8BF7\u91CD\u8BD5"):r.error("Unknown error encountered when initializing local stream, please try again");return}};var S=class S extends f{constructor(){super(),this.progress=0,this.remindAnimation=!1;let e=navigator.language||navigator.userLanguage||navigator.browserLanguage||navigator.systemLanguage||"en";this.isChinese=e.indexOf("zh")>-1,this.showConnectResult=!1,this.connectResult={info:this.isChinese?"\u8FDE\u63A5\u51FA\u9519\uFF0C\u8BF7\u91CD\u8BD5":"Connection error, please try again",success:!1,remind:this.isMobile?this.isChinese?S.mobileFailAttention:S.mobileFailAttentionEng:this.isChinese?S.deviceFailAttention:S.deviceFailAttentionEng},this.envresult=m.getSystem(),this.isMobile=this.envresult.OS==="iOS"||this.envresult.OS==="Android",this.isFirefoxOrSafariOrIOS=this.envresult.browser.name==="Firefox"||this.envresult.OS==="iOS"||this.envresult.browser.name==="Safari",this.deviceState={},this.showRemind=!1,this.startTime=new Date().getTime(),this.attachShadow({mode:"open"})}render(){return c`
|
|
1141
1141
|
<style>${v}</style>
|
|
1142
1142
|
<div class="device-connect">
|
|
1143
1143
|
<div class="testing-title">${this.isChinese?"\u8BBE\u5907\u8FDE\u63A5":"Device Connection"}</div>
|
|
@@ -1196,7 +1196,7 @@ var ws=Object.create;var ct=Object.defineProperty,xs=Object.defineProperties,Ts=
|
|
|
1196
1196
|
</div>
|
|
1197
1197
|
`}setShowRemind(e){this.showRemind=e,this.requestUpdate()}firstUpdated(){this.getDeviceConnectResult(),this.stepNameList=JSON.parse(this.getAttribute("stepnamelist")),this.judgeList(this.stepNameList);let e=this.shadowRoot.querySelector(".testing-prepare-info");e.innerHTML=this.prepareInfo()}updated(){this.showRemind&&(this.shadowRoot.querySelector(".connect-attention-info").innerHTML=this.connectResult.remind)}hasCameraDetect(){return this.stepNameList.indexOf("camera")>=0}hasMicrophoneDetect(){return this.stepNameList.indexOf("microphone")>=0}hasSpeakerDetect(){return this.stepNameList.indexOf("speaker")>=0}hasNetworkDetect(){return this.stepNameList.indexOf("network")>=0}showReconnectButton(){let{deviceState:e}=this;return this.showConnectResult&&!(e.hasCameraConnect&&e.hasMicrophoneConnect&&e.hasSpeakerConnect&&e.hasNetworkConnect)}showStartDetectButton(){let{deviceState:e}=this;return this.showConnectResult&&e.hasCameraConnect&&e.hasMicrophoneConnect&&e.hasSpeakerConnect&&e.hasNetworkConnect}handler(e){let i=this.shadowRoot.querySelector(".inner-progress");e||(this.progressInterval&&clearInterval(this.progressInterval),this.progressInterval=setInterval(()=>{if(this.progress+=10,i.style.transform=`translateX(${this.progress}%)`,this.progress===100){this.progress=0,i.style.transform="translateX(0%)";let r=new CustomEvent("remind-changed",{detail:this.remindAnimation});this.dispatchEvent(r),setTimeout(()=>{this.remindAnimation&&this.isMobile&&(this.isChinese?alert(S.mobileFailAttention.replace(/<br>/g,`
|
|
1198
1198
|
`)):alert(S.mobileFailAttentionEng.replace(/<br>/g,`
|
|
1199
|
-
`)))},200),this.showConnectResult=!0,this.setAttribute("showconnectresult",this.showConnectResult),clearInterval(this.progressInterval)}},150))}prepareInfo(){return this.isChinese?`\u8BBE\u5907\u68C0\u6D4B\u524D\u8BF7\u786E\u8BA4\u8BBE\u5907\u8FDE\u63A5\u4E86${this.hasCameraDetect()?"\u6444\u50CF\u5934":""}${this.hasMicrophoneDetect()?"\u3001\u9EA6\u514B\u98CE":""}${this.hasSpeakerDetect()?"\u3001\u626C\u58F0\u5668":""}${this.hasNetworkDetect()?"\u548C\u7F51\u7EDC":""}`:`Make sure the device is connected before testing the device ${this.hasCameraDetect()?"camera":""}${this.hasMicrophoneDetect()?", microphone":""}${this.hasSpeakerDetect()?", speaker":""}${this.hasNetworkDetect()?" and network":""}`}judgeList(e){let i=this.shadowRoot.querySelector(".camerasvg"),r=this.shadowRoot.querySelector(".microphonesvg"),V=this.shadowRoot.querySelector(".speakersvg"),o=this.shadowRoot.querySelector(".networksvg");e.indexOf("camera")>=0?i.style.display="block":i.style.display="none",e.indexOf("microphone")>=0?r.style.display="block":r.style.display="none",e.indexOf("speaker")>=0?V.style.display="block":V.style.display="none",e.indexOf("network")>=0?o.style.display="block":o.style.display="none"}async getDeviceConnectResult(){let e=[],i=[],r=[];try{let{cameras:l,speakers:u,microphones:g}=await J();e=l,i=g,r=u}catch(l){}let V=e.length>0,o=i.length>0,s=this.hasSpeakerDetect()?this.isFirefoxOrIOS||r.length>0:!0,A=this.hasNetworkDetect()?await Es():!0,n={hasCameraDevice:V,hasMicrophoneDevice:o,hasSpeakerDevice:s,hasNetworkConnect:A,hasCameraConnect:!1,hasMicrophoneConnect:!1,hasSpeakerConnect:s};this.deviceState=n,this.remindAnimation=!1,this.connectResult=this.getDeviceConnectInfo(n);let d=[];V&&d.push(new Promise((l,u)=>{navigator.mediaDevices.getUserMedia({video:!0,audio:!1}).then(g=>{this.remindAnimation=!1,n=H(j({},n),{hasCameraConnect:!0}),this.deviceState=n,this.connectResult=this.getDeviceConnectInfo(n),g.getTracks()[0].stop(),l()}).catch(g=>{vi(g),l()})})),o&&d.push(new Promise((l,u)=>{navigator.mediaDevices.getUserMedia({video:!1,audio:!0}).then(g=>{this.remindAnimation=!1,n=H(j({},n),{hasMicrophoneConnect:o}),this.deviceState=n,this.connectResult=this.getDeviceConnectInfo(n),g.getTracks()[0].stop(),l()}).catch(g=>{vi(g),l()})})),await Promise.all(d),this.handler(this.showConnectResult)}getDeviceConnectInfo(e){this.remindAnimation=!1;let i="\u8FDE\u63A5\u51FA\u9519\uFF0C\u8BF7\u91CD\u8BD5";return this.isChinese||(i="Connection error, please try again"),e.hasCameraConnect&&e.hasMicrophoneConnect&&e.hasSpeakerConnect&&e.hasNetworkConnect?(this.isChinese?i=this.hasNetworkDetect?"\u8BBE\u5907\u53CA\u7F51\u7EDC\u8FDE\u63A5\u6210\u529F\uFF0C\u8BF7\u5F00\u59CB\u8BBE\u5907\u68C0\u6D4B":"\u8BBE\u5907\u8FDE\u63A5\u6210\u529F\uFF0C\u8BF7\u5F00\u59CB\u8BBE\u5907\u68C0\u6D4B":i=this.hasNetworkDetect?"Device and network connection are successful, start device detection":"Device connection successful, start device detection",{info:i,success:!0}):e.hasCameraDevice&&e.hasMicrophoneDevice&&e.hasSpeakerDevice?e.hasCameraConnect&&e.hasMicrophoneConnect?e.hasNetworkConnect?{info:i,success:!1}:(this.isChinese?i="\u7F51\u7EDC\u8FDE\u63A5\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u8FDE\u63A5":i="Network connection failed, please check network connection",{info:i,success:!1,remind:this.isChinese?S.networkFailAttention:S.networkFailAttentionEng}):(this.isChinese?i=e.hasNetworkConnect?"\u8BF7\u5141\u8BB8\u6D4F\u89C8\u5668\u53CA\u7F51\u9875\u8BBF\u95EE\u6444\u50CF\u5934/\u9EA6\u514B\u98CE\u8BBE\u5907":"\u8BF7\u5141\u8BB8\u6D4F\u89C8\u5668\u53CA\u7F51\u9875\u8BBF\u95EE\u6444\u50CF\u5934/\u9EA6\u514B\u98CE\u8BBE\u5907\uFF0C\u5E76\u68C0\u67E5\u7F51\u7EDC\u8FDE\u63A5":i=e.hasNetworkConnect?"Please allow browser and web access to camera/microphone devices":"Please allow browser and web access to camera/microphone devices, and check the network connection",this.remindAnimation=!0,{info:i,success:!1,remind:this.isMobile?this.isChinese?S.mobileFailAttention:S.mobileFailAttentionEng:this.isChinese?S.deviceFailAttention:S.deviceFailAttentionEng}):(this.isChinese?i=`\u68C0\u6D4B\u5230${e.hasCameraDevice?"":"\u3010\u6444\u50CF\u5934\u3011"}${e.hasMicrophoneDevice?"":"\u3010\u9EA6\u514B\u98CE\u3011"}${e.hasSpeakerDevice?"":"\u3010\u626C\u58F0\u5668\u3011"}\u8BBE\u5907\u4E0D\u5B58\u5728\uFF0C\u8BF7\u68C0\u67E5\u8BBE\u5907\u8FDE\u63A5`:i=`No ${e.hasCameraDevice?"":"\u3010camera\u3011"}${e.hasMicrophoneDevice?"":"\u3010microphone\u3011"}${e.hasSpeakerDevice?"":"\u3010speaker\u3011"} device detected, please check the device connection`,{info:i,success:!1})}handleReset(){this.progress=0,this.showConnectResult=!1,this.setAttribute("showconnectresult",this.showConnectResult)}async attributeChangedCallback(e,i,r){if(e==="showconnectresult"){if(r==="true"){let V=this.shadowRoot.querySelector(".camerasvg"),o=this.shadowRoot.querySelector(".microphonesvg"),s=this.shadowRoot.querySelector(".speakersvg"),A=this.shadowRoot.querySelector(".networksvg"),n=this.shadowRoot.querySelector(".outer-progress"),d=this.shadowRoot.querySelector("trtc-custom-button");if(this.deviceState.hasCameraConnect?(V.classList.remove("connect-fail"),V.classList.add("connect-success")):V.classList.add("connect-fail"),this.deviceState.hasMicrophoneConnect?(o.classList.remove("connect-fail"),o.classList.add("connect-success")):o.classList.add("connect-fail"),this.deviceState.hasSpeakerConnect?(s.classList.add("connect-success"),s.classList.remove("connect-fail")):s.classList.add("connect-fail"),this.deviceState.hasNetworkConnect?(A.classList.add("connect-success"),A.classList.remove("connect-fail")):A.classList.add("connect-fail"),this.showReconnectButton()&&(d.setAttribute("type","outlined"),this.isChinese?d.innerHTML="\u91CD\u65B0\u8FDE\u63A5":d.innerHTML="Reconnect",d.addEventListener("click",()=>{this.remindAnimation=!1;let l=new CustomEvent("remind-changed",{detail:this.remindAnimation});this.dispatchEvent(l);let u=new Date().getTime(),g=M();g&&g.kvStatManager.addFailedEvent({key:591704,error:u-this.startTime}),this.handleReset()})),this.showStartDetectButton()&&(d.setAttribute("type","contained"),this.setAttribute("connectstage",1),this.isChinese?d.innerHTML="\u5F00\u59CB\u68C0\u6D4B":d.innerHTML="Start detection"),this.showConnectResult){n.style.display="none",this.shadowRoot.querySelector(".gray-text").style.display="none";let l=this.shadowRoot.querySelector(".result");l.style.display="block",this.connectResult.success===!0?l.classList.add("green-text"):(l.classList.add("red-text"),this.connectResult.remind&&(this.shadowRoot.querySelector(".error-connect").style.display="inline-block")),l.querySelector("span").innerHTML=this.connectResult.info}}else if(r==="false"){let V=this.shadowRoot.querySelector(".camerasvg"),o=this.shadowRoot.querySelector(".microphonesvg"),s=this.shadowRoot.querySelector(".speakersvg"),A=this.shadowRoot.querySelector(".networksvg"),n=this.shadowRoot.querySelector(".outer-progress"),d=this.shadowRoot.querySelector("trtc-custom-button");n.style.display="block",this.shadowRoot.querySelector(".result").classList.remove("green-text"),this.shadowRoot.querySelector(".result").classList.remove("red-text"),V.classList.remove("connect-fail"),V.classList.remove("connect-success"),o.classList.remove("connect-fail"),o.classList.remove("connect-success"),s.classList.remove("connect-fail"),s.classList.remove("connect-success"),A.classList.remove("connect-fail"),A.classList.remove("connect-success"),d.setAttribute("type","disabled"),this.isChinese?d.innerHTML="\u5F00\u59CB\u68C0\u6D4B":d.innerHTML="Start detection",this.getDeviceConnectResult(),this.shadowRoot.querySelector(".gray-text").style.display="block";let l=this.shadowRoot.querySelector(".result");l.style.display="none",this.shadowRoot.querySelector(".error-connect").style.display="none"}}}};h(S,"observedAttributes",["stepnamelist","showconnectresult"]),h(S,"properties",{showRemind:{type:Boolean},constTime:{type:Number}}),h(S,"deviceFailAttention","1. \u82E5\u6D4F\u89C8\u5668\u5F39\u51FA\u63D0\u793A\uFF0C\u8BF7\u9009\u62E9\u201C\u5141\u8BB8\u201D<br>2. \u82E5\u6740\u6BD2\u8F6F\u4EF6\u5F39\u51FA\u63D0\u793A\uFF0C\u8BF7\u9009\u62E9\u201C\u5141\u8BB8\u201D<br>3. \u68C0\u67E5\u7CFB\u7EDF\u8BBE\u7F6E\uFF0C\u5141\u8BB8\u6D4F\u89C8\u5668\u8BBF\u95EE\u6444\u50CF\u5934\u53CA\u9EA6\u514B\u98CE<br>4. \u68C0\u67E5\u6D4F\u89C8\u5668\u8BBE\u7F6E\uFF0C\u5141\u8BB8\u7F51\u9875\u8BBF\u95EE\u6444\u50CF\u5934\u53CA\u9EA6\u514B\u98CE<br>5. \u68C0\u67E5\u6444\u50CF\u5934/\u9EA6\u514B\u98CE\u662F\u5426\u6B63\u786E\u8FDE\u63A5\u5E76\u5F00\u542F<br>6. \u5C1D\u8BD5\u91CD\u65B0\u8FDE\u63A5\u6444\u50CF\u5934/\u9EA6\u514B\u98CE<br>7. \u5C1D\u8BD5\u91CD\u542F\u8BBE\u5907\u540E\u91CD\u65B0\u68C0\u6D4B"),h(S,"deviceFailAttentionEng",'1. If the browser prompts, select "Allow"<br>2. If the antivirus software prompts, select "Allow"<br>3. Check system settings to allow camera and microphone<br>4. Check browser settings to allow camera and microphone<br>5. Check camera/microphone turned on<br>6. Try reconnecting the camera/microphone<br>7. Try restarting the device and retesting'),h(S,"mobileFailAttention","1. \u524D\u5F80\u624B\u673A\u8BBE\u7F6E,\u6253\u5F00\u672C\u5E94\u7528\u7684\u76F8\u673A\u548C\u9EA6\u514B\u98CE\u6743\u9650<br>2. \u91CD\u65B0\u5237\u65B0\u672C\u9875\u5E76\u5141\u8BB8\u76F8\u673A\u548C\u9EA6\u514B\u98CE\u6743\u9650<br>"),h(S,"mobileFailAttentionEng","1. Go to your phone Settings to allow camera and microphone permissions for this app <br>2. Refresh this page and allow camera and microphone permissions <br>"),h(S,"networkFailAttention","1. \u8BF7\u68C0\u67E5\u8BBE\u5907\u662F\u5426\u8054\u7F51<br>2. \u8BF7\u5237\u65B0\u7F51\u9875\u540E\u518D\u6B21\u68C0\u6D4B<br>3. \u8BF7\u5C1D\u8BD5\u66F4\u6362\u7F51\u7EDC\u540E\u518D\u6B21\u68C0\u6D4B"),h(S,"networkFailAttentionEng","1. Check if the device is connected to the network<br>2. Refresh the page and test again<br>3. Try again after changing the network");var ot=S;customElements.get("trtc-device-connect")||customElements.define("trtc-device-connect",ot);var fe=class extends f{constructor(){super(),this.deviceList=[],this.activeDevice={},this.activeDeviceId="",this.attachShadow({mode:"open"})}async getDeviceListData(){let e=await Ms(this.deviceType),i=e.map(r=>r.deviceId);this.deviceList=e,this.choseDevice&&i.indexOf(this.choseDevice.deviceId)>=0?(this.activeDevice=e.find(r=>r.deviceId===this.choseDevice.deviceId),this.activeDeviceId=this.choseDevice.deviceId):(this.activeDevice=e[0],this.activeDeviceId=e[0].deviceId),this.onChange(this.activeDevice),this.requestUpdate()}async firstUpdated(){await this.getDeviceListData(),navigator.mediaDevices.addEventListener("devicechange",async()=>{let e=await Ms(this.deviceType);this.deviceList=e,e[0].deviceId!==this.activeDeviceId&&(this.activeDevice=e[0],this.activeDeviceId=e[0].deviceId,this.onChange(this.activeDevice)),this.requestUpdate()})}disconnectedCallback(){this.remove()}handleChange(e){let i=e.target.value,r=M();r&&r.kvStatManager.addEnum({key:591713,value:1});let V=this.deviceList.find(o=>o.deviceId===i);this.activeDevice=V,this.activeDeviceId=i,this.onChange(this.activeDevice),this.requestUpdate()}render(){return c`
|
|
1199
|
+
`)))},200),this.showConnectResult=!0,this.setAttribute("showconnectresult",this.showConnectResult),clearInterval(this.progressInterval)}},150))}prepareInfo(){return this.isChinese?`\u8BBE\u5907\u68C0\u6D4B\u524D\u8BF7\u786E\u8BA4\u8BBE\u5907\u8FDE\u63A5\u4E86${this.hasCameraDetect()?"\u6444\u50CF\u5934":""}${this.hasMicrophoneDetect()?"\u3001\u9EA6\u514B\u98CE":""}${this.hasSpeakerDetect()?"\u3001\u626C\u58F0\u5668":""}${this.hasNetworkDetect()?"\u548C\u7F51\u7EDC":""}`:`Make sure the device is connected before testing the device ${this.hasCameraDetect()?"camera":""}${this.hasMicrophoneDetect()?", microphone":""}${this.hasSpeakerDetect()?", speaker":""}${this.hasNetworkDetect()?" and network":""}`}judgeList(e){let i=this.shadowRoot.querySelector(".camerasvg"),r=this.shadowRoot.querySelector(".microphonesvg"),V=this.shadowRoot.querySelector(".speakersvg"),o=this.shadowRoot.querySelector(".networksvg");e.indexOf("camera")>=0?i.style.display="block":i.style.display="none",e.indexOf("microphone")>=0?r.style.display="block":r.style.display="none",e.indexOf("speaker")>=0?V.style.display="block":V.style.display="none",e.indexOf("network")>=0?o.style.display="block":o.style.display="none"}async getDeviceConnectResult(){let e=[],i=[],r=[];try{let{cameras:l,speakers:u,microphones:g}=await J();e=l,i=g,r=u}catch(l){}let V=e.length>0,o=i.length>0,s=this.hasSpeakerDetect()?this.isFirefoxOrSafariOrIOS||r.length>0:!0,A=this.hasNetworkDetect()?await Es():!0,n={hasCameraDevice:V,hasMicrophoneDevice:o,hasSpeakerDevice:s,hasNetworkConnect:A,hasCameraConnect:!1,hasMicrophoneConnect:!1,hasSpeakerConnect:s};this.deviceState=n,this.remindAnimation=!1,this.connectResult=this.getDeviceConnectInfo(n);let d=[];V&&d.push(new Promise((l,u)=>{navigator.mediaDevices.getUserMedia({video:!0,audio:!1}).then(g=>{this.remindAnimation=!1,n=H(j({},n),{hasCameraConnect:!0}),this.deviceState=n,this.connectResult=this.getDeviceConnectInfo(n),g.getTracks()[0].stop(),l()}).catch(g=>{vi(g),l()})})),o&&d.push(new Promise((l,u)=>{navigator.mediaDevices.getUserMedia({video:!1,audio:!0}).then(g=>{this.remindAnimation=!1,n=H(j({},n),{hasMicrophoneConnect:o}),this.deviceState=n,this.connectResult=this.getDeviceConnectInfo(n),g.getTracks()[0].stop(),l()}).catch(g=>{vi(g),l()})})),await Promise.all(d),this.handler(this.showConnectResult)}getDeviceConnectInfo(e){this.remindAnimation=!1;let i="\u8FDE\u63A5\u51FA\u9519\uFF0C\u8BF7\u91CD\u8BD5";return this.isChinese||(i="Connection error, please try again"),e.hasCameraConnect&&e.hasMicrophoneConnect&&e.hasSpeakerConnect&&e.hasNetworkConnect?(this.isChinese?i=this.hasNetworkDetect?"\u8BBE\u5907\u53CA\u7F51\u7EDC\u8FDE\u63A5\u6210\u529F\uFF0C\u8BF7\u5F00\u59CB\u8BBE\u5907\u68C0\u6D4B":"\u8BBE\u5907\u8FDE\u63A5\u6210\u529F\uFF0C\u8BF7\u5F00\u59CB\u8BBE\u5907\u68C0\u6D4B":i=this.hasNetworkDetect?"Device and network connection are successful, start device detection":"Device connection successful, start device detection",{info:i,success:!0}):e.hasCameraDevice&&e.hasMicrophoneDevice&&e.hasSpeakerDevice?e.hasCameraConnect&&e.hasMicrophoneConnect?e.hasNetworkConnect?{info:i,success:!1}:(this.isChinese?i="\u7F51\u7EDC\u8FDE\u63A5\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u8FDE\u63A5":i="Network connection failed, please check network connection",{info:i,success:!1,remind:this.isChinese?S.networkFailAttention:S.networkFailAttentionEng}):(this.isChinese?i=e.hasNetworkConnect?"\u8BF7\u5141\u8BB8\u6D4F\u89C8\u5668\u53CA\u7F51\u9875\u8BBF\u95EE\u6444\u50CF\u5934/\u9EA6\u514B\u98CE\u8BBE\u5907":"\u8BF7\u5141\u8BB8\u6D4F\u89C8\u5668\u53CA\u7F51\u9875\u8BBF\u95EE\u6444\u50CF\u5934/\u9EA6\u514B\u98CE\u8BBE\u5907\uFF0C\u5E76\u68C0\u67E5\u7F51\u7EDC\u8FDE\u63A5":i=e.hasNetworkConnect?"Please allow browser and web access to camera/microphone devices":"Please allow browser and web access to camera/microphone devices, and check the network connection",this.remindAnimation=!0,{info:i,success:!1,remind:this.isMobile?this.isChinese?S.mobileFailAttention:S.mobileFailAttentionEng:this.isChinese?S.deviceFailAttention:S.deviceFailAttentionEng}):(this.isChinese?i=`\u68C0\u6D4B\u5230${e.hasCameraDevice?"":"\u3010\u6444\u50CF\u5934\u3011"}${e.hasMicrophoneDevice?"":"\u3010\u9EA6\u514B\u98CE\u3011"}${e.hasSpeakerDevice?"":"\u3010\u626C\u58F0\u5668\u3011"}\u8BBE\u5907\u4E0D\u5B58\u5728\uFF0C\u8BF7\u68C0\u67E5\u8BBE\u5907\u8FDE\u63A5`:i=`No ${e.hasCameraDevice?"":"\u3010camera\u3011"}${e.hasMicrophoneDevice?"":"\u3010microphone\u3011"}${e.hasSpeakerDevice?"":"\u3010speaker\u3011"} device detected, please check the device connection`,{info:i,success:!1})}handleReset(){this.progress=0,this.showConnectResult=!1,this.setAttribute("showconnectresult",this.showConnectResult)}async attributeChangedCallback(e,i,r){if(e==="showconnectresult"){if(r==="true"){let V=this.shadowRoot.querySelector(".camerasvg"),o=this.shadowRoot.querySelector(".microphonesvg"),s=this.shadowRoot.querySelector(".speakersvg"),A=this.shadowRoot.querySelector(".networksvg"),n=this.shadowRoot.querySelector(".outer-progress"),d=this.shadowRoot.querySelector("trtc-custom-button");if(this.deviceState.hasCameraConnect?(V.classList.remove("connect-fail"),V.classList.add("connect-success")):V.classList.add("connect-fail"),this.deviceState.hasMicrophoneConnect?(o.classList.remove("connect-fail"),o.classList.add("connect-success")):o.classList.add("connect-fail"),this.deviceState.hasSpeakerConnect?(s.classList.add("connect-success"),s.classList.remove("connect-fail")):s.classList.add("connect-fail"),this.deviceState.hasNetworkConnect?(A.classList.add("connect-success"),A.classList.remove("connect-fail")):A.classList.add("connect-fail"),this.showReconnectButton()&&(d.setAttribute("type","outlined"),this.isChinese?d.innerHTML="\u91CD\u65B0\u8FDE\u63A5":d.innerHTML="Reconnect",d.addEventListener("click",()=>{this.remindAnimation=!1;let l=new CustomEvent("remind-changed",{detail:this.remindAnimation});this.dispatchEvent(l);let u=new Date().getTime(),g=M();g&&g.kvStatManager.addFailedEvent({key:591704,error:u-this.startTime}),this.handleReset()})),this.showStartDetectButton()&&(d.setAttribute("type","contained"),this.setAttribute("connectstage",1),this.isChinese?d.innerHTML="\u5F00\u59CB\u68C0\u6D4B":d.innerHTML="Start detection"),this.showConnectResult){n.style.display="none",this.shadowRoot.querySelector(".gray-text").style.display="none";let l=this.shadowRoot.querySelector(".result");l.style.display="block",this.connectResult.success===!0?l.classList.add("green-text"):(l.classList.add("red-text"),this.connectResult.remind&&(this.shadowRoot.querySelector(".error-connect").style.display="inline-block")),l.querySelector("span").innerHTML=this.connectResult.info}}else if(r==="false"){let V=this.shadowRoot.querySelector(".camerasvg"),o=this.shadowRoot.querySelector(".microphonesvg"),s=this.shadowRoot.querySelector(".speakersvg"),A=this.shadowRoot.querySelector(".networksvg"),n=this.shadowRoot.querySelector(".outer-progress"),d=this.shadowRoot.querySelector("trtc-custom-button");n.style.display="block",this.shadowRoot.querySelector(".result").classList.remove("green-text"),this.shadowRoot.querySelector(".result").classList.remove("red-text"),V.classList.remove("connect-fail"),V.classList.remove("connect-success"),o.classList.remove("connect-fail"),o.classList.remove("connect-success"),s.classList.remove("connect-fail"),s.classList.remove("connect-success"),A.classList.remove("connect-fail"),A.classList.remove("connect-success"),d.setAttribute("type","disabled"),this.isChinese?d.innerHTML="\u5F00\u59CB\u68C0\u6D4B":d.innerHTML="Start detection",this.getDeviceConnectResult(),this.shadowRoot.querySelector(".gray-text").style.display="block";let l=this.shadowRoot.querySelector(".result");l.style.display="none",this.shadowRoot.querySelector(".error-connect").style.display="none"}}}};h(S,"observedAttributes",["stepnamelist","showconnectresult"]),h(S,"properties",{showRemind:{type:Boolean},constTime:{type:Number}}),h(S,"deviceFailAttention","1. \u82E5\u6D4F\u89C8\u5668\u5F39\u51FA\u63D0\u793A\uFF0C\u8BF7\u9009\u62E9\u201C\u5141\u8BB8\u201D<br>2. \u82E5\u6740\u6BD2\u8F6F\u4EF6\u5F39\u51FA\u63D0\u793A\uFF0C\u8BF7\u9009\u62E9\u201C\u5141\u8BB8\u201D<br>3. \u68C0\u67E5\u7CFB\u7EDF\u8BBE\u7F6E\uFF0C\u5141\u8BB8\u6D4F\u89C8\u5668\u8BBF\u95EE\u6444\u50CF\u5934\u53CA\u9EA6\u514B\u98CE<br>4. \u68C0\u67E5\u6D4F\u89C8\u5668\u8BBE\u7F6E\uFF0C\u5141\u8BB8\u7F51\u9875\u8BBF\u95EE\u6444\u50CF\u5934\u53CA\u9EA6\u514B\u98CE<br>5. \u68C0\u67E5\u6444\u50CF\u5934/\u9EA6\u514B\u98CE\u662F\u5426\u6B63\u786E\u8FDE\u63A5\u5E76\u5F00\u542F<br>6. \u5C1D\u8BD5\u91CD\u65B0\u8FDE\u63A5\u6444\u50CF\u5934/\u9EA6\u514B\u98CE<br>7. \u5C1D\u8BD5\u91CD\u542F\u8BBE\u5907\u540E\u91CD\u65B0\u68C0\u6D4B"),h(S,"deviceFailAttentionEng",'1. If the browser prompts, select "Allow"<br>2. If the antivirus software prompts, select "Allow"<br>3. Check system settings to allow camera and microphone<br>4. Check browser settings to allow camera and microphone<br>5. Check camera/microphone turned on<br>6. Try reconnecting the camera/microphone<br>7. Try restarting the device and retesting'),h(S,"mobileFailAttention","1. \u524D\u5F80\u624B\u673A\u8BBE\u7F6E,\u6253\u5F00\u672C\u5E94\u7528\u7684\u76F8\u673A\u548C\u9EA6\u514B\u98CE\u6743\u9650<br>2. \u91CD\u65B0\u5237\u65B0\u672C\u9875\u5E76\u5141\u8BB8\u76F8\u673A\u548C\u9EA6\u514B\u98CE\u6743\u9650<br>"),h(S,"mobileFailAttentionEng","1. Go to your phone Settings to allow camera and microphone permissions for this app <br>2. Refresh this page and allow camera and microphone permissions <br>"),h(S,"networkFailAttention","1. \u8BF7\u68C0\u67E5\u8BBE\u5907\u662F\u5426\u8054\u7F51<br>2. \u8BF7\u5237\u65B0\u7F51\u9875\u540E\u518D\u6B21\u68C0\u6D4B<br>3. \u8BF7\u5C1D\u8BD5\u66F4\u6362\u7F51\u7EDC\u540E\u518D\u6B21\u68C0\u6D4B"),h(S,"networkFailAttentionEng","1. Check if the device is connected to the network<br>2. Refresh the page and test again<br>3. Try again after changing the network");var ot=S;customElements.get("trtc-device-connect")||customElements.define("trtc-device-connect",ot);var fe=class extends f{constructor(){super(),this.deviceList=[],this.activeDevice={},this.activeDeviceId="",this.attachShadow({mode:"open"})}async getDeviceListData(){var r;let e=await Ms(this.deviceType),i=e.map(V=>V.deviceId);this.deviceList=e,this.choseDevice&&i.indexOf(this.choseDevice.deviceId)>=0?(this.activeDevice=e.find(V=>V.deviceId===this.choseDevice.deviceId),this.activeDeviceId=this.choseDevice.deviceId):(this.activeDevice=e[0],this.activeDeviceId=(r=e[0])==null?void 0:r.deviceId),this.onChange(this.activeDevice),this.requestUpdate()}async firstUpdated(){await this.getDeviceListData(),navigator.mediaDevices.addEventListener("devicechange",async()=>{let e=await Ms(this.deviceType);this.deviceList=e,e[0].deviceId!==this.activeDeviceId&&(this.activeDevice=e[0],this.activeDeviceId=e[0].deviceId,this.onChange(this.activeDevice)),this.requestUpdate()})}disconnectedCallback(){this.remove()}handleChange(e){let i=e.target.value,r=M();r&&r.kvStatManager.addEnum({key:591713,value:1});let V=this.deviceList.find(o=>o.deviceId===i);this.activeDevice=V,this.activeDeviceId=i,this.onChange(this.activeDevice),this.requestUpdate()}render(){return c`
|
|
1200
1200
|
<style>${v}</style>
|
|
1201
1201
|
<div>
|
|
1202
1202
|
<select class="device-select" value=${this.activeDeviceId} @change=${this.handleChange}>
|
|
@@ -1249,7 +1249,7 @@ var ws=Object.create;var ct=Object.defineProperty,xs=Object.defineProperties,Ts=
|
|
|
1249
1249
|
</div>
|
|
1250
1250
|
</div>
|
|
1251
1251
|
</div>
|
|
1252
|
-
`:c``}};h(Ie,"properties",{activeDetector:{type:String},handleComplete:{type:Function},constructTime:{type:Number}});customElements.get("trtc-mic-detector")||customElements.define("trtc-mic-detector",Ie);var Ee=class extends f{constructor(){super();h(this,"handleSpeakerChange",async i=>{var o,s;this.choseDevice=i;let{deviceId:r,label:V}=i;this.audioPlayer&&r&&await((s=(o=this.audioPlayer).setSinkId)==null?void 0:s.call(o,r)),this.audioPlayer.src=this.audioUrl,this.speakerLabel=V,this.device=i});this.audioPlayer=null,this.currentDetector="speaker",this.speakerLabel="",this.audioUrl="",this.choseDevice=null;let i=navigator.language||navigator.userLanguage||navigator.browserLanguage||navigator.systemLanguage||"en";this.isChinese=i.indexOf("zh")>-1,this.attachShadow({mode:"open"}),this.core=M(),this.log=x()}firstUpdated(){}updated(i){i.has("activeDetector")&&(this.activeDetector===this.currentDetector&&(this.audioPlayer=this.shadowRoot.getElementById("audio-player")),i.get("activeDetector")===this.currentDetector&&(this.audioPlayer&&!this.audioPlayer.paused&&this.audioPlayer.pause(),this.audioPlayer&&(this.audioPlayer.currentTime=0)))}handleError(){this.log&&this.log.warn("SpeakerFail",this.device);let i=new Date().getTime();this.core&&this.core.kvStatManager.addFailedEvent({key:591710,error:i-this.constructTime}),this.handleComplete("error",this.speakerLabel,!1,this.device)}handleSuccess(){this.handleComplete("success",this.speakerLabel,!0,this.device);let i=new Date().getTime();this.core&&this.core.kvStatManager.addSuccessEvent({key:591709,cost:i-this.constructTime})}disconnectedCallback(){this.core=null,this.log=null,this.remove()}render(){return this.activeDetector===this.currentDetector?c`
|
|
1252
|
+
`:c``}};h(Ie,"properties",{activeDetector:{type:String},handleComplete:{type:Function},constructTime:{type:Number}});customElements.get("trtc-mic-detector")||customElements.define("trtc-mic-detector",Ie);var Ee=class extends f{constructor(){super();h(this,"handleSpeakerChange",async i=>{var o,s;if(this.choseDevice=i,!i)return;let{deviceId:r,label:V}=i;this.audioPlayer&&r&&await((s=(o=this.audioPlayer).setSinkId)==null?void 0:s.call(o,r)),this.audioPlayer.src=this.audioUrl,this.speakerLabel=V,this.device=i});this.audioPlayer=null,this.currentDetector="speaker",this.speakerLabel="",this.audioUrl="",this.choseDevice=null;let i=navigator.language||navigator.userLanguage||navigator.browserLanguage||navigator.systemLanguage||"en";this.isChinese=i.indexOf("zh")>-1,this.attachShadow({mode:"open"}),this.core=M(),this.log=x()}firstUpdated(){}updated(i){i.has("activeDetector")&&(this.activeDetector===this.currentDetector&&(this.audioPlayer=this.shadowRoot.getElementById("audio-player")),i.get("activeDetector")===this.currentDetector&&(this.audioPlayer&&!this.audioPlayer.paused&&this.audioPlayer.pause(),this.audioPlayer&&(this.audioPlayer.currentTime=0)))}handleError(){this.log&&this.log.warn("SpeakerFail",this.device);let i=new Date().getTime();this.core&&this.core.kvStatManager.addFailedEvent({key:591710,error:i-this.constructTime}),this.handleComplete("error",this.speakerLabel,!1,this.device)}handleSuccess(){this.handleComplete("success",this.speakerLabel,!0,this.device);let i=new Date().getTime();this.core&&this.core.kvStatManager.addSuccessEvent({key:591709,cost:i-this.constructTime})}disconnectedCallback(){this.core=null,this.log=null,this.remove()}render(){return this.activeDetector===this.currentDetector?c`
|
|
1253
1253
|
<style>${v}</style>
|
|
1254
1254
|
<div class="testing-body">
|
|
1255
1255
|
<div class="device-list">
|
|
@@ -1137,7 +1137,7 @@
|
|
|
1137
1137
|
bottom: 36px;
|
|
1138
1138
|
}
|
|
1139
1139
|
}
|
|
1140
|
-
`,v=_a;var q=window.navigator&&window.navigator.userAgent||"",To=/AppleWebKit\/([\d.]+)/i.exec(q),$a=To?parseFloat(To.pop()||"0"):null,yo=/iPad/i.test(q),hi=/iPhone/i.test(q)&&!yo,eq=/iPod/i.test(q),Ze=hi||yo||eq,Xc=Ze&&function(){let t=q.match(/OS (\d+)_/i);return t&&t[1]?t[1]:null}(),te=/Android/i.test(q),Uo=te&&function(){let t=q.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(!t)return null;let e=t[1]&&parseFloat(t[1]),i=t[2]&&parseFloat(t[2]);return e&&i?parseFloat(`${t[1]}.${t[2]}`):e||null}(),_c=te&&/webkit/i.test(q)&&Uo<2.3,$c=te&&Uo<5&&$a<537,ie=/Firefox/i.test(q),me=ie&&function(){let t=q.match(/Firefox\/(\d+)/);return t&&t[1]?parseFloat(t[1]):null}(),re=/Edge\//i.test(q),Ro=re&&function(){let t=q.match(/Edge\/(\d+)/i);if(t&&t[1])return t[1]}(),Ve=/Edg\//i.test(q),fe=Ve&&function(){let t=q.match(/Edg\/(\d+)/);return t&&t[1]?parseFloat(t[1]):null}(),Pe=/SogouMobileBrowser\//i.test(q),Do=Pe&&function(){let t=q.match(/SogouMobileBrowser\/(\d+)/);return t&&t[1]?parseFloat(t[1]):null}(),Je=/MetaSr\s/i.test(q),bo=Je&&function(){let t=q.match(/MetaSr(\s\d+(\.\d+)+)/);return t&&t[1]?parseFloat(t[1]):null}(),k=/TBS\/\d+/i.test(q),ko=k&&function(){let t=q.match(/TBS\/(\d+)/i);if(t&&t[1])return t[1]}(),ze=/XWEB\/\d+/i.test(q),No=ze&&function(){let t=q.match(/XWEB\/(\d+)/i);if(t&&t[1])return t[1]}(),el=/MSIE\s8\.0/.test(q),tq=/MSIE\/\d+/i.test(q),tl=tq&&function(){let t=/MSIE\s(\d+)\.\d/.exec(q),e=t&&parseFloat(t[1]);return!e&&/Trident\/7.0/i.test(q)&&/rv:11.0/.test(q)&&(e=11),e}(),il=/windowswechat/i.test(q),ui=/(micromessenger|webbrowser)/i.test(q),Bo=ui&&function(){let t=q.match(/MicroMessenger\/(\d+)/i);if(t&&t[1])return t[1]}(),je=!k&&/MQQBrowser\/\d+/i.test(q)&&/COVC\/\d+/i.test(q),He=!k&&/MQQBrowser\/\d+/i.test(q)&&!/COVC\/\d+/i.test(q),gi=(He||je)&&function(){let t=q.match(/ MQQBrowser\/([\d.]+)/);return t&&t[1]?t[1]:null}(),Xe=!k&&/ QQBrowser\/\d+/i.test(q),Oo=Xe&&function(){let t=q.match(/ QQBrowser\/([\d.]+)/);return t&&t[1]?t[1]:null}(),_e=!k&&/QQBrowserLite\/\d+/i.test(q),Qo=_e&&function(){let t=q.match(/QQBrowserLite\/([\d.]+)/);return t&&t[1]?t[1]:null}(),$e=!k&&/MQBHD\/\d+/i.test(q),Fo=$e&&function(){let t=q.match(/MQBHD\/([\d.]+)/);return t&&t[1]?t[1]:null}(),Lo=/Windows/i.test(q),Ko=!Ze&&/MAC OS X/i.test(q),Go=!te&&/Linux/i.test(q),rl=/MicroMessenger/i.test(q),Yo=/UCBrowser/i.test(q),Vl=/Electron/i.test(q),et=/MiuiBrowser/i.test(q),Wo=et&&function(){let t=q.match(/MiuiBrowser\/([\d.]+)/);return t&&t[1]?t[1]:null}(),tt=/HuaweiBrowser/i.test(q),Zo=tt&&function(){let t=q.match(/HuaweiBrowser\/([\d.]+)/);return t&&t[1]?t[1]:null}(),it=/SamsungBrowser/i.test(q),Po=it&&function(){let t=q.match(/SamsungBrowser\/([\d.]+)/);return t&&t[1]?t[1]:null}(),rt=/HeyTapBrowser/i.test(q),Jo=rt&&function(){let t=q.match(/HeyTapBrowser\/([\d.]+)/);return t&&t[1]?t[1]:null}(),Vt=/VivoBrowser/i.test(q),zo=Vt&&function(){let t=q.match(/VivoBrowser\/([\d.]+)/);return t&&t[1]?t[1]:null}(),iq=/Chrome/i.test(q),P=!re&&!Je&&!Pe&&!k&&!ze&&!Ve&&!Xe&&!et&&!tt&&!it&&!rt&&!Vt&&/Chrome/i.test(q),ol=P&&function(){let t=q.match(/Chrome\/(\d+)/);return t&&t[1]?parseFloat(t[1]):null}(),mi=P&&function(){let t=q.match(/Chrome\/([\d.]+)/);return t&&t[1]?t[1]:null}(),ot=!iq&&!He&&!je&&!_e&&!$e&&/Safari/i.test(q);var fi=ot&&function(){let t=q.match(/Version\/([\d.]+)/);return t&&t[1]?t[1]:null}(),sl=P?`Chrome/${mi}`:ot?`Safari/${fi}`:"NotSupportedBrowser",jo=location.protocol==="file:"||location.hostname==="localhost"||/^\d+\.\d+\.\d+\.\d+$/.test(location.hostname);var Ho=new Map([[te,"Android"],[Ze,"iOS"],[Lo,"Windows"],[Ko,"MacOS"],[Go,"Linux"]]),_o=()=>{let t="unknown";return Ho.get(!0)&&(t=Ho.get(!0)),t},Xo=new Map([[ie,["Firefox",me]],[Ve,["Edg",fe]],[P,["Chrome",mi]],[ot,["Safari",fi]],[k,["TBS",ko]],[ze,["XWEB",No]],[ui&&hi,["WeChat",Bo]],[Xe,["QQ(Win)",Oo]],[He,["QQ(Mobile)",gi]],[je,["QQ(Mobile X5)",gi]],[_e,["QQ(Mac)",Qo]],[$e,["QQ(iPad)",Fo]],[et,["MI",Wo]],[tt,["HW",Zo]],[it,["Samsung",Po]],[rt,["OPPO",Jo]],[Vt,["VIVO",zo]],[re,["EDGE",Ro]],[Pe,["SogouMobile",Do]],[Je,["Sogou",bo]]]),$o=()=>{let t="unknown",e="unknown";return Xo.get(!0)&&([t,e]=Xo.get(!0)),{name:t,version:e}},es=navigator.userAgent,ts=()=>{let t;if(screen.width){let e=screen.width?screen.width*window.devicePixelRatio:"",i=screen.height?screen.height*window.devicePixelRatio:"";t={width:e,height:i}}return t},is=()=>{var t;return(t=window.navigator)==null?void 0:t.hardwareConcurrency},rs=navigator.language||navigator.userLanguage||navigator.browserLanguage||navigator.systemLanguage||"en";var Vs=()=>{var t;return!!((t=navigator.mediaDevices)!=null&&t.getDisplayMedia)},os=()=>{let t={isSupported:!1},e=["AudioContext","webkitAudioContext","mozAudioContext","msAudioContext"];for(let i=0;i<e.length;i++)if(e[i]in window){t.isSupported=!0;break}return t.isSupported},ss=()=>"WebSocket"in window&&window.WebSocket.CLOSING===2,As=()=>Yo||re||Ve&&typeof fe=="number"&&fe<80?!1:!(ie&&me&&me<56),ns=()=>["RTCPeerConnection","webkitRTCPeerConnection","RTCIceGatherer"].filter(e=>e in window).length>0,as=()=>{let t=!1;return["captureStream","mozCaptureStream","webkitCaptureStream"].forEach(e=>{typeof document=="undefined"||typeof document.createElement!="function"||!t&&e in document.createElement("canvas")&&(t=!0)}),t},qs=()=>{let t=!1;return["captureStream","mozCaptureStream","webkitCaptureStream"].forEach(e=>{typeof document=="undefined"||typeof document.createElement!="function"||!t&&e in document.createElement("video")&&(t=!0)}),t},cs=()=>{let t=!1;return ie&&typeof window.mozRTCPeerConnection!="undefined"?"getSenders"in window.mozRTCPeerConnection.prototype&&(t=!0):P&&typeof window.webkitRTCPeerConnection!="undefined"&&"getSenders"in window.webkitRTCPeerConnection.prototype&&(t=!0),t},ls=()=>typeof MediaStreamTrack!="undefined"&&"applyConstraints"in MediaStreamTrack.prototype;var{toString:al}=Object.prototype;var ps=t=>typeof t=="undefined";var Ii,Ei,M=()=>Ii,x=()=>Ei,ds=t=>{Ii=t},hs=t=>{Ei=t},us=()=>{Ii=null,Ei=null};var rq=function(){let t=x();return ps(navigator.mediaDevices)?(t&&t.error("navigator.mediaDevices is not supported on your browser"),!0):!1},Vq=function(){let t=x();return location.protocol==="http:"&&!jo?(t&&t.error("you should use https"),!0):!1},gs=()=>{if(!navigator.mediaDevices)return!1;let t=["getUserMedia","enumerateDevices"];return t.filter(e=>e in navigator.mediaDevices).length===t.length},J=async t=>{if(Vq()||rq())return[];let e=!1,i=!1,r=!1,V=!1,o=!1,s=[],A=[],n=[],d={},l;return t&&(l=await navigator.mediaDevices.getUserMedia(t)),(await navigator.mediaDevices.enumerateDevices()).forEach(g=>{let p={};for(let E in g)try{typeof g[E]!="function"&&(p[E]=g[E])}catch(oe){}let w=p.deviceId||"",N=p.label||"",z=p.kind||"";d[w+N+z]||(p.kind==="audio"&&(p.kind="audioinput"),p.kind==="video"&&(p.kind="videoinput"),p.deviceId||(p.deviceId=p.id),p.label?(p.kind==="videoinput"&&!V&&(V=!0),p.kind==="audioinput"&&!o&&(o=!0)):p.kind==="videoinput"?p.label=`Camera ${n.length+1}`:p.kind==="audioinput"?p.label=`Microphone ${s.length+1}`:p.kind==="audiooutput"?p.label=`Speaker ${A.length+1}`:p.label="Please invoke getUserMedia once.",p.kind==="audioinput"&&(e=!0,s.indexOf(p)===-1&&s.push(p)),p.kind==="audiooutput"&&(i=!0,A.indexOf(p)===-1&&A.push(p)),p.kind==="videoinput"&&(r=!0,n.indexOf(p)===-1&&n.push(p)),d[p.deviceId+p.label+p.kind]=p,l==null||l.getTracks().forEach(E=>E.stop()))}),{hasWebCamPermission:V,hasMicrophonePermission:o,cameras:n,speakers:A,microphones:s}};async function ms(t){return{cameraList:(await J({video:!0,audio:!1})).cameras}}var fs=async t=>({microphoneList:(await J({video:!1,audio:!0})).microphones});async function Ss(){return(await J({video:!1,audio:!0})).speakers}var Is=async()=>{let t={sdp:"",type:"offer"},e=!1,i=!1;try{let r=new RTCPeerConnection,V=document.createElement("canvas");V.getContext("2d");let o=V.captureStream(0);return r.addTrack(o.getVideoTracks()[0],o),t=await r.createOffer(),t&&t.sdp&&(t.sdp.toLowerCase().indexOf("h264")!==-1&&(e=!0),t.sdp.toLowerCase().indexOf("vp8")!==-1&&(i=!0)),r.close(),{isH264EncodeSupported:e,isVp8EncodeSupported:i}}catch(r){return{isH264EncodeSupported:!1,isVp8EncodeSupported:!1}}},Es=async()=>{let t={sdp:"",type:"offer"},e=!1,i=!1;try{let r=new RTCPeerConnection;return t=await r.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0}),t&&t.sdp&&(t.sdp.toLowerCase().indexOf("h264")!==-1&&(e=!0),t.sdp.toLowerCase().indexOf("vp8")!==-1&&(i=!0)),r.close(),{isH264DecodeSupported:e,isVp8DecodeSupported:i}}catch(r){return{isH264DecodeSupported:!1,isVp8DecodeSupported:!1}}};async function vi(){return new Promise(async(t,e)=>{try{let z=function(){clearInterval(w),clearInterval(o),clearTimeout(N),A.close(),n.close(),s.getTracks().forEach(E=>E.stop())};var i=z;let r=document.createElement("canvas"),V=r.getContext("2d");r.width=640,r.height=480;let o=setInterval(()=>{V&&V.fillText("test",0,0)},33),s=r.captureStream(15),A=new RTCPeerConnection({}),n=new RTCPeerConnection({});A.addEventListener("icecandidate",E=>{n.addIceCandidate(E.candidate)}),n.addEventListener("icecandidate",E=>{A.addIceCandidate(E.candidate)});let d=RTCRtpSender.getCapabilities("video"),u=(d?d.codecs:[]).find(E=>E.mimeType==="video/H264");A.addTransceiver(s.getVideoTracks()[0],{direction:"sendonly",streams:[s],sendEncodings:[{maxBitrate:500*1e3}]}),n.addTransceiver("video",{direction:"recvonly"}),u&&A.getTransceivers()[0].setCodecPreferences([u].filter(E=>E!==void 0));let g=await A.createOffer();await A.setLocalDescription(g),await n.setRemoteDescription(g);let p=await n.createAnswer();await n.setLocalDescription(p),await A.setRemoteDescription(p);let w=-1,N=-1;N=setTimeout(()=>{z(),t(!1)},30*1e3),w=setInterval(async()=>{(await A.getStats()).forEach(oe=>{oe.type==="outbound-rtp"&&oe.mediaType==="video"&&(typeof oe.encoderImplementation=="undefined"&&(z(),e(new Error("your browser does not support to detect HW acceleration enabled."))),oe.encoderImplementation==="ExternalEncoder"&&(z(),t(!0)))})},500)}catch(r){e(r)}})}var oq={system:null,APISupported:null,devices:null,codecsSupported:null,report:null,networkInfo:null,TRTCInitDone:!1,mirror:!1,async getReportAsync(){return this.getSystem(),this.getAPISupported(),await this.getCodecAsync(),await this.getDevicesAsync(),this.report={system:this.system,APISupported:this.APISupported,codecsSupported:this.codecsSupported,devices:this.devices},this.report},async isTRTCSupported(){await this.getReportAsync();let{isWebRTCSupported:t,isUserMediaSupported:e,isWebSocketSupported:i}=this.APISupported;if(!t)return{result:!1,reason:"you browser does not support WebRTC."};if(!i)return{result:!1,reason:"you browser does not support WebSocket."};if(!e)return{result:!1,reason:"you browser does not support getUserMedia."};let{isH264EncodeSupported:r,isVp8EncodeSupported:V,isH264DecodeSupported:o,isVp8DecodeSupported:s}=this.codecsSupported;return!r&&!V?{result:!1,reason:`isH264EncodeSupported: ${r} isVp8EncodeSupported: ${V} `}:!o&&!s?{result:!1,reason:`isH264DecodeSupported: ${o} isVp8DecodeSupported: ${s} `}:As()?{result:!0}:{result:!1,reason:"your browser does not qualify, it is recommended to use Chrome and firefox."}},async getCodecAsync(){let{isH264EncodeSupported:t,isVp8EncodeSupported:e}=await Is(),{isH264DecodeSupported:i,isVp8DecodeSupported:r}=await Es();return this.codecsSupported={isH264EncodeSupported:t,isVp8EncodeSupported:e,isH264DecodeSupported:i,isVp8DecodeSupported:r},this.codecsSupported},async getDevicesAsync(){let{hasWebCamPermission:t,hasMicrophonePermission:e,cameras:i,microphones:r,speakers:V}=await J();return this.devices={cameras:i,microphones:r,speakers:V||[],hasWebCamPermission:t,hasMicrophonePermission:e},this.devices},getSystem(){return this.system={UA:es,OS:_o(),browser:$o(),displayResolution:ts(),hardwareConcurrency:is(),language:rs},this.system},getAPISupported(){return this.APISupported={isUserMediaSupported:gs(),isWebRTCSupported:ns(),isWebSocketSupported:ss(),isWebAudioSupported:os(),isScreenCaptureAPISupported:Vs(),isCanvasCapturingSupported:as(),isVideoCapturingSupported:qs(),isRTPSenderReplaceTracksSupported:cs(),isApplyConstraintsSupported:ls()},this.APISupported},async isHardWareAccelerationEnabled(){return await vi()}},m=oq;function vs(){let t=`https://web.sdk.qcloud.com/trtc/electron/download/resources/media/TestSpeaker.mp3?t=${new Date().getTime()}`,e=3e3;return Promise.race([fetch(t,{mode:"cors"}),new Promise((i,r)=>setTimeout(()=>r(!1),e))]).then(i=>{if(!i.ok)throw new Error("\u7F51\u7EDC\u9519\u8BEF");return!0}).catch(()=>!1)}var Cs={0:"\u672A\u77E5",1:"\u6781\u4F73",2:"\u8F83\u597D",3:"\u4E00\u822C",4:"\u5DEE",5:"\u6781\u5DEE",6:"\u65AD\u5F00"},Ms={0:"Unknown",1:"Excellent",2:"Good",3:"Average",4:"Poor",5:"Very Poor",6:"Disconnected"},Ci=t=>{let i=(navigator.language||navigator.userLanguage||navigator.browserLanguage||navigator.systemLanguage||"en").indexOf("zh")>-1,r=x();switch(r.error("getUserMedia error",t),t.name){case"NotReadableError":i?r.error("\u6682\u65F6\u65E0\u6CD5\u8BBF\u95EE\u6444\u50CF\u5934/\u9EA6\u514B\u98CE\uFF0C\u8BF7\u786E\u4FDD\u7CFB\u7EDF\u6388\u4E88\u5F53\u524D\u6D4F\u89C8\u5668\u6444\u50CF\u5934/\u9EA6\u514B\u98CE\u6743\u9650\uFF0C\u5E76\u4E14\u6CA1\u6709\u5176\u4ED6\u5E94\u7528\u5360\u7528\u6444\u50CF\u5934/\u9EA6\u514B\u98CE"):r.error("Cannot access camera/microphone temporarily. Please make sure the system has granted the current browser permission to access the camera/microphone and no other application is using the camera/microphone");return;case"NotAllowedError":i?r.error("\u7528\u6237/\u7CFB\u7EDF\u5DF2\u62D2\u7EDD\u6388\u6743\u8BBF\u95EE\u6444\u50CF\u5934\u6216\u9EA6\u514B\u98CE"):r.error("User/system has denied access to camera/microphone");return;case"NotFoundError":i?r.error("\u627E\u4E0D\u5230\u6444\u50CF\u5934\u6216\u9EA6\u514B\u98CE\u8BBE\u5907"):r.error("Cannot find camera or microphone device");return;case"OverConstrainedError":i?r.error("\u91C7\u96C6\u5C5E\u6027\u8BBE\u7F6E\u9519\u8BEF\uFF0C\u5982\u679C\u60A8\u6307\u5B9A\u4E86 cameraId/microphoneId\uFF0C\u8BF7\u786E\u4FDD\u5B83\u4EEC\u662F\u4E00\u4E2A\u6709\u6548\u7684\u975E\u7A7A\u5B57\u7B26\u4E32"):r.error("Capture attribute setting error. If you specified cameraId/microphoneId, please make sure they are valid non-empty strings");return;default:i?r.error("\u521D\u59CB\u5316\u672C\u5730\u6D41\u65F6\u9047\u5230\u672A\u77E5\u9519\u8BEF, \u8BF7\u91CD\u8BD5"):r.error("Unknown error encountered when initializing local stream, please try again");return}};var S=class S extends f{constructor(){super(),this.progress=0,this.remindAnimation=!1;let e=navigator.language||navigator.userLanguage||navigator.browserLanguage||navigator.systemLanguage||"en";this.isChinese=e.indexOf("zh")>-1,this.showConnectResult=!1,this.connectResult={info:this.isChinese?"\u8FDE\u63A5\u51FA\u9519\uFF0C\u8BF7\u91CD\u8BD5":"Connection error, please try again",success:!1,remind:this.isMobile?this.isChinese?S.mobileFailAttention:S.mobileFailAttentionEng:this.isChinese?S.deviceFailAttention:S.deviceFailAttentionEng},this.envresult=m.getSystem(),this.isMobile=this.envresult.OS==="iOS"||this.envresult.OS==="Android",this.isFirefoxOrIOS=this.envresult.browser.name==="Firefox"||this.envresult.OS==="iOS",this.deviceState={},this.showRemind=!1,this.startTime=new Date().getTime(),this.attachShadow({mode:"open"})}render(){return c`
|
|
1140
|
+
`,v=_a;var q=window.navigator&&window.navigator.userAgent||"",To=/AppleWebKit\/([\d.]+)/i.exec(q),$a=To?parseFloat(To.pop()||"0"):null,yo=/iPad/i.test(q),hi=/iPhone/i.test(q)&&!yo,eq=/iPod/i.test(q),Ze=hi||yo||eq,Xc=Ze&&function(){let t=q.match(/OS (\d+)_/i);return t&&t[1]?t[1]:null}(),te=/Android/i.test(q),Uo=te&&function(){let t=q.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(!t)return null;let e=t[1]&&parseFloat(t[1]),i=t[2]&&parseFloat(t[2]);return e&&i?parseFloat(`${t[1]}.${t[2]}`):e||null}(),_c=te&&/webkit/i.test(q)&&Uo<2.3,$c=te&&Uo<5&&$a<537,ie=/Firefox/i.test(q),me=ie&&function(){let t=q.match(/Firefox\/(\d+)/);return t&&t[1]?parseFloat(t[1]):null}(),re=/Edge\//i.test(q),Ro=re&&function(){let t=q.match(/Edge\/(\d+)/i);if(t&&t[1])return t[1]}(),Ve=/Edg\//i.test(q),fe=Ve&&function(){let t=q.match(/Edg\/(\d+)/);return t&&t[1]?parseFloat(t[1]):null}(),Pe=/SogouMobileBrowser\//i.test(q),Do=Pe&&function(){let t=q.match(/SogouMobileBrowser\/(\d+)/);return t&&t[1]?parseFloat(t[1]):null}(),Je=/MetaSr\s/i.test(q),bo=Je&&function(){let t=q.match(/MetaSr(\s\d+(\.\d+)+)/);return t&&t[1]?parseFloat(t[1]):null}(),k=/TBS\/\d+/i.test(q),ko=k&&function(){let t=q.match(/TBS\/(\d+)/i);if(t&&t[1])return t[1]}(),ze=/XWEB\/\d+/i.test(q),No=ze&&function(){let t=q.match(/XWEB\/(\d+)/i);if(t&&t[1])return t[1]}(),el=/MSIE\s8\.0/.test(q),tq=/MSIE\/\d+/i.test(q),tl=tq&&function(){let t=/MSIE\s(\d+)\.\d/.exec(q),e=t&&parseFloat(t[1]);return!e&&/Trident\/7.0/i.test(q)&&/rv:11.0/.test(q)&&(e=11),e}(),il=/windowswechat/i.test(q),ui=/(micromessenger|webbrowser)/i.test(q),Bo=ui&&function(){let t=q.match(/MicroMessenger\/(\d+)/i);if(t&&t[1])return t[1]}(),je=!k&&/MQQBrowser\/\d+/i.test(q)&&/COVC\/\d+/i.test(q),He=!k&&/MQQBrowser\/\d+/i.test(q)&&!/COVC\/\d+/i.test(q),gi=(He||je)&&function(){let t=q.match(/ MQQBrowser\/([\d.]+)/);return t&&t[1]?t[1]:null}(),Xe=!k&&/ QQBrowser\/\d+/i.test(q),Oo=Xe&&function(){let t=q.match(/ QQBrowser\/([\d.]+)/);return t&&t[1]?t[1]:null}(),_e=!k&&/QQBrowserLite\/\d+/i.test(q),Qo=_e&&function(){let t=q.match(/QQBrowserLite\/([\d.]+)/);return t&&t[1]?t[1]:null}(),$e=!k&&/MQBHD\/\d+/i.test(q),Fo=$e&&function(){let t=q.match(/MQBHD\/([\d.]+)/);return t&&t[1]?t[1]:null}(),Lo=/Windows/i.test(q),Ko=!Ze&&/MAC OS X/i.test(q),Go=!te&&/Linux/i.test(q),rl=/MicroMessenger/i.test(q),Yo=/UCBrowser/i.test(q),Vl=/Electron/i.test(q),et=/MiuiBrowser/i.test(q),Wo=et&&function(){let t=q.match(/MiuiBrowser\/([\d.]+)/);return t&&t[1]?t[1]:null}(),tt=/HuaweiBrowser/i.test(q),Zo=tt&&function(){let t=q.match(/HuaweiBrowser\/([\d.]+)/);return t&&t[1]?t[1]:null}(),it=/SamsungBrowser/i.test(q),Po=it&&function(){let t=q.match(/SamsungBrowser\/([\d.]+)/);return t&&t[1]?t[1]:null}(),rt=/HeyTapBrowser/i.test(q),Jo=rt&&function(){let t=q.match(/HeyTapBrowser\/([\d.]+)/);return t&&t[1]?t[1]:null}(),Vt=/VivoBrowser/i.test(q),zo=Vt&&function(){let t=q.match(/VivoBrowser\/([\d.]+)/);return t&&t[1]?t[1]:null}(),iq=/Chrome/i.test(q),P=!re&&!Je&&!Pe&&!k&&!ze&&!Ve&&!Xe&&!et&&!tt&&!it&&!rt&&!Vt&&/Chrome/i.test(q),ol=P&&function(){let t=q.match(/Chrome\/(\d+)/);return t&&t[1]?parseFloat(t[1]):null}(),mi=P&&function(){let t=q.match(/Chrome\/([\d.]+)/);return t&&t[1]?t[1]:null}(),ot=!iq&&!He&&!je&&!_e&&!$e&&/Safari/i.test(q);var fi=ot&&function(){let t=q.match(/Version\/([\d.]+)/);return t&&t[1]?t[1]:null}(),sl=P?`Chrome/${mi}`:ot?`Safari/${fi}`:"NotSupportedBrowser",jo=location.protocol==="file:"||location.hostname==="localhost"||/^\d+\.\d+\.\d+\.\d+$/.test(location.hostname);var Ho=new Map([[te,"Android"],[Ze,"iOS"],[Lo,"Windows"],[Ko,"MacOS"],[Go,"Linux"]]),_o=()=>{let t="unknown";return Ho.get(!0)&&(t=Ho.get(!0)),t},Xo=new Map([[ie,["Firefox",me]],[Ve,["Edg",fe]],[P,["Chrome",mi]],[ot,["Safari",fi]],[k,["TBS",ko]],[ze,["XWEB",No]],[ui&&hi,["WeChat",Bo]],[Xe,["QQ(Win)",Oo]],[He,["QQ(Mobile)",gi]],[je,["QQ(Mobile X5)",gi]],[_e,["QQ(Mac)",Qo]],[$e,["QQ(iPad)",Fo]],[et,["MI",Wo]],[tt,["HW",Zo]],[it,["Samsung",Po]],[rt,["OPPO",Jo]],[Vt,["VIVO",zo]],[re,["EDGE",Ro]],[Pe,["SogouMobile",Do]],[Je,["Sogou",bo]]]),$o=()=>{let t="unknown",e="unknown";return Xo.get(!0)&&([t,e]=Xo.get(!0)),{name:t,version:e}},es=navigator.userAgent,ts=()=>{let t;if(screen.width){let e=screen.width?screen.width*window.devicePixelRatio:"",i=screen.height?screen.height*window.devicePixelRatio:"";t={width:e,height:i}}return t},is=()=>{var t;return(t=window.navigator)==null?void 0:t.hardwareConcurrency},rs=navigator.language||navigator.userLanguage||navigator.browserLanguage||navigator.systemLanguage||"en";var Vs=()=>{var t;return!!((t=navigator.mediaDevices)!=null&&t.getDisplayMedia)},os=()=>{let t={isSupported:!1},e=["AudioContext","webkitAudioContext","mozAudioContext","msAudioContext"];for(let i=0;i<e.length;i++)if(e[i]in window){t.isSupported=!0;break}return t.isSupported},ss=()=>"WebSocket"in window&&window.WebSocket.CLOSING===2,As=()=>Yo||re||Ve&&typeof fe=="number"&&fe<80?!1:!(ie&&me&&me<56),ns=()=>["RTCPeerConnection","webkitRTCPeerConnection","RTCIceGatherer"].filter(e=>e in window).length>0,as=()=>{let t=!1;return["captureStream","mozCaptureStream","webkitCaptureStream"].forEach(e=>{typeof document=="undefined"||typeof document.createElement!="function"||!t&&e in document.createElement("canvas")&&(t=!0)}),t},qs=()=>{let t=!1;return["captureStream","mozCaptureStream","webkitCaptureStream"].forEach(e=>{typeof document=="undefined"||typeof document.createElement!="function"||!t&&e in document.createElement("video")&&(t=!0)}),t},cs=()=>{let t=!1;return ie&&typeof window.mozRTCPeerConnection!="undefined"?"getSenders"in window.mozRTCPeerConnection.prototype&&(t=!0):P&&typeof window.webkitRTCPeerConnection!="undefined"&&"getSenders"in window.webkitRTCPeerConnection.prototype&&(t=!0),t},ls=()=>typeof MediaStreamTrack!="undefined"&&"applyConstraints"in MediaStreamTrack.prototype;var{toString:al}=Object.prototype;var ps=t=>typeof t=="undefined";var Ii,Ei,M=()=>Ii,x=()=>Ei,ds=t=>{Ii=t},hs=t=>{Ei=t},us=()=>{Ii=null,Ei=null};var rq=function(){let t=x();return ps(navigator.mediaDevices)?(t&&t.error("navigator.mediaDevices is not supported on your browser"),!0):!1},Vq=function(){let t=x();return location.protocol==="http:"&&!jo?(t&&t.error("you should use https"),!0):!1},gs=()=>{if(!navigator.mediaDevices)return!1;let t=["getUserMedia","enumerateDevices"];return t.filter(e=>e in navigator.mediaDevices).length===t.length},J=async t=>{if(Vq()||rq())return[];let e=!1,i=!1,r=!1,V=!1,o=!1,s=[],A=[],n=[],d={},l;return t&&(l=await navigator.mediaDevices.getUserMedia(t)),(await navigator.mediaDevices.enumerateDevices()).forEach(g=>{let p={};for(let E in g)try{typeof g[E]!="function"&&(p[E]=g[E])}catch(oe){}let w=p.deviceId||"",N=p.label||"",z=p.kind||"";d[w+N+z]||(p.kind==="audio"&&(p.kind="audioinput"),p.kind==="video"&&(p.kind="videoinput"),p.deviceId||(p.deviceId=p.id),p.label?(p.kind==="videoinput"&&!V&&(V=!0),p.kind==="audioinput"&&!o&&(o=!0)):p.kind==="videoinput"?p.label=`Camera ${n.length+1}`:p.kind==="audioinput"?p.label=`Microphone ${s.length+1}`:p.kind==="audiooutput"?p.label=`Speaker ${A.length+1}`:p.label="Please invoke getUserMedia once.",p.kind==="audioinput"&&(e=!0,s.indexOf(p)===-1&&s.push(p)),p.kind==="audiooutput"&&(i=!0,A.indexOf(p)===-1&&A.push(p)),p.kind==="videoinput"&&(r=!0,n.indexOf(p)===-1&&n.push(p)),d[p.deviceId+p.label+p.kind]=p,l==null||l.getTracks().forEach(E=>E.stop()))}),{hasWebCamPermission:V,hasMicrophonePermission:o,cameras:n,speakers:A,microphones:s}};async function ms(t){return{cameraList:(await J({video:!0,audio:!1})).cameras}}var fs=async t=>({microphoneList:(await J({video:!1,audio:!0})).microphones});async function Ss(){return(await J({video:!1,audio:!0})).speakers}var Is=async()=>{let t={sdp:"",type:"offer"},e=!1,i=!1;try{let r=new RTCPeerConnection,V=document.createElement("canvas");V.getContext("2d");let o=V.captureStream(0);return r.addTrack(o.getVideoTracks()[0],o),t=await r.createOffer(),t&&t.sdp&&(t.sdp.toLowerCase().indexOf("h264")!==-1&&(e=!0),t.sdp.toLowerCase().indexOf("vp8")!==-1&&(i=!0)),r.close(),{isH264EncodeSupported:e,isVp8EncodeSupported:i}}catch(r){return{isH264EncodeSupported:!1,isVp8EncodeSupported:!1}}},Es=async()=>{let t={sdp:"",type:"offer"},e=!1,i=!1;try{let r=new RTCPeerConnection;return t=await r.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0}),t&&t.sdp&&(t.sdp.toLowerCase().indexOf("h264")!==-1&&(e=!0),t.sdp.toLowerCase().indexOf("vp8")!==-1&&(i=!0)),r.close(),{isH264DecodeSupported:e,isVp8DecodeSupported:i}}catch(r){return{isH264DecodeSupported:!1,isVp8DecodeSupported:!1}}};async function vi(){return new Promise(async(t,e)=>{try{let z=function(){clearInterval(w),clearInterval(o),clearTimeout(N),A.close(),n.close(),s.getTracks().forEach(E=>E.stop())};var i=z;let r=document.createElement("canvas"),V=r.getContext("2d");r.width=640,r.height=480;let o=setInterval(()=>{V&&V.fillText("test",0,0)},33),s=r.captureStream(15),A=new RTCPeerConnection({}),n=new RTCPeerConnection({});A.addEventListener("icecandidate",E=>{n.addIceCandidate(E.candidate)}),n.addEventListener("icecandidate",E=>{A.addIceCandidate(E.candidate)});let d=RTCRtpSender.getCapabilities("video"),u=(d?d.codecs:[]).find(E=>E.mimeType==="video/H264");A.addTransceiver(s.getVideoTracks()[0],{direction:"sendonly",streams:[s],sendEncodings:[{maxBitrate:500*1e3}]}),n.addTransceiver("video",{direction:"recvonly"}),u&&A.getTransceivers()[0].setCodecPreferences([u].filter(E=>E!==void 0));let g=await A.createOffer();await A.setLocalDescription(g),await n.setRemoteDescription(g);let p=await n.createAnswer();await n.setLocalDescription(p),await A.setRemoteDescription(p);let w=-1,N=-1;N=setTimeout(()=>{z(),t(!1)},30*1e3),w=setInterval(async()=>{(await A.getStats()).forEach(oe=>{oe.type==="outbound-rtp"&&oe.mediaType==="video"&&(typeof oe.encoderImplementation=="undefined"&&(z(),e(new Error("your browser does not support to detect HW acceleration enabled."))),oe.encoderImplementation==="ExternalEncoder"&&(z(),t(!0)))})},500)}catch(r){e(r)}})}var oq={system:null,APISupported:null,devices:null,codecsSupported:null,report:null,networkInfo:null,TRTCInitDone:!1,mirror:!1,async getReportAsync(){return this.getSystem(),this.getAPISupported(),await this.getCodecAsync(),await this.getDevicesAsync(),this.report={system:this.system,APISupported:this.APISupported,codecsSupported:this.codecsSupported,devices:this.devices},this.report},async isTRTCSupported(){await this.getReportAsync();let{isWebRTCSupported:t,isUserMediaSupported:e,isWebSocketSupported:i}=this.APISupported;if(!t)return{result:!1,reason:"you browser does not support WebRTC."};if(!i)return{result:!1,reason:"you browser does not support WebSocket."};if(!e)return{result:!1,reason:"you browser does not support getUserMedia."};let{isH264EncodeSupported:r,isVp8EncodeSupported:V,isH264DecodeSupported:o,isVp8DecodeSupported:s}=this.codecsSupported;return!r&&!V?{result:!1,reason:`isH264EncodeSupported: ${r} isVp8EncodeSupported: ${V} `}:!o&&!s?{result:!1,reason:`isH264DecodeSupported: ${o} isVp8DecodeSupported: ${s} `}:As()?{result:!0}:{result:!1,reason:"your browser does not qualify, it is recommended to use Chrome and firefox."}},async getCodecAsync(){let{isH264EncodeSupported:t,isVp8EncodeSupported:e}=await Is(),{isH264DecodeSupported:i,isVp8DecodeSupported:r}=await Es();return this.codecsSupported={isH264EncodeSupported:t,isVp8EncodeSupported:e,isH264DecodeSupported:i,isVp8DecodeSupported:r},this.codecsSupported},async getDevicesAsync(){let{hasWebCamPermission:t,hasMicrophonePermission:e,cameras:i,microphones:r,speakers:V}=await J();return this.devices={cameras:i,microphones:r,speakers:V||[],hasWebCamPermission:t,hasMicrophonePermission:e},this.devices},getSystem(){return this.system={UA:es,OS:_o(),browser:$o(),displayResolution:ts(),hardwareConcurrency:is(),language:rs},this.system},getAPISupported(){return this.APISupported={isUserMediaSupported:gs(),isWebRTCSupported:ns(),isWebSocketSupported:ss(),isWebAudioSupported:os(),isScreenCaptureAPISupported:Vs(),isCanvasCapturingSupported:as(),isVideoCapturingSupported:qs(),isRTPSenderReplaceTracksSupported:cs(),isApplyConstraintsSupported:ls()},this.APISupported},async isHardWareAccelerationEnabled(){return await vi()}},m=oq;function vs(){let t=`https://web.sdk.qcloud.com/trtc/electron/download/resources/media/TestSpeaker.mp3?t=${new Date().getTime()}`,e=3e3;return Promise.race([fetch(t,{mode:"cors"}),new Promise((i,r)=>setTimeout(()=>r(!1),e))]).then(i=>{if(!i.ok)throw new Error("\u7F51\u7EDC\u9519\u8BEF");return!0}).catch(()=>!1)}var Cs={0:"\u672A\u77E5",1:"\u6781\u4F73",2:"\u8F83\u597D",3:"\u4E00\u822C",4:"\u5DEE",5:"\u6781\u5DEE",6:"\u65AD\u5F00"},Ms={0:"Unknown",1:"Excellent",2:"Good",3:"Average",4:"Poor",5:"Very Poor",6:"Disconnected"},Ci=t=>{let i=(navigator.language||navigator.userLanguage||navigator.browserLanguage||navigator.systemLanguage||"en").indexOf("zh")>-1,r=x();switch(r.error("getUserMedia error",t),t.name){case"NotReadableError":i?r.error("\u6682\u65F6\u65E0\u6CD5\u8BBF\u95EE\u6444\u50CF\u5934/\u9EA6\u514B\u98CE\uFF0C\u8BF7\u786E\u4FDD\u7CFB\u7EDF\u6388\u4E88\u5F53\u524D\u6D4F\u89C8\u5668\u6444\u50CF\u5934/\u9EA6\u514B\u98CE\u6743\u9650\uFF0C\u5E76\u4E14\u6CA1\u6709\u5176\u4ED6\u5E94\u7528\u5360\u7528\u6444\u50CF\u5934/\u9EA6\u514B\u98CE"):r.error("Cannot access camera/microphone temporarily. Please make sure the system has granted the current browser permission to access the camera/microphone and no other application is using the camera/microphone");return;case"NotAllowedError":i?r.error("\u7528\u6237/\u7CFB\u7EDF\u5DF2\u62D2\u7EDD\u6388\u6743\u8BBF\u95EE\u6444\u50CF\u5934\u6216\u9EA6\u514B\u98CE"):r.error("User/system has denied access to camera/microphone");return;case"NotFoundError":i?r.error("\u627E\u4E0D\u5230\u6444\u50CF\u5934\u6216\u9EA6\u514B\u98CE\u8BBE\u5907"):r.error("Cannot find camera or microphone device");return;case"OverConstrainedError":i?r.error("\u91C7\u96C6\u5C5E\u6027\u8BBE\u7F6E\u9519\u8BEF\uFF0C\u5982\u679C\u60A8\u6307\u5B9A\u4E86 cameraId/microphoneId\uFF0C\u8BF7\u786E\u4FDD\u5B83\u4EEC\u662F\u4E00\u4E2A\u6709\u6548\u7684\u975E\u7A7A\u5B57\u7B26\u4E32"):r.error("Capture attribute setting error. If you specified cameraId/microphoneId, please make sure they are valid non-empty strings");return;default:i?r.error("\u521D\u59CB\u5316\u672C\u5730\u6D41\u65F6\u9047\u5230\u672A\u77E5\u9519\u8BEF, \u8BF7\u91CD\u8BD5"):r.error("Unknown error encountered when initializing local stream, please try again");return}};var S=class S extends f{constructor(){super(),this.progress=0,this.remindAnimation=!1;let e=navigator.language||navigator.userLanguage||navigator.browserLanguage||navigator.systemLanguage||"en";this.isChinese=e.indexOf("zh")>-1,this.showConnectResult=!1,this.connectResult={info:this.isChinese?"\u8FDE\u63A5\u51FA\u9519\uFF0C\u8BF7\u91CD\u8BD5":"Connection error, please try again",success:!1,remind:this.isMobile?this.isChinese?S.mobileFailAttention:S.mobileFailAttentionEng:this.isChinese?S.deviceFailAttention:S.deviceFailAttentionEng},this.envresult=m.getSystem(),this.isMobile=this.envresult.OS==="iOS"||this.envresult.OS==="Android",this.isFirefoxOrSafariOrIOS=this.envresult.browser.name==="Firefox"||this.envresult.OS==="iOS"||this.envresult.browser.name==="Safari",this.deviceState={},this.showRemind=!1,this.startTime=new Date().getTime(),this.attachShadow({mode:"open"})}render(){return c`
|
|
1141
1141
|
<style>${v}</style>
|
|
1142
1142
|
<div class="device-connect">
|
|
1143
1143
|
<div class="testing-title">${this.isChinese?"\u8BBE\u5907\u8FDE\u63A5":"Device Connection"}</div>
|
|
@@ -1196,7 +1196,7 @@
|
|
|
1196
1196
|
</div>
|
|
1197
1197
|
`}setShowRemind(e){this.showRemind=e,this.requestUpdate()}firstUpdated(){this.getDeviceConnectResult(),this.stepNameList=JSON.parse(this.getAttribute("stepnamelist")),this.judgeList(this.stepNameList);let e=this.shadowRoot.querySelector(".testing-prepare-info");e.innerHTML=this.prepareInfo()}updated(){this.showRemind&&(this.shadowRoot.querySelector(".connect-attention-info").innerHTML=this.connectResult.remind)}hasCameraDetect(){return this.stepNameList.indexOf("camera")>=0}hasMicrophoneDetect(){return this.stepNameList.indexOf("microphone")>=0}hasSpeakerDetect(){return this.stepNameList.indexOf("speaker")>=0}hasNetworkDetect(){return this.stepNameList.indexOf("network")>=0}showReconnectButton(){let{deviceState:e}=this;return this.showConnectResult&&!(e.hasCameraConnect&&e.hasMicrophoneConnect&&e.hasSpeakerConnect&&e.hasNetworkConnect)}showStartDetectButton(){let{deviceState:e}=this;return this.showConnectResult&&e.hasCameraConnect&&e.hasMicrophoneConnect&&e.hasSpeakerConnect&&e.hasNetworkConnect}handler(e){let i=this.shadowRoot.querySelector(".inner-progress");e||(this.progressInterval&&clearInterval(this.progressInterval),this.progressInterval=setInterval(()=>{if(this.progress+=10,i.style.transform=`translateX(${this.progress}%)`,this.progress===100){this.progress=0,i.style.transform="translateX(0%)";let r=new CustomEvent("remind-changed",{detail:this.remindAnimation});this.dispatchEvent(r),setTimeout(()=>{this.remindAnimation&&this.isMobile&&(this.isChinese?alert(S.mobileFailAttention.replace(/<br>/g,`
|
|
1198
1198
|
`)):alert(S.mobileFailAttentionEng.replace(/<br>/g,`
|
|
1199
|
-
`)))},200),this.showConnectResult=!0,this.setAttribute("showconnectresult",this.showConnectResult),clearInterval(this.progressInterval)}},150))}prepareInfo(){return this.isChinese?`\u8BBE\u5907\u68C0\u6D4B\u524D\u8BF7\u786E\u8BA4\u8BBE\u5907\u8FDE\u63A5\u4E86${this.hasCameraDetect()?"\u6444\u50CF\u5934":""}${this.hasMicrophoneDetect()?"\u3001\u9EA6\u514B\u98CE":""}${this.hasSpeakerDetect()?"\u3001\u626C\u58F0\u5668":""}${this.hasNetworkDetect()?"\u548C\u7F51\u7EDC":""}`:`Make sure the device is connected before testing the device ${this.hasCameraDetect()?"camera":""}${this.hasMicrophoneDetect()?", microphone":""}${this.hasSpeakerDetect()?", speaker":""}${this.hasNetworkDetect()?" and network":""}`}judgeList(e){let i=this.shadowRoot.querySelector(".camerasvg"),r=this.shadowRoot.querySelector(".microphonesvg"),V=this.shadowRoot.querySelector(".speakersvg"),o=this.shadowRoot.querySelector(".networksvg");e.indexOf("camera")>=0?i.style.display="block":i.style.display="none",e.indexOf("microphone")>=0?r.style.display="block":r.style.display="none",e.indexOf("speaker")>=0?V.style.display="block":V.style.display="none",e.indexOf("network")>=0?o.style.display="block":o.style.display="none"}async getDeviceConnectResult(){let e=[],i=[],r=[];try{let{cameras:l,speakers:u,microphones:g}=await J();e=l,i=g,r=u}catch(l){}let V=e.length>0,o=i.length>0,s=this.hasSpeakerDetect()?this.isFirefoxOrIOS||r.length>0:!0,A=this.hasNetworkDetect()?await vs():!0,n={hasCameraDevice:V,hasMicrophoneDevice:o,hasSpeakerDevice:s,hasNetworkConnect:A,hasCameraConnect:!1,hasMicrophoneConnect:!1,hasSpeakerConnect:s};this.deviceState=n,this.remindAnimation=!1,this.connectResult=this.getDeviceConnectInfo(n);let d=[];V&&d.push(new Promise((l,u)=>{navigator.mediaDevices.getUserMedia({video:!0,audio:!1}).then(g=>{this.remindAnimation=!1,n=H(j({},n),{hasCameraConnect:!0}),this.deviceState=n,this.connectResult=this.getDeviceConnectInfo(n),g.getTracks()[0].stop(),l()}).catch(g=>{Ci(g),l()})})),o&&d.push(new Promise((l,u)=>{navigator.mediaDevices.getUserMedia({video:!1,audio:!0}).then(g=>{this.remindAnimation=!1,n=H(j({},n),{hasMicrophoneConnect:o}),this.deviceState=n,this.connectResult=this.getDeviceConnectInfo(n),g.getTracks()[0].stop(),l()}).catch(g=>{Ci(g),l()})})),await Promise.all(d),this.handler(this.showConnectResult)}getDeviceConnectInfo(e){this.remindAnimation=!1;let i="\u8FDE\u63A5\u51FA\u9519\uFF0C\u8BF7\u91CD\u8BD5";return this.isChinese||(i="Connection error, please try again"),e.hasCameraConnect&&e.hasMicrophoneConnect&&e.hasSpeakerConnect&&e.hasNetworkConnect?(this.isChinese?i=this.hasNetworkDetect?"\u8BBE\u5907\u53CA\u7F51\u7EDC\u8FDE\u63A5\u6210\u529F\uFF0C\u8BF7\u5F00\u59CB\u8BBE\u5907\u68C0\u6D4B":"\u8BBE\u5907\u8FDE\u63A5\u6210\u529F\uFF0C\u8BF7\u5F00\u59CB\u8BBE\u5907\u68C0\u6D4B":i=this.hasNetworkDetect?"Device and network connection are successful, start device detection":"Device connection successful, start device detection",{info:i,success:!0}):e.hasCameraDevice&&e.hasMicrophoneDevice&&e.hasSpeakerDevice?e.hasCameraConnect&&e.hasMicrophoneConnect?e.hasNetworkConnect?{info:i,success:!1}:(this.isChinese?i="\u7F51\u7EDC\u8FDE\u63A5\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u8FDE\u63A5":i="Network connection failed, please check network connection",{info:i,success:!1,remind:this.isChinese?S.networkFailAttention:S.networkFailAttentionEng}):(this.isChinese?i=e.hasNetworkConnect?"\u8BF7\u5141\u8BB8\u6D4F\u89C8\u5668\u53CA\u7F51\u9875\u8BBF\u95EE\u6444\u50CF\u5934/\u9EA6\u514B\u98CE\u8BBE\u5907":"\u8BF7\u5141\u8BB8\u6D4F\u89C8\u5668\u53CA\u7F51\u9875\u8BBF\u95EE\u6444\u50CF\u5934/\u9EA6\u514B\u98CE\u8BBE\u5907\uFF0C\u5E76\u68C0\u67E5\u7F51\u7EDC\u8FDE\u63A5":i=e.hasNetworkConnect?"Please allow browser and web access to camera/microphone devices":"Please allow browser and web access to camera/microphone devices, and check the network connection",this.remindAnimation=!0,{info:i,success:!1,remind:this.isMobile?this.isChinese?S.mobileFailAttention:S.mobileFailAttentionEng:this.isChinese?S.deviceFailAttention:S.deviceFailAttentionEng}):(this.isChinese?i=`\u68C0\u6D4B\u5230${e.hasCameraDevice?"":"\u3010\u6444\u50CF\u5934\u3011"}${e.hasMicrophoneDevice?"":"\u3010\u9EA6\u514B\u98CE\u3011"}${e.hasSpeakerDevice?"":"\u3010\u626C\u58F0\u5668\u3011"}\u8BBE\u5907\u4E0D\u5B58\u5728\uFF0C\u8BF7\u68C0\u67E5\u8BBE\u5907\u8FDE\u63A5`:i=`No ${e.hasCameraDevice?"":"\u3010camera\u3011"}${e.hasMicrophoneDevice?"":"\u3010microphone\u3011"}${e.hasSpeakerDevice?"":"\u3010speaker\u3011"} device detected, please check the device connection`,{info:i,success:!1})}handleReset(){this.progress=0,this.showConnectResult=!1,this.setAttribute("showconnectresult",this.showConnectResult)}async attributeChangedCallback(e,i,r){if(e==="showconnectresult"){if(r==="true"){let V=this.shadowRoot.querySelector(".camerasvg"),o=this.shadowRoot.querySelector(".microphonesvg"),s=this.shadowRoot.querySelector(".speakersvg"),A=this.shadowRoot.querySelector(".networksvg"),n=this.shadowRoot.querySelector(".outer-progress"),d=this.shadowRoot.querySelector("trtc-custom-button");if(this.deviceState.hasCameraConnect?(V.classList.remove("connect-fail"),V.classList.add("connect-success")):V.classList.add("connect-fail"),this.deviceState.hasMicrophoneConnect?(o.classList.remove("connect-fail"),o.classList.add("connect-success")):o.classList.add("connect-fail"),this.deviceState.hasSpeakerConnect?(s.classList.add("connect-success"),s.classList.remove("connect-fail")):s.classList.add("connect-fail"),this.deviceState.hasNetworkConnect?(A.classList.add("connect-success"),A.classList.remove("connect-fail")):A.classList.add("connect-fail"),this.showReconnectButton()&&(d.setAttribute("type","outlined"),this.isChinese?d.innerHTML="\u91CD\u65B0\u8FDE\u63A5":d.innerHTML="Reconnect",d.addEventListener("click",()=>{this.remindAnimation=!1;let l=new CustomEvent("remind-changed",{detail:this.remindAnimation});this.dispatchEvent(l);let u=new Date().getTime(),g=M();g&&g.kvStatManager.addFailedEvent({key:591704,error:u-this.startTime}),this.handleReset()})),this.showStartDetectButton()&&(d.setAttribute("type","contained"),this.setAttribute("connectstage",1),this.isChinese?d.innerHTML="\u5F00\u59CB\u68C0\u6D4B":d.innerHTML="Start detection"),this.showConnectResult){n.style.display="none",this.shadowRoot.querySelector(".gray-text").style.display="none";let l=this.shadowRoot.querySelector(".result");l.style.display="block",this.connectResult.success===!0?l.classList.add("green-text"):(l.classList.add("red-text"),this.connectResult.remind&&(this.shadowRoot.querySelector(".error-connect").style.display="inline-block")),l.querySelector("span").innerHTML=this.connectResult.info}}else if(r==="false"){let V=this.shadowRoot.querySelector(".camerasvg"),o=this.shadowRoot.querySelector(".microphonesvg"),s=this.shadowRoot.querySelector(".speakersvg"),A=this.shadowRoot.querySelector(".networksvg"),n=this.shadowRoot.querySelector(".outer-progress"),d=this.shadowRoot.querySelector("trtc-custom-button");n.style.display="block",this.shadowRoot.querySelector(".result").classList.remove("green-text"),this.shadowRoot.querySelector(".result").classList.remove("red-text"),V.classList.remove("connect-fail"),V.classList.remove("connect-success"),o.classList.remove("connect-fail"),o.classList.remove("connect-success"),s.classList.remove("connect-fail"),s.classList.remove("connect-success"),A.classList.remove("connect-fail"),A.classList.remove("connect-success"),d.setAttribute("type","disabled"),this.isChinese?d.innerHTML="\u5F00\u59CB\u68C0\u6D4B":d.innerHTML="Start detection",this.getDeviceConnectResult(),this.shadowRoot.querySelector(".gray-text").style.display="block";let l=this.shadowRoot.querySelector(".result");l.style.display="none",this.shadowRoot.querySelector(".error-connect").style.display="none"}}}};h(S,"observedAttributes",["stepnamelist","showconnectresult"]),h(S,"properties",{showRemind:{type:Boolean},constTime:{type:Number}}),h(S,"deviceFailAttention","1. \u82E5\u6D4F\u89C8\u5668\u5F39\u51FA\u63D0\u793A\uFF0C\u8BF7\u9009\u62E9\u201C\u5141\u8BB8\u201D<br>2. \u82E5\u6740\u6BD2\u8F6F\u4EF6\u5F39\u51FA\u63D0\u793A\uFF0C\u8BF7\u9009\u62E9\u201C\u5141\u8BB8\u201D<br>3. \u68C0\u67E5\u7CFB\u7EDF\u8BBE\u7F6E\uFF0C\u5141\u8BB8\u6D4F\u89C8\u5668\u8BBF\u95EE\u6444\u50CF\u5934\u53CA\u9EA6\u514B\u98CE<br>4. \u68C0\u67E5\u6D4F\u89C8\u5668\u8BBE\u7F6E\uFF0C\u5141\u8BB8\u7F51\u9875\u8BBF\u95EE\u6444\u50CF\u5934\u53CA\u9EA6\u514B\u98CE<br>5. \u68C0\u67E5\u6444\u50CF\u5934/\u9EA6\u514B\u98CE\u662F\u5426\u6B63\u786E\u8FDE\u63A5\u5E76\u5F00\u542F<br>6. \u5C1D\u8BD5\u91CD\u65B0\u8FDE\u63A5\u6444\u50CF\u5934/\u9EA6\u514B\u98CE<br>7. \u5C1D\u8BD5\u91CD\u542F\u8BBE\u5907\u540E\u91CD\u65B0\u68C0\u6D4B"),h(S,"deviceFailAttentionEng",'1. If the browser prompts, select "Allow"<br>2. If the antivirus software prompts, select "Allow"<br>3. Check system settings to allow camera and microphone<br>4. Check browser settings to allow camera and microphone<br>5. Check camera/microphone turned on<br>6. Try reconnecting the camera/microphone<br>7. Try restarting the device and retesting'),h(S,"mobileFailAttention","1. \u524D\u5F80\u624B\u673A\u8BBE\u7F6E,\u6253\u5F00\u672C\u5E94\u7528\u7684\u76F8\u673A\u548C\u9EA6\u514B\u98CE\u6743\u9650<br>2. \u91CD\u65B0\u5237\u65B0\u672C\u9875\u5E76\u5141\u8BB8\u76F8\u673A\u548C\u9EA6\u514B\u98CE\u6743\u9650<br>"),h(S,"mobileFailAttentionEng","1. Go to your phone Settings to allow camera and microphone permissions for this app <br>2. Refresh this page and allow camera and microphone permissions <br>"),h(S,"networkFailAttention","1. \u8BF7\u68C0\u67E5\u8BBE\u5907\u662F\u5426\u8054\u7F51<br>2. \u8BF7\u5237\u65B0\u7F51\u9875\u540E\u518D\u6B21\u68C0\u6D4B<br>3. \u8BF7\u5C1D\u8BD5\u66F4\u6362\u7F51\u7EDC\u540E\u518D\u6B21\u68C0\u6D4B"),h(S,"networkFailAttentionEng","1. Check if the device is connected to the network<br>2. Refresh the page and test again<br>3. Try again after changing the network");var st=S;customElements.get("trtc-device-connect")||customElements.define("trtc-device-connect",st);var Se=class extends f{constructor(){super(),this.deviceList=[],this.activeDevice={},this.activeDeviceId="",this.attachShadow({mode:"open"})}async getDeviceListData(){let e=await ws(this.deviceType),i=e.map(r=>r.deviceId);this.deviceList=e,this.choseDevice&&i.indexOf(this.choseDevice.deviceId)>=0?(this.activeDevice=e.find(r=>r.deviceId===this.choseDevice.deviceId),this.activeDeviceId=this.choseDevice.deviceId):(this.activeDevice=e[0],this.activeDeviceId=e[0].deviceId),this.onChange(this.activeDevice),this.requestUpdate()}async firstUpdated(){await this.getDeviceListData(),navigator.mediaDevices.addEventListener("devicechange",async()=>{let e=await ws(this.deviceType);this.deviceList=e,e[0].deviceId!==this.activeDeviceId&&(this.activeDevice=e[0],this.activeDeviceId=e[0].deviceId,this.onChange(this.activeDevice)),this.requestUpdate()})}disconnectedCallback(){this.remove()}handleChange(e){let i=e.target.value,r=M();r&&r.kvStatManager.addEnum({key:591713,value:1});let V=this.deviceList.find(o=>o.deviceId===i);this.activeDevice=V,this.activeDeviceId=i,this.onChange(this.activeDevice),this.requestUpdate()}render(){return c`
|
|
1199
|
+
`)))},200),this.showConnectResult=!0,this.setAttribute("showconnectresult",this.showConnectResult),clearInterval(this.progressInterval)}},150))}prepareInfo(){return this.isChinese?`\u8BBE\u5907\u68C0\u6D4B\u524D\u8BF7\u786E\u8BA4\u8BBE\u5907\u8FDE\u63A5\u4E86${this.hasCameraDetect()?"\u6444\u50CF\u5934":""}${this.hasMicrophoneDetect()?"\u3001\u9EA6\u514B\u98CE":""}${this.hasSpeakerDetect()?"\u3001\u626C\u58F0\u5668":""}${this.hasNetworkDetect()?"\u548C\u7F51\u7EDC":""}`:`Make sure the device is connected before testing the device ${this.hasCameraDetect()?"camera":""}${this.hasMicrophoneDetect()?", microphone":""}${this.hasSpeakerDetect()?", speaker":""}${this.hasNetworkDetect()?" and network":""}`}judgeList(e){let i=this.shadowRoot.querySelector(".camerasvg"),r=this.shadowRoot.querySelector(".microphonesvg"),V=this.shadowRoot.querySelector(".speakersvg"),o=this.shadowRoot.querySelector(".networksvg");e.indexOf("camera")>=0?i.style.display="block":i.style.display="none",e.indexOf("microphone")>=0?r.style.display="block":r.style.display="none",e.indexOf("speaker")>=0?V.style.display="block":V.style.display="none",e.indexOf("network")>=0?o.style.display="block":o.style.display="none"}async getDeviceConnectResult(){let e=[],i=[],r=[];try{let{cameras:l,speakers:u,microphones:g}=await J();e=l,i=g,r=u}catch(l){}let V=e.length>0,o=i.length>0,s=this.hasSpeakerDetect()?this.isFirefoxOrSafariOrIOS||r.length>0:!0,A=this.hasNetworkDetect()?await vs():!0,n={hasCameraDevice:V,hasMicrophoneDevice:o,hasSpeakerDevice:s,hasNetworkConnect:A,hasCameraConnect:!1,hasMicrophoneConnect:!1,hasSpeakerConnect:s};this.deviceState=n,this.remindAnimation=!1,this.connectResult=this.getDeviceConnectInfo(n);let d=[];V&&d.push(new Promise((l,u)=>{navigator.mediaDevices.getUserMedia({video:!0,audio:!1}).then(g=>{this.remindAnimation=!1,n=H(j({},n),{hasCameraConnect:!0}),this.deviceState=n,this.connectResult=this.getDeviceConnectInfo(n),g.getTracks()[0].stop(),l()}).catch(g=>{Ci(g),l()})})),o&&d.push(new Promise((l,u)=>{navigator.mediaDevices.getUserMedia({video:!1,audio:!0}).then(g=>{this.remindAnimation=!1,n=H(j({},n),{hasMicrophoneConnect:o}),this.deviceState=n,this.connectResult=this.getDeviceConnectInfo(n),g.getTracks()[0].stop(),l()}).catch(g=>{Ci(g),l()})})),await Promise.all(d),this.handler(this.showConnectResult)}getDeviceConnectInfo(e){this.remindAnimation=!1;let i="\u8FDE\u63A5\u51FA\u9519\uFF0C\u8BF7\u91CD\u8BD5";return this.isChinese||(i="Connection error, please try again"),e.hasCameraConnect&&e.hasMicrophoneConnect&&e.hasSpeakerConnect&&e.hasNetworkConnect?(this.isChinese?i=this.hasNetworkDetect?"\u8BBE\u5907\u53CA\u7F51\u7EDC\u8FDE\u63A5\u6210\u529F\uFF0C\u8BF7\u5F00\u59CB\u8BBE\u5907\u68C0\u6D4B":"\u8BBE\u5907\u8FDE\u63A5\u6210\u529F\uFF0C\u8BF7\u5F00\u59CB\u8BBE\u5907\u68C0\u6D4B":i=this.hasNetworkDetect?"Device and network connection are successful, start device detection":"Device connection successful, start device detection",{info:i,success:!0}):e.hasCameraDevice&&e.hasMicrophoneDevice&&e.hasSpeakerDevice?e.hasCameraConnect&&e.hasMicrophoneConnect?e.hasNetworkConnect?{info:i,success:!1}:(this.isChinese?i="\u7F51\u7EDC\u8FDE\u63A5\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u8FDE\u63A5":i="Network connection failed, please check network connection",{info:i,success:!1,remind:this.isChinese?S.networkFailAttention:S.networkFailAttentionEng}):(this.isChinese?i=e.hasNetworkConnect?"\u8BF7\u5141\u8BB8\u6D4F\u89C8\u5668\u53CA\u7F51\u9875\u8BBF\u95EE\u6444\u50CF\u5934/\u9EA6\u514B\u98CE\u8BBE\u5907":"\u8BF7\u5141\u8BB8\u6D4F\u89C8\u5668\u53CA\u7F51\u9875\u8BBF\u95EE\u6444\u50CF\u5934/\u9EA6\u514B\u98CE\u8BBE\u5907\uFF0C\u5E76\u68C0\u67E5\u7F51\u7EDC\u8FDE\u63A5":i=e.hasNetworkConnect?"Please allow browser and web access to camera/microphone devices":"Please allow browser and web access to camera/microphone devices, and check the network connection",this.remindAnimation=!0,{info:i,success:!1,remind:this.isMobile?this.isChinese?S.mobileFailAttention:S.mobileFailAttentionEng:this.isChinese?S.deviceFailAttention:S.deviceFailAttentionEng}):(this.isChinese?i=`\u68C0\u6D4B\u5230${e.hasCameraDevice?"":"\u3010\u6444\u50CF\u5934\u3011"}${e.hasMicrophoneDevice?"":"\u3010\u9EA6\u514B\u98CE\u3011"}${e.hasSpeakerDevice?"":"\u3010\u626C\u58F0\u5668\u3011"}\u8BBE\u5907\u4E0D\u5B58\u5728\uFF0C\u8BF7\u68C0\u67E5\u8BBE\u5907\u8FDE\u63A5`:i=`No ${e.hasCameraDevice?"":"\u3010camera\u3011"}${e.hasMicrophoneDevice?"":"\u3010microphone\u3011"}${e.hasSpeakerDevice?"":"\u3010speaker\u3011"} device detected, please check the device connection`,{info:i,success:!1})}handleReset(){this.progress=0,this.showConnectResult=!1,this.setAttribute("showconnectresult",this.showConnectResult)}async attributeChangedCallback(e,i,r){if(e==="showconnectresult"){if(r==="true"){let V=this.shadowRoot.querySelector(".camerasvg"),o=this.shadowRoot.querySelector(".microphonesvg"),s=this.shadowRoot.querySelector(".speakersvg"),A=this.shadowRoot.querySelector(".networksvg"),n=this.shadowRoot.querySelector(".outer-progress"),d=this.shadowRoot.querySelector("trtc-custom-button");if(this.deviceState.hasCameraConnect?(V.classList.remove("connect-fail"),V.classList.add("connect-success")):V.classList.add("connect-fail"),this.deviceState.hasMicrophoneConnect?(o.classList.remove("connect-fail"),o.classList.add("connect-success")):o.classList.add("connect-fail"),this.deviceState.hasSpeakerConnect?(s.classList.add("connect-success"),s.classList.remove("connect-fail")):s.classList.add("connect-fail"),this.deviceState.hasNetworkConnect?(A.classList.add("connect-success"),A.classList.remove("connect-fail")):A.classList.add("connect-fail"),this.showReconnectButton()&&(d.setAttribute("type","outlined"),this.isChinese?d.innerHTML="\u91CD\u65B0\u8FDE\u63A5":d.innerHTML="Reconnect",d.addEventListener("click",()=>{this.remindAnimation=!1;let l=new CustomEvent("remind-changed",{detail:this.remindAnimation});this.dispatchEvent(l);let u=new Date().getTime(),g=M();g&&g.kvStatManager.addFailedEvent({key:591704,error:u-this.startTime}),this.handleReset()})),this.showStartDetectButton()&&(d.setAttribute("type","contained"),this.setAttribute("connectstage",1),this.isChinese?d.innerHTML="\u5F00\u59CB\u68C0\u6D4B":d.innerHTML="Start detection"),this.showConnectResult){n.style.display="none",this.shadowRoot.querySelector(".gray-text").style.display="none";let l=this.shadowRoot.querySelector(".result");l.style.display="block",this.connectResult.success===!0?l.classList.add("green-text"):(l.classList.add("red-text"),this.connectResult.remind&&(this.shadowRoot.querySelector(".error-connect").style.display="inline-block")),l.querySelector("span").innerHTML=this.connectResult.info}}else if(r==="false"){let V=this.shadowRoot.querySelector(".camerasvg"),o=this.shadowRoot.querySelector(".microphonesvg"),s=this.shadowRoot.querySelector(".speakersvg"),A=this.shadowRoot.querySelector(".networksvg"),n=this.shadowRoot.querySelector(".outer-progress"),d=this.shadowRoot.querySelector("trtc-custom-button");n.style.display="block",this.shadowRoot.querySelector(".result").classList.remove("green-text"),this.shadowRoot.querySelector(".result").classList.remove("red-text"),V.classList.remove("connect-fail"),V.classList.remove("connect-success"),o.classList.remove("connect-fail"),o.classList.remove("connect-success"),s.classList.remove("connect-fail"),s.classList.remove("connect-success"),A.classList.remove("connect-fail"),A.classList.remove("connect-success"),d.setAttribute("type","disabled"),this.isChinese?d.innerHTML="\u5F00\u59CB\u68C0\u6D4B":d.innerHTML="Start detection",this.getDeviceConnectResult(),this.shadowRoot.querySelector(".gray-text").style.display="block";let l=this.shadowRoot.querySelector(".result");l.style.display="none",this.shadowRoot.querySelector(".error-connect").style.display="none"}}}};h(S,"observedAttributes",["stepnamelist","showconnectresult"]),h(S,"properties",{showRemind:{type:Boolean},constTime:{type:Number}}),h(S,"deviceFailAttention","1. \u82E5\u6D4F\u89C8\u5668\u5F39\u51FA\u63D0\u793A\uFF0C\u8BF7\u9009\u62E9\u201C\u5141\u8BB8\u201D<br>2. \u82E5\u6740\u6BD2\u8F6F\u4EF6\u5F39\u51FA\u63D0\u793A\uFF0C\u8BF7\u9009\u62E9\u201C\u5141\u8BB8\u201D<br>3. \u68C0\u67E5\u7CFB\u7EDF\u8BBE\u7F6E\uFF0C\u5141\u8BB8\u6D4F\u89C8\u5668\u8BBF\u95EE\u6444\u50CF\u5934\u53CA\u9EA6\u514B\u98CE<br>4. \u68C0\u67E5\u6D4F\u89C8\u5668\u8BBE\u7F6E\uFF0C\u5141\u8BB8\u7F51\u9875\u8BBF\u95EE\u6444\u50CF\u5934\u53CA\u9EA6\u514B\u98CE<br>5. \u68C0\u67E5\u6444\u50CF\u5934/\u9EA6\u514B\u98CE\u662F\u5426\u6B63\u786E\u8FDE\u63A5\u5E76\u5F00\u542F<br>6. \u5C1D\u8BD5\u91CD\u65B0\u8FDE\u63A5\u6444\u50CF\u5934/\u9EA6\u514B\u98CE<br>7. \u5C1D\u8BD5\u91CD\u542F\u8BBE\u5907\u540E\u91CD\u65B0\u68C0\u6D4B"),h(S,"deviceFailAttentionEng",'1. If the browser prompts, select "Allow"<br>2. If the antivirus software prompts, select "Allow"<br>3. Check system settings to allow camera and microphone<br>4. Check browser settings to allow camera and microphone<br>5. Check camera/microphone turned on<br>6. Try reconnecting the camera/microphone<br>7. Try restarting the device and retesting'),h(S,"mobileFailAttention","1. \u524D\u5F80\u624B\u673A\u8BBE\u7F6E,\u6253\u5F00\u672C\u5E94\u7528\u7684\u76F8\u673A\u548C\u9EA6\u514B\u98CE\u6743\u9650<br>2. \u91CD\u65B0\u5237\u65B0\u672C\u9875\u5E76\u5141\u8BB8\u76F8\u673A\u548C\u9EA6\u514B\u98CE\u6743\u9650<br>"),h(S,"mobileFailAttentionEng","1. Go to your phone Settings to allow camera and microphone permissions for this app <br>2. Refresh this page and allow camera and microphone permissions <br>"),h(S,"networkFailAttention","1. \u8BF7\u68C0\u67E5\u8BBE\u5907\u662F\u5426\u8054\u7F51<br>2. \u8BF7\u5237\u65B0\u7F51\u9875\u540E\u518D\u6B21\u68C0\u6D4B<br>3. \u8BF7\u5C1D\u8BD5\u66F4\u6362\u7F51\u7EDC\u540E\u518D\u6B21\u68C0\u6D4B"),h(S,"networkFailAttentionEng","1. Check if the device is connected to the network<br>2. Refresh the page and test again<br>3. Try again after changing the network");var st=S;customElements.get("trtc-device-connect")||customElements.define("trtc-device-connect",st);var Se=class extends f{constructor(){super(),this.deviceList=[],this.activeDevice={},this.activeDeviceId="",this.attachShadow({mode:"open"})}async getDeviceListData(){var r;let e=await ws(this.deviceType),i=e.map(V=>V.deviceId);this.deviceList=e,this.choseDevice&&i.indexOf(this.choseDevice.deviceId)>=0?(this.activeDevice=e.find(V=>V.deviceId===this.choseDevice.deviceId),this.activeDeviceId=this.choseDevice.deviceId):(this.activeDevice=e[0],this.activeDeviceId=(r=e[0])==null?void 0:r.deviceId),this.onChange(this.activeDevice),this.requestUpdate()}async firstUpdated(){await this.getDeviceListData(),navigator.mediaDevices.addEventListener("devicechange",async()=>{let e=await ws(this.deviceType);this.deviceList=e,e[0].deviceId!==this.activeDeviceId&&(this.activeDevice=e[0],this.activeDeviceId=e[0].deviceId,this.onChange(this.activeDevice)),this.requestUpdate()})}disconnectedCallback(){this.remove()}handleChange(e){let i=e.target.value,r=M();r&&r.kvStatManager.addEnum({key:591713,value:1});let V=this.deviceList.find(o=>o.deviceId===i);this.activeDevice=V,this.activeDeviceId=i,this.onChange(this.activeDevice),this.requestUpdate()}render(){return c`
|
|
1200
1200
|
<style>${v}</style>
|
|
1201
1201
|
<div>
|
|
1202
1202
|
<select class="device-select" value=${this.activeDeviceId} @change=${this.handleChange}>
|
|
@@ -1249,7 +1249,7 @@
|
|
|
1249
1249
|
</div>
|
|
1250
1250
|
</div>
|
|
1251
1251
|
</div>
|
|
1252
|
-
`:c``}};h(Ee,"properties",{activeDetector:{type:String},handleComplete:{type:Function},constructTime:{type:Number}});customElements.get("trtc-mic-detector")||customElements.define("trtc-mic-detector",Ee);var ve=class extends f{constructor(){super();h(this,"handleSpeakerChange",async i=>{var o,s;this.choseDevice=i;let{deviceId:r,label:V}=i;this.audioPlayer&&r&&await((s=(o=this.audioPlayer).setSinkId)==null?void 0:s.call(o,r)),this.audioPlayer.src=this.audioUrl,this.speakerLabel=V,this.device=i});this.audioPlayer=null,this.currentDetector="speaker",this.speakerLabel="",this.audioUrl="",this.choseDevice=null;let i=navigator.language||navigator.userLanguage||navigator.browserLanguage||navigator.systemLanguage||"en";this.isChinese=i.indexOf("zh")>-1,this.attachShadow({mode:"open"}),this.core=M(),this.log=x()}firstUpdated(){}updated(i){i.has("activeDetector")&&(this.activeDetector===this.currentDetector&&(this.audioPlayer=this.shadowRoot.getElementById("audio-player")),i.get("activeDetector")===this.currentDetector&&(this.audioPlayer&&!this.audioPlayer.paused&&this.audioPlayer.pause(),this.audioPlayer&&(this.audioPlayer.currentTime=0)))}handleError(){this.log&&this.log.warn("SpeakerFail",this.device);let i=new Date().getTime();this.core&&this.core.kvStatManager.addFailedEvent({key:591710,error:i-this.constructTime}),this.handleComplete("error",this.speakerLabel,!1,this.device)}handleSuccess(){this.handleComplete("success",this.speakerLabel,!0,this.device);let i=new Date().getTime();this.core&&this.core.kvStatManager.addSuccessEvent({key:591709,cost:i-this.constructTime})}disconnectedCallback(){this.core=null,this.log=null,this.remove()}render(){return this.activeDetector===this.currentDetector?c`
|
|
1252
|
+
`:c``}};h(Ee,"properties",{activeDetector:{type:String},handleComplete:{type:Function},constructTime:{type:Number}});customElements.get("trtc-mic-detector")||customElements.define("trtc-mic-detector",Ee);var ve=class extends f{constructor(){super();h(this,"handleSpeakerChange",async i=>{var o,s;if(this.choseDevice=i,!i)return;let{deviceId:r,label:V}=i;this.audioPlayer&&r&&await((s=(o=this.audioPlayer).setSinkId)==null?void 0:s.call(o,r)),this.audioPlayer.src=this.audioUrl,this.speakerLabel=V,this.device=i});this.audioPlayer=null,this.currentDetector="speaker",this.speakerLabel="",this.audioUrl="",this.choseDevice=null;let i=navigator.language||navigator.userLanguage||navigator.browserLanguage||navigator.systemLanguage||"en";this.isChinese=i.indexOf("zh")>-1,this.attachShadow({mode:"open"}),this.core=M(),this.log=x()}firstUpdated(){}updated(i){i.has("activeDetector")&&(this.activeDetector===this.currentDetector&&(this.audioPlayer=this.shadowRoot.getElementById("audio-player")),i.get("activeDetector")===this.currentDetector&&(this.audioPlayer&&!this.audioPlayer.paused&&this.audioPlayer.pause(),this.audioPlayer&&(this.audioPlayer.currentTime=0)))}handleError(){this.log&&this.log.warn("SpeakerFail",this.device);let i=new Date().getTime();this.core&&this.core.kvStatManager.addFailedEvent({key:591710,error:i-this.constructTime}),this.handleComplete("error",this.speakerLabel,!1,this.device)}handleSuccess(){this.handleComplete("success",this.speakerLabel,!0,this.device);let i=new Date().getTime();this.core&&this.core.kvStatManager.addSuccessEvent({key:591709,cost:i-this.constructTime})}disconnectedCallback(){this.core=null,this.log=null,this.remove()}render(){return this.activeDetector===this.currentDetector?c`
|
|
1253
1253
|
<style>${v}</style>
|
|
1254
1254
|
<div class="testing-body">
|
|
1255
1255
|
<div class="device-list">
|