@tencentcloud/lite-chat 1.5.0 → 1.5.2

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.
@@ -1 +1 @@
1
- function e(e,t){var r={};for(o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var i=0,o=Object.getOwnPropertySymbols(e);i<o.length;i++)t.indexOf(o[i])<0&&Object.prototype.propertyIsEnumerable.call(e,o[i])&&(r[o[i]]=e[o[i]]);return r}function t(e,a,n,l){return new(n=n||Promise)(function(r,t){function i(e){try{s(l.next(e))}catch(e){t(e)}}function o(e){try{s(l.throw(e))}catch(e){t(e)}}function s(e){var t;e.done?r(e.value):((t=e.value)instanceof n?t:new n(function(e){e(t)})).then(i,o)}s((l=l.apply(e,a||[])).next())})}var o=new class{constructor(){this._name="WebRequest"}init(e){this._core=e}request(g,m){return t(this,void 0,void 0,function*(){let e,t=(null==(e=this._core)?void 0:e.utils).isEmpty,{downloadUrl:r="",method:i="PUT",url:o,qs:s,headers:a={},resources:n,dataType:l="text",uploadByIP:d,uploadIP:h}=g,u=o;if(s){let e=this._queryString(s);e&&(u+=(u.includes("?")?"&":"?")+e)}let c=new XMLHttpRequest;c.open(i.toUpperCase(),u,!0),c.responseType=l;var p=Object.assign({},a);if(d&&h&&(p.host=h),!t(p))for(let e in p)p.hasOwnProperty(e)&&!["content-length","user-agent","origin","host"].includes(e.toLowerCase())&&c.setRequestHeader(e,p[e]);return c.onload=()=>{var e=this._getResponseBody(c,r,d&&h),e=this._buildResponse(c,e);if(200===c.status)m(null,e);else{if(h&&!u.includes(h))return g.url=this._domainName2IP(u,h),g.uploadByIP=!0,this.request(g,m);m({code:c.status,message:JSON.stringify(c.responseText)},e)}},c.onerror=()=>{var e=this._getResponseBody(c,r,d&&h),e=this._buildResponse(c,e),t={code:c.status,message:0===c.status?"CORS blocked or network error":JSON.stringify(c.responseText)};m(t,e)},g.onProgress&&c.upload&&(c.upload.onprogress=e=>{var{total:e,loaded:t}=e,r=Math.min(Math.floor(100*t/e),100);g.onProgress({total:e,loaded:t,percent:r/100})}),c.send(n),c})}_buildResponse(e,t){let r={};return e.getAllResponseHeaders().trim().split("\n").forEach(e=>{var t;e&&([e,t]=e.split(":").map(e=>e.trim()),r[e.toLowerCase()]=t)}),{statusCode:e.status,statusMessage:e.statusText,headers:r,data:t}}_getResponseBody(e,t,r){return 200===e.status&&t?{location:t,uploadIP:r}:{response:e.responseText,uploadIP:r}}_queryString(r,i="&",o="="){var{isEmpty:e,isPlainObject:t}=null==(e=this._core)?void 0:e.utils;return e(r)?"":t(r)?Object.keys(r).map(e=>{let t=encodeURIComponent(e)+o;return Array.isArray(r[e])?r[e].map(e=>t+encodeURIComponent(e)).join(i):t+encodeURIComponent(r[e])}).filter(Boolean).join(i):void 0}_domainName2IP(e,t){return e.replace(/^http(s)?:\/\/(.*?)\//,`https://${t}/`)}};let s=["unknown","image","video","audio","log"];var U,i=new class{init(e){this._core=e}request(i,t){let r,{MINI_APP_NAMESPACE:o,IN_ALIPAY_MINI_APP:a,IN_UNI_IOS_APP:n}=null==(r=this._core)?void 0:r.utils,{resources:l="",headers:d={},url:h,downloadUrl:u=""}=i,c=h,p=null;var g=u?u.match(/^(https?:\/\/[^/]+\/)([^/]*\/?)(.*)$/):null;if(g){var g=decodeURIComponent(g[3]),g=g.includes("?")?g.split("?")[0]:g||"",g={key:i.fileKey||g,success_action_status:200,"Content-Type":""},m={};if(n){let[e,t]=h.split("?sign=");t&&(c=e+"?sign="+encodeURIComponent(t),m.sign=decodeURIComponent(t),m.signature=decodeURIComponent(t))}let r={url:c,header:d,name:"file",filePath:l,formData:Object.assign(Object.assign({},g),m),timeout:i.timeout||3e5};if(a){let t=e(r,["name"]);r=Object.assign(Object.assign({},t),{fileName:"file",fileType:i.fileType?s[i.fileType]:"image"})}return(p=o.uploadFile(Object.assign(Object.assign({},r),{success:e=>{this._handleResponse({response:e,downloadUrl:u,callback:t})},fail:e=>{this._handleResponse({response:e,downloadUrl:u,callback:t})}}))).onProgressUpdate&&p.onProgressUpdate(e=>{i.onProgress&&i.onProgress({total:e.totalBytesExpectedToSend||0,loaded:e.totalBytesSent||0,percent:e.progress?Math.floor(e.progress)/100:0})}),p}console.warn("message Invalid download URL format")}_handleResponse(e){var{downloadUrl:e,response:t,callback:r}=e,i={};if(t.header)for(let e in t.header)t.header.hasOwnProperty(e)&&(i[e.toLowerCase()]=t.header[e]);var o=+t.statusCode;200==o?r(null,{statusCode:o,headers:i,data:Object.assign(Object.assign({},t.data),{location:e})}):r({code:o,message:JSON.stringify(t.data)},{statusCode:o,headers:i,data:void 0})}};function r(e){return"file"===Object.prototype.toString.call(e).match(/^\[object (.*)\]$/)[1].toLowerCase()}function n(e){e=e||99999999;return Math.round(Math.random()*e)}function a(e,t=!0,r=!0){var i=Date.now();return t?r?i-e+" ms":Math.round((i-e)/1e3)+" s":r?i-e:Math.round((i-e)/1e3)}function l(e){return Array.from({length:8},()=>Math.floor(65536*(1+Math.random())).toString(16).substring(1)).join("")+"-"+e}function d(e,t){return Math.round(Number(e)*10**t)/10**t}function c(e){return e<1024?e+"B":e<1048576?Math.floor(e/1024)+"KB":Math.floor(e/1048576)+"MB"}function h(e){return e<=1048576?d(e/1024,1)+"KB/s":d(e/1048576,1)+"MB/s"}let u="TIMImageElem",p="TIMSoundElem",g="TIMFileElem",m="TIMVideoFileElem",f="RichMediaMessagePlugin",_=["rich.my-imcloud.com","imrich.qcloud.com"],v=1,I=2,y=3,w=(!function(e){e.UNSENT="unSend",e.SUCCESS="success",e.FAIL="fail"}(U=U||{}),{wechat:/^(wxfile:\/\/tmp_|http:\/\/temp\/|cloud:\/\/temp-)/,alipay:/^(https:\/\/resource\/|alipayfile:\/\/tmp\/)/,baidu:/^(http:\/\/tmp\/|swanfile:\/\/tmp_)/,bytedance:/^(ttfile:\/\/tmp_|\/(var|tmp)\/|tttemp:\/\/)/,qq:/^(qqfile:\/\/tmp_|http:\/\/qtemp\/)/});var S=new class{init(e){this._core=e}addAuthToUrl(e=""){return this._isMiniProgramTempFile(e)?e:(e=(e=e)?!e.startsWith("https://")&&e.startsWith("http://")?e.replace("http://","https://"):e:"",this.processResourceUrl(e))}removeAuthToUrl(r){{var[r,i]=r.split("?");if(!i)return r;let t=i.split("&").reduce((e,t)=>{var[t,r]=t.split("=");return t&&"authKey"!==t&&(e[t]=r||""),e},{}),e=Object.keys(t).map(e=>""+e+(t[e]?"="+t[e]:"")).join("&");return e?r+"?"+e:r}}_isMiniProgramTempFile(t){return!!this.getPlatformFlags().IN_MINI_APP&&Object.values(w).some(e=>e.test(t))}extractFileFromInput(e){return r(e)?e:function(t){if("object"==typeof t&&null!==t){t=Object.getPrototypeOf(t);if(null===t)return 1;let e=t;for(;null!==Object.getPrototypeOf(e);)e=Object.getPrototypeOf(e);return t===e}}(e)&&"undefined"!=typeof uni?Array.isArray(e.tempFiles)&&0<e.tempFiles.length?e.tempFiles[0]:null:e instanceof HTMLInputElement&&e.files&&0<e.files.length?e.files[0]:null}probeImageWidthHeight(r){return t(this,void 0,void 0,function*(){var{IN_MINI_APP:e,IN_BROWSER:t}=(null==(e=this._core)?void 0:e.utils)||{};return this._shouldSkipProbing()?{width:0,height:0}:t?this._probeImageDimensionsWeb(r):e?this._probeImageDimensionsMiniApp(r):void 0})}isSimpleCos(){var e=((null==(e=this._core)?void 0:e.store.get("cloudConfig"))||{})["simple_cos"];return"0"!==e}getFileDNList(){let e,t=_;var r=((null==(e=this._core)?void 0:e.store.get("cloudConfig"))||{})["file_dn_list"];if(void 0!==r)try{JSON.parse(r).forEach(e=>{t.includes(e)||t.push(e)})}catch(e){console.warn(e),t=_}return t}getPlatform(){var e;return null==(e=this._core)?void 0:e.utils.platform}generateUUID(e,t){let r,i=`${this.getSDKAppID()}-${this.getCurrentUserID()}-`+(null==(r=this._core)?void 0:r.utils.randomString());return t?i+"."+t:(e=(t=e.name||e.value||e.url||e.tempFilePath)&&t.slice(t.lastIndexOf(".")+1),i=e?i+"."+e:i)}processResourceUrl(e){if(!e)return"";let t=e;var r=this.getFileDownloadProxy(),i=this.getAuthKey(),o=this.getFileDNList(),e=(r&&(e.startsWith("http://")?t=e.replace(/^http:\/\/[^/]+/,r):e.startsWith("https://")&&(t=e.replace(/^https:\/\/[^/]+/,r))),i&&-1===t.indexOf("authKey=")&&function(e,t){let r=!1;if(e){var e=e.match(/:\/\/([0-9]?\.)?(.[^/:]+)/),i=e&&e[2]||"";if(i.includes("rich-dev"))return!0;for(let e=0;e<t.length;e++)if(i.endsWith(t[e])){r=!0;break}}return r}(t,o));return t=e?-1<t.indexOf("?")?t+"&authKey="+i:t+"?authKey="+i:t}getCurrentUserID(){var e;return null==(e=null==(e=this._core)?void 0:e.store.get("login"))?void 0:e.userId}getSDKAppID(){var e;return null==(e=null==(e=this._core)?void 0:e.store.get("instance"))?void 0:e.sdkAppId}getFileDownloadProxy(){var e;return(null==(e=null==(e=this._core)?void 0:e.store.get("instance"))?void 0:e.fileDownloadProxy)||""}getFileUploadProxy(){var e;return(null==(e=null==(e=this._core)?void 0:e.store.get("instance"))?void 0:e.fileUploadProxy)||""}getAuthKey(){var e;return(null==(e=null==(e=this._core)?void 0:e.store.get("login"))?void 0:e.authKey)||""}isPrivateNetWork(){var e;return null==(e=null==(e=this._core)?void 0:e.store.get("instance"))?void 0:e.proxyServer}getPlatformFlags(){var{IN_BROWSER:e,IN_MINI_APP:t,IN_RN_APP:r,IN_UNI_NATIVE_APP:i}=null==(e=this._core)?void 0:e.utils;return{IN_BROWSER:e,IN_MINI_APP:t,IN_RN_APP:r,IN_UNI_NATIVE_APP:i}}isEmpty(e){var t=(null==(t=this._core)?void 0:t.utils)["isEmpty"];return t(e)}_probeImageDimensionsMiniApp(e){let t,r=((null==(t=this._core)?void 0:t.utils)||{}).MINI_APP_NAMESPACE;return new Promise(t=>{r.getImageInfo({src:e,success:e=>t({width:e.width,height:e.height}),fail:()=>t({width:0,height:0})})})}_shouldSkipProbing(){var{IN_RN_APP:e,IS_IE:t,IE_VERSION:r}=(null==(e=this._core)?void 0:e.utils)||{};return e||t&&9===r}_probeImageDimensionsWeb(i){return new Promise(e=>{let t=new Image,r=()=>{t.onload=null,t.onerror=null,t.src=""};t.onload=()=>{e({width:t.width,height:t.height}),r()},t.onerror=()=>{e({width:0,height:0}),r()},t.src=i})}},P=new class{constructor(){this.uploadFileTryCount=0,this.maxRetries=1,this.systemClockOffset=0,this.httpRequest=null,this.uploadFileType="",this.duration=900,this.fetchCosTryCount=0}init(e){var t=(this._core=e).utils["IN_MINI_APP"];this.httpRequest=t?i:o,null!=(t=this.httpRequest)&&t.init(e)}uploadToCOS(l){return t(this,void 0,void 0,function*(){var t=f+" uploadToCOS",e=l["file"];this.uploadFileType=l.uploadFileType,console.log(t+" options:",l);try{var r=Date.now(),i=yield this._createCosOptions(l),o=yield this._uploadFile(i),s=(this._handleUploadError(o,l),this._createUploadResult(e,o)),a=Date.now()-r,n=`size:${c(e.size)} time:${a}ms speed:`+h(1e3*e.size/a);return console.log(t+` ok. name:${e.name} `+n),{uploadOptions:i,response:s}}catch(e){throw console.warn(t+" failed, error:",e),e}})}_handleUploadError(e,t){var r=(null==(r=this._core)?void 0:r.helper)["ChatError"];if(403===e.statusCode)throw a(Date.now(),!1),t.url,null!=(t=null==e?void 0:e.data)&&t.uploadIP&&e.data.uploadIP,new r({message:"Upload failed with status 403"})}_createUploadResult(e,t){return{fileName:e.name,fileSize:e.size,fileType:e.type.slice(e.type.indexOf("/")+1).toLowerCase(),location:t.data.location||"",uploadTime:a(Date.now(),!1),uploadSpeed:h(1e3*e.size/a(Date.now(),!1))}}_createCosOptions(c){return t(this,void 0,void 0,function*(){var{fileName:e,resources:t,uploadMethod:r}=this._prepareUploadParams(c),i=this._isC2CConversation(c.message.conversationID)?1:2;try{var o=yield this._fetchCosSignatureUrl({fileType:this.uploadFileType,fileName:e,uploadMethod:r,duration:this.duration,userID:c.message.from,conversationType:i}),{uploadUrl:s,downloadUrl:a,requestSnapshotUrl:n,thumbUrl:l,largeUrl:d,fileKey:h}=o,u=!S.isPrivateNetWork()&&o.uploadIP;return{url:this._getRawOrUploadProxyUrl(s),fileType:this.uploadFileType,fileName:e,resources:t,downloadUrl:a,requestSnapshotUrl:n,thumbUrl:l,largeUrl:d,fileKey:h,uploadIP:u||"",onProgress:e=>this._handleUploadProgress(e,c)}}catch(e){throw console.error("Failed to create COS pre-signed URL options:",e),e}})}_prepareUploadParams(e){console.log(f+" prepareUploadParams:",e);var t=e["file"],{IN_MINI_APP:r,IN_RN_APP:i}=S.getPlatformFlags(),r=r||i,i=r&&e.message.type!==g,e=t["name"],e=e.slice(e.lastIndexOf(".")),e=""+n(999999)+e;return{fileName:l(i?t.name:e),resources:r?t.url:t,uploadMethod:r?1:0}}_handleUploadProgress(e,t){if("function"==typeof t.onProgress)try{t.onProgress(e.percent)}catch(e){throw console.warn("Upload progress callback error:",e),e}}_fetchCosSignatureUrl(n){return t(this,void 0,void 0,function*(){var r=f+" fetchCosSignatureUrl",i=S.isSimpleCos(),o=this._prepareCosRequestData(n),s=i?"im_cos_msg.simple_sig":"im_cos_msg.pre_sig";try{let e=yield function(o,s,a){return t(this,void 0,void 0,function*(){try{var{helper:e,channel:t}=a,r=e.generateCosSpecifiedData({servcmd:o,data:s}),i=r.head.seq+o;return yield t.sendPacket(r,{requestId:i})}catch(e){throw console.warn("getCosSig error:",e),e}})}(s,o,this._core);this.fetchCosTryCount=0;var a=this._processResponse(e);return console.log(r+` ok. isSimpleCos:${i} data:`,a),a||{}}catch(e){if(console.error(r+" failed, error:",e),this.fetchCosTryCount<1)return this.fetchCosTryCount++,this._fetchCosSignatureUrl(n);throw this.fetchCosTryCount=0,e}})}_processResponse(e){var t;let r=S.isSimpleCos(),l=r?null==(t=null==e?void 0:e.rpt_pre_sig)?void 0:t[0]:e;if(!l)return{};if(r){let{str_final_ip:e,rpt_pre_sig:t,uint32_file_id:r,uint32_exist_flag:i,str_download_url:o,str_upload_url:s,str_snapshot_url:a,str_file_key:n}=l;return{uploadIP:e,preSig:t,fileID:r,existFlag:i,downloadUrl:o,uploadUrl:s,requestSnapshotUrl:a,fileKey:n}}let{upload_url:i,download_url:o,snapshot_url:s,thumb_url:a,large_url:n,file_key:d}=l;return{uploadUrl:i,downloadUrl:o,requestSnapshotUrl:s,thumbUrl:a,largeUrl:n,fileKey:d}}_prepareCosRequestData(e){return S.isSimpleCos()?{uint32_upload_method:e.uploadMethod,uint32_platform:S.getPlatform(),uint32_sdkappid:S.getSDKAppID(),str_user_id:e.userID,uint32_scene:e.conversationType,rpt_upload_object:[{uint32_file_id:1,uint32_file_type:e.fileType,str_file_name:e.fileName}]}:{file_type:e.fileType,file_name:e.fileName,upload_method:e.uploadMethod,Duration:e.duration}}_uploadFile(o){return t(this,void 0,void 0,function*(){return new Promise((r,i)=>{this.httpRequest.request(o,(e,t)=>{e&&this.uploadFileTryCount<this.maxRetries&&this.shouldRetry(e)?(this.uploadFileTryCount++,this._uploadFile(o).then(r).catch(i)):(this.uploadFileTryCount=0,e?i(e):r(t))})})})}shouldRetry(e){return!(!e||5!==Math.floor(e.statusCode/100)&&(!this.isTimeRelatedError(e)||!this._isClockOutOfSync(e)||(this._syncSystemClock(e),0)))}isTimeRelatedError(e){var t,r;try{var i=null==(t=e.error)?void 0:t.Code,o=null==(r=e.error)?void 0:r.Message;return"RequestTimeTooSkewed"===i||"AccessDenied"===i&&"Request has expired"===o}catch(e){return!1}}_isClockOutOfSync(e){var t,e=(null==(t=e.headers)?void 0:t.date)||(null==(t=e.headers)?void 0:t.Date)||(null==(t=e.error)?void 0:t.ServerTime);return!!e&&(t=Date.now(),e=Date.parse(e),3e4<=Math.abs(t+this.systemClockOffset-e))}_syncSystemClock(e){var t,r=(null==(t=e.headers)?void 0:t.date)||(null==(t=e.headers)?void 0:t.Date)||(null==(t=e.error)?void 0:t.ServerTime);if(r){let e=Date.now(),t=Date.parse(r);this.systemClockOffset=t-e}}_getRawOrUploadProxyUrl(e){var t=S.getFileUploadProxy();let r=e;return r=t?e.replace(/^https:\/\/[^/]+/,t):r}_isC2CConversation(e){return"C2C"===e.slice(0,3)}};let F=2108,M=2251,b=2252,A=["jpg","jpeg","gif","png","bmp","image","webp"],O=20971520,T={JPG:1,JPEG:1,GIF:2,PNG:3,BMP:4,UNKNOWN:255};class N{constructor(e,t){this.instanceID=n(9999999),this.sizeType=e.type||0,this.type=0,this.size=e.size||0,this.width=e.width||0,this.height=e.height||0,this.imageUrl=S.addAuthToUrl(e.imageUrl||e.url||""),this.url=S.addAuthToUrl(e.url||t)}setSizeType(e){this.sizeType=e}setType(e){this.type=e}setImageUrl(e){e&&(this.imageUrl=S.addAuthToUrl(e))}getImageUrl(){return this.imageUrl}}function C(t){var{originUrl:t,originWidth:r,originHeight:i,min:o=198}=t,r=parseInt(r)||0,i=parseInt(i)||0,s={url:void 0,width:0,height:0};if((r<=i?r:i)<=o)s.url=t,s.width=r,s.height=i;else{i<=r?(s.width=Math.ceil(r*o/i),s.height=o):(s.width=o,s.height=Math.ceil(i*o/r));let e=t&&-1<t.indexOf("?")?t+"&":t+"?";s.url=198===o?e+"imageView2/3/w/198/h/198":e+"imageView2/3/w/720/h/720"}return void 0===t?e(s,["url"]):s}class E{constructor(e){this._imageMemoryURL="",this._percent=0,this.type=u;var{uuid:e,file:t,imageFormat:r,imageInfoArray:i=[]}=e;this._imageMemoryURL=this.createImageDataAsURL(t),this.content={imageFormat:r,uuid:e,imageInfoArray:[]},this.initImageInfoArray(i),this.autoFixUrl()}static parseServerPushElement(e){let t=e["MsgContent"],{ImageFormat:r,ImageInfoArray:i,UUID:o}=t,s=i.map(e=>({size:e.Size,type:e.Type,width:e.Width,height:e.Height,url:e.URL}));return new E({imageFormat:r,imageInfoArray:s,uuid:o})}createImageDataAsURL(e){let t="";var{IN_MINI_APP:r,IN_RN_APP:i,IN_BROWSER:o}=S.getPlatformFlags();return t=e&&((r||i)&&(t=e.url),o)?window.URL.createObjectURL(e):t}initImageInfoArray(t=[]){var r={type:0,size:0,width:0,height:0,url:""};for(let e=0;e<3;e++){var i=t[e]||Object.assign({},r),i=new N(i,this._imageMemoryURL);i.setSizeType(e+1),i.setType(e),this.addImageInfo(i)}this.updateAccessSideImageInfoArray()}autoFixUrl(){let i=["http","https"];this.content.imageInfoArray.forEach(e=>{var t,r;e.url&&""!==e.imageUrl&&([t,...r]=e.imageUrl.split("://"),r=r.join("://"),i.includes(t)||e.setImageUrl("https://"+r))})}updatePercent(e){this._percent=Math.min(e,1)}updateImageFormat(e){this.content.imageFormat=T[e.toUpperCase()]||T.UNKNOWN}addImageInfo(e){3<=this.content.imageInfoArray.length||this.content.imageInfoArray.push(e)}updateImageInfoArray(t){var r,i=this.content.imageInfoArray.length;for(let e=0;e<i;e++)r=this.content.imageInfoArray[e],t[e].size&&(r.size=t[e].size),t[e].url&&r.setImageUrl(t[e].url),t[e].width&&(r.width=t[e].width),t[e].height&&(r.height=t[e].height)}updateAccessSideImageInfoArray(){var[e]=this.content.imageInfoArray;if(e&&0!==e.width&&0!==e.height){var t=this.content.imageInfoArray,r=t[2];t[2]=t[1],t[1]=r;for(let e=0;e<t.length;e++)t[e].setType(e);Object.assign(this.content.imageInfoArray[2],C({originWidth:e.width,originHeight:e.height,min:720}))}}validateBeforeSend(){var[e]=this.content.imageInfoArray,e=!!e&&""!==e.imageUrl&&0!==e.size;return{isValid:e,error:e?null:{message:"content can not be empty"}}}transformToServerFormat(e){var{isMergerMessage:e=!1}=e||{},{uuid:e,imageFormat:t,imageInfoArray:r}=e?this.payload:this.content;return{MsgType:this.type,MsgContent:{ImageFormat:t,ImageInfoArray:this.parseImageInfoArray(r),UUID:e}}}parseImageInfoArray(e){return e.map(e=>({InstanceId:e.instanceID,Type:e.sizeType,MsgType:e.type,Size:e.size,Width:e.width,Height:e.height,URL:S.removeAuthToUrl(e.imageUrl)}))}}var D=new class{constructor(){this._messageOptionsMap=new Map}init(e){var{notificationCenter:e,helper:t,InnerEvent:r,message:i}=this._core=e;t.registerApi({apiName:"createImageMessage",context:this}),null!=(t=null==i?void 0:i.messageFactory)&&t.registerElementClass(u,E),e.subscribeInnerEvent(r.DESTROY,this._dispose,this)}createImageMessage(o){var s,a,n,e,t;try{let e=this._core.ssoLog.createSSOLogData({method:"createImageMessage"}),t=(console.log(f+" createImageMessage options:",o),null==(s=this._core.store.get("login"))?void 0:s.userId),r=null==(n=null==(a=this._core)?void 0:a.message.messageFactory)?void 0:n.createMessage(Object.assign(Object.assign({},o),{from:t})),i=this._processImage(o);o.payload.file=i;var l={imageFormat:T.UNKNOWN,uuid:S.generateUUID(i),file:i,imageInfoArray:[]},d=new E(l);return r.setElement(d),this._messageOptionsMap.set(r.clientSequence,o),console.log(f+" createImageMessage OK imageMessage:",r),e.end(),r}catch(o){throw null!=(t=(e=this._core.ssoLog.getSSOLogData("createImageMessage")).setError)&&t.call(e,o).end(),console.error(f+" createImageMessage error:",o),o}}upload(i){return t(this,void 0,void 0,function*(){console.log(f+" uploadImage message:",i);var e=i.getElements()[0],t=this._messageOptionsMap.get(i.clientSequence).payload["file"],t=(this._validateBeforeUploadImage(t),yield this._performImageUpload(e,i,t)),r=this._generateImageInfo(t);return e.updateImageFormat(null==t?void 0:t.fileType),e.updateImageInfoArray(r),i})}_performImageUpload(i,o,r){return t(this,void 0,void 0,function*(){var e=o["to"],e={uploadFileType:v,file:r,to:e,message:o,onProgress:e=>{var t,r;i.updatePercent(e),null!=(r=null==(t=this._messageOptionsMap.get(o.clientSequence))?void 0:t.onProgress)&&r.call(t,e)}},{uploadOptions:e,response:t}=yield P.uploadToCOS(e);return this._parseResponse(e,t)})}_generateImageInfo(e){console.log(f+" generateImageInfo");var{location:e,fileSize:t,width:r,height:i,smallImageUrl:o,smallImageWidth:s,smallImageHeight:a,largeImageUrl:n,largeImageWidth:l,largeImageHeight:d,imageInfoArray:h}=e,e=S.addAuthToUrl(e),u={size:t,url:e,width:r,height:i};return 0<(null==h?void 0:h.length)?this._processImageInfoArray(h,t):o&&n?[Object.assign({},u),{largeImageUrl:n,largeImageWidth:l,largeImageHeight:d},{smallImageUrl:o,smallImageWidth:s,smallImageHeight:a}]:[Object.assign({},u),this._generateThumbInfo(e,r,i,720),this._generateThumbInfo(e,r,i,198)]}_generateThumbInfo(e,t,r,i){return C({originUrl:e,originWidth:t,originHeight:r,min:i})}_processImageInfoArray(e,t){let r,i,o;for(var s of e)1===s.type?(i=s,i.size=t):2===s.type?(o=s,o.size=t):(r=s,r.size=t);return[Object.assign({},r),Object.assign({},o),Object.assign({},i)]}_parseResponse(i,o){return t(this,void 0,void 0,function*(){console.log(f+" parseResponse");try{var{thumbUrl:e,largeUrl:t,downloadUrl:r}=i;if(e&&t&&(yield this._getImageInfoByUrl(e,o,"thumb"),yield this._getImageInfoByUrl(t,o,"large")),S.isSimpleCos()&&!S.isPrivateNetWork()&&(yield this._getImageInfoArray(r,o),null!=o)&&o.uploadIP){let e=this._extractDomainFromUrl(r);e&&(yield this._getDownloadIP(e,o))}return o}catch(e){throw console.error("Failed to parse response:",e),e}})}_extractDomainFromUrl(e){try{var t=e.match(/:\/\/([^\/]+)/);return t?t[1]:null}catch(e){return console.warn("Failed to extract domain from URL:",e),null}}_getImageInfoByUrl(i,o,s){return t(this,void 0,void 0,function*(){try{var e=S.addAuthToUrl(i),{width:t=0,height:r=0}=yield S.probeImageWidthHeight(e);o.width=t,o.height=r,"thumb"===s?(o.smallImageUrl=i,o.smallImageWidth=t,o.smallImageHeight=r):(o.largeImageUrl=i,o.largeImageWidth=t,o.largeImageHeight=r)}catch(e){console.warn(`Failed to get ${s} image info:`,e)}})}_validateBeforeUploadImage(e){var t=(null==(t=this._core)?void 0:t.helper)["ChatError"];if(!e)throw new t({code:M});this._checkImageType(e),this._checkImageSize(e)}_processImage(e){var t;try{var r=(null==(t=this._core)?void 0:t.utils)["IN_MINI_APP"],i=e.payload["file"];return r?this._processMiniAppImageFile(i):this._processWebImageFile(i)}catch(e){throw console.warn(f+" _processImage error:",e),e}}_processMiniAppImageFile(e){r(e)&&console.warn("FileUnsupportedInMiniApp","createImageMessage");var t=e.tempFiles[0].path||e.tempFiles[0].tempFilePath;return{url:t,name:t.slice(t.lastIndexOf("/")+1),size:e.tempFiles&&e.tempFiles[0].size||1,type:t.slice(t.lastIndexOf(".")+1).toLowerCase()}}_processWebImageFile(e){var t=(null==(t=this._core)?void 0:t.helper)["ChatError"],e=S.extractFileFromInput(e);if(e)return e;throw new t({message:"Invalid file. Pass either `e.target` (from file input) or a File object"})}_getDownloadIP(o,s){return t(this,void 0,void 0,function*(){var e=f+" getDownloadIP domainName: "+o;try{var r,i=yield function(a,n){return t(this,void 0,void 0,function*(){try{var{helper:e,channel:t}=n,r="im_cos_msg.get_final_ip",i={str_domain:a},o=e.generateProtocolData({servcmd:r,data:i}),s=o.head.seq+r;return yield t.sendPacket(o,{requestId:s})}catch(e){throw console.warn("getFinalIP error:",e),e}})}(o,this._core);i&&i.str_final_ip&&(console.log(e+" ok. downloadIP:"+i),(r=s.location.split("/"))[0]=i.str_final_ip,s.location=r.join("/"))}catch(e){console.warn(e)}})}_getImageInfoArray(i,o){return t(this,void 0,void 0,function*(){var r=f+"._getImageInfoArray";try{var e=yield function(a,n){return t(this,void 0,void 0,function*(){try{var{helper:e,channel:t}=n,r="im_cos_msg.get_imageinfo",i={str_image_url:a},o=e.generateProtocolData({servcmd:r,data:i}),s=o.head.seq+r;return yield t.sendPacket(o,{requestId:s})}catch(e){throw console.warn("getImageInfo error:",e),e}})}(i,this._core);return o.imageInfoArray=this._processImageInfoResponse(e),console.log(r+" ok"),o}catch(e){throw o.imageInfoArray=void 0,console.warn(r+" failed, error:",e),e}})}_processImageInfoResponse(e){return e?(e=e["rpt_msg_image_info"],e.map(e=>({type:e.uint32_image_type,url:e.str_url,width:e.uint32_width,height:e.uint32_height,imageFormat:e.str_image_format}))):[]}_checkImageType(e){var{utils:t,helper:r}=this._core;let i="";if(t.IN_MINI_APP&&(i=e.url.slice(e.url.lastIndexOf(".")+1)),t.IN_BROWSER&&(i=e.name.slice(e.name.lastIndexOf(".")+1)),A.indexOf(i.toLowerCase())<0)throw new r.ChatError({code:b})}_checkImageSize(e){var{utils:t,helper:r}=this._core,i=0;if(t.IN_MINI_APP,0===(i=e.size))throw new r.ChatError({code:F});if(i>=O)throw new r.ChatError({message:"File size exceeds limit: "+c(O)})}_reset(){this._messageOptionsMap.clear()}_dispose(){this._reset();var{notificationCenter:e,InnerEvent:t}=this._core;e.unSubscribeInnerEvent(t.DESTROY,this._dispose,this)}};let $=2108,R=2401,z="2.5.0",x="1.18.0",W=104857600;function j(e,t){let i=e.split("."),o=t.split("."),s=Math.max(i.length,o.length);for(;i.length<s;)i.push("0");for(;o.length<s;)o.push("0");for(let r=0;r<s;r++){let e=parseInt(i[r]),t=parseInt(o[r]);if(e>t)return 1;if(e<t)return-1}return 0}class q{constructor(e){this.type=g,this.uploadProgress=0;var t=this._getFileInfo(e);this.content={downloadFlag:2,fileUrl:S.addAuthToUrl(e.url||e.fileUrl)||"",uuid:e.uuid,fileName:t.name||"",fileSize:t.size||0}}static parseServerPushElement(e){var e=e["MsgContent"],{Download_Flag:e,Url:t,FileName:r,FileSize:i,UUID:o}=e;return new q({downloadFlag:e,url:t,fileName:r,fileSize:i,uuid:o})}updatePercent(e){this.uploadProgress=Math.min(e,1)}updateFileUrl(e){this.content.fileUrl=e}validateBeforeSend(){var e=""!==this.content.fileUrl&&""!==this.content.fileName&&0<this.content.fileSize;return{isValid:e,error:e?null:{message:"content can not be empty"}}}transformToServerFormat(e){var{isMergerMessage:e=!1}=e||{},{uuid:e,downloadFlag:t,fileUrl:r,fileName:i,fileSize:o}=e?this.payload:this.content;return{MsgType:this.type,MsgContent:{Download_Flag:t,Url:S.removeAuthToUrl(r),FileName:i,FileSize:o,UUID:e}}}_getFileInfo(e){return e.fileName&&e.fileSize?{size:e.fileSize,name:e.fileName}:(e=e["file"],e?(S.getPlatform().IN_UNI_NATIVE_APP&&this._processNativeAppFile(e),{size:e.size,name:e.name}):{size:0,name:""})}_processNativeAppFile(e){var t;e.path&&e.path.includes(".")&&(t=e.path.slice(e.path.lastIndexOf(".")+1).toLowerCase(),e.type=t,e.name||(e.name=n(999999)+"."+t)),e.name||(e.type="",e.name=e.path.slice(e.path.lastIndexOf("/")+1).toLowerCase()),e.suffix&&(e.type=e.suffix),e.url||(e.url=e.path)}}var V=new class{constructor(){this._messageOptionsMap=new Map}init(e){var{notificationCenter:e,helper:t,InnerEvent:r,message:i}=this._core=e;t.registerApi({apiName:"createFileMessage",context:this}),null!=(t=null==i?void 0:i.messageFactory)&&t.registerElementClass(g,q),e.subscribeInnerEvent(r.DESTROY,this._dispose,this)}createFileMessage(r){var i,o,s,e,t;try{let e=this._core.ssoLog.createSSOLogData({method:"createFileMessage"}),t=(console.log(f+" createFileMessage options:",r),this._checkVersion(),this._processFile(r.payload.file));r.payload.file=t;var a=null==(i=this._core.store.get("login"))?void 0:i.userId,n=null==(s=null==(o=this._core)?void 0:o.message.messageFactory)?void 0:s.createMessage(Object.assign(Object.assign({},r),{from:a})),l={uuid:S.generateUUID(t),file:t},d=new q(l);return n.setElement(d),this._messageOptionsMap.set(n.clientSequence,r),console.log(f+" createFileMessage success fileMessage:",n),e.end(),n}catch(r){throw null!=(t=(e=this._core.ssoLog.getSSOLogData("createFileMessage")).setError)&&t.call(e,r).end(),console.error(f+" createFileMessage error:",r),r}}upload(r){return t(this,void 0,void 0,function*(){console.log(f+" uploadFile message:",r);var e=this._messageOptionsMap.get(r.clientSequence).payload["file"],t=(this._validateBeforeUploadFile(e),r.getElements()[0]),e=yield this._performFileUpload(t,r,e),e=S.addAuthToUrl(null==e?void 0:e.location);return t.updateFileUrl(e),r})}_validateBeforeUploadFile(e){var t=(null==(t=this._core)?void 0:t.helper)["ChatError"];if(!e)throw new t({code:R});if(e.size>W)throw new t({message:"File size exceeds limit: "+c(W)});if(0===e.size)throw new t({code:$})}_performFileUpload(i,o,r){return t(this,void 0,void 0,function*(){var e=o["to"],e={uploadFileType:v,file:r,to:e,message:o,onProgress:e=>{var t,r;i.updatePercent(e),null!=(r=null==(t=this._messageOptionsMap.get(o.clientSequence))?void 0:t.onProgress)&&r.call(t,e)}},e=(yield P.uploadToCOS(e))["response"];return e})}_processFile(t){var{IN_BROWSER:e,IN_RN_APP:r,IN_WX_MINI_APP:i,IN_QQ_MINI_APP:o,IN_UNI_NATIVE_APP:s}=null==(e=this._core)?void 0:e.utils,a=(null==(a=this._core)?void 0:a.helper)["ChatError"];if(e||s){let e=S.extractFileFromInput(t);if(e)return e;throw new a({message:"Invalid file. Pass either `e.target` (from file input) or a File object"})}if(i||o){let e=t["tempFiles"];return Object.assign(Object.assign({},e[0]),{url:e[0].path})}return r?Object.assign(Object.assign({},t),{url:t.uri}):t}_checkVersion(){var{MINI_APP_NAMESPACE:t,IN_MINI_APP:e,IN_WX_MINI_APP:r,IN_QQ_MINI_APP:i,IN_UNI_NATIVE_APP:o}=null==(e=this._core)?void 0:e.utils,s=(null==(s=this._core)?void 0:s.helper)["ChatError"];if(e){if(!(r||i||o))throw new s({message:"Unsupported mini app environment"});let e=t.getSystemInfoSync().SDKVersion;if(r&&j(e,z)<0)throw new s({message:`WXChooseMessageFile requires SDK version ${z} or higher`});if(i&&j(e,x)<0)throw new s({message:`QQChooseMessageFile requires SDK version ${x} or higher`})}}_reset(){this._messageOptionsMap.clear()}_dispose(){this._reset();var{notificationCenter:e,InnerEvent:t}=this._core;e.unSubscribeInnerEvent(t.DESTROY,this._dispose,this)}};let L=2108,k=2352,B=["mp4","quicktime","mov"],H=104857600;class K{constructor(e){this.type=m,this.uploadProgress=0;var t="number"==typeof(null==e?void 0:e.videoSecond)?null==e?void 0:e.videoSecond:0;this.content={remoteVideoUrl:S.addAuthToUrl(e.remoteVideoUrl||e.videoUrl||""),videoFormat:e.videoFormat,videoSecond:parseInt(null==t?void 0:t.toString(),10),videoSize:e.videoSize,videoUrl:S.addAuthToUrl(e.videoUrl),videoDownloadFlag:2,videoUUID:e.videoUUID,thumbUUID:e.thumbUUID,thumbFormat:e.thumbFormat,thumbWidth:e.thumbWidth,snapshotWidth:e.thumbWidth,thumbHeight:e.thumbHeight,snapshotHeight:e.thumbHeight,thumbSize:e.thumbSize,snapshotSize:e.thumbSize,thumbDownloadFlag:2,thumbUrl:S.addAuthToUrl(e.thumbUrl),snapshotUrl:S.addAuthToUrl(e.thumbUrl)}}static parseServerPushElement(e){var e=e["MsgContent"],{VideoUrl:e,VideoFormat:t,VideoSecond:r,VideoSize:i,VideoDownloadFlag:o,VideoUUID:s,ThumbUUID:a,ThumbFormat:n,ThumbWidth:l,SnapshotWidth:d,ThumbHeight:h,SnapshotHeight:u,ThumbSize:c,SnapshotSize:p,ThumbDownloadFlag:g,ThumbUrl:m,SnapshotUrl:f}=e;return new K({videoUrl:e,videoFormat:t,videoSecond:r,videoSize:i,videoDownloadFlag:o,videoUUID:s,thumbUUID:a,thumbFormat:n,thumbWidth:l,snapshotWidth:d,thumbHeight:h,snapshotHeight:u,thumbSize:c,snapshotSize:p,thumbDownloadFlag:g,thumbUrl:m,snapshotUrl:f})}updatePercent(e){this.uploadProgress=Math.min(e,1)}updateVideoUrl(e){e&&(this.content.remoteVideoUrl=e)}updateSnapshotInfo(e){var{snapshotUrl:e,snapshotWidth:t,snapshotHeight:r}=e;S.isEmpty(e)||(this.content.thumbUrl=this.content.snapshotUrl=e),S.isEmpty(t)||(this.content.thumbWidth=this.content.snapshotWidth=Number(t)),S.isEmpty(r)||(this.content.thumbHeight=this.content.snapshotHeight=Number(r))}validateBeforeSend(){var e=""!==this.content.remoteVideoUrl;return{isValid:e,error:e?null:{message:"content can not be empty"}}}transformToServerFormat(e){var{isMergerMessage:e=!1}=e||{},{remoteVideoUrl:e,videoFormat:t,videoSecond:r,videoSize:i,videoDownloadFlag:o,videoUUID:s,thumbUUID:a,thumbFormat:n,thumbWidth:l,snapshotWidth:d,thumbHeight:h,snapshotHeight:u,thumbSize:c,snapshotSize:p,thumbDownloadFlag:g,thumbUrl:m,snapshotUrl:f}=e?this.payload:this.content;return{MsgType:this.type,MsgContent:{VideoUrl:S.removeAuthToUrl(e),VideoFormat:t,VideoSecond:r,VideoSize:i,VideoDownloadFlag:o,VideoUUID:s,ThumbUUID:a,ThumbFormat:n,ThumbWidth:l,SnapshotWidth:d,ThumbHeight:h,SnapshotHeight:u,ThumbSize:c,SnapshotSize:p,ThumbDownloadFlag:g,ThumbUrl:S.removeAuthToUrl(m),SnapshotUrl:S.removeAuthToUrl(f)}}}}var Y=new class{constructor(){this._messageOptionsMap=new Map}init(e){var{notificationCenter:e,helper:t,InnerEvent:r,message:i}=this._core=e;t.registerApi({apiName:"createVideoMessage",context:this}),null!=(t=null==i?void 0:i.messageFactory)&&t.registerElementClass(m,K),e.subscribeInnerEvent(r.DESTROY,this._dispose,this)}createVideoMessage(r){var i,o,s,e,t;try{let e=this._core.ssoLog.createSSOLogData({method:"createVideoMessage"}),t=(console.log(f+" createVideoMessage options:",r),this._processVideo(r));r.payload.file=t;var a=null==(i=this._core.store.get("login"))?void 0:i.userId,n=null==(s=null==(o=this._core)?void 0:o.message.messageFactory)?void 0:s.createMessage(Object.assign(Object.assign({},r),{from:a})),l={videoFormat:t.videoFile.type,videoSecond:d(t.videoFile.second,0),videoSize:t.videoFile.size,remoteVideoUrl:"",videoUrl:t.videoFile.url,videoUUID:S.generateUUID(t.videoFile),thumbUUID:S.generateUUID(t.videoFile,"jpg"),thumbWidth:t.width||200,thumbHeight:t.height||200,thumbUrl:t.thumbUrl,thumbSize:t.thumbSize,thumbFormat:"jpg"},h=new K(l);return n.setElement(h),this._messageOptionsMap.set(n.clientSequence,r),e.end(),n}catch(r){throw null!=(t=(e=this._core.ssoLog.getSSOLogData("createVideoMessage")).setError)&&t.call(e,r).end(),console.error(f+" createVideoMessage error:",r),r}}upload(i){return t(this,void 0,void 0,function*(){console.log(f+" uploadVideo message:",i);var e=i.getElements()[0],t=this._messageOptionsMap.get(i.clientSequence).payload["file"],t=(this._validateBeforeUploadVideo(t),yield this._performVideoUpload(e,i,t)),{location:t,snapshotInfo:r}=t,t=S.addAuthToUrl(t);return e.updateVideoUrl(t),S.isEmpty(r)||e.updateSnapshotInfo(r),i})}_validateBeforeUploadVideo(e){var t=(null==(t=this._core)?void 0:t.helper)["ChatError"];if(e.videoFile.size>H)throw new t({message:"File size exceeds limit: "+c(H)});if(0===e.videoFile.size)throw new t({code:L});if(-1===B.indexOf(e.videoFile.type))throw new t({code:k})}_performVideoUpload(i,o,r){return t(this,void 0,void 0,function*(){var e=o["to"],e={uploadFileType:I,file:r,to:e,message:o,onProgress:e=>{var t,r;i.updatePercent(e),null!=(r=null==(t=this._messageOptionsMap.get(o.clientSequence))?void 0:t.onProgress)&&r.call(t,e)}},{response:e,uploadOptions:t}=yield P.uploadToCOS(e);return{snapshotInfo:yield this._getSnapshotInfoByUrl(t.requestSnapshotUrl),location:e.location}})}_processVideo(e){var i,o;try{var s=(null==(i=this._core)?void 0:i.helper)["ChatError"],{IN_MINI_APP:a,IN_BROWSER:n}=null==(o=this._core)?void 0:o.utils;let t=e.payload["file"],r={};if(a&&(r=this._processMiniVideoFile(t),t.name=r.name,t.url=r.url),n){let e=S.extractFileFromInput(t);if(!e)throw new s({message:"Invalid file. Pass either `e.target` (from file input) or a File object"});t=e,r=this._processWebVideoFile(t)}return t.videoFile=r,t.thumbUrl="",t.thumbSize=0,t}catch(e){throw console.warn(f+" _processFile error:",e),e}}_processMiniVideoFile(e){var t=(null==(t=this._core)?void 0:t.utils)["IN_ALIPAY_MINI_APP"],i=(null==(i=this._core)?void 0:i.helper)["ChatError"];if(t)throw new i({message:"VideoUnsupportedInAlipay"});if(r(e))throw new i({message:"FileUnsupportedInMiniApp"});return{url:(e=Array.isArray(e.tempFiles)?e.tempFiles[0]:e).tempFilePath,name:e.tempFilePath.slice(e.tempFilePath.lastIndexOf("/")+1),size:e.size||1,second:e.duration||0,type:e.tempFilePath.slice(e.tempFilePath.lastIndexOf(".")+1).toLowerCase()}}_processWebVideoFile(e){var{name:t,size:r=1,duration:i=0,type:o}=e,o=o.split("/")[1];return{url:window.URL.createObjectURL(e),name:t,size:r,second:i,type:o}}_getSnapshotInfoByUrl(s){return t(this,void 0,void 0,function*(){try{console.log(f+" _getSnapshotInfoByUrl url:",s);var e,r,i,o=((yield function(s,a){return t(this,void 0,void 0,function*(){try{var e="im_cos_msg.video_cover",{helper:t,channel:r}=a,i=t.generateCosSpecifiedData({servcmd:e,data:s}),o=i.head.seq+e;return yield r.sendPacket(i,{requestId:o})}catch(e){throw console.warn("getSnapshotInfo error:",e),e}})}({version:1,platform:S.getPlatform(),cover_name:l(n(99999)),snapshot_url:s},this._core))||{})["download_url"];return(console.log(f+" _getSnapshotInfoByUrl OK snapshotUrl:",o),S.isEmpty(o))?{}:(e=S.addAuthToUrl(o),{width:r=0,height:i=0}=yield S.probeImageWidthHeight(e),{snapshotUrl:e,snapshotWidth:r,snapshotHeight:i})}catch(e){throw console.error(f+" _getSnapshotInfoByUrl error:",e),e}})}_reset(){this._messageOptionsMap.clear()}_dispose(){this._reset();var{notificationCenter:e,InnerEvent:t}=this._core;e.unSubscribeInnerEvent(t.DESTROY,this._dispose,this)}};class G{constructor(e){this.uploadProgress=0,this.type=p,this.content={downloadFlag:2,second:e.second,size:e.size,url:S.addAuthToUrl(e.url),remoteAudioUrl:S.addAuthToUrl(e.url||""),uuid:e.uuid}}static parseServerPushElement(e){var e=e["MsgContent"],{Url:e,Download_Flag:t,Second:r,Size:i,UUID:o}=e;return new G({url:e,downloadFlag:t,second:r,size:i,uuid:o})}updatePercent(e){this.uploadProgress=Math.min(e,1)}updateAudioUrl(e){this.content.remoteAudioUrl=e}validateBeforeSend(){var e=""!==this.content.remoteAudioUrl;return{isValid:e,error:e?null:{message:"content can not be empty"}}}transformToServerFormat(e){var{isMergerMessage:e=!1}=e||{},{uuid:e,downloadFlag:t,remoteAudioUrl:r,size:i,second:o}=e?this.payload:this.content;return{MsgType:this.type,MsgContent:{Url:S.removeAuthToUrl(r),Download_Flag:t,Second:o,Size:i,UUID:e}}}}let J=2108,Q=2300,X=20971520;var Z=new class{constructor(){this._messageOptionsMap=new Map}init(e){var{notificationCenter:e,helper:t,InnerEvent:r,message:i}=this._core=e;t.registerApi({apiName:"createAudioMessage",context:this}),null!=(t=null==i?void 0:i.messageFactory)&&t.registerElementClass(p,G),e.subscribeInnerEvent(r.DESTROY,this._dispose,this)}createAudioMessage(t){var r,i,e,o;try{let e=this._core.ssoLog.createSSOLogData({method:"createAudioMessage"});console.log(f+" createAudioMessage options:",t);t.payload["file"];var s=this._processAudioFile(t.payload.file),a=(t.payload.file=s,null==(o=this._core.store.get("login"))?void 0:o.userId),n=null==(i=null==(r=this._core)?void 0:r.message.messageFactory)?void 0:i.createMessage(Object.assign(Object.assign({},t),{from:a})),l={second:Math.floor((s.duration||s.second)/1e3),size:s.fileSize||s.size||1,url:s.tempFilePath||s.uri||s.url,uuid:S.generateUUID(s)},d=new G(l);return n.setElement(d),this._messageOptionsMap.set(n.clientSequence,t),e.end(),n}catch(t){throw null!=(o=(e=this._core.ssoLog.getSSOLogData("createAudioMessage")).setError)&&o.call(e,t).end(),console.error(f+" createAudioMessage error:",t),t}}upload(r){return t(this,void 0,void 0,function*(){console.log(f+" uploadAudio message:",r);var e=this._messageOptionsMap.get(r.clientSequence).payload["file"],t=(this._validateBeforeUploadAudio(e),r.getElements()[0]),e=yield this._performAudioUpload(t,r,e),e=S.addAuthToUrl(null==e?void 0:e.location);return t.updateAudioUrl(e),r})}_validateBeforeUploadAudio(e){var t=(null==(t=this._core)?void 0:t.helper)["ChatError"];if(!e)throw new t({code:Q});if(e.size>X)throw new t({message:"File size exceeds limit: "+c(X)});if(0===e.size)throw new t({code:J})}_performAudioUpload(i,o,r){return t(this,void 0,void 0,function*(){var e=o["to"],e={uploadFileType:y,file:r,to:e,message:o,onProgress:e=>{var t,r;i.updatePercent(e),null!=(r=null==(t=this._messageOptionsMap.get(o.clientSequence))?void 0:t.onProgress)&&r.call(t,e)}},e=(yield P.uploadToCOS(e))["response"];return e})}_processAudioFile(e){var{IN_MINI_APP:t,IN_BROWSER:r}=null==(t=this._core)?void 0:t.utils;return t?this._processMiniFile(e):r?this._processWebFile(e):void 0}_processMiniFile(e){return{url:e.tempFilePath,name:e.tempFilePath.slice(e.tempFilePath.lastIndexOf("/")+1),size:e.fileSize,second:e.duration,type:e.tempFilePath.slice(e.tempFilePath.lastIndexOf(".")+1).toLowerCase()}}_processWebFile(e){var t;return e.tempFilePath||e.uri||(t=URL.createObjectURL(e),e.tempFilePath=t),e}_reset(){this._messageOptionsMap.clear()}_dispose(){this._reset();var{notificationCenter:e,InnerEvent:t}=this._core;e.unSubscribeInnerEvent(t.DESTROY,this._dispose,this)}};let ee={to:{required:!0,rules:["string"],allowEmpty:!1},conversationType:{required:!0,rules:["string"],allowEmpty:!1},payload:{required:!0,rules:["object"],allowEmpty:!1},cloudCustomData:{required:!1,rules:["string"],allowEmpty:!1},priority:{required:!1,rules:["string"],allowEmpty:!1},customModerationConfigurationID:{required:!1,rules:["string"],allowEmpty:!1},onProgress:{required:!1,rules:["function"],allowEmpty:!1}},te={createImageMessage:ee,createAudioMessage:ee,createVideoMessage:ee,createFileMessage:ee},oe={createImageMessage:!0,createAudioMessage:!0,createVideoMessage:!0,createFileMessage:!0},se={[u]:D,[g]:V,[m]:Y,[p]:Z};var ie=new class{constructor(){this.name="RichMediaMessage"}install(e){let{OuterConstant:{MSG_AUDIO:t,MSG_FILE:r,MSG_IMAGE:i,MSG_VIDEO:o}}=(this._core=e)["constants"];D.init(e),V.init(e),Y.init(e),Z.init(e),P.init(e),S.init(e),e.helper.registerApi({apiName:"sendMessage",context:this,matcher:e=>[t,r,i,o].includes(e[0].type)}),e.helper.registerValidateConfig({auth:oe,params:te})}sendMessage(i,o){return t(this,void 0,void 0,function*(){var e,t,r;try{return console.log("sendMessage message:",i),yield this._upload(i),yield null==(r=null==(t=null==(e=this._core)?void 0:e.message)?void 0:t.messageSender)?void 0:r.sendMessage(i,o)}catch(e){throw console.error("sendMessage error:",e),e}})}_upload(i){return t(this,void 0,void 0,function*(){var t,r;if(!0!==i._relayFlag)try{let t=se[i.type];if(t){let e=this._core.ssoLog.createSSOLogData({method:"upload"});e.setLogInfo({message:"type:"+i.type}),yield t.upload(i),e.end()}}catch(e){throw i.status=U.FAIL,e instanceof Error&&(e.data={message:i}),this._core.message.messageDataHandler.storeConversationMessage(i),null!=(r=(t=this._core.ssoLog.getSSOLogData("upload")).setError)&&r.call(t,e).end(),e}})}};export{ie as default};
1
+ function e(e,t){var r={};for(o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var i=0,o=Object.getOwnPropertySymbols(e);i<o.length;i++)t.indexOf(o[i])<0&&Object.prototype.propertyIsEnumerable.call(e,o[i])&&(r[o[i]]=e[o[i]]);return r}function t(e,a,n,l){return new(n=n||Promise)(function(r,t){function i(e){try{s(l.next(e))}catch(e){t(e)}}function o(e){try{s(l.throw(e))}catch(e){t(e)}}function s(e){var t;e.done?r(e.value):((t=e.value)instanceof n?t:new n(function(e){e(t)})).then(i,o)}s((l=l.apply(e,a||[])).next())})}var o=new class{constructor(){this._name="WebRequest"}init(e){this._core=e}request(g,m){return t(this,void 0,void 0,function*(){let e,t=(null==(e=this._core)?void 0:e.utils).isEmpty,{downloadUrl:r="",method:i="PUT",url:o,qs:s,headers:a={},resources:n,dataType:l="text",uploadByIP:d,uploadIP:h}=g,u=o;if(s){let e=this._queryString(s);e&&(u+=(u.includes("?")?"&":"?")+e)}let c=new XMLHttpRequest;c.open(i.toUpperCase(),u,!0),c.responseType=l;var p=Object.assign({},a);if(d&&h&&(p.host=h),!t(p))for(let e in p)p.hasOwnProperty(e)&&!["content-length","user-agent","origin","host"].includes(e.toLowerCase())&&c.setRequestHeader(e,p[e]);return c.onload=()=>{var e=this._getResponseBody(c,r,d&&h),e=this._buildResponse(c,e);if(200===c.status)m(null,e);else{if(h&&!u.includes(h))return g.url=this._domainName2IP(u,h),g.uploadByIP=!0,this.request(g,m);m({code:c.status,message:JSON.stringify(c.responseText)},e)}},c.onerror=()=>{var e=this._getResponseBody(c,r,d&&h),e=this._buildResponse(c,e),t={code:c.status,message:0===c.status?"CORS blocked or network error":JSON.stringify(c.responseText)};m(t,e)},g.onProgress&&c.upload&&(c.upload.onprogress=e=>{var{total:e,loaded:t}=e,r=Math.min(Math.floor(100*t/e),100);g.onProgress({total:e,loaded:t,percent:r/100})}),c.send(n),c})}_buildResponse(e,t){let r={};return e.getAllResponseHeaders().trim().split("\n").forEach(e=>{var t;e&&([e,t]=e.split(":").map(e=>e.trim()),r[e.toLowerCase()]=t)}),{statusCode:e.status,statusMessage:e.statusText,headers:r,data:t}}_getResponseBody(e,t,r){return 200===e.status&&t?{location:t,uploadIP:r}:{response:e.responseText,uploadIP:r}}_queryString(r,i="&",o="="){var{isEmpty:e,isPlainObject:t}=null==(e=this._core)?void 0:e.utils;return e(r)?"":t(r)?Object.keys(r).map(e=>{let t=encodeURIComponent(e)+o;return Array.isArray(r[e])?r[e].map(e=>t+encodeURIComponent(e)).join(i):t+encodeURIComponent(r[e])}).filter(Boolean).join(i):void 0}_domainName2IP(e,t){return e.replace(/^http(s)?:\/\/(.*?)\//,`https://${t}/`)}};let s=["unknown","image","video","audio","log"];var w,i=new class{init(e){this._core=e}request(i,t){let r,{MINI_APP_NAMESPACE:o,IN_ALIPAY_MINI_APP:a,IN_UNI_IOS_APP:n}=null==(r=this._core)?void 0:r.utils,{resources:l="",headers:d={},url:h,downloadUrl:u=""}=i,c=h,p=null;var g=u?u.match(/^(https?:\/\/[^/]+\/)([^/]*\/?)(.*)$/):null;if(g){var g=decodeURIComponent(g[3]),g=g.includes("?")?g.split("?")[0]:g||"",g={key:i.fileKey||g,success_action_status:200,"Content-Type":""},m={};if(n){let[e,t]=h.split("?sign=");t&&(c=e+"?sign="+encodeURIComponent(t),m.sign=decodeURIComponent(t),m.signature=decodeURIComponent(t))}let r={url:c,header:d,name:"file",filePath:l,formData:Object.assign(Object.assign({},g),m),timeout:i.timeout||3e5};if(a){let t=e(r,["name"]);r=Object.assign(Object.assign({},t),{fileName:"file",fileType:i.fileType?s[i.fileType]:"image"})}return(p=o.uploadFile(Object.assign(Object.assign({},r),{success:e=>{this._handleResponse({response:e,downloadUrl:u,callback:t})},fail:e=>{this._handleResponse({response:e,downloadUrl:u,callback:t})}}))).onProgressUpdate&&p.onProgressUpdate(e=>{i.onProgress&&i.onProgress({total:e.totalBytesExpectedToSend||0,loaded:e.totalBytesSent||0,percent:e.progress?Math.floor(e.progress)/100:0})}),p}console.warn("message Invalid download URL format")}_handleResponse(e){var{downloadUrl:e,response:t,callback:r}=e,i={};if(t.header)for(let e in t.header)t.header.hasOwnProperty(e)&&(i[e.toLowerCase()]=t.header[e]);var o=+t.statusCode;200==o?r(null,{statusCode:o,headers:i,data:Object.assign(Object.assign({},t.data),{location:e})}):r({code:o,message:JSON.stringify(t.data)},{statusCode:o,headers:i,data:void 0})}};function r(e){return"file"===Object.prototype.toString.call(e).match(/^\[object (.*)\]$/)[1].toLowerCase()}function n(e){e=e||99999999;return Math.round(Math.random()*e)}function a(e,t=!0,r=!0){var i=Date.now();return t?r?i-e+" ms":Math.round((i-e)/1e3)+" s":r?i-e:Math.round((i-e)/1e3)}function l(e){return Array.from({length:8},()=>Math.floor(65536*(1+Math.random())).toString(16).substring(1)).join("")+"-"+e}function d(e,t){return Math.round(Number(e)*10**t)/10**t}function c(e){return e<1024?e+"B":e<1048576?Math.floor(e/1024)+"KB":Math.floor(e/1048576)+"MB"}function h(e){return e<=1048576?d(e/1024,1)+"KB/s":d(e/1048576,1)+"MB/s"}let u="TIMImageElem",p="TIMSoundElem",g="TIMFileElem",m="TIMVideoFileElem",f="RichMediaMessagePlugin",_=["rich.my-imcloud.com","imrich.qcloud.com"],v=1,I=2,y=3,U=255,S=(!function(e){e.UNSENT="unSend",e.SUCCESS="success",e.FAIL="fail"}(w=w||{}),{wechat:/^(wxfile:\/\/tmp_|http:\/\/temp\/|cloud:\/\/temp-)/,alipay:/^(https:\/\/resource\/|alipayfile:\/\/tmp\/)/,baidu:/^(http:\/\/tmp\/|swanfile:\/\/tmp_)/,bytedance:/^(ttfile:\/\/tmp_|\/(var|tmp)\/|tttemp:\/\/)/,qq:/^(qqfile:\/\/tmp_|http:\/\/qtemp\/)/});var F=new class{init(e){this._core=e}addAuthToUrl(e=""){return this._isMiniProgramTempFile(e)?e:(e=(e=e)?!e.startsWith("https://")&&e.startsWith("http://")?e.replace("http://","https://"):e:"",this.processResourceUrl(e))}removeAuthToUrl(r){{var[r,i]=r.split("?");if(!i)return r;let t=i.split("&").reduce((e,t)=>{var[t,r]=t.split("=");return t&&"authKey"!==t&&(e[t]=r||""),e},{}),e=Object.keys(t).map(e=>""+e+(t[e]?"="+t[e]:"")).join("&");return e?r+"?"+e:r}}_isMiniProgramTempFile(t){return!!this.getPlatformFlags().IN_MINI_APP&&Object.values(S).some(e=>e.test(t))}extractFileFromInput(e){var{isArray:t}=this._core["utils"];return r(e)?e:function(t){if("object"==typeof t&&null!==t){t=Object.getPrototypeOf(t);if(null===t)return 1;let e=t;for(;null!==Object.getPrototypeOf(e);)e=Object.getPrototypeOf(e);return t===e}}(e)&&"undefined"!=typeof uni?t(e.tempFiles)&&0<e.tempFiles.length?e.tempFiles[0]:t(e.files)?e.files[0]:e.tempFile||null:e instanceof HTMLInputElement&&e.files&&0<e.files.length?e.files[0]:null}probeImageWidthHeight(r){return t(this,void 0,void 0,function*(){var{IN_MINI_APP:e,IN_BROWSER:t}=(null==(e=this._core)?void 0:e.utils)||{};return this._shouldSkipProbing()?{width:0,height:0}:t?this._probeImageDimensionsWeb(r):e?this._probeImageDimensionsMiniApp(r):void 0})}isSimpleCos(){var e=((null==(e=this._core)?void 0:e.store.get("cloudConfig"))||{})["simple_cos"];return"0"!==e}getFileDNList(){let e,t=_;var r=((null==(e=this._core)?void 0:e.store.get("cloudConfig"))||{})["file_dn_list"];if(void 0!==r)try{JSON.parse(r).forEach(e=>{t.includes(e)||t.push(e)})}catch(e){console.warn(e),t=_}return t}getPlatform(){var e;return null==(e=this._core)?void 0:e.utils.platform}generateUUID(e,t){let r,i=`${this.getSDKAppID()}-${this.getCurrentUserID()}-`+(null==(r=this._core)?void 0:r.utils.randomString());return t?i+"."+t:(e=(t=e.name||e.value||e.url||e.tempFilePath)&&t.slice(t.lastIndexOf(".")+1),i=e?i+"."+e:i)}processResourceUrl(e){if(!e)return"";let t=e;var r=this.getFileDownloadProxy(),i=this.getAuthKey(),o=this.getFileDNList(),e=(r&&(e.startsWith("http://")?t=e.replace(/^http:\/\/[^/]+/,r):e.startsWith("https://")&&(t=e.replace(/^https:\/\/[^/]+/,r))),i&&-1===t.indexOf("authKey=")&&function(e,t){let r=!1;if(e){var e=e.match(/:\/\/([0-9]?\.)?(.[^/:]+)/),i=e&&e[2]||"";if(i.includes("rich-dev"))return!0;for(let e=0;e<t.length;e++)if(i.endsWith(t[e])){r=!0;break}}return r}(t,o));return t=e?-1<t.indexOf("?")?t+"&authKey="+i:t+"?authKey="+i:t}getCurrentUserID(){var e;return null==(e=null==(e=this._core)?void 0:e.store.get("login"))?void 0:e.userId}getSDKAppID(){var e;return null==(e=null==(e=this._core)?void 0:e.store.get("instance"))?void 0:e.sdkAppId}getFileDownloadProxy(){var e;return(null==(e=null==(e=this._core)?void 0:e.store.get("instance"))?void 0:e.fileDownloadProxy)||""}getFileUploadProxy(){var e;return(null==(e=null==(e=this._core)?void 0:e.store.get("instance"))?void 0:e.fileUploadProxy)||""}getAuthKey(){var e;return(null==(e=null==(e=this._core)?void 0:e.store.get("login"))?void 0:e.authKey)||""}isPrivateNetWork(){var e;return null==(e=null==(e=this._core)?void 0:e.store.get("instance"))?void 0:e.proxyServer}getPlatformFlags(){var{IN_BROWSER:e,IN_MINI_APP:t,IN_RN_APP:r,IN_UNI_NATIVE_APP:i}=null==(e=this._core)?void 0:e.utils;return{IN_BROWSER:e,IN_MINI_APP:t,IN_RN_APP:r,IN_UNI_NATIVE_APP:i}}isEmpty(e){var t=(null==(t=this._core)?void 0:t.utils)["isEmpty"];return t(e)}_probeImageDimensionsMiniApp(e){let t,r=((null==(t=this._core)?void 0:t.utils)||{}).MINI_APP_NAMESPACE;return new Promise(t=>{r.getImageInfo({src:e,success:e=>t({width:e.width,height:e.height}),fail:()=>t({width:0,height:0})})})}_shouldSkipProbing(){var{IN_RN_APP:e,IS_IE:t,IE_VERSION:r}=(null==(e=this._core)?void 0:e.utils)||{};return e||t&&9===r}_probeImageDimensionsWeb(i){return new Promise(e=>{let t=new Image,r=()=>{t.onload=null,t.onerror=null,t.src=""};t.onload=()=>{e({width:t.width,height:t.height}),r()},t.onerror=()=>{e({width:0,height:0}),r()},t.src=i})}},P=new class{constructor(){this.uploadFileTryCount=0,this.maxRetries=1,this.systemClockOffset=0,this.httpRequest=null,this.uploadFileType="",this.duration=900,this.fetchCosTryCount=0}init(e){var t=(this._core=e).utils["IN_MINI_APP"];this.httpRequest=t?i:o,null!=(t=this.httpRequest)&&t.init(e)}uploadToCOS(l){return t(this,void 0,void 0,function*(){var t=f+" uploadToCOS",e=l["file"];this.uploadFileType=l.uploadFileType,console.log(t+" options:",l);try{var r=Date.now(),i=yield this._createCosOptions(l),o=yield this._uploadFile(i),s=(this._handleUploadError(o,l),this._createUploadResult(e,o)),a=Date.now()-r,n=`size:${c(e.size)} time:${a}ms speed:`+h(1e3*e.size/a);return console.log(t+` ok. name:${e.name} `+n),{uploadOptions:i,response:s}}catch(e){throw console.warn(t+" failed, error:",e),e}})}_handleUploadError(e,t){var r=(null==(r=this._core)?void 0:r.helper)["ChatError"];if(403===e.statusCode)throw a(Date.now(),!1),t.url,null!=(t=null==e?void 0:e.data)&&t.uploadIP&&e.data.uploadIP,new r({message:"Upload failed with status 403"})}_createUploadResult(e,t){return{fileName:e.name,fileSize:e.size,fileType:e.type.slice(e.type.indexOf("/")+1).toLowerCase(),location:t.data.location||"",uploadTime:a(Date.now(),!1),uploadSpeed:h(1e3*e.size/a(Date.now(),!1))}}_createCosOptions(c){return t(this,void 0,void 0,function*(){var{fileName:e,resources:t,uploadMethod:r}=this._prepareUploadParams(c),i=this._isC2CConversation(c.message.conversationID)?1:2;try{var o=yield this._fetchCosSignatureUrl({fileType:this.uploadFileType,fileName:e,uploadMethod:r,duration:this.duration,userID:c.message.from,conversationType:i}),{uploadUrl:s,downloadUrl:a,requestSnapshotUrl:n,thumbUrl:l,largeUrl:d,fileKey:h}=o,u=!F.isPrivateNetWork()&&o.uploadIP;return{url:this._getRawOrUploadProxyUrl(s),fileType:this.uploadFileType,fileName:e,resources:t,downloadUrl:a,requestSnapshotUrl:n,thumbUrl:l,largeUrl:d,fileKey:h,uploadIP:u||"",onProgress:e=>this._handleUploadProgress(e,c)}}catch(e){throw console.error("Failed to create COS pre-signed URL options:",e),e}})}_prepareUploadParams(e){console.log(f+" prepareUploadParams:",e);var t=e["file"],{IN_MINI_APP:r,IN_RN_APP:i}=F.getPlatformFlags(),r=r||i,i=r&&e.message.type!==g,e=t["name"],e=e.slice(e.lastIndexOf(".")),e=""+n(999999)+e;return{fileName:l(i?t.name:e),resources:r?t.url:t,uploadMethod:r?1:0}}_handleUploadProgress(e,t){if("function"==typeof t.onProgress)try{t.onProgress(e.percent)}catch(e){throw console.warn("Upload progress callback error:",e),e}}_fetchCosSignatureUrl(n){return t(this,void 0,void 0,function*(){var r=f+" fetchCosSignatureUrl",i=F.isSimpleCos(),o=this._prepareCosRequestData(n),s=i?"im_cos_msg.simple_sig":"im_cos_msg.pre_sig";try{let e=yield function(o,s,a){return t(this,void 0,void 0,function*(){try{var{helper:e,channel:t}=a,r=e.generateCosSpecifiedData({servcmd:o,data:s}),i=r.head.seq+o;return yield t.sendPacket(r,{requestId:i})}catch(e){throw console.warn("getCosSig error:",e),e}})}(s,o,this._core);this.fetchCosTryCount=0;var a=this._processResponse(e);return console.log(r+` ok. isSimpleCos:${i} data:`,a),a||{}}catch(e){if(console.error(r+" failed, error:",e),this.fetchCosTryCount<1)return this.fetchCosTryCount++,this._fetchCosSignatureUrl(n);throw this.fetchCosTryCount=0,e}})}_processResponse(e){var t;let r=F.isSimpleCos(),l=r?null==(t=null==e?void 0:e.rpt_pre_sig)?void 0:t[0]:e;if(!l)return{};if(r){let{str_final_ip:e,rpt_pre_sig:t,uint32_file_id:r,uint32_exist_flag:i,str_download_url:o,str_upload_url:s,str_snapshot_url:a,str_file_key:n}=l;return{uploadIP:e,preSig:t,fileID:r,existFlag:i,downloadUrl:o,uploadUrl:s,requestSnapshotUrl:a,fileKey:n}}let{upload_url:i,download_url:o,snapshot_url:s,thumb_url:a,large_url:n,file_key:d}=l;return{uploadUrl:i,downloadUrl:o,requestSnapshotUrl:s,thumbUrl:a,largeUrl:n,fileKey:d}}_prepareCosRequestData(e){return F.isSimpleCos()?{uint32_upload_method:e.uploadMethod,uint32_platform:F.getPlatform(),uint32_sdkappid:F.getSDKAppID(),str_user_id:e.userID,uint32_scene:e.conversationType,rpt_upload_object:[{uint32_file_id:1,uint32_file_type:e.fileType,str_file_name:e.fileName}]}:{file_type:e.fileType,file_name:e.fileName,upload_method:e.uploadMethod,Duration:e.duration}}_uploadFile(o){return t(this,void 0,void 0,function*(){return new Promise((r,i)=>{this.httpRequest.request(o,(e,t)=>{e&&this.uploadFileTryCount<this.maxRetries&&this.shouldRetry(e)?(this.uploadFileTryCount++,this._uploadFile(o).then(r).catch(i)):(this.uploadFileTryCount=0,e?i(e):r(t))})})})}shouldRetry(e){return!(!e||5!==Math.floor(e.statusCode/100)&&(!this.isTimeRelatedError(e)||!this._isClockOutOfSync(e)||(this._syncSystemClock(e),0)))}isTimeRelatedError(e){var t,r;try{var i=null==(t=e.error)?void 0:t.Code,o=null==(r=e.error)?void 0:r.Message;return"RequestTimeTooSkewed"===i||"AccessDenied"===i&&"Request has expired"===o}catch(e){return!1}}_isClockOutOfSync(e){var t,e=(null==(t=e.headers)?void 0:t.date)||(null==(t=e.headers)?void 0:t.Date)||(null==(t=e.error)?void 0:t.ServerTime);return!!e&&(t=Date.now(),e=Date.parse(e),3e4<=Math.abs(t+this.systemClockOffset-e))}_syncSystemClock(e){var t,r=(null==(t=e.headers)?void 0:t.date)||(null==(t=e.headers)?void 0:t.Date)||(null==(t=e.error)?void 0:t.ServerTime);if(r){let e=Date.now(),t=Date.parse(r);this.systemClockOffset=t-e}}_getRawOrUploadProxyUrl(e){var t=F.getFileUploadProxy();let r=e;return r=t?e.replace(/^https:\/\/[^/]+/,t):r}_isC2CConversation(e){return"C2C"===e.slice(0,3)}};let M=2108,b=2251,A=2252,O=["jpg","jpeg","gif","png","bmp","image","webp"],T=20971520,N={JPG:1,JPEG:1,GIF:2,PNG:3,BMP:4,UNKNOWN:255};class C{constructor(e,t){this.instanceID=n(9999999),this.sizeType=e.type||0,this.type=0,this.size=e.size||0,this.width=e.width||0,this.height=e.height||0,this.imageUrl=F.addAuthToUrl(e.imageUrl||e.url||""),this.url=F.addAuthToUrl(e.url||t)}setSizeType(e){this.sizeType=e}setType(e){this.type=e}setImageUrl(e){e&&(this.imageUrl=F.addAuthToUrl(e))}getImageUrl(){return this.imageUrl}}function E(t){var{originUrl:t,originWidth:r,originHeight:i,min:o=198}=t,r=parseInt(r)||0,i=parseInt(i)||0,s={url:void 0,width:0,height:0};if((r<=i?r:i)<=o)s.url=t,s.width=r,s.height=i;else{i<=r?(s.width=Math.ceil(r*o/i),s.height=o):(s.width=o,s.height=Math.ceil(i*o/r));let e=t&&-1<t.indexOf("?")?t+"&":t+"?";s.url=198===o?e+"imageView2/3/w/198/h/198":e+"imageView2/3/w/720/h/720"}return void 0===t?e(s,["url"]):s}class D{constructor(e){this._imageMemoryURL="",this._percent=0,this.type=u;var{uuid:e,file:t,imageFormat:r,imageInfoArray:i=[]}=e;this._imageMemoryURL=this.createImageDataAsURL(t),this.content={imageFormat:r,uuid:e,imageInfoArray:[]},this.initImageInfoArray(i),this.autoFixUrl()}static parseServerPushElement(e){let t=e["MsgContent"],{ImageFormat:r,ImageInfoArray:i,UUID:o}=t,s=i.map(e=>({size:e.Size,type:e.Type,width:e.Width,height:e.Height,url:e.URL}));return new D({imageFormat:r,imageInfoArray:s,uuid:o})}createImageDataAsURL(e){let t="";var{IN_MINI_APP:r,IN_RN_APP:i,IN_BROWSER:o}=F.getPlatformFlags();return t=e&&((r||i)&&(t=e.url),o)?window.URL.createObjectURL(e):t}initImageInfoArray(t=[]){var r={type:0,size:0,width:0,height:0,url:""};for(let e=0;e<3;e++){var i=t[e]||Object.assign({},r),i=new C(i,this._imageMemoryURL);i.setSizeType(e+1),i.setType(e),this.addImageInfo(i)}this.updateAccessSideImageInfoArray()}autoFixUrl(){let i=["http","https"];this.content.imageInfoArray.forEach(e=>{var t,r;e.url&&""!==e.imageUrl&&([t,...r]=e.imageUrl.split("://"),r=r.join("://"),i.includes(t)||e.setImageUrl("https://"+r))})}updatePercent(e){this._percent=Math.min(e,1)}updateImageFormat(e){this.content.imageFormat=N[e.toUpperCase()]||N.UNKNOWN}addImageInfo(e){3<=this.content.imageInfoArray.length||this.content.imageInfoArray.push(e)}updateImageInfoArray(t){var r,i=this.content.imageInfoArray.length;for(let e=0;e<i;e++)r=this.content.imageInfoArray[e],t[e].size&&(r.size=t[e].size),t[e].url&&r.setImageUrl(t[e].url),t[e].width&&(r.width=t[e].width),t[e].height&&(r.height=t[e].height)}updateAccessSideImageInfoArray(){var[e]=this.content.imageInfoArray;if(e&&0!==e.width&&0!==e.height){var t=this.content.imageInfoArray,r=t[2];t[2]=t[1],t[1]=r;for(let e=0;e<t.length;e++)t[e].setType(e);Object.assign(this.content.imageInfoArray[2],E({originWidth:e.width,originHeight:e.height,min:720}))}}validateBeforeSend(){var[e]=this.content.imageInfoArray,e=!!e&&""!==e.imageUrl&&0!==e.size;return{isValid:e,error:e?null:{message:"content can not be empty"}}}transformToServerFormat(e){var{isMergerMessage:e=!1}=e||{},{uuid:e,imageFormat:t,imageInfoArray:r}=e?this.payload:this.content;return{MsgType:this.type,MsgContent:{ImageFormat:t,ImageInfoArray:this.parseImageInfoArray(r),UUID:e}}}parseImageInfoArray(e){return e.map(e=>({InstanceId:e.instanceID,Type:e.sizeType,MsgType:e.type,Size:e.size,Width:e.width,Height:e.height,URL:F.removeAuthToUrl(e.imageUrl)}))}}var $=new class{constructor(){this._messageOptionsMap=new Map}init(e){var{notificationCenter:e,helper:t,InnerEvent:r,message:i}=this._core=e;t.registerApi({apiName:"createImageMessage",context:this}),null!=(t=null==i?void 0:i.messageFactory)&&t.registerElementClass(u,D),e.subscribeInnerEvent(r.DESTROY,this._dispose,this)}createImageMessage(o){var s,a,n,e,t;try{let e=this._core.ssoLog.createSSOLogData({method:"createImageMessage"}),t=(console.log(f+" createImageMessage options:",o),null==(s=this._core.store.get("login"))?void 0:s.userId),r=null==(n=null==(a=this._core)?void 0:a.message.messageFactory)?void 0:n.createMessage(Object.assign(Object.assign({},o),{from:t})),i=this._processImage(o);o.payload.file=i;var l={imageFormat:N.UNKNOWN,uuid:F.generateUUID(i),file:i,imageInfoArray:[]},d=new D(l);return r.setElement(d),this._messageOptionsMap.set(r.clientSequence,o),console.log(f+" createImageMessage OK imageMessage:",r),e.end(),r}catch(o){throw null!=(t=(e=this._core.ssoLog.getSSOLogData("createImageMessage")).setError)&&t.call(e,o).end(),console.error(f+" createImageMessage error:",o),o}}upload(i){return t(this,void 0,void 0,function*(){console.log(f+" uploadImage message:",i);var e=i.getElements()[0],t=this._messageOptionsMap.get(i.clientSequence).payload["file"],t=(this._validateBeforeUploadImage(t),yield this._performImageUpload(e,i,t)),r=this._generateImageInfo(t);return e.updateImageFormat(null==t?void 0:t.fileType),e.updateImageInfoArray(r),i})}_performImageUpload(i,o,r){return t(this,void 0,void 0,function*(){var e=o["to"],e={uploadFileType:v,file:r,to:e,message:o,onProgress:e=>{var t,r;i.updatePercent(e),null!=(r=null==(t=this._messageOptionsMap.get(o.clientSequence))?void 0:t.onProgress)&&r.call(t,e)}},{uploadOptions:e,response:t}=yield P.uploadToCOS(e);return this._parseResponse(e,t)})}_generateImageInfo(e){console.log(f+" generateImageInfo");var{location:e,fileSize:t,width:r,height:i,smallImageUrl:o,smallImageWidth:s,smallImageHeight:a,largeImageUrl:n,largeImageWidth:l,largeImageHeight:d,imageInfoArray:h}=e,e=F.addAuthToUrl(e),u={size:t,url:e,width:r,height:i};return 0<(null==h?void 0:h.length)?this._processImageInfoArray(h,t):o&&n?[Object.assign({},u),{largeImageUrl:n,largeImageWidth:l,largeImageHeight:d},{smallImageUrl:o,smallImageWidth:s,smallImageHeight:a}]:[Object.assign({},u),this._generateThumbInfo(e,r,i,720),this._generateThumbInfo(e,r,i,198)]}_generateThumbInfo(e,t,r,i){return E({originUrl:e,originWidth:t,originHeight:r,min:i})}_processImageInfoArray(e,t){let r,i,o;for(var s of e)1===s.type?(i=s,i.size=t):2===s.type?(o=s,o.size=t):(r=s,r.size=t);return[Object.assign({},r),Object.assign({},o),Object.assign({},i)]}_parseResponse(i,o){return t(this,void 0,void 0,function*(){console.log(f+" parseResponse");try{var{thumbUrl:e,largeUrl:t,downloadUrl:r}=i;if(e&&t&&(yield this._getImageInfoByUrl(e,o,"thumb"),yield this._getImageInfoByUrl(t,o,"large")),F.isSimpleCos()&&!F.isPrivateNetWork()&&(yield this._getImageInfoArray(r,o),null!=o)&&o.uploadIP){let e=this._extractDomainFromUrl(r);e&&(yield this._getDownloadIP(e,o))}return o}catch(e){throw console.error("Failed to parse response:",e),e}})}_extractDomainFromUrl(e){try{var t=e.match(/:\/\/([^\/]+)/);return t?t[1]:null}catch(e){return console.warn("Failed to extract domain from URL:",e),null}}_getImageInfoByUrl(i,o,s){return t(this,void 0,void 0,function*(){try{var e=F.addAuthToUrl(i),{width:t=0,height:r=0}=yield F.probeImageWidthHeight(e);o.width=t,o.height=r,"thumb"===s?(o.smallImageUrl=i,o.smallImageWidth=t,o.smallImageHeight=r):(o.largeImageUrl=i,o.largeImageWidth=t,o.largeImageHeight=r)}catch(e){console.warn(`Failed to get ${s} image info:`,e)}})}_validateBeforeUploadImage(e){var t=(null==(t=this._core)?void 0:t.helper)["ChatError"];if(!e)throw new t({code:b});this._checkImageType(e),this._checkImageSize(e)}_processImage(e){var t;try{var r=(null==(t=this._core)?void 0:t.utils)["IN_MINI_APP"],i=e.payload["file"];return r?this._processMiniAppImageFile(i):this._processWebImageFile(i)}catch(e){throw console.warn(f+" _processImage error:",e),e}}_processMiniAppImageFile(e){r(e)&&console.warn("FileUnsupportedInMiniApp","createImageMessage");var t=e.tempFiles[0].path||e.tempFiles[0].tempFilePath;return{url:t,name:t.slice(t.lastIndexOf("/")+1),size:e.tempFiles&&e.tempFiles[0].size||1,type:t.slice(t.lastIndexOf(".")+1).toLowerCase()}}_processWebImageFile(e){var t=(null==(t=this._core)?void 0:t.helper)["ChatError"],e=F.extractFileFromInput(e);if(e)return e;throw new t({message:"Invalid file. Pass either `e.target` (from file input) or a File object"})}_getDownloadIP(o,s){return t(this,void 0,void 0,function*(){var e=f+" getDownloadIP domainName: "+o;try{var r,i=yield function(a,n){return t(this,void 0,void 0,function*(){try{var{helper:e,channel:t}=n,r="im_cos_msg.get_final_ip",i={str_domain:a},o=e.generateProtocolData({servcmd:r,data:i}),s=o.head.seq+r;return yield t.sendPacket(o,{requestId:s})}catch(e){throw console.warn("getFinalIP error:",e),e}})}(o,this._core);i&&i.str_final_ip&&(console.log(e+" ok. downloadIP:"+i),(r=s.location.split("/"))[0]=i.str_final_ip,s.location=r.join("/"))}catch(e){console.warn(e)}})}_getImageInfoArray(i,o){return t(this,void 0,void 0,function*(){var r=f+"._getImageInfoArray";try{var e=yield function(a,n){return t(this,void 0,void 0,function*(){try{var{helper:e,channel:t}=n,r="im_cos_msg.get_imageinfo",i={str_image_url:a},o=e.generateProtocolData({servcmd:r,data:i}),s=o.head.seq+r;return yield t.sendPacket(o,{requestId:s})}catch(e){throw console.warn("getImageInfo error:",e),e}})}(i,this._core);return o.imageInfoArray=this._processImageInfoResponse(e),console.log(r+" ok"),o}catch(e){throw o.imageInfoArray=void 0,console.warn(r+" failed, error:",e),e}})}_processImageInfoResponse(e){return e?(e=e["rpt_msg_image_info"],e.map(e=>({type:e.uint32_image_type,url:e.str_url,width:e.uint32_width,height:e.uint32_height,imageFormat:e.str_image_format}))):[]}_checkImageType(e){var{utils:t,helper:r}=this._core;let i="";if(t.IN_MINI_APP&&(i=e.url.slice(e.url.lastIndexOf(".")+1)),t.IN_BROWSER&&(i=e.name.slice(e.name.lastIndexOf(".")+1)),O.indexOf(i.toLowerCase())<0)throw new r.ChatError({code:A})}_checkImageSize(e){var{utils:t,helper:r}=this._core,i=0;if(t.IN_MINI_APP,0===(i=e.size))throw new r.ChatError({code:M});if(i>=T)throw new r.ChatError({message:"File size exceeds limit: "+c(T)})}_reset(){this._messageOptionsMap.clear()}_dispose(){this._reset();var{notificationCenter:e,InnerEvent:t}=this._core;e.unSubscribeInnerEvent(t.DESTROY,this._dispose,this)}};let R=2108,z=2401,x="2.5.0",W="1.18.0",j=104857600;function q(e,t){let i=e.split("."),o=t.split("."),s=Math.max(i.length,o.length);for(;i.length<s;)i.push("0");for(;o.length<s;)o.push("0");for(let r=0;r<s;r++){let e=parseInt(i[r]),t=parseInt(o[r]);if(e>t)return 1;if(e<t)return-1}return 0}let V=new class{init(e){this.core=e}};class L{constructor(e){this.type=g,this.uploadProgress=0;var t=this._getFileInfo(e);this.content={downloadFlag:2,fileUrl:F.addAuthToUrl(e.url||e.fileUrl)||"",uuid:e.uuid,fileName:t.name||"",fileSize:t.size||0}}static parseServerPushElement(e){var e=e["MsgContent"],{Download_Flag:e,Url:t,FileName:r,FileSize:i,UUID:o}=e;return new L({downloadFlag:e,url:t,fileName:r,fileSize:i,uuid:o})}updatePercent(e){this.uploadProgress=Math.min(e,1)}updateFileUrl(e){this.content.fileUrl=e}validateBeforeSend(){var e=""!==this.content.fileUrl&&""!==this.content.fileName&&0<this.content.fileSize;return{isValid:e,error:e?null:{message:"content can not be empty"}}}transformToServerFormat(e){var{isMergerMessage:e=!1}=e||{},{uuid:e,downloadFlag:t,fileUrl:r,fileName:i,fileSize:o}=e?this.payload:this.content;return{MsgType:this.type,MsgContent:{Download_Flag:t,Url:F.removeAuthToUrl(r),FileName:i,FileSize:o,UUID:e}}}_getFileInfo(e){var t=V.core["utils"]["IN_UNI_NATIVE_APP"];return e.fileName&&e.fileSize?{size:e.fileSize,name:e.fileName}:(e=e["file"],e?(t&&this._processNativeAppFile(e),{size:e.size,name:e.name}):{size:0,name:""})}_processNativeAppFile(e){var t;e.path&&e.path.includes(".")&&(t=e.path.slice(e.path.lastIndexOf(".")+1).toLowerCase(),e.type=t,e.name||(e.name=n(999999)+"."+t)),e.name||(e.type="",e.name=e.path.slice(e.path.lastIndexOf("/")+1).toLowerCase()),e.suffix&&(e.type=e.suffix),e.url||(e.url=e.path)}}var k=new class{constructor(){this._messageOptionsMap=new Map}init(e){var{notificationCenter:e,helper:t,InnerEvent:r,message:i}=this._core=e;t.registerApi({apiName:"createFileMessage",context:this}),null!=(t=null==i?void 0:i.messageFactory)&&t.registerElementClass(g,L),e.subscribeInnerEvent(r.DESTROY,this._dispose,this)}createFileMessage(r){var i,o,s,e,t;try{let e=this._core.ssoLog.createSSOLogData({method:"createFileMessage"}),t=(console.log(f+" createFileMessage options:",r),this._checkVersion(),this._processFile(r.payload.file));r.payload.file=t;var a=null==(i=this._core.store.get("login"))?void 0:i.userId,n=null==(s=null==(o=this._core)?void 0:o.message.messageFactory)?void 0:s.createMessage(Object.assign(Object.assign({},r),{from:a})),l={uuid:F.generateUUID(t),file:t},d=new L(l);return n.setElement(d),this._messageOptionsMap.set(n.clientSequence,r),console.log(f+" createFileMessage success fileMessage:",n),e.end(),n}catch(r){throw null!=(t=(e=this._core.ssoLog.getSSOLogData("createFileMessage")).setError)&&t.call(e,r).end(),console.error(f+" createFileMessage error:",r),r}}upload(r){return t(this,void 0,void 0,function*(){console.log(f+" uploadFile message:",r);var e=this._messageOptionsMap.get(r.clientSequence).payload["file"],t=(this._validateBeforeUploadFile(e),r.getElements()[0]),e=yield this._performFileUpload(t,r,e),e=F.addAuthToUrl(null==e?void 0:e.location);return t.updateFileUrl(e),r})}_validateBeforeUploadFile(e){var t=(null==(t=this._core)?void 0:t.helper)["ChatError"];if(!e)throw new t({code:z});if(e.size>j)throw new t({message:"File size exceeds limit: "+c(j)});if(0===e.size)throw new t({code:R})}_performFileUpload(i,o,r){return t(this,void 0,void 0,function*(){var e=o["to"],e={uploadFileType:U,file:r,to:e,message:o,onProgress:e=>{var t,r;i.updatePercent(e),null!=(r=null==(t=this._messageOptionsMap.get(o.clientSequence))?void 0:t.onProgress)&&r.call(t,e)}},e=(yield P.uploadToCOS(e))["response"];return e})}_processFile(t){var{IN_BROWSER:e,IN_RN_APP:r,IN_WX_MINI_APP:i,IN_QQ_MINI_APP:o,IN_UNI_NATIVE_APP:s}=null==(e=this._core)?void 0:e.utils,a=(null==(a=this._core)?void 0:a.helper)["ChatError"];if(e||s){let e=F.extractFileFromInput(t);if(e)return e;throw new a({message:"Invalid file. Pass either `e.target` (from file input) or a File object"})}if(i||o){let e=t["tempFiles"];return Object.assign(Object.assign({},e[0]),{url:e[0].path})}return r?Object.assign(Object.assign({},t),{url:t.uri}):t}_checkVersion(){var{MINI_APP_NAMESPACE:t,IN_MINI_APP:e,IN_WX_MINI_APP:r,IN_QQ_MINI_APP:i,IN_UNI_NATIVE_APP:o}=null==(e=this._core)?void 0:e.utils,s=(null==(s=this._core)?void 0:s.helper)["ChatError"];if(e){if(!(r||i||o))throw new s({message:"Unsupported mini app environment"});let e=t.getSystemInfoSync().SDKVersion;if(r&&q(e,x)<0)throw new s({message:`WXChooseMessageFile requires SDK version ${x} or higher`});if(i&&q(e,W)<0)throw new s({message:`QQChooseMessageFile requires SDK version ${W} or higher`})}}_reset(){this._messageOptionsMap.clear()}_dispose(){this._reset();var{notificationCenter:e,InnerEvent:t}=this._core;e.unSubscribeInnerEvent(t.DESTROY,this._dispose,this)}};let B=2108,H=2352,K=["mp4","quicktime","mov"],Y=104857600;class G{constructor(e){this.type=m,this.uploadProgress=0;var t="number"==typeof(null==e?void 0:e.videoSecond)?null==e?void 0:e.videoSecond:0;this.content={remoteVideoUrl:F.addAuthToUrl(e.remoteVideoUrl||e.videoUrl||""),videoFormat:e.videoFormat,videoSecond:parseInt(null==t?void 0:t.toString(),10),videoSize:e.videoSize,videoUrl:F.addAuthToUrl(e.videoUrl),videoDownloadFlag:2,videoUUID:e.videoUUID,thumbUUID:e.thumbUUID,thumbFormat:e.thumbFormat,thumbWidth:e.thumbWidth,snapshotWidth:e.thumbWidth,thumbHeight:e.thumbHeight,snapshotHeight:e.thumbHeight,thumbSize:e.thumbSize,snapshotSize:e.thumbSize,thumbDownloadFlag:2,thumbUrl:F.addAuthToUrl(e.thumbUrl),snapshotUrl:F.addAuthToUrl(e.thumbUrl)}}static parseServerPushElement(e){var e=e["MsgContent"],{VideoUrl:e,VideoFormat:t,VideoSecond:r,VideoSize:i,VideoDownloadFlag:o,VideoUUID:s,ThumbUUID:a,ThumbFormat:n,ThumbWidth:l,SnapshotWidth:d,ThumbHeight:h,SnapshotHeight:u,ThumbSize:c,SnapshotSize:p,ThumbDownloadFlag:g,ThumbUrl:m,SnapshotUrl:f}=e;return new G({videoUrl:e,videoFormat:t,videoSecond:r,videoSize:i,videoDownloadFlag:o,videoUUID:s,thumbUUID:a,thumbFormat:n,thumbWidth:l,snapshotWidth:d,thumbHeight:h,snapshotHeight:u,thumbSize:c,snapshotSize:p,thumbDownloadFlag:g,thumbUrl:m,snapshotUrl:f})}updatePercent(e){this.uploadProgress=Math.min(e,1)}updateVideoUrl(e){e&&(this.content.remoteVideoUrl=e)}updateSnapshotInfo(e){var{snapshotUrl:e,snapshotWidth:t,snapshotHeight:r}=e;F.isEmpty(e)||(this.content.thumbUrl=this.content.snapshotUrl=e),F.isEmpty(t)||(this.content.thumbWidth=this.content.snapshotWidth=Number(t)),F.isEmpty(r)||(this.content.thumbHeight=this.content.snapshotHeight=Number(r))}validateBeforeSend(){var e=""!==this.content.remoteVideoUrl;return{isValid:e,error:e?null:{message:"content can not be empty"}}}transformToServerFormat(e){var{isMergerMessage:e=!1}=e||{},{remoteVideoUrl:e,videoFormat:t,videoSecond:r,videoSize:i,videoDownloadFlag:o,videoUUID:s,thumbUUID:a,thumbFormat:n,thumbWidth:l,snapshotWidth:d,thumbHeight:h,snapshotHeight:u,thumbSize:c,snapshotSize:p,thumbDownloadFlag:g,thumbUrl:m,snapshotUrl:f}=e?this.payload:this.content;return{MsgType:this.type,MsgContent:{VideoUrl:F.removeAuthToUrl(e),VideoFormat:t,VideoSecond:r,VideoSize:i,VideoDownloadFlag:o,VideoUUID:s,ThumbUUID:a,ThumbFormat:n,ThumbWidth:l,SnapshotWidth:d,ThumbHeight:h,SnapshotHeight:u,ThumbSize:c,SnapshotSize:p,ThumbDownloadFlag:g,ThumbUrl:F.removeAuthToUrl(m),SnapshotUrl:F.removeAuthToUrl(f)}}}}var J=new class{constructor(){this._messageOptionsMap=new Map}init(e){var{notificationCenter:e,helper:t,InnerEvent:r,message:i}=this._core=e;t.registerApi({apiName:"createVideoMessage",context:this}),null!=(t=null==i?void 0:i.messageFactory)&&t.registerElementClass(m,G),e.subscribeInnerEvent(r.DESTROY,this._dispose,this)}createVideoMessage(r){var i,o,s,e,t;try{let e=this._core.ssoLog.createSSOLogData({method:"createVideoMessage"}),t=(console.log(f+" createVideoMessage options:",r),this._processVideo(r));r.payload.file=t;var a=null==(i=this._core.store.get("login"))?void 0:i.userId,n=null==(s=null==(o=this._core)?void 0:o.message.messageFactory)?void 0:s.createMessage(Object.assign(Object.assign({},r),{from:a})),l={videoFormat:t.videoFile.type,videoSecond:d(t.videoFile.second,0),videoSize:t.videoFile.size,remoteVideoUrl:"",videoUrl:t.videoFile.url,videoUUID:F.generateUUID(t.videoFile),thumbUUID:F.generateUUID(t.videoFile,"jpg"),thumbWidth:t.width||200,thumbHeight:t.height||200,thumbUrl:t.thumbUrl,thumbSize:t.thumbSize,thumbFormat:"jpg"},h=new G(l);return n.setElement(h),this._messageOptionsMap.set(n.clientSequence,r),e.end(),n}catch(r){throw null!=(t=(e=this._core.ssoLog.getSSOLogData("createVideoMessage")).setError)&&t.call(e,r).end(),console.error(f+" createVideoMessage error:",r),r}}upload(i){return t(this,void 0,void 0,function*(){console.log(f+" uploadVideo message:",i);var e=i.getElements()[0],t=this._messageOptionsMap.get(i.clientSequence).payload["file"],t=(this._validateBeforeUploadVideo(t),yield this._performVideoUpload(e,i,t)),{location:t,snapshotInfo:r}=t,t=F.addAuthToUrl(t);return e.updateVideoUrl(t),F.isEmpty(r)||e.updateSnapshotInfo(r),i})}_validateBeforeUploadVideo(e){var t=(null==(t=this._core)?void 0:t.helper)["ChatError"];if(e.videoFile.size>Y)throw new t({message:"File size exceeds limit: "+c(Y)});if(0===e.videoFile.size)throw new t({code:B});if(-1===K.indexOf(e.videoFile.type))throw new t({code:H})}_performVideoUpload(i,o,r){return t(this,void 0,void 0,function*(){var e=o["to"],e={uploadFileType:I,file:r,to:e,message:o,onProgress:e=>{var t,r;i.updatePercent(e),null!=(r=null==(t=this._messageOptionsMap.get(o.clientSequence))?void 0:t.onProgress)&&r.call(t,e)}},{response:e,uploadOptions:t}=yield P.uploadToCOS(e);return{snapshotInfo:yield this._getSnapshotInfoByUrl(t.requestSnapshotUrl),location:e.location}})}_processVideo(e){var i,o;try{var s=(null==(i=this._core)?void 0:i.helper)["ChatError"],{IN_MINI_APP:a,IN_BROWSER:n}=null==(o=this._core)?void 0:o.utils;let t=e.payload["file"],r={};if(a&&(r=this._processMiniVideoFile(t),t.name=r.name,t.url=r.url,t.type=r.type),n){let e=F.extractFileFromInput(t);if(!e)throw new s({message:"Invalid file. Pass either `e.target` (from file input) or a File object"});t=e,r=this._processWebVideoFile(t)}return t.videoFile=r,t.thumbUrl="",t.thumbSize=0,t}catch(e){throw console.warn(f+" _processFile error:",e),e}}_processMiniVideoFile(e){var{IN_ALIPAY_MINI_APP:t,IN_UNI_NATIVE_APP:i}=null==(t=this._core)?void 0:t.utils,o=(null==(o=this._core)?void 0:o.helper)["ChatError"];if(t)throw new o({message:"VideoUnsupportedInAlipay"});if(r(e))throw new o({message:"FileUnsupportedInMiniApp"});let s=(e=Array.isArray(e.tempFiles)?e.tempFiles[0]:e).tempFilePath.slice(e.tempFilePath.lastIndexOf(".")+1).toLowerCase();return i&&(s=e.fileType||s),{url:e.tempFilePath,name:e.tempFilePath.slice(e.tempFilePath.lastIndexOf("/")+1),size:e.size||1,second:e.duration||0,type:s}}_processWebVideoFile(e){var{name:t,size:r=1,duration:i=0,type:o}=e,o=o.split("/")[1];return{url:window.URL.createObjectURL(e),name:t,size:r,second:i,type:o}}_getSnapshotInfoByUrl(s){return t(this,void 0,void 0,function*(){try{console.log(f+" _getSnapshotInfoByUrl url:",s);var e,r,i,o=((yield function(s,a){return t(this,void 0,void 0,function*(){try{var e="im_cos_msg.video_cover",{helper:t,channel:r}=a,i=t.generateCosSpecifiedData({servcmd:e,data:s}),o=i.head.seq+e;return yield r.sendPacket(i,{requestId:o})}catch(e){throw console.warn("getSnapshotInfo error:",e),e}})}({version:1,platform:F.getPlatform(),cover_name:l(n(99999)),snapshot_url:s},this._core))||{})["download_url"];return(console.log(f+" _getSnapshotInfoByUrl OK snapshotUrl:",o),F.isEmpty(o))?{}:(e=F.addAuthToUrl(o),{width:r=0,height:i=0}=yield F.probeImageWidthHeight(e),{snapshotUrl:e,snapshotWidth:r,snapshotHeight:i})}catch(e){throw console.error(f+" _getSnapshotInfoByUrl error:",e),e}})}_reset(){this._messageOptionsMap.clear()}_dispose(){this._reset();var{notificationCenter:e,InnerEvent:t}=this._core;e.unSubscribeInnerEvent(t.DESTROY,this._dispose,this)}};class Q{constructor(e){this.uploadProgress=0,this.type=p,this.content={downloadFlag:2,second:e.second,size:e.size,url:F.addAuthToUrl(e.url),remoteAudioUrl:F.addAuthToUrl(e.url||""),uuid:e.uuid}}static parseServerPushElement(e){var e=e["MsgContent"],{Url:e,Download_Flag:t,Second:r,Size:i,UUID:o}=e;return new Q({url:e,downloadFlag:t,second:r,size:i,uuid:o})}updatePercent(e){this.uploadProgress=Math.min(e,1)}updateAudioUrl(e){this.content.remoteAudioUrl=e}validateBeforeSend(){var e=""!==this.content.remoteAudioUrl;return{isValid:e,error:e?null:{message:"content can not be empty"}}}transformToServerFormat(e){var{isMergerMessage:e=!1}=e||{},{uuid:e,downloadFlag:t,remoteAudioUrl:r,size:i,second:o}=e?this.payload:this.content;return{MsgType:this.type,MsgContent:{Url:F.removeAuthToUrl(r),Download_Flag:t,Second:o,Size:i,UUID:e}}}}let X=2108,Z=2300,ee=20971520;var te=new class{constructor(){this._messageOptionsMap=new Map}init(e){var{notificationCenter:e,helper:t,InnerEvent:r,message:i}=this._core=e;t.registerApi({apiName:"createAudioMessage",context:this}),null!=(t=null==i?void 0:i.messageFactory)&&t.registerElementClass(p,Q),e.subscribeInnerEvent(r.DESTROY,this._dispose,this)}createAudioMessage(t){var r,i,e,o;try{let e=this._core.ssoLog.createSSOLogData({method:"createAudioMessage"});console.log(f+" createAudioMessage options:",t);t.payload["file"];var s=this._processAudioFile(t.payload.file),a=(t.payload.file=s,null==(o=this._core.store.get("login"))?void 0:o.userId),n=null==(i=null==(r=this._core)?void 0:r.message.messageFactory)?void 0:i.createMessage(Object.assign(Object.assign({},t),{from:a})),l={second:Math.floor((s.duration||s.second)/1e3),size:s.fileSize||s.size||1,url:s.tempFilePath||s.uri||s.url,uuid:F.generateUUID(s)},d=new Q(l);return n.setElement(d),this._messageOptionsMap.set(n.clientSequence,t),e.end(),n}catch(t){throw null!=(o=(e=this._core.ssoLog.getSSOLogData("createAudioMessage")).setError)&&o.call(e,t).end(),console.error(f+" createAudioMessage error:",t),t}}upload(r){return t(this,void 0,void 0,function*(){console.log(f+" uploadAudio message:",r);var e=this._messageOptionsMap.get(r.clientSequence).payload["file"],t=(this._validateBeforeUploadAudio(e),r.getElements()[0]),e=yield this._performAudioUpload(t,r,e),e=F.addAuthToUrl(null==e?void 0:e.location);return t.updateAudioUrl(e),r})}_validateBeforeUploadAudio(e){var t=(null==(t=this._core)?void 0:t.helper)["ChatError"];if(!e)throw new t({code:Z});if(e.size>ee)throw new t({message:"File size exceeds limit: "+c(ee)});if(0===e.size)throw new t({code:X})}_performAudioUpload(i,o,r){return t(this,void 0,void 0,function*(){var e=o["to"],e={uploadFileType:y,file:r,to:e,message:o,onProgress:e=>{var t,r;i.updatePercent(e),null!=(r=null==(t=this._messageOptionsMap.get(o.clientSequence))?void 0:t.onProgress)&&r.call(t,e)}},e=(yield P.uploadToCOS(e))["response"];return e})}_processAudioFile(e){var{IN_MINI_APP:t,IN_BROWSER:r}=null==(t=this._core)?void 0:t.utils;return t?this._processMiniFile(e):r?this._processWebFile(e):void 0}_processMiniFile(e){return{url:e.tempFilePath,name:e.tempFilePath.slice(e.tempFilePath.lastIndexOf("/")+1),size:e.fileSize,second:e.duration,type:e.tempFilePath.slice(e.tempFilePath.lastIndexOf(".")+1).toLowerCase()}}_processWebFile(e){var t;return e.tempFilePath||e.uri||(t=URL.createObjectURL(e),e.tempFilePath=t),e}_reset(){this._messageOptionsMap.clear()}_dispose(){this._reset();var{notificationCenter:e,InnerEvent:t}=this._core;e.unSubscribeInnerEvent(t.DESTROY,this._dispose,this)}};let oe={to:{required:!0,rules:["string"],allowEmpty:!1},conversationType:{required:!0,rules:["string"],allowEmpty:!1},payload:{required:!0,rules:["object"],allowEmpty:!1},cloudCustomData:{required:!1,rules:["string"],allowEmpty:!1},priority:{required:!1,rules:["string"],allowEmpty:!1},customModerationConfigurationID:{required:!1,rules:["string"],allowEmpty:!1},onProgress:{required:!1,rules:["function"],allowEmpty:!1}},se={createImageMessage:oe,createAudioMessage:oe,createVideoMessage:oe,createFileMessage:oe},ie={createImageMessage:!0,createAudioMessage:!0,createVideoMessage:!0,createFileMessage:!0},re={[u]:$,[g]:k,[m]:J,[p]:te};var ne=new class{constructor(){this.name="RichMediaMessage"}install(e){let{OuterConstant:{MSG_AUDIO:t,MSG_FILE:r,MSG_IMAGE:i,MSG_VIDEO:o}}=(this._core=e)["constants"];V.init(e),$.init(e),k.init(e),J.init(e),te.init(e),P.init(e),F.init(e),e.helper.registerApi({apiName:"sendMessage",context:this,matcher:e=>[t,r,i,o].includes(e[0].type)}),e.helper.registerValidateConfig({auth:ie,params:se})}sendMessage(i,o){return t(this,void 0,void 0,function*(){var e,t,r;try{return console.log("sendMessage message:",i),yield this._upload(i),yield null==(r=null==(t=null==(e=this._core)?void 0:e.message)?void 0:t.messageSender)?void 0:r.sendMessage(i,o)}catch(e){throw console.error("sendMessage error:",e),e}})}_upload(i){return t(this,void 0,void 0,function*(){var t,r;if(!0!==i._relayFlag)try{let t=re[i.type];if(t){let e=this._core.ssoLog.createSSOLogData({method:"upload"});e.setLogInfo({message:"type:"+i.type}),yield t.upload(i),e.end()}}catch(e){throw i.status=w.FAIL,e instanceof Error&&(e.data={message:i}),this._core.message.messageDataHandler.storeConversationMessage(i),null!=(r=(t=this._core.ssoLog.getSSOLogData("upload")).setError)&&r.call(t,e).end(),e}})}};export{ne as default};
@@ -1 +1 @@
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)["TencentCloudChatRich-media-message"]=t()}(this,function(){function m(e,t){var r={};for(o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var i=0,o=Object.getOwnPropertySymbols(e);i<o.length;i++)t.indexOf(o[i])<0&&Object.prototype.propertyIsEnumerable.call(e,o[i])&&(r[o[i]]=e[o[i]]);return r}function d(e,a,n,l){return new(n=n||Promise)(function(r,t){function i(e){try{s(l.next(e))}catch(e){t(e)}}function o(e){try{s(l.throw(e))}catch(e){t(e)}}function s(e){var t;e.done?r(e.value):((t=e.value)instanceof n?t:new n(function(e){e(t)})).then(i,o)}s((l=l.apply(e,a||[])).next())})}var z=new class{constructor(){this._name="WebRequest"}init(e){this._core=e}request(g,m){return d(this,void 0,void 0,function*(){let e,t=(null==(e=this._core)?void 0:e.utils).isEmpty,{downloadUrl:r="",method:i="PUT",url:o,qs:s,headers:a={},resources:n,dataType:l="text",uploadByIP:d,uploadIP:h}=g,u=o;if(s){let e=this._queryString(s);e&&(u+=(u.includes("?")?"&":"?")+e)}let c=new XMLHttpRequest;c.open(i.toUpperCase(),u,!0),c.responseType=l;var p=Object.assign({},a);if(d&&h&&(p.host=h),!t(p))for(let e in p)p.hasOwnProperty(e)&&!["content-length","user-agent","origin","host"].includes(e.toLowerCase())&&c.setRequestHeader(e,p[e]);return c.onload=()=>{var e=this._getResponseBody(c,r,d&&h),e=this._buildResponse(c,e);if(200===c.status)m(null,e);else{if(h&&!u.includes(h))return g.url=this._domainName2IP(u,h),g.uploadByIP=!0,this.request(g,m);m({code:c.status,message:JSON.stringify(c.responseText)},e)}},c.onerror=()=>{var e=this._getResponseBody(c,r,d&&h),e=this._buildResponse(c,e),t={code:c.status,message:0===c.status?"CORS blocked or network error":JSON.stringify(c.responseText)};m(t,e)},g.onProgress&&c.upload&&(c.upload.onprogress=e=>{var{total:e,loaded:t}=e,r=Math.min(Math.floor(100*t/e),100);g.onProgress({total:e,loaded:t,percent:r/100})}),c.send(n),c})}_buildResponse(e,t){let r={};return e.getAllResponseHeaders().trim().split("\n").forEach(e=>{var t;e&&([e,t]=e.split(":").map(e=>e.trim()),r[e.toLowerCase()]=t)}),{statusCode:e.status,statusMessage:e.statusText,headers:r,data:t}}_getResponseBody(e,t,r){return 200===e.status&&t?{location:t,uploadIP:r}:{response:e.responseText,uploadIP:r}}_queryString(r,i="&",o="="){var{isEmpty:e,isPlainObject:t}=null==(e=this._core)?void 0:e.utils;return e(r)?"":t(r)?Object.keys(r).map(e=>{let t=encodeURIComponent(e)+o;return Array.isArray(r[e])?r[e].map(e=>t+encodeURIComponent(e)).join(i):t+encodeURIComponent(r[e])}).filter(Boolean).join(i):void 0}_domainName2IP(e,t){return e.replace(/^http(s)?:\/\/(.*?)\//,`https://${t}/`)}};let x=["unknown","image","video","audio","log"];var o,e,W=new class{init(e){this._core=e}request(r,i){let e,{MINI_APP_NAMESPACE:o,IN_ALIPAY_MINI_APP:s,IN_UNI_IOS_APP:a}=null==(e=this._core)?void 0:e.utils,{resources:n="",headers:l={},url:d,downloadUrl:h=""}=r,u=d,c=null;var p=h?h.match(/^(https?:\/\/[^/]+\/)([^/]*\/?)(.*)$/):null;if(p){var p=decodeURIComponent(p[3]),p=p.includes("?")?p.split("?")[0]:p||"",p={key:r.fileKey||p,success_action_status:200,"Content-Type":""},g={};if(a){let[e,t]=d.split("?sign=");t&&(u=e+"?sign="+encodeURIComponent(t),g.sign=decodeURIComponent(t),g.signature=decodeURIComponent(t))}let t={url:u,header:l,name:"file",filePath:n,formData:Object.assign(Object.assign({},p),g),timeout:r.timeout||3e5};if(s){let e=m(t,["name"]);t=Object.assign(Object.assign({},e),{fileName:"file",fileType:r.fileType?x[r.fileType]:"image"})}return(c=o.uploadFile(Object.assign(Object.assign({},t),{success:e=>{this._handleResponse({response:e,downloadUrl:h,callback:i})},fail:e=>{this._handleResponse({response:e,downloadUrl:h,callback:i})}}))).onProgressUpdate&&c.onProgressUpdate(e=>{r.onProgress&&r.onProgress({total:e.totalBytesExpectedToSend||0,loaded:e.totalBytesSent||0,percent:e.progress?Math.floor(e.progress)/100:0})}),c}console.warn("message Invalid download URL format")}_handleResponse(e){var{downloadUrl:e,response:t,callback:r}=e,i={};if(t.header)for(let e in t.header)t.header.hasOwnProperty(e)&&(i[e.toLowerCase()]=t.header[e]);var o=+t.statusCode;200==o?r(null,{statusCode:o,headers:i,data:Object.assign(Object.assign({},t.data),{location:e})}):r({code:o,message:JSON.stringify(t.data)},{statusCode:o,headers:i,data:void 0})}};function i(e){return"file"===Object.prototype.toString.call(e).match(/^\[object (.*)\]$/)[1].toLowerCase()}function s(e){e=e||99999999;return Math.round(Math.random()*e)}function a(e,t=!0,r=!0){var i=Date.now();return t?r?i-e+" ms":Math.round((i-e)/1e3)+" s":r?i-e:Math.round((i-e)/1e3)}function n(e){return Array.from({length:8},()=>Math.floor(65536*(1+Math.random())).toString(16).substring(1)).join("")+"-"+e}function h(e,t){return Math.round(Number(e)*10**t)/10**t}function u(e){return e<1024?e+"B":e<1048576?Math.floor(e/1024)+"KB":Math.floor(e/1048576)+"MB"}function c(e){return e<=1048576?h(e/1024,1)+"KB/s":h(e/1048576,1)+"MB/s"}let l="TIMImageElem",p="TIMSoundElem",g="TIMFileElem",f="TIMVideoFileElem",_="RichMediaMessagePlugin",v=["rich.my-imcloud.com","imrich.qcloud.com"],j=((e=o=o||{}).UNSENT="unSend",e.SUCCESS="success",e.FAIL="fail",{wechat:/^(wxfile:\/\/tmp_|http:\/\/temp\/|cloud:\/\/temp-)/,alipay:/^(https:\/\/resource\/|alipayfile:\/\/tmp\/)/,baidu:/^(http:\/\/tmp\/|swanfile:\/\/tmp_)/,bytedance:/^(ttfile:\/\/tmp_|\/(var|tmp)\/|tttemp:\/\/)/,qq:/^(qqfile:\/\/tmp_|http:\/\/qtemp\/)/});var I=new class{init(e){this._core=e}addAuthToUrl(e=""){return this._isMiniProgramTempFile(e)?e:(e=(e=e)?!e.startsWith("https://")&&e.startsWith("http://")?e.replace("http://","https://"):e:"",this.processResourceUrl(e))}removeAuthToUrl(r){{var[r,i]=r.split("?");if(!i)return r;let t=i.split("&").reduce((e,t)=>{var[t,r]=t.split("=");return t&&"authKey"!==t&&(e[t]=r||""),e},{}),e=Object.keys(t).map(e=>""+e+(t[e]?"="+t[e]:"")).join("&");return e?r+"?"+e:r}}_isMiniProgramTempFile(t){return!!this.getPlatformFlags().IN_MINI_APP&&Object.values(j).some(e=>e.test(t))}extractFileFromInput(e){return i(e)?e:function(t){if("object"==typeof t&&null!==t){t=Object.getPrototypeOf(t);if(null===t)return 1;let e=t;for(;null!==Object.getPrototypeOf(e);)e=Object.getPrototypeOf(e);return t===e}}(e)&&"undefined"!=typeof uni?Array.isArray(e.tempFiles)&&0<e.tempFiles.length?e.tempFiles[0]:null:e instanceof HTMLInputElement&&e.files&&0<e.files.length?e.files[0]:null}probeImageWidthHeight(r){return d(this,void 0,void 0,function*(){var{IN_MINI_APP:e,IN_BROWSER:t}=(null==(e=this._core)?void 0:e.utils)||{};return this._shouldSkipProbing()?{width:0,height:0}:t?this._probeImageDimensionsWeb(r):e?this._probeImageDimensionsMiniApp(r):void 0})}isSimpleCos(){var e=((null==(e=this._core)?void 0:e.store.get("cloudConfig"))||{})["simple_cos"];return"0"!==e}getFileDNList(){let e,t=v;var r=((null==(e=this._core)?void 0:e.store.get("cloudConfig"))||{})["file_dn_list"];if(void 0!==r)try{JSON.parse(r).forEach(e=>{t.includes(e)||t.push(e)})}catch(e){console.warn(e),t=v}return t}getPlatform(){var e;return null==(e=this._core)?void 0:e.utils.platform}generateUUID(e,t){let r,i=`${this.getSDKAppID()}-${this.getCurrentUserID()}-`+(null==(r=this._core)?void 0:r.utils.randomString());return t?i+"."+t:(e=(t=e.name||e.value||e.url||e.tempFilePath)&&t.slice(t.lastIndexOf(".")+1),i=e?i+"."+e:i)}processResourceUrl(e){if(!e)return"";let t=e;var r=this.getFileDownloadProxy(),i=this.getAuthKey(),o=this.getFileDNList(),e=(r&&(e.startsWith("http://")?t=e.replace(/^http:\/\/[^/]+/,r):e.startsWith("https://")&&(t=e.replace(/^https:\/\/[^/]+/,r))),i&&-1===t.indexOf("authKey=")&&function(e,t){let r=!1;if(e){var e=e.match(/:\/\/([0-9]?\.)?(.[^/:]+)/),i=e&&e[2]||"";if(i.includes("rich-dev"))return!0;for(let e=0;e<t.length;e++)if(i.endsWith(t[e])){r=!0;break}}return r}(t,o));return t=e?-1<t.indexOf("?")?t+"&authKey="+i:t+"?authKey="+i:t}getCurrentUserID(){var e;return null==(e=null==(e=this._core)?void 0:e.store.get("login"))?void 0:e.userId}getSDKAppID(){var e;return null==(e=null==(e=this._core)?void 0:e.store.get("instance"))?void 0:e.sdkAppId}getFileDownloadProxy(){var e;return(null==(e=null==(e=this._core)?void 0:e.store.get("instance"))?void 0:e.fileDownloadProxy)||""}getFileUploadProxy(){var e;return(null==(e=null==(e=this._core)?void 0:e.store.get("instance"))?void 0:e.fileUploadProxy)||""}getAuthKey(){var e;return(null==(e=null==(e=this._core)?void 0:e.store.get("login"))?void 0:e.authKey)||""}isPrivateNetWork(){var e;return null==(e=null==(e=this._core)?void 0:e.store.get("instance"))?void 0:e.proxyServer}getPlatformFlags(){var{IN_BROWSER:e,IN_MINI_APP:t,IN_RN_APP:r,IN_UNI_NATIVE_APP:i}=null==(e=this._core)?void 0:e.utils;return{IN_BROWSER:e,IN_MINI_APP:t,IN_RN_APP:r,IN_UNI_NATIVE_APP:i}}isEmpty(e){var t=(null==(t=this._core)?void 0:t.utils)["isEmpty"];return t(e)}_probeImageDimensionsMiniApp(e){let t,r=((null==(t=this._core)?void 0:t.utils)||{}).MINI_APP_NAMESPACE;return new Promise(t=>{r.getImageInfo({src:e,success:e=>t({width:e.width,height:e.height}),fail:()=>t({width:0,height:0})})})}_shouldSkipProbing(){var{IN_RN_APP:e,IS_IE:t,IE_VERSION:r}=(null==(e=this._core)?void 0:e.utils)||{};return e||t&&9===r}_probeImageDimensionsWeb(i){return new Promise(e=>{let t=new Image,r=()=>{t.onload=null,t.onerror=null,t.src=""};t.onload=()=>{e({width:t.width,height:t.height}),r()},t.onerror=()=>{e({width:0,height:0}),r()},t.src=i})}},y=new class{constructor(){this.uploadFileTryCount=0,this.maxRetries=1,this.systemClockOffset=0,this.httpRequest=null,this.uploadFileType="",this.duration=900,this.fetchCosTryCount=0}init(e){var t=(this._core=e).utils["IN_MINI_APP"];this.httpRequest=t?W:z,null!=(t=this.httpRequest)&&t.init(e)}uploadToCOS(l){return d(this,void 0,void 0,function*(){var t=_+" uploadToCOS",e=l["file"];this.uploadFileType=l.uploadFileType,console.log(t+" options:",l);try{var r=Date.now(),i=yield this._createCosOptions(l),o=yield this._uploadFile(i),s=(this._handleUploadError(o,l),this._createUploadResult(e,o)),a=Date.now()-r,n=`size:${u(e.size)} time:${a}ms speed:`+c(1e3*e.size/a);return console.log(t+` ok. name:${e.name} `+n),{uploadOptions:i,response:s}}catch(e){throw console.warn(t+" failed, error:",e),e}})}_handleUploadError(e,t){var r=(null==(r=this._core)?void 0:r.helper)["ChatError"];if(403===e.statusCode)throw a(Date.now(),!1),t.url,null!=(t=null==e?void 0:e.data)&&t.uploadIP&&e.data.uploadIP,new r({message:"Upload failed with status 403"})}_createUploadResult(e,t){return{fileName:e.name,fileSize:e.size,fileType:e.type.slice(e.type.indexOf("/")+1).toLowerCase(),location:t.data.location||"",uploadTime:a(Date.now(),!1),uploadSpeed:c(1e3*e.size/a(Date.now(),!1))}}_createCosOptions(c){return d(this,void 0,void 0,function*(){var{fileName:e,resources:t,uploadMethod:r}=this._prepareUploadParams(c),i=this._isC2CConversation(c.message.conversationID)?1:2;try{var o=yield this._fetchCosSignatureUrl({fileType:this.uploadFileType,fileName:e,uploadMethod:r,duration:this.duration,userID:c.message.from,conversationType:i}),{uploadUrl:s,downloadUrl:a,requestSnapshotUrl:n,thumbUrl:l,largeUrl:d,fileKey:h}=o,u=!I.isPrivateNetWork()&&o.uploadIP;return{url:this._getRawOrUploadProxyUrl(s),fileType:this.uploadFileType,fileName:e,resources:t,downloadUrl:a,requestSnapshotUrl:n,thumbUrl:l,largeUrl:d,fileKey:h,uploadIP:u||"",onProgress:e=>this._handleUploadProgress(e,c)}}catch(e){throw console.error("Failed to create COS pre-signed URL options:",e),e}})}_prepareUploadParams(e){console.log(_+" prepareUploadParams:",e);var t=e["file"],{IN_MINI_APP:r,IN_RN_APP:i}=I.getPlatformFlags(),r=r||i,i=r&&e.message.type!==g,e=t["name"],e=e.slice(e.lastIndexOf(".")),e=""+s(999999)+e;return{fileName:n(i?t.name:e),resources:r?t.url:t,uploadMethod:r?1:0}}_handleUploadProgress(e,t){if("function"==typeof t.onProgress)try{t.onProgress(e.percent)}catch(e){throw console.warn("Upload progress callback error:",e),e}}_fetchCosSignatureUrl(a){return d(this,void 0,void 0,function*(){var t=_+" fetchCosSignatureUrl",r=I.isSimpleCos(),i=this._prepareCosRequestData(a),o=r?"im_cos_msg.simple_sig":"im_cos_msg.pre_sig";try{let e=yield function(o,s,a){return d(this,void 0,void 0,function*(){try{var{helper:e,channel:t}=a,r=e.generateCosSpecifiedData({servcmd:o,data:s}),i=r.head.seq+o;return yield t.sendPacket(r,{requestId:i})}catch(e){throw console.warn("getCosSig error:",e),e}})}(o,i,this._core);this.fetchCosTryCount=0;var s=this._processResponse(e);return console.log(t+` ok. isSimpleCos:${r} data:`,s),s||{}}catch(e){if(console.error(t+" failed, error:",e),this.fetchCosTryCount<1)return this.fetchCosTryCount++,this._fetchCosSignatureUrl(a);throw this.fetchCosTryCount=0,e}})}_processResponse(e){var t;let r=I.isSimpleCos(),l=r?null==(t=null==e?void 0:e.rpt_pre_sig)?void 0:t[0]:e;if(!l)return{};if(r){let{str_final_ip:e,rpt_pre_sig:t,uint32_file_id:r,uint32_exist_flag:i,str_download_url:o,str_upload_url:s,str_snapshot_url:a,str_file_key:n}=l;return{uploadIP:e,preSig:t,fileID:r,existFlag:i,downloadUrl:o,uploadUrl:s,requestSnapshotUrl:a,fileKey:n}}let{upload_url:i,download_url:o,snapshot_url:s,thumb_url:a,large_url:n,file_key:d}=l;return{uploadUrl:i,downloadUrl:o,requestSnapshotUrl:s,thumbUrl:a,largeUrl:n,fileKey:d}}_prepareCosRequestData(e){return I.isSimpleCos()?{uint32_upload_method:e.uploadMethod,uint32_platform:I.getPlatform(),uint32_sdkappid:I.getSDKAppID(),str_user_id:e.userID,uint32_scene:e.conversationType,rpt_upload_object:[{uint32_file_id:1,uint32_file_type:e.fileType,str_file_name:e.fileName}]}:{file_type:e.fileType,file_name:e.fileName,upload_method:e.uploadMethod,Duration:e.duration}}_uploadFile(o){return d(this,void 0,void 0,function*(){return new Promise((r,i)=>{this.httpRequest.request(o,(e,t)=>{e&&this.uploadFileTryCount<this.maxRetries&&this.shouldRetry(e)?(this.uploadFileTryCount++,this._uploadFile(o).then(r).catch(i)):(this.uploadFileTryCount=0,e?i(e):r(t))})})})}shouldRetry(e){return!(!e||5!==Math.floor(e.statusCode/100)&&(!this.isTimeRelatedError(e)||!this._isClockOutOfSync(e)||(this._syncSystemClock(e),0)))}isTimeRelatedError(e){var t,r;try{var i=null==(t=e.error)?void 0:t.Code,o=null==(r=e.error)?void 0:r.Message;return"RequestTimeTooSkewed"===i||"AccessDenied"===i&&"Request has expired"===o}catch(e){return!1}}_isClockOutOfSync(e){var t,e=(null==(t=e.headers)?void 0:t.date)||(null==(t=e.headers)?void 0:t.Date)||(null==(t=e.error)?void 0:t.ServerTime);return!!e&&(t=Date.now(),e=Date.parse(e),3e4<=Math.abs(t+this.systemClockOffset-e))}_syncSystemClock(e){var t,r=(null==(t=e.headers)?void 0:t.date)||(null==(t=e.headers)?void 0:t.Date)||(null==(t=e.error)?void 0:t.ServerTime);if(r){let e=Date.now(),t=Date.parse(r);this.systemClockOffset=t-e}}_getRawOrUploadProxyUrl(e){var t=I.getFileUploadProxy();let r=e;return r=t?e.replace(/^https:\/\/[^/]+/,t):r}_isC2CConversation(e){return"C2C"===e.slice(0,3)}};let q=["jpg","jpeg","gif","png","bmp","image","webp"],U=20971520,w={JPG:1,JPEG:1,GIF:2,PNG:3,BMP:4,UNKNOWN:255};class V{constructor(e,t){this.instanceID=s(9999999),this.sizeType=e.type||0,this.type=0,this.size=e.size||0,this.width=e.width||0,this.height=e.height||0,this.imageUrl=I.addAuthToUrl(e.imageUrl||e.url||""),this.url=I.addAuthToUrl(e.url||t)}setSizeType(e){this.sizeType=e}setType(e){this.type=e}setImageUrl(e){e&&(this.imageUrl=I.addAuthToUrl(e))}getImageUrl(){return this.imageUrl}}function S(t){var{originUrl:t,originWidth:r,originHeight:i,min:o=198}=t,r=parseInt(r)||0,i=parseInt(i)||0,s={url:void 0,width:0,height:0};if((r<=i?r:i)<=o)s.url=t,s.width=r,s.height=i;else{i<=r?(s.width=Math.ceil(r*o/i),s.height=o):(s.width=o,s.height=Math.ceil(i*o/r));let e=t&&-1<t.indexOf("?")?t+"&":t+"?";s.url=198===o?e+"imageView2/3/w/198/h/198":e+"imageView2/3/w/720/h/720"}return void 0===t?m(s,["url"]):s}class F{constructor(e){this._imageMemoryURL="",this._percent=0,this.type=l;var{uuid:e,file:t,imageFormat:r,imageInfoArray:i=[]}=e;this._imageMemoryURL=this.createImageDataAsURL(t),this.content={imageFormat:r,uuid:e,imageInfoArray:[]},this.initImageInfoArray(i),this.autoFixUrl()}static parseServerPushElement(e){let t=e["MsgContent"],{ImageFormat:r,ImageInfoArray:i,UUID:o}=t,s=i.map(e=>({size:e.Size,type:e.Type,width:e.Width,height:e.Height,url:e.URL}));return new F({imageFormat:r,imageInfoArray:s,uuid:o})}createImageDataAsURL(e){let t="";var{IN_MINI_APP:r,IN_RN_APP:i,IN_BROWSER:o}=I.getPlatformFlags();return t=e&&((r||i)&&(t=e.url),o)?window.URL.createObjectURL(e):t}initImageInfoArray(t=[]){var r={type:0,size:0,width:0,height:0,url:""};for(let e=0;e<3;e++){var i=t[e]||Object.assign({},r),i=new V(i,this._imageMemoryURL);i.setSizeType(e+1),i.setType(e),this.addImageInfo(i)}this.updateAccessSideImageInfoArray()}autoFixUrl(){let i=["http","https"];this.content.imageInfoArray.forEach(e=>{var t,r;e.url&&""!==e.imageUrl&&([t,...r]=e.imageUrl.split("://"),r=r.join("://"),i.includes(t)||e.setImageUrl("https://"+r))})}updatePercent(e){this._percent=Math.min(e,1)}updateImageFormat(e){this.content.imageFormat=w[e.toUpperCase()]||w.UNKNOWN}addImageInfo(e){3<=this.content.imageInfoArray.length||this.content.imageInfoArray.push(e)}updateImageInfoArray(t){var r,i=this.content.imageInfoArray.length;for(let e=0;e<i;e++)r=this.content.imageInfoArray[e],t[e].size&&(r.size=t[e].size),t[e].url&&r.setImageUrl(t[e].url),t[e].width&&(r.width=t[e].width),t[e].height&&(r.height=t[e].height)}updateAccessSideImageInfoArray(){var[e]=this.content.imageInfoArray;if(e&&0!==e.width&&0!==e.height){var t=this.content.imageInfoArray,r=t[2];t[2]=t[1],t[1]=r;for(let e=0;e<t.length;e++)t[e].setType(e);Object.assign(this.content.imageInfoArray[2],S({originWidth:e.width,originHeight:e.height,min:720}))}}validateBeforeSend(){var[e]=this.content.imageInfoArray,e=!!e&&""!==e.imageUrl&&0!==e.size;return{isValid:e,error:e?null:{message:"content can not be empty"}}}transformToServerFormat(e){var{isMergerMessage:e=!1}=e||{},{uuid:e,imageFormat:t,imageInfoArray:r}=e?this.payload:this.content;return{MsgType:this.type,MsgContent:{ImageFormat:t,ImageInfoArray:this.parseImageInfoArray(r),UUID:e}}}parseImageInfoArray(e){return e.map(e=>({InstanceId:e.instanceID,Type:e.sizeType,MsgType:e.type,Size:e.size,Width:e.width,Height:e.height,URL:I.removeAuthToUrl(e.imageUrl)}))}}var P=new class{constructor(){this._messageOptionsMap=new Map}init(e){var{notificationCenter:e,helper:t,InnerEvent:r,message:i}=this._core=e;t.registerApi({apiName:"createImageMessage",context:this}),null!=(t=null==i?void 0:i.messageFactory)&&t.registerElementClass(l,F),e.subscribeInnerEvent(r.DESTROY,this._dispose,this)}createImageMessage(o){var s,a,n,e,t;try{let e=this._core.ssoLog.createSSOLogData({method:"createImageMessage"}),t=(console.log(_+" createImageMessage options:",o),null==(s=this._core.store.get("login"))?void 0:s.userId),r=null==(n=null==(a=this._core)?void 0:a.message.messageFactory)?void 0:n.createMessage(Object.assign(Object.assign({},o),{from:t})),i=this._processImage(o);o.payload.file=i;var l={imageFormat:w.UNKNOWN,uuid:I.generateUUID(i),file:i,imageInfoArray:[]},d=new F(l);return r.setElement(d),this._messageOptionsMap.set(r.clientSequence,o),console.log(_+" createImageMessage OK imageMessage:",r),e.end(),r}catch(o){throw null!=(t=(e=this._core.ssoLog.getSSOLogData("createImageMessage")).setError)&&t.call(e,o).end(),console.error(_+" createImageMessage error:",o),o}}upload(i){return d(this,void 0,void 0,function*(){console.log(_+" uploadImage message:",i);var e=i.getElements()[0],t=this._messageOptionsMap.get(i.clientSequence).payload["file"],t=(this._validateBeforeUploadImage(t),yield this._performImageUpload(e,i,t)),r=this._generateImageInfo(t);return e.updateImageFormat(null==t?void 0:t.fileType),e.updateImageInfoArray(r),i})}_performImageUpload(i,o,r){return d(this,void 0,void 0,function*(){var e=o["to"],{uploadOptions:e,response:t}=yield y.uploadToCOS({uploadFileType:1,file:r,to:e,message:o,onProgress:e=>{var t,r;i.updatePercent(e),null!=(r=null==(t=this._messageOptionsMap.get(o.clientSequence))?void 0:t.onProgress)&&r.call(t,e)}});return this._parseResponse(e,t)})}_generateImageInfo(e){console.log(_+" generateImageInfo");var{location:e,fileSize:t,width:r,height:i,smallImageUrl:o,smallImageWidth:s,smallImageHeight:a,largeImageUrl:n,largeImageWidth:l,largeImageHeight:d,imageInfoArray:h}=e,e=I.addAuthToUrl(e),u={size:t,url:e,width:r,height:i};return 0<(null==h?void 0:h.length)?this._processImageInfoArray(h,t):o&&n?[Object.assign({},u),{largeImageUrl:n,largeImageWidth:l,largeImageHeight:d},{smallImageUrl:o,smallImageWidth:s,smallImageHeight:a}]:[Object.assign({},u),this._generateThumbInfo(e,r,i,720),this._generateThumbInfo(e,r,i,198)]}_generateThumbInfo(e,t,r,i){return S({originUrl:e,originWidth:t,originHeight:r,min:i})}_processImageInfoArray(e,t){let r,i,o;for(var s of e)1===s.type?(i=s,i.size=t):2===s.type?(o=s,o.size=t):(r=s,r.size=t);return[Object.assign({},r),Object.assign({},o),Object.assign({},i)]}_parseResponse(i,o){return d(this,void 0,void 0,function*(){console.log(_+" parseResponse");try{var{thumbUrl:e,largeUrl:t,downloadUrl:r}=i;if(e&&t&&(yield this._getImageInfoByUrl(e,o,"thumb"),yield this._getImageInfoByUrl(t,o,"large")),I.isSimpleCos()&&!I.isPrivateNetWork()&&(yield this._getImageInfoArray(r,o),null!=o)&&o.uploadIP){let e=this._extractDomainFromUrl(r);e&&(yield this._getDownloadIP(e,o))}return o}catch(e){throw console.error("Failed to parse response:",e),e}})}_extractDomainFromUrl(e){try{var t=e.match(/:\/\/([^\/]+)/);return t?t[1]:null}catch(e){return console.warn("Failed to extract domain from URL:",e),null}}_getImageInfoByUrl(i,o,s){return d(this,void 0,void 0,function*(){try{var e=I.addAuthToUrl(i),{width:t=0,height:r=0}=yield I.probeImageWidthHeight(e);o.width=t,o.height=r,"thumb"===s?(o.smallImageUrl=i,o.smallImageWidth=t,o.smallImageHeight=r):(o.largeImageUrl=i,o.largeImageWidth=t,o.largeImageHeight=r)}catch(e){console.warn(`Failed to get ${s} image info:`,e)}})}_validateBeforeUploadImage(e){var t=(null==(t=this._core)?void 0:t.helper)["ChatError"];if(!e)throw new t({code:2251});this._checkImageType(e),this._checkImageSize(e)}_processImage(e){var t;try{var r=(null==(t=this._core)?void 0:t.utils)["IN_MINI_APP"],i=e.payload["file"];return r?this._processMiniAppImageFile(i):this._processWebImageFile(i)}catch(e){throw console.warn(_+" _processImage error:",e),e}}_processMiniAppImageFile(e){i(e)&&console.warn("FileUnsupportedInMiniApp","createImageMessage");var t=e.tempFiles[0].path||e.tempFiles[0].tempFilePath;return{url:t,name:t.slice(t.lastIndexOf("/")+1),size:e.tempFiles&&e.tempFiles[0].size||1,type:t.slice(t.lastIndexOf(".")+1).toLowerCase()}}_processWebImageFile(e){var t=(null==(t=this._core)?void 0:t.helper)["ChatError"],e=I.extractFileFromInput(e);if(e)return e;throw new t({message:"Invalid file. Pass either `e.target` (from file input) or a File object"})}_getDownloadIP(i,o){return d(this,void 0,void 0,function*(){var e=_+" getDownloadIP domainName: "+i;try{var t,r=yield function(a,n){return d(this,void 0,void 0,function*(){try{var{helper:e,channel:t}=n,r="im_cos_msg.get_final_ip",i={str_domain:a},o=e.generateProtocolData({servcmd:r,data:i}),s=o.head.seq+r;return yield t.sendPacket(o,{requestId:s})}catch(e){throw console.warn("getFinalIP error:",e),e}})}(i,this._core);r&&r.str_final_ip&&(console.log(e+" ok. downloadIP:"+r),(t=o.location.split("/"))[0]=r.str_final_ip,o.location=t.join("/"))}catch(e){console.warn(e)}})}_getImageInfoArray(r,i){return d(this,void 0,void 0,function*(){var t=_+"._getImageInfoArray";try{var e=yield function(a,n){return d(this,void 0,void 0,function*(){try{var{helper:e,channel:t}=n,r="im_cos_msg.get_imageinfo",i={str_image_url:a},o=e.generateProtocolData({servcmd:r,data:i}),s=o.head.seq+r;return yield t.sendPacket(o,{requestId:s})}catch(e){throw console.warn("getImageInfo error:",e),e}})}(r,this._core);return i.imageInfoArray=this._processImageInfoResponse(e),console.log(t+" ok"),i}catch(e){throw i.imageInfoArray=void 0,console.warn(t+" failed, error:",e),e}})}_processImageInfoResponse(e){return e?(e=e["rpt_msg_image_info"],e.map(e=>({type:e.uint32_image_type,url:e.str_url,width:e.uint32_width,height:e.uint32_height,imageFormat:e.str_image_format}))):[]}_checkImageType(e){var{utils:t,helper:r}=this._core;let i="";if(t.IN_MINI_APP&&(i=e.url.slice(e.url.lastIndexOf(".")+1)),t.IN_BROWSER&&(i=e.name.slice(e.name.lastIndexOf(".")+1)),q.indexOf(i.toLowerCase())<0)throw new r.ChatError({code:2252})}_checkImageSize(e){var{utils:t,helper:r}=this._core,i=0;if(t.IN_MINI_APP,0===(i=e.size))throw new r.ChatError({code:2108});if(i>=U)throw new r.ChatError({message:"File size exceeds limit: "+u(U)})}_reset(){this._messageOptionsMap.clear()}_dispose(){this._reset();var{notificationCenter:e,InnerEvent:t}=this._core;e.unSubscribeInnerEvent(t.DESTROY,this._dispose,this)}};let M="2.5.0",b="1.18.0",r=104857600;function A(e,t){let i=e.split("."),o=t.split("."),s=Math.max(i.length,o.length);for(;i.length<s;)i.push("0");for(;o.length<s;)o.push("0");for(let r=0;r<s;r++){let e=parseInt(i[r]),t=parseInt(o[r]);if(e>t)return 1;if(e<t)return-1}return 0}class O{constructor(e){this.type=g,this.uploadProgress=0;var t=this._getFileInfo(e);this.content={downloadFlag:2,fileUrl:I.addAuthToUrl(e.url||e.fileUrl)||"",uuid:e.uuid,fileName:t.name||"",fileSize:t.size||0}}static parseServerPushElement(e){var e=e["MsgContent"],{Download_Flag:e,Url:t,FileName:r,FileSize:i,UUID:o}=e;return new O({downloadFlag:e,url:t,fileName:r,fileSize:i,uuid:o})}updatePercent(e){this.uploadProgress=Math.min(e,1)}updateFileUrl(e){this.content.fileUrl=e}validateBeforeSend(){var e=""!==this.content.fileUrl&&""!==this.content.fileName&&0<this.content.fileSize;return{isValid:e,error:e?null:{message:"content can not be empty"}}}transformToServerFormat(e){var{isMergerMessage:e=!1}=e||{},{uuid:e,downloadFlag:t,fileUrl:r,fileName:i,fileSize:o}=e?this.payload:this.content;return{MsgType:this.type,MsgContent:{Download_Flag:t,Url:I.removeAuthToUrl(r),FileName:i,FileSize:o,UUID:e}}}_getFileInfo(e){return e.fileName&&e.fileSize?{size:e.fileSize,name:e.fileName}:(e=e["file"],e?(I.getPlatform().IN_UNI_NATIVE_APP&&this._processNativeAppFile(e),{size:e.size,name:e.name}):{size:0,name:""})}_processNativeAppFile(e){var t;e.path&&e.path.includes(".")&&(t=e.path.slice(e.path.lastIndexOf(".")+1).toLowerCase(),e.type=t,e.name||(e.name=s(999999)+"."+t)),e.name||(e.type="",e.name=e.path.slice(e.path.lastIndexOf("/")+1).toLowerCase()),e.suffix&&(e.type=e.suffix),e.url||(e.url=e.path)}}var T=new class{constructor(){this._messageOptionsMap=new Map}init(e){var{notificationCenter:e,helper:t,InnerEvent:r,message:i}=this._core=e;t.registerApi({apiName:"createFileMessage",context:this}),null!=(t=null==i?void 0:i.messageFactory)&&t.registerElementClass(g,O),e.subscribeInnerEvent(r.DESTROY,this._dispose,this)}createFileMessage(r){var i,o,s,e,t;try{let e=this._core.ssoLog.createSSOLogData({method:"createFileMessage"}),t=(console.log(_+" createFileMessage options:",r),this._checkVersion(),this._processFile(r.payload.file));r.payload.file=t;var a=null==(i=this._core.store.get("login"))?void 0:i.userId,n=null==(s=null==(o=this._core)?void 0:o.message.messageFactory)?void 0:s.createMessage(Object.assign(Object.assign({},r),{from:a})),l={uuid:I.generateUUID(t),file:t},d=new O(l);return n.setElement(d),this._messageOptionsMap.set(n.clientSequence,r),console.log(_+" createFileMessage success fileMessage:",n),e.end(),n}catch(r){throw null!=(t=(e=this._core.ssoLog.getSSOLogData("createFileMessage")).setError)&&t.call(e,r).end(),console.error(_+" createFileMessage error:",r),r}}upload(r){return d(this,void 0,void 0,function*(){console.log(_+" uploadFile message:",r);var e=this._messageOptionsMap.get(r.clientSequence).payload["file"],t=(this._validateBeforeUploadFile(e),r.getElements()[0]),e=yield this._performFileUpload(t,r,e),e=I.addAuthToUrl(null==e?void 0:e.location);return t.updateFileUrl(e),r})}_validateBeforeUploadFile(e){var t=(null==(t=this._core)?void 0:t.helper)["ChatError"];if(!e)throw new t({code:2401});if(e.size>r)throw new t({message:"File size exceeds limit: "+u(r)});if(0===e.size)throw new t({code:2108})}_performFileUpload(i,o,t){return d(this,void 0,void 0,function*(){var e=o["to"],e=(yield y.uploadToCOS({uploadFileType:1,file:t,to:e,message:o,onProgress:e=>{var t,r;i.updatePercent(e),null!=(r=null==(t=this._messageOptionsMap.get(o.clientSequence))?void 0:t.onProgress)&&r.call(t,e)}}))["response"];return e})}_processFile(t){var{IN_BROWSER:e,IN_RN_APP:r,IN_WX_MINI_APP:i,IN_QQ_MINI_APP:o,IN_UNI_NATIVE_APP:s}=null==(e=this._core)?void 0:e.utils,a=(null==(a=this._core)?void 0:a.helper)["ChatError"];if(e||s){let e=I.extractFileFromInput(t);if(e)return e;throw new a({message:"Invalid file. Pass either `e.target` (from file input) or a File object"})}if(i||o){let e=t["tempFiles"];return Object.assign(Object.assign({},e[0]),{url:e[0].path})}return r?Object.assign(Object.assign({},t),{url:t.uri}):t}_checkVersion(){var{MINI_APP_NAMESPACE:t,IN_MINI_APP:e,IN_WX_MINI_APP:r,IN_QQ_MINI_APP:i,IN_UNI_NATIVE_APP:o}=null==(e=this._core)?void 0:e.utils,s=(null==(s=this._core)?void 0:s.helper)["ChatError"];if(e){if(!(r||i||o))throw new s({message:"Unsupported mini app environment"});let e=t.getSystemInfoSync().SDKVersion;if(r&&A(e,M)<0)throw new s({message:`WXChooseMessageFile requires SDK version ${M} or higher`});if(i&&A(e,b)<0)throw new s({message:`QQChooseMessageFile requires SDK version ${b} or higher`})}}_reset(){this._messageOptionsMap.clear()}_dispose(){this._reset();var{notificationCenter:e,InnerEvent:t}=this._core;e.unSubscribeInnerEvent(t.DESTROY,this._dispose,this)}};let L=["mp4","quicktime","mov"],C=104857600;class N{constructor(e){this.type=f,this.uploadProgress=0;var t="number"==typeof(null==e?void 0:e.videoSecond)?null==e?void 0:e.videoSecond:0;this.content={remoteVideoUrl:I.addAuthToUrl(e.remoteVideoUrl||e.videoUrl||""),videoFormat:e.videoFormat,videoSecond:parseInt(null==t?void 0:t.toString(),10),videoSize:e.videoSize,videoUrl:I.addAuthToUrl(e.videoUrl),videoDownloadFlag:2,videoUUID:e.videoUUID,thumbUUID:e.thumbUUID,thumbFormat:e.thumbFormat,thumbWidth:e.thumbWidth,snapshotWidth:e.thumbWidth,thumbHeight:e.thumbHeight,snapshotHeight:e.thumbHeight,thumbSize:e.thumbSize,snapshotSize:e.thumbSize,thumbDownloadFlag:2,thumbUrl:I.addAuthToUrl(e.thumbUrl),snapshotUrl:I.addAuthToUrl(e.thumbUrl)}}static parseServerPushElement(e){var e=e["MsgContent"],{VideoUrl:e,VideoFormat:t,VideoSecond:r,VideoSize:i,VideoDownloadFlag:o,VideoUUID:s,ThumbUUID:a,ThumbFormat:n,ThumbWidth:l,SnapshotWidth:d,ThumbHeight:h,SnapshotHeight:u,ThumbSize:c,SnapshotSize:p,ThumbDownloadFlag:g,ThumbUrl:m,SnapshotUrl:f}=e;return new N({videoUrl:e,videoFormat:t,videoSecond:r,videoSize:i,videoDownloadFlag:o,videoUUID:s,thumbUUID:a,thumbFormat:n,thumbWidth:l,snapshotWidth:d,thumbHeight:h,snapshotHeight:u,thumbSize:c,snapshotSize:p,thumbDownloadFlag:g,thumbUrl:m,snapshotUrl:f})}updatePercent(e){this.uploadProgress=Math.min(e,1)}updateVideoUrl(e){e&&(this.content.remoteVideoUrl=e)}updateSnapshotInfo(e){var{snapshotUrl:e,snapshotWidth:t,snapshotHeight:r}=e;I.isEmpty(e)||(this.content.thumbUrl=this.content.snapshotUrl=e),I.isEmpty(t)||(this.content.thumbWidth=this.content.snapshotWidth=Number(t)),I.isEmpty(r)||(this.content.thumbHeight=this.content.snapshotHeight=Number(r))}validateBeforeSend(){var e=""!==this.content.remoteVideoUrl;return{isValid:e,error:e?null:{message:"content can not be empty"}}}transformToServerFormat(e){var{isMergerMessage:e=!1}=e||{},{remoteVideoUrl:e,videoFormat:t,videoSecond:r,videoSize:i,videoDownloadFlag:o,videoUUID:s,thumbUUID:a,thumbFormat:n,thumbWidth:l,snapshotWidth:d,thumbHeight:h,snapshotHeight:u,thumbSize:c,snapshotSize:p,thumbDownloadFlag:g,thumbUrl:m,snapshotUrl:f}=e?this.payload:this.content;return{MsgType:this.type,MsgContent:{VideoUrl:I.removeAuthToUrl(e),VideoFormat:t,VideoSecond:r,VideoSize:i,VideoDownloadFlag:o,VideoUUID:s,ThumbUUID:a,ThumbFormat:n,ThumbWidth:l,SnapshotWidth:d,ThumbHeight:h,SnapshotHeight:u,ThumbSize:c,SnapshotSize:p,ThumbDownloadFlag:g,ThumbUrl:I.removeAuthToUrl(m),SnapshotUrl:I.removeAuthToUrl(f)}}}}var E=new class{constructor(){this._messageOptionsMap=new Map}init(e){var{notificationCenter:e,helper:t,InnerEvent:r,message:i}=this._core=e;t.registerApi({apiName:"createVideoMessage",context:this}),null!=(t=null==i?void 0:i.messageFactory)&&t.registerElementClass(f,N),e.subscribeInnerEvent(r.DESTROY,this._dispose,this)}createVideoMessage(r){var i,o,s,e,t;try{let e=this._core.ssoLog.createSSOLogData({method:"createVideoMessage"}),t=(console.log(_+" createVideoMessage options:",r),this._processVideo(r));r.payload.file=t;var a=null==(i=this._core.store.get("login"))?void 0:i.userId,n=null==(s=null==(o=this._core)?void 0:o.message.messageFactory)?void 0:s.createMessage(Object.assign(Object.assign({},r),{from:a})),l={videoFormat:t.videoFile.type,videoSecond:h(t.videoFile.second,0),videoSize:t.videoFile.size,remoteVideoUrl:"",videoUrl:t.videoFile.url,videoUUID:I.generateUUID(t.videoFile),thumbUUID:I.generateUUID(t.videoFile,"jpg"),thumbWidth:t.width||200,thumbHeight:t.height||200,thumbUrl:t.thumbUrl,thumbSize:t.thumbSize,thumbFormat:"jpg"},d=new N(l);return n.setElement(d),this._messageOptionsMap.set(n.clientSequence,r),e.end(),n}catch(r){throw null!=(t=(e=this._core.ssoLog.getSSOLogData("createVideoMessage")).setError)&&t.call(e,r).end(),console.error(_+" createVideoMessage error:",r),r}}upload(i){return d(this,void 0,void 0,function*(){console.log(_+" uploadVideo message:",i);var e=i.getElements()[0],t=this._messageOptionsMap.get(i.clientSequence).payload["file"],t=(this._validateBeforeUploadVideo(t),yield this._performVideoUpload(e,i,t)),{location:t,snapshotInfo:r}=t,t=I.addAuthToUrl(t);return e.updateVideoUrl(t),I.isEmpty(r)||e.updateSnapshotInfo(r),i})}_validateBeforeUploadVideo(e){var t=(null==(t=this._core)?void 0:t.helper)["ChatError"];if(e.videoFile.size>C)throw new t({message:"File size exceeds limit: "+u(C)});if(0===e.videoFile.size)throw new t({code:2108});if(-1===L.indexOf(e.videoFile.type))throw new t({code:2352})}_performVideoUpload(i,o,r){return d(this,void 0,void 0,function*(){var e=o["to"],{response:e,uploadOptions:t}=yield y.uploadToCOS({uploadFileType:2,file:r,to:e,message:o,onProgress:e=>{var t,r;i.updatePercent(e),null!=(r=null==(t=this._messageOptionsMap.get(o.clientSequence))?void 0:t.onProgress)&&r.call(t,e)}});return{snapshotInfo:yield this._getSnapshotInfoByUrl(t.requestSnapshotUrl),location:e.location}})}_processVideo(e){var i,o;try{var s=(null==(i=this._core)?void 0:i.helper)["ChatError"],{IN_MINI_APP:a,IN_BROWSER:n}=null==(o=this._core)?void 0:o.utils;let t=e.payload["file"],r={};if(a&&(r=this._processMiniVideoFile(t),t.name=r.name,t.url=r.url),n){let e=I.extractFileFromInput(t);if(!e)throw new s({message:"Invalid file. Pass either `e.target` (from file input) or a File object"});t=e,r=this._processWebVideoFile(t)}return t.videoFile=r,t.thumbUrl="",t.thumbSize=0,t}catch(e){throw console.warn(_+" _processFile error:",e),e}}_processMiniVideoFile(e){var t=(null==(t=this._core)?void 0:t.utils)["IN_ALIPAY_MINI_APP"],r=(null==(r=this._core)?void 0:r.helper)["ChatError"];if(t)throw new r({message:"VideoUnsupportedInAlipay"});if(i(e))throw new r({message:"FileUnsupportedInMiniApp"});return{url:(e=Array.isArray(e.tempFiles)?e.tempFiles[0]:e).tempFilePath,name:e.tempFilePath.slice(e.tempFilePath.lastIndexOf("/")+1),size:e.size||1,second:e.duration||0,type:e.tempFilePath.slice(e.tempFilePath.lastIndexOf(".")+1).toLowerCase()}}_processWebVideoFile(e){var{name:t,size:r=1,duration:i=0,type:o}=e,o=o.split("/")[1];return{url:window.URL.createObjectURL(e),name:t,size:r,second:i,type:o}}_getSnapshotInfoByUrl(o){return d(this,void 0,void 0,function*(){try{console.log(_+" _getSnapshotInfoByUrl url:",o);var e,t,r,i=((yield function(s,a){return d(this,void 0,void 0,function*(){try{var e="im_cos_msg.video_cover",{helper:t,channel:r}=a,i=t.generateCosSpecifiedData({servcmd:e,data:s}),o=i.head.seq+e;return yield r.sendPacket(i,{requestId:o})}catch(e){throw console.warn("getSnapshotInfo error:",e),e}})}({version:1,platform:I.getPlatform(),cover_name:n(s(99999)),snapshot_url:o},this._core))||{})["download_url"];return(console.log(_+" _getSnapshotInfoByUrl OK snapshotUrl:",i),I.isEmpty(i))?{}:(e=I.addAuthToUrl(i),{width:t=0,height:r=0}=yield I.probeImageWidthHeight(e),{snapshotUrl:e,snapshotWidth:t,snapshotHeight:r})}catch(e){throw console.error(_+" _getSnapshotInfoByUrl error:",e),e}})}_reset(){this._messageOptionsMap.clear()}_dispose(){this._reset();var{notificationCenter:e,InnerEvent:t}=this._core;e.unSubscribeInnerEvent(t.DESTROY,this._dispose,this)}};class D{constructor(e){this.uploadProgress=0,this.type=p,this.content={downloadFlag:2,second:e.second,size:e.size,url:I.addAuthToUrl(e.url),remoteAudioUrl:I.addAuthToUrl(e.url||""),uuid:e.uuid}}static parseServerPushElement(e){var e=e["MsgContent"],{Url:e,Download_Flag:t,Second:r,Size:i,UUID:o}=e;return new D({url:e,downloadFlag:t,second:r,size:i,uuid:o})}updatePercent(e){this.uploadProgress=Math.min(e,1)}updateAudioUrl(e){this.content.remoteAudioUrl=e}validateBeforeSend(){var e=""!==this.content.remoteAudioUrl;return{isValid:e,error:e?null:{message:"content can not be empty"}}}transformToServerFormat(e){var{isMergerMessage:e=!1}=e||{},{uuid:e,downloadFlag:t,remoteAudioUrl:r,size:i,second:o}=e?this.payload:this.content;return{MsgType:this.type,MsgContent:{Url:I.removeAuthToUrl(r),Download_Flag:t,Second:o,Size:i,UUID:e}}}}var R=new class{constructor(){this._messageOptionsMap=new Map}init(e){var{notificationCenter:e,helper:t,InnerEvent:r,message:i}=this._core=e;t.registerApi({apiName:"createAudioMessage",context:this}),null!=(t=null==i?void 0:i.messageFactory)&&t.registerElementClass(p,D),e.subscribeInnerEvent(r.DESTROY,this._dispose,this)}createAudioMessage(t){var r,i,e,o;try{let e=this._core.ssoLog.createSSOLogData({method:"createAudioMessage"});console.log(_+" createAudioMessage options:",t);t.payload["file"];var s=this._processAudioFile(t.payload.file),a=(t.payload.file=s,null==(o=this._core.store.get("login"))?void 0:o.userId),n=null==(i=null==(r=this._core)?void 0:r.message.messageFactory)?void 0:i.createMessage(Object.assign(Object.assign({},t),{from:a})),l={second:Math.floor((s.duration||s.second)/1e3),size:s.fileSize||s.size||1,url:s.tempFilePath||s.uri||s.url,uuid:I.generateUUID(s)},d=new D(l);return n.setElement(d),this._messageOptionsMap.set(n.clientSequence,t),e.end(),n}catch(t){throw null!=(o=(e=this._core.ssoLog.getSSOLogData("createAudioMessage")).setError)&&o.call(e,t).end(),console.error(_+" createAudioMessage error:",t),t}}upload(r){return d(this,void 0,void 0,function*(){console.log(_+" uploadAudio message:",r);var e=this._messageOptionsMap.get(r.clientSequence).payload["file"],t=(this._validateBeforeUploadAudio(e),r.getElements()[0]),e=yield this._performAudioUpload(t,r,e),e=I.addAuthToUrl(null==e?void 0:e.location);return t.updateAudioUrl(e),r})}_validateBeforeUploadAudio(e){var t=(null==(t=this._core)?void 0:t.helper)["ChatError"];if(!e)throw new t({code:2300});if(20971520<e.size)throw new t({message:"File size exceeds limit: "+u(20971520)});if(0===e.size)throw new t({code:2108})}_performAudioUpload(i,o,t){return d(this,void 0,void 0,function*(){var e=o["to"],e=(yield y.uploadToCOS({uploadFileType:3,file:t,to:e,message:o,onProgress:e=>{var t,r;i.updatePercent(e),null!=(r=null==(t=this._messageOptionsMap.get(o.clientSequence))?void 0:t.onProgress)&&r.call(t,e)}}))["response"];return e})}_processAudioFile(e){var{IN_MINI_APP:t,IN_BROWSER:r}=null==(t=this._core)?void 0:t.utils;return t?this._processMiniFile(e):r?this._processWebFile(e):void 0}_processMiniFile(e){return{url:e.tempFilePath,name:e.tempFilePath.slice(e.tempFilePath.lastIndexOf("/")+1),size:e.fileSize,second:e.duration,type:e.tempFilePath.slice(e.tempFilePath.lastIndexOf(".")+1).toLowerCase()}}_processWebFile(e){var t;return e.tempFilePath||e.uri||(t=URL.createObjectURL(e),e.tempFilePath=t),e}_reset(){this._messageOptionsMap.clear()}_dispose(){this._reset();var{notificationCenter:e,InnerEvent:t}=this._core;e.unSubscribeInnerEvent(t.DESTROY,this._dispose,this)}};let t={to:{required:!0,rules:["string"],allowEmpty:!1},conversationType:{required:!0,rules:["string"],allowEmpty:!1},payload:{required:!0,rules:["object"],allowEmpty:!1},cloudCustomData:{required:!1,rules:["string"],allowEmpty:!1},priority:{required:!1,rules:["string"],allowEmpty:!1},customModerationConfigurationID:{required:!1,rules:["string"],allowEmpty:!1},onProgress:{required:!1,rules:["function"],allowEmpty:!1}},k={createImageMessage:t,createAudioMessage:t,createVideoMessage:t,createFileMessage:t},B={createImageMessage:!0,createAudioMessage:!0,createVideoMessage:!0,createFileMessage:!0},H={TIMImageElem:P,TIMFileElem:T,TIMVideoFileElem:E,TIMSoundElem:R};return new class{constructor(){this.name="RichMediaMessage"}install(e){let{OuterConstant:{MSG_AUDIO:t,MSG_FILE:r,MSG_IMAGE:i,MSG_VIDEO:o}}=(this._core=e)["constants"];P.init(e),T.init(e),E.init(e),R.init(e),y.init(e),I.init(e),e.helper.registerApi({apiName:"sendMessage",context:this,matcher:e=>[t,r,i,o].includes(e[0].type)}),e.helper.registerValidateConfig({auth:B,params:k})}sendMessage(i,o){return d(this,void 0,void 0,function*(){var e,t,r;try{return console.log("sendMessage message:",i),yield this._upload(i),yield null==(r=null==(t=null==(e=this._core)?void 0:e.message)?void 0:t.messageSender)?void 0:r.sendMessage(i,o)}catch(e){throw console.error("sendMessage error:",e),e}})}_upload(i){return d(this,void 0,void 0,function*(){var t,r;if(!0!==i._relayFlag)try{let t=H[i.type];if(t){let e=this._core.ssoLog.createSSOLogData({method:"upload"});e.setLogInfo({message:"type:"+i.type}),yield t.upload(i),e.end()}}catch(e){throw i.status=o.FAIL,e instanceof Error&&(e.data={message:i}),this._core.message.messageDataHandler.storeConversationMessage(i),null!=(r=(t=this._core.ssoLog.getSSOLogData("upload")).setError)&&r.call(t,e).end(),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)["TencentCloudChatRich-media-message"]=t()}(this,function(){function m(e,t){var r={};for(o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var i=0,o=Object.getOwnPropertySymbols(e);i<o.length;i++)t.indexOf(o[i])<0&&Object.prototype.propertyIsEnumerable.call(e,o[i])&&(r[o[i]]=e[o[i]]);return r}function d(e,a,n,l){return new(n=n||Promise)(function(r,t){function i(e){try{s(l.next(e))}catch(e){t(e)}}function o(e){try{s(l.throw(e))}catch(e){t(e)}}function s(e){var t;e.done?r(e.value):((t=e.value)instanceof n?t:new n(function(e){e(t)})).then(i,o)}s((l=l.apply(e,a||[])).next())})}var z=new class{constructor(){this._name="WebRequest"}init(e){this._core=e}request(g,m){return d(this,void 0,void 0,function*(){let e,t=(null==(e=this._core)?void 0:e.utils).isEmpty,{downloadUrl:r="",method:i="PUT",url:o,qs:s,headers:a={},resources:n,dataType:l="text",uploadByIP:d,uploadIP:h}=g,u=o;if(s){let e=this._queryString(s);e&&(u+=(u.includes("?")?"&":"?")+e)}let c=new XMLHttpRequest;c.open(i.toUpperCase(),u,!0),c.responseType=l;var p=Object.assign({},a);if(d&&h&&(p.host=h),!t(p))for(let e in p)p.hasOwnProperty(e)&&!["content-length","user-agent","origin","host"].includes(e.toLowerCase())&&c.setRequestHeader(e,p[e]);return c.onload=()=>{var e=this._getResponseBody(c,r,d&&h),e=this._buildResponse(c,e);if(200===c.status)m(null,e);else{if(h&&!u.includes(h))return g.url=this._domainName2IP(u,h),g.uploadByIP=!0,this.request(g,m);m({code:c.status,message:JSON.stringify(c.responseText)},e)}},c.onerror=()=>{var e=this._getResponseBody(c,r,d&&h),e=this._buildResponse(c,e),t={code:c.status,message:0===c.status?"CORS blocked or network error":JSON.stringify(c.responseText)};m(t,e)},g.onProgress&&c.upload&&(c.upload.onprogress=e=>{var{total:e,loaded:t}=e,r=Math.min(Math.floor(100*t/e),100);g.onProgress({total:e,loaded:t,percent:r/100})}),c.send(n),c})}_buildResponse(e,t){let r={};return e.getAllResponseHeaders().trim().split("\n").forEach(e=>{var t;e&&([e,t]=e.split(":").map(e=>e.trim()),r[e.toLowerCase()]=t)}),{statusCode:e.status,statusMessage:e.statusText,headers:r,data:t}}_getResponseBody(e,t,r){return 200===e.status&&t?{location:t,uploadIP:r}:{response:e.responseText,uploadIP:r}}_queryString(r,i="&",o="="){var{isEmpty:e,isPlainObject:t}=null==(e=this._core)?void 0:e.utils;return e(r)?"":t(r)?Object.keys(r).map(e=>{let t=encodeURIComponent(e)+o;return Array.isArray(r[e])?r[e].map(e=>t+encodeURIComponent(e)).join(i):t+encodeURIComponent(r[e])}).filter(Boolean).join(i):void 0}_domainName2IP(e,t){return e.replace(/^http(s)?:\/\/(.*?)\//,`https://${t}/`)}};let x=["unknown","image","video","audio","log"];var o,e,W=new class{init(e){this._core=e}request(r,i){let e,{MINI_APP_NAMESPACE:o,IN_ALIPAY_MINI_APP:s,IN_UNI_IOS_APP:a}=null==(e=this._core)?void 0:e.utils,{resources:n="",headers:l={},url:d,downloadUrl:h=""}=r,u=d,c=null;var p=h?h.match(/^(https?:\/\/[^/]+\/)([^/]*\/?)(.*)$/):null;if(p){var p=decodeURIComponent(p[3]),p=p.includes("?")?p.split("?")[0]:p||"",p={key:r.fileKey||p,success_action_status:200,"Content-Type":""},g={};if(a){let[e,t]=d.split("?sign=");t&&(u=e+"?sign="+encodeURIComponent(t),g.sign=decodeURIComponent(t),g.signature=decodeURIComponent(t))}let t={url:u,header:l,name:"file",filePath:n,formData:Object.assign(Object.assign({},p),g),timeout:r.timeout||3e5};if(s){let e=m(t,["name"]);t=Object.assign(Object.assign({},e),{fileName:"file",fileType:r.fileType?x[r.fileType]:"image"})}return(c=o.uploadFile(Object.assign(Object.assign({},t),{success:e=>{this._handleResponse({response:e,downloadUrl:h,callback:i})},fail:e=>{this._handleResponse({response:e,downloadUrl:h,callback:i})}}))).onProgressUpdate&&c.onProgressUpdate(e=>{r.onProgress&&r.onProgress({total:e.totalBytesExpectedToSend||0,loaded:e.totalBytesSent||0,percent:e.progress?Math.floor(e.progress)/100:0})}),c}console.warn("message Invalid download URL format")}_handleResponse(e){var{downloadUrl:e,response:t,callback:r}=e,i={};if(t.header)for(let e in t.header)t.header.hasOwnProperty(e)&&(i[e.toLowerCase()]=t.header[e]);var o=+t.statusCode;200==o?r(null,{statusCode:o,headers:i,data:Object.assign(Object.assign({},t.data),{location:e})}):r({code:o,message:JSON.stringify(t.data)},{statusCode:o,headers:i,data:void 0})}};function s(e){return"file"===Object.prototype.toString.call(e).match(/^\[object (.*)\]$/)[1].toLowerCase()}function a(e){e=e||99999999;return Math.round(Math.random()*e)}function i(e,t=!0,r=!0){var i=Date.now();return t?r?i-e+" ms":Math.round((i-e)/1e3)+" s":r?i-e:Math.round((i-e)/1e3)}function n(e){return Array.from({length:8},()=>Math.floor(65536*(1+Math.random())).toString(16).substring(1)).join("")+"-"+e}function h(e,t){return Math.round(Number(e)*10**t)/10**t}function u(e){return e<1024?e+"B":e<1048576?Math.floor(e/1024)+"KB":Math.floor(e/1048576)+"MB"}function c(e){return e<=1048576?h(e/1024,1)+"KB/s":h(e/1048576,1)+"MB/s"}let l="TIMImageElem",p="TIMSoundElem",g="TIMFileElem",f="TIMVideoFileElem",_="RichMediaMessagePlugin",v=["rich.my-imcloud.com","imrich.qcloud.com"],j=((e=o=o||{}).UNSENT="unSend",e.SUCCESS="success",e.FAIL="fail",{wechat:/^(wxfile:\/\/tmp_|http:\/\/temp\/|cloud:\/\/temp-)/,alipay:/^(https:\/\/resource\/|alipayfile:\/\/tmp\/)/,baidu:/^(http:\/\/tmp\/|swanfile:\/\/tmp_)/,bytedance:/^(ttfile:\/\/tmp_|\/(var|tmp)\/|tttemp:\/\/)/,qq:/^(qqfile:\/\/tmp_|http:\/\/qtemp\/)/});var I=new class{init(e){this._core=e}addAuthToUrl(e=""){return this._isMiniProgramTempFile(e)?e:(e=(e=e)?!e.startsWith("https://")&&e.startsWith("http://")?e.replace("http://","https://"):e:"",this.processResourceUrl(e))}removeAuthToUrl(r){{var[r,i]=r.split("?");if(!i)return r;let t=i.split("&").reduce((e,t)=>{var[t,r]=t.split("=");return t&&"authKey"!==t&&(e[t]=r||""),e},{}),e=Object.keys(t).map(e=>""+e+(t[e]?"="+t[e]:"")).join("&");return e?r+"?"+e:r}}_isMiniProgramTempFile(t){return!!this.getPlatformFlags().IN_MINI_APP&&Object.values(j).some(e=>e.test(t))}extractFileFromInput(e){var{isArray:t}=this._core["utils"];return s(e)?e:function(t){if("object"==typeof t&&null!==t){t=Object.getPrototypeOf(t);if(null===t)return 1;let e=t;for(;null!==Object.getPrototypeOf(e);)e=Object.getPrototypeOf(e);return t===e}}(e)&&"undefined"!=typeof uni?t(e.tempFiles)&&0<e.tempFiles.length?e.tempFiles[0]:t(e.files)?e.files[0]:e.tempFile||null:e instanceof HTMLInputElement&&e.files&&0<e.files.length?e.files[0]:null}probeImageWidthHeight(r){return d(this,void 0,void 0,function*(){var{IN_MINI_APP:e,IN_BROWSER:t}=(null==(e=this._core)?void 0:e.utils)||{};return this._shouldSkipProbing()?{width:0,height:0}:t?this._probeImageDimensionsWeb(r):e?this._probeImageDimensionsMiniApp(r):void 0})}isSimpleCos(){var e=((null==(e=this._core)?void 0:e.store.get("cloudConfig"))||{})["simple_cos"];return"0"!==e}getFileDNList(){let e,t=v;var r=((null==(e=this._core)?void 0:e.store.get("cloudConfig"))||{})["file_dn_list"];if(void 0!==r)try{JSON.parse(r).forEach(e=>{t.includes(e)||t.push(e)})}catch(e){console.warn(e),t=v}return t}getPlatform(){var e;return null==(e=this._core)?void 0:e.utils.platform}generateUUID(e,t){let r,i=`${this.getSDKAppID()}-${this.getCurrentUserID()}-`+(null==(r=this._core)?void 0:r.utils.randomString());return t?i+"."+t:(e=(t=e.name||e.value||e.url||e.tempFilePath)&&t.slice(t.lastIndexOf(".")+1),i=e?i+"."+e:i)}processResourceUrl(e){if(!e)return"";let t=e;var r=this.getFileDownloadProxy(),i=this.getAuthKey(),o=this.getFileDNList(),e=(r&&(e.startsWith("http://")?t=e.replace(/^http:\/\/[^/]+/,r):e.startsWith("https://")&&(t=e.replace(/^https:\/\/[^/]+/,r))),i&&-1===t.indexOf("authKey=")&&function(e,t){let r=!1;if(e){var e=e.match(/:\/\/([0-9]?\.)?(.[^/:]+)/),i=e&&e[2]||"";if(i.includes("rich-dev"))return!0;for(let e=0;e<t.length;e++)if(i.endsWith(t[e])){r=!0;break}}return r}(t,o));return t=e?-1<t.indexOf("?")?t+"&authKey="+i:t+"?authKey="+i:t}getCurrentUserID(){var e;return null==(e=null==(e=this._core)?void 0:e.store.get("login"))?void 0:e.userId}getSDKAppID(){var e;return null==(e=null==(e=this._core)?void 0:e.store.get("instance"))?void 0:e.sdkAppId}getFileDownloadProxy(){var e;return(null==(e=null==(e=this._core)?void 0:e.store.get("instance"))?void 0:e.fileDownloadProxy)||""}getFileUploadProxy(){var e;return(null==(e=null==(e=this._core)?void 0:e.store.get("instance"))?void 0:e.fileUploadProxy)||""}getAuthKey(){var e;return(null==(e=null==(e=this._core)?void 0:e.store.get("login"))?void 0:e.authKey)||""}isPrivateNetWork(){var e;return null==(e=null==(e=this._core)?void 0:e.store.get("instance"))?void 0:e.proxyServer}getPlatformFlags(){var{IN_BROWSER:e,IN_MINI_APP:t,IN_RN_APP:r,IN_UNI_NATIVE_APP:i}=null==(e=this._core)?void 0:e.utils;return{IN_BROWSER:e,IN_MINI_APP:t,IN_RN_APP:r,IN_UNI_NATIVE_APP:i}}isEmpty(e){var t=(null==(t=this._core)?void 0:t.utils)["isEmpty"];return t(e)}_probeImageDimensionsMiniApp(e){let t,r=((null==(t=this._core)?void 0:t.utils)||{}).MINI_APP_NAMESPACE;return new Promise(t=>{r.getImageInfo({src:e,success:e=>t({width:e.width,height:e.height}),fail:()=>t({width:0,height:0})})})}_shouldSkipProbing(){var{IN_RN_APP:e,IS_IE:t,IE_VERSION:r}=(null==(e=this._core)?void 0:e.utils)||{};return e||t&&9===r}_probeImageDimensionsWeb(i){return new Promise(e=>{let t=new Image,r=()=>{t.onload=null,t.onerror=null,t.src=""};t.onload=()=>{e({width:t.width,height:t.height}),r()},t.onerror=()=>{e({width:0,height:0}),r()},t.src=i})}},y=new class{constructor(){this.uploadFileTryCount=0,this.maxRetries=1,this.systemClockOffset=0,this.httpRequest=null,this.uploadFileType="",this.duration=900,this.fetchCosTryCount=0}init(e){var t=(this._core=e).utils["IN_MINI_APP"];this.httpRequest=t?W:z,null!=(t=this.httpRequest)&&t.init(e)}uploadToCOS(l){return d(this,void 0,void 0,function*(){var t=_+" uploadToCOS",e=l["file"];this.uploadFileType=l.uploadFileType,console.log(t+" options:",l);try{var r=Date.now(),i=yield this._createCosOptions(l),o=yield this._uploadFile(i),s=(this._handleUploadError(o,l),this._createUploadResult(e,o)),a=Date.now()-r,n=`size:${u(e.size)} time:${a}ms speed:`+c(1e3*e.size/a);return console.log(t+` ok. name:${e.name} `+n),{uploadOptions:i,response:s}}catch(e){throw console.warn(t+" failed, error:",e),e}})}_handleUploadError(e,t){var r=(null==(r=this._core)?void 0:r.helper)["ChatError"];if(403===e.statusCode)throw i(Date.now(),!1),t.url,null!=(t=null==e?void 0:e.data)&&t.uploadIP&&e.data.uploadIP,new r({message:"Upload failed with status 403"})}_createUploadResult(e,t){return{fileName:e.name,fileSize:e.size,fileType:e.type.slice(e.type.indexOf("/")+1).toLowerCase(),location:t.data.location||"",uploadTime:i(Date.now(),!1),uploadSpeed:c(1e3*e.size/i(Date.now(),!1))}}_createCosOptions(c){return d(this,void 0,void 0,function*(){var{fileName:e,resources:t,uploadMethod:r}=this._prepareUploadParams(c),i=this._isC2CConversation(c.message.conversationID)?1:2;try{var o=yield this._fetchCosSignatureUrl({fileType:this.uploadFileType,fileName:e,uploadMethod:r,duration:this.duration,userID:c.message.from,conversationType:i}),{uploadUrl:s,downloadUrl:a,requestSnapshotUrl:n,thumbUrl:l,largeUrl:d,fileKey:h}=o,u=!I.isPrivateNetWork()&&o.uploadIP;return{url:this._getRawOrUploadProxyUrl(s),fileType:this.uploadFileType,fileName:e,resources:t,downloadUrl:a,requestSnapshotUrl:n,thumbUrl:l,largeUrl:d,fileKey:h,uploadIP:u||"",onProgress:e=>this._handleUploadProgress(e,c)}}catch(e){throw console.error("Failed to create COS pre-signed URL options:",e),e}})}_prepareUploadParams(e){console.log(_+" prepareUploadParams:",e);var t=e["file"],{IN_MINI_APP:r,IN_RN_APP:i}=I.getPlatformFlags(),r=r||i,i=r&&e.message.type!==g,e=t["name"],e=e.slice(e.lastIndexOf(".")),e=""+a(999999)+e;return{fileName:n(i?t.name:e),resources:r?t.url:t,uploadMethod:r?1:0}}_handleUploadProgress(e,t){if("function"==typeof t.onProgress)try{t.onProgress(e.percent)}catch(e){throw console.warn("Upload progress callback error:",e),e}}_fetchCosSignatureUrl(a){return d(this,void 0,void 0,function*(){var t=_+" fetchCosSignatureUrl",r=I.isSimpleCos(),i=this._prepareCosRequestData(a),o=r?"im_cos_msg.simple_sig":"im_cos_msg.pre_sig";try{let e=yield function(o,s,a){return d(this,void 0,void 0,function*(){try{var{helper:e,channel:t}=a,r=e.generateCosSpecifiedData({servcmd:o,data:s}),i=r.head.seq+o;return yield t.sendPacket(r,{requestId:i})}catch(e){throw console.warn("getCosSig error:",e),e}})}(o,i,this._core);this.fetchCosTryCount=0;var s=this._processResponse(e);return console.log(t+` ok. isSimpleCos:${r} data:`,s),s||{}}catch(e){if(console.error(t+" failed, error:",e),this.fetchCosTryCount<1)return this.fetchCosTryCount++,this._fetchCosSignatureUrl(a);throw this.fetchCosTryCount=0,e}})}_processResponse(e){var t;let r=I.isSimpleCos(),l=r?null==(t=null==e?void 0:e.rpt_pre_sig)?void 0:t[0]:e;if(!l)return{};if(r){let{str_final_ip:e,rpt_pre_sig:t,uint32_file_id:r,uint32_exist_flag:i,str_download_url:o,str_upload_url:s,str_snapshot_url:a,str_file_key:n}=l;return{uploadIP:e,preSig:t,fileID:r,existFlag:i,downloadUrl:o,uploadUrl:s,requestSnapshotUrl:a,fileKey:n}}let{upload_url:i,download_url:o,snapshot_url:s,thumb_url:a,large_url:n,file_key:d}=l;return{uploadUrl:i,downloadUrl:o,requestSnapshotUrl:s,thumbUrl:a,largeUrl:n,fileKey:d}}_prepareCosRequestData(e){return I.isSimpleCos()?{uint32_upload_method:e.uploadMethod,uint32_platform:I.getPlatform(),uint32_sdkappid:I.getSDKAppID(),str_user_id:e.userID,uint32_scene:e.conversationType,rpt_upload_object:[{uint32_file_id:1,uint32_file_type:e.fileType,str_file_name:e.fileName}]}:{file_type:e.fileType,file_name:e.fileName,upload_method:e.uploadMethod,Duration:e.duration}}_uploadFile(o){return d(this,void 0,void 0,function*(){return new Promise((r,i)=>{this.httpRequest.request(o,(e,t)=>{e&&this.uploadFileTryCount<this.maxRetries&&this.shouldRetry(e)?(this.uploadFileTryCount++,this._uploadFile(o).then(r).catch(i)):(this.uploadFileTryCount=0,e?i(e):r(t))})})})}shouldRetry(e){return!(!e||5!==Math.floor(e.statusCode/100)&&(!this.isTimeRelatedError(e)||!this._isClockOutOfSync(e)||(this._syncSystemClock(e),0)))}isTimeRelatedError(e){var t,r;try{var i=null==(t=e.error)?void 0:t.Code,o=null==(r=e.error)?void 0:r.Message;return"RequestTimeTooSkewed"===i||"AccessDenied"===i&&"Request has expired"===o}catch(e){return!1}}_isClockOutOfSync(e){var t,e=(null==(t=e.headers)?void 0:t.date)||(null==(t=e.headers)?void 0:t.Date)||(null==(t=e.error)?void 0:t.ServerTime);return!!e&&(t=Date.now(),e=Date.parse(e),3e4<=Math.abs(t+this.systemClockOffset-e))}_syncSystemClock(e){var t,r=(null==(t=e.headers)?void 0:t.date)||(null==(t=e.headers)?void 0:t.Date)||(null==(t=e.error)?void 0:t.ServerTime);if(r){let e=Date.now(),t=Date.parse(r);this.systemClockOffset=t-e}}_getRawOrUploadProxyUrl(e){var t=I.getFileUploadProxy();let r=e;return r=t?e.replace(/^https:\/\/[^/]+/,t):r}_isC2CConversation(e){return"C2C"===e.slice(0,3)}};let V=["jpg","jpeg","gif","png","bmp","image","webp"],U=20971520,w={JPG:1,JPEG:1,GIF:2,PNG:3,BMP:4,UNKNOWN:255};class q{constructor(e,t){this.instanceID=a(9999999),this.sizeType=e.type||0,this.type=0,this.size=e.size||0,this.width=e.width||0,this.height=e.height||0,this.imageUrl=I.addAuthToUrl(e.imageUrl||e.url||""),this.url=I.addAuthToUrl(e.url||t)}setSizeType(e){this.sizeType=e}setType(e){this.type=e}setImageUrl(e){e&&(this.imageUrl=I.addAuthToUrl(e))}getImageUrl(){return this.imageUrl}}function S(t){var{originUrl:t,originWidth:r,originHeight:i,min:o=198}=t,r=parseInt(r)||0,i=parseInt(i)||0,s={url:void 0,width:0,height:0};if((r<=i?r:i)<=o)s.url=t,s.width=r,s.height=i;else{i<=r?(s.width=Math.ceil(r*o/i),s.height=o):(s.width=o,s.height=Math.ceil(i*o/r));let e=t&&-1<t.indexOf("?")?t+"&":t+"?";s.url=198===o?e+"imageView2/3/w/198/h/198":e+"imageView2/3/w/720/h/720"}return void 0===t?m(s,["url"]):s}class F{constructor(e){this._imageMemoryURL="",this._percent=0,this.type=l;var{uuid:e,file:t,imageFormat:r,imageInfoArray:i=[]}=e;this._imageMemoryURL=this.createImageDataAsURL(t),this.content={imageFormat:r,uuid:e,imageInfoArray:[]},this.initImageInfoArray(i),this.autoFixUrl()}static parseServerPushElement(e){let t=e["MsgContent"],{ImageFormat:r,ImageInfoArray:i,UUID:o}=t,s=i.map(e=>({size:e.Size,type:e.Type,width:e.Width,height:e.Height,url:e.URL}));return new F({imageFormat:r,imageInfoArray:s,uuid:o})}createImageDataAsURL(e){let t="";var{IN_MINI_APP:r,IN_RN_APP:i,IN_BROWSER:o}=I.getPlatformFlags();return t=e&&((r||i)&&(t=e.url),o)?window.URL.createObjectURL(e):t}initImageInfoArray(t=[]){var r={type:0,size:0,width:0,height:0,url:""};for(let e=0;e<3;e++){var i=t[e]||Object.assign({},r),i=new q(i,this._imageMemoryURL);i.setSizeType(e+1),i.setType(e),this.addImageInfo(i)}this.updateAccessSideImageInfoArray()}autoFixUrl(){let i=["http","https"];this.content.imageInfoArray.forEach(e=>{var t,r;e.url&&""!==e.imageUrl&&([t,...r]=e.imageUrl.split("://"),r=r.join("://"),i.includes(t)||e.setImageUrl("https://"+r))})}updatePercent(e){this._percent=Math.min(e,1)}updateImageFormat(e){this.content.imageFormat=w[e.toUpperCase()]||w.UNKNOWN}addImageInfo(e){3<=this.content.imageInfoArray.length||this.content.imageInfoArray.push(e)}updateImageInfoArray(t){var r,i=this.content.imageInfoArray.length;for(let e=0;e<i;e++)r=this.content.imageInfoArray[e],t[e].size&&(r.size=t[e].size),t[e].url&&r.setImageUrl(t[e].url),t[e].width&&(r.width=t[e].width),t[e].height&&(r.height=t[e].height)}updateAccessSideImageInfoArray(){var[e]=this.content.imageInfoArray;if(e&&0!==e.width&&0!==e.height){var t=this.content.imageInfoArray,r=t[2];t[2]=t[1],t[1]=r;for(let e=0;e<t.length;e++)t[e].setType(e);Object.assign(this.content.imageInfoArray[2],S({originWidth:e.width,originHeight:e.height,min:720}))}}validateBeforeSend(){var[e]=this.content.imageInfoArray,e=!!e&&""!==e.imageUrl&&0!==e.size;return{isValid:e,error:e?null:{message:"content can not be empty"}}}transformToServerFormat(e){var{isMergerMessage:e=!1}=e||{},{uuid:e,imageFormat:t,imageInfoArray:r}=e?this.payload:this.content;return{MsgType:this.type,MsgContent:{ImageFormat:t,ImageInfoArray:this.parseImageInfoArray(r),UUID:e}}}parseImageInfoArray(e){return e.map(e=>({InstanceId:e.instanceID,Type:e.sizeType,MsgType:e.type,Size:e.size,Width:e.width,Height:e.height,URL:I.removeAuthToUrl(e.imageUrl)}))}}var P=new class{constructor(){this._messageOptionsMap=new Map}init(e){var{notificationCenter:e,helper:t,InnerEvent:r,message:i}=this._core=e;t.registerApi({apiName:"createImageMessage",context:this}),null!=(t=null==i?void 0:i.messageFactory)&&t.registerElementClass(l,F),e.subscribeInnerEvent(r.DESTROY,this._dispose,this)}createImageMessage(o){var s,a,n,e,t;try{let e=this._core.ssoLog.createSSOLogData({method:"createImageMessage"}),t=(console.log(_+" createImageMessage options:",o),null==(s=this._core.store.get("login"))?void 0:s.userId),r=null==(n=null==(a=this._core)?void 0:a.message.messageFactory)?void 0:n.createMessage(Object.assign(Object.assign({},o),{from:t})),i=this._processImage(o);o.payload.file=i;var l={imageFormat:w.UNKNOWN,uuid:I.generateUUID(i),file:i,imageInfoArray:[]},d=new F(l);return r.setElement(d),this._messageOptionsMap.set(r.clientSequence,o),console.log(_+" createImageMessage OK imageMessage:",r),e.end(),r}catch(o){throw null!=(t=(e=this._core.ssoLog.getSSOLogData("createImageMessage")).setError)&&t.call(e,o).end(),console.error(_+" createImageMessage error:",o),o}}upload(i){return d(this,void 0,void 0,function*(){console.log(_+" uploadImage message:",i);var e=i.getElements()[0],t=this._messageOptionsMap.get(i.clientSequence).payload["file"],t=(this._validateBeforeUploadImage(t),yield this._performImageUpload(e,i,t)),r=this._generateImageInfo(t);return e.updateImageFormat(null==t?void 0:t.fileType),e.updateImageInfoArray(r),i})}_performImageUpload(i,o,r){return d(this,void 0,void 0,function*(){var e=o["to"],{uploadOptions:e,response:t}=yield y.uploadToCOS({uploadFileType:1,file:r,to:e,message:o,onProgress:e=>{var t,r;i.updatePercent(e),null!=(r=null==(t=this._messageOptionsMap.get(o.clientSequence))?void 0:t.onProgress)&&r.call(t,e)}});return this._parseResponse(e,t)})}_generateImageInfo(e){console.log(_+" generateImageInfo");var{location:e,fileSize:t,width:r,height:i,smallImageUrl:o,smallImageWidth:s,smallImageHeight:a,largeImageUrl:n,largeImageWidth:l,largeImageHeight:d,imageInfoArray:h}=e,e=I.addAuthToUrl(e),u={size:t,url:e,width:r,height:i};return 0<(null==h?void 0:h.length)?this._processImageInfoArray(h,t):o&&n?[Object.assign({},u),{largeImageUrl:n,largeImageWidth:l,largeImageHeight:d},{smallImageUrl:o,smallImageWidth:s,smallImageHeight:a}]:[Object.assign({},u),this._generateThumbInfo(e,r,i,720),this._generateThumbInfo(e,r,i,198)]}_generateThumbInfo(e,t,r,i){return S({originUrl:e,originWidth:t,originHeight:r,min:i})}_processImageInfoArray(e,t){let r,i,o;for(var s of e)1===s.type?(i=s,i.size=t):2===s.type?(o=s,o.size=t):(r=s,r.size=t);return[Object.assign({},r),Object.assign({},o),Object.assign({},i)]}_parseResponse(i,o){return d(this,void 0,void 0,function*(){console.log(_+" parseResponse");try{var{thumbUrl:e,largeUrl:t,downloadUrl:r}=i;if(e&&t&&(yield this._getImageInfoByUrl(e,o,"thumb"),yield this._getImageInfoByUrl(t,o,"large")),I.isSimpleCos()&&!I.isPrivateNetWork()&&(yield this._getImageInfoArray(r,o),null!=o)&&o.uploadIP){let e=this._extractDomainFromUrl(r);e&&(yield this._getDownloadIP(e,o))}return o}catch(e){throw console.error("Failed to parse response:",e),e}})}_extractDomainFromUrl(e){try{var t=e.match(/:\/\/([^\/]+)/);return t?t[1]:null}catch(e){return console.warn("Failed to extract domain from URL:",e),null}}_getImageInfoByUrl(i,o,s){return d(this,void 0,void 0,function*(){try{var e=I.addAuthToUrl(i),{width:t=0,height:r=0}=yield I.probeImageWidthHeight(e);o.width=t,o.height=r,"thumb"===s?(o.smallImageUrl=i,o.smallImageWidth=t,o.smallImageHeight=r):(o.largeImageUrl=i,o.largeImageWidth=t,o.largeImageHeight=r)}catch(e){console.warn(`Failed to get ${s} image info:`,e)}})}_validateBeforeUploadImage(e){var t=(null==(t=this._core)?void 0:t.helper)["ChatError"];if(!e)throw new t({code:2251});this._checkImageType(e),this._checkImageSize(e)}_processImage(e){var t;try{var r=(null==(t=this._core)?void 0:t.utils)["IN_MINI_APP"],i=e.payload["file"];return r?this._processMiniAppImageFile(i):this._processWebImageFile(i)}catch(e){throw console.warn(_+" _processImage error:",e),e}}_processMiniAppImageFile(e){s(e)&&console.warn("FileUnsupportedInMiniApp","createImageMessage");var t=e.tempFiles[0].path||e.tempFiles[0].tempFilePath;return{url:t,name:t.slice(t.lastIndexOf("/")+1),size:e.tempFiles&&e.tempFiles[0].size||1,type:t.slice(t.lastIndexOf(".")+1).toLowerCase()}}_processWebImageFile(e){var t=(null==(t=this._core)?void 0:t.helper)["ChatError"],e=I.extractFileFromInput(e);if(e)return e;throw new t({message:"Invalid file. Pass either `e.target` (from file input) or a File object"})}_getDownloadIP(i,o){return d(this,void 0,void 0,function*(){var e=_+" getDownloadIP domainName: "+i;try{var t,r=yield function(a,n){return d(this,void 0,void 0,function*(){try{var{helper:e,channel:t}=n,r="im_cos_msg.get_final_ip",i={str_domain:a},o=e.generateProtocolData({servcmd:r,data:i}),s=o.head.seq+r;return yield t.sendPacket(o,{requestId:s})}catch(e){throw console.warn("getFinalIP error:",e),e}})}(i,this._core);r&&r.str_final_ip&&(console.log(e+" ok. downloadIP:"+r),(t=o.location.split("/"))[0]=r.str_final_ip,o.location=t.join("/"))}catch(e){console.warn(e)}})}_getImageInfoArray(r,i){return d(this,void 0,void 0,function*(){var t=_+"._getImageInfoArray";try{var e=yield function(a,n){return d(this,void 0,void 0,function*(){try{var{helper:e,channel:t}=n,r="im_cos_msg.get_imageinfo",i={str_image_url:a},o=e.generateProtocolData({servcmd:r,data:i}),s=o.head.seq+r;return yield t.sendPacket(o,{requestId:s})}catch(e){throw console.warn("getImageInfo error:",e),e}})}(r,this._core);return i.imageInfoArray=this._processImageInfoResponse(e),console.log(t+" ok"),i}catch(e){throw i.imageInfoArray=void 0,console.warn(t+" failed, error:",e),e}})}_processImageInfoResponse(e){return e?(e=e["rpt_msg_image_info"],e.map(e=>({type:e.uint32_image_type,url:e.str_url,width:e.uint32_width,height:e.uint32_height,imageFormat:e.str_image_format}))):[]}_checkImageType(e){var{utils:t,helper:r}=this._core;let i="";if(t.IN_MINI_APP&&(i=e.url.slice(e.url.lastIndexOf(".")+1)),t.IN_BROWSER&&(i=e.name.slice(e.name.lastIndexOf(".")+1)),V.indexOf(i.toLowerCase())<0)throw new r.ChatError({code:2252})}_checkImageSize(e){var{utils:t,helper:r}=this._core,i=0;if(t.IN_MINI_APP,0===(i=e.size))throw new r.ChatError({code:2108});if(i>=U)throw new r.ChatError({message:"File size exceeds limit: "+u(U)})}_reset(){this._messageOptionsMap.clear()}_dispose(){this._reset();var{notificationCenter:e,InnerEvent:t}=this._core;e.unSubscribeInnerEvent(t.DESTROY,this._dispose,this)}};let M="2.5.0",b="1.18.0",r=104857600;function A(e,t){let i=e.split("."),o=t.split("."),s=Math.max(i.length,o.length);for(;i.length<s;)i.push("0");for(;o.length<s;)o.push("0");for(let r=0;r<s;r++){let e=parseInt(i[r]),t=parseInt(o[r]);if(e>t)return 1;if(e<t)return-1}return 0}let O=new class{init(e){this.core=e}};class T{constructor(e){this.type=g,this.uploadProgress=0;var t=this._getFileInfo(e);this.content={downloadFlag:2,fileUrl:I.addAuthToUrl(e.url||e.fileUrl)||"",uuid:e.uuid,fileName:t.name||"",fileSize:t.size||0}}static parseServerPushElement(e){var e=e["MsgContent"],{Download_Flag:e,Url:t,FileName:r,FileSize:i,UUID:o}=e;return new T({downloadFlag:e,url:t,fileName:r,fileSize:i,uuid:o})}updatePercent(e){this.uploadProgress=Math.min(e,1)}updateFileUrl(e){this.content.fileUrl=e}validateBeforeSend(){var e=""!==this.content.fileUrl&&""!==this.content.fileName&&0<this.content.fileSize;return{isValid:e,error:e?null:{message:"content can not be empty"}}}transformToServerFormat(e){var{isMergerMessage:e=!1}=e||{},{uuid:e,downloadFlag:t,fileUrl:r,fileName:i,fileSize:o}=e?this.payload:this.content;return{MsgType:this.type,MsgContent:{Download_Flag:t,Url:I.removeAuthToUrl(r),FileName:i,FileSize:o,UUID:e}}}_getFileInfo(e){var t=O.core["utils"]["IN_UNI_NATIVE_APP"];return e.fileName&&e.fileSize?{size:e.fileSize,name:e.fileName}:(e=e["file"],e?(t&&this._processNativeAppFile(e),{size:e.size,name:e.name}):{size:0,name:""})}_processNativeAppFile(e){var t;e.path&&e.path.includes(".")&&(t=e.path.slice(e.path.lastIndexOf(".")+1).toLowerCase(),e.type=t,e.name||(e.name=a(999999)+"."+t)),e.name||(e.type="",e.name=e.path.slice(e.path.lastIndexOf("/")+1).toLowerCase()),e.suffix&&(e.type=e.suffix),e.url||(e.url=e.path)}}var N=new class{constructor(){this._messageOptionsMap=new Map}init(e){var{notificationCenter:e,helper:t,InnerEvent:r,message:i}=this._core=e;t.registerApi({apiName:"createFileMessage",context:this}),null!=(t=null==i?void 0:i.messageFactory)&&t.registerElementClass(g,T),e.subscribeInnerEvent(r.DESTROY,this._dispose,this)}createFileMessage(r){var i,o,s,e,t;try{let e=this._core.ssoLog.createSSOLogData({method:"createFileMessage"}),t=(console.log(_+" createFileMessage options:",r),this._checkVersion(),this._processFile(r.payload.file));r.payload.file=t;var a=null==(i=this._core.store.get("login"))?void 0:i.userId,n=null==(s=null==(o=this._core)?void 0:o.message.messageFactory)?void 0:s.createMessage(Object.assign(Object.assign({},r),{from:a})),l={uuid:I.generateUUID(t),file:t},d=new T(l);return n.setElement(d),this._messageOptionsMap.set(n.clientSequence,r),console.log(_+" createFileMessage success fileMessage:",n),e.end(),n}catch(r){throw null!=(t=(e=this._core.ssoLog.getSSOLogData("createFileMessage")).setError)&&t.call(e,r).end(),console.error(_+" createFileMessage error:",r),r}}upload(r){return d(this,void 0,void 0,function*(){console.log(_+" uploadFile message:",r);var e=this._messageOptionsMap.get(r.clientSequence).payload["file"],t=(this._validateBeforeUploadFile(e),r.getElements()[0]),e=yield this._performFileUpload(t,r,e),e=I.addAuthToUrl(null==e?void 0:e.location);return t.updateFileUrl(e),r})}_validateBeforeUploadFile(e){var t=(null==(t=this._core)?void 0:t.helper)["ChatError"];if(!e)throw new t({code:2401});if(e.size>r)throw new t({message:"File size exceeds limit: "+u(r)});if(0===e.size)throw new t({code:2108})}_performFileUpload(i,o,t){return d(this,void 0,void 0,function*(){var e=o["to"],e=(yield y.uploadToCOS({uploadFileType:255,file:t,to:e,message:o,onProgress:e=>{var t,r;i.updatePercent(e),null!=(r=null==(t=this._messageOptionsMap.get(o.clientSequence))?void 0:t.onProgress)&&r.call(t,e)}}))["response"];return e})}_processFile(t){var{IN_BROWSER:e,IN_RN_APP:r,IN_WX_MINI_APP:i,IN_QQ_MINI_APP:o,IN_UNI_NATIVE_APP:s}=null==(e=this._core)?void 0:e.utils,a=(null==(a=this._core)?void 0:a.helper)["ChatError"];if(e||s){let e=I.extractFileFromInput(t);if(e)return e;throw new a({message:"Invalid file. Pass either `e.target` (from file input) or a File object"})}if(i||o){let e=t["tempFiles"];return Object.assign(Object.assign({},e[0]),{url:e[0].path})}return r?Object.assign(Object.assign({},t),{url:t.uri}):t}_checkVersion(){var{MINI_APP_NAMESPACE:t,IN_MINI_APP:e,IN_WX_MINI_APP:r,IN_QQ_MINI_APP:i,IN_UNI_NATIVE_APP:o}=null==(e=this._core)?void 0:e.utils,s=(null==(s=this._core)?void 0:s.helper)["ChatError"];if(e){if(!(r||i||o))throw new s({message:"Unsupported mini app environment"});let e=t.getSystemInfoSync().SDKVersion;if(r&&A(e,M)<0)throw new s({message:`WXChooseMessageFile requires SDK version ${M} or higher`});if(i&&A(e,b)<0)throw new s({message:`QQChooseMessageFile requires SDK version ${b} or higher`})}}_reset(){this._messageOptionsMap.clear()}_dispose(){this._reset();var{notificationCenter:e,InnerEvent:t}=this._core;e.unSubscribeInnerEvent(t.DESTROY,this._dispose,this)}};let L=["mp4","quicktime","mov"],C=104857600;class E{constructor(e){this.type=f,this.uploadProgress=0;var t="number"==typeof(null==e?void 0:e.videoSecond)?null==e?void 0:e.videoSecond:0;this.content={remoteVideoUrl:I.addAuthToUrl(e.remoteVideoUrl||e.videoUrl||""),videoFormat:e.videoFormat,videoSecond:parseInt(null==t?void 0:t.toString(),10),videoSize:e.videoSize,videoUrl:I.addAuthToUrl(e.videoUrl),videoDownloadFlag:2,videoUUID:e.videoUUID,thumbUUID:e.thumbUUID,thumbFormat:e.thumbFormat,thumbWidth:e.thumbWidth,snapshotWidth:e.thumbWidth,thumbHeight:e.thumbHeight,snapshotHeight:e.thumbHeight,thumbSize:e.thumbSize,snapshotSize:e.thumbSize,thumbDownloadFlag:2,thumbUrl:I.addAuthToUrl(e.thumbUrl),snapshotUrl:I.addAuthToUrl(e.thumbUrl)}}static parseServerPushElement(e){var e=e["MsgContent"],{VideoUrl:e,VideoFormat:t,VideoSecond:r,VideoSize:i,VideoDownloadFlag:o,VideoUUID:s,ThumbUUID:a,ThumbFormat:n,ThumbWidth:l,SnapshotWidth:d,ThumbHeight:h,SnapshotHeight:u,ThumbSize:c,SnapshotSize:p,ThumbDownloadFlag:g,ThumbUrl:m,SnapshotUrl:f}=e;return new E({videoUrl:e,videoFormat:t,videoSecond:r,videoSize:i,videoDownloadFlag:o,videoUUID:s,thumbUUID:a,thumbFormat:n,thumbWidth:l,snapshotWidth:d,thumbHeight:h,snapshotHeight:u,thumbSize:c,snapshotSize:p,thumbDownloadFlag:g,thumbUrl:m,snapshotUrl:f})}updatePercent(e){this.uploadProgress=Math.min(e,1)}updateVideoUrl(e){e&&(this.content.remoteVideoUrl=e)}updateSnapshotInfo(e){var{snapshotUrl:e,snapshotWidth:t,snapshotHeight:r}=e;I.isEmpty(e)||(this.content.thumbUrl=this.content.snapshotUrl=e),I.isEmpty(t)||(this.content.thumbWidth=this.content.snapshotWidth=Number(t)),I.isEmpty(r)||(this.content.thumbHeight=this.content.snapshotHeight=Number(r))}validateBeforeSend(){var e=""!==this.content.remoteVideoUrl;return{isValid:e,error:e?null:{message:"content can not be empty"}}}transformToServerFormat(e){var{isMergerMessage:e=!1}=e||{},{remoteVideoUrl:e,videoFormat:t,videoSecond:r,videoSize:i,videoDownloadFlag:o,videoUUID:s,thumbUUID:a,thumbFormat:n,thumbWidth:l,snapshotWidth:d,thumbHeight:h,snapshotHeight:u,thumbSize:c,snapshotSize:p,thumbDownloadFlag:g,thumbUrl:m,snapshotUrl:f}=e?this.payload:this.content;return{MsgType:this.type,MsgContent:{VideoUrl:I.removeAuthToUrl(e),VideoFormat:t,VideoSecond:r,VideoSize:i,VideoDownloadFlag:o,VideoUUID:s,ThumbUUID:a,ThumbFormat:n,ThumbWidth:l,SnapshotWidth:d,ThumbHeight:h,SnapshotHeight:u,ThumbSize:c,SnapshotSize:p,ThumbDownloadFlag:g,ThumbUrl:I.removeAuthToUrl(m),SnapshotUrl:I.removeAuthToUrl(f)}}}}var D=new class{constructor(){this._messageOptionsMap=new Map}init(e){var{notificationCenter:e,helper:t,InnerEvent:r,message:i}=this._core=e;t.registerApi({apiName:"createVideoMessage",context:this}),null!=(t=null==i?void 0:i.messageFactory)&&t.registerElementClass(f,E),e.subscribeInnerEvent(r.DESTROY,this._dispose,this)}createVideoMessage(r){var i,o,s,e,t;try{let e=this._core.ssoLog.createSSOLogData({method:"createVideoMessage"}),t=(console.log(_+" createVideoMessage options:",r),this._processVideo(r));r.payload.file=t;var a=null==(i=this._core.store.get("login"))?void 0:i.userId,n=null==(s=null==(o=this._core)?void 0:o.message.messageFactory)?void 0:s.createMessage(Object.assign(Object.assign({},r),{from:a})),l={videoFormat:t.videoFile.type,videoSecond:h(t.videoFile.second,0),videoSize:t.videoFile.size,remoteVideoUrl:"",videoUrl:t.videoFile.url,videoUUID:I.generateUUID(t.videoFile),thumbUUID:I.generateUUID(t.videoFile,"jpg"),thumbWidth:t.width||200,thumbHeight:t.height||200,thumbUrl:t.thumbUrl,thumbSize:t.thumbSize,thumbFormat:"jpg"},d=new E(l);return n.setElement(d),this._messageOptionsMap.set(n.clientSequence,r),e.end(),n}catch(r){throw null!=(t=(e=this._core.ssoLog.getSSOLogData("createVideoMessage")).setError)&&t.call(e,r).end(),console.error(_+" createVideoMessage error:",r),r}}upload(i){return d(this,void 0,void 0,function*(){console.log(_+" uploadVideo message:",i);var e=i.getElements()[0],t=this._messageOptionsMap.get(i.clientSequence).payload["file"],t=(this._validateBeforeUploadVideo(t),yield this._performVideoUpload(e,i,t)),{location:t,snapshotInfo:r}=t,t=I.addAuthToUrl(t);return e.updateVideoUrl(t),I.isEmpty(r)||e.updateSnapshotInfo(r),i})}_validateBeforeUploadVideo(e){var t=(null==(t=this._core)?void 0:t.helper)["ChatError"];if(e.videoFile.size>C)throw new t({message:"File size exceeds limit: "+u(C)});if(0===e.videoFile.size)throw new t({code:2108});if(-1===L.indexOf(e.videoFile.type))throw new t({code:2352})}_performVideoUpload(i,o,r){return d(this,void 0,void 0,function*(){var e=o["to"],{response:e,uploadOptions:t}=yield y.uploadToCOS({uploadFileType:2,file:r,to:e,message:o,onProgress:e=>{var t,r;i.updatePercent(e),null!=(r=null==(t=this._messageOptionsMap.get(o.clientSequence))?void 0:t.onProgress)&&r.call(t,e)}});return{snapshotInfo:yield this._getSnapshotInfoByUrl(t.requestSnapshotUrl),location:e.location}})}_processVideo(e){var i,o;try{var s=(null==(i=this._core)?void 0:i.helper)["ChatError"],{IN_MINI_APP:a,IN_BROWSER:n}=null==(o=this._core)?void 0:o.utils;let t=e.payload["file"],r={};if(a&&(r=this._processMiniVideoFile(t),t.name=r.name,t.url=r.url,t.type=r.type),n){let e=I.extractFileFromInput(t);if(!e)throw new s({message:"Invalid file. Pass either `e.target` (from file input) or a File object"});t=e,r=this._processWebVideoFile(t)}return t.videoFile=r,t.thumbUrl="",t.thumbSize=0,t}catch(e){throw console.warn(_+" _processFile error:",e),e}}_processMiniVideoFile(e){var{IN_ALIPAY_MINI_APP:t,IN_UNI_NATIVE_APP:r}=null==(t=this._core)?void 0:t.utils,i=(null==(i=this._core)?void 0:i.helper)["ChatError"];if(t)throw new i({message:"VideoUnsupportedInAlipay"});if(s(e))throw new i({message:"FileUnsupportedInMiniApp"});let o=(e=Array.isArray(e.tempFiles)?e.tempFiles[0]:e).tempFilePath.slice(e.tempFilePath.lastIndexOf(".")+1).toLowerCase();return r&&(o=e.fileType||o),{url:e.tempFilePath,name:e.tempFilePath.slice(e.tempFilePath.lastIndexOf("/")+1),size:e.size||1,second:e.duration||0,type:o}}_processWebVideoFile(e){var{name:t,size:r=1,duration:i=0,type:o}=e,o=o.split("/")[1];return{url:window.URL.createObjectURL(e),name:t,size:r,second:i,type:o}}_getSnapshotInfoByUrl(o){return d(this,void 0,void 0,function*(){try{console.log(_+" _getSnapshotInfoByUrl url:",o);var e,t,r,i=((yield function(s,a){return d(this,void 0,void 0,function*(){try{var e="im_cos_msg.video_cover",{helper:t,channel:r}=a,i=t.generateCosSpecifiedData({servcmd:e,data:s}),o=i.head.seq+e;return yield r.sendPacket(i,{requestId:o})}catch(e){throw console.warn("getSnapshotInfo error:",e),e}})}({version:1,platform:I.getPlatform(),cover_name:n(a(99999)),snapshot_url:o},this._core))||{})["download_url"];return(console.log(_+" _getSnapshotInfoByUrl OK snapshotUrl:",i),I.isEmpty(i))?{}:(e=I.addAuthToUrl(i),{width:t=0,height:r=0}=yield I.probeImageWidthHeight(e),{snapshotUrl:e,snapshotWidth:t,snapshotHeight:r})}catch(e){throw console.error(_+" _getSnapshotInfoByUrl error:",e),e}})}_reset(){this._messageOptionsMap.clear()}_dispose(){this._reset();var{notificationCenter:e,InnerEvent:t}=this._core;e.unSubscribeInnerEvent(t.DESTROY,this._dispose,this)}};class R{constructor(e){this.uploadProgress=0,this.type=p,this.content={downloadFlag:2,second:e.second,size:e.size,url:I.addAuthToUrl(e.url),remoteAudioUrl:I.addAuthToUrl(e.url||""),uuid:e.uuid}}static parseServerPushElement(e){var e=e["MsgContent"],{Url:e,Download_Flag:t,Second:r,Size:i,UUID:o}=e;return new R({url:e,downloadFlag:t,second:r,size:i,uuid:o})}updatePercent(e){this.uploadProgress=Math.min(e,1)}updateAudioUrl(e){this.content.remoteAudioUrl=e}validateBeforeSend(){var e=""!==this.content.remoteAudioUrl;return{isValid:e,error:e?null:{message:"content can not be empty"}}}transformToServerFormat(e){var{isMergerMessage:e=!1}=e||{},{uuid:e,downloadFlag:t,remoteAudioUrl:r,size:i,second:o}=e?this.payload:this.content;return{MsgType:this.type,MsgContent:{Url:I.removeAuthToUrl(r),Download_Flag:t,Second:o,Size:i,UUID:e}}}}var k=new class{constructor(){this._messageOptionsMap=new Map}init(e){var{notificationCenter:e,helper:t,InnerEvent:r,message:i}=this._core=e;t.registerApi({apiName:"createAudioMessage",context:this}),null!=(t=null==i?void 0:i.messageFactory)&&t.registerElementClass(p,R),e.subscribeInnerEvent(r.DESTROY,this._dispose,this)}createAudioMessage(t){var r,i,e,o;try{let e=this._core.ssoLog.createSSOLogData({method:"createAudioMessage"});console.log(_+" createAudioMessage options:",t);t.payload["file"];var s=this._processAudioFile(t.payload.file),a=(t.payload.file=s,null==(o=this._core.store.get("login"))?void 0:o.userId),n=null==(i=null==(r=this._core)?void 0:r.message.messageFactory)?void 0:i.createMessage(Object.assign(Object.assign({},t),{from:a})),l={second:Math.floor((s.duration||s.second)/1e3),size:s.fileSize||s.size||1,url:s.tempFilePath||s.uri||s.url,uuid:I.generateUUID(s)},d=new R(l);return n.setElement(d),this._messageOptionsMap.set(n.clientSequence,t),e.end(),n}catch(t){throw null!=(o=(e=this._core.ssoLog.getSSOLogData("createAudioMessage")).setError)&&o.call(e,t).end(),console.error(_+" createAudioMessage error:",t),t}}upload(r){return d(this,void 0,void 0,function*(){console.log(_+" uploadAudio message:",r);var e=this._messageOptionsMap.get(r.clientSequence).payload["file"],t=(this._validateBeforeUploadAudio(e),r.getElements()[0]),e=yield this._performAudioUpload(t,r,e),e=I.addAuthToUrl(null==e?void 0:e.location);return t.updateAudioUrl(e),r})}_validateBeforeUploadAudio(e){var t=(null==(t=this._core)?void 0:t.helper)["ChatError"];if(!e)throw new t({code:2300});if(20971520<e.size)throw new t({message:"File size exceeds limit: "+u(20971520)});if(0===e.size)throw new t({code:2108})}_performAudioUpload(i,o,t){return d(this,void 0,void 0,function*(){var e=o["to"],e=(yield y.uploadToCOS({uploadFileType:3,file:t,to:e,message:o,onProgress:e=>{var t,r;i.updatePercent(e),null!=(r=null==(t=this._messageOptionsMap.get(o.clientSequence))?void 0:t.onProgress)&&r.call(t,e)}}))["response"];return e})}_processAudioFile(e){var{IN_MINI_APP:t,IN_BROWSER:r}=null==(t=this._core)?void 0:t.utils;return t?this._processMiniFile(e):r?this._processWebFile(e):void 0}_processMiniFile(e){return{url:e.tempFilePath,name:e.tempFilePath.slice(e.tempFilePath.lastIndexOf("/")+1),size:e.fileSize,second:e.duration,type:e.tempFilePath.slice(e.tempFilePath.lastIndexOf(".")+1).toLowerCase()}}_processWebFile(e){var t;return e.tempFilePath||e.uri||(t=URL.createObjectURL(e),e.tempFilePath=t),e}_reset(){this._messageOptionsMap.clear()}_dispose(){this._reset();var{notificationCenter:e,InnerEvent:t}=this._core;e.unSubscribeInnerEvent(t.DESTROY,this._dispose,this)}};let t={to:{required:!0,rules:["string"],allowEmpty:!1},conversationType:{required:!0,rules:["string"],allowEmpty:!1},payload:{required:!0,rules:["object"],allowEmpty:!1},cloudCustomData:{required:!1,rules:["string"],allowEmpty:!1},priority:{required:!1,rules:["string"],allowEmpty:!1},customModerationConfigurationID:{required:!1,rules:["string"],allowEmpty:!1},onProgress:{required:!1,rules:["function"],allowEmpty:!1}},B={createImageMessage:t,createAudioMessage:t,createVideoMessage:t,createFileMessage:t},H={createImageMessage:!0,createAudioMessage:!0,createVideoMessage:!0,createFileMessage:!0},K={TIMImageElem:P,TIMFileElem:N,TIMVideoFileElem:D,TIMSoundElem:k};return new class{constructor(){this.name="RichMediaMessage"}install(e){let{OuterConstant:{MSG_AUDIO:t,MSG_FILE:r,MSG_IMAGE:i,MSG_VIDEO:o}}=(this._core=e)["constants"];O.init(e),P.init(e),N.init(e),D.init(e),k.init(e),y.init(e),I.init(e),e.helper.registerApi({apiName:"sendMessage",context:this,matcher:e=>[t,r,i,o].includes(e[0].type)}),e.helper.registerValidateConfig({auth:H,params:B})}sendMessage(i,o){return d(this,void 0,void 0,function*(){var e,t,r;try{return console.log("sendMessage message:",i),yield this._upload(i),yield null==(r=null==(t=null==(e=this._core)?void 0:e.message)?void 0:t.messageSender)?void 0:r.sendMessage(i,o)}catch(e){throw console.error("sendMessage error:",e),e}})}_upload(i){return d(this,void 0,void 0,function*(){var t,r;if(!0!==i._relayFlag)try{let t=K[i.type];if(t){let e=this._core.ssoLog.createSSOLogData({method:"upload"});e.setLogInfo({message:"type:"+i.type}),yield t.upload(i),e.end()}}catch(e){throw i.status=o.FAIL,e instanceof Error&&(e.data={message:i}),this._core.message.messageDataHandler.storeConversationMessage(i),null!=(r=(t=this._core.ssoLog.getSSOLogData("upload")).setError)&&r.call(t,e).end(),e}})}}});