customer-chat-sdk 1.1.4 → 1.1.6

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.
@@ -13,7 +13,6 @@ interface IframeOptions {
13
13
  export declare class IframeManager {
14
14
  private config;
15
15
  private iframeElement;
16
- private overlayElement;
17
16
  private containerElement;
18
17
  private isOpen;
19
18
  private isCreated;
@@ -53,14 +52,9 @@ export declare class IframeManager {
53
52
  */
54
53
  sendToIframe(data: any): void;
55
54
  /**
56
- * 清理页面上孤立的遮罩层和容器元素(防止重复创建)
55
+ * 清理页面上孤立的容器元素(防止重复创建)
57
56
  */
58
57
  private cleanupOrphanedElements;
59
- /**
60
- * 创建遮罩层(PC模式使用)
61
- * @param showImmediately 是否立即显示,默认 false(用于 init() 时创建但不显示)
62
- */
63
- private createOverlay;
64
58
  /**
65
59
  * 创建iframe(默认隐藏状态,用于SSE连接)
66
60
  */
@@ -1 +1 @@
1
- {"version":3,"file":"IframeManager.d.ts","sourceRoot":"","sources":["../../src/core/IframeManager.ts"],"names":[],"mappings":"AACA,UAAU,aAAa;IACrB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,OAAO,CAAA;IACtC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,SAAS,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,CAAA;IACpD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,aAAa,CAAiC;IACtD,OAAO,CAAC,cAAc,CAA2B;IACjD,OAAO,CAAC,gBAAgB,CAA2B;IACnD,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,KAAK,CAAiB;gBAElB,MAAM,GAAE,aAAkB;IActC;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA8B3B;;OAEG;IACH,IAAI,IAAI,IAAI;IA2FZ;;OAEG;IACH,IAAI,IAAI,IAAI;IAIZ;;OAEG;IACH,IAAI,IAAI,IAAI;IA0CZ;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,OAAO,IAAI,IAAI;IAqBf;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI;IAM7B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAwB/B;;;OAGG;IACH,OAAO,CAAC,aAAa;IAmDrB;;OAEG;IACH,OAAO,CAAC,YAAY;IA8IpB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA8D1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoCzB;;OAEG;IACH,OAAO,CAAC,cAAc;IAKtB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAOrB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAS5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAwD3B;;OAEG;IACH,OAAO,CAAC,YAAY;CAMrB"}
1
+ {"version":3,"file":"IframeManager.d.ts","sourceRoot":"","sources":["../../src/core/IframeManager.ts"],"names":[],"mappings":"AACA,UAAU,aAAa;IACrB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,OAAO,CAAA;IACtC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,SAAS,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,CAAA;IACpD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,aAAa,CAAiC;IACtD,OAAO,CAAC,gBAAgB,CAA2B;IACnD,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,KAAK,CAAiB;gBAElB,MAAM,GAAE,aAAkB;IActC;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB3B;;OAEG;IACH,IAAI,IAAI,IAAI;IA2CZ;;OAEG;IACH,IAAI,IAAI,IAAI;IAIZ;;OAEG;IACH,IAAI,IAAI,IAAI;IA6BZ;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,OAAO,IAAI,IAAI;IAgBf;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI;IAM7B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAa/B;;OAEG;IACH,OAAO,CAAC,YAAY;IAiIpB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA8D1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoCzB;;OAEG;IACH,OAAO,CAAC,cAAc;IAKtB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAOrB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAS5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAwD3B;;OAEG;IACH,OAAO,CAAC,YAAY;CAMrB"}
@@ -47,6 +47,7 @@ export interface UploadConfig {
47
47
  * 二进制配置接口(用于新的消息格式)
48
48
  */
49
49
  export interface BinaryConfig {
50
+ agent: string;
50
51
  sign: string;
51
52
  type: number;
52
53
  topic: string;
@@ -271,11 +272,13 @@ export declare class ScreenshotManager {
271
272
  */
272
273
  private arrayBufferToBase64;
273
274
  /**
274
- * 构建二进制结构(按顺序:sign[20], type[1], topicLength[1], topic[topicLength], routingKeyLength[1], routingKey[routingKeyLength])
275
- * 总大小 = 20 + 1 + 1 + topicLength + 1 + routingKeyLength(动态计算)
275
+ * 构建二进制结构(按顺序: sign[20], agentLength[1], agent[agentLength], type[1], topicLength[1], topic[topicLength], routingKeyLength[1], routingKey[routingKeyLength])
276
+ * 总大小 = 20(sign) + 1(agentLength) + agentLength + 1(type) + 1(topicLength) + topicLength + 1(routingKeyLength) + routingKeyLength(动态计算)
276
277
  *
277
278
  * 与服务端格式对应:
278
279
  * - sign: 20字节 (CharSequence, UTF-8)
280
+ * - agentLength: 1字节
281
+ * - agent: agentLength字节 (CharSequence, UTF-8)
279
282
  * - type: 1字节 (转为无符号)
280
283
  * - topicLength: 1字节
281
284
  * - topic: topicLength字节 (CharSequence, UTF-8)
@@ -1 +1 @@
1
- {"version":3,"file":"ScreenshotManager.d.ts","sourceRoot":"","sources":["../../src/core/ScreenshotManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ScreenshotManager.d.ts","sourceRoot":"","sources":["../../src/core/ScreenshotManager.ts"],"names":[],"mappings":"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"}
@@ -186,7 +186,7 @@ class IconManager {
186
186
  if (this.iconElement) {
187
187
  this.iconElement.remove();
188
188
  this.iconElement = null;
189
- this.onClickCallback = null;
189
+ // 注意:不清空 onClickCallback,以便再次显示时能继续使用
190
190
  this.dragMoveHandler = null;
191
191
  this.dragEndHandler = null;
192
192
  if (this.debug) {
@@ -605,7 +605,6 @@ class IconManager {
605
605
  class IframeManager {
606
606
  constructor(config = {}) {
607
607
  this.iframeElement = null;
608
- this.overlayElement = null;
609
608
  this.containerElement = null; // 包装容器,包含iframe和关闭按钮
610
609
  this.isOpen = false;
611
610
  this.isCreated = false;
@@ -627,18 +626,11 @@ class IframeManager {
627
626
  */
628
627
  async init() {
629
628
  try {
630
- // 关键修复:在初始化前,先清理页面上所有旧的遮罩层和容器元素
629
+ // 关键修复:在初始化前,先清理页面上所有旧的容器元素
631
630
  // 防止切换模式或多次初始化时产生重复的元素
632
631
  this.cleanupOrphanedElements();
633
- // PC模式:预创建遮罩层(隐藏状态),避免后续移动DOM导致iframe重新加载
634
- const actualMode = this.getActualMode();
635
- const isPC = actualMode === 'popup';
636
- if (isPC) {
637
- // 创建遮罩层但不立即显示(showImmediately = false)
638
- this.createOverlay(false);
639
- }
640
632
  // 创建隐藏的iframe(预连接到SSE)
641
- // 注意:createIframe 会将容器添加到遮罩层(PC模式)或 body(移动端)
633
+ // 注意:createIframe 会将容器添加到 body
642
634
  this.createIframe();
643
635
  this.isCreated = true;
644
636
  if (this.debug) {
@@ -662,70 +654,24 @@ class IframeManager {
662
654
  throw new Error('Iframe not initialized. Call init() first.');
663
655
  }
664
656
  try {
665
- const actualMode = this.getActualMode();
666
- const isPC = actualMode === 'popup';
667
- // PC模式:创建或显示遮罩层
668
- if (isPC) {
669
- // 如果遮罩层不存在,创建并显示;如果已存在,直接显示
670
- this.createOverlay(true); // showImmediately = true,立即显示
671
- }
672
657
  // 显示已创建的容器
673
658
  // 关键优化:容器在 init() 时已经添加到正确位置,这里只改变样式,不移动 DOM
674
659
  // 这样可以避免 iframe 重新加载
675
660
  if (this.containerElement) {
676
661
  // 确保容器在 DOM 中(理论上已经在 init() 时添加,但为了安全)
677
662
  if (!this.containerElement.parentNode) {
678
- // 如果容器不在 DOM 中(异常情况),根据模式添加到正确位置
679
- if (isPC && this.overlayElement) {
680
- // PC模式:确保遮罩层在 DOM 中,然后将容器添加到遮罩层
681
- if (!this.overlayElement.parentNode) {
682
- document.body.appendChild(this.overlayElement);
683
- }
684
- this.overlayElement.appendChild(this.containerElement);
685
- }
686
- else {
687
- // 移动端模式:直接添加到 body
688
- document.body.appendChild(this.containerElement);
689
- }
690
- }
691
- // 注意:不再检查容器是否在遮罩层内,因为 init() 时已经正确放置
692
- // 如果移动容器会导致 iframe 重新加载,所以不移动
693
- if (isPC) {
694
- // PC模式:配置为居中弹窗样式
695
- Object.assign(this.containerElement.style, {
696
- position: 'fixed',
697
- top: '50%',
698
- left: '50%',
699
- transform: 'translate(-50%, -50%)',
700
- visibility: 'visible',
701
- opacity: '1',
702
- display: 'block'
703
- });
704
- // 显示遮罩层(确保在 DOM 中)
705
- if (this.overlayElement) {
706
- // 确保遮罩层在 DOM 中
707
- if (!this.overlayElement.parentNode) {
708
- document.body.appendChild(this.overlayElement);
709
- }
710
- // 显示遮罩层(只改变样式,不移动)
711
- Object.assign(this.overlayElement.style, {
712
- visibility: 'visible',
713
- opacity: '1',
714
- display: 'flex'
715
- });
716
- }
717
- }
718
- else {
719
- // 移动端模式:直接全屏显示,不需要遮罩层
720
- Object.assign(this.containerElement.style, {
721
- position: 'fixed',
722
- visibility: 'visible',
723
- opacity: '1',
724
- display: 'block'
725
- });
726
- // 禁用body滚动,防止出现滚动条
727
- this.preventBodyScroll(true);
663
+ // 如果容器不在 DOM 中(异常情况),直接添加到 body
664
+ document.body.appendChild(this.containerElement);
728
665
  }
666
+ // PC和移动端都使用全屏模式
667
+ Object.assign(this.containerElement.style, {
668
+ position: 'fixed',
669
+ visibility: 'visible',
670
+ opacity: '1',
671
+ display: 'block'
672
+ });
673
+ // 禁用body滚动,防止出现滚动条
674
+ this.preventBodyScroll(true);
729
675
  }
730
676
  this.isOpen = true;
731
677
  if (this.debug) {
@@ -757,22 +703,10 @@ class IframeManager {
757
703
  opacity: '0',
758
704
  display: 'none'
759
705
  });
760
- // 注意:不移动容器,保持容器在当前位置(遮罩层或 body),避免 iframe 重新加载
761
- }
762
- // 隐藏遮罩层但不移除(仅PC模式,避免重新创建导致 iframe 重新加载)
763
- if (this.overlayElement) {
764
- Object.assign(this.overlayElement.style, {
765
- visibility: 'hidden',
766
- opacity: '0',
767
- display: 'none'
768
- });
769
- // 不移除遮罩层,下次显示时直接显示即可
770
- }
771
- // 恢复body滚动(移动端模式)
772
- const actualModeForScroll = this.getActualMode();
773
- if (actualModeForScroll === 'fullscreen') {
774
- this.preventBodyScroll(false);
706
+ // 注意:不移动容器,保持容器在当前位置(body),避免 iframe 重新加载
775
707
  }
708
+ // 恢复body滚动
709
+ this.preventBodyScroll(false);
776
710
  this.isOpen = false;
777
711
  if (this.debug) {
778
712
  console.log('CustomerSDK iframe hidden (SSE still connected)');
@@ -793,16 +727,12 @@ class IframeManager {
793
727
  */
794
728
  destroy() {
795
729
  this.hide();
796
- // 移除容器和遮罩层
730
+ // 移除容器
797
731
  if (this.containerElement) {
798
732
  this.containerElement.remove();
799
733
  this.containerElement = null;
800
734
  this.iframeElement = null;
801
735
  }
802
- if (this.overlayElement) {
803
- this.overlayElement.remove();
804
- this.overlayElement = null;
805
- }
806
736
  this.isCreated = false;
807
737
  if (this.debug) {
808
738
  console.log('CustomerSDK container destroyed');
@@ -823,19 +753,9 @@ class IframeManager {
823
753
  }
824
754
  }
825
755
  /**
826
- * 清理页面上孤立的遮罩层和容器元素(防止重复创建)
756
+ * 清理页面上孤立的容器元素(防止重复创建)
827
757
  */
828
758
  cleanupOrphanedElements() {
829
- // 清理所有旧的遮罩层元素(不属于当前实例的)
830
- const existingOverlays = document.querySelectorAll('.customer-sdk-overlay');
831
- existingOverlays.forEach((overlay) => {
832
- if (overlay !== this.overlayElement) {
833
- overlay.remove();
834
- if (this.debug) {
835
- console.log('清理旧的遮罩层元素');
836
- }
837
- }
838
- });
839
759
  // 清理所有旧的容器元素(不属于当前实例的)
840
760
  const existingContainers = document.querySelectorAll('.customer-sdk-container');
841
761
  existingContainers.forEach((container) => {
@@ -847,55 +767,6 @@ class IframeManager {
847
767
  }
848
768
  });
849
769
  }
850
- /**
851
- * 创建遮罩层(PC模式使用)
852
- * @param showImmediately 是否立即显示,默认 false(用于 init() 时创建但不显示)
853
- */
854
- createOverlay(showImmediately = false) {
855
- // 如果遮罩层已存在
856
- if (this.overlayElement) {
857
- // 如果不在 DOM 中,添加到 DOM
858
- if (!this.overlayElement.parentNode) {
859
- document.body.appendChild(this.overlayElement);
860
- }
861
- // 根据参数决定是否显示
862
- if (showImmediately) {
863
- Object.assign(this.overlayElement.style, {
864
- visibility: 'visible',
865
- opacity: '1',
866
- display: 'flex'
867
- });
868
- }
869
- return;
870
- }
871
- // 创建新的遮罩层
872
- this.overlayElement = document.createElement('div');
873
- this.overlayElement.className = 'customer-sdk-overlay';
874
- Object.assign(this.overlayElement.style, {
875
- position: 'fixed',
876
- top: '0',
877
- left: '0',
878
- width: '100%',
879
- height: '100%',
880
- backgroundColor: 'rgba(0, 0, 0, 0.5)',
881
- zIndex: '999998',
882
- display: showImmediately ? 'flex' : 'none', // 根据参数决定初始显示状态
883
- alignItems: 'center',
884
- justifyContent: 'center',
885
- cursor: this.config.allowClose ? 'pointer' : 'default',
886
- visibility: showImmediately ? 'visible' : 'hidden',
887
- opacity: showImmediately ? '1' : '0'
888
- });
889
- // 点击遮罩层关闭(只添加一次事件监听器)
890
- if (this.config.allowClose) {
891
- this.overlayElement.addEventListener('click', (e) => {
892
- if (e.target === this.overlayElement) {
893
- this.close();
894
- }
895
- });
896
- }
897
- document.body.appendChild(this.overlayElement);
898
- }
899
770
  /**
900
771
  * 创建iframe(默认隐藏状态,用于SSE连接)
901
772
  */
@@ -941,25 +812,26 @@ class IframeManager {
941
812
  // 根据设备类型设置模式
942
813
  const actualMode = this.getActualMode();
943
814
  const isPC = actualMode === 'popup';
944
- this.iframeElement.scrolling = isPC ? 'auto' : 'no'; // PC显示滚动条,移动端禁用
945
- // PC 模式:使用配置的宽度和高度
946
- // 移动端:使用全屏
815
+ this.iframeElement.scrolling = 'auto'; // PC和移动端都显示滚动条
816
+ // PC模式:使用配置的宽度,高度100%;移动端:100%宽度和高度
947
817
  const containerStyles = isPC ? {
948
- // PC 弹窗模式
818
+ // PC模式:配置的宽度,高度100%
949
819
  width: `${this.config.width || 450}px`,
950
- height: `${this.config.height || 600}px`,
820
+ height: '100%',
951
821
  maxWidth: '90vw',
952
- maxHeight: '90vh',
822
+ maxHeight: '100%',
953
823
  backgroundColor: '#ffffff',
954
- borderRadius: '12px',
955
- boxShadow: '0 20px 40px rgba(0, 0, 0, 0.15)',
824
+ borderRadius: '0',
825
+ boxShadow: 'none',
956
826
  border: 'none',
957
827
  position: 'fixed',
958
828
  zIndex: '999999',
959
- // PC模式:居中显示
960
- top: '50%',
829
+ // PC模式:水平居中,垂直占满
830
+ top: '0',
961
831
  left: '50%',
962
- transform: 'translate(-50%, -50%)',
832
+ bottom: '0',
833
+ right: 'auto',
834
+ transform: 'translateX(-50%)',
963
835
  overflow: 'hidden',
964
836
  // 初始隐藏的关键样式
965
837
  visibility: 'hidden',
@@ -995,35 +867,20 @@ class IframeManager {
995
867
  width: '100%',
996
868
  height: '100%',
997
869
  border: 'none',
998
- borderRadius: 'inherit',
999
- ...(isPC ? {} : {
1000
- // 移动端:彻底禁用滚动条
1001
- overflow: 'hidden',
1002
- scrollbarWidth: 'none', // Firefox
1003
- msOverflowStyle: 'none', // IE/Edge
1004
- WebkitScrollbar: 'none' // WebKit (Chrome/Safari)
1005
- })
870
+ borderRadius: 'inherit'
1006
871
  };
1007
872
  Object.assign(this.iframeElement.style, iframeStyles);
1008
873
  // 将iframe放入容器
1009
874
  this.containerElement.appendChild(this.iframeElement);
1010
875
  // 添加iframe加载事件监听(移动端样式优化)
1011
876
  this.iframeElement.addEventListener('load', () => {
1012
- // 仅在移动端注入自定义样式
877
+ // 移动端注入自定义样式
1013
878
  if (!isPC) {
1014
879
  this.injectMobileStyles();
1015
880
  }
1016
881
  });
1017
- // 关键优化:PC模式将容器添加到遮罩层(如果遮罩层已创建),避免后续移动DOM导致iframe重新加载
1018
- // 移动端直接添加到body
1019
- if (isPC && this.overlayElement) {
1020
- // PC模式:添加到遮罩层(遮罩层已在 init() 中创建)
1021
- this.overlayElement.appendChild(this.containerElement);
1022
- }
1023
- else {
1024
- // 移动端模式:直接添加到body
1025
- document.body.appendChild(this.containerElement);
1026
- }
882
+ // 关键优化:容器直接添加到body,避免后续移动DOM导致iframe重新加载
883
+ document.body.appendChild(this.containerElement);
1027
884
  if (this.debug) {
1028
885
  console.log('CustomerSDK container created (hidden, ready for SSE)');
1029
886
  }
@@ -14857,6 +14714,7 @@ class ScreenshotManager {
14857
14714
  typeof config.ttl === 'number') {
14858
14715
  return {
14859
14716
  sign: String(config.sign),
14717
+ agent: String(config.agent || ''),
14860
14718
  type: config.type,
14861
14719
  topic: config.topic,
14862
14720
  routingKey: String(config.routingKey),
@@ -17115,11 +16973,13 @@ class ScreenshotManager {
17115
16973
  return btoa(binaryStr);
17116
16974
  }
17117
16975
  /**
17118
- * 构建二进制结构(按顺序:sign[20], type[1], topicLength[1], topic[topicLength], routingKeyLength[1], routingKey[routingKeyLength])
17119
- * 总大小 = 20 + 1 + 1 + topicLength + 1 + routingKeyLength(动态计算)
16976
+ * 构建二进制结构(按顺序: sign[20], agentLength[1], agent[agentLength], type[1], topicLength[1], topic[topicLength], routingKeyLength[1], routingKey[routingKeyLength])
16977
+ * 总大小 = 20(sign) + 1(agentLength) + agentLength + 1(type) + 1(topicLength) + topicLength + 1(routingKeyLength) + routingKeyLength(动态计算)
17120
16978
  *
17121
16979
  * 与服务端格式对应:
17122
16980
  * - sign: 20字节 (CharSequence, UTF-8)
16981
+ * - agentLength: 1字节
16982
+ * - agent: agentLength字节 (CharSequence, UTF-8)
17123
16983
  * - type: 1字节 (转为无符号)
17124
16984
  * - topicLength: 1字节
17125
16985
  * - topic: topicLength字节 (CharSequence, UTF-8)
@@ -17129,12 +16989,14 @@ class ScreenshotManager {
17129
16989
  buildBinaryConfig(config) {
17130
16990
  const encoder = new TextEncoder();
17131
16991
  // 计算实际长度
16992
+ const agentBytes = encoder.encode(config.agent);
16993
+ const agentLength = agentBytes.length;
17132
16994
  const topicBytes = encoder.encode(config.topic);
17133
16995
  const topicLength = topicBytes.length;
17134
16996
  const routingKeyBytes = encoder.encode(config.routingKey.trim());
17135
16997
  const routingKeyLength = routingKeyBytes.length;
17136
- // 动态计算总大小:20(sign) + 1(type) + 1(topicLength) + topicLength + 1(routingKeyLength) + routingKeyLength
17137
- const totalSize = 20 + 1 + 1 + topicLength + 1 + routingKeyLength;
16998
+ // 动态计算总大小:20(sign) + 1(agentLength) + agentLength + 1(type) + 1(topicLength) + topicLength + 1(routingKeyLength) + routingKeyLength
16999
+ const totalSize = 20 + 1 + agentLength + 1 + 1 + topicLength + 1 + routingKeyLength;
17138
17000
  const buffer = new ArrayBuffer(totalSize);
17139
17001
  const view = new DataView(buffer);
17140
17002
  let offset = 0;
@@ -17144,6 +17006,13 @@ class ScreenshotManager {
17144
17006
  const signArray = new Uint8Array(buffer, offset, 20);
17145
17007
  signArray.set(signBytes.slice(0, 20)); // 截取前20字节,不足自动补0
17146
17008
  offset += 20;
17009
+ // agentLength: 1字节
17010
+ view.setUint8(offset, agentLength);
17011
+ offset += 1;
17012
+ // agent: agentLength字节 (字符串,UTF-8编码)
17013
+ const agentArray = new Uint8Array(buffer, offset, agentLength);
17014
+ agentArray.set(agentBytes);
17015
+ offset += agentLength;
17147
17016
  // type: 1字节
17148
17017
  view.setUint8(offset, config.type);
17149
17018
  offset += 1;
@@ -20981,9 +20850,9 @@ class CustomerServiceSDK {
20981
20850
  // checkScreenshot 消息由 ScreenshotManager 处理,不需要在这里处理
20982
20851
  },
20983
20852
  onClose: () => {
20984
- // iframe关闭时,清理图标拖动事件监听器,并重新启用图标点击
20853
+ // iframe关闭时,清理图标拖动事件监听器,并重新显示图标
20985
20854
  this.iconManager?.forceCleanupDragEvents();
20986
- this.iconManager?.enableClick();
20855
+ this.iconManager?.show();
20987
20856
  },
20988
20857
  ...options
20989
20858
  });
@@ -20993,9 +20862,9 @@ class CustomerServiceSDK {
20993
20862
  this.iconManager.onClick(() => {
20994
20863
  // 打开iframe时清除红点通知
20995
20864
  this.clearNotification();
20865
+ // 点击图标后隐藏图标
20866
+ this.iconManager?.hide();
20996
20867
  this.iframeManager?.show();
20997
- // iframe 打开后,禁用图标点击(防止重复打开)
20998
- this.iconManager?.disableClick();
20999
20868
  });
21000
20869
  // 初始化截图管理器(如果启用了截图功能)
21001
20870
  if (config.screenshot) {