trtc-sdk-v5 5.15.0-wasm.1 → 5.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/assets/debug-dialog.js +2 -2
  2. package/index.d.ts +92 -0
  3. package/package.json +6 -4
  4. package/plugins/cdn-streaming/cdn-streaming.esm.js +1 -1
  5. package/plugins/cdn-streaming/cdn-streaming.umd.js +3 -1
  6. package/plugins/cdn-streaming/package.json +1 -1
  7. package/plugins/chorus/chorus.esm.js +1 -1
  8. package/plugins/chorus/chorus.umd.js +3 -1
  9. package/plugins/chorus/package.json +1 -1
  10. package/plugins/cross-room/cross-room.esm.js +1 -1
  11. package/plugins/cross-room/cross-room.umd.js +3 -1
  12. package/plugins/cross-room/package.json +1 -1
  13. package/plugins/custom-encryption/custom-encryption.esm.js +1 -1
  14. package/plugins/custom-encryption/custom-encryption.umd.js +3 -1
  15. package/plugins/custom-encryption/package.json +1 -1
  16. package/plugins/device-detector/device-detector.esm.js +44 -56
  17. package/plugins/device-detector/device-detector.umd.js +4 -14
  18. package/plugins/device-detector/package.json +1 -1
  19. package/plugins/lebplayer/lebplayer.esm.d.ts +7 -0
  20. package/plugins/lebplayer/lebplayer.esm.js +1 -1
  21. package/plugins/lebplayer/lebplayer.umd.js +3 -1
  22. package/plugins/lebplayer/package.json +1 -1
  23. package/plugins/realtime-transcriber/package.json +29 -0
  24. package/plugins/realtime-transcriber/realtime-transcriber.esm.d.ts +16 -0
  25. package/plugins/realtime-transcriber/realtime-transcriber.esm.js +1 -0
  26. package/plugins/realtime-transcriber/realtime-transcriber.umd.js +3 -0
  27. package/plugins/small-stream-auto-switcher/package.json +1 -1
  28. package/plugins/small-stream-auto-switcher/small-stream-auto-switcher.esm.js +1 -1
  29. package/plugins/small-stream-auto-switcher/small-stream-auto-switcher.umd.js +1 -1
  30. package/plugins/video-decoder/package.json +1 -1
  31. package/plugins/video-decoder/video-decoder.esm.js +1 -1
  32. package/plugins/video-decoder/video-decoder.umd.js +3 -1
  33. package/plugins/video-effect/basic-beauty/basic-beauty.esm.js +1 -1
  34. package/plugins/video-effect/basic-beauty/basic-beauty.umd.js +3 -1
  35. package/plugins/video-effect/basic-beauty/package.json +1 -1
  36. package/plugins/video-effect/beauty/beauty.esm.js +1 -1
  37. package/plugins/video-effect/beauty/beauty.umd.js +3 -1
  38. package/plugins/video-effect/beauty/package.json +1 -1
  39. package/plugins/video-effect/face-detection/face-detection.esm.js +1 -1
  40. package/plugins/video-effect/face-detection/face-detection.umd.js +3 -1
  41. package/plugins/video-effect/face-detection/package.json +1 -1
  42. package/plugins/video-effect/video-mixer/package.json +1 -1
  43. package/plugins/video-effect/video-mixer/video-mixer.esm.js +1 -1
  44. package/plugins/video-effect/video-mixer/video-mixer.umd.js +3 -1
  45. package/plugins/video-effect/virtual-background/package.json +1 -1
  46. package/plugins/video-effect/virtual-background/virtual-background.esm.js +1 -1
  47. package/plugins/video-effect/virtual-background/virtual-background.umd.js +3 -1
  48. package/plugins/video-effect/watermark/package.json +1 -1
  49. package/plugins/video-effect/watermark/watermark.umd.js +3 -1
  50. package/plugins/voice-changer/package.json +1 -1
  51. package/plugins/voice-changer/voice-changer.esm.js +1 -1
  52. package/plugins/voice-changer/voice-changer.umd.js +3 -1
  53. package/trtc.esm.js +41 -69
  54. package/trtc.js +1 -1
  55. package/assets/av_processing.wasm +0 -0
  56. package/assets/worker.js +0 -17
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rtc-plugin/beauty",
3
- "version": "5.15.0-wasm.1",
3
+ "version": "5.15.0",
4
4
  "description": "TRTC Web SDK 5.x beauty plugin",
5
5
  "main": "./beauty.esm.js",
6
6
  "module": "./beauty.esm.js",
