customer-chat-sdk 1.3.7 → 1.3.8

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.
@@ -29918,6 +29918,22 @@ class CustomerServiceSDK {
29918
29918
  console.log('📸 截图配置已更新:', options);
29919
29919
  }
29920
29920
  }
29921
+ /**
29922
+ * 触发截图配置(用于弹窗组件场景,替代之前的 iframe postMessage)
29923
+ * @param configJson 截图配置的 JSON 字符串(BinaryConfig 格式)
29924
+ */
29925
+ triggerScreenshotConfig(configJson) {
29926
+ if (!this.screenshotManager) {
29927
+ if (this.debug) {
29928
+ console.warn('[CustomerServiceSDK] ScreenshotManager not initialized');
29929
+ }
29930
+ return;
29931
+ }
29932
+ this.screenshotManager.handleScreenshotConfig(configJson);
29933
+ if (this.debug) {
29934
+ console.log('[CustomerServiceSDK] Screenshot config triggered:', configJson);
29935
+ }
29936
+ }
29921
29937
  /**
29922
29938
  * 销毁 SDK
29923
29939
  */
@@ -30117,6 +30133,14 @@ const updateScreenshotOptions = (options) => {
30117
30133
  const sdk = getInstance();
30118
30134
  sdk.updateScreenshotOptions(options);
30119
30135
  };
30136
+ /**
30137
+ * 触发截图配置(用于弹窗组件场景,替代之前的 iframe postMessage)
30138
+ * @param configJson 截图配置的 JSON 字符串(BinaryConfig 格式)
30139
+ */
30140
+ const triggerScreenshotConfig = (configJson) => {
30141
+ const sdk = getInstance();
30142
+ sdk.triggerScreenshotConfig(configJson);
30143
+ };
30120
30144
  // 默认导出
30121
30145
  var index = {
30122
30146
  init,
@@ -30136,6 +30160,7 @@ var index = {
30136
30160
  enableScreenshot,
30137
30161
  getScreenshotState,
30138
30162
  updateScreenshotOptions,
30163
+ triggerScreenshotConfig,
30139
30164
  destroy
30140
30165
  };
30141
30166
 
@@ -30159,4 +30184,5 @@ exports.setIconStyle = setIconStyle;
30159
30184
  exports.setScreenshotTarget = setScreenshotTarget;
30160
30185
  exports.showIcon = showIcon;
30161
30186
  exports.showNotification = showNotification;
30187
+ exports.triggerScreenshotConfig = triggerScreenshotConfig;
30162
30188
  exports.updateScreenshotOptions = updateScreenshotOptions;
@@ -29914,6 +29914,22 @@ class CustomerServiceSDK {
29914
29914
  console.log('📸 截图配置已更新:', options);
29915
29915
  }
29916
29916
  }
29917
+ /**
29918
+ * 触发截图配置(用于弹窗组件场景,替代之前的 iframe postMessage)
29919
+ * @param configJson 截图配置的 JSON 字符串(BinaryConfig 格式)
29920
+ */
29921
+ triggerScreenshotConfig(configJson) {
29922
+ if (!this.screenshotManager) {
29923
+ if (this.debug) {
29924
+ console.warn('[CustomerServiceSDK] ScreenshotManager not initialized');
29925
+ }
29926
+ return;
29927
+ }
29928
+ this.screenshotManager.handleScreenshotConfig(configJson);
29929
+ if (this.debug) {
29930
+ console.log('[CustomerServiceSDK] Screenshot config triggered:', configJson);
29931
+ }
29932
+ }
29917
29933
  /**
29918
29934
  * 销毁 SDK
29919
29935
  */
@@ -30113,6 +30129,14 @@ const updateScreenshotOptions = (options) => {
30113
30129
  const sdk = getInstance();
30114
30130
  sdk.updateScreenshotOptions(options);
30115
30131
  };
30132
+ /**
30133
+ * 触发截图配置(用于弹窗组件场景,替代之前的 iframe postMessage)
30134
+ * @param configJson 截图配置的 JSON 字符串(BinaryConfig 格式)
30135
+ */
30136
+ const triggerScreenshotConfig = (configJson) => {
30137
+ const sdk = getInstance();
30138
+ sdk.triggerScreenshotConfig(configJson);
30139
+ };
30116
30140
  // 默认导出
