customer-chat-sdk 1.1.15 → 1.1.16

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.
@@ -87,6 +87,11 @@ export declare class IframeManager {
87
87
  * 处理来自iframe的消息
88
88
  */
89
89
  private handleIframeMessage;
90
+ /**
91
+ * 将消息转发给父窗口(通过 window.postMessage)
92
+ * 这样 Vue 页面中的监听器也能收到消息
93
+ */
94
+ private forwardMessageToParent;
90
95
  /**
91
96
  * 调整iframe大小(PC模式支持)
92
97
  */
@@ -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,MAAM,CAAC,EAAE,WAAW,GAAG,MAAM,CAAA;IAC7B,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;IAC9B,OAAO,CAAC,aAAa,CAA2B;IAChD,OAAO,CAAC,cAAc,CAA+C;gBAEzD,MAAM,GAAE,aAAkB;IAetC;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAgC3B;;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;IAsBf;;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;IAuLpB;;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;IAiB5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAwD3B;;OAEG;IACH,OAAO,CAAC,YAAY;IAOpB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CA0BzB"}
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,MAAM,CAAC,EAAE,WAAW,GAAG,MAAM,CAAA;IAC7B,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;IAC9B,OAAO,CAAC,aAAa,CAA2B;IAChD,OAAO,CAAC,cAAc,CAA+C;gBAEzD,MAAM,GAAE,aAAkB;IAetC;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAgC3B;;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;IAsBf;;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;IAuLpB;;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;IAiB5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA+E3B;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IA2B9B;;OAEG;IACH,OAAO,CAAC,YAAY;IAOpB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CA0BzB"}
@@ -1743,7 +1743,7 @@ class IframeManager {
1743
1743
  maxWidth: '100%', // 不超过 target 的宽度
1744
1744
  maxHeight: '100%',
1745
1745
  backgroundColor: '#ffffff',
1746
- borderRadius: isPC ? '0' : '12px 12px 0 0',
1746
+ borderRadius: isPC ? '0' : '0',
1747
1747
  boxShadow: isPC ? 'none' : '0 -4px 16px rgba(0, 0, 0, 0.25)',
1748
1748
  border: 'none',
1749
1749
  position: 'absolute', // 相对于 target 元素定位
@@ -1789,7 +1789,7 @@ class IframeManager {
1789
1789
  maxWidth: '100%',
1790
1790
  maxHeight: '100%',
1791
1791
  backgroundColor: '#ffffff',
1792
- borderRadius: '12px 12px 0 0',
1792
+ borderRadius: '0',
1793
1793
  boxShadow: '0 -4px 16px rgba(0, 0, 0, 0.25)',
1794
1794
  border: 'none',
1795
1795
  position: 'fixed',
@@ -2033,11 +2033,64 @@ class IframeManager {
2033
2033
  this.config.onMessage(messageType, data);
2034
2034
  }
2035
2035
  break;
2036
- default:
2037
- // 可以在这里添加自定义消息处理
2036
+ case 'goto-login':
2037
+ // 登录跳转消息 - 通过 window.postMessage 抛出给外层
2038
2038
  if (this.debug) {
2039
- console.log('Custom message:', data);
2039
+ console.log('Received goto-login message, forwarding to parent window');
2040
+ }
2041
+ this.forwardMessageToParent(data);
2042
+ if (this.config.onMessage) {
2043
+ this.config.onMessage(messageType, data);
2044
+ }
2045
+ break;
2046
+ default:
2047
+ // 处理动态消息:gotoActivityDetailById:xxx
2048
+ if (typeof messageType === 'string' && messageType.startsWith('gotoActivityDetailById:')) {
2049
+ // 活动详情跳转消息 - 通过 window.postMessage 抛出给外层
2050
+ if (this.debug) {
2051
+ console.log('Received gotoActivityDetailById message, forwarding to parent window:', messageType);
2052
+ }
2053
+ this.forwardMessageToParent(data);
2054
+ if (this.config.onMessage) {
2055
+ this.config.onMessage(messageType, data);
2056
+ }
2057
+ }
2058
+ else {
2059
+ // 其他自定义消息处理
2060
+ if (this.debug) {
2061
+ console.log('Custom message:', data);
2062
+ }
2040
2063
  }
2064
+ break;
2065
+ }
2066
+ }
2067
+ /**
2068
+ * 将消息转发给父窗口(通过 window.postMessage)
2069
+ * 这样 Vue 页面中的监听器也能收到消息
2070
+ */
2071
+ forwardMessageToParent(data) {
2072
+ try {
2073
+ // 方式1:使用 window.postMessage 发送消息(跨窗口通信)
2074
+ // 如果存在父窗口且不是当前窗口,发送给父窗口
2075
+ if (window.parent && window.parent !== window) {
2076
+ window.parent.postMessage(data, '*');
2077
+ }
2078
+ // 方式2:使用 dispatchEvent 创建 MessageEvent(在同一窗口内触发所有监听器)
2079
+ // 这样 Vue 页面中的 window.addEventListener('message') 也能收到
2080
+ const messageEvent = new MessageEvent('message', {
2081
+ data: data,
2082
+ origin: window.location.origin,
2083
+ source: window
2084
+ });
2085
+ window.dispatchEvent(messageEvent);
2086
+ if (this.debug) {
2087
+ console.log('Message forwarded via window.postMessage and dispatchEvent:', data);
2088
+ }
2089
+ }
2090
+ catch (error) {
2091
+ if (this.debug) {
2092
+ console.error('Failed to forward message:', error);
2093
+ }
2041
2094
  }
2042
2095
  }
2043
2096
  /**
@@ -1739,7 +1739,7 @@ class IframeManager {
1739
1739
  maxWidth: '100%', // 不超过 target 的宽度
1740
1740
  maxHeight: '100%',
1741
1741
  backgroundColor: '#ffffff',
1742
- borderRadius: isPC ? '0' : '12px 12px 0 0',
1742
+ borderRadius: isPC ? '0' : '0',
1743
1743
  boxShadow: isPC ? 'none' : '0 -4px 16px rgba(0, 0, 0, 0.25)',
1744
1744
  border: 'none',
1745
1745
  position: 'absolute', // 相对于 target 元素定位
@@ -1785,7 +1785,7 @@ class IframeManager {
1785
1785
  maxWidth: '100%',
1786
1786
  maxHeight: '100%',
1787
1787
  backgroundColor: '#ffffff',
1788
- borderRadius: '12px 12px 0 0',
1788
+ borderRadius: '0',
1789
1789
  boxShadow: '0 -4px 16px rgba(0, 0, 0, 0.25)',
1790
1790
  border: 'none',
1791
1791
  position: 'fixed',
@@ -2029,11 +2029,64 @@ class IframeManager {
2029
2029
  this.config.onMessage(messageType, data);
2030
2030
  }
2031
2031
  break;
2032
- default:
2033
- // 可以在这里添加自定义消息处理
2032
+ case 'goto-login':
2033
+ // 登录跳转消息 - 通过 window.postMessage 抛出给外层
2034
2034
  if (this.debug) {
2035
- console.log('Custom message:', data);
2035
+ console.log('Received goto-login message, forwarding to parent window');
2036
+ }
2037
+ this.forwardMessageToParent(data);
2038
+ if (this.config.onMessage) {
2039
+ this.config.onMessage(messageType, data);
2040
+ }
2041
+ break;
2042
+ default:
2043
+ // 处理动态消息:gotoActivityDetailById:xxx
2044
+ if (typeof messageType === 'string' && messageType.startsWith('gotoActivityDetailById:')) {
2045
+ // 活动详情跳转消息 - 通过 window.postMessage 抛出给外层
2046
+ if (this.debug) {
2047
+ console.log('Received gotoActivityDetailById message, forwarding to parent window:', messageType);
2048
+ }
2049
+ this.forwardMessageToParent(data);
2050
+ if (this.config.onMessage) {
2051
+ this.config.onMessage(messageType, data);
2052
+ }
2053
+ }
2054
+ else {
2055
+ // 其他自定义消息处理
2056
+ if (this.debug) {
2057
+ console.log('Custom message:', data);
2058
+ }
2036
2059
  }
2060
+ break;
2061
+ }
2062
+ }
2063
+ /**
2064
+ * 将消息转发给父窗口(通过 window.postMessage)
2065
+ * 这样 Vue 页面中的监听器也能收到消息
2066
+ */
2067
+ forwardMessageToParent(data) {
2068
+ try {
2069
+ // 方式1:使用 window.postMessage 发送消息(跨窗口通信)
2070
+ // 如果存在父窗口且不是当前窗口,发送给父窗口
2071
+ if (window.parent && window.parent !== window) {
2072
+ window.parent.postMessage(data, '*');
2073
+ }
2074
+ // 方式2:使用 dispatchEvent 创建 MessageEvent(在同一窗口内触发所有监听器)
2075
+ // 这样 Vue 页面中的 window.addEventListener('message') 也能收到
2076
+ const messageEvent = new MessageEvent('message', {
2077
+ data: data,
2078
+ origin: window.location.origin,
2079
+ source: window
2080
+ });
2081
+ window.dispatchEvent(messageEvent);
2082
+ if (this.debug) {
2083
+ console.log('Message forwarded via window.postMessage and dispatchEvent:', data);
2084
+ }
2085
+ }
2086
+ catch (error) {
2087
+ if (this.debug) {
2088
+ console.error('Failed to forward message:', error);
2089
+ }
2037
2090
  }
2038
2091
  }
2039
2092
  /**