@@ -1 +1 @@
1
- var __defProp=Object.defineProperty,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,r)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,__spreadValues=(e,t)=>{for(var r in t||(t={}))__hasOwnProp.call(t,r)&&__defNormalProp(e,r,t[r]);if(__getOwnPropSymbols)for(var r of __getOwnPropSymbols(t))__propIsEnum.call(t,r)&&__defNormalProp(e,r,t[r]);return e},__publicField=(e,t,r)=>__defNormalProp(e,"symbol"!=typeof t?t+"":t,r),BASE_FACE_DETECTION_RULES={detectionInterval:{type:"number",required:!1,min:100,max:5e3},minConfidence:{type:"number",required:!1,min:0,max:1},missingTimeout:{type:"number",required:!1,min:0,max:5e3}},faceDetectionOptions=__spreadValues({onFaceDetectionStateChanged:{required:!0}},BASE_FACE_DETECTION_RULES),updateFaceDetectionOptions=__spreadValues({onFaceDetectionStateChanged:{required:!1}},BASE_FACE_DETECTION_RULES);function startValidateRule(e){return{type:"object",required:!0,properties:faceDetectionOptions,validate(t,r,i,s){var a;const{RtcError:o,ErrorCode:n,ErrorCodeDictionary:_}=e.errorModule,{onFaceDetectionStateChanged:c}=t;if(c&&!e.utils.isFunction(c))throw new o({code:n.INVALID_PARAMETER,extraCode:_.INVALID_PARAMETER_TYPE,fnName:i,messageParams:{key:"onFaceDetectionStateChanged",value:typeof c,rule:{type:"Function"}}});if(!(null==(a=e.room.videoManager.cameraTrack)?void 0:a.mediaTrack))throw new o({code:n.INVALID_OPERATION,extraCode:_.INVALID_OPERATION_NEED_VIDEO,fnName:i})}}}function updateValidateRule(e){return{type:"object",required:!0,properties:updateFaceDetectionOptions,validate(t,r,i,s){var a;const{RtcError:o,ErrorCode:n,ErrorCodeDictionary:_}=e.errorModule,{onFaceDetectionStateChanged:c}=t;if(c&&!e.utils.isFunction(c))throw new o({code:n.INVALID_PARAMETER,extraCode:_.INVALID_PARAMETER_TYPE,fnName:i,messageParams:{key:"onFaceDetectionStateChanged",value:typeof c,rule:{type:"Function"}}});if(!(null==(a=e.room.videoManager.cameraTrack)?void 0:a.mediaTrack))throw new o({code:n.INVALID_OPERATION,extraCode:_.INVALID_OPERATION_NEED_VIDEO,fnName:i})}}}function stopValidateRule(e){return{name:"StopFaceDetectionOptions",required:!1}}var USER_AGENT="undefined"==typeof navigator?"":navigator.userAgent,isUserAgentMatch=e=>new RegExp(e,"i").test(USER_AGENT),getBrowserVersion=e=>{if(isUserAgentMatch(e)){const t=new RegExp(`${e}\\/([\\d.]+)`),r=USER_AGENT.match(t);if(r&&r[1])return r[1]}return""},getBrowserMajorVersion=e=>{if(isUserAgentMatch(e)){const t=new RegExp(`${e}\\/(\\d+)`),r=USER_AGENT.match(t);if(r&&r[1])return parseFloat(r[1])}return NaN},webkitVersionMap=/AppleWebKit\/([\d.]+)/i.exec(USER_AGENT),appleWebkitVersion=webkitVersionMap?parseFloat(webkitVersionMap[1]):NaN,IS_IPAD=isUserAgentMatch("iPad"),IS_IPAD_PRO="undefined"!=typeof navigator&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&isUserAgentMatch("Macintosh"),IS_IPHONE=isUserAgentMatch("iPhone")&&!IS_IPAD,IS_IPOD=isUserAgentMatch("iPod"),IS_IOS=IS_IPHONE||IS_IPAD||IS_IPOD||IS_IPAD_PRO,IS_ANDROID=isUserAgentMatch("Android"),ANDROID_VERSION=function(){if(IS_ANDROID){const e=USER_AGENT.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(e){const t=e[1]&&parseFloat(e[1]),r=e[2]&&parseFloat(e[2]);if(t&&r)return parseFloat(`${e[1]}.${e[2]}`);if(t)return t}}return NaN}(),IS_OLD_ANDROID=IS_ANDROID&&isUserAgentMatch("webkit")&&ANDROID_VERSION<2.3,IS_NATIVE_ANDROID=IS_ANDROID&&ANDROID_VERSION<5&&appleWebkitVersion<537,IS_FIREFOX=isUserAgentMatch("Firefox"),FIREFOX_VERSION=getBrowserVersion("Firefox"),FIREFOX_MAJOR_VERSION=getBrowserMajorVersion("Firefox"),IS_EDGE=isUserAgentMatch("Edge"),EDGE_VERSION=getBrowserVersion("Edge"),IS_EDG=isUserAgentMatch("Edg"),EDG_VERSION=getBrowserVersion("Edg"),EDG_MAJOR_VERSION=getBrowserMajorVersion("Edg"),IS_SOGOUM=isUserAgentMatch("SogouMobileBrowser"),SOGOUM_VERSION=getBrowserVersion("SogouMobileBrowser"),IS_SOGOU=isUserAgentMatch("MetaSr\\s"),SOGOU_VERSION=getBrowserVersion("MetaSr\\s"),IS_TBS=isUserAgentMatch("TBS"),TBS_VERSION=getBrowserVersion("TBS"),IS_XWEB=isUserAgentMatch("XWEB"),XWEB_VERSION=getBrowserVersion("XWEB"),IS_IE8=isUserAgentMatch("MSIE\\s8\\.0"),IS_IE=isUserAgentMatch("MSIE\\/\\d+"),IE_VERSION=function(){if(IS_IE){const e=/MSIE\s(\d+)\.\d/.exec(USER_AGENT);let t=e&&parseFloat(e[1]);return!t&&/Trident\/7.0/i.test(USER_AGENT)&&/rv:11.0/.test(USER_AGENT)&&(t=11),t}return NaN}(),IS_WECHAT=isUserAgentMatch("(micromessenger|webbrowser)"),WECHAT_VERSION=getBrowserVersion("MicroMessenger"),IS_X5MQQB=!IS_TBS&&isUserAgentMatch("MQQBrowser")&&isUserAgentMatch("COVC"),IS_MQQB=!IS_TBS&&isUserAgentMatch("MQQBrowser")&&!isUserAgentMatch("COVC"),MQQB_VERSION=IS_MQQB||IS_X5MQQB?getBrowserVersion("MQQBrowser"):"",IS_WQQB=!IS_TBS&&isUserAgentMatch(" QQBrowser"),WQQB_VERSION=getBrowserVersion(" QQBrowser"),IS_MACQQB=!IS_TBS&&isUserAgentMatch("QQBrowserLite"),MACQQB_VERSION=getBrowserVersion("QQBrowserLite"),IS_IPADQQB=!IS_TBS&&isUserAgentMatch("MQBHD"),IPADQQB_VERSION=getBrowserVersion("MQBHD"),IS_WIN=isUserAgentMatch("Windows"),IS_MAC=!IS_IOS&&isUserAgentMatch("MAC OS X"),IS_LINUX=!IS_ANDROID&&isUserAgentMatch("Linux"),IS_CHROME_OS=isUserAgentMatch("CrOS"),IS_WX=isUserAgentMatch("MicroMessenger"),IS_UCBROWSER=isUserAgentMatch("UCBrowser"),IS_ELECTRON=isUserAgentMatch("Electron"),IS_MIBROWSER=isUserAgentMatch("MiuiBrowser"),MI_VERSION=getBrowserVersion("MiuiBrowser"),IS_HUAWEIBROWSER=isUserAgentMatch("HuaweiBrowser"),IS_HUAWEI=isUserAgentMatch("Huawei")||isUserAgentMatch("HUAWEI"),IS_HONOR=isUserAgentMatch("Honor")||isUserAgentMatch("HONOR"),HUAWEI_VERSION=getBrowserVersion("HuaweiBrowser"),IS_SAMSUNGBROWSER=isUserAgentMatch("SamsungBrowser"),SAMSUNG_VERSION=getBrowserVersion("SamsungBrowser"),IS_OPPOBROWSER=isUserAgentMatch("HeyTapBrowser"),OPPO_VERSION=getBrowserVersion("HeyTapBrowser"),IS_VIVOBROWSER=isUserAgentMatch("VivoBrowser"),VIVO_VERSION=getBrowserVersion("VivoBrowser"),IS_OPENHARMONY=isUserAgentMatch("OpenHarmony"),OPENHARMONY_VERSION=getBrowserVersion("OpenHarmony"),getChromeMajorVersion=()=>getBrowserMajorVersion("Chrome"),IS_IOS_CHROME=isUserAgentMatch("CriOS"),IS_CHROMIUM_BASE=isUserAgentMatch("Chrome"),IS_CHROME=!IS_EDGE&&!IS_SOGOU&&!IS_SOGOUM&&!IS_TBS&&!IS_XWEB&&!IS_EDG&&!IS_WQQB&&!IS_MIBROWSER&&!IS_HUAWEIBROWSER&&!IS_SAMSUNGBROWSER&&!IS_OPPOBROWSER&&!IS_VIVOBROWSER&&IS_CHROMIUM_BASE,IS_HEADLESS_CHROME=isUserAgentMatch("HeadlessChrome"),CHROME_MAJOR_VERSION=getChromeMajorVersion(),CHROME_VERSION=getBrowserVersion("Chrome"),ELECTRON_MAJOR_VERSION=getBrowserMajorVersion("Electron"),IS_SAFARI=!IS_CHROMIUM_BASE&&!IS_MQQB&&!IS_X5MQQB&&!IS_MACQQB&&!IS_IPADQQB&&isUserAgentMatch("Safari"),SAFARI_VERSION=getBrowserVersion("Version"),IS_ANDROID_WEBVIEW=/Android.*(wv|.0.0.0)/.test(USER_AGENT),IOS_VERSION=(()=>{if(IS_IPAD_PRO)return SAFARI_VERSION;if(IS_IOS){const e=USER_AGENT.match(/OS (\d+)_(\d+)/i);if(e&&e[1]){let t=e[1];return e[2]&&(t+=`.${e[2]}`),t}}return""})(),IOS_MAIN_VERSION=Number(IOS_VERSION.split(".")[0]),IS_IOS_13_OR_14=(()=>{const e=Number(IOS_VERSION.split(".")[0]);return 14===e||13===e})(),IS_LOCAL="undefined"!=typeof location&&("file:"===location.protocol||"localhost"===location.hostname||"127.0.0.1"===location.hostname),browserInfo=getBrowserInfo();function getBrowserInfo(){const e=new Map([[IS_FIREFOX,["Firefox",FIREFOX_VERSION]],[IS_EDG,["Edg",EDG_VERSION]],[IS_CHROME,["Chrome",CHROME_VERSION]],[IS_IOS_CHROME,["ChiOS",getBrowserVersion("CriOS")]],[IS_SAFARI&&!IS_IOS_CHROME,["Safari",SAFARI_VERSION]],[IS_TBS,["TBS",TBS_VERSION]],[IS_XWEB,["XWEB",XWEB_VERSION]],[IS_WECHAT&&IS_IPHONE,["WeChat",WECHAT_VERSION]],[IS_WQQB,["QQ(Win)",WQQB_VERSION]],[IS_MQQB,["QQ(Mobile)",MQQB_VERSION]],[IS_X5MQQB,["QQ(Mobile X5)",MQQB_VERSION]],[IS_MACQQB,["QQ(Mac)",MACQQB_VERSION]],[IS_IPADQQB,["QQ(iPad)",IPADQQB_VERSION]],[IS_MIBROWSER,["MI",MI_VERSION]],[IS_HUAWEIBROWSER,["HW",HUAWEI_VERSION]],[IS_SAMSUNGBROWSER,["Samsung",SAMSUNG_VERSION]],[IS_OPPOBROWSER,["OPPO",OPPO_VERSION]],[IS_VIVOBROWSER,["VIVO",VIVO_VERSION]],[IS_EDGE,["EDGE",EDGE_VERSION]],[IS_SOGOUM,["SogouMobile",SOGOUM_VERSION]],[IS_SOGOU,["Sogou",SOGOU_VERSION]]]);let t="unknown",r="unknown";return e.has(!0)&&([t,r]=e.get(!0)),{name:t,version:r}}var faceDetectionSeq=0,_FaceDetection=class e{constructor(e){this.core=e,__publicField(this,"seq"),__publicField(this,"log"),__publicField(this,"preLoadPromise"),__publicField(this,"_faceDetectorHash"),__publicField(this,"_visionTaskRegistry"),__publicField(this,"_faceStatus",!1),__publicField(this,"_startMissing"),__publicField(this,"_minConfidence",.8),__publicField(this,"_missingTimeout",1e3),__publicField(this,"_detectionInterval",300),__publicField(this,"_lastDetectTime",0),__publicField(this,"_videoFrameCallBackId"),__publicField(this,"_video"),__publicField(this,"_onFaceDetectionStateChanged"),faceDetectionSeq+=1,this.seq=faceDetectionSeq,this.log=e.log.createChild({id:`${this.getAlias()}${faceDetectionSeq}`}),this.log.info("created"),e.assetsPath&&(this.preLoadPromise=this.preload(e.assetsPath))}static isSupported(){if(CHROME_MAJOR_VERSION<90)return!1;const e=document.createElement("canvas").getContext("webgl2");return!!(e&&e instanceof WebGL2RenderingContext)}resetState(){this._faceStatus=!1,this._startMissing=null,this._lastDetectTime=0}async preload(e){try{await this.core.initVisionTaskRegistry(e,["FaceDetector"])}catch(e){const{RtcError:t,ErrorCode:r}=this.core.errorModule;throw new t({code:r.INVALID_OPERATION,message:`FaceDetection preload error, please redeploy the assets of the npm package. detail: ${e}`})}}getGroup(){return"fd"}getName(){return e.Name}getAlias(){return"fd"}getValidateRule(e){switch(e){case"start":return startValidateRule(this.core);case"update":return updateValidateRule(this.core);case"stop":return stopValidateRule(this.core)}}getCurrentStatus(){const e=this._visionTaskRegistry.getResult(this._faceDetectorHash).detections;this._visionTaskRegistry.resetHashResults();let t=e.length>0;if(t){const r=[];for(const t of e){const e=t.categories;for(const t of e)r.push(t.score)}t&&(t=!!r.find((e=>e>=this._minConfidence)))}return t}detectFace(){const e=this.getCurrentStatus();this._startMissing&&Date.now()-this._startMissing>=this._missingTimeout&&e!==this._faceStatus?(this._onFaceDetectionStateChanged(e),this._faceStatus=e,this._startMissing=null):Date.now()-this._lastDetectTime>=this._detectionInterval&&(this._faceStatus!==e&&(e||0===this._missingTimeout?(this._onFaceDetectionStateChanged(e),this._faceStatus=e):this._startMissing||(this._startMissing=Date.now())),this._lastDetectTime=Date.now()),this._videoFrameCallBackId=this._video.requestVideoFrameCallback(this.detectFace.bind(this))}async initFaceDetection(){this._visionTaskRegistry=await window.VisionTaskRegistry.getInstance();const e=await this._visionTaskRegistry.register(window.VisionTaskType.FaceDetector);e&&(this._faceDetectorHash=e,this._visionTaskRegistry.setVideo(this._faceDetectorHash,this._video))}updateOptions(e){e.onFaceDetectionStateChanged&&(this._onFaceDetectionStateChanged=e.onFaceDetectionStateChanged),e.detectionInterval&&(this._detectionInterval=e.detectionInterval),e.minConfidence&&(this._minConfidence=e.minConfidence),(0===e.missingTimeout||e.missingTimeout)&&(this._missingTimeout=e.missingTimeout)}async start(e){const{RtcError:t,ErrorCode:r}=this.core.errorModule;if(this.updateOptions(e),!this.preLoadPromise){if(!this.core.assetsPath)throw new t({code:r.INVALID_PARAMETER,message:"you need to deploy the assets of the npm package and set assetsPath param in TRTC.create()"});this.preLoadPromise=this.preload(this.core.assetsPath)}await this.preLoadPromise;const i=this.core.room.videoManager.cameraTrack,s=null==i?void 0:i.player.element;if(!s||!s.srcObject)throw new t({code:r.DEVICE_ERROR,message:"please enable camera display to start detection"});this._video=s,this.core.utils.isMediaStreamTrack(this._video.srcObject.getVideoTracks()[0])||(this._video.srcObject=new MediaStream([i.mediaTrack])),await this.initFaceDetection().catch((e=>{throw new t({code:r.UNKNOWN_ERROR,message:e.message})})),this._videoFrameCallBackId=this._video.requestVideoFrameCallback(this.detectFace.bind(this)),i.on(this.core.enums.TrackEvent.MUTE,this.autoHandleMute,this),this.core.kvStatManager.addEnum({key:575700,value:1})}autoHandleMute(){const e=this.core.room.videoManager.cameraTrack;this._faceStatus&&(this._faceStatus=!1,this._onFaceDetectionStateChanged(!1)),this._video.cancelVideoFrameCallback(this._videoFrameCallBackId),null==e||e.once(this.core.enums.TrackEvent.UNMUTE,(()=>{this._videoFrameCallBackId=this._video.requestVideoFrameCallback(this.detectFace.bind(this))}))}async update(e){this.updateOptions(e),this.core.kvStatManager.addEnum({key:575701,value:1})}async stop(){var e;this.resetState(),this._video.cancelVideoFrameCallback(this._videoFrameCallBackId),null==(e=this.core.room.videoManager.cameraTrack)||e.off(this.core.enums.TrackEvent.MUTE,this.autoHandleMute,this),this.core.kvStatManager.addEnum({key:575702,value:1})}destroy(){this.stop()}};__publicField(_FaceDetection,"Name","FaceDetection");var FaceDetection=_FaceDetection,index_default=FaceDetection;export{index_default as default};export{FaceDetection};
1
+ var __defProp=Object.defineProperty,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,r)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,__spreadValues=(e,t)=>{for(var r in t||(t={}))__hasOwnProp.call(t,r)&&__defNormalProp(e,r,t[r]);if(__getOwnPropSymbols)for(var r of __getOwnPropSymbols(t))__propIsEnum.call(t,r)&&__defNormalProp(e,r,t[r]);return e},__publicField=(e,t,r)=>__defNormalProp(e,"symbol"!=typeof t?t+"":t,r),BASE_FACE_DETECTION_RULES={detectionInterval:{type:"number",required:!1,min:100,max:5e3},minConfidence:{type:"number",required:!1,min:0,max:1},missingTimeout:{type:"number",required:!1,min:0,max:5e3}},faceDetectionOptions=__spreadValues({onFaceDetectionStateChanged:{required:!0}},BASE_FACE_DETECTION_RULES),updateFaceDetectionOptions=__spreadValues({onFaceDetectionStateChanged:{required:!1}},BASE_FACE_DETECTION_RULES);function startValidateRule(e){return{type:"object",required:!0,properties:faceDetectionOptions,validate(t,r,i,s){var o;const{RtcError:a,ErrorCode:n,ErrorCodeDictionary:_}=e.errorModule,{onFaceDetectionStateChanged:c}=t;if(c&&!e.utils.isFunction(c))throw new a({code:n.INVALID_PARAMETER,extraCode:_.INVALID_PARAMETER_TYPE,fnName:i,messageParams:{key:"onFaceDetectionStateChanged",value:typeof c,rule:{type:"Function"}}});if(!(null==(o=e.room.videoManager.cameraTrack)?void 0:o.mediaTrack))throw new a({code:n.INVALID_OPERATION,extraCode:_.INVALID_OPERATION_NEED_VIDEO,fnName:i})}}}function updateValidateRule(e){return{type:"object",required:!0,properties:updateFaceDetectionOptions,validate(t,r,i,s){var o;const{RtcError:a,ErrorCode:n,ErrorCodeDictionary:_}=e.errorModule,{onFaceDetectionStateChanged:c}=t;if(c&&!e.utils.isFunction(c))throw new a({code:n.INVALID_PARAMETER,extraCode:_.INVALID_PARAMETER_TYPE,fnName:i,messageParams:{key:"onFaceDetectionStateChanged",value:typeof c,rule:{type:"Function"}}});if(!(null==(o=e.room.videoManager.cameraTrack)?void 0:o.mediaTrack))throw new a({code:n.INVALID_OPERATION,extraCode:_.INVALID_OPERATION_NEED_VIDEO,fnName:i})}}}function stopValidateRule(e){return{name:"StopFaceDetectionOptions",required:!1}}var USER_AGENT="undefined"==typeof navigator?"":navigator.userAgent,isUserAgentMatch=e=>new RegExp(e,"i").test(USER_AGENT),getBrowserVersion=e=>{if(isUserAgentMatch(e)){const t=new RegExp(`${e}\\/([\\d.]+)`),r=USER_AGENT.match(t);if(r&&r[1])return r[1]}return""},getBrowserMajorVersion=e=>{if(isUserAgentMatch(e)){const t=new RegExp(`${e}\\/(\\d+)`),r=USER_AGENT.match(t);if(r&&r[1])return parseFloat(r[1])}return NaN},webkitVersionMap=/AppleWebKit\/([\d.]+)/i.exec(USER_AGENT),appleWebkitVersion=webkitVersionMap?parseFloat(webkitVersionMap[1]):NaN,IS_IPAD=isUserAgentMatch("iPad"),IS_IPAD_PRO="undefined"!=typeof navigator&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&isUserAgentMatch("Macintosh"),IS_IPHONE=isUserAgentMatch("iPhone")&&!IS_IPAD,IS_IPOD=isUserAgentMatch("iPod"),IS_IOS=IS_IPHONE||IS_IPAD||IS_IPOD||IS_IPAD_PRO,IS_ANDROID=isUserAgentMatch("Android"),ANDROID_VERSION=function(){if(IS_ANDROID){const e=USER_AGENT.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(e){const t=e[1]&&parseFloat(e[1]),r=e[2]&&parseFloat(e[2]);if(t&&r)return parseFloat(`${e[1]}.${e[2]}`);if(t)return t}}return NaN}(),IS_OLD_ANDROID=IS_ANDROID&&isUserAgentMatch("webkit")&&ANDROID_VERSION<2.3,IS_NATIVE_ANDROID=IS_ANDROID&&ANDROID_VERSION<5&&appleWebkitVersion<537,IS_FIREFOX=isUserAgentMatch("Firefox"),FIREFOX_VERSION=getBrowserVersion("Firefox"),FIREFOX_MAJOR_VERSION=getBrowserMajorVersion("Firefox"),IS_EDGE=isUserAgentMatch("Edge"),EDGE_VERSION=getBrowserVersion("Edge"),IS_EDG=isUserAgentMatch("Edg"),EDG_VERSION=getBrowserVersion("Edg"),EDG_MAJOR_VERSION=getBrowserMajorVersion("Edg"),IS_SOGOUM=isUserAgentMatch("SogouMobileBrowser"),SOGOUM_VERSION=getBrowserVersion("SogouMobileBrowser"),IS_SOGOU=isUserAgentMatch("MetaSr\\s"),SOGOU_VERSION=getBrowserVersion("MetaSr\\s"),IS_TBS=isUserAgentMatch("TBS"),TBS_VERSION=getBrowserVersion("TBS"),IS_XWEB=isUserAgentMatch("XWEB"),XWEB_VERSION=getBrowserVersion("XWEB"),IS_IE8=isUserAgentMatch("MSIE\\s8\\.0"),IS_IE=isUserAgentMatch("MSIE\\/\\d+"),IE_VERSION=function(){if(IS_IE){const e=/MSIE\s(\d+)\.\d/.exec(USER_AGENT);let t=e&&parseFloat(e[1]);return!t&&/Trident\/7.0/i.test(USER_AGENT)&&/rv:11.0/.test(USER_AGENT)&&(t=11),t}return NaN}(),IS_WECHAT=isUserAgentMatch("(micromessenger|webbrowser)"),WECHAT_VERSION=getBrowserVersion("MicroMessenger"),IS_X5MQQB=!IS_TBS&&isUserAgentMatch("MQQBrowser")&&isUserAgentMatch("COVC"),IS_MQQB=!IS_TBS&&isUserAgentMatch("MQQBrowser")&&!isUserAgentMatch("COVC"),MQQB_VERSION=IS_MQQB||IS_X5MQQB?getBrowserVersion("MQQBrowser"):"",IS_WQQB=!IS_TBS&&isUserAgentMatch(" QQBrowser"),WQQB_VERSION=getBrowserVersion(" QQBrowser"),IS_MACQQB=!IS_TBS&&isUserAgentMatch("QQBrowserLite"),MACQQB_VERSION=getBrowserVersion("QQBrowserLite"),IS_IPADQQB=!IS_TBS&&isUserAgentMatch("MQBHD"),IPADQQB_VERSION=getBrowserVersion("MQBHD"),IS_WIN=isUserAgentMatch("Windows"),IS_MAC=!IS_IOS&&isUserAgentMatch("MAC OS X"),IS_LINUX=!IS_ANDROID&&isUserAgentMatch("Linux"),IS_CHROME_OS=isUserAgentMatch("CrOS"),IS_WX=isUserAgentMatch("MicroMessenger"),IS_UCBROWSER=isUserAgentMatch("UCBrowser"),IS_ELECTRON=isUserAgentMatch("Electron"),IS_MIBROWSER=isUserAgentMatch("MiuiBrowser"),MI_VERSION=getBrowserVersion("MiuiBrowser"),IS_HUAWEIBROWSER=isUserAgentMatch("HuaweiBrowser"),IS_HUAWEI=isUserAgentMatch("Huawei")||isUserAgentMatch("HUAWEI"),IS_HONOR=isUserAgentMatch("Honor")||isUserAgentMatch("HONOR"),HUAWEI_VERSION=getBrowserVersion("HuaweiBrowser"),IS_SAMSUNGBROWSER=isUserAgentMatch("SamsungBrowser"),SAMSUNG_VERSION=getBrowserVersion("SamsungBrowser"),IS_OPPOBROWSER=isUserAgentMatch("HeyTapBrowser"),OPPO_VERSION=getBrowserVersion("HeyTapBrowser"),IS_VIVOBROWSER=isUserAgentMatch("VivoBrowser"),VIVO_VERSION=getBrowserVersion("VivoBrowser"),IS_OPENHARMONY=isUserAgentMatch("OpenHarmony"),OPENHARMONY_VERSION=getBrowserVersion("OpenHarmony"),getChromeMajorVersion=()=>getBrowserMajorVersion("Chrome"),IS_IOS_CHROME=isUserAgentMatch("CriOS"),IS_CHROMIUM_BASE=isUserAgentMatch("Chrome"),IS_CHROME=!IS_EDGE&&!IS_SOGOU&&!IS_SOGOUM&&!IS_TBS&&!IS_XWEB&&!IS_EDG&&!IS_WQQB&&!IS_MIBROWSER&&!IS_HUAWEIBROWSER&&!IS_SAMSUNGBROWSER&&!IS_OPPOBROWSER&&!IS_VIVOBROWSER&&IS_CHROMIUM_BASE,IS_HEADLESS_CHROME=isUserAgentMatch("HeadlessChrome"),CHROME_MAJOR_VERSION=getChromeMajorVersion(),IS_CHROMIUM_128_TO_143=IS_CHROMIUM_BASE&&CHROME_MAJOR_VERSION>=128&&CHROME_MAJOR_VERSION<=143,CHROME_VERSION=getBrowserVersion("Chrome"),ELECTRON_MAJOR_VERSION=getBrowserMajorVersion("Electron"),IS_SAFARI=!IS_CHROMIUM_BASE&&!IS_MQQB&&!IS_X5MQQB&&!IS_MACQQB&&!IS_IPADQQB&&isUserAgentMatch("Safari"),SAFARI_VERSION=getBrowserVersion("Version"),IS_ANDROID_WEBVIEW=/Android.*(wv|.0.0.0)/.test(USER_AGENT),IOS_VERSION=(()=>{if(IS_IPAD_PRO)return SAFARI_VERSION;if(IS_IOS){const e=USER_AGENT.match(/OS (\d+)_(\d+)/i);if(e&&e[1]){let t=e[1];return e[2]&&(t+=`.${e[2]}`),t}}return""})(),IOS_MAIN_VERSION=Number(IOS_VERSION.split(".")[0]),IS_IOS_13_OR_14=(()=>{const e=Number(IOS_VERSION.split(".")[0]);return 14===e||13===e})(),IS_LOCAL="undefined"!=typeof location&&("file:"===location.protocol||"localhost"===location.hostname||"127.0.0.1"===location.hostname),browserInfo=getBrowserInfo();function getBrowserInfo(){const e=new Map([[IS_FIREFOX,["Firefox",FIREFOX_VERSION]],[IS_EDG,["Edg",EDG_VERSION]],[IS_CHROME,["Chrome",CHROME_VERSION]],[IS_IOS_CHROME,["ChiOS",getBrowserVersion("CriOS")]],[IS_SAFARI&&!IS_IOS_CHROME,["Safari",SAFARI_VERSION]],[IS_TBS,["TBS",TBS_VERSION]],[IS_XWEB,["XWEB",XWEB_VERSION]],[IS_WECHAT&&IS_IPHONE,["WeChat",WECHAT_VERSION]],[IS_WQQB,["QQ(Win)",WQQB_VERSION]],[IS_MQQB,["QQ(Mobile)",MQQB_VERSION]],[IS_X5MQQB,["QQ(Mobile X5)",MQQB_VERSION]],[IS_MACQQB,["QQ(Mac)",MACQQB_VERSION]],[IS_IPADQQB,["QQ(iPad)",IPADQQB_VERSION]],[IS_MIBROWSER,["MI",MI_VERSION]],[IS_HUAWEIBROWSER,["HW",HUAWEI_VERSION]],[IS_SAMSUNGBROWSER,["Samsung",SAMSUNG_VERSION]],[IS_OPPOBROWSER,["OPPO",OPPO_VERSION]],[IS_VIVOBROWSER,["VIVO",VIVO_VERSION]],[IS_EDGE,["EDGE",EDGE_VERSION]],[IS_SOGOUM,["SogouMobile",SOGOUM_VERSION]],[IS_SOGOU,["Sogou",SOGOU_VERSION]]]);let t="unknown",r="unknown";return e.has(!0)&&([t,r]=e.get(!0)),{name:t,version:r}}var faceDetectionSeq=0,_FaceDetection=class e{constructor(e){this.core=e,__publicField(this,"seq"),__publicField(this,"log"),__publicField(this,"preLoadPromise"),__publicField(this,"_faceDetectorHash"),__publicField(this,"_visionTaskRegistry"),__publicField(this,"_faceStatus",!1),__publicField(this,"_startMissing"),__publicField(this,"_minConfidence",.8),__publicField(this,"_missingTimeout",1e3),__publicField(this,"_detectionInterval",300),__publicField(this,"_lastDetectTime",0),__publicField(this,"_videoFrameCallBackId"),__publicField(this,"_video"),__publicField(this,"_onFaceDetectionStateChanged"),faceDetectionSeq+=1,this.seq=faceDetectionSeq,this.log=e.log.createChild({id:`${this.getAlias()}${faceDetectionSeq}`}),this.log.info("created"),e.assetsPath&&(this.preLoadPromise=this.preload(e.assetsPath))}static isSupported(){if(CHROME_MAJOR_VERSION<90)return!1;const e=document.createElement("canvas").getContext("webgl2");return!!(e&&e instanceof WebGL2RenderingContext)}resetState(){this._faceStatus=!1,this._startMissing=null,this._lastDetectTime=0}async preload(e){try{await this.core.initVisionTaskRegistry(e,["FaceDetector"])}catch(e){const{RtcError:t,ErrorCode:r}=this.core.errorModule;throw new t({code:r.INVALID_OPERATION,message:`FaceDetection preload error, please redeploy the assets of the npm package. detail: ${e}`})}}getGroup(){return"fd"}getName(){return e.Name}getAlias(){return"fd"}getValidateRule(e){switch(e){case"start":return startValidateRule(this.core);case"update":return updateValidateRule(this.core);case"stop":return stopValidateRule(this.core)}}getCurrentStatus(){const e=this._visionTaskRegistry.getResult(this._faceDetectorHash).detections;this._visionTaskRegistry.resetHashResults();let t=e.length>0;if(t){const r=[];for(const t of e){const e=t.categories;for(const t of e)r.push(t.score)}t&&(t=!!r.find(e=>e>=this._minConfidence))}return t}detectFace(){const e=this.getCurrentStatus();this._startMissing&&Date.now()-this._startMissing>=this._missingTimeout&&e!==this._faceStatus?(this._onFaceDetectionStateChanged(e),this._faceStatus=e,this._startMissing=null):Date.now()-this._lastDetectTime>=this._detectionInterval&&(this._faceStatus!==e&&(e||0===this._missingTimeout?(this._onFaceDetectionStateChanged(e),this._faceStatus=e):this._startMissing||(this._startMissing=Date.now())),this._lastDetectTime=Date.now()),this._video&&(this._videoFrameCallBackId=this._video.requestVideoFrameCallback(this.detectFace.bind(this)))}async initFaceDetection(){this._visionTaskRegistry=await window.VisionTaskRegistry.getInstance();const e=await this._visionTaskRegistry.register(window.VisionTaskType.FaceDetector);e&&(this._faceDetectorHash=e,this._video&&this._visionTaskRegistry.setVideo(this._faceDetectorHash,this._video))}updateOptions(e){e.onFaceDetectionStateChanged&&(this._onFaceDetectionStateChanged=e.onFaceDetectionStateChanged),e.detectionInterval&&(this._detectionInterval=e.detectionInterval),e.minConfidence&&(this._minConfidence=e.minConfidence),(0===e.missingTimeout||e.missingTimeout)&&(this._missingTimeout=e.missingTimeout)}async start(e){const{RtcError:t,ErrorCode:r}=this.core.errorModule;if(this.updateOptions(e),!this.preLoadPromise){if(!this.core.assetsPath)throw new t({code:r.INVALID_PARAMETER,message:"you need to deploy the assets of the npm package and set assetsPath param in TRTC.create()"});this.preLoadPromise=this.preload(this.core.assetsPath)}await this.preLoadPromise;const i=this.core.room.videoManager.cameraTrack;if(!i)throw new t({code:r.DEVICE_ERROR,message:"please enable camera display to start detection"});const s=new(0,this.core.VideoPlayer)({id:"fd",track:i.mediaTrack,muted:!1,container:null,log:this.core.log});s.play(),this._video=s.element,await this.initFaceDetection().catch(e=>{throw new t({code:r.UNKNOWN_ERROR,message:e.message})}),this._videoFrameCallBackId=this._video.requestVideoFrameCallback(this.detectFace.bind(this)),i.on(this.core.enums.TrackEvent.MUTE,this.autoHandleMute,this),this.core.kvStatManager.addEnum({key:575700,value:1})}autoHandleMute(){var e;const t=this.core.room.videoManager.cameraTrack;this._faceStatus&&(this._faceStatus=!1,this._onFaceDetectionStateChanged(!1)),null==(e=this._video)||e.cancelVideoFrameCallback(this._videoFrameCallBackId),null==t||t.once(this.core.enums.TrackEvent.UNMUTE,()=>{this._video&&(this._videoFrameCallBackId=this._video.requestVideoFrameCallback(this.detectFace.bind(this)))})}async update(e){this.updateOptions(e),this.core.kvStatManager.addEnum({key:575701,value:1})}async stop(){var e,t;this.resetState(),null==(e=this._video)||e.cancelVideoFrameCallback(this._videoFrameCallBackId),null==(t=this.core.room.videoManager.cameraTrack)||t.off(this.core.enums.TrackEvent.MUTE,this.autoHandleMute,this),this.core.kvStatManager.addEnum({key:575702,value:1})}destroy(){this.stop()}};__publicField(_FaceDetection,"Name","FaceDetection");var FaceDetection=_FaceDetection,index_default=FaceDetection;export{index_default as default};export{FaceDetection};
@@ -1 +1,3 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).FaceDetection=t()}(this,(function(){"use strict";function e(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function t(e,t,r,n,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}function r(e){return function(){var r=this,n=arguments;return new Promise((function(o,i){var a=e.apply(r,n);function s(e){t(a,o,i,s,c,"next",e)}function c(e){t(a,o,i,s,c,"throw",e)}s(void 0)}))}}function n(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,s(n.key),n)}}function o(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=u(e))||t){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function i(){i=function(){return t};var e,t={},r=Object.prototype,n=r.hasOwnProperty,o=Object.defineProperty||function(e,t,r){e[t]=r.value},a="function"==typeof Symbol?Symbol:{},s=a.iterator||"@@iterator",c=a.asyncIterator||"@@asyncIterator",u=a.toStringTag||"@@toStringTag";function l(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(e){l=function(e,t,r){return e[t]=r}}function h(e,t,r,n){var i=t&&t.prototype instanceof g?t:g,a=Object.create(i.prototype),s=new F(n||[]);return o(a,"_invoke",{value:C(e,r,s)}),a}function f(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}t.wrap=h;var d="suspendedStart",v="suspendedYield",p="executing",y="completed",m={};function g(){}function w(){}function b(){}var E={};l(E,s,(function(){return this}));var _=Object.getPrototypeOf,k=_&&_(_(D([])));k&&k!==r&&n.call(k,s)&&(E=k);var S=b.prototype=g.prototype=Object.create(E);function T(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function x(e,t){function r(o,i,a,s){var c=f(e[o],e,i);if("throw"!==c.type){var u=c.arg,l=u.value;return l&&"object"==typeof l&&n.call(l,"__await")?t.resolve(l.__await).then((function(e){r("next",e,a,s)}),(function(e){r("throw",e,a,s)})):t.resolve(l).then((function(e){u.value=e,a(u)}),(function(e){return r("throw",e,a,s)}))}s(c.arg)}var i;o(this,"_invoke",{value:function(e,n){function o(){return new t((function(t,o){r(e,n,t,o)}))}return i=i?i.then(o,o):o()}})}function C(t,r,n){var o=d;return function(i,a){if(o===p)throw Error("Generator is already running");if(o===y){if("throw"===i)throw a;return{value:e,done:!0}}for(n.method=i,n.arg=a;;){var s=n.delegate;if(s){var c=O(s,n);if(c){if(c===m)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===d)throw o=y,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=p;var u=f(t,r,n);if("normal"===u.type){if(o=n.done?y:v,u.arg===m)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(o=y,n.method="throw",n.arg=u.arg)}}}function O(t,r){var n=r.method,o=t.iterator[n];if(o===e)return r.delegate=null,"throw"===n&&t.iterator.return&&(r.method="return",r.arg=e,O(t,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),m;var i=f(o,t.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,m;var a=i.arg;return a?a.done?(r[t.resultName]=a.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,m):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,m)}function M(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function I(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function F(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(M,this),this.reset(!0)}function D(t){if(t||""===t){var r=t[s];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var o=-1,i=function r(){for(;++o<t.length;)if(n.call(t,o))return r.value=t[o],r.done=!1,r;return r.value=e,r.done=!0,r};return i.next=i}}throw new TypeError(typeof t+" is not iterable")}return w.prototype=b,o(S,"constructor",{value:b,configurable:!0}),o(b,"constructor",{value:w,configurable:!0}),w.displayName=l(b,u,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===w||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,b):(e.__proto__=b,l(e,u,"GeneratorFunction")),e.prototype=Object.create(S),e},t.awrap=function(e){return{__await:e}},T(x.prototype),l(x.prototype,c,(function(){return this})),t.AsyncIterator=x,t.async=function(e,r,n,o,i){void 0===i&&(i=Promise);var a=new x(h(e,r,n,o),i);return t.isGeneratorFunction(r)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},T(S),l(S,u,"Generator"),l(S,s,(function(){return this})),l(S,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),r=[];for(var n in t)r.push(n);return r.reverse(),function e(){for(;r.length;){var n=r.pop();if(n in t)return e.value=n,e.done=!1,e}return e.done=!0,e}},t.values=D,F.prototype={constructor:F,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(I),!t)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var r=this;function o(n,o){return s.type="throw",s.arg=t,r.next=n,o&&(r.method="next",r.arg=e),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var c=n.call(a,"catchLoc"),u=n.call(a,"finallyLoc");if(c&&u){if(this.prev<a.catchLoc)return o(a.catchLoc,!0);if(this.prev<a.finallyLoc)return o(a.finallyLoc)}else if(c){if(this.prev<a.catchLoc)return o(a.catchLoc,!0)}else{if(!u)throw Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return o(a.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===e||"continue"===e)&&i.tryLoc<=t&&t<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=e,a.arg=t,i?(this.method="next",this.next=i.finallyLoc,m):this.complete(a)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),m},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),I(r),m}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;I(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:D(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),m}},t}function a(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,u=!1;try{if(i=(r=r.call(e)).next,0===t);else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return s}}(e,t)||u(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function s(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t);if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof t?t:t+""}function c(e){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},c(e)}function u(t,r){if(t){if("string"==typeof t)return e(t,r);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?e(t,r):void 0}}var l=Object.defineProperty,h=Object.getOwnPropertySymbols,f=Object.prototype.hasOwnProperty,d=Object.prototype.propertyIsEnumerable,v=function(e,t,r){return t in e?l(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r},p=function(e,t){for(var r in t||(t={}))f.call(t,r)&&v(e,r,t[r]);if(h){var n,i=o(h(t));try{for(i.s();!(n=i.n()).done;){r=n.value;d.call(t,r)&&v(e,r,t[r])}}catch(e){i.e(e)}finally{i.f()}}return e},y=function(e,t,r){return v(e,"symbol"!==c(t)?t+"":t,r)},m={detectionInterval:{type:"number",required:!1,min:100,max:5e3},minConfidence:{type:"number",required:!1,min:0,max:1},missingTimeout:{type:"number",required:!1,min:0,max:5e3}},g=p({onFaceDetectionStateChanged:{required:!0}},m),w=p({onFaceDetectionStateChanged:{required:!1}},m);var b="undefined"==typeof navigator?"":navigator.userAgent,E=function(e){return new RegExp(e,"i").test(b)},_=function(e){if(E(e)){var t=new RegExp("".concat(e,"\\/([\\d.]+)")),r=b.match(t);if(r&&r[1])return r[1]}return""},k=function(e){if(E(e)){var t=new RegExp("".concat(e,"\\/(\\d+)")),r=b.match(t);if(r&&r[1])return parseFloat(r[1])}return NaN},S=/AppleWebKit\/([\d.]+)/i.exec(b);S&&parseFloat(S[1]);var T=E("iPad"),x="undefined"!=typeof navigator&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&E("Macintosh"),C=E("iPhone")&&!T,O=E("iPod"),M=C||T||O||x,I=E("Android");!function(){if(I){var e=b.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(e){var t=e[1]&&parseFloat(e[1]),r=e[2]&&parseFloat(e[2]);if(t&&r)return parseFloat("".concat(e[1],".").concat(e[2]));if(t)return t}}}();I&&E("webkit");var F=E("Firefox"),D=_("Firefox");k("Firefox");var P=E("Edge"),L=_("Edge"),A=E("Edg"),R=_("Edg");k("Edg");var N=E("SogouMobileBrowser"),B=_("SogouMobileBrowser"),j=E("MetaSr\\s"),V=_("MetaSr\\s"),Q=E("TBS"),H=_("TBS"),q=E("XWEB"),G=_("XWEB");E("MSIE\\s8\\.0");var W=E("MSIE\\/\\d+");!function(){if(W){var e=/MSIE\s(\d+)\.\d/.exec(b),t=e&&parseFloat(e[1]);return!t&&/Trident\/7.0/i.test(b)&&/rv:11.0/.test(b)&&(t=11),t}}();var U=E("(micromessenger|webbrowser)"),X=_("MicroMessenger"),Y=!Q&&E("MQQBrowser")&&E("COVC"),K=!Q&&E("MQQBrowser")&&!E("COVC"),$=K||Y?_("MQQBrowser"):"",z=!Q&&E(" QQBrowser"),J=_(" QQBrowser"),Z=!Q&&E("QQBrowserLite"),ee=_("QQBrowserLite"),te=!Q&&E("MQBHD"),re=_("MQBHD");E("Windows"),!M&&E("MAC OS X"),!I&&E("Linux"),E("CrOS"),E("MicroMessenger"),E("UCBrowser"),E("Electron");var ne=E("MiuiBrowser"),oe=_("MiuiBrowser"),ie=E("HuaweiBrowser");E("Huawei")||E("HUAWEI"),E("Honor")||E("HONOR");var ae=_("HuaweiBrowser"),se=E("SamsungBrowser"),ce=_("SamsungBrowser"),ue=E("HeyTapBrowser"),le=_("HeyTapBrowser"),he=E("VivoBrowser"),fe=_("VivoBrowser");E("OpenHarmony"),_("OpenHarmony");var de=E("CriOS"),ve=E("Chrome"),pe=!P&&!j&&!N&&!Q&&!q&&!A&&!z&&!ne&&!ie&&!se&&!ue&&!he&&ve;E("HeadlessChrome");var ye=k("Chrome"),me=_("Chrome");k("Electron");var ge=!ve&&!K&&!Y&&!Z&&!te&&E("Safari"),we=_("Version"),be=function(){if(x)return we;if(M){var e=b.match(/OS (\d+)_(\d+)/i);if(e&&e[1]){var t=e[1];return e[2]&&(t+=".".concat(e[2])),t}}return""}();Number(be.split(".")[0]),Number(be.split(".")[0]),function(){var e=new Map([[F,["Firefox",D]],[A,["Edg",R]],[pe,["Chrome",me]],[de,["ChiOS",_("CriOS")]],[ge&&!de,["Safari",we]],[Q,["TBS",H]],[q,["XWEB",G]],[U&&C,["WeChat",X]],[z,["QQ(Win)",J]],[K,["QQ(Mobile)",$]],[Y,["QQ(Mobile X5)",$]],[Z,["QQ(Mac)",ee]],[te,["QQ(iPad)",re]],[ne,["MI",oe]],[ie,["HW",ae]],[se,["Samsung",ce]],[ue,["OPPO",le]],[he,["VIVO",fe]],[P,["EDGE",L]],[N,["SogouMobile",B]],[j,["Sogou",V]]]),t="unknown",r="unknown";if(e.has(!0)){var n=a(e.get(!0),2);t=n[0],r=n[1]}}();var Ee=0,_e=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.core=t,y(this,"seq"),y(this,"log"),y(this,"preLoadPromise"),y(this,"_faceDetectorHash"),y(this,"_visionTaskRegistry"),y(this,"_faceStatus",!1),y(this,"_startMissing"),y(this,"_minConfidence",.8),y(this,"_missingTimeout",1e3),y(this,"_detectionInterval",300),y(this,"_lastDetectTime",0),y(this,"_videoFrameCallBackId"),y(this,"_video"),y(this,"_onFaceDetectionStateChanged"),Ee+=1,this.seq=Ee,this.log=t.log.createChild({id:"".concat(this.getAlias()).concat(Ee)}),this.log.info("created"),t.assetsPath&&(this.preLoadPromise=this.preload(t.assetsPath))}return t=e,a=[{key:"resetState",value:function(){this._faceStatus=!1,this._startMissing=null,this._lastDetectTime=0}},{key:"preload",value:(d=r(i().mark((function e(t){var r,n,o;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.core.initVisionTaskRegistry(t,["FaceDetector"]);case 3:e.next=9;break;case 5:throw e.prev=5,e.t0=e.catch(0),r=this.core.errorModule,n=r.RtcError,o=r.ErrorCode,new n({code:o.INVALID_OPERATION,message:"FaceDetection preload error, please redeploy the assets of the npm package. detail: ".concat(e.t0)});case 9:case"end":return e.stop()}}),e,this,[[0,5]])}))),function(e){return d.apply(this,arguments)})},{key:"getGroup",value:function(){return"fd"}},{key:"getName",value:function(){return e.Name}},{key:"getAlias",value:function(){return"fd"}},{key:"getValidateRule",value:function(e){switch(e){case"start":return t=this.core,{type:"object",required:!0,properties:g,validate:function(e,r,n,o){var i,a=t.errorModule,s=a.RtcError,u=a.ErrorCode,l=a.ErrorCodeDictionary,h=e.onFaceDetectionStateChanged;if(h&&!t.utils.isFunction(h))throw new s({code:u.INVALID_PARAMETER,extraCode:l.INVALID_PARAMETER_TYPE,fnName:n,messageParams:{key:"onFaceDetectionStateChanged",value:c(h),rule:{type:"Function"}}});if(!(null==(i=t.room.videoManager.cameraTrack)?void 0:i.mediaTrack))throw new s({code:u.INVALID_OPERATION,extraCode:l.INVALID_OPERATION_NEED_VIDEO,fnName:n})}};case"update":return function(e){return{type:"object",required:!0,properties:w,validate:function(t,r,n,o){var i,a=e.errorModule,s=a.RtcError,u=a.ErrorCode,l=a.ErrorCodeDictionary,h=t.onFaceDetectionStateChanged;if(h&&!e.utils.isFunction(h))throw new s({code:u.INVALID_PARAMETER,extraCode:l.INVALID_PARAMETER_TYPE,fnName:n,messageParams:{key:"onFaceDetectionStateChanged",value:c(h),rule:{type:"Function"}}});if(!(null==(i=e.room.videoManager.cameraTrack)?void 0:i.mediaTrack))throw new s({code:u.INVALID_OPERATION,extraCode:l.INVALID_OPERATION_NEED_VIDEO,fnName:n})}}}(this.core);case"stop":return this.core,{name:"StopFaceDetectionOptions",required:!1}}var t}},{key:"getCurrentStatus",value:function(){var e=this,t=this._visionTaskRegistry.getResult(this._faceDetectorHash).detections;this._visionTaskRegistry.resetHashResults();var r=t.length>0;if(r){var n,i=[],a=o(t);try{for(a.s();!(n=a.n()).done;){var s,c=o(n.value.categories);try{for(c.s();!(s=c.n()).done;){var u=s.value;i.push(u.score)}}catch(e){c.e(e)}finally{c.f()}}}catch(e){a.e(e)}finally{a.f()}r&&(r=!!i.find((function(t){return t>=e._minConfidence})))}return r}},{key:"detectFace",value:function(){var e=this.getCurrentStatus();this._startMissing&&Date.now()-this._startMissing>=this._missingTimeout&&e!==this._faceStatus?(this._onFaceDetectionStateChanged(e),this._faceStatus=e,this._startMissing=null):Date.now()-this._lastDetectTime>=this._detectionInterval&&(this._faceStatus!==e&&(e||0===this._missingTimeout?(this._onFaceDetectionStateChanged(e),this._faceStatus=e):this._startMissing||(this._startMissing=Date.now())),this._lastDetectTime=Date.now()),this._videoFrameCallBackId=this._video.requestVideoFrameCallback(this.detectFace.bind(this))}},{key:"initFaceDetection",value:(f=r(i().mark((function e(){var t;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,window.VisionTaskRegistry.getInstance();case 2:return this._visionTaskRegistry=e.sent,e.next=5,this._visionTaskRegistry.register(window.VisionTaskType.FaceDetector);case 5:if(t=e.sent){e.next=8;break}return e.abrupt("return");case 8:this._faceDetectorHash=t,this._visionTaskRegistry.setVideo(this._faceDetectorHash,this._video);case 10:case"end":return e.stop()}}),e,this)}))),function(){return f.apply(this,arguments)})},{key:"updateOptions",value:function(e){e.onFaceDetectionStateChanged&&(this._onFaceDetectionStateChanged=e.onFaceDetectionStateChanged),e.detectionInterval&&(this._detectionInterval=e.detectionInterval),e.minConfidence&&(this._minConfidence=e.minConfidence),(0===e.missingTimeout||e.missingTimeout)&&(this._missingTimeout=e.missingTimeout)}},{key:"start",value:(h=r(i().mark((function e(t){var r,n,o,a,s;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=this.core.errorModule,n=r.RtcError,o=r.ErrorCode,this.updateOptions(t),this.preLoadPromise){e.next=6;break}if(this.core.assetsPath){e.next=5;break}throw new n({code:o.INVALID_PARAMETER,message:"you need to deploy the assets of the npm package and set assetsPath param in TRTC.create()"});case 5:this.preLoadPromise=this.preload(this.core.assetsPath);case 6:return e.next=8,this.preLoadPromise;case 8:if(a=this.core.room.videoManager.cameraTrack,(s=null==a?void 0:a.player.element)&&s.srcObject){e.next=12;break}throw new n({code:o.DEVICE_ERROR,message:"please enable camera display to start detection"});case 12:return this._video=s,this.core.utils.isMediaStreamTrack(this._video.srcObject.getVideoTracks()[0])||(this._video.srcObject=new MediaStream([a.mediaTrack])),e.next=16,this.initFaceDetection().catch((function(e){throw new n({code:o.UNKNOWN_ERROR,message:e.message})}));case 16:this._videoFrameCallBackId=this._video.requestVideoFrameCallback(this.detectFace.bind(this)),a.on(this.core.enums.TrackEvent.MUTE,this.autoHandleMute,this),this.core.kvStatManager.addEnum({key:575700,value:1});case 19:case"end":return e.stop()}}),e,this)}))),function(e){return h.apply(this,arguments)})},{key:"autoHandleMute",value:function(){var e=this,t=this.core.room.videoManager.cameraTrack;this._faceStatus&&(this._faceStatus=!1,this._onFaceDetectionStateChanged(!1)),this._video.cancelVideoFrameCallback(this._videoFrameCallBackId),null==t||t.once(this.core.enums.TrackEvent.UNMUTE,(function(){e._videoFrameCallBackId=e._video.requestVideoFrameCallback(e.detectFace.bind(e))}))}},{key:"update",value:(l=r(i().mark((function e(t){return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this.updateOptions(t),this.core.kvStatManager.addEnum({key:575701,value:1});case 2:case"end":return e.stop()}}),e,this)}))),function(e){return l.apply(this,arguments)})},{key:"stop",value:(u=r(i().mark((function e(){var t;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this.resetState(),this._video.cancelVideoFrameCallback(this._videoFrameCallBackId),null==(t=this.core.room.videoManager.cameraTrack)||t.off(this.core.enums.TrackEvent.MUTE,this.autoHandleMute,this),this.core.kvStatManager.addEnum({key:575702,value:1});case 4:case"end":return e.stop()}}),e,this)}))),function(){return u.apply(this,arguments)})},{key:"destroy",value:function(){this.stop()}}],s=[{key:"isSupported",value:function(){if(ye<90)return!1;var e=document.createElement("canvas").getContext("webgl2");return!!(e&&e instanceof WebGL2RenderingContext)}}],a&&n(t.prototype,a),s&&n(t,s),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,a,s,u,l,h,f,d}();return y(_e,"Name","FaceDetection"),_e}));
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).FaceDetection=t()}(this,function(){"use strict";function e(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function t(e,t,r,n,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}function r(e){return function(){var r=this,n=arguments;return new Promise(function(o,i){var a=e.apply(r,n);function s(e){t(a,o,i,s,c,"next",e)}function c(e){t(a,o,i,s,c,"throw",e)}s(void 0)})}}function n(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,c(n.key),n)}}function o(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=l(e))||t){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function i(){
2
+ /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
3
+ var e,t,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function s(r,n,o,i){var s=n&&n.prototype instanceof u?n:u,l=Object.create(s.prototype);return a(l,"_invoke",function(r,n,o){var i,a,s,u=0,l=o||[],f=!1,d={p:0,n:0,v:e,a:h,f:h.bind(e,4),d:function(t,r){return i=t,a=0,s=e,d.n=r,c}};function h(r,n){for(a=r,s=n,t=0;!f&&u&&!o&&t<l.length;t++){var o,i=l[t],h=d.p,v=i[2];r>3?(o=v===n)&&(s=i[(a=i[4])?5:(a=3,3)],i[4]=i[5]=e):i[0]<=h&&((o=r<2&&h<i[1])?(a=0,d.v=n,d.n=i[1]):h<v&&(o=r<3||i[0]>n||n>v)&&(i[4]=r,i[5]=n,d.n=v,a=0))}if(o||r>1)return c;throw f=!0,n}return function(o,l,v){if(u>1)throw TypeError("Generator is already running");for(f&&1===l&&h(l,v),a=l,s=v;(t=a<2?e:s)||!f;){i||(a?a<3?(a>1&&(d.n=-1),h(a,s)):d.n=s:d.v=s);try{if(u=2,i){if(a||(o="next"),t=i[o]){if(!(t=t.call(i,s)))throw TypeError("iterator result is not an object");if(!t.done)return t;s=t.value,a<2&&(a=0)}else 1===a&&(t=i.return)&&t.call(i),a<2&&(s=TypeError("The iterator does not provide a '"+o+"' method"),a=1);i=e}else if((t=(f=d.n<0)?s:r.call(n,d))!==c)break}catch(t){i=e,a=1,s=t}finally{u=1}}return{value:t,done:f}}}(r,o,i),!0),l}var c={};function u(){}function l(){}function f(){}t=Object.getPrototypeOf;var d=[][n]?t(t([][n]())):(a(t={},n,function(){return this}),t),h=f.prototype=u.prototype=Object.create(d);function v(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,f):(e.__proto__=f,a(e,o,"GeneratorFunction")),e.prototype=Object.create(h),e}return l.prototype=f,a(h,"constructor",f),a(f,"constructor",l),l.displayName="GeneratorFunction",a(f,o,"GeneratorFunction"),a(h),a(h,o,"Generator"),a(h,n,function(){return this}),a(h,"toString",function(){return"[object Generator]"}),(i=function(){return{w:s,m:v}})()}function a(e,t,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}a=function(e,t,r,n){function i(t,r){a(e,t,function(e){return this._invoke(t,r,e)})}t?o?o(e,t,{value:r,enumerable:!n,configurable:!n,writable:!n}):e[t]=r:(i("next",0),i("throw",1),i("return",2))},a(e,t,r,n)}function s(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,u=!1;try{if(i=(r=r.call(e)).next,0===t);else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return s}}(e,t)||l(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t);if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof t?t:t+""}function u(e){return u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},u(e)}function l(t,r){if(t){if("string"==typeof t)return e(t,r);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?e(t,r):void 0}}var f=Object.defineProperty,d=Object.getOwnPropertySymbols,h=Object.prototype.hasOwnProperty,v=Object.prototype.propertyIsEnumerable,m=function(e,t,r){return t in e?f(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r},p=function(e,t){for(var r in t||(t={}))h.call(t,r)&&m(e,r,t[r]);if(d){var n,i=o(d(t));try{for(i.s();!(n=i.n()).done;){r=n.value;v.call(t,r)&&m(e,r,t[r])}}catch(e){i.e(e)}finally{i.f()}}return e},y=function(e,t,r){return m(e,"symbol"!==u(t)?t+"":t,r)},g={detectionInterval:{type:"number",required:!1,min:100,max:5e3},minConfidence:{type:"number",required:!1,min:0,max:1},missingTimeout:{type:"number",required:!1,min:0,max:5e3}},b=p({onFaceDetectionStateChanged:{required:!0}},g),w=p({onFaceDetectionStateChanged:{required:!1}},g);var _="undefined"==typeof navigator?"":navigator.userAgent,E=function(e){return new RegExp(e,"i").test(_)},S=function(e){if(E(e)){var t=new RegExp("".concat(e,"\\/([\\d.]+)")),r=_.match(t);if(r&&r[1])return r[1]}return""},k=function(e){if(E(e)){var t=new RegExp("".concat(e,"\\/(\\d+)")),r=_.match(t);if(r&&r[1])return parseFloat(r[1])}return NaN},T=/AppleWebKit\/([\d.]+)/i.exec(_);T&&parseFloat(T[1]);var C=E("iPad"),M="undefined"!=typeof navigator&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&E("Macintosh"),O=E("iPhone")&&!C,D=E("iPod"),F=O||C||D||M,I=E("Android");!function(){if(I){var e=_.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(e){var t=e[1]&&parseFloat(e[1]),r=e[2]&&parseFloat(e[2]);if(t&&r)return parseFloat("".concat(e[1],".").concat(e[2]));if(t)return t}}}();I&&E("webkit");var P=E("Firefox"),R=S("Firefox");k("Firefox");var A=E("Edge"),B=S("Edge"),N=E("Edg"),V=S("Edg");k("Edg");var x=E("SogouMobileBrowser"),Q=S("SogouMobileBrowser"),j=E("MetaSr\\s"),H=S("MetaSr\\s"),L=E("TBS"),q=S("TBS"),W=E("XWEB"),G=S("XWEB");E("MSIE\\s8\\.0");var U=E("MSIE\\/\\d+");!function(){if(U){var e=/MSIE\s(\d+)\.\d/.exec(_),t=e&&parseFloat(e[1]);return!t&&/Trident\/7.0/i.test(_)&&/rv:11.0/.test(_)&&(t=11),t}}();var X=E("(micromessenger|webbrowser)"),K=S("MicroMessenger"),Y=!L&&E("MQQBrowser")&&E("COVC"),$=!L&&E("MQQBrowser")&&!E("COVC"),z=$||Y?S("MQQBrowser"):"",J=!L&&E(" QQBrowser"),Z=S(" QQBrowser"),ee=!L&&E("QQBrowserLite"),te=S("QQBrowserLite"),re=!L&&E("MQBHD"),ne=S("MQBHD");E("Windows"),!F&&E("MAC OS X"),!I&&E("Linux"),E("CrOS"),E("MicroMessenger"),E("UCBrowser"),E("Electron");var oe=E("MiuiBrowser"),ie=S("MiuiBrowser"),ae=E("HuaweiBrowser");E("Huawei")||E("HUAWEI"),E("Honor")||E("HONOR");var se=S("HuaweiBrowser"),ce=E("SamsungBrowser"),ue=S("SamsungBrowser"),le=E("HeyTapBrowser"),fe=S("HeyTapBrowser"),de=E("VivoBrowser"),he=S("VivoBrowser");E("OpenHarmony"),S("OpenHarmony");var ve=E("CriOS"),me=E("Chrome"),pe=!A&&!j&&!x&&!L&&!W&&!N&&!J&&!oe&&!ae&&!ce&&!le&&!de&&me;E("HeadlessChrome");var ye=k("Chrome"),ge=S("Chrome");k("Electron");var be=!me&&!$&&!Y&&!ee&&!re&&E("Safari"),we=S("Version"),_e=function(){if(M)return we;if(F){var e=_.match(/OS (\d+)_(\d+)/i);if(e&&e[1]){var t=e[1];return e[2]&&(t+=".".concat(e[2])),t}}return""}();Number(_e.split(".")[0]),Number(_e.split(".")[0]),function(){var e=new Map([[P,["Firefox",R]],[N,["Edg",V]],[pe,["Chrome",ge]],[ve,["ChiOS",S("CriOS")]],[be&&!ve,["Safari",we]],[L,["TBS",q]],[W,["XWEB",G]],[X&&O,["WeChat",K]],[J,["QQ(Win)",Z]],[$,["QQ(Mobile)",z]],[Y,["QQ(Mobile X5)",z]],[ee,["QQ(Mac)",te]],[re,["QQ(iPad)",ne]],[oe,["MI",ie]],[ae,["HW",se]],[ce,["Samsung",ue]],[le,["OPPO",fe]],[de,["VIVO",he]],[A,["EDGE",B]],[x,["SogouMobile",Q]],[j,["Sogou",H]]]),t="unknown",r="unknown";if(e.has(!0)){var n=s(e.get(!0),2);t=n[0],r=n[1]}}();var Ee=0,Se=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.core=t,y(this,"seq"),y(this,"log"),y(this,"preLoadPromise"),y(this,"_faceDetectorHash"),y(this,"_visionTaskRegistry"),y(this,"_faceStatus",!1),y(this,"_startMissing"),y(this,"_minConfidence",.8),y(this,"_missingTimeout",1e3),y(this,"_detectionInterval",300),y(this,"_lastDetectTime",0),y(this,"_videoFrameCallBackId"),y(this,"_video"),y(this,"_onFaceDetectionStateChanged"),Ee+=1,this.seq=Ee,this.log=t.log.createChild({id:"".concat(this.getAlias()).concat(Ee)}),this.log.info("created"),t.assetsPath&&(this.preLoadPromise=this.preload(t.assetsPath))}return t=e,a=[{key:"resetState",value:function(){this._faceStatus=!1,this._startMissing=null,this._lastDetectTime=0}},{key:"preload",value:(h=r(i().m(function e(t){var r,n,o,a;return i().w(function(e){for(;;)switch(e.p=e.n){case 0:return e.p=0,e.n=1,this.core.initVisionTaskRegistry(t,["FaceDetector"]);case 1:e.n=3;break;case 2:throw e.p=2,a=e.v,r=this.core.errorModule,n=r.RtcError,o=r.ErrorCode,new n({code:o.INVALID_OPERATION,message:"FaceDetection preload error, please redeploy the assets of the npm package. detail: ".concat(a)});case 3:return e.a(2)}},e,this,[[0,2]])})),function(e){return h.apply(this,arguments)})},{key:"getGroup",value:function(){return"fd"}},{key:"getName",value:function(){return e.Name}},{key:"getAlias",value:function(){return"fd"}},{key:"getValidateRule",value:function(e){switch(e){case"start":return t=this.core,{type:"object",required:!0,properties:b,validate:function(e,r,n,o){var i,a=t.errorModule,s=a.RtcError,c=a.ErrorCode,l=a.ErrorCodeDictionary,f=e.onFaceDetectionStateChanged;if(f&&!t.utils.isFunction(f))throw new s({code:c.INVALID_PARAMETER,extraCode:l.INVALID_PARAMETER_TYPE,fnName:n,messageParams:{key:"onFaceDetectionStateChanged",value:u(f),rule:{type:"Function"}}});if(!(null==(i=t.room.videoManager.cameraTrack)?void 0:i.mediaTrack))throw new s({code:c.INVALID_OPERATION,extraCode:l.INVALID_OPERATION_NEED_VIDEO,fnName:n})}};case"update":return function(e){return{type:"object",required:!0,properties:w,validate:function(t,r,n,o){var i,a=e.errorModule,s=a.RtcError,c=a.ErrorCode,l=a.ErrorCodeDictionary,f=t.onFaceDetectionStateChanged;if(f&&!e.utils.isFunction(f))throw new s({code:c.INVALID_PARAMETER,extraCode:l.INVALID_PARAMETER_TYPE,fnName:n,messageParams:{key:"onFaceDetectionStateChanged",value:u(f),rule:{type:"Function"}}});if(!(null==(i=e.room.videoManager.cameraTrack)?void 0:i.mediaTrack))throw new s({code:c.INVALID_OPERATION,extraCode:l.INVALID_OPERATION_NEED_VIDEO,fnName:n})}}}(this.core);case"stop":return this.core,{name:"StopFaceDetectionOptions",required:!1}}var t}},{key:"getCurrentStatus",value:function(){var e=this,t=this._visionTaskRegistry.getResult(this._faceDetectorHash).detections;this._visionTaskRegistry.resetHashResults();var r=t.length>0;if(r){var n,i=[],a=o(t);try{for(a.s();!(n=a.n()).done;){var s,c=o(n.value.categories);try{for(c.s();!(s=c.n()).done;){var u=s.value;i.push(u.score)}}catch(e){c.e(e)}finally{c.f()}}}catch(e){a.e(e)}finally{a.f()}r&&(r=!!i.find(function(t){return t>=e._minConfidence}))}return r}},{key:"detectFace",value:function(){var e=this.getCurrentStatus();this._startMissing&&Date.now()-this._startMissing>=this._missingTimeout&&e!==this._faceStatus?(this._onFaceDetectionStateChanged(e),this._faceStatus=e,this._startMissing=null):Date.now()-this._lastDetectTime>=this._detectionInterval&&(this._faceStatus!==e&&(e||0===this._missingTimeout?(this._onFaceDetectionStateChanged(e),this._faceStatus=e):this._startMissing||(this._startMissing=Date.now())),this._lastDetectTime=Date.now()),this._video&&(this._videoFrameCallBackId=this._video.requestVideoFrameCallback(this.detectFace.bind(this)))}},{key:"initFaceDetection",value:(d=r(i().m(function e(){var t;return i().w(function(e){for(;;)switch(e.n){case 0:return e.n=1,window.VisionTaskRegistry.getInstance();case 1:return this._visionTaskRegistry=e.v,e.n=2,this._visionTaskRegistry.register(window.VisionTaskType.FaceDetector);case 2:if(t=e.v){e.n=3;break}return e.a(2);case 3:this._faceDetectorHash=t,this._video&&this._visionTaskRegistry.setVideo(this._faceDetectorHash,this._video);case 4:return e.a(2)}},e,this)})),function(){return d.apply(this,arguments)})},{key:"updateOptions",value:function(e){e.onFaceDetectionStateChanged&&(this._onFaceDetectionStateChanged=e.onFaceDetectionStateChanged),e.detectionInterval&&(this._detectionInterval=e.detectionInterval),e.minConfidence&&(this._minConfidence=e.minConfidence),(0===e.missingTimeout||e.missingTimeout)&&(this._missingTimeout=e.missingTimeout)}},{key:"start",value:(f=r(i().m(function e(t){var r,n,o,a,s,c;return i().w(function(e){for(;;)switch(e.n){case 0:if(r=this.core.errorModule,n=r.RtcError,o=r.ErrorCode,this.updateOptions(t),this.preLoadPromise){e.n=2;break}if(this.core.assetsPath){e.n=1;break}throw new n({code:o.INVALID_PARAMETER,message:"you need to deploy the assets of the npm package and set assetsPath param in TRTC.create()"});case 1:this.preLoadPromise=this.preload(this.core.assetsPath);case 2:return e.n=3,this.preLoadPromise;case 3:if(a=this.core.room.videoManager.cameraTrack){e.n=4;break}throw new n({code:o.DEVICE_ERROR,message:"please enable camera display to start detection"});case 4:return s=this.core.VideoPlayer,(c=new s({id:"fd",track:a.mediaTrack,muted:!1,container:null,log:this.core.log})).play(),this._video=c.element,e.n=5,this.initFaceDetection().catch(function(e){throw new n({code:o.UNKNOWN_ERROR,message:e.message})});case 5:this._videoFrameCallBackId=this._video.requestVideoFrameCallback(this.detectFace.bind(this)),a.on(this.core.enums.TrackEvent.MUTE,this.autoHandleMute,this),this.core.kvStatManager.addEnum({key:575700,value:1});case 6:return e.a(2)}},e,this)})),function(e){return f.apply(this,arguments)})},{key:"autoHandleMute",value:function(){var e,t=this,r=this.core.room.videoManager.cameraTrack;this._faceStatus&&(this._faceStatus=!1,this._onFaceDetectionStateChanged(!1)),null==(e=this._video)||e.cancelVideoFrameCallback(this._videoFrameCallBackId),null==r||r.once(this.core.enums.TrackEvent.UNMUTE,function(){t._video&&(t._videoFrameCallBackId=t._video.requestVideoFrameCallback(t.detectFace.bind(t)))})}},{key:"update",value:(l=r(i().m(function e(t){return i().w(function(e){for(;;)switch(e.n){case 0:this.updateOptions(t),this.core.kvStatManager.addEnum({key:575701,value:1});case 1:return e.a(2)}},e,this)})),function(e){return l.apply(this,arguments)})},{key:"stop",value:(c=r(i().m(function e(){var t,r;return i().w(function(e){for(;;)switch(e.n){case 0:this.resetState(),null==(t=this._video)||t.cancelVideoFrameCallback(this._videoFrameCallBackId),null==(r=this.core.room.videoManager.cameraTrack)||r.off(this.core.enums.TrackEvent.MUTE,this.autoHandleMute,this),this.core.kvStatManager.addEnum({key:575702,value:1});case 1:return e.a(2)}},e,this)})),function(){return c.apply(this,arguments)})},{key:"destroy",value:function(){this.stop()}}],s=[{key:"isSupported",value:function(){if(ye<90)return!1;var e=document.createElement("canvas").getContext("webgl2");return!!(e&&e instanceof WebGL2RenderingContext)}}],a&&n(t.prototype,a),s&&n(t,s),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,a,s,c,l,f,d,h}();return y(Se,"Name","FaceDetection"),Se});
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rtc-plugin/face-detection",
3
- "version": "5.15.0-wasm.1",
3
+ "version": "5.15.0",
4
4
  "description": "TRTC Web SDK 5.x face detection plugin",