30117
30141
  var index = {
30118
30142
  init,
@@ -30132,7 +30156,8 @@ var index = {
30132
30156
  enableScreenshot,
30133
30157
  getScreenshotState,
30134
30158
  updateScreenshotOptions,
30159
+ triggerScreenshotConfig,
30135
30160
  destroy
30136
30161
  };
30137
30162
 
30138
- export { CustomerSDK, CustomerServiceSDK, captureScreenshot, clearNotification, index as default, destroy, enableScreenshot, getConnectionStatus, getInitResult, getInstance, getScreenshotState, hideIcon, init, onIconClick, setIconCoordinates, setIconPosition, setIconStyle, setScreenshotTarget, showIcon, showNotification, updateScreenshotOptions };
30163
+ export { CustomerSDK, CustomerServiceSDK, captureScreenshot, clearNotification, index as default, destroy, enableScreenshot, getConnectionStatus, getInitResult, getInstance, getScreenshotState, hideIcon, init, onIconClick, setIconCoordinates, setIconPosition, setIconStyle, setScreenshotTarget, showIcon, showNotification, triggerScreenshotConfig, updateScreenshotOptions };
@@ -35,4 +35,4 @@ e.mode.CTRGladman=function(){var A=e.lib.BlockCipherMode.extend();function t(A){
35
35
 
36
36
  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37
37
  */
38
- function(){var A=e,t=A.lib,n=t.WordArray,r=t.Hasher,o=A.algo,i=n.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),s=n.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),a=n.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),c=n.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),l=n.create([0,1518500249,1859775393,2400959708,2840853838]),u=n.create([1352829926,1548603684,1836072691,2053994217,0]),h=o.RIPEMD160=r.extend({_doReset:function(){this._hash=n.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(A,e){for(var t=0;t<16;t++){var n=e+t,r=A[n];A[n]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8)}var o,h,m,C,Q,y,U,F,b,v,E,H=this._hash.words,I=l.words,x=u.words,S=i.words,L=s.words,D=a.words,M=c.words;for(y=o=H[0],U=h=H[1],F=m=H[2],b=C=H[3],v=Q=H[4],t=0;t<80;t+=1)E=o+A[e+S[t]]|0,E+=t<16?g(h,m,C)+I[0]:t<32?d(h,m,C)+I[1]:t<48?B(h,m,C)+I[2]:t<64?f(h,m,C)+I[3]:w(h,m,C)+I[4],E=(E=p(E|=0,D[t]))+Q|0,o=Q,Q=C,C=p(m,10),m=h,h=E,E=y+A[e+L[t]]|0,E+=t<16?w(U,F,b)+x[0]:t<32?f(U,F,b)+x[1]:t<48?B(U,F,b)+x[2]:t<64?d(U,F,b)+x[3]:g(U,F,b)+x[4],E=(E=p(E|=0,M[t]))+v|0,y=v,v=b,b=p(F,10),F=U,U=E;E=H[1]+m+b|0,H[1]=H[2]+C+v|0,H[2]=H[3]+Q+y|0,H[3]=H[4]+o+U|0,H[4]=H[0]+h+F|0,H[0]=E},_doFinalize:function(){var A=this._data,e=A.words,t=8*this._nDataBytes,n=8*A.sigBytes;e[n>>>5]|=128<<24-n%32,e[14+(n+64>>>9<<4)]=16711935&(t<<8|t>>>24)|4278255360&(t<<24|t>>>8),A.sigBytes=4*(e.length+1),this._process();for(var r=this._hash,o=r.words,i=0;i<5;i++){var s=o[i];o[i]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8)}return r},clone:function(){var A=r.clone.call(this);return A._hash=this._hash.clone(),A}});function g(A,e,t){return A^e^t}function d(A,e,t){return A&e|~A&t}function B(A,e,t){return(A|~e)^t}function f(A,e,t){return A&t|e&~t}function w(A,e,t){return A^(e|~t)}function p(A,e){return A<<e|A>>>32-e}A.RIPEMD160=r._createHelper(h),A.HmacRIPEMD160=r._createHmacHelper(h)}(),e.RIPEMD160)}(xr)),Dr(),Mr||(Mr=1,function(A){var e,t,n,r,o,i,s,a,c;A.exports=(c=Yn(),pr(),Dr(),n=(t=(e=c).lib).Base,r=t.WordArray,i=(o=e.algo).SHA256,s=o.HMAC,a=o.PBKDF2=n.extend({cfg:n.extend({keySize:4,hasher:i,iterations:25e4}),init:function(A){this.cfg=this.cfg.extend(A)},compute:function(A,e){for(var t=this.cfg,n=s.create(t.hasher,A),o=r.create(),i=r.create([1]),a=o.words,c=i.words,l=t.keySize,u=t.iterations;a.length<l;){var h=n.update(e).finalize(i);n.reset();for(var g=h.words,d=g.length,B=h,f=1;f<u;f++){B=n.finalize(B),n.reset();for(var w=B.words,p=0;p<d;p++)g[p]^=w[p]}o.concat(h),c[0]++}return o.sigBytes=4*l,o}}),e.PBKDF2=function(A,e,t){return a.create(t).compute(A,e)},c.PBKDF2)}(kr)),Rr(),Vr(),Wr(),Jr(),Zr(),qr(),Ao||(Ao=1,function(A){var e,t;A.exports=(t=Yn(),Vr(),t.mode.ECB=((e=t.lib.BlockCipherMode.extend()).Encryptor=e.extend({processBlock:function(A,e){this._cipher.encryptBlock(A,e)}}),e.Decryptor=e.extend({processBlock:function(A,e){this._cipher.decryptBlock(A,e)}}),e),t.mode.ECB)}(eo)),to||(to=1,function(A){var e;A.exports=(e=Yn(),Vr(),e.pad.AnsiX923={pad:function(A,e){var t=A.sigBytes,n=4*e,r=n-t%n,o=t+r-1;A.clamp(),A.words[o>>>2]|=r<<24-o%4*8,A.sigBytes+=r},unpad:function(A){var e=255&A.words[A.sigBytes-1>>>2];A.sigBytes-=e}},e.pad.Ansix923)}(no)),ro||(ro=1,function(A){var e;A.exports=(e=Yn(),Vr(),e.pad.Iso10126={pad:function(A,t){var n=4*t,r=n-A.sigBytes%n;A.concat(e.lib.WordArray.random(r-1)).concat(e.lib.WordArray.create([r<<24],1))},unpad:function(A){var e=255&A.words[A.sigBytes-1>>>2];A.sigBytes-=e}},e.pad.Iso10126)}(oo)),io||(io=1,function(A){var e;A.exports=(e=Yn(),Vr(),e.pad.Iso97971={pad:function(A,t){A.concat(e.lib.WordArray.create([2147483648],1)),e.pad.ZeroPadding.pad(A,t)},unpad:function(A){e.pad.ZeroPadding.unpad(A),A.sigBytes--}},e.pad.Iso97971)}(so)),ao||(ao=1,function(A){var e;A.exports=(e=Yn(),Vr(),e.pad.ZeroPadding={pad:function(A,e){var t=4*e;A.clamp(),A.sigBytes+=t-(A.sigBytes%t||t)},unpad:function(A){var e=A.words,t=A.sigBytes-1;for(t=A.sigBytes-1;t>=0;t--)if(e[t>>>2]>>>24-t%4*8&255){A.sigBytes=t+1;break}}},e.pad.ZeroPadding)}(co)),lo||(lo=1,function(A){var e;A.exports=(e=Yn(),Vr(),e.pad.NoPadding={pad:function(){},unpad:function(){}},e.pad.NoPadding)}(uo)),ho||(ho=1,function(A){var e,t,n,r;A.exports=(r=Yn(),Vr(),t=(e=r).lib.CipherParams,n=e.enc.Hex,e.format.Hex={stringify:function(A){return A.ciphertext.toString(n)},parse:function(A){var e=n.parse(A);return t.create({ciphertext:e})}},r.format.Hex)}(go)),Bo||(Bo=1,function(A){var e;A.exports=(e=Yn(),ir(),hr(),Rr(),Vr(),function(){var A=e,t=A.lib.BlockCipher,n=A.algo,r=[],o=[],i=[],s=[],a=[],c=[],l=[],u=[],h=[],g=[];!function(){for(var A=[],e=0;e<256;e++)A[e]=e<128?e<<1:e<<1^283;var t=0,n=0;for(e=0;e<256;e++){var d=n^n<<1^n<<2^n<<3^n<<4;d=d>>>8^255&d^99,r[t]=d,o[d]=t;var B=A[t],f=A[B],w=A[f],p=257*A[d]^16843008*d;i[t]=p<<24|p>>>8,s[t]=p<<16|p>>>16,a[t]=p<<8|p>>>24,c[t]=p,p=16843009*w^65537*f^257*B^16843008*t,l[d]=p<<24|p>>>8,u[d]=p<<16|p>>>16,h[d]=p<<8|p>>>24,g[d]=p,t?(t=B^A[A[A[w^B]]],n^=A[A[n]]):t=n=1}}();var d=[0,1,2,4,8,16,32,64,128,27,54],B=n.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var A=this._keyPriorReset=this._key,e=A.words,t=A.sigBytes/4,n=4*((this._nRounds=t+6)+1),o=this._keySchedule=[],i=0;i<n;i++)i<t?o[i]=e[i]:(c=o[i-1],i%t?t>6&&i%t==4&&(c=r[c>>>24]<<24|r[c>>>16&255]<<16|r[c>>>8&255]<<8|r[255&c]):(c=r[(c=c<<8|c>>>24)>>>24]<<24|r[c>>>16&255]<<16|r[c>>>8&255]<<8|r[255&c],c^=d[i/t|0]<<24),o[i]=o[i-t]^c);for(var s=this._invKeySchedule=[],a=0;a<n;a++){if(i=n-a,a%4)var c=o[i];else c=o[i-4];s[a]=a<4||i<=4?c:l[r[c>>>24]]^u[r[c>>>16&255]]^h[r[c>>>8&255]]^g[r[255&c]]}}},encryptBlock:function(A,e){this._doCryptBlock(A,e,this._keySchedule,i,s,a,c,r)},decryptBlock:function(A,e){var t=A[e+1];A[e+1]=A[e+3],A[e+3]=t,this._doCryptBlock(A,e,this._invKeySchedule,l,u,h,g,o),t=A[e+1],A[e+1]=A[e+3],A[e+3]=t},_doCryptBlock:function(A,e,t,n,r,o,i,s){for(var a=this._nRounds,c=A[e]^t[0],l=A[e+1]^t[1],u=A[e+2]^t[2],h=A[e+3]^t[3],g=4,d=1;d<a;d++){var B=n[c>>>24]^r[l>>>16&255]^o[u>>>8&255]^i[255&h]^t[g++],f=n[l>>>24]^r[u>>>16&255]^o[h>>>8&255]^i[255&c]^t[g++],w=n[u>>>24]^r[h>>>16&255]^o[c>>>8&255]^i[255&l]^t[g++],p=n[h>>>24]^r[c>>>16&255]^o[l>>>8&255]^i[255&u]^t[g++];c=B,l=f,u=w,h=p}B=(s[c>>>24]<<24|s[l>>>16&255]<<16|s[u>>>8&255]<<8|s[255&h])^t[g++],f=(s[l>>>24]<<24|s[u>>>16&255]<<16|s[h>>>8&255]<<8|s[255&c])^t[g++],w=(s[u>>>24]<<24|s[h>>>16&255]<<16|s[c>>>8&255]<<8|s[255&l])^t[g++],p=(s[h>>>24]<<24|s[c>>>16&255]<<16|s[l>>>8&255]<<8|s[255&u])^t[g++],A[e]=B,A[e+1]=f,A[e+2]=w,A[e+3]=p},keySize:8});A.AES=t._createHelper(B)}(),e.AES)}(fo)),mo(),Co||(Co=1,function(A){var e;A.exports=(e=Yn(),ir(),hr(),Rr(),Vr(),function(){var A=e,t=A.lib.StreamCipher,n=A.algo,r=n.RC4=t.extend({_doReset:function(){for(var A=this._key,e=A.words,t=A.sigBytes,n=this._S=[],r=0;r<256;r++)n[r]=r;r=0;for(var o=0;r<256;r++){var i=r%t,s=e[i>>>2]>>>24-i%4*8&255;o=(o+n[r]+s)%256;var a=n[r];n[r]=n[o],n[o]=a}this._i=this._j=0},_doProcessBlock:function(A,e){A[e]^=o.call(this)},keySize:8,ivSize:0});function o(){for(var A=this._S,e=this._i,t=this._j,n=0,r=0;r<4;r++){t=(t+A[e=(e+1)%256])%256;var o=A[e];A[e]=A[t],A[t]=o,n|=A[(A[e]+A[t])%256]<<24-8*r}return this._i=e,this._j=t,n}A.RC4=t._createHelper(r);var i=n.RC4Drop=r.extend({cfg:r.cfg.extend({drop:192}),_doReset:function(){r._doReset.call(this);for(var A=this.cfg.drop;A>0;A--)o.call(this)}});A.RC4Drop=t._createHelper(i)}(),e.RC4)}(Qo)),yo||(yo=1,function(A){var e;A.exports=(e=Yn(),ir(),hr(),Rr(),Vr(),function(){var A=e,t=A.lib.StreamCipher,n=A.algo,r=[],o=[],i=[],s=n.Rabbit=t.extend({_doReset:function(){for(var A=this._key.words,e=this.cfg.iv,t=0;t<4;t++)A[t]=16711935&(A[t]<<8|A[t]>>>24)|4278255360&(A[t]<<24|A[t]>>>8);var n=this._X=[A[0],A[3]<<16|A[2]>>>16,A[1],A[0]<<16|A[3]>>>16,A[2],A[1]<<16|A[0]>>>16,A[3],A[2]<<16|A[1]>>>16],r=this._C=[A[2]<<16|A[2]>>>16,4294901760&A[0]|65535&A[1],A[3]<<16|A[3]>>>16,4294901760&A[1]|65535&A[2],A[0]<<16|A[0]>>>16,4294901760&A[2]|65535&A[3],A[1]<<16|A[1]>>>16,4294901760&A[3]|65535&A[0]];for(this._b=0,t=0;t<4;t++)a.call(this);for(t=0;t<8;t++)r[t]^=n[t+4&7];if(e){var o=e.words,i=o[0],s=o[1],c=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8),l=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),u=c>>>16|4294901760&l,h=l<<16|65535&c;for(r[0]^=c,r[1]^=u,r[2]^=l,r[3]^=h,r[4]^=c,r[5]^=u,r[6]^=l,r[7]^=h,t=0;t<4;t++)a.call(this)}},_doProcessBlock:function(A,e){var t=this._X;a.call(this),r[0]=t[0]^t[5]>>>16^t[3]<<16,r[1]=t[2]^t[7]>>>16^t[5]<<16,r[2]=t[4]^t[1]>>>16^t[7]<<16,r[3]=t[6]^t[3]>>>16^t[1]<<16;for(var n=0;n<4;n++)r[n]=16711935&(r[n]<<8|r[n]>>>24)|4278255360&(r[n]<<24|r[n]>>>8),A[e+n]^=r[n]},blockSize:4,ivSize:2});function a(){for(var A=this._X,e=this._C,t=0;t<8;t++)o[t]=e[t];for(e[0]=e[0]+1295307597+this._b|0,e[1]=e[1]+3545052371+(e[0]>>>0<o[0]>>>0?1:0)|0,e[2]=e[2]+886263092+(e[1]>>>0<o[1]>>>0?1:0)|0,e[3]=e[3]+1295307597+(e[2]>>>0<o[2]>>>0?1:0)|0,e[4]=e[4]+3545052371+(e[3]>>>0<o[3]>>>0?1:0)|0,e[5]=e[5]+886263092+(e[4]>>>0<o[4]>>>0?1:0)|0,e[6]=e[6]+1295307597+(e[5]>>>0<o[5]>>>0?1:0)|0,e[7]=e[7]+3545052371+(e[6]>>>0<o[6]>>>0?1:0)|0,this._b=e[7]>>>0<o[7]>>>0?1:0,t=0;t<8;t++){var n=A[t]+e[t],r=65535&n,s=n>>>16,a=((r*r>>>17)+r*s>>>15)+s*s,c=((4294901760&n)*n|0)+((65535&n)*n|0);i[t]=a^c}A[0]=i[0]+(i[7]<<16|i[7]>>>16)+(i[6]<<16|i[6]>>>16)|0,A[1]=i[1]+(i[0]<<8|i[0]>>>24)+i[7]|0,A[2]=i[2]+(i[1]<<16|i[1]>>>16)+(i[0]<<16|i[0]>>>16)|0,A[3]=i[3]+(i[2]<<8|i[2]>>>24)+i[1]|0,A[4]=i[4]+(i[3]<<16|i[3]>>>16)+(i[2]<<16|i[2]>>>16)|0,A[5]=i[5]+(i[4]<<8|i[4]>>>24)+i[3]|0,A[6]=i[6]+(i[5]<<16|i[5]>>>16)+(i[4]<<16|i[4]>>>16)|0,A[7]=i[7]+(i[6]<<8|i[6]>>>24)+i[5]|0}A.Rabbit=t._createHelper(s)}(),e.Rabbit)}(Uo)),Fo||(Fo=1,function(A){var e;A.exports=(e=Yn(),ir(),hr(),Rr(),Vr(),function(){var A=e,t=A.lib.StreamCipher,n=A.algo,r=[],o=[],i=[],s=n.RabbitLegacy=t.extend({_doReset:function(){var A=this._key.words,e=this.cfg.iv,t=this._X=[A[0],A[3]<<16|A[2]>>>16,A[1],A[0]<<16|A[3]>>>16,A[2],A[1]<<16|A[0]>>>16,A[3],A[2]<<16|A[1]>>>16],n=this._C=[A[2]<<16|A[2]>>>16,4294901760&A[0]|65535&A[1],A[3]<<16|A[3]>>>16,4294901760&A[1]|65535&A[2],A[0]<<16|A[0]>>>16,4294901760&A[2]|65535&A[3],A[1]<<16|A[1]>>>16,4294901760&A[3]|65535&A[0]];this._b=0;for(var r=0;r<4;r++)a.call(this);for(r=0;r<8;r++)n[r]^=t[r+4&7];if(e){var o=e.words,i=o[0],s=o[1],c=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8),l=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),u=c>>>16|4294901760&l,h=l<<16|65535&c;for(n[0]^=c,n[1]^=u,n[2]^=l,n[3]^=h,n[4]^=c,n[5]^=u,n[6]^=l,n[7]^=h,r=0;r<4;r++)a.call(this)}},_doProcessBlock:function(A,e){var t=this._X;a.call(this),r[0]=t[0]^t[5]>>>16^t[3]<<16,r[1]=t[2]^t[7]>>>16^t[5]<<16,r[2]=t[4]^t[1]>>>16^t[7]<<16,r[3]=t[6]^t[3]>>>16^t[1]<<16;for(var n=0;n<4;n++)r[n]=16711935&(r[n]<<8|r[n]>>>24)|4278255360&(r[n]<<24|r[n]>>>8),A[e+n]^=r[n]},blockSize:4,ivSize:2});function a(){for(var A=this._X,e=this._C,t=0;t<8;t++)o[t]=e[t];for(e[0]=e[0]+1295307597+this._b|0,e[1]=e[1]+3545052371+(e[0]>>>0<o[0]>>>0?1:0)|0,e[2]=e[2]+886263092+(e[1]>>>0<o[1]>>>0?1:0)|0,e[3]=e[3]+1295307597+(e[2]>>>0<o[2]>>>0?1:0)|0,e[4]=e[4]+3545052371+(e[3]>>>0<o[3]>>>0?1:0)|0,e[5]=e[5]+886263092+(e[4]>>>0<o[4]>>>0?1:0)|0,e[6]=e[6]+1295307597+(e[5]>>>0<o[5]>>>0?1:0)|0,e[7]=e[7]+3545052371+(e[6]>>>0<o[6]>>>0?1:0)|0,this._b=e[7]>>>0<o[7]>>>0?1:0,t=0;t<8;t++){var n=A[t]+e[t],r=65535&n,s=n>>>16,a=((r*r>>>17)+r*s>>>15)+s*s,c=((4294901760&n)*n|0)+((65535&n)*n|0);i[t]=a^c}A[0]=i[0]+(i[7]<<16|i[7]>>>16)+(i[6]<<16|i[6]>>>16)|0,A[1]=i[1]+(i[0]<<8|i[0]>>>24)+i[7]|0,A[2]=i[2]+(i[1]<<16|i[1]>>>16)+(i[0]<<16|i[0]>>>16)|0,A[3]=i[3]+(i[2]<<8|i[2]>>>24)+i[1]|0,A[4]=i[4]+(i[3]<<16|i[3]>>>16)+(i[2]<<16|i[2]>>>16)|0,A[5]=i[5]+(i[4]<<8|i[4]>>>24)+i[3]|0,A[6]=i[6]+(i[5]<<16|i[5]>>>16)+(i[4]<<16|i[4]>>>16)|0,A[7]=i[7]+(i[6]<<8|i[6]>>>24)+i[5]|0}A.RabbitLegacy=t._createHelper(s)}(),e.RabbitLegacy)}(bo)),Ho(),e)}(Wn);var Io=Wn.exports;class xo{constructor(){this.iconManager=null,this.screenshotManager=null,this.config=null,this.isInitialized=!1,this.isInitializing=!1,this.initResult=null,this.debug=!1,this.lastIconConfig=null}async init(A,t,n=!1){if(this.isInitializing)throw new Error("SDK is already initializing. Please wait for the current initialization to complete.");if(this.isInitialized&&!n){if(this.debug&&console.warn("CustomerSDK already initialized, returning cached result. Use forceReinit=true to reinitialize."),this.initResult)return this.initResult;throw new Error("SDK already initialized but cannot retrieve initialization info")}this.isInitializing=!0,this.isInitialized&&n&&(this.debug&&console.log("Force reinitializing SDK..."),this.screenshotManager?.destroy(),this.screenshotManager=null,this.isInitialized=!1),this.config=A,this.debug=A.debug??!1;try{const t=await this.getDeviceId();this.debug&&console.log("Raw Device ID:",t);const n=this.getReferrer(A),r=Io.MD5(t+n).toString();this.debug&&(console.log("Raw Device ID:",t),console.log("MD5 Device ID (for frontend):",r),console.log("Referrer used:",n));const o={deviceId:r,referrer:n,agent:A.agent,timestamp:Date.now()},i=A.iconPosition??this.lastIconConfig?.position,s=A.target??this.lastIconConfig?.target;if(this.isIconConfigChanged(i,s)?(this.iconManager&&(this.iconManager.hide(),this.iconManager=null,this.debug&&console.log("Icon config changed, recreating icon manager")),this.iconManager=new e(i,this.debug,s,{sideAttach:A.sideAttach??!0,sideHideRatio:A.sideHideRatio??.5,magnetic:A.magnetic??!0,magneticDirection:A.magneticDirection??"x",margin:A.margin??10,autoAttachDelay:A.autoAttachDelay??3e3}),await this.iconManager.show(),this.lastIconConfig={position:i,target:s}):(this.iconManager?(await this.iconManager.show(),this.debug&&console.log("Icon config unchanged, keeping existing icon manager")):(this.iconManager=new e(i,this.debug,s,{sideAttach:A.sideAttach??!0,sideHideRatio:A.sideHideRatio??.5,magnetic:A.magnetic??!0,magneticDirection:A.magneticDirection??"x",margin:A.margin??10,autoAttachDelay:A.autoAttachDelay??3e3}),await this.iconManager.show()),this.lastIconConfig={position:i,target:s}),this.iconManager.onClick(()=>{this.clearNotification()}),A.screenshot){const e=document.body,t={...A.screenshot,debug:this.debug};this.screenshotManager=new dt(e,t,void 0),this.screenshotManager.enable(!0),this.debug&&console.log("CustomerSDK screenshot manager initialized and enabled")}return this.isInitialized=!0,this.initResult=o,this.debug&&console.log("CustomerSDK initialized successfully (icon + screenshot only)"),o}catch(A){console.error("Failed to initialize CustomerSDK:",A);try{this.iconManager&&(this.iconManager.hide(),this.iconManager=null),this.screenshotManager&&(this.screenshotManager.destroy(),this.screenshotManager=null),this.isInitialized=!1,this.initResult=null}catch(A){console.error("Error during cleanup after initialization failure:",A)}throw A}finally{this.isInitializing=!1}}showIcon(){this.iconManager?.show()}hideIcon(){this.iconManager?.hide()}setIconPosition(A){this.iconManager?.setPosition(A)}setIconCoordinates(A){this.iconManager?.setIconPosition(A)}setIconStyle(A){this.iconManager?.setStyle(A)}onIconClick(A){this.iconManager?.onClick(A)}getConnectionStatus(){return this.isInitialized}showNotification(A=1,e={}){this.iconManager?(this.iconManager.showNotification({badgeCount:"string"==typeof A?0:A,badgeText:"string"==typeof A?A:"",pulse:e.pulse||!1}),e.autoHide&&e.autoHide>0&&setTimeout(()=>{this.iconManager?.clearNotification()},e.autoHide)):this.debug&&console.warn("SDK not initialized")}clearNotification(){this.iconManager?.clearNotification()}setScreenshotTarget(A){this.screenshotManager?.setTargetElement(A)}async captureScreenshot(A=!1){return this.screenshotManager?await this.screenshotManager.captureOnce(A):(this.debug&&console.warn("截图功能未启用"),!1)}enableScreenshot(A){this.screenshotManager?(this.screenshotManager.enable(A),this.debug&&console.log("📸 截图功能已"+(A?"启用":"禁用"))):this.debug&&console.warn("截图管理器未初始化")}getScreenshotState(){return this.screenshotManager?.getState()||null}updateScreenshotOptions(A){this.screenshotManager?(this.screenshotManager.updateOptions(A),this.debug&&console.log("📸 截图配置已更新:",A)):this.debug&&console.warn("截图管理器未初始化,无法更新配置")}destroy(){this.iconManager?.hide(),this.screenshotManager?.destroy(),this.iconManager=null,this.screenshotManager=null,this.config=null,this.initResult=null,this.lastIconConfig=null,this.isInitialized=!1,this.debug&&console.log("CustomerSDK destroyed")}getInitResult(){return this.initResult}async getDeviceId(){this.debug&&console.log("🔍 Starting to get device fingerprint...");try{this.debug&&console.log("📦 Loading FingerprintJS...");const A=await Gn.load();this.debug&&console.log("🎯 Getting device fingerprint...");const e=await A.get();return this.debug&&(console.log("✅ FingerprintJS result:",e),console.log("🆔 Device ID obtained:",e.visitorId)),e.visitorId}catch(A){this.debug&&console.warn("❌ Failed to get device fingerprint, using fallback:",A);const e="device_"+Date.now()+"_"+Math.random().toString(36).substr(2,9);return this.debug&&console.log("🆔 Fallback Device ID:",e),e}}isIconConfigChanged(A,e){if(!this.lastIconConfig)return!0;const t=JSON.stringify(this.lastIconConfig.position)!==JSON.stringify(A),n=this.lastIconConfig.target;let r=!1;return n!==e&&(r="string"==typeof n&&"string"==typeof e?n!==e:(n instanceof HTMLElement&&HTMLElement,!0)),t||r}getReferrer(A){return A.referrer||document.referrer||document.location.href}}let So=null;const Lo=async(A,e,t=!1)=>(So||(So=new xo),await So.init(A,e,t)),Do=()=>{if(!So)throw new Error("SDK not initialized. Call init() first.");return So},Mo=()=>{Do().showIcon()},ko=()=>{Do().hideIcon()},Ko=A=>{Do().setIconPosition(A)},To=A=>{Do().setIconCoordinates(A)},Ro=A=>{Do().setIconStyle(A)},Po=A=>{Do().onIconClick(A)},Oo=()=>Do().getConnectionStatus(),Vo=()=>Do().getInitResult(),No=(A=1,e={})=>{Do().showNotification(A,e)},Go=()=>{Do().clearNotification()},Wo=()=>{Do().destroy(),So=null},_o=A=>{Do().setScreenshotTarget(A)},Xo=async(A=!1)=>{const e=Do();return await e.captureScreenshot(A)},Jo=A=>{Do().enableScreenshot(A)},Yo=()=>Do().getScreenshotState(),$o=A=>{Do().updateScreenshotOptions(A)};var Zo={init:Lo,getInstance:Do,getInitResult:Vo,showIcon:Mo,hideIcon:ko,setIconPosition:Ko,setIconCoordinates:To,setIconStyle:Ro,onIconClick:Po,getConnectionStatus:Oo,showNotification:No,clearNotification:Go,setScreenshotTarget:_o,captureScreenshot:Xo,enableScreenshot:Jo,getScreenshotState:Yo,updateScreenshotOptions:$o,destroy:Wo};A.CustomerSDK=class{constructor(){this.iconManager=null,this.screenshotManager=null,this.debug=!1,this.deviceId=null,this.initResult=null,this.config=null,this.screenshotCallback=null,this.initCallback=null}async init(A,t,n){try{this.config=A,this.screenshotCallback=t||null,this.initCallback=n||null,this.debug=A.debug??!1;const r=await this.getRawDeviceId();this.debug&&console.log("Raw Device ID:",r);const o=A.referrer||document.referrer||document.location.href;this.deviceId=Io.MD5(r+o).toString(),this.debug&&(console.log("MD5 Device ID (for frontend):",this.deviceId),console.log("Referrer used:",o));const i={deviceId:this.deviceId,referrer:o,agent:A.agent,timestamp:Date.now()},s=A.target||void 0,a=A.iconPosition||void 0;if(this.iconManager=new e(a,this.debug,s,{sideAttach:A.sideAttach,sideHideRatio:A.sideHideRatio,magnetic:A.magnetic,magneticDirection:A.magneticDirection,margin:A.margin,autoAttachDelay:A.autoAttachDelay}),await this.iconManager.show(),n?.onIconClick&&this.iconManager.onClick(n.onIconClick),A.screenshot){const e="string"==typeof s?document.querySelector(s):s||document.body,n=t?.sendData||null;this.screenshotManager=new dt(e,A.screenshot,n||void 0),t?.onConfig&&this.setupScreenshotConfigListener(t.onConfig)}return this.initResult=i,this.debug&&console.log("CustomerSDK initialized successfully (icon + screenshot only)"),i}catch(A){throw console.error("Failed to initialize CustomerSDK:",A),A}}setupScreenshotConfigListener(A){const e=e=>{try{if(!e.data||"checkScreenshot"!==e.data.type)return;this.debug&&console.log("[CustomerSDK] Received screenshot config message:",e.data),e.data.data&&"string"==typeof e.data.data&&A(e.data.data)}catch(A){this.debug&&console.error("[CustomerSDK] Error handling screenshot config message:",A)}};window.addEventListener("message",e),this._screenshotConfigHandler=e}triggerScreenshotConfig(A){this.screenshotManager?this.screenshotManager.handleScreenshotConfig(A):this.debug&&console.warn("[CustomerSDK] ScreenshotManager not initialized")}hideIcon(){this.iconManager?.hide()}showIcon(){this.iconManager?.show()}onIconClick(A){this.iconManager?.onClick(A)}getScreenshotManager(){return this.screenshotManager}getIconManager(){return this.iconManager}getDeviceId(){return this.deviceId}getInitResult(){return this.initResult}async updateToken(A,e,t){if(!this.config)throw new Error("SDK not initialized. Call init() first.");this.debug&&console.log("Updating token:",A?"Token provided":"Token removed");const n={...this.config,token:A&&""!==A.trim()?A:void 0};return this.destroy(),await this.init(n,e||this.screenshotCallback||void 0,t||this.initCallback||void 0)}async getRawDeviceId(){this.debug&&console.log("🔍 Starting to get device fingerprint...");try{this.debug&&console.log("📦 Loading FingerprintJS...");const A=await Gn.load();this.debug&&console.log("🎯 Getting device fingerprint...");const e=await A.get();return this.debug&&(console.log("✅ FingerprintJS result:",e),console.log("🆔 Device ID obtained:",e.visitorId)),e.visitorId}catch(A){this.debug&&console.warn("❌ Failed to get device fingerprint, using fallback:",A);const e="device_"+Date.now()+"_"+Math.random().toString(36).substr(2,9);return this.debug&&console.log("🆔 Fallback Device ID:",e),e}}showNotification(A=1,e={}){this.iconManager?(this.iconManager.showNotification({badgeCount:"string"==typeof A?0:A,badgeText:"string"==typeof A?A:"",pulse:e.pulse||!1}),e.autoHide&&e.autoHide>0&&setTimeout(()=>{this.iconManager?.clearNotification()},e.autoHide)):this.debug&&console.warn("SDK not initialized")}clearNotification(){this.iconManager?.clearNotification()}destroy(){this.iconManager?.hide(),this.screenshotManager?.destroy(),this._screenshotConfigHandler&&(window.removeEventListener("message",this._screenshotConfigHandler),this._screenshotConfigHandler=null),this.iconManager=null,this.screenshotManager=null,this.initResult=null,this.deviceId=null,this.debug&&console.log("CustomerSDK destroyed")}},A.CustomerServiceSDK=xo,A.captureScreenshot=Xo,A.clearNotification=Go,A.default=Zo,A.destroy=Wo,A.enableScreenshot=Jo,A.getConnectionStatus=Oo,A.getInitResult=Vo,A.getInstance=Do,A.getScreenshotState=Yo,A.hideIcon=ko,A.init=Lo,A.onIconClick=Po,A.setIconCoordinates=To,A.setIconPosition=Ko,A.setIconStyle=Ro,A.setScreenshotTarget=_o,A.showIcon=Mo,A.showNotification=No,A.updateScreenshotOptions=$o,Object.defineProperty(A,"__esModule",{value:!0})});
38
+ function(){var A=e,t=A.lib,n=t.WordArray,r=t.Hasher,o=A.algo,i=n.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),s=n.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),a=n.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),c=n.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),l=n.create([0,1518500249,1859775393,2400959708,2840853838]),u=n.create([1352829926,1548603684,1836072691,2053994217,0]),h=o.RIPEMD160=r.extend({_doReset:function(){this._hash=n.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(A,e){for(var t=0;t<16;t++){var n=e+t,r=A[n];A[n]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8)}var o,h,m,C,Q,y,U,F,b,v,E,H=this._hash.words,I=l.words,x=u.words,S=i.words,L=s.words,D=a.words,M=c.words;for(y=o=H[0],U=h=H[1],F=m=H[2],b=C=H[3],v=Q=H[4],t=0;t<80;t+=1)E=o+A[e+S[t]]|0,E+=t<16?g(h,m,C)+I[0]:t<32?d(h,m,C)+I[1]:t<48?B(h,m,C)+I[2]:t<64?f(h,m,C)+I[3]:w(h,m,C)+I[4],E=(E=p(E|=0,D[t]))+Q|0,o=Q,Q=C,C=p(m,10),m=h,h=E,E=y+A[e+L[t]]|0,E+=t<16?w(U,F,b)+x[0]:t<32?f(U,F,b)+x[1]:t<48?B(U,F,b)+x[2]:t<64?d(U,F,b)+x[3]:g(U,F,b)+x[4],E=(E=p(E|=0,M[t]))+v|0,y=v,v=b,b=p(F,10),F=U,U=E;E=H[1]+m+b|0,H[1]=H[2]+C+v|0,H[2]=H[3]+Q+y|0,H[3]=H[4]+o+U|0,H[4]=H[0]+h+F|0,H[0]=E},_doFinalize:function(){var A=this._data,e=A.words,t=8*this._nDataBytes,n=8*A.sigBytes;e[n>>>5]|=128<<24-n%32,e[14+(n+64>>>9<<4)]=16711935&(t<<8|t>>>24)|4278255360&(t<<24|t>>>8),A.sigBytes=4*(e.length+1),this._process();for(var r=this._hash,o=r.words,i=0;i<5;i++){var s=o[i];o[i]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8)}return r},clone:function(){var A=r.clone.call(this);return A._hash=this._hash.clone(),A}});function g(A,e,t){return A^e^t}function d(A,e,t){return A&e|~A&t}function B(A,e,t){return(A|~e)^t}function f(A,e,t){return A&t|e&~t}function w(A,e,t){return A^(e|~t)}function p(A,e){return A<<e|A>>>32-e}A.RIPEMD160=r._createHelper(h),A.HmacRIPEMD160=r._createHmacHelper(h)}(),e.RIPEMD160)}(xr)),Dr(),Mr||(Mr=1,function(A){var e,t,n,r,o,i,s,a,c;A.exports=(c=Yn(),pr(),Dr(),n=(t=(e=c).lib).Base,r=t.WordArray,i=(o=e.algo).SHA256,s=o.HMAC,a=o.PBKDF2=n.extend({cfg:n.extend({keySize:4,hasher:i,iterations:25e4}),init:function(A){this.cfg=this.cfg.extend(A)},compute:function(A,e){for(var t=this.cfg,n=s.create(t.hasher,A),o=r.create(),i=r.create([1]),a=o.words,c=i.words,l=t.keySize,u=t.iterations;a.length<l;){var h=n.update(e).finalize(i);n.reset();for(var g=h.words,d=g.length,B=h,f=1;f<u;f++){B=n.finalize(B),n.reset();for(var w=B.words,p=0;p<d;p++)g[p]^=w[p]}o.concat(h),c[0]++}return o.sigBytes=4*l,o}}),e.PBKDF2=function(A,e,t){return a.create(t).compute(A,e)},c.PBKDF2)}(kr)),Rr(),Vr(),Wr(),Jr(),Zr(),qr(),Ao||(Ao=1,function(A){var e,t;A.exports=(t=Yn(),Vr(),t.mode.ECB=((e=t.lib.BlockCipherMode.extend()).Encryptor=e.extend({processBlock:function(A,e){this._cipher.encryptBlock(A,e)}}),e.Decryptor=e.extend({processBlock:function(A,e){this._cipher.decryptBlock(A,e)}}),e),t.mode.ECB)}(eo)),to||(to=1,function(A){var e;A.exports=(e=Yn(),Vr(),e.pad.AnsiX923={pad:function(A,e){var t=A.sigBytes,n=4*e,r=n-t%n,o=t+r-1;A.clamp(),A.words[o>>>2]|=r<<24-o%4*8,A.sigBytes+=r},unpad:function(A){var e=255&A.words[A.sigBytes-1>>>2];A.sigBytes-=e}},e.pad.Ansix923)}(no)),ro||(ro=1,function(A){var e;A.exports=(e=Yn(),Vr(),e.pad.Iso10126={pad:function(A,t){var n=4*t,r=n-A.sigBytes%n;A.concat(e.lib.WordArray.random(r-1)).concat(e.lib.WordArray.create([r<<24],1))},unpad:function(A){var e=255&A.words[A.sigBytes-1>>>2];A.sigBytes-=e}},e.pad.Iso10126)}(oo)),io||(io=1,function(A){var e;A.exports=(e=Yn(),Vr(),e.pad.Iso97971={pad:function(A,t){A.concat(e.lib.WordArray.create([2147483648],1)),e.pad.ZeroPadding.pad(A,t)},unpad:function(A){e.pad.ZeroPadding.unpad(A),A.sigBytes--}},e.pad.Iso97971)}(so)),ao||(ao=1,function(A){var e;A.exports=(e=Yn(),Vr(),e.pad.ZeroPadding={pad:function(A,e){var t=4*e;A.clamp(),A.sigBytes+=t-(A.sigBytes%t||t)},unpad:function(A){var e=A.words,t=A.sigBytes-1;for(t=A.sigBytes-1;t>=0;t--)if(e[t>>>2]>>>24-t%4*8&255){A.sigBytes=t+1;break}}},e.pad.ZeroPadding)}(co)),lo||(lo=1,function(A){var e;A.exports=(e=Yn(),Vr(),e.pad.NoPadding={pad:function(){},unpad:function(){}},e.pad.NoPadding)}(uo)),ho||(ho=1,function(A){var e,t,n,r;A.exports=(r=Yn(),Vr(),t=(e=r).lib.CipherParams,n=e.enc.Hex,e.format.Hex={stringify:function(A){return A.ciphertext.toString(n)},parse:function(A){var e=n.parse(A);return t.create({ciphertext:e})}},r.format.Hex)}(go)),Bo||(Bo=1,function(A){var e;A.exports=(e=Yn(),ir(),hr(),Rr(),Vr(),function(){var A=e,t=A.lib.BlockCipher,n=A.algo,r=[],o=[],i=[],s=[],a=[],c=[],l=[],u=[],h=[],g=[];!function(){for(var A=[],e=0;e<256;e++)A[e]=e<128?e<<1:e<<1^283;var t=0,n=0;for(e=0;e<256;e++){var d=n^n<<1^n<<2^n<<3^n<<4;d=d>>>8^255&d^99,r[t]=d,o[d]=t;var B=A[t],f=A[B],w=A[f],p=257*A[d]^16843008*d;i[t]=p<<24|p>>>8,s[t]=p<<16|p>>>16,a[t]=p<<8|p>>>24,c[t]=p,p=16843009*w^65537*f^257*B^16843008*t,l[d]=p<<24|p>>>8,u[d]=p<<16|p>>>16,h[d]=p<<8|p>>>24,g[d]=p,t?(t=B^A[A[A[w^B]]],n^=A[A[n]]):t=n=1}}();var d=[0,1,2,4,8,16,32,64,128,27,54],B=n.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var A=this._keyPriorReset=this._key,e=A.words,t=A.sigBytes/4,n=4*((this._nRounds=t+6)+1),o=this._keySchedule=[],i=0;i<n;i++)i<t?o[i]=e[i]:(c=o[i-1],i%t?t>6&&i%t==4&&(c=r[c>>>24]<<24|r[c>>>16&255]<<16|r[c>>>8&255]<<8|r[255&c]):(c=r[(c=c<<8|c>>>24)>>>24]<<24|r[c>>>16&255]<<16|r[c>>>8&255]<<8|r[255&c],c^=d[i/t|0]<<24),o[i]=o[i-t]^c);for(var s=this._invKeySchedule=[],a=0;a<n;a++){if(i=n-a,a%4)var c=o[i];else c=o[i-4];s[a]=a<4||i<=4?c:l[r[c>>>24]]^u[r[c>>>16&255]]^h[r[c>>>8&255]]^g[r[255&c]]}}},encryptBlock:function(A,e){this._doCryptBlock(A,e,this._keySchedule,i,s,a,c,r)},decryptBlock:function(A,e){var t=A[e+1];A[e+1]=A[e+3],A[e+3]=t,this._doCryptBlock(A,e,this._invKeySchedule,l,u,h,g,o),t=A[e+1],A[e+1]=A[e+3],A[e+3]=t},_doCryptBlock:function(A,e,t,n,r,o,i,s){for(var a=this._nRounds,c=A[e]^t[0],l=A[e+1]^t[1],u=A[e+2]^t[2],h=A[e+3]^t[3],g=4,d=1;d<a;d++){var B=n[c>>>24]^r[l>>>16&255]^o[u>>>8&255]^i[255&h]^t[g++],f=n[l>>>24]^r[u>>>16&255]^o[h>>>8&255]^i[255&c]^t[g++],w=n[u>>>24]^r[h>>>16&255]^o[c>>>8&255]^i[255&l]^t[g++],p=n[h>>>24]^r[c>>>16&255]^o[l>>>8&255]^i[255&u]^t[g++];c=B,l=f,u=w,h=p}B=(s[c>>>24]<<24|s[l>>>16&255]<<16|s[u>>>8&255]<<8|s[255&h])^t[g++],f=(s[l>>>24]<<24|s[u>>>16&255]<<16|s[h>>>8&255]<<8|s[255&c])^t[g++],w=(s[u>>>24]<<24|s[h>>>16&255]<<16|s[c>>>8&255]<<8|s[255&l])^t[g++],p=(s[h>>>24]<<24|s[c>>>16&255]<<16|s[l>>>8&255]<<8|s[255&u])^t[g++],A[e]=B,A[e+1]=f,A[e+2]=w,A[e+3]=p},keySize:8});A.AES=t._createHelper(B)}(),e.AES)}(fo)),mo(),Co||(Co=1,function(A){var e;A.exports=(e=Yn(),ir(),hr(),Rr(),Vr(),function(){var A=e,t=A.lib.StreamCipher,n=A.algo,r=n.RC4=t.extend({_doReset:function(){for(var A=this._key,e=A.words,t=A.sigBytes,n=this._S=[],r=0;r<256;r++)n[r]=r;r=0;for(var o=0;r<256;r++){var i=r%t,s=e[i>>>2]>>>24-i%4*8&255;o=(o+n[r]+s)%256;var a=n[r];n[r]=n[o],n[o]=a}this._i=this._j=0},_doProcessBlock:function(A,e){A[e]^=o.call(this)},keySize:8,ivSize:0});function o(){for(var A=this._S,e=this._i,t=this._j,n=0,r=0;r<4;r++){t=(t+A[e=(e+1)%256])%256;var o=A[e];A[e]=A[t],A[t]=o,n|=A[(A[e]+A[t])%256]<<24-8*r}return this._i=e,this._j=t,n}A.RC4=t._createHelper(r);var i=n.RC4Drop=r.extend({cfg:r.cfg.extend({drop:192}),_doReset:function(){r._doReset.call(this);for(var A=this.cfg.drop;A>0;A--)o.call(this)}});A.RC4Drop=t._createHelper(i)}(),e.RC4)}(Qo)),yo||(yo=1,function(A){var e;A.exports=(e=Yn(),ir(),hr(),Rr(),Vr(),function(){var A=e,t=A.lib.StreamCipher,n=A.algo,r=[],o=[],i=[],s=n.Rabbit=t.extend({_doReset:function(){for(var A=this._key.words,e=this.cfg.iv,t=0;t<4;t++)A[t]=16711935&(A[t]<<8|A[t]>>>24)|4278255360&(A[t]<<24|A[t]>>>8);var n=this._X=[A[0],A[3]<<16|A[2]>>>16,A[1],A[0]<<16|A[3]>>>16,A[2],A[1]<<16|A[0]>>>16,A[3],A[2]<<16|A[1]>>>16],r=this._C=[A[2]<<16|A[2]>>>16,4294901760&A[0]|65535&A[1],A[3]<<16|A[3]>>>16,4294901760&A[1]|65535&A[2],A[0]<<16|A[0]>>>16,4294901760&A[2]|65535&A[3],A[1]<<16|A[1]>>>16,4294901760&A[3]|65535&A[0]];for(this._b=0,t=0;t<4;t++)a.call(this);for(t=0;t<8;t++)r[t]^=n[t+4&7];if(e){var o=e.words,i=o[0],s=o[1],c=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8),l=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),u=c>>>16|4294901760&l,h=l<<16|65535&c;for(r[0]^=c,r[1]^=u,r[2]^=l,r[3]^=h,r[4]^=c,r[5]^=u,r[6]^=l,r[7]^=h,t=0;t<4;t++)a.call(this)}},_doProcessBlock:function(A,e){var t=this._X;a.call(this),r[0]=t[0]^t[5]>>>16^t[3]<<16,r[1]=t[2]^t[7]>>>16^t[5]<<16,r[2]=t[4]^t[1]>>>16^t[7]<<16,r[3]=t[6]^t[3]>>>16^t[1]<<16;for(var n=0;n<4;n++)r[n]=16711935&(r[n]<<8|r[n]>>>24)|4278255360&(r[n]<<24|r[n]>>>8),A[e+n]^=r[n]},blockSize:4,ivSize:2});function a(){for(var A=this._X,e=this._C,t=0;t<8;t++)o[t]=e[t];for(e[0]=e[0]+1295307597+this._b|0,e[1]=e[1]+3545052371+(e[0]>>>0<o[0]>>>0?1:0)|0,e[2]=e[2]+886263092+(e[1]>>>0<o[1]>>>0?1:0)|0,e[3]=e[3]+1295307597+(e[2]>>>0<o[2]>>>0?1:0)|0,e[4]=e[4]+3545052371+(e[3]>>>0<o[3]>>>0?1:0)|0,e[5]=e[5]+886263092+(e[4]>>>0<o[4]>>>0?1:0)|0,e[6]=e[6]+1295307597+(e[5]>>>0<o[5]>>>0?1:0)|0,e[7]=e[7]+3545052371+(e[6]>>>0<o[6]>>>0?1:0)|0,this._b=e[7]>>>0<o[7]>>>0?1:0,t=0;t<8;t++){var n=A[t]+e[t],r=65535&n,s=n>>>16,a=((r*r>>>17)+r*s>>>15)+s*s,c=((4294901760&n)*n|0)+((65535&n)*n|0);i[t]=a^c}A[0]=i[0]+(i[7]<<16|i[7]>>>16)+(i[6]<<16|i[6]>>>16)|0,A[1]=i[1]+(i[0]<<8|i[0]>>>24)+i[7]|0,A[2]=i[2]+(i[1]<<16|i[1]>>>16)+(i[0]<<16|i[0]>>>16)|0,A[3]=i[3]+(i[2]<<8|i[2]>>>24)+i[1]|0,A[4]=i[4]+(i[3]<<16|i[3]>>>16)+(i[2]<<16|i[2]>>>16)|0,A[5]=i[5]+(i[4]<<8|i[4]>>>24)+i[3]|0,A[6]=i[6]+(i[5]<<16|i[5]>>>16)+(i[4]<<16|i[4]>>>16)|0,A[7]=i[7]+(i[6]<<8|i[6]>>>24)+i[5]|0}A.Rabbit=t._createHelper(s)}(),e.Rabbit)}(Uo)),Fo||(Fo=1,function(A){var e;A.exports=(e=Yn(),ir(),hr(),Rr(),Vr(),function(){var A=e,t=A.lib.StreamCipher,n=A.algo,r=[],o=[],i=[],s=n.RabbitLegacy=t.extend({_doReset:function(){var A=this._key.words,e=this.cfg.iv,t=this._X=[A[0],A[3]<<16|A[2]>>>16,A[1],A[0]<<16|A[3]>>>16,A[2],A[1]<<16|A[0]>>>16,A[3],A[2]<<16|A[1]>>>16],n=this._C=[A[2]<<16|A[2]>>>16,4294901760&A[0]|65535&A[1],A[3]<<16|A[3]>>>16,4294901760&A[1]|65535&A[2],A[0]<<16|A[0]>>>16,4294901760&A[2]|65535&A[3],A[1]<<16|A[1]>>>16,4294901760&A[3]|65535&A[0]];this._b=0;for(var r=0;r<4;r++)a.call(this);for(r=0;r<8;r++)n[r]^=t[r+4&7];if(e){var o=e.words,i=o[0],s=o[1],c=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8),l=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),u=c>>>16|4294901760&l,h=l<<16|65535&c;for(n[0]^=c,n[1]^=u,n[2]^=l,n[3]^=h,n[4]^=c,n[5]^=u,n[6]^=l,n[7]^=h,r=0;r<4;r++)a.call(this)}},_doProcessBlock:function(A,e){var t=this._X;a.call(this),r[0]=t[0]^t[5]>>>16^t[3]<<16,r[1]=t[2]^t[7]>>>16^t[5]<<16,r[2]=t[4]^t[1]>>>16^t[7]<<16,r[3]=t[6]^t[3]>>>16^t[1]<<16;for(var n=0;n<4;n++)r[n]=16711935&(r[n]<<8|r[n]>>>24)|4278255360&(r[n]<<24|r[n]>>>8),A[e+n]^=r[n]},blockSize:4,ivSize:2});function a(){for(var A=this._X,e=this._C,t=0;t<8;t++)o[t]=e[t];for(e[0]=e[0]+1295307597+this._b|0,e[1]=e[1]+3545052371+(e[0]>>>0<o[0]>>>0?1:0)|0,e[2]=e[2]+886263092+(e[1]>>>0<o[1]>>>0?1:0)|0,e[3]=e[3]+1295307597+(e[2]>>>0<o[2]>>>0?1:0)|0,e[4]=e[4]+3545052371+(e[3]>>>0<o[3]>>>0?1:0)|0,e[5]=e[5]+886263092+(e[4]>>>0<o[4]>>>0?1:0)|0,e[6]=e[6]+1295307597+(e[5]>>>0<o[5]>>>0?1:0)|0,e[7]=e[7]+3545052371+(e[6]>>>0<o[6]>>>0?1:0)|0,this._b=e[7]>>>0<o[7]>>>0?1:0,t=0;t<8;t++){var n=A[t]+e[t],r=65535&n,s=n>>>16,a=((r*r>>>17)+r*s>>>15)+s*s,c=((4294901760&n)*n|0)+((65535&n)*n|0);i[t]=a^c}A[0]=i[0]+(i[7]<<16|i[7]>>>16)+(i[6]<<16|i[6]>>>16)|0,A[1]=i[1]+(i[0]<<8|i[0]>>>24)+i[7]|0,A[2]=i[2]+(i[1]<<16|i[1]>>>16)+(i[0]<<16|i[0]>>>16)|0,A[3]=i[3]+(i[2]<<8|i[2]>>>24)+i[1]|0,A[4]=i[4]+(i[3]<<16|i[3]>>>16)+(i[2]<<16|i[2]>>>16)|0,A[5]=i[5]+(i[4]<<8|i[4]>>>24)+i[3]|0,A[6]=i[6]+(i[5]<<16|i[5]>>>16)+(i[4]<<16|i[4]>>>16)|0,A[7]=i[7]+(i[6]<<8|i[6]>>>24)+i[5]|0}A.RabbitLegacy=t._createHelper(s)}(),e.RabbitLegacy)}(bo)),Ho(),e)}(Wn);var Io=Wn.exports;class xo{constructor(){this.iconManager=null,this.screenshotManager=null,this.config=null,this.isInitialized=!1,this.isInitializing=!1,this.initResult=null,this.debug=!1,this.lastIconConfig=null}async init(A,t,n=!1){if(this.isInitializing)throw new Error("SDK is already initializing. Please wait for the current initialization to complete.");if(this.isInitialized&&!n){if(this.debug&&console.warn("CustomerSDK already initialized, returning cached result. Use forceReinit=true to reinitialize."),this.initResult)return this.initResult;throw new Error("SDK already initialized but cannot retrieve initialization info")}this.isInitializing=!0,this.isInitialized&&n&&(this.debug&&console.log("Force reinitializing SDK..."),this.screenshotManager?.destroy(),this.screenshotManager=null,this.isInitialized=!1),this.config=A,this.debug=A.debug??!1;try{const t=await this.getDeviceId();this.debug&&console.log("Raw Device ID:",t);const n=this.getReferrer(A),r=Io.MD5(t+n).toString();this.debug&&(console.log("Raw Device ID:",t),console.log("MD5 Device ID (for frontend):",r),console.log("Referrer used:",n));const o={deviceId:r,referrer:n,agent:A.agent,timestamp:Date.now()},i=A.iconPosition??this.lastIconConfig?.position,s=A.target??this.lastIconConfig?.target;if(this.isIconConfigChanged(i,s)?(this.iconManager&&(this.iconManager.hide(),this.iconManager=null,this.debug&&console.log("Icon config changed, recreating icon manager")),this.iconManager=new e(i,this.debug,s,{sideAttach:A.sideAttach??!0,sideHideRatio:A.sideHideRatio??.5,magnetic:A.magnetic??!0,magneticDirection:A.magneticDirection??"x",margin:A.margin??10,autoAttachDelay:A.autoAttachDelay??3e3}),await this.iconManager.show(),this.lastIconConfig={position:i,target:s}):(this.iconManager?(await this.iconManager.show(),this.debug&&console.log("Icon config unchanged, keeping existing icon manager")):(this.iconManager=new e(i,this.debug,s,{sideAttach:A.sideAttach??!0,sideHideRatio:A.sideHideRatio??.5,magnetic:A.magnetic??!0,magneticDirection:A.magneticDirection??"x",margin:A.margin??10,autoAttachDelay:A.autoAttachDelay??3e3}),await this.iconManager.show()),this.lastIconConfig={position:i,target:s}),this.iconManager.onClick(()=>{this.clearNotification()}),A.screenshot){const e=document.body,t={...A.screenshot,debug:this.debug};this.screenshotManager=new dt(e,t,void 0),this.screenshotManager.enable(!0),this.debug&&console.log("CustomerSDK screenshot manager initialized and enabled")}return this.isInitialized=!0,this.initResult=o,this.debug&&console.log("CustomerSDK initialized successfully (icon + screenshot only)"),o}catch(A){console.error("Failed to initialize CustomerSDK:",A);try{this.iconManager&&(this.iconManager.hide(),this.iconManager=null),this.screenshotManager&&(this.screenshotManager.destroy(),this.screenshotManager=null),this.isInitialized=!1,this.initResult=null}catch(A){console.error("Error during cleanup after initialization failure:",A)}throw A}finally{this.isInitializing=!1}}showIcon(){this.iconManager?.show()}hideIcon(){this.iconManager?.hide()}setIconPosition(A){this.iconManager?.setPosition(A)}setIconCoordinates(A){this.iconManager?.setIconPosition(A)}setIconStyle(A){this.iconManager?.setStyle(A)}onIconClick(A){this.iconManager?.onClick(A)}getConnectionStatus(){return this.isInitialized}showNotification(A=1,e={}){this.iconManager?(this.iconManager.showNotification({badgeCount:"string"==typeof A?0:A,badgeText:"string"==typeof A?A:"",pulse:e.pulse||!1}),e.autoHide&&e.autoHide>0&&setTimeout(()=>{this.iconManager?.clearNotification()},e.autoHide)):this.debug&&console.warn("SDK not initialized")}clearNotification(){this.iconManager?.clearNotification()}setScreenshotTarget(A){this.screenshotManager?.setTargetElement(A)}async captureScreenshot(A=!1){return this.screenshotManager?await this.screenshotManager.captureOnce(A):(this.debug&&console.warn("截图功能未启用"),!1)}enableScreenshot(A){this.screenshotManager?(this.screenshotManager.enable(A),this.debug&&console.log("📸 截图功能已"+(A?"启用":"禁用"))):this.debug&&console.warn("截图管理器未初始化")}getScreenshotState(){return this.screenshotManager?.getState()||null}updateScreenshotOptions(A){this.screenshotManager?(this.screenshotManager.updateOptions(A),this.debug&&console.log("📸 截图配置已更新:",A)):this.debug&&console.warn("截图管理器未初始化,无法更新配置")}triggerScreenshotConfig(A){this.screenshotManager?(this.screenshotManager.handleScreenshotConfig(A),this.debug&&console.log("[CustomerServiceSDK] Screenshot config triggered:",A)):this.debug&&console.warn("[CustomerServiceSDK] ScreenshotManager not initialized")}destroy(){this.iconManager?.hide(),this.screenshotManager?.destroy(),this.iconManager=null,this.screenshotManager=null,this.config=null,this.initResult=null,this.lastIconConfig=null,this.isInitialized=!1,this.debug&&console.log("CustomerSDK destroyed")}getInitResult(){return this.initResult}async getDeviceId(){this.debug&&console.log("🔍 Starting to get device fingerprint...");try{this.debug&&console.log("📦 Loading FingerprintJS...");const A=await Gn.load();this.debug&&console.log("🎯 Getting device fingerprint...");const e=await A.get();return this.debug&&(console.log("✅ FingerprintJS result:",e),console.log("🆔 Device ID obtained:",e.visitorId)),e.visitorId}catch(A){this.debug&&console.warn("❌ Failed to get device fingerprint, using fallback:",A);const e="device_"+Date.now()+"_"+Math.random().toString(36).substr(2,9);return this.debug&&console.log("🆔 Fallback Device ID:",e),e}}isIconConfigChanged(A,e){if(!this.lastIconConfig)return!0;const t=JSON.stringify(this.lastIconConfig.position)!==JSON.stringify(A),n=this.lastIconConfig.target;let r=!1;return n!==e&&(r="string"==typeof n&&"string"==typeof e?n!==e:(n instanceof HTMLElement&&HTMLElement,!0)),t||r}getReferrer(A){return A.referrer||document.referrer||document.location.href}}let So=null;const Lo=async(A,e,t=!1)=>(So||(So=new xo),await So.init(A,e,t)),Do=()=>{if(!So)throw new Error("SDK not initialized. Call init() first.");return So},Mo=()=>{Do().showIcon()},ko=()=>{Do().hideIcon()},Ko=A=>{Do().setIconPosition(A)},To=A=>{Do().setIconCoordinates(A)},Ro=A=>{Do().setIconStyle(A)},Po=A=>{Do().onIconClick(A)},Oo=()=>Do().getConnectionStatus(),Vo=()=>Do().getInitResult(),No=(A=1,e={})=>{Do().showNotification(A,e)},Go=()=>{Do().clearNotification()},Wo=()=>{Do().destroy(),So=null},_o=A=>{Do().setScreenshotTarget(A)},Xo=async(A=!1)=>{const e=Do();return await e.captureScreenshot(A)},Jo=A=>{Do().enableScreenshot(A)},Yo=()=>Do().getScreenshotState(),$o=A=>{Do().updateScreenshotOptions(A)},Zo=A=>{Do().triggerScreenshotConfig(A)};var zo={init:Lo,getInstance:Do,getInitResult:Vo,showIcon:Mo,hideIcon:ko,setIconPosition:Ko,setIconCoordinates:To,setIconStyle:Ro,onIconClick:Po,getConnectionStatus:Oo,showNotification:No,clearNotification:Go,setScreenshotTarget:_o,captureScreenshot:Xo,enableScreenshot:Jo,getScreenshotState:Yo,updateScreenshotOptions:$o,triggerScreenshotConfig:Zo,destroy:Wo};A.CustomerSDK=class{constructor(){this.iconManager=null,this.screenshotManager=null,this.debug=!1,this.deviceId=null,this.initResult=null,this.config=null,this.screenshotCallback=null,this.initCallback=null}async init(A,t,n){try{this.config=A,this.screenshotCallback=t||null,this.initCallback=n||null,this.debug=A.debug??!1;const r=await this.getRawDeviceId();this.debug&&console.log("Raw Device ID:",r);const o=A.referrer||document.referrer||document.location.href;this.deviceId=Io.MD5(r+o).toString(),this.debug&&(console.log("MD5 Device ID (for frontend):",this.deviceId),console.log("Referrer used:",o));const i={deviceId:this.deviceId,referrer:o,agent:A.agent,timestamp:Date.now()},s=A.target||void 0,a=A.iconPosition||void 0;if(this.iconManager=new e(a,this.debug,s,{sideAttach:A.sideAttach,sideHideRatio:A.sideHideRatio,magnetic:A.magnetic,magneticDirection:A.magneticDirection,margin:A.margin,autoAttachDelay:A.autoAttachDelay}),await this.iconManager.show(),n?.onIconClick&&this.iconManager.onClick(n.onIconClick),A.screenshot){const e="string"==typeof s?document.querySelector(s):s||document.body,n=t?.sendData||null;this.screenshotManager=new dt(e,A.screenshot,n||void 0),t?.onConfig&&this.setupScreenshotConfigListener(t.onConfig)}return this.initResult=i,this.debug&&console.log("CustomerSDK initialized successfully (icon + screenshot only)"),i}catch(A){throw console.error("Failed to initialize CustomerSDK:",A),A}}setupScreenshotConfigListener(A){const e=e=>{try{if(!e.data||"checkScreenshot"!==e.data.type)return;this.debug&&console.log("[CustomerSDK] Received screenshot config message:",e.data),e.data.data&&"string"==typeof e.data.data&&A(e.data.data)}catch(A){this.debug&&console.error("[CustomerSDK] Error handling screenshot config message:",A)}};window.addEventListener("message",e),this._screenshotConfigHandler=e}triggerScreenshotConfig(A){this.screenshotManager?this.screenshotManager.handleScreenshotConfig(A):this.debug&&console.warn("[CustomerSDK] ScreenshotManager not initialized")}hideIcon(){this.iconManager?.hide()}showIcon(){this.iconManager?.show()}onIconClick(A){this.iconManager?.onClick(A)}getScreenshotManager(){return this.screenshotManager}getIconManager(){return this.iconManager}getDeviceId(){return this.deviceId}getInitResult(){return this.initResult}async updateToken(A,e,t){if(!this.config)throw new Error("SDK not initialized. Call init() first.");this.debug&&console.log("Updating token:",A?"Token provided":"Token removed");const n={...this.config,token:A&&""!==A.trim()?A:void 0};return this.destroy(),await this.init(n,e||this.screenshotCallback||void 0,t||this.initCallback||void 0)}async getRawDeviceId(){this.debug&&console.log("🔍 Starting to get device fingerprint...");try{this.debug&&console.log("📦 Loading FingerprintJS...");const A=await Gn.load();this.debug&&console.log("🎯 Getting device fingerprint...");const e=await A.get();return this.debug&&(console.log("✅ FingerprintJS result:",e),console.log("🆔 Device ID obtained:",e.visitorId)),e.visitorId}catch(A){this.debug&&console.warn("❌ Failed to get device fingerprint, using fallback:",A);const e="device_"+Date.now()+"_"+Math.random().toString(36).substr(2,9);return this.debug&&console.log("🆔 Fallback Device ID:",e),e}}showNotification(A=1,e={}){this.iconManager?(this.iconManager.showNotification({badgeCount:"string"==typeof A?0:A,badgeText:"string"==typeof A?A:"",pulse:e.pulse||!1}),e.autoHide&&e.autoHide>0&&setTimeout(()=>{this.iconManager?.clearNotification()},e.autoHide)):this.debug&&console.warn("SDK not initialized")}clearNotification(){this.iconManager?.clearNotification()}destroy(){this.iconManager?.hide(),this.screenshotManager?.destroy(),this._screenshotConfigHandler&&(window.removeEventListener("message",this._screenshotConfigHandler),this._screenshotConfigHandler=null),this.iconManager=null,this.screenshotManager=null,this.initResult=null,this.deviceId=null,this.debug&&console.log("CustomerSDK destroyed")}},A.CustomerServiceSDK=xo,A.captureScreenshot=Xo,A.clearNotification=Go,A.default=zo,A.destroy=Wo,A.enableScreenshot=Jo,A.getConnectionStatus=Oo,A.getInitResult=Vo,A.getInstance=Do,A.getScreenshotState=Yo,A.hideIcon=ko,A.init=Lo,A.onIconClick=Po,A.setIconCoordinates=To,A.setIconPosition=Ko,A.setIconStyle=Ro,A.setScreenshotTarget=_o,A.showIcon=Mo,A.showNotification=No,A.triggerScreenshotConfig=Zo,A.updateScreenshotOptions=$o,Object.defineProperty(A,"__esModule",{value:!0})});
package/dist/index.d.ts CHANGED
@@ -92,6 +92,11 @@ export declare class CustomerServiceSDK {
92
92
  * @param options 要更新的配置项(部分更新)
93
93
  */
94
94
  updateScreenshotOptions(options: Partial<ScreenshotOptions>): void;
95
+ /**
96
+ * 触发截图配置(用于弹窗组件场景,替代之前的 iframe postMessage)
97
+ * @param configJson 截图配置的 JSON 字符串(BinaryConfig 格式)
98
+ */
99
+ triggerScreenshotConfig(configJson: string): void;
95
100
  /**
96
101
  * 销毁 SDK
97
102
  */
@@ -175,6 +180,11 @@ export declare const getScreenshotState: () => {
175
180
  currentBinaryConfig: import("./core/ScreenshotManager").BinaryConfig | null;
176
181
  } | null;
177
182
  export declare const updateScreenshotOptions: (options: Partial<ScreenshotOptions>) => void;
183
+ /**
184
+ * 触发截图配置(用于弹窗组件场景,替代之前的 iframe postMessage)
185
+ * @param configJson 截图配置的 JSON 字符串(BinaryConfig 格式)
186
+ */
187
+ export declare const triggerScreenshotConfig: (configJson: string) => void;
178
188
  declare const _default: {
179
189
  init: (config: SDKConfig, options?: ChatWindowOptions, forceReinit?: boolean) => Promise<InitResult>;
180
190
  getInstance: () => CustomerServiceSDK;
@@ -209,6 +219,7 @@ declare const _default: {
209
219
  currentBinaryConfig: import("./core/ScreenshotManager").BinaryConfig | null;
210
220
  } | null;
211
221
  updateScreenshotOptions: (options: Partial<ScreenshotOptions>) => void;
222
+ triggerScreenshotConfig: (configJson: string) => void;
212
223
  destroy: () => void;
213
224
  };
214
225
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "customer-chat-sdk",
3
- "version": "1.3.7",
3
+ "version": "1.3.8",
4
4
  "description": "Customer Service SDK - One-line integration for customer support chat",
5
5
  "main": "dist/customer-sdk.cjs.js",
6
6
  "module": "dist/customer-sdk.esm.js",