5
5
  "main": "./face-detection.esm.js",
6
6
  "module": "./face-detection.esm.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rtc-plugin/video-mixer",
3
- "version": "5.15.0-wasm.1",
3
+ "version": "5.15.0",
4
4
  "description": "TRTC Web SDK 5.x videoMixer plugin",
5
5
  "main": "./video-mixer.esm.js",
6
6
  "module": "./video-mixer.esm.js",
@@ -1 +1 @@
1
- var __defProp=Object.defineProperty,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,i,t)=>i in e?__defProp(e,i,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[i]=t,__spreadValues=(e,i)=>{for(var t in i||(i={}))__hasOwnProp.call(i,t)&&__defNormalProp(e,t,i[t]);if(__getOwnPropSymbols)for(var t of __getOwnPropSymbols(i))__propIsEnum.call(i,t)&&__defNormalProp(e,t,i[t]);return e},__publicField=(e,i,t)=>__defNormalProp(e,"symbol"!=typeof i?i+"":i,t),layoutProperty={x:{required:!0,type:"number"},y:{required:!0,type:"number"},width:{required:!0,type:"number",notLessThanZero:!0,min:1,max:3840},height:{required:!0,type:"number",notLessThanZero:!0,min:1,max:3840},zIndex:{required:!0,type:"number"},fillMode:{required:!1,type:"string"},mirror:{required:!1,type:"boolean"},rotation:{required:!1,type:"number"},hidden:{required:!1,type:"boolean"}},canvasValidateRule=(e,i=!1)=>({type:"object",required:i,properties:{canvasColor:{required:!1,type:["string",CanvasGradient,CanvasPattern]},width:{required:!0,type:"number",notLessThanZero:!0,min:1,max:3840},height:{required:!0,type:"number",notLessThanZero:!0,min:1,max:3840},frameRate:{required:!1,type:"number",notLessThanZero:!0,min:1,max:60}},validate(i,t,r){const{RtcError:a,ErrorCode:o,ErrorCodeDictionary:s}=e.errorModule;if(!i)return;const{width:n,height:d}=i;if(n&&d&&n*d>8294400)throw new a({code:o.INVALID_PARAMETER,message:"The mix resolution cannot be set higher than 3840 * 2160."})}}),viewValidateRule=e=>({required:!1,type:["string",HTMLElement,null],validate(i,t,r){const{RtcError:a,ErrorCode:o,ErrorCodeDictionary:s}=e.errorModule;if(e.utils.isString(i)){if(!document.getElementById(i))throw new a({code:o.INVALID_PARAMETER,extraCode:s.INVALID_ELEMENT_ID,fnName:r,messageParams:{key:t}})}}}),layoutValidateRule=(e,i=!0)=>({type:"object",required:i,properties:__spreadValues({},layoutProperty),validate(i,t,r){const{RtcError:a,ErrorCode:o,ErrorCodeDictionary:s}=e.errorModule;if(i){if(i.fillMode&&!["contain","cover","fill"].includes(i.fillMode))throw new a({code:o.INVALID_PARAMETER,extraCode:s.INVALID_PARAMETER_TYPE,message:"The fillMode parameter must be 'contain', 'cover' or 'fill'",fnName:r});if(i.rotation&&![0,90,180,270].includes(i.rotation))throw new a({code:o.INVALID_PARAMETER,extraCode:s.INVALID_PARAMETER_TYPE,message:"The rotation parameter must be 0, 90, 180 or 270",fnName:r})}}}),cameraValidateRule=e=>({type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},cameraId:{required:!1,type:"string"},videoTrack:{required:!1,instanceof:MediaStreamTrack},profile:{required:!1,type:["string","object"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},layout:__spreadValues({},layoutValidateRule(e))}}}),screenValidateRule=e=>({type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},profile:{required:!1,type:["string","object"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},captureElement:{required:!1,type:HTMLElement},preferDisplaySurface:{required:!1,type:"string"},layout:__spreadValues({},layoutValidateRule(e))},validate(i,t,r){const{RtcError:a,ErrorCode:o,ErrorCodeDictionary:s}=e.errorModule;if(!e.rtcDectection.isScreenCaptureApiAvailable())throw new a({code:o.ENV_NOT_SUPPORTED,fnName:r,extraCode:s.NOT_SUPPORTED_SCREEN_SHARE})}}}),textValidateRule=e=>({type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},content:{required:!0,type:"string"},font:{required:!1,type:"string"},color:{required:!1,type:["string",CanvasGradient,CanvasPattern]},layout:__spreadValues({},layoutValidateRule(e))}}}),imageValidateRule=e=>({type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},url:{required:!0,type:"string"},layout:__spreadValues({},layoutValidateRule(e))}}}),videoValidateRule=e=>({type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},url:{required:!0,type:"string"},layout:__spreadValues({},layoutValidateRule(e))}}});function startValidateRule(e){return{name:"VideoMixerOptions",type:"object",required:!0,allowEmpty:!1,properties:{view:__spreadValues({},viewValidateRule(e)),canvasInfo:__spreadValues({},canvasValidateRule(e,!0)),camera:__spreadValues({},cameraValidateRule(e)),screen:__spreadValues({},screenValidateRule(e)),text:__spreadValues({},textValidateRule(e)),image:__spreadValues({},imageValidateRule(e)),video:__spreadValues({},videoValidateRule(e))},validate(i,t,r,a){const{RtcError:o,ErrorCode:s,ErrorCodeDictionary:n}=e.errorModule;if(e.environment.isMobile())throw new o({code:s.ENV_NOT_SUPPORTED,message:"VideoMixer is not supported on mobile devices currently"});const{onScreenShareStop:d}=i;if(d&&!e.utils.isFunction(d))throw new o({code:s.INVALID_PARAMETER,extraCode:n.INVALID_PARAMETER_TYPE,fnName:r,messageParams:{key:"onScreenShareStop",value:typeof d,rule:{type:"Function"}}})}}}function updateValidateRule(e){return{name:"VideoMixerOptions",type:"object",required:!1,allowEmpty:!1,properties:{view:__spreadValues({},viewValidateRule(e)),canvasInfo:__spreadValues({},canvasValidateRule(e)),camera:__spreadValues({},cameraValidateRule(e)),screen:__spreadValues({},screenValidateRule(e)),text:__spreadValues({},textValidateRule(e)),image:__spreadValues({},imageValidateRule(e)),video:__spreadValues({},videoValidateRule(e))}}}function stopValidateRule(e){return{name:"StopVideoMixerOptions",required:!1}}var videoMixSeq=0,_VideoMixer=class e{constructor(e){this.core=e,__publicField(this,"seq"),__publicField(this,"log"),__publicField(this,"localMixVideoTrack",null),__publicField(this,"systemAudioTrackList",{}),__publicField(this,"_mixVideoConfig"),__publicField(this,"onScreenShareStop"),videoMixSeq+=1,this.seq=videoMixSeq,this.log=e.log.createChild({id:`${this.getAlias()}${videoMixSeq}`}),this.log.info("created")}getName(){return e.Name}getAlias(){return"vmix"}getValidateRule(e){switch(e){case"start":return startValidateRule(this.core);case"update":return updateValidateRule(this.core);case"stop":return stopValidateRule(this.core)}}getGroup(){return"vmix"}async start(e){this.localMixVideoTrack||(this.localMixVideoTrack=new this.core.LocalMixVideoTrack(this.core.room.videoManager)),this._mixVideoConfig={canvasInfo:{width:1920,height:1080}},e=this.core.utils.deepCloneBasic(e);const{view:i,onScreenShareStop:t}=e,r=await this.parseMixOptions(e);return t&&(this.onScreenShareStop=t,this._mixVideoConfig.onScreenShareStop=t),this._updatePreview({view:i,track:this.localMixVideoTrack}),this.core.utils.isUndefined(i)||(this._mixVideoConfig.view=i),await this.localMixVideoTrack.startMix(),{track:this.localMixVideoTrack._outputTrack,systemAudioTrackList:this.systemAudioTrackList,result:r}}async update(e){const{RtcError:i,ErrorCode:t}=this.core.errorModule;if(!this.localMixVideoTrack)throw new i({code:t.INVALID_OPERATION,message:"mixTrack doesn't initialize!"});e=this.core.utils.deepCloneBasic(e);const{view:r}=e,a=await this.parseMixOptions(e);return await this._updatePreview({view:r,track:this.localMixVideoTrack,prevConfig:this._mixVideoConfig}),this.core.utils.isUndefined(r)||(this._mixVideoConfig.view=r),{track:this.localMixVideoTrack._outputTrack,systemAudioTrackList:this.systemAudioTrackList,result:a}}async parseMixOptions(e){let i={successOptions:{},failedDetails:[]};const{RtcError:t,ErrorCode:r,ErrorCodeDictionary:a}=this.core.errorModule;if(!this.localMixVideoTrack||!this._mixVideoConfig)return i;const o=[],s=__spreadValues({},e),{canvasInfo:n,camera:d,screen:l,text:c,image:u,video:p}=e;let h=0,m=0;if(n){const{canvasColor:e,width:i,height:t,frameRate:r}=n;e&&this.localMixVideoTrack.setMixBackground(e),r&&this.localMixVideoTrack.setFps(r),this.localMixVideoTrack.resizeMixCanvas(i,t),this._mixVideoConfig.canvasInfo=n}if(d){h++;const{finalOptions:e,errors:i}=await this.parseCameraOptions(this.localMixVideoTrack,d,this._mixVideoConfig.camera);this._mixVideoConfig.camera=e,s.camera=e,i.length>0&&(o.push(...i),i.length===d.length&&m++)}if(l){h++;const{finalOptions:e,errors:i}=await this.parseScreenOptions(this.localMixVideoTrack,l,this._mixVideoConfig.screen);this._mixVideoConfig.screen=e,s.screen=e,i.length>0&&(o.push(...i),i.length===l.length&&m++)}if(c){h++;const{finalOptions:e,errors:i}=await this.parseTextOptions(this.localMixVideoTrack,c,this._mixVideoConfig.text);this._mixVideoConfig.text=e,s.text=e,i.length>0&&(o.push(...i),i.length===c.length&&m++)}if(u){h++;const{finalOptions:e,errors:i}=await this.parseImageOptions(this.localMixVideoTrack,u,this._mixVideoConfig.image);this._mixVideoConfig.image=e,s.image=e,i.length>0&&(o.push(...i),i.length===u.length&&m++)}if(p){h++;const{finalOptions:e,errors:i}=await this.parseVideoOptions(this.localMixVideoTrack,p,this._mixVideoConfig.video);this._mixVideoConfig.video=e,s.video=e,i.length>0&&(o.push(...i),i.length===p.length&&m++)}if(m>0&&m===h)throw new t({code:r.INVALID_PARAMETER,message:"all sources mix failed",data:{failedDetails:o}});return i={successOptions:s,failedDetails:o},i}async parseCameraOptions(e,i,t=[]){var r,a;const o=new Set(i.map((e=>e.id))),s=t.filter((e=>!o.has(e.id))).map((e=>e.id));for(const i of s)e.removeCameraSource(i);const n=new Map(t.map((e=>[e.id,e]))),d=[],l=[];for(const t of i){const{id:i,layout:o,profile:s}=t;try{if(e.inputLocalVideoTracks.has(i)){const n=null==(r=e.inputLocalVideoTracks.get(i))?void 0:r.mediaTrack;await this.updateCameraProfile(t);const d=null==(a=e.inputLocalVideoTracks.get(i))?void 0:a.mediaTrack;let l;s&&(l=this.core.utils.isString(s)?this.core.constants.videoProfileMap[s]:s),d!==n?e.updateCameraSource(i,o,d,l):e.updateCameraSource(i,o,null,l)}else{const r=await this.captureCamera(t);try{e.addCameraSource(i,r,o)}catch(e){throw r.close(),e}}d.push(t)}catch(e){l.push({id:i,error:e}),n.has(i)&&d.push(n.get(i))}}return{finalOptions:d,errors:l}}async parseScreenOptions(e,i,t=[]){const r=new Set(i.map((e=>e.id))),a=t.filter((e=>!r.has(e.id))).map((e=>e.id));for(const i of a)e.removeScreenSource(i);const o=new Map(t.map((e=>[e.id,e]))),s=[],n=[];for(const t of i){const{id:i,layout:r}=t;try{if(e.inputLocalScreenTracks.has(i))e.updateScreenSource(i,r);else{const a=await this.captureScreen(t);try{e.addScreenSource(i,a,r)}catch(e){throw a.close(),e}}s.push(t)}catch(e){n.push({id:i,error:e}),o.has(i)&&s.push(o.get(i))}}return{finalOptions:s,errors:n}}async parseTextOptions(e,i,t=[]){const r=new Set(i.map((e=>e.id))),a=t.filter((e=>!r.has(e.id))).map((e=>e.id));for(const i of a)e.removeTextSource(i);const o=new Map(t.map((e=>[e.id,e]))),s=[],n=[];for(const r of i){const{id:i}=r;try{t.some((e=>e.id===i))?e.updateTextSource(r):e.addTextSource(r),s.push(r)}catch(e){n.push({id:i,error:e}),o.has(i)&&s.push(o.get(i))}}return{finalOptions:s,errors:n}}async parseImageOptions(e,i,t=[]){const r=new Set(i.map((e=>e.id))),a=t.filter((e=>!r.has(e.id))).map((e=>e.id));for(const i of a)e.removeImageSource(i);const o=new Map(t.map((e=>[e.id,e]))),s=[],n=[];for(const r of i){const{id:i,url:a,layout:d}=r;try{const o=t.find((e=>e.id===i));if(o){let t;o.url!==a&&(t=await this.core.utils.loadImage(a)),e.updateImageSource(i,d,t)}else{const t=await this.core.utils.loadImage(a);e.addImageSource(i,t,d)}s.push(r)}catch(e){n.push({id:i,error:e}),o.has(i)&&s.push(o.get(i))}}return{finalOptions:s,errors:n}}async parseVideoOptions(e,i,t=[]){const r=new Set(i.map((e=>e.id))),a=t.filter((e=>!r.has(e.id))).map((e=>e.id));for(const i of a)e.removeVideoSource(i);const o=new Map(t.map((e=>[e.id,e]))),s=[],n=[];for(const r of i){const{id:i,url:a,layout:d}=r;try{const o=t.find((e=>e.id===i));let n;if(o)o.url!==a&&(n=await this.core.utils.loadVideo(a)),e.updateVideoSource(i,d,n);else{const t=await this.core.utils.loadVideo(a);e.addVideoSource(i,t,d)}s.push(r)}catch(e){n.push({id:i,error:e}),o.has(i)&&s.push(o.get(i))}}return{finalOptions:s,errors:n}}async captureCamera(e){const{id:i,cameraId:t,videoTrack:r,profile:a}=e,o=new this.core.LocalVideoTrack;o.log.id+=`-${i}`;const s={};return t?s.deviceId=t:this.core.utils.isUndefined(r)||(s.customSource=r),this.core.utils.isUndefined(a)||(this.core.utils.isString(a)?this.core.constants.videoProfileMap[a]&&o.setProfile(this.core.constants.videoProfileMap[a]):o.setProfile(a)),await o.capture(s),o}async updateCameraProfile(e){var i;const{id:t,cameraId:r,videoTrack:a,profile:o}=e,s=null==(i=this.localMixVideoTrack)?void 0:i.inputLocalVideoTracks.get(t);s&&(r?await s.switchDevice(r):this.core.utils.isUndefined(a)||await s.setInputMediaStreamTrack(a),this.core.utils.isUndefined(o)||(this.core.utils.isString(o)?this.core.constants.videoProfileMap[o]&&s.setProfile(this.core.constants.videoProfileMap[o]):s.setProfile(o),r&&s.isNeedToSwitchDevice(r)||await s.applyProfile()))}async captureScreen(e){const{id:i,profile:t,captureElement:r,preferDisplaySurface:a}=e,o=new this.core.LocalScreenTrack;o.log.id+=`-${i}`;const s={};this.core.utils.isUndefined(t)||(this.core.utils.isString(t)?this.core.constants.screenProfileMap[t]&&o.setProfile(this.core.constants.screenProfileMap[t]):o.setProfile(t)),r&&(s.captureElement=r),a&&(s.preferDisplaySurface=a),s.systemAudio=e.systemAudio;const n=await o.capture(s);return s.systemAudio&&n.getAudioTracks().length>0&&(this.systemAudioTrackList[i]=n.getAudioTracks()[0]),o.mediaTrack.addEventListener(this.core.constants.NAME.ENDED,(()=>{var e,t,r;null==(e=this.localMixVideoTrack)||e.removeScreenSource(i),(null==(t=this._mixVideoConfig)?void 0:t.screen)&&(this._mixVideoConfig.screen=this._mixVideoConfig.screen.filter((e=>e.id!==i))),null==(r=this.onScreenShareStop)||r.call(this,i)})),o}async _updatePreview({view:e,track:i,prevConfig:t}){if(this.core.utils.isUndefined(e)&&t&&t.view){const e=this.core.utils.getViewListFromView(t.view);e.length>0&&await i.play(e)}if(!this.core.utils.isUndefined(e)){const t=this.core.utils.getViewListFromView(e);t.length>0?await i.play(t):i.stop()}}stop(){var e;null==(e=this.localMixVideoTrack)||e.close(),this.localMixVideoTrack=null,delete this.onScreenShareStop,delete this._mixVideoConfig}};__publicField(_VideoMixer,"Name","VideoMixer");var VideoMixer=_VideoMixer,index_default=VideoMixer;export{index_default as default};export{VideoMixer};
1
+ var __defProp=Object.defineProperty,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,i,r)=>i in e?__defProp(e,i,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[i]=r,__spreadValues=(e,i)=>{for(var r in i||(i={}))__hasOwnProp.call(i,r)&&__defNormalProp(e,r,i[r]);if(__getOwnPropSymbols)for(var r of __getOwnPropSymbols(i))__propIsEnum.call(i,r)&&__defNormalProp(e,r,i[r]);return e},__publicField=(e,i,r)=>__defNormalProp(e,"symbol"!=typeof i?i+"":i,r),layoutProperty={x:{required:!0,type:"number"},y:{required:!0,type:"number"},width:{required:!0,type:"number",notLessThanZero:!0,min:1,max:3840},height:{required:!0,type:"number",notLessThanZero:!0,min:1,max:3840},zIndex:{required:!0,type:"number"},fillMode:{required:!1,type:"string"},mirror:{required:!1,type:"boolean"},rotation:{required:!1,type:"number"},hidden:{required:!1,type:"boolean"}},canvasValidateRule=(e,i=!1)=>({type:"object",required:i,properties:{canvasColor:{required:!1,type:["string",CanvasGradient,CanvasPattern]},width:{required:!0,type:"number",notLessThanZero:!0,min:1,max:3840},height:{required:!0,type:"number",notLessThanZero:!0,min:1,max:3840},frameRate:{required:!1,type:"number",notLessThanZero:!0,min:1,max:60}},validate(i,r,t){const{RtcError:o,ErrorCode:a,ErrorCodeDictionary:s}=e.errorModule;if(!i)return;const{width:n,height:c}=i;if(n&&c&&n*c>8294400)throw new o({code:a.INVALID_PARAMETER,message:"The mix resolution cannot be set higher than 3840 * 2160."})}}),viewValidateRule=e=>({required:!1,type:["string",HTMLElement,null],validate(i,r,t){const{RtcError:o,ErrorCode:a,ErrorCodeDictionary:s}=e.errorModule;if(e.utils.isString(i)){if(!document.getElementById(i))throw new o({code:a.INVALID_PARAMETER,extraCode:s.INVALID_ELEMENT_ID,fnName:t,messageParams:{key:r}})}}}),layoutValidateRule=(e,i=!0)=>({type:"object",required:i,properties:__spreadValues({},layoutProperty),validate(i,r,t){const{RtcError:o,ErrorCode:a,ErrorCodeDictionary:s}=e.errorModule;if(i){if(i.fillMode&&!["contain","cover","fill"].includes(i.fillMode))throw new o({code:a.INVALID_PARAMETER,extraCode:s.INVALID_PARAMETER_TYPE,message:"The fillMode parameter must be 'contain', 'cover' or 'fill'",fnName:t});if(i.rotation&&![0,90,180,270].includes(i.rotation))throw new o({code:a.INVALID_PARAMETER,extraCode:s.INVALID_PARAMETER_TYPE,message:"The rotation parameter must be 0, 90, 180 or 270",fnName:t})}}}),cameraValidateRule=e=>({type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},cameraId:{required:!1,type:"string"},videoTrack:{required:!1,instanceof:MediaStreamTrack},profile:{required:!1,type:["string","object"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},layout:__spreadValues({},layoutValidateRule(e))}}}),screenValidateRule=e=>({type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},profile:{required:!1,type:["string","object"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},captureElement:{required:!1,type:HTMLElement},preferDisplaySurface:{required:!1,type:"string"},layout:__spreadValues({},layoutValidateRule(e))},validate(i,r,t){const{RtcError:o,ErrorCode:a,ErrorCodeDictionary:s}=e.errorModule;if(!e.rtcDectection.isScreenCaptureApiAvailable())throw new o({code:a.ENV_NOT_SUPPORTED,fnName:t,extraCode:s.NOT_SUPPORTED_SCREEN_SHARE})}}}),textValidateRule=e=>({type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},content:{required:!0,type:"string"},font:{required:!1,type:"string"},color:{required:!1,type:["string",CanvasGradient,CanvasPattern]},layout:__spreadValues({},layoutValidateRule(e))}}}),imageValidateRule=e=>({type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},url:{required:!0,type:"string"},layout:__spreadValues({},layoutValidateRule(e))}}}),videoValidateRule=e=>({type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},url:{required:!0,type:"string"},layout:__spreadValues({},layoutValidateRule(e))}}});function startValidateRule(e){return{name:"VideoMixerOptions",type:"object",required:!0,allowEmpty:!1,properties:{view:__spreadValues({},viewValidateRule(e)),canvasInfo:__spreadValues({},canvasValidateRule(e,!0)),camera:__spreadValues({},cameraValidateRule(e)),screen:__spreadValues({},screenValidateRule(e)),text:__spreadValues({},textValidateRule(e)),image:__spreadValues({},imageValidateRule(e)),video:__spreadValues({},videoValidateRule(e))},validate(i,r,t,o){const{RtcError:a,ErrorCode:s,ErrorCodeDictionary:n}=e.errorModule;if(e.environment.isMobile())throw new a({code:s.ENV_NOT_SUPPORTED,message:"VideoMixer is not supported on mobile devices currently"});const{onScreenShareStop:c}=i;if(c&&!e.utils.isFunction(c))throw new a({code:s.INVALID_PARAMETER,extraCode:n.INVALID_PARAMETER_TYPE,fnName:t,messageParams:{key:"onScreenShareStop",value:typeof c,rule:{type:"Function"}}})}}}function updateValidateRule(e){return{name:"VideoMixerOptions",type:"object",required:!1,allowEmpty:!1,properties:{view:__spreadValues({},viewValidateRule(e)),canvasInfo:__spreadValues({},canvasValidateRule(e)),camera:__spreadValues({},cameraValidateRule(e)),screen:__spreadValues({},screenValidateRule(e)),text:__spreadValues({},textValidateRule(e)),image:__spreadValues({},imageValidateRule(e)),video:__spreadValues({},videoValidateRule(e))}}}function stopValidateRule(e){return{name:"StopVideoMixerOptions",required:!1}}var videoMixSeq=0,_VideoMixer=class e{constructor(e){this.core=e,__publicField(this,"seq"),__publicField(this,"log"),__publicField(this,"localMixVideoTrack",null),__publicField(this,"systemAudioTrackList",{}),__publicField(this,"_mixVideoConfig"),__publicField(this,"onScreenShareStop"),videoMixSeq+=1,this.seq=videoMixSeq,this.log=e.log.createChild({id:`${this.getAlias()}${videoMixSeq}`}),this.log.info("created")}getName(){return e.Name}getAlias(){return"vmix"}getValidateRule(e){switch(e){case"start":return startValidateRule(this.core);case"update":return updateValidateRule(this.core);case"stop":return stopValidateRule(this.core)}}getGroup(){return"vmix"}async start(e){this.localMixVideoTrack||(this.localMixVideoTrack=new this.core.LocalMixVideoTrack(this.core.room.videoManager)),this._mixVideoConfig={canvasInfo:{width:1920,height:1080}},e=this.core.utils.deepCloneBasic(e);const{view:i,onScreenShareStop:r}=e,t=await this.parseMixOptions(e);return r&&(this.onScreenShareStop=r,this._mixVideoConfig.onScreenShareStop=r),this._updatePreview({view:i,track:this.localMixVideoTrack}),this.core.utils.isUndefined(i)||(this._mixVideoConfig.view=i),await this.localMixVideoTrack.startMix(),{track:this.localMixVideoTrack._outputTrack,systemAudioTrackList:this.systemAudioTrackList,result:t}}async update(e){const{RtcError:i,ErrorCode:r}=this.core.errorModule;if(!this.localMixVideoTrack)throw new i({code:r.INVALID_OPERATION,message:"mixTrack doesn't initialize!"});e=this.core.utils.deepCloneBasic(e);const{view:t}=e,o=await this.parseMixOptions(e);return await this._updatePreview({view:t,track:this.localMixVideoTrack,prevConfig:this._mixVideoConfig}),this.core.utils.isUndefined(t)||(this._mixVideoConfig.view=t),{track:this.localMixVideoTrack._outputTrack,systemAudioTrackList:this.systemAudioTrackList,result:o}}async parseMixOptions(e){let i={successOptions:{},failedDetails:[]};const{RtcError:r,ErrorCode:t,ErrorCodeDictionary:o}=this.core.errorModule;if(!this.localMixVideoTrack||!this._mixVideoConfig)return i;const a=[],s=__spreadValues({},e),{canvasInfo:n,camera:c,screen:d,text:l,image:u,video:p}=e;let h=0,m=0;if(n){const{canvasColor:e,width:i,height:r,frameRate:t}=n;e&&this.localMixVideoTrack.setMixBackground(e),t&&this.localMixVideoTrack.setFps(t),this.localMixVideoTrack.resizeMixCanvas(i,r),this._mixVideoConfig.canvasInfo=n}if(c){h++;const{finalOptions:e,errors:i}=await this.parseCameraOptions(this.localMixVideoTrack,c,this._mixVideoConfig.camera);this._mixVideoConfig.camera=e,s.camera=e,i.length>0&&(a.push(...i),i.length===c.length&&m++)}if(d){h++;const{finalOptions:e,errors:i}=await this.parseScreenOptions(this.localMixVideoTrack,d,this._mixVideoConfig.screen);this._mixVideoConfig.screen=e,s.screen=e,i.length>0&&(a.push(...i),i.length===d.length&&m++)}if(l){h++;const{finalOptions:e,errors:i}=await this.parseTextOptions(this.localMixVideoTrack,l,this._mixVideoConfig.text);this._mixVideoConfig.text=e,s.text=e,i.length>0&&(a.push(...i),i.length===l.length&&m++)}if(u){h++;const{finalOptions:e,errors:i}=await this.parseImageOptions(this.localMixVideoTrack,u,this._mixVideoConfig.image);this._mixVideoConfig.image=e,s.image=e,i.length>0&&(a.push(...i),i.length===u.length&&m++)}if(p){h++;const{finalOptions:e,errors:i}=await this.parseVideoOptions(this.localMixVideoTrack,p,this._mixVideoConfig.video);this._mixVideoConfig.video=e,s.video=e,i.length>0&&(a.push(...i),i.length===p.length&&m++)}if(m>0&&m===h)throw new r({code:t.INVALID_PARAMETER,message:"all sources mix failed",data:{failedDetails:a}});return i={successOptions:s,failedDetails:a},i}async parseCameraOptions(e,i,r=[]){var t,o;const a=new Set(i.map(e=>e.id)),s=r.filter(e=>!a.has(e.id)).map(e=>e.id);for(const i of s)e.removeCameraSource(i);const n=new Map(r.map(e=>[e.id,e])),c=[],d=[];for(const r of i){const{id:i,layout:a,profile:s}=r;try{if(e.inputLocalVideoTracks.has(i)){const n=null==(t=e.inputLocalVideoTracks.get(i))?void 0:t.mediaTrack;await this.updateCameraProfile(r);const c=null==(o=e.inputLocalVideoTracks.get(i))?void 0:o.mediaTrack;let d;s&&(d=this.core.utils.isString(s)?this.core.constants.videoProfileMap[s]:s),c!==n?e.updateCameraSource(i,a,c,d):e.updateCameraSource(i,a,null,d)}else{const t=await this.captureCamera(r);try{e.addCameraSource(i,t,a)}catch(e){throw t.close(),e}}c.push(r)}catch(e){d.push({id:i,error:e}),n.has(i)&&c.push(n.get(i))}}return{finalOptions:c,errors:d}}async parseScreenOptions(e,i,r=[]){const{removeIdList:t,preOptionsMap:o}=this.prepareScreenOptions(i,r);this.removeUnusedScreenSources(e,t);const{finalOptions:a,errors:s}=await this.processScreenSources(e,i,o);return{finalOptions:a,errors:s}}prepareScreenOptions(e,i){const r=new Set(e.map(e=>e.id));return{removeIdList:i.filter(e=>!r.has(e.id)).map(e=>e.id),preOptionsMap:new Map(i.map(e=>[e.id,e]))}}removeUnusedScreenSources(e,i){for(const r of i)e.removeScreenSource(r),this.removeSystemAudioTrack(r)}async processScreenSources(e,i,r){const t=[],o=[];for(const a of i)try{await this.processSingleScreenSource(e,a,r,t)}catch(e){this.handleScreenSourceError(a.id,e,r,t,o)}return{finalOptions:t,errors:o}}async processSingleScreenSource(e,i,r,t){const{id:o,layout:a}=i,s=r.get(o),n=e.inputLocalScreenTracks.has(o),c=!(null==s?void 0:s.systemAudio)&&i.systemAudio;n&&!c?await this.updateExistingScreenSource(e,o,a,s,i):await this.addNewScreenSource(e,i,s),t.push(i)}async updateExistingScreenSource(e,i,r,t,o){e.updateScreenSource(i,r),(null==t?void 0:t.systemAudio)&&!o.systemAudio&&this.removeSystemAudioTrack(i)}async addNewScreenSource(e,i,r){const t=await this.captureScreen(i);!(null==r?void 0:r.systemAudio)&&i.systemAudio&&e.inputLocalScreenTracks.has(i.id)&&e.removeScreenSource(i.id);try{e.addScreenSource(i.id,t,i.layout)}catch(e){throw t.close(),e}}handleScreenSourceError(e,i,r,t,o){o.push({id:e,error:i}),r.has(e)&&t.push(r.get(e))}async parseTextOptions(e,i,r=[]){const t=new Set(i.map(e=>e.id)),o=r.filter(e=>!t.has(e.id)).map(e=>e.id);for(const i of o)e.removeTextSource(i);const a=new Map(r.map(e=>[e.id,e])),s=[],n=[];for(const t of i){const{id:i}=t;try{r.some(e=>e.id===i)?e.updateTextSource(t):e.addTextSource(t),s.push(t)}catch(e){n.push({id:i,error:e}),a.has(i)&&s.push(a.get(i))}}return{finalOptions:s,errors:n}}async parseImageOptions(e,i,r=[]){const t=new Set(i.map(e=>e.id)),o=r.filter(e=>!t.has(e.id)).map(e=>e.id);for(const i of o)e.removeImageSource(i);const a=new Map(r.map(e=>[e.id,e])),s=[],n=[];for(const t of i){const{id:i,url:o,layout:c}=t;try{const a=r.find(e=>e.id===i);if(a){let r;a.url!==o&&(r=await this.core.utils.loadImage(o)),e.updateImageSource(i,c,r)}else{const r=await this.core.utils.loadImage(o);e.addImageSource(i,r,c)}s.push(t)}catch(e){n.push({id:i,error:e}),a.has(i)&&s.push(a.get(i))}}return{finalOptions:s,errors:n}}async parseVideoOptions(e,i,r=[]){const t=new Set(i.map(e=>e.id)),o=r.filter(e=>!t.has(e.id)).map(e=>e.id);for(const i of o)e.removeVideoSource(i);const a=new Map(r.map(e=>[e.id,e])),s=[],n=[];for(const t of i){const{id:i,url:o,layout:c}=t;try{const a=r.find(e=>e.id===i);let n;if(a)a.url!==o&&(n=await this.core.utils.loadVideo(o)),e.updateVideoSource(i,c,n);else{const r=await this.core.utils.loadVideo(o);e.addVideoSource(i,r,c)}s.push(t)}catch(e){n.push({id:i,error:e}),a.has(i)&&s.push(a.get(i))}}return{finalOptions:s,errors:n}}async captureCamera(e){const{id:i,cameraId:r,videoTrack:t,profile:o}=e,a=new this.core.LocalVideoTrack;a.log.id+=`-${i}`;const s={};return r?s.deviceId=r:this.core.utils.isUndefined(t)||(s.customSource=t),this.core.utils.isUndefined(o)||(this.core.utils.isString(o)?this.core.constants.videoProfileMap[o]&&a.setProfile(this.core.constants.videoProfileMap[o]):a.setProfile(o)),await a.capture(s),a}async updateCameraProfile(e){var i;const{id:r,cameraId:t,videoTrack:o,profile:a}=e,s=null==(i=this.localMixVideoTrack)?void 0:i.inputLocalVideoTracks.get(r);s&&(t?await s.switchDevice(t):this.core.utils.isUndefined(o)||await s.setInputMediaStreamTrack(o),this.core.utils.isUndefined(a)||(this.core.utils.isString(a)?this.core.constants.videoProfileMap[a]&&s.setProfile(this.core.constants.videoProfileMap[a]):s.setProfile(a),t&&s.isNeedToSwitchDevice(t)||await s.applyProfile()))}async captureScreen(e){const{id:i,profile:r,captureElement:t,preferDisplaySurface:o}=e,a=new this.core.LocalScreenTrack;a.log.id+=`-${i}`;const s={};this.core.utils.isUndefined(r)||(this.core.utils.isString(r)?this.core.constants.screenProfileMap[r]&&a.setProfile(this.core.constants.screenProfileMap[r]):a.setProfile(r)),t&&(s.captureElement=t),o&&(s.preferDisplaySurface=o),s.systemAudio=e.systemAudio;const n=await a.capture(s);return s.systemAudio&&n.getAudioTracks().length>0?(this.systemAudioTrackList[i]=n.getAudioTracks()[0],this.log.info(i+" system audio track captured")):this.removeSystemAudioTrack(i),a.mediaTrack.addEventListener(this.core.constants.NAME.ENDED,()=>{var e,r,t;null==(e=this.localMixVideoTrack)||e.removeScreenSource(i),(null==(r=this._mixVideoConfig)?void 0:r.screen)&&(this._mixVideoConfig.screen=this._mixVideoConfig.screen.filter(e=>e.id!==i)),null==(t=this.onScreenShareStop)||t.call(this,i)}),a}async _updatePreview({view:e,track:i,prevConfig:r}){if(this.core.utils.isUndefined(e)&&r&&r.view){const e=this.core.utils.getViewListFromView(r.view);e.length>0&&await i.play(e)}if(!this.core.utils.isUndefined(e)){const r=this.core.utils.getViewListFromView(e);r.length>0?await i.play(r):i.stop()}}stop(){var e;null==(e=this.localMixVideoTrack)||e.close(),this.localMixVideoTrack=null,Object.values(this.systemAudioTrackList).forEach(e=>e.stop()),this.systemAudioTrackList={},delete this.onScreenShareStop,delete this._mixVideoConfig}removeSystemAudioTrack(e){this.systemAudioTrackList[e]&&(this.systemAudioTrackList[e].stop(),this.log.info(e+" system audio track stop"),delete this.systemAudioTrackList[e])}};__publicField(_VideoMixer,"Name","VideoMixer");var VideoMixer=_VideoMixer,index_default=VideoMixer;export{index_default as default};export{VideoMixer};
@@ -1 +1,3 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).VideoMixer=t()}(this,(function(){"use strict";function e(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function t(e,t,r,n,i,o,a){try{var c=e[o](a),s=c.value}catch(e){return void r(e)}c.done?t(s):Promise.resolve(s).then(n,i)}function r(e){return function(){var r=this,n=arguments;return new Promise((function(i,o){var a=e.apply(r,n);function c(e){t(a,i,o,c,s,"next",e)}function s(e){t(a,i,o,c,s,"throw",e)}c(void 0)}))}}function n(e,t,r){return t&&function(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,c(n.key),n)}}(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function i(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=u(e))||t){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){c=!0,o=e},f:function(){try{a||null==r.return||r.return()}finally{if(c)throw o}}}}function o(){o=function(){return t};var e,t={},r=Object.prototype,n=r.hasOwnProperty,i=Object.defineProperty||function(e,t,r){e[t]=r.value},a="function"==typeof Symbol?Symbol:{},c=a.iterator||"@@iterator",s=a.asyncIterator||"@@asyncIterator",u=a.toStringTag||"@@toStringTag";function l(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(e){l=function(e,t,r){return e[t]=r}}function f(e,t,r,n){var o=t&&t.prototype instanceof g?t:g,a=Object.create(o.prototype),c=new O(n||[]);return i(a,"_invoke",{value:M(e,r,c)}),a}function p(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}t.wrap=f;var d="suspendedStart",h="suspendedYield",y="executing",v="completed",m={};function g(){}function x(){}function b(){}var w={};l(w,c,(function(){return this}));var k=Object.getPrototypeOf,S=k&&k(k(A([])));S&&S!==r&&n.call(S,c)&&(w=S);var T=b.prototype=g.prototype=Object.create(w);function E(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function V(e,t){function r(i,o,a,c){var s=p(e[i],e,o);if("throw"!==s.type){var u=s.arg,l=u.value;return l&&"object"==typeof l&&n.call(l,"__await")?t.resolve(l.__await).then((function(e){r("next",e,a,c)}),(function(e){r("throw",e,a,c)})):t.resolve(l).then((function(e){u.value=e,a(u)}),(function(e){return r("throw",e,a,c)}))}c(s.arg)}var o;i(this,"_invoke",{value:function(e,n){function i(){return new t((function(t,i){r(e,n,t,i)}))}return o=o?o.then(i,i):i()}})}function M(t,r,n){var i=d;return function(o,a){if(i===y)throw Error("Generator is already running");if(i===v){if("throw"===o)throw a;return{value:e,done:!0}}for(n.method=o,n.arg=a;;){var c=n.delegate;if(c){var s=C(c,n);if(s){if(s===m)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(i===d)throw i=v,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);i=y;var u=p(t,r,n);if("normal"===u.type){if(i=n.done?v:h,u.arg===m)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(i=v,n.method="throw",n.arg=u.arg)}}}function C(t,r){var n=r.method,i=t.iterator[n];if(i===e)return r.delegate=null,"throw"===n&&t.iterator.return&&(r.method="return",r.arg=e,C(t,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),m;var o=p(i,t.iterator,r.arg);if("throw"===o.type)return r.method="throw",r.arg=o.arg,r.delegate=null,m;var a=o.arg;return a?a.done?(r[t.resultName]=a.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,m):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,m)}function L(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function _(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function O(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(L,this),this.reset(!0)}function A(t){if(t||""===t){var r=t[c];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var i=-1,o=function r(){for(;++i<t.length;)if(n.call(t,i))return r.value=t[i],r.done=!1,r;return r.value=e,r.done=!0,r};return o.next=o}}throw new TypeError(typeof t+" is not iterable")}return x.prototype=b,i(T,"constructor",{value:b,configurable:!0}),i(b,"constructor",{value:x,configurable:!0}),x.displayName=l(b,u,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===x||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,b):(e.__proto__=b,l(e,u,"GeneratorFunction")),e.prototype=Object.create(T),e},t.awrap=function(e){return{__await:e}},E(V.prototype),l(V.prototype,s,(function(){return this})),t.AsyncIterator=V,t.async=function(e,r,n,i,o){void 0===o&&(o=Promise);var a=new V(f(e,r,n,i),o);return t.isGeneratorFunction(r)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},E(T),l(T,u,"Generator"),l(T,c,(function(){return this})),l(T,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),r=[];for(var n in t)r.push(n);return r.reverse(),function e(){for(;r.length;){var n=r.pop();if(n in t)return e.value=n,e.done=!1,e}return e.done=!0,e}},t.values=A,O.prototype={constructor:O,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(_),!t)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var r=this;function i(n,i){return c.type="throw",c.arg=t,r.next=n,i&&(r.method="next",r.arg=e),!!i}for(var o=this.tryEntries.length-1;o>=0;--o){var a=this.tryEntries[o],c=a.completion;if("root"===a.tryLoc)return i("end");if(a.tryLoc<=this.prev){var s=n.call(a,"catchLoc"),u=n.call(a,"finallyLoc");if(s&&u){if(this.prev<a.catchLoc)return i(a.catchLoc,!0);if(this.prev<a.finallyLoc)return i(a.finallyLoc)}else if(s){if(this.prev<a.catchLoc)return i(a.catchLoc,!0)}else{if(!u)throw Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return i(a.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var i=this.tryEntries[r];if(i.tryLoc<=this.prev&&n.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var o=i;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var a=o?o.completion:{};return a.type=e,a.arg=t,o?(this.method="next",this.next=o.finallyLoc,m):this.complete(a)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),m},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),_(r),m}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;_(r)}return i}}throw Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:A(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),m}},t}function a(t){return function(t){if(Array.isArray(t))return e(t)}(t)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(t)||u(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t);if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof t?t:t+""}function s(e){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s(e)}function u(t,r){if(t){if("string"==typeof t)return e(t,r);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?e(t,r):void 0}}var l=Object.defineProperty,f=Object.getOwnPropertySymbols,p=Object.prototype.hasOwnProperty,d=Object.prototype.propertyIsEnumerable,h=function(e,t,r){return t in e?l(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r},y=function(e,t){for(var r in t||(t={}))p.call(t,r)&&h(e,r,t[r]);if(f){var n,o=i(f(t));try{for(o.s();!(n=o.n()).done;){r=n.value;d.call(t,r)&&h(e,r,t[r])}}catch(e){o.e(e)}finally{o.f()}}return e},v=function(e,t,r){return h(e,"symbol"!==s(t)?t+"":t,r)},m={x:{required:!0,type:"number"},y:{required:!0,type:"number"},width:{required:!0,type:"number",notLessThanZero:!0,min:1,max:3840},height:{required:!0,type:"number",notLessThanZero:!0,min:1,max:3840},zIndex:{required:!0,type:"number"},fillMode:{required:!1,type:"string"},mirror:{required:!1,type:"boolean"},rotation:{required:!1,type:"number"},hidden:{required:!1,type:"boolean"}},g=function(e){return{type:"object",required:arguments.length>1&&void 0!==arguments[1]&&arguments[1],properties:{canvasColor:{required:!1,type:["string",CanvasGradient,CanvasPattern]},width:{required:!0,type:"number",notLessThanZero:!0,min:1,max:3840},height:{required:!0,type:"number",notLessThanZero:!0,min:1,max:3840},frameRate:{required:!1,type:"number",notLessThanZero:!0,min:1,max:60}},validate:function(t,r,n){var i=e.errorModule,o=i.RtcError,a=i.ErrorCode;if(i.ErrorCodeDictionary,t){var c=t.width,s=t.height;if(c&&s&&c*s>8294400)throw new o({code:a.INVALID_PARAMETER,message:"The mix resolution cannot be set higher than 3840 * 2160."})}}}},x=function(e){return{required:!1,type:["string",HTMLElement,null],validate:function(t,r,n){var i=e.errorModule,o=i.RtcError,a=i.ErrorCode,c=i.ErrorCodeDictionary;if(e.utils.isString(t)&&!document.getElementById(t))throw new o({code:a.INVALID_PARAMETER,extraCode:c.INVALID_ELEMENT_ID,fnName:n,messageParams:{key:r}})}}},b=function(e){return{type:"object",required:!(arguments.length>1&&void 0!==arguments[1])||arguments[1],properties:y({},m),validate:function(t,r,n){var i=e.errorModule,o=i.RtcError,a=i.ErrorCode,c=i.ErrorCodeDictionary;if(t){if(t.fillMode&&!["contain","cover","fill"].includes(t.fillMode))throw new o({code:a.INVALID_PARAMETER,extraCode:c.INVALID_PARAMETER_TYPE,message:"The fillMode parameter must be 'contain', 'cover' or 'fill'",fnName:n});if(t.rotation&&![0,90,180,270].includes(t.rotation))throw new o({code:a.INVALID_PARAMETER,extraCode:c.INVALID_PARAMETER_TYPE,message:"The rotation parameter must be 0, 90, 180 or 270",fnName:n})}}}},w=function(e){return{type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},cameraId:{required:!1,type:"string"},videoTrack:{required:!1,instanceof:MediaStreamTrack},profile:{required:!1,type:["string","object"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},layout:y({},b(e))}}}},k=function(e){return{type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},profile:{required:!1,type:["string","object"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},captureElement:{required:!1,type:HTMLElement},preferDisplaySurface:{required:!1,type:"string"},layout:y({},b(e))},validate:function(t,r,n){var i=e.errorModule,o=i.RtcError,a=i.ErrorCode,c=i.ErrorCodeDictionary;if(!e.rtcDectection.isScreenCaptureApiAvailable())throw new o({code:a.ENV_NOT_SUPPORTED,fnName:n,extraCode:c.NOT_SUPPORTED_SCREEN_SHARE})}}}},S=function(e){return{type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},content:{required:!0,type:"string"},font:{required:!1,type:"string"},color:{required:!1,type:["string",CanvasGradient,CanvasPattern]},layout:y({},b(e))}}}},T=function(e){return{type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},url:{required:!0,type:"string"},layout:y({},b(e))}}}},E=function(e){return{type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},url:{required:!0,type:"string"},layout:y({},b(e))}}}};var V=0,M=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.core=t,v(this,"seq"),v(this,"log"),v(this,"localMixVideoTrack",null),v(this,"systemAudioTrackList",{}),v(this,"_mixVideoConfig"),v(this,"onScreenShareStop"),V+=1,this.seq=V,this.log=t.log.createChild({id:"".concat(this.getAlias()).concat(V)}),this.log.info("created")}return n(e,[{key:"getName",value:function(){return e.Name}},{key:"getAlias",value:function(){return"vmix"}},{key:"getValidateRule",value:function(e){switch(e){case"start":return t=this.core,{name:"VideoMixerOptions",type:"object",required:!0,allowEmpty:!1,properties:{view:y({},x(t)),canvasInfo:y({},g(t,!0)),camera:y({},w(t)),screen:y({},k(t)),text:y({},S(t)),image:y({},T(t)),video:y({},E(t))},validate:function(e,r,n,i){var o=t.errorModule,a=o.RtcError,c=o.ErrorCode,u=o.ErrorCodeDictionary;if(t.environment.isMobile())throw new a({code:c.ENV_NOT_SUPPORTED,message:"VideoMixer is not supported on mobile devices currently"});var l=e.onScreenShareStop;if(l&&!t.utils.isFunction(l))throw new a({code:c.INVALID_PARAMETER,extraCode:u.INVALID_PARAMETER_TYPE,fnName:n,messageParams:{key:"onScreenShareStop",value:s(l),rule:{type:"Function"}}})}};case"update":return function(e){return{name:"VideoMixerOptions",type:"object",required:!1,allowEmpty:!1,properties:{view:y({},x(e)),canvasInfo:y({},g(e)),camera:y({},w(e)),screen:y({},k(e)),text:y({},S(e)),image:y({},T(e)),video:y({},E(e))}}}(this.core);case"stop":return this.core,{name:"StopVideoMixerOptions",required:!1}}var t}},{key:"getGroup",value:function(){return"vmix"}},{key:"start",value:(C=r(o().mark((function e(t){var r,n,i,a;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this.localMixVideoTrack||(this.localMixVideoTrack=new this.core.LocalMixVideoTrack(this.core.room.videoManager)),this._mixVideoConfig={canvasInfo:{width:1920,height:1080}},t=this.core.utils.deepCloneBasic(t),n=(r=t).view,i=r.onScreenShareStop,e.next=6,this.parseMixOptions(t);case 6:return a=e.sent,i&&(this.onScreenShareStop=i,this._mixVideoConfig.onScreenShareStop=i),this._updatePreview({view:n,track:this.localMixVideoTrack}),this.core.utils.isUndefined(n)||(this._mixVideoConfig.view=n),e.next=12,this.localMixVideoTrack.startMix();case 12:return e.abrupt("return",{track:this.localMixVideoTrack._outputTrack,systemAudioTrackList:this.systemAudioTrackList,result:a});case 13:case"end":return e.stop()}}),e,this)}))),function(e){return C.apply(this,arguments)})},{key:"update",value:(M=r(o().mark((function e(t){var r,n,i,a,c;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=this.core.errorModule,n=r.RtcError,i=r.ErrorCode,this.localMixVideoTrack){e.next=3;break}throw new n({code:i.INVALID_OPERATION,message:"mixTrack doesn't initialize!"});case 3:return t=this.core.utils.deepCloneBasic(t),a=t.view,e.next=7,this.parseMixOptions(t);case 7:return c=e.sent,e.next=10,this._updatePreview({view:a,track:this.localMixVideoTrack,prevConfig:this._mixVideoConfig});case 10:return this.core.utils.isUndefined(a)||(this._mixVideoConfig.view=a),e.abrupt("return",{track:this.localMixVideoTrack._outputTrack,systemAudioTrackList:this.systemAudioTrackList,result:c});case 12:case"end":return e.stop()}}),e,this)}))),function(e){return M.apply(this,arguments)})},{key:"parseMixOptions",value:(b=r(o().mark((function e(t){var r,n,i,c,s,u,l,f,p,d,h,v,m,g,x,b,w,k,S,T,E,V,M,C,L,_,O,A,P,I,q,N,j;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r={successOptions:{},failedDetails:[]},n=this.core.errorModule,i=n.RtcError,c=n.ErrorCode,n.ErrorCodeDictionary,this.localMixVideoTrack&&this._mixVideoConfig){e.next=4;break}return e.abrupt("return",r);case 4:if(s=[],u=y({},t),l=t.canvasInfo,f=t.camera,p=t.screen,d=t.text,h=t.image,v=t.video,m=0,g=0,l&&(x=l.canvasColor,b=l.width,w=l.height,k=l.frameRate,x&&this.localMixVideoTrack.setMixBackground(x),k&&this.localMixVideoTrack.setFps(k),this.localMixVideoTrack.resizeMixCanvas(b,w),this._mixVideoConfig.canvasInfo=l),!f){e.next=20;break}return m++,e.next=14,this.parseCameraOptions(this.localMixVideoTrack,f,this._mixVideoConfig.camera);case 14:S=e.sent,T=S.finalOptions,E=S.errors,this._mixVideoConfig.camera=T,u.camera=T,E.length>0&&(s.push.apply(s,a(E)),E.length===f.length&&g++);case 20:if(!p){e.next=30;break}return m++,e.next=24,this.parseScreenOptions(this.localMixVideoTrack,p,this._mixVideoConfig.screen);case 24:V=e.sent,M=V.finalOptions,C=V.errors,this._mixVideoConfig.screen=M,u.screen=M,C.length>0&&(s.push.apply(s,a(C)),C.length===p.length&&g++);case 30:if(!d){e.next=40;break}return m++,e.next=34,this.parseTextOptions(this.localMixVideoTrack,d,this._mixVideoConfig.text);case 34:L=e.sent,_=L.finalOptions,O=L.errors,this._mixVideoConfig.text=_,u.text=_,O.length>0&&(s.push.apply(s,a(O)),O.length===d.length&&g++);case 40:if(!h){e.next=50;break}return m++,e.next=44,this.parseImageOptions(this.localMixVideoTrack,h,this._mixVideoConfig.image);case 44:A=e.sent,P=A.finalOptions,I=A.errors,this._mixVideoConfig.image=P,u.image=P,I.length>0&&(s.push.apply(s,a(I)),I.length===h.length&&g++);case 50:if(!v){e.next=60;break}return m++,e.next=54,this.parseVideoOptions(this.localMixVideoTrack,v,this._mixVideoConfig.video);case 54:q=e.sent,N=q.finalOptions,j=q.errors,this._mixVideoConfig.video=N,u.video=N,j.length>0&&(s.push.apply(s,a(j)),j.length===v.length&&g++);case 60:if(!(g>0&&g===m)){e.next=62;break}throw new i({code:c.INVALID_PARAMETER,message:"all sources mix failed",data:{failedDetails:s}});case 62:return r={successOptions:u,failedDetails:s},e.abrupt("return",r);case 64:case"end":return e.stop()}}),e,this)}))),function(e){return b.apply(this,arguments)})},{key:"parseCameraOptions",value:(m=r(o().mark((function e(t,r){var n,a,c,s,u,l,f,p,d,h,y,v,m,g,x,b,w,k,S,T,E,V=arguments;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=V.length>2&&void 0!==V[2]?V[2]:[],s=new Set(r.map((function(e){return e.id}))),u=n.filter((function(e){return!s.has(e.id)})).map((function(e){return e.id})),l=i(u);try{for(l.s();!(f=l.n()).done;)p=f.value,t.removeCameraSource(p)}catch(e){l.e(e)}finally{l.f()}d=new Map(n.map((function(e){return[e.id,e]}))),h=[],y=[],v=i(r),e.prev=9,v.s();case 11:if((m=v.n()).done){e.next=45;break}if(g=m.value,x=g.id,b=g.layout,w=g.profile,e.prev=14,!t.inputLocalVideoTracks.has(x)){e.next=25;break}return k=null==(a=t.inputLocalVideoTracks.get(x))?void 0:a.mediaTrack,e.next=19,this.updateCameraProfile(g);case 19:S=null==(c=t.inputLocalVideoTracks.get(x))?void 0:c.mediaTrack,T=void 0,w&&(T=this.core.utils.isString(w)?this.core.constants.videoProfileMap[w]:w),S!==k?t.updateCameraSource(x,b,S,T):t.updateCameraSource(x,b,null,T),e.next=36;break;case 25:return e.next=27,this.captureCamera(g);case 27:E=e.sent,e.prev=28,t.addCameraSource(x,E,b),e.next=36;break;case 32:throw e.prev=32,e.t0=e.catch(28),E.close(),e.t0;case 36:h.push(g),e.next=43;break;case 39:e.prev=39,e.t1=e.catch(14),y.push({id:x,error:e.t1}),d.has(x)&&h.push(d.get(x));case 43:e.next=11;break;case 45:e.next=50;break;case 47:e.prev=47,e.t2=e.catch(9),v.e(e.t2);case 50:return e.prev=50,v.f(),e.finish(50);case 53:return e.abrupt("return",{finalOptions:h,errors:y});case 54:case"end":return e.stop()}}),e,this,[[9,47,50,53],[14,39],[28,32]])}))),function(e,t){return m.apply(this,arguments)})},{key:"parseScreenOptions",value:(h=r(o().mark((function e(t,r){var n,a,c,s,u,l,f,p,d,h,y,v,m,g,x,b=arguments;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=b.length>2&&void 0!==b[2]?b[2]:[],a=new Set(r.map((function(e){return e.id}))),c=n.filter((function(e){return!a.has(e.id)})).map((function(e){return e.id})),s=i(c);try{for(s.s();!(u=s.n()).done;)l=u.value,t.removeScreenSource(l)}catch(e){s.e(e)}finally{s.f()}f=new Map(n.map((function(e){return[e.id,e]}))),p=[],d=[],h=i(r),e.prev=9,h.s();case 11:if((y=h.n()).done){e.next=39;break}if(v=y.value,m=v.id,g=v.layout,e.prev=14,!t.inputLocalScreenTracks.has(m)){e.next=19;break}t.updateScreenSource(m,g),e.next=30;break;case 19:return e.next=21,this.captureScreen(v);case 21:x=e.sent,e.prev=22,t.addScreenSource(m,x,g),e.next=30;break;case 26:throw e.prev=26,e.t0=e.catch(22),x.close(),e.t0;case 30:p.push(v),e.next=37;break;case 33:e.prev=33,e.t1=e.catch(14),d.push({id:m,error:e.t1}),f.has(m)&&p.push(f.get(m));case 37:e.next=11;break;case 39:e.next=44;break;case 41:e.prev=41,e.t2=e.catch(9),h.e(e.t2);case 44:return e.prev=44,h.f(),e.finish(44);case 47:return e.abrupt("return",{finalOptions:p,errors:d});case 48:case"end":return e.stop()}}),e,this,[[9,41,44,47],[14,33],[22,26]])}))),function(e,t){return h.apply(this,arguments)})},{key:"parseTextOptions",value:(d=r(o().mark((function e(t,r){var n,a,c,s,u,l,f,p,d,h,y,v,m=arguments;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=m.length>2&&void 0!==m[2]?m[2]:[],a=new Set(r.map((function(e){return e.id}))),c=n.filter((function(e){return!a.has(e.id)})).map((function(e){return e.id})),s=i(c);try{for(s.s();!(u=s.n()).done;)l=u.value,t.removeTextSource(l)}catch(e){s.e(e)}finally{s.f()}f=new Map(n.map((function(e){return[e.id,e]}))),p=[],d=[],h=i(r),e.prev=9,v=o().mark((function e(){var r,i;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=y.value,i=r.id;try{n.some((function(e){return e.id===i}))?t.updateTextSource(r):t.addTextSource(r),p.push(r)}catch(e){d.push({id:i,error:e}),f.has(i)&&p.push(f.get(i))}case 3:case"end":return e.stop()}}),e)})),h.s();case 12:if((y=h.n()).done){e.next=16;break}return e.delegateYield(v(),"t0",14);case 14:e.next=12;break;case 16:e.next=21;break;case 18:e.prev=18,e.t1=e.catch(9),h.e(e.t1);case 21:return e.prev=21,h.f(),e.finish(21);case 24:return e.abrupt("return",{finalOptions:p,errors:d});case 25:case"end":return e.stop()}}),e,null,[[9,18,21,24]])}))),function(e,t){return d.apply(this,arguments)})},{key:"parseImageOptions",value:(p=r(o().mark((function e(t,r){var n,a,c,s,u,l,f,p,d,h,y,v,m=this,g=arguments;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=g.length>2&&void 0!==g[2]?g[2]:[],a=new Set(r.map((function(e){return e.id}))),c=n.filter((function(e){return!a.has(e.id)})).map((function(e){return e.id})),s=i(c);try{for(s.s();!(u=s.n()).done;)l=u.value,t.removeImageSource(l)}catch(e){s.e(e)}finally{s.f()}f=new Map(n.map((function(e){return[e.id,e]}))),p=[],d=[],h=i(r),e.prev=9,v=o().mark((function e(){var r,i,a,c,s,u,l;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=y.value,i=r.id,a=r.url,c=r.layout,e.prev=2,!(s=n.find((function(e){return e.id===i})))){e.next=12;break}if(s.url===a){e.next=9;break}return e.next=8,m.core.utils.loadImage(a);case 8:u=e.sent;case 9:t.updateImageSource(i,c,u),e.next=16;break;case 12:return e.next=14,m.core.utils.loadImage(a);case 14:l=e.sent,t.addImageSource(i,l,c);case 16:p.push(r),e.next=23;break;case 19:e.prev=19,e.t0=e.catch(2),d.push({id:i,error:e.t0}),f.has(i)&&p.push(f.get(i));case 23:case"end":return e.stop()}}),e,null,[[2,19]])})),h.s();case 12:if((y=h.n()).done){e.next=16;break}return e.delegateYield(v(),"t0",14);case 14:e.next=12;break;case 16:e.next=21;break;case 18:e.prev=18,e.t1=e.catch(9),h.e(e.t1);case 21:return e.prev=21,h.f(),e.finish(21);case 24:return e.abrupt("return",{finalOptions:p,errors:d});case 25:case"end":return e.stop()}}),e,null,[[9,18,21,24]])}))),function(e,t){return p.apply(this,arguments)})},{key:"parseVideoOptions",value:(f=r(o().mark((function e(t,r){var n,a,c,s,u,l,f,p,d,h,y,v,m=this,g=arguments;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=g.length>2&&void 0!==g[2]?g[2]:[],a=new Set(r.map((function(e){return e.id}))),c=n.filter((function(e){return!a.has(e.id)})).map((function(e){return e.id})),s=i(c);try{for(s.s();!(u=s.n()).done;)l=u.value,t.removeVideoSource(l)}catch(e){s.e(e)}finally{s.f()}f=new Map(n.map((function(e){return[e.id,e]}))),p=[],d=[],h=i(r),e.prev=9,v=o().mark((function e(){var r,i,a,c,s,u,l;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=y.value,i=r.id,a=r.url,c=r.layout,e.prev=2,!(s=n.find((function(e){return e.id===i})))){e.next=12;break}if(s.url===a){e.next=9;break}return e.next=8,m.core.utils.loadVideo(a);case 8:u=e.sent;case 9:t.updateVideoSource(i,c,u),e.next=16;break;case 12:return e.next=14,m.core.utils.loadVideo(a);case 14:l=e.sent,t.addVideoSource(i,l,c);case 16:p.push(r),e.next=23;break;case 19:e.prev=19,e.t0=e.catch(2),d.push({id:i,error:e.t0}),f.has(i)&&p.push(f.get(i));case 23:case"end":return e.stop()}}),e,null,[[2,19]])})),h.s();case 12:if((y=h.n()).done){e.next=16;break}return e.delegateYield(v(),"t0",14);case 14:e.next=12;break;case 16:e.next=21;break;case 18:e.prev=18,e.t1=e.catch(9),h.e(e.t1);case 21:return e.prev=21,h.f(),e.finish(21);case 24:return e.abrupt("return",{finalOptions:p,errors:d});case 25:case"end":return e.stop()}}),e,null,[[9,18,21,24]])}))),function(e,t){return f.apply(this,arguments)})},{key:"captureCamera",value:(l=r(o().mark((function e(t){var r,n,i,a,c,s;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.id,n=t.cameraId,i=t.videoTrack,a=t.profile,(c=new this.core.LocalVideoTrack).log.id+="-".concat(r),s={},n?s.deviceId=n:this.core.utils.isUndefined(i)||(s.customSource=i),this.core.utils.isUndefined(a)||(this.core.utils.isString(a)?this.core.constants.videoProfileMap[a]&&c.setProfile(this.core.constants.videoProfileMap[a]):c.setProfile(a)),e.next=8,c.capture(s);case 8:return e.abrupt("return",c);case 9:case"end":return e.stop()}}),e,this)}))),function(e){return l.apply(this,arguments)})},{key:"updateCameraProfile",value:(u=r(o().mark((function e(t){var r,n,i,a,c,s;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.id,i=t.cameraId,a=t.videoTrack,c=t.profile,s=null==(r=this.localMixVideoTrack)?void 0:r.inputLocalVideoTracks.get(n)){e.next=4;break}return e.abrupt("return");case 4:if(!i){e.next=9;break}return e.next=7,s.switchDevice(i);case 7:e.next=12;break;case 9:if(this.core.utils.isUndefined(a)){e.next=12;break}return e.next=12,s.setInputMediaStreamTrack(a);case 12:if(this.core.utils.isUndefined(c)){e.next=17;break}if(this.core.utils.isString(c)?this.core.constants.videoProfileMap[c]&&s.setProfile(this.core.constants.videoProfileMap[c]):s.setProfile(c),i&&s.isNeedToSwitchDevice(i)){e.next=17;break}return e.next=17,s.applyProfile();case 17:case"end":return e.stop()}}),e,this)}))),function(e){return u.apply(this,arguments)})},{key:"captureScreen",value:(c=r(o().mark((function e(t){var r,n,i,a,c,s,u,l=this;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.id,n=t.profile,i=t.captureElement,a=t.preferDisplaySurface,(c=new this.core.LocalScreenTrack).log.id+="-".concat(r),s={},this.core.utils.isUndefined(n)||(this.core.utils.isString(n)?this.core.constants.screenProfileMap[n]&&c.setProfile(this.core.constants.screenProfileMap[n]):c.setProfile(n)),i&&(s.captureElement=i),a&&(s.preferDisplaySurface=a),s.systemAudio=t.systemAudio,e.next=10,c.capture(s);case 10:return u=e.sent,s.systemAudio&&u.getAudioTracks().length>0&&(this.systemAudioTrackList[r]=u.getAudioTracks()[0]),c.mediaTrack.addEventListener(this.core.constants.NAME.ENDED,(function(){var e,t,n;null==(e=l.localMixVideoTrack)||e.removeScreenSource(r),(null==(t=l._mixVideoConfig)?void 0:t.screen)&&(l._mixVideoConfig.screen=l._mixVideoConfig.screen.filter((function(e){return e.id!==r}))),null==(n=l.onScreenShareStop)||n.call(l,r)})),e.abrupt("return",c);case 14:case"end":return e.stop()}}),e,this)}))),function(e){return c.apply(this,arguments)})},{key:"_updatePreview",value:(t=r(o().mark((function e(t){var r,n,i,a,c;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t.view,n=t.track,i=t.prevConfig,!(this.core.utils.isUndefined(r)&&i&&i.view)){e.next=6;break}if(!((a=this.core.utils.getViewListFromView(i.view)).length>0)){e.next=6;break}return e.next=6,n.play(a);case 6:if(this.core.utils.isUndefined(r)){e.next=14;break}if(!((c=this.core.utils.getViewListFromView(r)).length>0)){e.next=13;break}return e.next=11,n.play(c);case 11:e.next=14;break;case 13:n.stop();case 14:case"end":return e.stop()}}),e,this)}))),function(e){return t.apply(this,arguments)})},{key:"stop",value:function(){var e;null==(e=this.localMixVideoTrack)||e.close(),this.localMixVideoTrack=null,delete this.onScreenShareStop,delete this._mixVideoConfig}}]);var t,c,u,l,f,p,d,h,m,b,M,C}();return v(M,"Name","VideoMixer"),M}));
1
+ !function(e,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):(e="undefined"!=typeof globalThis?globalThis:e||self).VideoMixer=r()}(this,function(){"use strict";function e(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}function r(e,r,t,n,i,o,a){try{var s=e[o](a),c=s.value}catch(e){return void t(e)}s.done?r(c):Promise.resolve(c).then(n,i)}function t(e){return function(){var t=this,n=arguments;return new Promise(function(i,o){var a=e.apply(t,n);function s(e){r(a,i,o,s,c,"next",e)}function c(e){r(a,i,o,s,c,"throw",e)}s(void 0)})}}function n(e,r,t){return r&&function(e,r){for(var t=0;t<r.length;t++){var n=r[t];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,u(n.key),n)}}(e.prototype,r),Object.defineProperty(e,"prototype",{writable:!1}),e}function i(e,r){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!t){if(Array.isArray(e)||(t=f(e))||r){t&&(e=t);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,s=!1;return{s:function(){t=t.call(e)},n:function(){var e=t.next();return a=e.done,e},e:function(e){s=!0,o=e},f:function(){try{a||null==t.return||t.return()}finally{if(s)throw o}}}}function o(){
2
+ /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
3
+ var e,r,t="function"==typeof Symbol?Symbol:{},n=t.iterator||"@@iterator",i=t.toStringTag||"@@toStringTag";function s(t,n,i,o){var s=n&&n.prototype instanceof u?n:u,l=Object.create(s.prototype);return a(l,"_invoke",function(t,n,i){var o,a,s,u=0,l=i||[],f=!1,d={p:0,n:0,v:e,a:p,f:p.bind(e,4),d:function(r,t){return o=r,a=0,s=e,d.n=t,c}};function p(t,n){for(a=t,s=n,r=0;!f&&u&&!i&&r<l.length;r++){var i,o=l[r],p=d.p,h=o[2];t>3?(i=h===n)&&(s=o[(a=o[4])?5:(a=3,3)],o[4]=o[5]=e):o[0]<=p&&((i=t<2&&p<o[1])?(a=0,d.v=n,d.n=o[1]):p<h&&(i=t<3||o[0]>n||n>h)&&(o[4]=t,o[5]=n,d.n=h,a=0))}if(i||t>1)return c;throw f=!0,n}return function(i,l,h){if(u>1)throw TypeError("Generator is already running");for(f&&1===l&&p(l,h),a=l,s=h;(r=a<2?e:s)||!f;){o||(a?a<3?(a>1&&(d.n=-1),p(a,s)):d.n=s:d.v=s);try{if(u=2,o){if(a||(i="next"),r=o[i]){if(!(r=r.call(o,s)))throw TypeError("iterator result is not an object");if(!r.done)return r;s=r.value,a<2&&(a=0)}else 1===a&&(r=o.return)&&r.call(o),a<2&&(s=TypeError("The iterator does not provide a '"+i+"' method"),a=1);o=e}else if((r=(f=d.n<0)?s:t.call(n,d))!==c)break}catch(r){o=e,a=1,s=r}finally{u=1}}return{value:r,done:f}}}(t,i,o),!0),l}var c={};function u(){}function l(){}function f(){}r=Object.getPrototypeOf;var d=[][n]?r(r([][n]())):(a(r={},n,function(){return this}),r),p=f.prototype=u.prototype=Object.create(d);function h(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,f):(e.__proto__=f,a(e,i,"GeneratorFunction")),e.prototype=Object.create(p),e}return l.prototype=f,a(p,"constructor",f),a(f,"constructor",l),l.displayName="GeneratorFunction",a(f,i,"GeneratorFunction"),a(p),a(p,i,"Generator"),a(p,n,function(){return this}),a(p,"toString",function(){return"[object Generator]"}),(o=function(){return{w:s,m:h}})()}function a(e,r,t,n){var i=Object.defineProperty;try{i({},"",{})}catch(e){i=0}a=function(e,r,t,n){function o(r,t){a(e,r,function(e){return this._invoke(r,t,e)})}r?i?i(e,r,{value:t,enumerable:!n,configurable:!n,writable:!n}):e[r]=t:(o("next",0),o("throw",1),o("return",2))},a(e,r,t,n)}function s(e){if(null!=e){var r=e["function"==typeof Symbol&&Symbol.iterator||"@@iterator"],t=0;if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length))return{next:function(){return e&&t>=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}}throw new TypeError(typeof e+" is not iterable")}function c(r){return function(r){if(Array.isArray(r))return e(r)}(r)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(r)||f(r)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e){var r=function(e,r){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,r);if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof r?r:r+""}function l(e){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l(e)}function f(r,t){if(r){if("string"==typeof r)return e(r,t);var n={}.toString.call(r).slice(8,-1);return"Object"===n&&r.constructor&&(n=r.constructor.name),"Map"===n||"Set"===n?Array.from(r):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?e(r,t):void 0}}var d=Object.defineProperty,p=Object.getOwnPropertySymbols,h=Object.prototype.hasOwnProperty,m=Object.prototype.propertyIsEnumerable,y=function(e,r,t){return r in e?d(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t},v=function(e,r){for(var t in r||(r={}))h.call(r,t)&&y(e,t,r[t]);if(p){var n,o=i(p(r));try{for(o.s();!(n=o.n()).done;){t=n.value;m.call(r,t)&&y(e,t,r[t])}}catch(e){o.e(e)}finally{o.f()}}return e},g=function(e,r,t){return y(e,"symbol"!==l(r)?r+"":r,t)},b={x:{required:!0,type:"number"},y:{required:!0,type:"number"},width:{required:!0,type:"number",notLessThanZero:!0,min:1,max:3840},height:{required:!0,type:"number",notLessThanZero:!0,min:1,max:3840},zIndex:{required:!0,type:"number"},fillMode:{required:!1,type:"string"},mirror:{required:!1,type:"boolean"},rotation:{required:!1,type:"number"},hidden:{required:!1,type:"boolean"}},k=function(e){return{type:"object",required:arguments.length>1&&void 0!==arguments[1]&&arguments[1],properties:{canvasColor:{required:!1,type:["string",CanvasGradient,CanvasPattern]},width:{required:!0,type:"number",notLessThanZero:!0,min:1,max:3840},height:{required:!0,type:"number",notLessThanZero:!0,min:1,max:3840},frameRate:{required:!1,type:"number",notLessThanZero:!0,min:1,max:60}},validate:function(r,t,n){var i=e.errorModule,o=i.RtcError,a=i.ErrorCode;if(i.ErrorCodeDictionary,r){var s=r.width,c=r.height;if(s&&c&&s*c>8294400)throw new o({code:a.INVALID_PARAMETER,message:"The mix resolution cannot be set higher than 3840 * 2160."})}}}},S=function(e){return{required:!1,type:["string",HTMLElement,null],validate:function(r,t,n){var i=e.errorModule,o=i.RtcError,a=i.ErrorCode,s=i.ErrorCodeDictionary;if(e.utils.isString(r)&&!document.getElementById(r))throw new o({code:a.INVALID_PARAMETER,extraCode:s.INVALID_ELEMENT_ID,fnName:n,messageParams:{key:t}})}}},w=function(e){return{type:"object",required:!(arguments.length>1&&void 0!==arguments[1])||arguments[1],properties:v({},b),validate:function(r,t,n){var i=e.errorModule,o=i.RtcError,a=i.ErrorCode,s=i.ErrorCodeDictionary;if(r){if(r.fillMode&&!["contain","cover","fill"].includes(r.fillMode))throw new o({code:a.INVALID_PARAMETER,extraCode:s.INVALID_PARAMETER_TYPE,message:"The fillMode parameter must be 'contain', 'cover' or 'fill'",fnName:n});if(r.rotation&&![0,90,180,270].includes(r.rotation))throw new o({code:a.INVALID_PARAMETER,extraCode:s.INVALID_PARAMETER_TYPE,message:"The rotation parameter must be 0, 90, 180 or 270",fnName:n})}}}},T=function(e){return{type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},cameraId:{required:!1,type:"string"},videoTrack:{required:!1,instanceof:MediaStreamTrack},profile:{required:!1,type:["string","object"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},layout:v({},w(e))}}}},x=function(e){return{type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},profile:{required:!1,type:["string","object"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},captureElement:{required:!1,type:HTMLElement},preferDisplaySurface:{required:!1,type:"string"},layout:v({},w(e))},validate:function(r,t,n){var i=e.errorModule,o=i.RtcError,a=i.ErrorCode,s=i.ErrorCodeDictionary;if(!e.rtcDectection.isScreenCaptureApiAvailable())throw new o({code:a.ENV_NOT_SUPPORTED,fnName:n,extraCode:s.NOT_SUPPORTED_SCREEN_SHARE})}}}},V=function(e){return{type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},content:{required:!0,type:"string"},font:{required:!1,type:"string"},color:{required:!1,type:["string",CanvasGradient,CanvasPattern]},layout:v({},w(e))}}}},E=function(e){return{type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},url:{required:!0,type:"string"},layout:v({},w(e))}}}},M=function(e){return{type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},url:{required:!0,type:"string"},layout:v({},w(e))}}}};var A=0,C=function(){function e(r){!function(e,r){if(!(e instanceof r))throw new TypeError("Cannot call a class as a function")}(this,e),this.core=r,g(this,"seq"),g(this,"log"),g(this,"localMixVideoTrack",null),g(this,"systemAudioTrackList",{}),g(this,"_mixVideoConfig"),g(this,"onScreenShareStop"),A+=1,this.seq=A,this.log=r.log.createChild({id:"".concat(this.getAlias()).concat(A)}),this.log.info("created")}return n(e,[{key:"getName",value:function(){return e.Name}},{key:"getAlias",value:function(){return"vmix"}},{key:"getValidateRule",value:function(e){switch(e){case"start":return r=this.core,{name:"VideoMixerOptions",type:"object",required:!0,allowEmpty:!1,properties:{view:v({},S(r)),canvasInfo:v({},k(r,!0)),camera:v({},T(r)),screen:v({},x(r)),text:v({},V(r)),image:v({},E(r)),video:v({},M(r))},validate:function(e,t,n,i){var o=r.errorModule,a=o.RtcError,s=o.ErrorCode,c=o.ErrorCodeDictionary;if(r.environment.isMobile())throw new a({code:s.ENV_NOT_SUPPORTED,message:"VideoMixer is not supported on mobile devices currently"});var u=e.onScreenShareStop;if(u&&!r.utils.isFunction(u))throw new a({code:s.INVALID_PARAMETER,extraCode:c.INVALID_PARAMETER_TYPE,fnName:n,messageParams:{key:"onScreenShareStop",value:l(u),rule:{type:"Function"}}})}};case"update":return function(e){return{name:"VideoMixerOptions",type:"object",required:!1,allowEmpty:!1,properties:{view:v({},S(e)),canvasInfo:v({},k(e)),camera:v({},T(e)),screen:v({},x(e)),text:v({},V(e)),image:v({},E(e)),video:v({},M(e))}}}(this.core);case"stop":return this.core,{name:"StopVideoMixerOptions",required:!1}}var r}},{key:"getGroup",value:function(){return"vmix"}},{key:"start",value:(_=t(o().m(function e(r){var t,n,i,a;return o().w(function(e){for(;;)switch(e.n){case 0:return this.localMixVideoTrack||(this.localMixVideoTrack=new this.core.LocalMixVideoTrack(this.core.room.videoManager)),this._mixVideoConfig={canvasInfo:{width:1920,height:1080}},r=this.core.utils.deepCloneBasic(r),n=(t=r).view,i=t.onScreenShareStop,e.n=1,this.parseMixOptions(r);case 1:return a=e.v,i&&(this.onScreenShareStop=i,this._mixVideoConfig.onScreenShareStop=i),this._updatePreview({view:n,track:this.localMixVideoTrack}),this.core.utils.isUndefined(n)||(this._mixVideoConfig.view=n),e.n=2,this.localMixVideoTrack.startMix();case 2:return e.a(2,{track:this.localMixVideoTrack._outputTrack,systemAudioTrackList:this.systemAudioTrackList,result:a})}},e,this)})),function(e){return _.apply(this,arguments)})},{key:"update",value:(P=t(o().m(function e(r){var t,n,i,a,s;return o().w(function(e){for(;;)switch(e.n){case 0:if(t=this.core.errorModule,n=t.RtcError,i=t.ErrorCode,this.localMixVideoTrack){e.n=1;break}throw new n({code:i.INVALID_OPERATION,message:"mixTrack doesn't initialize!"});case 1:return r=this.core.utils.deepCloneBasic(r),a=r.view,e.n=2,this.parseMixOptions(r);case 2:return s=e.v,e.n=3,this._updatePreview({view:a,track:this.localMixVideoTrack,prevConfig:this._mixVideoConfig});case 3:return this.core.utils.isUndefined(a)||(this._mixVideoConfig.view=a),e.a(2,{track:this.localMixVideoTrack._outputTrack,systemAudioTrackList:this.systemAudioTrackList,result:s})}},e,this)})),function(e){return P.apply(this,arguments)})},{key:"parseMixOptions",value:(I=t(o().m(function e(r){var t,n,i,a,s,u,l,f,d,p,h,m,y,g,b,k,S,w,T,x,V,E,M,A,C,O,I,P,_,L,q,R,N;return o().w(function(e){for(;;)switch(e.n){case 0:if(t={successOptions:{},failedDetails:[]},n=this.core.errorModule,i=n.RtcError,a=n.ErrorCode,n.ErrorCodeDictionary,this.localMixVideoTrack&&this._mixVideoConfig){e.n=1;break}return e.a(2,t);case 1:if(s=[],u=v({},r),l=r.canvasInfo,f=r.camera,d=r.screen,p=r.text,h=r.image,m=r.video,y=0,g=0,l&&(b=l.canvasColor,k=l.width,S=l.height,w=l.frameRate,b&&this.localMixVideoTrack.setMixBackground(b),w&&this.localMixVideoTrack.setFps(w),this.localMixVideoTrack.resizeMixCanvas(k,S),this._mixVideoConfig.canvasInfo=l),!f){e.n=3;break}return y++,e.n=2,this.parseCameraOptions(this.localMixVideoTrack,f,this._mixVideoConfig.camera);case 2:T=e.v,x=T.finalOptions,V=T.errors,this._mixVideoConfig.camera=x,u.camera=x,V.length>0&&(s.push.apply(s,c(V)),V.length===f.length&&g++);case 3:if(!d){e.n=5;break}return y++,e.n=4,this.parseScreenOptions(this.localMixVideoTrack,d,this._mixVideoConfig.screen);case 4:E=e.v,M=E.finalOptions,A=E.errors,this._mixVideoConfig.screen=M,u.screen=M,A.length>0&&(s.push.apply(s,c(A)),A.length===d.length&&g++);case 5:if(!p){e.n=7;break}return y++,e.n=6,this.parseTextOptions(this.localMixVideoTrack,p,this._mixVideoConfig.text);case 6:C=e.v,O=C.finalOptions,I=C.errors,this._mixVideoConfig.text=O,u.text=O,I.length>0&&(s.push.apply(s,c(I)),I.length===p.length&&g++);case 7:if(!h){e.n=9;break}return y++,e.n=8,this.parseImageOptions(this.localMixVideoTrack,h,this._mixVideoConfig.image);case 8:P=e.v,_=P.finalOptions,L=P.errors,this._mixVideoConfig.image=_,u.image=_,L.length>0&&(s.push.apply(s,c(L)),L.length===h.length&&g++);case 9:if(!m){e.n=11;break}return y++,e.n=10,this.parseVideoOptions(this.localMixVideoTrack,m,this._mixVideoConfig.video);case 10:q=e.v,R=q.finalOptions,N=q.errors,this._mixVideoConfig.video=R,u.video=R,N.length>0&&(s.push.apply(s,c(N)),N.length===m.length&&g++);case 11:if(!(g>0&&g===y)){e.n=12;break}throw new i({code:a.INVALID_PARAMETER,message:"all sources mix failed",data:{failedDetails:s}});case 12:return t={successOptions:u,failedDetails:s},e.a(2,t)}},e,this)})),function(e){return I.apply(this,arguments)})},{key:"parseCameraOptions",value:(O=t(o().m(function e(r,t){var n,a,s,c,u,l,f,d,p,h,m,y,v,g,b,k,S,w,T,x,V,E,M,A,C=arguments;return o().w(function(e){for(;;)switch(e.p=e.n){case 0:n=C.length>2&&void 0!==C[2]?C[2]:[],c=new Set(t.map(function(e){return e.id})),u=n.filter(function(e){return!c.has(e.id)}).map(function(e){return e.id}),l=i(u);try{for(l.s();!(f=l.n()).done;)d=f.value,r.removeCameraSource(d)}catch(e){l.e(e)}finally{l.f()}p=new Map(n.map(function(e){return[e.id,e]})),h=[],m=[],y=i(t),e.p=1,y.s();case 2:if((v=y.n()).done){e.n=12;break}if(g=v.value,b=g.id,k=g.layout,S=g.profile,e.p=3,!r.inputLocalVideoTracks.has(b)){e.n=5;break}return w=null==(a=r.inputLocalVideoTracks.get(b))?void 0:a.mediaTrack,e.n=4,this.updateCameraProfile(g);case 4:T=null==(s=r.inputLocalVideoTracks.get(b))?void 0:s.mediaTrack,x=void 0,S&&(x=this.core.utils.isString(S)?this.core.constants.videoProfileMap[S]:S),T!==w?r.updateCameraSource(b,k,T,x):r.updateCameraSource(b,k,null,x),e.n=9;break;case 5:return e.n=6,this.captureCamera(g);case 6:V=e.v,e.p=7,r.addCameraSource(b,V,k),e.n=9;break;case 8:throw e.p=8,E=e.v,V.close(),E;case 9:h.push(g),e.n=11;break;case 10:e.p=10,M=e.v,m.push({id:b,error:M}),p.has(b)&&h.push(p.get(b));case 11:e.n=2;break;case 12:e.n=14;break;case 13:e.p=13,A=e.v,y.e(A);case 14:return e.p=14,y.f(),e.f(14);case 15:return e.a(2,{finalOptions:h,errors:m})}},e,this,[[7,8],[3,10],[1,13,14,15]])})),function(e,r){return O.apply(this,arguments)})},{key:"parseScreenOptions",value:(C=t(o().m(function e(r,t){var n,i,a,s,c,u,l,f=arguments;return o().w(function(e){for(;;)switch(e.n){case 0:return n=f.length>2&&void 0!==f[2]?f[2]:[],i=this.prepareScreenOptions(t,n),a=i.removeIdList,s=i.preOptionsMap,this.removeUnusedScreenSources(r,a),e.n=1,this.processScreenSources(r,t,s);case 1:return c=e.v,u=c.finalOptions,l=c.errors,e.a(2,{finalOptions:u,errors:l})}},e,this)})),function(e,r){return C.apply(this,arguments)})},{key:"prepareScreenOptions",value:function(e,r){var t=new Set(e.map(function(e){return e.id}));return{removeIdList:r.filter(function(e){return!t.has(e.id)}).map(function(e){return e.id}),preOptionsMap:new Map(r.map(function(e){return[e.id,e]}))}}},{key:"removeUnusedScreenSources",value:function(e,r){var t,n=i(r);try{for(n.s();!(t=n.n()).done;){var o=t.value;e.removeScreenSource(o),this.removeSystemAudioTrack(o)}}catch(e){n.e(e)}finally{n.f()}}},{key:"processScreenSources",value:(w=t(o().m(function e(r,t,n){var a,s,c,u,l,f,d;return o().w(function(e){for(;;)switch(e.p=e.n){case 0:a=[],s=[],c=i(t),e.p=1,c.s();case 2:if((u=c.n()).done){e.n=7;break}return l=u.value,e.p=3,e.n=4,this.processSingleScreenSource(r,l,n,a);case 4:e.n=6;break;case 5:e.p=5,f=e.v,this.handleScreenSourceError(l.id,f,n,a,s);case 6:e.n=2;break;case 7:e.n=9;break;case 8:e.p=8,d=e.v,c.e(d);case 9:return e.p=9,c.f(),e.f(9);case 10:return e.a(2,{finalOptions:a,errors:s})}},e,this,[[3,5],[1,8,9,10]])})),function(e,r,t){return w.apply(this,arguments)})},{key:"processSingleScreenSource",value:(b=t(o().m(function e(r,t,n,i){var a,s,c,u,l;return o().w(function(e){for(;;)switch(e.n){case 0:if(a=t.id,s=t.layout,c=n.get(a),u=r.inputLocalScreenTracks.has(a),l=!(null==c?void 0:c.systemAudio)&&t.systemAudio,!u||l){e.n=2;break}return e.n=1,this.updateExistingScreenSource(r,a,s,c,t);case 1:e.n=3;break;case 2:return e.n=3,this.addNewScreenSource(r,t,c);case 3:i.push(t);case 4:return e.a(2)}},e,this)})),function(e,r,t,n){return b.apply(this,arguments)})},{key:"updateExistingScreenSource",value:(y=t(o().m(function e(r,t,n,i,a){return o().w(function(e){for(;;)switch(e.n){case 0:r.updateScreenSource(t,n),(null==i?void 0:i.systemAudio)&&!a.systemAudio&&this.removeSystemAudioTrack(t);case 1:return e.a(2)}},e,this)})),function(e,r,t,n,i){return y.apply(this,arguments)})},{key:"addNewScreenSource",value:(m=t(o().m(function e(r,t,n){var i,a;return o().w(function(e){for(;;)switch(e.p=e.n){case 0:return e.n=1,this.captureScreen(t);case 1:i=e.v,!(null==n?void 0:n.systemAudio)&&t.systemAudio&&r.inputLocalScreenTracks.has(t.id)&&r.removeScreenSource(t.id),e.p=2,r.addScreenSource(t.id,i,t.layout),e.n=4;break;case 3:throw e.p=3,a=e.v,i.close(),a;case 4:return e.a(2)}},e,this,[[2,3]])})),function(e,r,t){return m.apply(this,arguments)})},{key:"handleScreenSourceError",value:function(e,r,t,n,i){i.push({id:e,error:r}),t.has(e)&&n.push(t.get(e))}},{key:"parseTextOptions",value:(h=t(o().m(function e(r,t){var n,a,c,u,l,f,d,p,h,m,y,v,g,b=arguments;return o().w(function(e){for(;;)switch(e.p=e.n){case 0:n=b.length>2&&void 0!==b[2]?b[2]:[],a=new Set(t.map(function(e){return e.id})),c=n.filter(function(e){return!a.has(e.id)}).map(function(e){return e.id}),u=i(c);try{for(u.s();!(l=u.n()).done;)f=l.value,r.removeTextSource(f)}catch(e){u.e(e)}finally{u.f()}d=new Map(n.map(function(e){return[e.id,e]})),p=[],h=[],m=i(t),e.p=1,v=o().m(function e(){var t,i;return o().w(function(e){for(;;)switch(e.n){case 0:t=y.value,i=t.id;try{n.some(function(e){return e.id===i})?r.updateTextSource(t):r.addTextSource(t),p.push(t)}catch(e){h.push({id:i,error:e}),d.has(i)&&p.push(d.get(i))}case 1:return e.a(2)}},e)}),m.s();case 2:if((y=m.n()).done){e.n=4;break}return e.d(s(v()),3);case 3:e.n=2;break;case 4:e.n=6;break;case 5:e.p=5,g=e.v,m.e(g);case 6:return e.p=6,m.f(),e.f(6);case 7:return e.a(2,{finalOptions:p,errors:h})}},e,null,[[1,5,6,7]])})),function(e,r){return h.apply(this,arguments)})},{key:"parseImageOptions",value:(p=t(o().m(function e(r,t){var n,a,c,u,l,f,d,p,h,m,y,v,g,b=this,k=arguments;return o().w(function(e){for(;;)switch(e.p=e.n){case 0:n=k.length>2&&void 0!==k[2]?k[2]:[],a=new Set(t.map(function(e){return e.id})),c=n.filter(function(e){return!a.has(e.id)}).map(function(e){return e.id}),u=i(c);try{for(u.s();!(l=u.n()).done;)f=l.value,r.removeImageSource(f)}catch(e){u.e(e)}finally{u.f()}d=new Map(n.map(function(e){return[e.id,e]})),p=[],h=[],m=i(t),e.p=1,v=o().m(function e(){var t,i,a,s,c,u,l,f;return o().w(function(e){for(;;)switch(e.p=e.n){case 0:if(t=y.value,i=t.id,a=t.url,s=t.layout,e.p=1,!(c=n.find(function(e){return e.id===i}))){e.n=4;break}if(c.url===a){e.n=3;break}return e.n=2,b.core.utils.loadImage(a);case 2:u=e.v;case 3:r.updateImageSource(i,s,u),e.n=6;break;case 4:return e.n=5,b.core.utils.loadImage(a);case 5:l=e.v,r.addImageSource(i,l,s);case 6:p.push(t),e.n=8;break;case 7:e.p=7,f=e.v,h.push({id:i,error:f}),d.has(i)&&p.push(d.get(i));case 8:return e.a(2)}},e,null,[[1,7]])}),m.s();case 2:if((y=m.n()).done){e.n=4;break}return e.d(s(v()),3);case 3:e.n=2;break;case 4:e.n=6;break;case 5:e.p=5,g=e.v,m.e(g);case 6:return e.p=6,m.f(),e.f(6);case 7:return e.a(2,{finalOptions:p,errors:h})}},e,null,[[1,5,6,7]])})),function(e,r){return p.apply(this,arguments)})},{key:"parseVideoOptions",value:(d=t(o().m(function e(r,t){var n,a,c,u,l,f,d,p,h,m,y,v,g,b=this,k=arguments;return o().w(function(e){for(;;)switch(e.p=e.n){case 0:n=k.length>2&&void 0!==k[2]?k[2]:[],a=new Set(t.map(function(e){return e.id})),c=n.filter(function(e){return!a.has(e.id)}).map(function(e){return e.id}),u=i(c);try{for(u.s();!(l=u.n()).done;)f=l.value,r.removeVideoSource(f)}catch(e){u.e(e)}finally{u.f()}d=new Map(n.map(function(e){return[e.id,e]})),p=[],h=[],m=i(t),e.p=1,v=o().m(function e(){var t,i,a,s,c,u,l,f;return o().w(function(e){for(;;)switch(e.p=e.n){case 0:if(t=y.value,i=t.id,a=t.url,s=t.layout,e.p=1,!(c=n.find(function(e){return e.id===i}))){e.n=4;break}if(c.url===a){e.n=3;break}return e.n=2,b.core.utils.loadVideo(a);case 2:u=e.v;case 3:r.updateVideoSource(i,s,u),e.n=6;break;case 4:return e.n=5,b.core.utils.loadVideo(a);case 5:l=e.v,r.addVideoSource(i,l,s);case 6:p.push(t),e.n=8;break;case 7:e.p=7,f=e.v,h.push({id:i,error:f}),d.has(i)&&p.push(d.get(i));case 8:return e.a(2)}},e,null,[[1,7]])}),m.s();case 2:if((y=m.n()).done){e.n=4;break}return e.d(s(v()),3);case 3:e.n=2;break;case 4:e.n=6;break;case 5:e.p=5,g=e.v,m.e(g);case 6:return e.p=6,m.f(),e.f(6);case 7:return e.a(2,{finalOptions:p,errors:h})}},e,null,[[1,5,6,7]])})),function(e,r){return d.apply(this,arguments)})},{key:"captureCamera",value:(f=t(o().m(function e(r){var t,n,i,a,s,c;return o().w(function(e){for(;;)switch(e.n){case 0:return t=r.id,n=r.cameraId,i=r.videoTrack,a=r.profile,(s=new this.core.LocalVideoTrack).log.id+="-".concat(t),c={},n?c.deviceId=n:this.core.utils.isUndefined(i)||(c.customSource=i),this.core.utils.isUndefined(a)||(this.core.utils.isString(a)?this.core.constants.videoProfileMap[a]&&s.setProfile(this.core.constants.videoProfileMap[a]):s.setProfile(a)),e.n=1,s.capture(c);case 1:return e.a(2,s)}},e,this)})),function(e){return f.apply(this,arguments)})},{key:"updateCameraProfile",value:(u=t(o().m(function e(r){var t,n,i,a,s,c;return o().w(function(e){for(;;)switch(e.n){case 0:if(n=r.id,i=r.cameraId,a=r.videoTrack,s=r.profile,c=null==(t=this.localMixVideoTrack)?void 0:t.inputLocalVideoTracks.get(n)){e.n=1;break}return e.a(2);case 1:if(!i){e.n=3;break}return e.n=2,c.switchDevice(i);case 2:e.n=4;break;case 3:if(this.core.utils.isUndefined(a)){e.n=4;break}return e.n=4,c.setInputMediaStreamTrack(a);case 4:if(this.core.utils.isUndefined(s)){e.n=5;break}if(this.core.utils.isString(s)?this.core.constants.videoProfileMap[s]&&c.setProfile(this.core.constants.videoProfileMap[s]):c.setProfile(s),i&&c.isNeedToSwitchDevice(i)){e.n=5;break}return e.n=5,c.applyProfile();case 5:return e.a(2)}},e,this)})),function(e){return u.apply(this,arguments)})},{key:"captureScreen",value:(a=t(o().m(function e(r){var t,n,i,a,s,c,u,l=this;return o().w(function(e){for(;;)switch(e.n){case 0:return t=r.id,n=r.profile,i=r.captureElement,a=r.preferDisplaySurface,(s=new this.core.LocalScreenTrack).log.id+="-".concat(t),c={},this.core.utils.isUndefined(n)||(this.core.utils.isString(n)?this.core.constants.screenProfileMap[n]&&s.setProfile(this.core.constants.screenProfileMap[n]):s.setProfile(n)),i&&(c.captureElement=i),a&&(c.preferDisplaySurface=a),c.systemAudio=r.systemAudio,e.n=1,s.capture(c);case 1:return u=e.v,c.systemAudio&&u.getAudioTracks().length>0?(this.systemAudioTrackList[t]=u.getAudioTracks()[0],this.log.info(t+" system audio track captured")):this.removeSystemAudioTrack(t),s.mediaTrack.addEventListener(this.core.constants.NAME.ENDED,function(){var e,r,n;null==(e=l.localMixVideoTrack)||e.removeScreenSource(t),(null==(r=l._mixVideoConfig)?void 0:r.screen)&&(l._mixVideoConfig.screen=l._mixVideoConfig.screen.filter(function(e){return e.id!==t})),null==(n=l.onScreenShareStop)||n.call(l,t)}),e.a(2,s)}},e,this)})),function(e){return a.apply(this,arguments)})},{key:"_updatePreview",value:(r=t(o().m(function e(r){var t,n,i,a,s;return o().w(function(e){for(;;)switch(e.n){case 0:if(t=r.view,n=r.track,i=r.prevConfig,!(this.core.utils.isUndefined(t)&&i&&i.view)){e.n=1;break}if(!((a=this.core.utils.getViewListFromView(i.view)).length>0)){e.n=1;break}return e.n=1,n.play(a);case 1:if(this.core.utils.isUndefined(t)){e.n=4;break}if(!((s=this.core.utils.getViewListFromView(t)).length>0)){e.n=3;break}return e.n=2,n.play(s);case 2:e.n=4;break;case 3:n.stop();case 4:return e.a(2)}},e,this)})),function(e){return r.apply(this,arguments)})},{key:"stop",value:function(){var e;null==(e=this.localMixVideoTrack)||e.close(),this.localMixVideoTrack=null,Object.values(this.systemAudioTrackList).forEach(function(e){return e.stop()}),this.systemAudioTrackList={},delete this.onScreenShareStop,delete this._mixVideoConfig}},{key:"removeSystemAudioTrack",value:function(e){this.systemAudioTrackList[e]&&(this.systemAudioTrackList[e].stop(),this.log.info(e+" system audio track stop"),delete this.systemAudioTrackList[e])}}]);var r,a,u,f,d,p,h,m,y,b,w,C,O,I,P,_}();return g(C,"Name","VideoMixer"),C});
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rtc-plugin/virtual-background",
3
- "version": "5.15.0-wasm.1",
3
+ "version": "5.15.0",
4
4
  "description": "TRTC Web SDK 5.x virtual background plugin",
5
5
  "main": "./virtual-background.esm.js",
6
6
  "module": "./virtual-background.esm.js",