@microsoft/omnichannel-chat-widget 0.1.0-main.c461296 → 0.1.0-main.cda7a31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. package/README.md +35 -11
  2. package/lib/cjs/common/Constants.js +50 -6
  3. package/lib/cjs/common/storage/default/defaultCacheManager.js +34 -0
  4. package/lib/cjs/common/storage/default/defaultClientDataStoreProvider.js +114 -0
  5. package/lib/cjs/common/storage/default/defaultInMemoryDataStore.js +86 -0
  6. package/lib/cjs/common/telemetry/TelemetryConstants.js +51 -3
  7. package/lib/cjs/common/telemetry/TelemetryHelper.js +13 -0
  8. package/lib/cjs/common/telemetry/TelemetryManager.js +16 -5
  9. package/lib/cjs/common/telemetry/defaultConfigs/defaultAriaConfig.js +1 -1
  10. package/lib/cjs/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +4 -1
  11. package/lib/cjs/common/telemetry/loggers/ariaTelemetryLogger.js +54 -21
  12. package/lib/cjs/common/telemetry/loggers/consoleLogger.js +6 -5
  13. package/lib/cjs/common/utils.js +89 -2
  14. package/lib/cjs/components/callingcontainerstateful/CallingContainerStateful.js +14 -0
  15. package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +20 -4
  16. package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +8 -44
  17. package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +4 -4
  18. package/lib/cjs/components/footerstateful/FooterStateful.js +6 -15
  19. package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +11 -2
  20. package/lib/cjs/components/headerstateful/HeaderStateful.js +15 -14
  21. package/lib/cjs/components/livechatwidget/common/ActivityStreamHandler.js +44 -0
  22. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +23 -0
  23. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.js +1 -0
  24. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +39 -0
  25. package/lib/cjs/components/livechatwidget/common/ChatAdapterShim.js +70 -0
  26. package/lib/cjs/components/livechatwidget/common/Deferred.js +42 -0
  27. package/lib/cjs/components/livechatwidget/common/authHelper.js +65 -0
  28. package/lib/cjs/components/livechatwidget/common/createAdapter.js +13 -1
  29. package/lib/cjs/components/livechatwidget/common/createFooter.js +7 -16
  30. package/lib/cjs/components/livechatwidget/common/createInternetConnectionChangeHandler.js +12 -0
  31. package/lib/cjs/components/livechatwidget/common/createMarkdown.js +31 -30
  32. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +36 -20
  33. package/lib/cjs/components/livechatwidget/common/endChat.js +93 -10
  34. package/lib/cjs/components/livechatwidget/common/initCallingSdk.js +1 -1
  35. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +27 -3
  36. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +144 -39
  37. package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +6 -17
  38. package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +0 -4
  39. package/lib/cjs/components/livechatwidget/common/shareObservable.js +45 -0
  40. package/lib/cjs/components/livechatwidget/common/startChat.js +166 -50
  41. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +310 -73
  42. package/lib/cjs/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +8 -0
  43. package/lib/cjs/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +6 -4
  44. package/lib/cjs/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.js +1 -0
  45. package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +5 -10
  46. package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +17 -1
  47. package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +98 -2
  48. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +4 -1
  49. package/lib/cjs/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +11 -0
  50. package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +2 -0
  51. package/lib/cjs/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.js +1 -0
  52. package/lib/cjs/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.js +1 -0
  53. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +14 -0
  54. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +16 -2
  55. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +2 -1
  56. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +52 -0
  57. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +98 -0
  58. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +10 -0
  59. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +117 -0
  60. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +45 -0
  61. package/lib/cjs/contexts/common/ConversationState.js +3 -2
  62. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +11 -8
  63. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +15 -6
  64. package/lib/cjs/contexts/createReducer.js +26 -12
  65. package/lib/cjs/controller/componentController.js +3 -3
  66. package/lib/cjs/plugins/newMessageEventHandler.js +10 -13
  67. package/lib/esm/common/Constants.js +46 -5
  68. package/lib/esm/common/storage/default/defaultCacheManager.js +19 -0
  69. package/lib/esm/common/storage/default/defaultClientDataStoreProvider.js +102 -0
  70. package/lib/esm/common/storage/default/defaultInMemoryDataStore.js +71 -0
  71. package/lib/esm/common/telemetry/TelemetryConstants.js +51 -3
  72. package/lib/esm/common/telemetry/TelemetryHelper.js +13 -1
  73. package/lib/esm/common/telemetry/TelemetryManager.js +14 -5
  74. package/lib/esm/common/telemetry/defaultConfigs/defaultAriaConfig.js +1 -1
  75. package/lib/esm/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +4 -1
  76. package/lib/esm/common/telemetry/loggers/ariaTelemetryLogger.js +55 -17
  77. package/lib/esm/common/telemetry/loggers/consoleLogger.js +6 -5
  78. package/lib/esm/common/utils.js +64 -1
  79. package/lib/esm/components/callingcontainerstateful/CallingContainerStateful.js +14 -0
  80. package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +22 -7
  81. package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +11 -42
  82. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +4 -4
  83. package/lib/esm/components/footerstateful/FooterStateful.js +6 -15
  84. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +9 -3
  85. package/lib/esm/components/headerstateful/HeaderStateful.js +15 -14
  86. package/lib/esm/components/livechatwidget/common/ActivityStreamHandler.js +34 -0
  87. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +14 -0
  88. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.js +1 -0
  89. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +29 -0
  90. package/lib/esm/components/livechatwidget/common/ChatAdapterShim.js +59 -0
  91. package/lib/esm/components/livechatwidget/common/Deferred.js +33 -0
  92. package/lib/esm/components/livechatwidget/common/authHelper.js +50 -0
  93. package/lib/esm/components/livechatwidget/common/createAdapter.js +12 -2
  94. package/lib/esm/components/livechatwidget/common/createFooter.js +4 -15
  95. package/lib/esm/components/livechatwidget/common/createInternetConnectionChangeHandler.js +8 -0
  96. package/lib/esm/components/livechatwidget/common/createMarkdown.js +31 -30
  97. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +36 -21
  98. package/lib/esm/components/livechatwidget/common/endChat.js +89 -11
  99. package/lib/esm/components/livechatwidget/common/initCallingSdk.js +1 -1
  100. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +25 -5
  101. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +134 -41
  102. package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +5 -14
  103. package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +0 -4
  104. package/lib/esm/components/livechatwidget/common/shareObservable.js +38 -0
  105. package/lib/esm/components/livechatwidget/common/startChat.js +161 -53
  106. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +298 -78
  107. package/lib/esm/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +6 -0
  108. package/lib/esm/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +5 -4
  109. package/lib/esm/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.js +1 -0
  110. package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +7 -11
  111. package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +17 -1
  112. package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +87 -2
  113. package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +3 -1
  114. package/lib/esm/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +4 -0
  115. package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +2 -0
  116. package/lib/esm/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.js +1 -0
  117. package/lib/esm/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.js +1 -0
  118. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +5 -0
  119. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +16 -2
  120. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +2 -1
  121. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +41 -0
  122. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +94 -0
  123. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +3 -0
  124. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +107 -0
  125. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +32 -0
  126. package/lib/esm/contexts/common/ConversationState.js +3 -2
  127. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +11 -8
  128. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +13 -6
  129. package/lib/esm/contexts/createReducer.js +26 -11
  130. package/lib/esm/controller/componentController.js +3 -3
  131. package/lib/esm/plugins/newMessageEventHandler.js +10 -12
  132. package/lib/types/common/Constants.d.ts +25 -2
  133. package/lib/types/common/interfaces/IContextDataStore.d.ts +2 -2
  134. package/lib/types/common/storage/default/defaultCacheManager.d.ts +4 -0
  135. package/lib/types/common/storage/default/defaultClientDataStoreProvider.d.ts +2 -0
  136. package/lib/types/common/storage/default/defaultInMemoryDataStore.d.ts +6 -0
  137. package/lib/types/common/telemetry/TelemetryConstants.d.ts +36 -5
  138. package/lib/types/common/telemetry/TelemetryHelper.d.ts +2 -0
  139. package/lib/types/common/telemetry/definitions/Payload.d.ts +12 -9
  140. package/lib/types/common/telemetry/interfaces/ITelemetryConfig.d.ts +3 -3
  141. package/lib/types/common/utils.d.ts +8 -1
  142. package/lib/types/components/confirmationpanestateful/interfaces/IConfirmationPaneStatefulParams.d.ts +4 -4
  143. package/lib/types/components/footerstateful/audionotificationstateful/interfaces/IAudioNotificationStatefulParams.d.ts +0 -1
  144. package/lib/types/components/headerstateful/interfaces/IHeaderStatefulParams.d.ts +2 -1
  145. package/lib/types/components/livechatwidget/common/ActivityStreamHandler.d.ts +14 -0
  146. package/lib/types/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.d.ts +5 -0
  147. package/lib/types/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.d.ts +6 -0
  148. package/lib/types/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.d.ts +7 -0
  149. package/lib/types/components/livechatwidget/common/ChatAdapterShim.d.ts +7 -0
  150. package/lib/types/components/livechatwidget/common/Deferred.d.ts +9 -0
  151. package/lib/types/components/livechatwidget/common/authHelper.d.ts +5 -0
  152. package/lib/types/components/livechatwidget/common/endChat.d.ts +4 -1
  153. package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +6 -2
  154. package/lib/types/components/livechatwidget/common/shareObservable.d.ts +1 -0
  155. package/lib/types/components/livechatwidget/common/startChat.d.ts +4 -2
  156. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetComponentOverrides.d.ts +1 -0
  157. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetControlProps.d.ts +1 -0
  158. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +4 -3
  159. package/lib/types/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.d.ts +2 -2
  160. package/lib/types/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.d.ts +4 -0
  161. package/lib/types/components/reconnectchatpanestateful/interfaces/IReconnectChatPaneStatefulProps.d.ts +1 -1
  162. package/lib/types/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.d.ts +2 -0
  163. package/lib/types/components/webchatcontainerstateful/common/mockchatsdk.d.ts +1 -0
  164. package/lib/types/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.d.ts +4 -0
  165. package/lib/types/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.d.ts +4 -0
  166. package/lib/types/components/webchatcontainerstateful/interfaces/IRenderingMiddlewareProps.d.ts +2 -1
  167. package/lib/types/components/webchatcontainerstateful/interfaces/IWebChatContainerStatefulProps.d.ts +4 -0
  168. package/lib/types/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.d.ts +3 -0
  169. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.d.ts +1 -1
  170. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.d.ts +2 -0
  171. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.d.ts +1 -0
  172. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.d.ts +2 -0
  173. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.d.ts +5 -0
  174. package/lib/types/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.d.ts +1 -0
  175. package/lib/types/contexts/common/ConversationState.d.ts +3 -2
  176. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +4 -2
  177. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +12 -9
  178. package/lib/types/contexts/common/LiveChatWidgetContextInitialState.d.ts +1 -2
  179. package/package.json +9 -9
@@ -1,12 +1,12 @@
1
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
1
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
2
 
3
3
  import { BroadcastEvent, LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
4
- import { BroadcastService, decodeComponentString } from "@microsoft/omnichannel-chat-components";
4
+ import { BroadcastService, decodeComponentString, BroadcastServiceInitialize } from "@microsoft/omnichannel-chat-components";
5
5
  import { Stack } from "@fluentui/react";
6
6
  import React, { useEffect, useRef, useState } from "react";
7
- import { createTimer, getLocaleDirection } from "../../../common/utils";
8
- import { getReconnectIdForAuthenticatedChat, handleUnauthenticatedReconnectChat } from "../common/reconnectChatHelper";
9
- import { initStartChat, prepareStartChat } from "../common/startChat";
7
+ import { createTimer, getBroadcastChannelName, getLocaleDirection, getStateFromCache, getWidgetCacheId, getWidgetEndChatEventName, isNullOrEmptyString, isUndefinedOrEmpty } from "../../../common/utils";
8
+ import { getReconnectIdForAuthenticatedChat, handleUnauthenticatedReconnectChat, startUnauthenticatedReconnectChat } from "../common/reconnectChatHelper";
9
+ import { initStartChat, prepareStartChat, setPreChatAndInitiateChat } from "../common/startChat";
10
10
  import { shouldShowCallingContainer, shouldShowChatButton, shouldShowConfirmationPane, shouldShowEmailTranscriptPane, shouldShowHeader, shouldShowLoadingPane, shouldShowOutOfOfficeHoursPane, shouldShowPostChatLoadingPane, shouldShowPostChatSurveyPane, shouldShowPreChatSurveyPane, shouldShowProactiveChatPane, shouldShowReconnectChatPane, shouldShowWebChatContainer } from "../../../controller/componentController";
11
11
  import CallingContainerStateful from "../../callingcontainerstateful/CallingContainerStateful";
12
12
  import ChatButtonStateful from "../../chatbuttonstateful/ChatButtonStateful";
@@ -32,7 +32,7 @@ import { createFooter } from "../common/createFooter";
32
32
  import { createInternetConnectionChangeHandler } from "../common/createInternetConnectionChangeHandler";
33
33
  import { defaultWebChatContainerStatefulProps } from "../../webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps";
34
34
  import { disposeTelemetryLoggers } from "../common/disposeTelemetryLoggers";
35
- import { endChat } from "../common/endChat";
35
+ import { endChat, prepareEndChat } from "../common/endChat";
36
36
  import { getGeneralStylesForButton } from "../common/getGeneralStylesForButton";
37
37
  import { initCallingSdk } from "../common/initCallingSdk";
38
38
  import { initConfirmationPropsComposer } from "../common/initConfirmationPropsComposer";
@@ -43,8 +43,11 @@ import { startProactiveChat } from "../common/startProactiveChat";
43
43
  import useChatAdapterStore from "../../../hooks/useChatAdapterStore";
44
44
  import useChatContextStore from "../../../hooks/useChatContextStore";
45
45
  import useChatSDKStore from "../../../hooks/useChatSDKStore";
46
+ import { ActivityStreamHandler } from "../common/ActivityStreamHandler";
47
+ import { registerBroadcastServiceForLocalStorage } from "../../../common/storage/default/defaultCacheManager";
48
+ import { defaultClientDataStoreProvider } from "../../../common/storage/default/defaultClientDataStoreProvider";
46
49
  export const LiveChatWidgetStateful = props => {
47
- var _props$webChatContain, _props$styleProps, _props$controlProps, _props$webChatContain3, _props$webChatContain4, _props$styleProps2, _props$controlProps5, _props$componentOverr, _props$controlProps6, _props$componentOverr2, _props$controlProps7, _props$componentOverr3, _props$controlProps8, _props$componentOverr4, _props$controlProps9, _props$componentOverr5, _props$controlProps10, _props$componentOverr6, _props$controlProps11, _props$controlProps12, _props$controlProps13, _props$componentOverr7, _props$controlProps14, _props$componentOverr8, _props$controlProps15, _props$componentOverr9, _props$componentOverr10, _props$componentOverr11;
50
+ var _props$webChatContain, _props$styleProps, _chatSDK$omnichannelC, _props$controlProps, _props$controlProps2, _props$webChatContain3, _props$webChatContain4, _props$styleProps2, _props$controlProps14, _props$controlProps15, _props$componentOverr, _props$controlProps16, _props$componentOverr2, _props$controlProps17, _props$componentOverr3, _props$controlProps18, _props$componentOverr4, _props$controlProps19, _props$componentOverr5, _props$controlProps20, _props$componentOverr6, _props$controlProps21, _props$componentOverr7, _props$controlProps22, _props$controlProps23, _props$componentOverr8, _props$controlProps24, _props$componentOverr9, _props$controlProps25, _props$componentOverr10, _props$componentOverr11, _props$componentOverr12;
48
51
 
49
52
  const [state, dispatch] = useChatContextStore(); // eslint-disable-next-line @typescript-eslint/no-explicit-any
50
53
 
@@ -53,7 +56,8 @@ export const LiveChatWidgetStateful = props => {
53
56
  ...((_props$webChatContain = props.webChatContainerProps) === null || _props$webChatContain === void 0 ? void 0 : _props$webChatContain.webChatStyles)
54
57
  }); // eslint-disable-next-line @typescript-eslint/no-explicit-any
55
58
 
56
- const chatSDK = useChatSDKStore();
59
+ const chatSDK = useChatSDKStore(); // eslint-disable-next-line @typescript-eslint/no-explicit-any
60
+
57
61
  const [voiceVideoCallingSDK, setVoiceVideoCallingSDK] = useState(undefined);
58
62
  const {
59
63
  Composer
@@ -63,62 +67,141 @@ export const LiveChatWidgetStateful = props => {
63
67
  const generalStyles = {
64
68
  root: Object.assign({}, getGeneralStylesForButton(state), (_props$styleProps = props.styleProps) === null || _props$styleProps === void 0 ? void 0 : _props$styleProps.generalStyles)
65
69
  };
70
+ const broadcastServiceChannelName = getBroadcastChannelName(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC === void 0 ? void 0 : _chatSDK$omnichannelC.widgetId, ((_props$controlProps = props.controlProps) === null || _props$controlProps === void 0 ? void 0 : _props$controlProps.widgetInstanceId) ?? "");
71
+ BroadcastServiceInitialize(broadcastServiceChannelName);
66
72
  TelemetryTimers.LcwLoadToChatButtonTimer = createTimer();
67
- const widgetElementId = ((_props$controlProps = props.controlProps) === null || _props$controlProps === void 0 ? void 0 : _props$controlProps.id) || "oc-lcw";
73
+ const widgetElementId = ((_props$controlProps2 = props.controlProps) === null || _props$controlProps2 === void 0 ? void 0 : _props$controlProps2.id) || "oc-lcw";
68
74
  const currentMessageCountRef = useRef(0);
75
+ let widgetStateEventName = "";
76
+
77
+ const initiateEndChatOnBrowserUnload = () => {
78
+ var _DataStoreManager$cli;
79
+
80
+ TelemetryHelper.logActionEvent(LogLevel.INFO, {
81
+ Event: TelemetryEvent.BrowserUnloadEventStarted,
82
+ Description: "Browser unload event received."
83
+ });
84
+ endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, false, false, false); // Clean local storage
85
+
86
+ (_DataStoreManager$cli = DataStoreManager.clientDataStore) === null || _DataStoreManager$cli === void 0 ? void 0 : _DataStoreManager$cli.removeData(widgetStateEventName, "localStorage"); //Dispose calling instance
87
+
88
+ if (voiceVideoCallingSDK) {
89
+ voiceVideoCallingSDK === null || voiceVideoCallingSDK === void 0 ? void 0 : voiceVideoCallingSDK.close();
90
+ } //Message for clearing window[popouTab]
91
+
92
+
93
+ BroadcastService.postMessage({
94
+ eventName: BroadcastEvent.ClosePopoutWindow
95
+ });
96
+ };
97
+
69
98
  useEffect(() => {
70
- var _props$controlProps2, _props$controlProps3, _props$reconnectChatP, _props$controlProps4, _props$chatConfig, _props$chatConfig$Cha, _state$domainStates;
99
+ var _props$controlProps4, _props$controlProps5, _props$controlProps6, _props$controlProps8, _props$chatConfig, _props$chatConfig$Cha, _props$controlProps9, _props$reconnectChatP, _props$chatConfig2, _props$chatConfig2$Li, _props$reconnectChatP4, _state$domainStates;
100
+
101
+ // Add default localStorage support for widget
102
+ if (props.contextDataStore === undefined) {
103
+ var _chatSDK$omnichannelC2, _chatSDK$omnichannelC3, _props$controlProps3;
104
+
105
+ registerBroadcastServiceForLocalStorage(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC2 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC2 === void 0 ? void 0 : _chatSDK$omnichannelC2.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC3 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC3 === void 0 ? void 0 : _chatSDK$omnichannelC3.widgetId, (props === null || props === void 0 ? void 0 : (_props$controlProps3 = props.controlProps) === null || _props$controlProps3 === void 0 ? void 0 : _props$controlProps3.widgetInstanceId) ?? "");
106
+ DataStoreManager.clientDataStore = defaultClientDataStoreProvider();
107
+ } else {
108
+ DataStoreManager.clientDataStore = props.contextDataStore;
109
+ }
71
110
 
72
111
  registerTelemetryLoggers(props, dispatch);
73
112
  createInternetConnectionChangeHandler();
74
- DataStoreManager.clientDataStore = props.contextDataStore ?? undefined;
75
113
  dispatch({
76
114
  type: LiveChatWidgetActionType.SET_WIDGET_ELEMENT_ID,
77
115
  payload: widgetElementId
78
116
  });
79
117
  dispatch({
80
118
  type: LiveChatWidgetActionType.SET_SKIP_CHAT_BUTTON_RENDERING,
81
- payload: ((_props$controlProps2 = props.controlProps) === null || _props$controlProps2 === void 0 ? void 0 : _props$controlProps2.skipChatButtonRendering) || false
119
+ payload: ((_props$controlProps4 = props.controlProps) === null || _props$controlProps4 === void 0 ? void 0 : _props$controlProps4.skipChatButtonRendering) || false
120
+ });
121
+ dispatch({
122
+ type: LiveChatWidgetActionType.SET_E2VV_ENABLED,
123
+ payload: false
82
124
  });
125
+
126
+ if ((_props$controlProps5 = props.controlProps) !== null && _props$controlProps5 !== void 0 && _props$controlProps5.widgetInstanceId && !isNullOrEmptyString((_props$controlProps6 = props.controlProps) === null || _props$controlProps6 === void 0 ? void 0 : _props$controlProps6.widgetInstanceId)) {
127
+ var _props$controlProps7;
128
+
129
+ dispatch({
130
+ type: LiveChatWidgetActionType.SET_WIDGET_INSTANCE_ID,
131
+ payload: (_props$controlProps7 = props.controlProps) === null || _props$controlProps7 === void 0 ? void 0 : _props$controlProps7.widgetInstanceId
132
+ });
133
+ }
134
+
83
135
  initCallingSdk(chatSDK, setVoiceVideoCallingSDK).then(sdkCreated => {
84
136
  sdkCreated && dispatch({
85
137
  type: LiveChatWidgetActionType.SET_E2VV_ENABLED,
86
138
  payload: true
87
139
  });
88
- });
89
-
90
- if (!((_props$controlProps3 = props.controlProps) !== null && _props$controlProps3 !== void 0 && _props$controlProps3.skipChatButtonRendering) && (_props$reconnectChatP = props.reconnectChatPaneProps) !== null && _props$reconnectChatP !== void 0 && _props$reconnectChatP.reconnectId) {
91
- var _props$reconnectChatP2;
92
-
93
- handleUnauthenticatedReconnectChat(dispatch, (_props$reconnectChatP2 = props.reconnectChatPaneProps) === null || _props$reconnectChatP2 === void 0 ? void 0 : _props$reconnectChatP2.reconnectId, initStartChat);
94
- } // Initialize global dir
140
+ }); // Initialize global dir
95
141
 
96
-
97
- const globalDir = ((_props$controlProps4 = props.controlProps) === null || _props$controlProps4 === void 0 ? void 0 : _props$controlProps4.dir) ?? getLocaleDirection((_props$chatConfig = props.chatConfig) === null || _props$chatConfig === void 0 ? void 0 : (_props$chatConfig$Cha = _props$chatConfig.ChatWidgetLanguage) === null || _props$chatConfig$Cha === void 0 ? void 0 : _props$chatConfig$Cha.msdyn_localeid);
142
+ const globalDir = ((_props$controlProps8 = props.controlProps) === null || _props$controlProps8 === void 0 ? void 0 : _props$controlProps8.dir) ?? getLocaleDirection((_props$chatConfig = props.chatConfig) === null || _props$chatConfig === void 0 ? void 0 : (_props$chatConfig$Cha = _props$chatConfig.ChatWidgetLanguage) === null || _props$chatConfig$Cha === void 0 ? void 0 : _props$chatConfig$Cha.msdyn_localeid);
98
143
  dispatch({
99
144
  type: LiveChatWidgetActionType.SET_GLOBAL_DIR,
100
145
  payload: globalDir
101
146
  });
102
147
 
103
- if ((_state$domainStates = state.domainStates) !== null && _state$domainStates !== void 0 && _state$domainStates.chatToken) {
148
+ if (!((_props$controlProps9 = props.controlProps) !== null && _props$controlProps9 !== void 0 && _props$controlProps9.skipChatButtonRendering) && (_props$reconnectChatP = props.reconnectChatPaneProps) !== null && _props$reconnectChatP !== void 0 && _props$reconnectChatP.reconnectId) {
149
+ var _props$reconnectChatP2, _props$reconnectChatP3;
150
+
151
+ startUnauthenticatedReconnectChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, (_props$reconnectChatP2 = props.reconnectChatPaneProps) === null || _props$reconnectChatP2 === void 0 ? void 0 : _props$reconnectChatP2.isReconnectEnabled, (_props$reconnectChatP3 = props.reconnectChatPaneProps) === null || _props$reconnectChatP3 === void 0 ? void 0 : _props$reconnectChatP3.reconnectId, initStartChat);
152
+ return;
153
+ } // Checks if reconnectId is present for auth chat. If it is present, then it shows reconnect chat pane,
154
+ // where customer can choose to continue previous conversation or start new conversation
155
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
156
+
157
+
158
+ const isAuthenticationSettingsEnabled = (_props$chatConfig2 = props.chatConfig) !== null && _props$chatConfig2 !== void 0 && (_props$chatConfig2$Li = _props$chatConfig2.LiveChatConfigAuthSettings) !== null && _props$chatConfig2$Li !== void 0 && _props$chatConfig2$Li.msdyn_javascriptclientfunction ? true : false;
159
+
160
+ if (!state.appStates.skipChatButtonRendering && state.appStates.conversationState === ConversationState.Active && isAuthenticationSettingsEnabled === true && (_props$reconnectChatP4 = props.reconnectChatPaneProps) !== null && _props$reconnectChatP4 !== void 0 && _props$reconnectChatP4.isReconnectEnabled) {
161
+ getReconnectIdForAuthenticatedChat(props, chatSDK).then(authReconnectId => {
162
+ if (authReconnectId && !state.appStates.reconnectId) {
163
+ dispatch({
164
+ type: LiveChatWidgetActionType.SET_RECONNECT_ID,
165
+ payload: authReconnectId
166
+ });
167
+ dispatch({
168
+ type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
169
+ payload: ConversationState.ReconnectChat
170
+ });
171
+ }
172
+ });
173
+ return;
174
+ }
175
+
176
+ if (!state.appStates.skipChatButtonRendering && !isUndefinedOrEmpty((_state$domainStates = state.domainStates) === null || _state$domainStates === void 0 ? void 0 : _state$domainStates.liveChatContext) && state.appStates.conversationState === ConversationState.Active) {
104
177
  var _state$domainStates2;
105
178
 
106
179
  const optionalParams = {
107
- liveChatContext: {
108
- chatToken: (_state$domainStates2 = state.domainStates) === null || _state$domainStates2 === void 0 ? void 0 : _state$domainStates2.chatToken
109
- }
180
+ liveChatContext: (_state$domainStates2 = state.domainStates) === null || _state$domainStates2 === void 0 ? void 0 : _state$domainStates2.liveChatContext
110
181
  };
111
- initStartChat(chatSDK, dispatch, setAdapter, optionalParams);
112
- }
113
- }, []);
182
+ initStartChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, optionalParams);
183
+ return;
184
+ } // All other case should show start chat button, skipChatButtonRendering will take care of it own
185
+
186
+
187
+ dispatch({
188
+ type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
189
+ payload: ConversationState.Closed
190
+ });
191
+ }, []); // useEffect for when skip chat button rendering
192
+
114
193
  useEffect(() => {
115
194
  if (state.appStates.skipChatButtonRendering) {
116
- var _props$reconnectChatP3;
195
+ var _props$reconnectChatP5;
196
+
197
+ BroadcastService.postMessage({
198
+ eventName: BroadcastEvent.ChatInitiated
199
+ });
117
200
 
118
- if ((_props$reconnectChatP3 = props.reconnectChatPaneProps) !== null && _props$reconnectChatP3 !== void 0 && _props$reconnectChatP3.reconnectId && !state.appStates.reconnectId) {
119
- var _props$reconnectChatP4;
201
+ if ((_props$reconnectChatP5 = props.reconnectChatPaneProps) !== null && _props$reconnectChatP5 !== void 0 && _props$reconnectChatP5.reconnectId && !state.appStates.reconnectId) {
202
+ var _props$reconnectChatP6, _props$reconnectChatP7, _props$reconnectChatP8;
120
203
 
121
- handleUnauthenticatedReconnectChat(dispatch, (_props$reconnectChatP4 = props.reconnectChatPaneProps) === null || _props$reconnectChatP4 === void 0 ? void 0 : _props$reconnectChatP4.reconnectId, initStartChat);
204
+ handleUnauthenticatedReconnectChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, (_props$reconnectChatP6 = props.reconnectChatPaneProps) === null || _props$reconnectChatP6 === void 0 ? void 0 : _props$reconnectChatP6.isReconnectEnabled, (_props$reconnectChatP7 = props.reconnectChatPaneProps) === null || _props$reconnectChatP7 === void 0 ? void 0 : _props$reconnectChatP7.reconnectId, initStartChat, (_props$reconnectChatP8 = props.reconnectChatPaneProps) === null || _props$reconnectChatP8 === void 0 ? void 0 : _props$reconnectChatP8.redirectInSameWindow);
122
205
  } else {
123
206
  getReconnectIdForAuthenticatedChat(props, chatSDK).then(authReconnectId => {
124
207
  if (authReconnectId && !state.appStates.reconnectId) {
@@ -131,24 +214,50 @@ export const LiveChatWidgetStateful = props => {
131
214
  payload: ConversationState.ReconnectChat
132
215
  });
133
216
  } else {
134
- dispatch({
135
- type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
136
- payload: ConversationState.Loading
137
- });
138
- initStartChat(chatSDK, dispatch, setAdapter);
217
+ var _state$domainStates3;
218
+
219
+ const chatStartedSkippingChatButtonRendering = {
220
+ eventName: BroadcastEvent.StartChatSkippingChatButtonRendering
221
+ };
222
+ BroadcastService.postMessage(chatStartedSkippingChatButtonRendering);
223
+
224
+ if (!isUndefinedOrEmpty((_state$domainStates3 = state.domainStates) === null || _state$domainStates3 === void 0 ? void 0 : _state$domainStates3.liveChatContext) && state.appStates.conversationState === ConversationState.Active) {
225
+ var _state$domainStates4;
226
+
227
+ const optionalParams = {
228
+ liveChatContext: (_state$domainStates4 = state.domainStates) === null || _state$domainStates4 === void 0 ? void 0 : _state$domainStates4.liveChatContext
229
+ };
230
+ initStartChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, optionalParams);
231
+ } else {
232
+ setPreChatAndInitiateChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter);
233
+ }
139
234
  }
140
235
  });
141
236
  }
142
237
  }
143
- }, [state.appStates.skipChatButtonRendering]);
238
+ }, [state.appStates.skipChatButtonRendering]); // useEffect for when skip chat button rendering
239
+
144
240
  useEffect(() => {
145
- BroadcastService.getMessageByEventName("StartProactiveChat").subscribe(msg => {
241
+ var _chatSDK$omnichannelC8, _chatSDK$omnichannelC9, _props$controlProps12;
242
+
243
+ // Add the custom context on receiving the SetCustomContext event
244
+ BroadcastService.getMessageByEventName(BroadcastEvent.SetCustomContext).subscribe(msg => {
245
+ TelemetryHelper.logActionEvent(LogLevel.INFO, {
246
+ Event: TelemetryEvent.CustomContextReceived,
247
+ Description: "CustomContext received."
248
+ });
249
+ dispatch({
250
+ type: LiveChatWidgetActionType.SET_CUSTOM_CONTEXT,
251
+ payload: msg === null || msg === void 0 ? void 0 : msg.payload
252
+ });
253
+ });
254
+ BroadcastService.getMessageByEventName(BroadcastEvent.StartProactiveChat).subscribe(msg => {
146
255
  TelemetryHelper.logActionEvent(LogLevel.INFO, {
147
256
  Event: TelemetryEvent.StartProactiveChatEventReceived,
148
257
  Description: "Start proactive chat event received."
149
258
  });
150
259
 
151
- if (canStartProactiveChat.current) {
260
+ if (canStartProactiveChat.current === true) {
152
261
  var _msg$payload, _msg$payload2, _msg$payload3;
153
262
 
154
263
  startProactiveChat(dispatch, msg === null || msg === void 0 ? void 0 : (_msg$payload = msg.payload) === null || _msg$payload === void 0 ? void 0 : _msg$payload.notificationConfig, msg === null || msg === void 0 ? void 0 : (_msg$payload2 = msg.payload) === null || _msg$payload2 === void 0 ? void 0 : _msg$payload2.enablePreChat, msg === null || msg === void 0 ? void 0 : (_msg$payload3 = msg.payload) === null || _msg$payload3 === void 0 ? void 0 : _msg$payload3.inNewWindow);
@@ -158,39 +267,127 @@ export const LiveChatWidgetStateful = props => {
158
267
  Description: "Start proactive chat method called, when chat was already triggered."
159
268
  });
160
269
  }
161
- });
162
- window.addEventListener("beforeunload", () => {
163
- disposeTelemetryLoggers();
164
- });
270
+ }); // Start chat from SDK Event
165
271
 
166
- if (state.appStates.conversationEndedByAgent) {
167
- endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter);
168
- }
169
- }, []);
170
- useEffect(() => {
171
- canStartProactiveChat.current = state.appStates.conversationState === ConversationState.Closed;
272
+ BroadcastService.getMessageByEventName(BroadcastEvent.StartChat).subscribe(() => {
273
+ var _chatSDK$omnichannelC4, _chatSDK$omnichannelC5, _props$controlProps10;
172
274
 
173
- if (state.appStates.conversationState === ConversationState.Active) {
174
- chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.onNewMessage(() => {
275
+ TelemetryHelper.logActionEvent(LogLevel.INFO, {
276
+ Event: TelemetryEvent.StartChatEventRecevied,
277
+ Description: "Start chat event received."
278
+ });
279
+ const persistedState = getStateFromCache(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC4 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC4 === void 0 ? void 0 : _chatSDK$omnichannelC4.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC5 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC5 === void 0 ? void 0 : _chatSDK$omnichannelC5.widgetId, (props === null || props === void 0 ? void 0 : (_props$controlProps10 = props.controlProps) === null || _props$controlProps10 === void 0 ? void 0 : _props$controlProps10.widgetInstanceId) ?? ""); // Chat not found in cache
280
+
281
+ if (persistedState === undefined) {
175
282
  BroadcastService.postMessage({
176
- eventName: BroadcastEvent.NewMessageNotification
283
+ eventName: BroadcastEvent.ChatInitiated
284
+ });
285
+ prepareStartChat(props, chatSDK, state, dispatch, setAdapter);
286
+ return;
287
+ } // Chat exist in cache
288
+
289
+
290
+ if (persistedState) {
291
+ var _persistedState$domai, _persistedState$domai2, _persistedState$domai3, _persistedState$domai4;
292
+
293
+ // Only initiate new chat if widget state in cache in one of the followings
294
+ if (persistedState.appStates.conversationState === ConversationState.Closed || persistedState.appStates.conversationState === ConversationState.InActive || persistedState.appStates.conversationState === ConversationState.Postchat) {
295
+ BroadcastService.postMessage({
296
+ eventName: BroadcastEvent.ChatInitiated
297
+ });
298
+ prepareStartChat(props, chatSDK, state, dispatch, setAdapter);
299
+ return;
300
+ } // If minimized, maximize the chat
301
+
302
+
303
+ dispatch({
304
+ type: LiveChatWidgetActionType.SET_MINIMIZED,
305
+ payload: false
177
306
  });
307
+ BroadcastService.postMessage({
308
+ eventName: BroadcastEvent.MaximizeChat,
309
+ payload: {
310
+ height: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai = persistedState.domainStates) === null || _persistedState$domai === void 0 ? void 0 : (_persistedState$domai2 = _persistedState$domai.widgetSize) === null || _persistedState$domai2 === void 0 ? void 0 : _persistedState$domai2.height,
311
+ width: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai3 = persistedState.domainStates) === null || _persistedState$domai3 === void 0 ? void 0 : (_persistedState$domai4 = _persistedState$domai3.widgetSize) === null || _persistedState$domai4 === void 0 ? void 0 : _persistedState$domai4.width
312
+ }
313
+ });
314
+ }
315
+ }); // End chat
316
+
317
+ BroadcastService.getMessageByEventName(BroadcastEvent.InitiateEndChat).subscribe(async () => {
318
+ if (state.appStates.skipChatButtonRendering !== true) {
319
+ var _chatSDK$omnichannelC6, _chatSDK$omnichannelC7, _props$controlProps11;
320
+
321
+ // This is to ensure to get latest state from cache in multitab
322
+ const persistedState = getStateFromCache(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC6 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC6 === void 0 ? void 0 : _chatSDK$omnichannelC6.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC7 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC7 === void 0 ? void 0 : _chatSDK$omnichannelC7.widgetId, (props === null || props === void 0 ? void 0 : (_props$controlProps11 = props.controlProps) === null || _props$controlProps11 === void 0 ? void 0 : _props$controlProps11.widgetInstanceId) ?? "");
323
+
324
+ if (persistedState && persistedState.appStates.conversationState === ConversationState.Active) {
325
+ prepareEndChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, state);
326
+ } else {
327
+ const skipEndChatSDK = true;
328
+ const skipCloseChat = false;
329
+ endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, skipEndChatSDK, skipCloseChat);
330
+ }
331
+ }
332
+
333
+ BroadcastService.postMessage({
334
+ eventName: BroadcastEvent.CloseChat
178
335
  });
179
- } // Track the message count
336
+ }); // End chat on browser unload
180
337
 
338
+ BroadcastService.getMessageByEventName(BroadcastEvent.InitiateEndChatOnBrowserUnload).subscribe(() => {
339
+ initiateEndChatOnBrowserUnload();
340
+ }); // Listen to end chat event from other tabs
181
341
 
342
+ const endChatEventName = getWidgetEndChatEventName(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC8 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC8 === void 0 ? void 0 : _chatSDK$omnichannelC8.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC9 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC9 === void 0 ? void 0 : _chatSDK$omnichannelC9.widgetId, ((_props$controlProps12 = props.controlProps) === null || _props$controlProps12 === void 0 ? void 0 : _props$controlProps12.widgetInstanceId) ?? "");
343
+ BroadcastService.getMessageByEventName(endChatEventName).subscribe(async () => {
344
+ endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, false, false, false);
345
+ return;
346
+ }); // When conversation ended by agent
347
+
348
+ if (state.appStates.conversationEndedByAgent) {
349
+ endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter);
350
+ } //Listen to WidgetSize, used for minimize to maximize
351
+
352
+
353
+ BroadcastService.getMessageByEventName("WidgetSize").subscribe(msg => {
354
+ dispatch({
355
+ type: LiveChatWidgetActionType.SET_WIDGET_SIZE,
356
+ payload: msg === null || msg === void 0 ? void 0 : msg.payload
357
+ });
358
+ });
359
+ return () => {
360
+ disposeTelemetryLoggers();
361
+ };
362
+ }, []);
363
+ useEffect(() => {
364
+ // On new message
182
365
  if (state.appStates.conversationState === ConversationState.Active) {
183
366
  chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.onNewMessage(() => {
367
+ // Track the message count
184
368
  currentMessageCountRef.current++;
185
369
  dispatch({
186
370
  type: LiveChatWidgetActionType.SET_UNREAD_MESSAGE_COUNT,
187
371
  payload: currentMessageCountRef.current + 1
372
+ }); // New message notification
373
+
374
+ BroadcastService.postMessage({
375
+ eventName: BroadcastEvent.NewMessageNotification
188
376
  });
189
377
  });
190
378
  }
191
- }, [state.appStates.conversationState]); // Reset the UnreadMessageCount when minimized is toggled and broadcast it.
379
+ }, [state.appStates.conversationState]);
380
+ useEffect(() => {
381
+ canStartProactiveChat.current = state.appStates.conversationState === ConversationState.Closed && !state.appStates.proactiveChatStates.proactiveChatInNewWindow;
382
+ }, [state.appStates.conversationState, state.appStates.proactiveChatStates.proactiveChatInNewWindow]); // Reset the UnreadMessageCount when minimized is toggled and broadcast it.
192
383
 
193
384
  useEffect(() => {
385
+ if (state.appStates.isMinimized) {
386
+ ActivityStreamHandler.cork();
387
+ } else {
388
+ setTimeout(() => ActivityStreamHandler.uncork(), 500);
389
+ }
390
+
194
391
  currentMessageCountRef.current = -1;
195
392
  dispatch({
196
393
  type: LiveChatWidgetActionType.SET_UNREAD_MESSAGE_COUNT,
@@ -205,7 +402,7 @@ export const LiveChatWidgetStateful = props => {
205
402
  }, [state.appStates.isMinimized]); // Broadcast the UnreadMessageCount state on any change.
206
403
 
207
404
  useEffect(() => {
208
- if (state.appStates.isMinimized && state.appStates.unreadMessageCount > 0) {
405
+ if (state.appStates.isMinimized === true && state.appStates.unreadMessageCount > 0) {
209
406
  const customEvent = {
210
407
  elementType: ElementType.Custom,
211
408
  eventName: BroadcastEvent.UnreadMessageCount,
@@ -220,29 +417,52 @@ export const LiveChatWidgetStateful = props => {
220
417
  setWebChatStyles({ ...webChatStyles,
221
418
  ...((_props$webChatContain2 = props.webChatContainerProps) === null || _props$webChatContain2 === void 0 ? void 0 : _props$webChatContain2.webChatStyles)
222
419
  });
223
- }, [(_props$webChatContain3 = props.webChatContainerProps) === null || _props$webChatContain3 === void 0 ? void 0 : _props$webChatContain3.webChatStyles]);
420
+ }, [(_props$webChatContain3 = props.webChatContainerProps) === null || _props$webChatContain3 === void 0 ? void 0 : _props$webChatContain3.webChatStyles]); // Publish chat widget state
421
+
422
+ useEffect(() => {
423
+ var _props$chatSDK, _props$chatSDK$omnich, _props$chatSDK2, _props$chatSDK2$omnic, _props$controlProps13;
424
+
425
+ // Only activate these windows events when conversation state is active and chat widget is in popout mode
426
+ // Ghost chat scenarios
427
+
428
+ /* COMMENTING THIS CODE FOR PARITY WITH OLD LCW
429
+ if (state.appStates.conversationState === ConversationState.Active &&
430
+ props.controlProps?.skipChatButtonRendering === true) {
431
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
432
+
433
+ window.onbeforeunload = function () {
434
+ const prompt = Constants.BrowserUnloadConfirmationMessage;
435
+ return prompt;
436
+ };
437
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
438
+ window.onunload = function () {
439
+ initiateEndChatOnBrowserUnload();
440
+ };
441
+ }*/
442
+ widgetStateEventName = getWidgetCacheId(props === null || props === void 0 ? void 0 : (_props$chatSDK = props.chatSDK) === null || _props$chatSDK === void 0 ? void 0 : (_props$chatSDK$omnich = _props$chatSDK.omnichannelConfig) === null || _props$chatSDK$omnich === void 0 ? void 0 : _props$chatSDK$omnich.orgId, props === null || props === void 0 ? void 0 : (_props$chatSDK2 = props.chatSDK) === null || _props$chatSDK2 === void 0 ? void 0 : (_props$chatSDK2$omnic = _props$chatSDK2.omnichannelConfig) === null || _props$chatSDK2$omnic === void 0 ? void 0 : _props$chatSDK2$omnic.widgetId, (props === null || props === void 0 ? void 0 : (_props$controlProps13 = props.controlProps) === null || _props$controlProps13 === void 0 ? void 0 : _props$controlProps13.widgetInstanceId) ?? "");
443
+ const chatWidgetStateChangeEvent = {
444
+ eventName: widgetStateEventName,
445
+ payload: { ...state
446
+ }
447
+ };
448
+ BroadcastService.postMessage(chatWidgetStateChangeEvent);
449
+ }, [state]);
224
450
  const webChatProps = initWebChatComposer(props, chatSDK, state, dispatch, setWebChatStyles);
225
451
 
226
452
  const setPostChatContextRelay = () => setPostChatContextAndLoadSurvey(chatSDK, dispatch); // eslint-disable-next-line @typescript-eslint/no-explicit-any
227
453
 
228
454
 
229
- const endChatRelay = (adapter, skipEndChatSDK, skipCloseChat) => endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, skipEndChatSDK, skipCloseChat);
455
+ const endChatRelay = (adapter, skipEndChatSDK, skipCloseChat, postMessageToOtherTab) => endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, skipEndChatSDK, skipCloseChat, postMessageToOtherTab); // eslint-disable-next-line @typescript-eslint/no-explicit-any
230
456
 
231
- const prepareStartChatRelay = () => prepareStartChat(props, chatSDK, state, dispatch, setAdapter); // eslint-disable-next-line @typescript-eslint/no-explicit-any
232
457
 
458
+ const prepareEndChatRelay = (adapter, state) => prepareEndChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, state);
233
459
 
234
- const initStartChatRelay = (optionalParams, persistedState) => initStartChat(chatSDK, dispatch, setAdapter, optionalParams, persistedState);
460
+ const prepareStartChatRelay = () => prepareStartChat(props, chatSDK, state, dispatch, setAdapter); // eslint-disable-next-line @typescript-eslint/no-explicit-any
235
461
 
236
- const confirmationPaneProps = initConfirmationPropsComposer(props); // publish chat widget state
237
462
 
238
- useEffect(() => {
239
- const chatWidgetStateChangeEvent = {
240
- eventName: BroadcastEvent.ChatWidgetStateChanged,
241
- payload: { ...state
242
- }
243
- };
244
- BroadcastService.postMessage(chatWidgetStateChangeEvent);
245
- }, [state]);
463
+ const initStartChatRelay = (optionalParams, persistedState) => initStartChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, optionalParams, persistedState);
464
+
465
+ const confirmationPaneProps = initConfirmationPropsComposer(props);
246
466
  return /*#__PURE__*/React.createElement(Composer, _extends({}, webChatProps, {
247
467
  styleOptions: webChatStyles,
248
468
  directLine: ((_props$webChatContain4 = props.webChatContainerProps) === null || _props$webChatContain4 === void 0 ? void 0 : _props$webChatContain4.directLine) ?? adapter ?? defaultWebChatContainerStatefulProps.directLine
@@ -250,28 +470,28 @@ export const LiveChatWidgetStateful = props => {
250
470
  id: widgetElementId,
251
471
  styles: generalStyles,
252
472
  className: (_props$styleProps2 = props.styleProps) === null || _props$styleProps2 === void 0 ? void 0 : _props$styleProps2.className
253
- }, !((_props$controlProps5 = props.controlProps) !== null && _props$controlProps5 !== void 0 && _props$controlProps5.hideChatButton) && shouldShowChatButton(state) && (decodeComponentString((_props$componentOverr = props.componentOverrides) === null || _props$componentOverr === void 0 ? void 0 : _props$componentOverr.chatButton) || /*#__PURE__*/React.createElement(ChatButtonStateful, {
473
+ }, !((_props$controlProps14 = props.controlProps) !== null && _props$controlProps14 !== void 0 && _props$controlProps14.hideChatButton) && !((_props$controlProps15 = props.controlProps) !== null && _props$controlProps15 !== void 0 && _props$controlProps15.skipChatButtonRendering) && shouldShowChatButton(state) && (decodeComponentString((_props$componentOverr = props.componentOverrides) === null || _props$componentOverr === void 0 ? void 0 : _props$componentOverr.chatButton) || /*#__PURE__*/React.createElement(ChatButtonStateful, {
254
474
  buttonProps: props.chatButtonProps,
255
475
  outOfOfficeButtonProps: props.outOfOfficeChatButtonProps,
256
476
  startChat: prepareStartChatRelay
257
- })), !((_props$controlProps6 = props.controlProps) !== null && _props$controlProps6 !== void 0 && _props$controlProps6.hideProactiveChatPane) && shouldShowProactiveChatPane(state) && (decodeComponentString((_props$componentOverr2 = props.componentOverrides) === null || _props$componentOverr2 === void 0 ? void 0 : _props$componentOverr2.proactiveChatPane) || /*#__PURE__*/React.createElement(ProactiveChatPaneStateful, {
477
+ })), !((_props$controlProps16 = props.controlProps) !== null && _props$controlProps16 !== void 0 && _props$controlProps16.hideProactiveChatPane) && shouldShowProactiveChatPane(state) && (decodeComponentString((_props$componentOverr2 = props.componentOverrides) === null || _props$componentOverr2 === void 0 ? void 0 : _props$componentOverr2.proactiveChatPane) || /*#__PURE__*/React.createElement(ProactiveChatPaneStateful, {
258
478
  proactiveChatProps: props.proactiveChatPaneProps,
259
479
  startChat: prepareStartChatRelay
260
- })), !((_props$controlProps7 = props.controlProps) !== null && _props$controlProps7 !== void 0 && _props$controlProps7.hideHeader) && shouldShowHeader(state) && (decodeComponentString((_props$componentOverr3 = props.componentOverrides) === null || _props$componentOverr3 === void 0 ? void 0 : _props$componentOverr3.header) || /*#__PURE__*/React.createElement(HeaderStateful, {
480
+ })), !((_props$controlProps17 = props.controlProps) !== null && _props$controlProps17 !== void 0 && _props$controlProps17.hideHeader) && shouldShowHeader(state) && (decodeComponentString((_props$componentOverr3 = props.componentOverrides) === null || _props$componentOverr3 === void 0 ? void 0 : _props$componentOverr3.header) || /*#__PURE__*/React.createElement(HeaderStateful, {
261
481
  headerProps: props.headerProps,
262
482
  outOfOfficeHeaderProps: props.outOfOfficeHeaderProps,
263
483
  endChat: endChatRelay
264
- })), !((_props$controlProps8 = props.controlProps) !== null && _props$controlProps8 !== void 0 && _props$controlProps8.hideLoadingPane) && shouldShowLoadingPane(state) && (decodeComponentString((_props$componentOverr4 = props.componentOverrides) === null || _props$componentOverr4 === void 0 ? void 0 : _props$componentOverr4.loadingPane) || /*#__PURE__*/React.createElement(LoadingPaneStateful, props.loadingPaneProps)), !((_props$controlProps9 = props.controlProps) !== null && _props$controlProps9 !== void 0 && _props$controlProps9.hideOutOfOfficeHoursPane) && shouldShowOutOfOfficeHoursPane(state) && (decodeComponentString((_props$componentOverr5 = props.componentOverrides) === null || _props$componentOverr5 === void 0 ? void 0 : _props$componentOverr5.outOfOfficeHoursPane) || /*#__PURE__*/React.createElement(OutOfOfficeHoursPaneStateful, props.outOfOfficeHoursPaneProps)), !((_props$controlProps10 = props.controlProps) !== null && _props$controlProps10 !== void 0 && _props$controlProps10.hideReconnectChatPane) && shouldShowReconnectChatPane(state) && (decodeComponentString((_props$componentOverr6 = props.componentOverrides) === null || _props$componentOverr6 === void 0 ? void 0 : _props$componentOverr6.reconnectChatPane) || /*#__PURE__*/React.createElement(ReconnectChatPaneStateful, {
484
+ })), !((_props$controlProps18 = props.controlProps) !== null && _props$controlProps18 !== void 0 && _props$controlProps18.hideLoadingPane) && shouldShowLoadingPane(state) && (decodeComponentString((_props$componentOverr4 = props.componentOverrides) === null || _props$componentOverr4 === void 0 ? void 0 : _props$componentOverr4.loadingPane) || /*#__PURE__*/React.createElement(LoadingPaneStateful, props.loadingPaneProps)), !((_props$controlProps19 = props.controlProps) !== null && _props$controlProps19 !== void 0 && _props$controlProps19.hideOutOfOfficeHoursPane) && shouldShowOutOfOfficeHoursPane(state) && (decodeComponentString((_props$componentOverr5 = props.componentOverrides) === null || _props$componentOverr5 === void 0 ? void 0 : _props$componentOverr5.outOfOfficeHoursPane) || /*#__PURE__*/React.createElement(OutOfOfficeHoursPaneStateful, props.outOfOfficeHoursPaneProps)), !((_props$controlProps20 = props.controlProps) !== null && _props$controlProps20 !== void 0 && _props$controlProps20.hideReconnectChatPane) && shouldShowReconnectChatPane(state) && (decodeComponentString((_props$componentOverr6 = props.componentOverrides) === null || _props$componentOverr6 === void 0 ? void 0 : _props$componentOverr6.reconnectChatPane) || /*#__PURE__*/React.createElement(ReconnectChatPaneStateful, {
265
485
  reconnectChatProps: props.reconnectChatPaneProps,
266
486
  initStartChat: initStartChatRelay
267
- })), !((_props$controlProps11 = props.controlProps) !== null && _props$controlProps11 !== void 0 && _props$controlProps11.hidePreChatSurveyPane) && shouldShowPreChatSurveyPane(state) && /*#__PURE__*/React.createElement(PreChatSurveyPaneStateful, {
487
+ })), !((_props$controlProps21 = props.controlProps) !== null && _props$controlProps21 !== void 0 && _props$controlProps21.hidePreChatSurveyPane) && shouldShowPreChatSurveyPane(state) && (decodeComponentString((_props$componentOverr7 = props.componentOverrides) === null || _props$componentOverr7 === void 0 ? void 0 : _props$componentOverr7.preChatSurveyPane) || /*#__PURE__*/React.createElement(PreChatSurveyPaneStateful, {
268
488
  surveyProps: props.preChatSurveyPaneProps,
269
489
  initStartChat: initStartChatRelay
270
- }), !((_props$controlProps12 = props.controlProps) !== null && _props$controlProps12 !== void 0 && _props$controlProps12.hideCallingContainer) && shouldShowCallingContainer(state) && /*#__PURE__*/React.createElement(CallingContainerStateful, _extends({
490
+ })), !((_props$controlProps22 = props.controlProps) !== null && _props$controlProps22 !== void 0 && _props$controlProps22.hideCallingContainer) && shouldShowCallingContainer(state) && /*#__PURE__*/React.createElement(CallingContainerStateful, _extends({
271
491
  voiceVideoCallingSdk: voiceVideoCallingSDK
272
- }, props.callingContainerProps)), !((_props$controlProps13 = props.controlProps) !== null && _props$controlProps13 !== void 0 && _props$controlProps13.hideWebChatContainer) && shouldShowWebChatContainer(state) && (decodeComponentString((_props$componentOverr7 = props.componentOverrides) === null || _props$componentOverr7 === void 0 ? void 0 : _props$componentOverr7.webChatContainer) || /*#__PURE__*/React.createElement(WebChatContainerStateful, props.webChatContainerProps)), !((_props$controlProps14 = props.controlProps) !== null && _props$controlProps14 !== void 0 && _props$controlProps14.hideConfirmationPane) && shouldShowConfirmationPane(state) && (decodeComponentString((_props$componentOverr8 = props.componentOverrides) === null || _props$componentOverr8 === void 0 ? void 0 : _props$componentOverr8.confirmationPane) || /*#__PURE__*/React.createElement(ConfirmationPaneStateful, _extends({}, confirmationPaneProps, {
492
+ }, props.callingContainerProps)), !((_props$controlProps23 = props.controlProps) !== null && _props$controlProps23 !== void 0 && _props$controlProps23.hideWebChatContainer) && shouldShowWebChatContainer(state) && (decodeComponentString((_props$componentOverr8 = props.componentOverrides) === null || _props$componentOverr8 === void 0 ? void 0 : _props$componentOverr8.webChatContainer) || /*#__PURE__*/React.createElement(WebChatContainerStateful, props.webChatContainerProps)), !((_props$controlProps24 = props.controlProps) !== null && _props$controlProps24 !== void 0 && _props$controlProps24.hideConfirmationPane) && shouldShowConfirmationPane(state) && (decodeComponentString((_props$componentOverr9 = props.componentOverrides) === null || _props$componentOverr9 === void 0 ? void 0 : _props$componentOverr9.confirmationPane) || /*#__PURE__*/React.createElement(ConfirmationPaneStateful, _extends({}, confirmationPaneProps, {
273
493
  setPostChatContext: setPostChatContextRelay,
274
- endChat: endChatRelay
275
- }))), !((_props$controlProps15 = props.controlProps) !== null && _props$controlProps15 !== void 0 && _props$controlProps15.hidePostChatLoadingPane) && shouldShowPostChatLoadingPane(state) && (decodeComponentString((_props$componentOverr9 = props.componentOverrides) === null || _props$componentOverr9 === void 0 ? void 0 : _props$componentOverr9.postChatLoadingPane) || /*#__PURE__*/React.createElement(PostChatLoadingPaneStateful, props.postChatLoadingPaneProps)), shouldShowPostChatSurveyPane(state) && (decodeComponentString((_props$componentOverr10 = props.componentOverrides) === null || _props$componentOverr10 === void 0 ? void 0 : _props$componentOverr10.postChatSurveyPane) || /*#__PURE__*/React.createElement(PostChatSurveyPaneStateful, _extends({}, props.postChatSurveyPaneProps, props.chatSDK))), createFooter(props, state), shouldShowEmailTranscriptPane(state) && (decodeComponentString((_props$componentOverr11 = props.componentOverrides) === null || _props$componentOverr11 === void 0 ? void 0 : _props$componentOverr11.emailTranscriptPane) || /*#__PURE__*/React.createElement(EmailTranscriptPaneStateful, props.emailTranscriptPane))));
494
+ prepareEndChat: prepareEndChatRelay
495
+ }))), !((_props$controlProps25 = props.controlProps) !== null && _props$controlProps25 !== void 0 && _props$controlProps25.hidePostChatLoadingPane) && shouldShowPostChatLoadingPane(state) && (decodeComponentString((_props$componentOverr10 = props.componentOverrides) === null || _props$componentOverr10 === void 0 ? void 0 : _props$componentOverr10.postChatLoadingPane) || /*#__PURE__*/React.createElement(PostChatLoadingPaneStateful, props.postChatLoadingPaneProps)), shouldShowPostChatSurveyPane(state) && (decodeComponentString((_props$componentOverr11 = props.componentOverrides) === null || _props$componentOverr11 === void 0 ? void 0 : _props$componentOverr11.postChatSurveyPane) || /*#__PURE__*/React.createElement(PostChatSurveyPaneStateful, _extends({}, props.postChatSurveyPaneProps, props.chatSDK))), createFooter(props, state), shouldShowEmailTranscriptPane(state) && (decodeComponentString((_props$componentOverr12 = props.componentOverrides) === null || _props$componentOverr12 === void 0 ? void 0 : _props$componentOverr12.emailTranscriptPane) || /*#__PURE__*/React.createElement(EmailTranscriptPaneStateful, props.emailTranscriptPane))));
276
496
  };
277
497
  export default LiveChatWidgetStateful;
@@ -3,6 +3,8 @@ import { LoadingPane } from "@microsoft/omnichannel-chat-components";
3
3
  import { defaultGeneralPostChatLoadingPaneStyleProps } from "./common/defaultgeneralPostChatLoadingPaneStyleProps";
4
4
  import { findAllFocusableElement } from "../../common/utils";
5
5
  import useChatContextStore from "../../hooks/useChatContextStore";
6
+ import { TelemetryHelper } from "../../common/telemetry/TelemetryHelper";
7
+ import { LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
6
8
  export const PostChatLoadingPaneStateful = props => {
7
9
  var _props$styleProps;
8
10
 
@@ -28,6 +30,10 @@ export const PostChatLoadingPaneStateful = props => {
28
30
  if (firstElement && firstElement[0]) {
29
31
  firstElement[0].focus();
30
32
  }
33
+
34
+ TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
35
+ Event: TelemetryEvent.PostChatSurveyLoadingPaneLoaded
36
+ });
31
37
  }, []);
32
38
  return /*#__PURE__*/React.createElement(LoadingPane, {
33
39
  componentOverrides: props.componentOverrides,
@@ -5,18 +5,19 @@ import { TelemetryHelper } from "../../common/telemetry/TelemetryHelper";
5
5
  import { defaultGeneralPostChatSurveyPaneStyleProps } from "./common/defaultStyleProps/defaultgeneralPostChatSurveyPaneStyleProps";
6
6
  import { findAllFocusableElement } from "../../common/utils";
7
7
  import useChatContextStore from "../../hooks/useChatContextStore";
8
+ import { PostChatSurveyMode } from "./enums/PostChatSurveyMode";
8
9
  export const PostChatSurveyPaneStateful = props => {
9
- var _props$styleProps, _props$controlProps;
10
-
11
- const [state] = useChatContextStore(); // ToDo : TASK 2628392 Fix PostChat iframe reloading on Minimize
10
+ var _state$domainStates$l, _state$domainStates$l2, _props$styleProps, _props$controlProps;
12
11
 
12
+ const [state] = useChatContextStore();
13
+ const postChatSurveyMode = (_state$domainStates$l = state.domainStates.liveChatConfig) === null || _state$domainStates$l === void 0 ? void 0 : (_state$domainStates$l2 = _state$domainStates$l.LiveWSAndLiveChatEngJoin) === null || _state$domainStates$l2 === void 0 ? void 0 : _state$domainStates$l2.msdyn_postconversationsurveymode;
13
14
  const generalStyleProps = Object.assign({}, defaultGeneralPostChatSurveyPaneStyleProps, (_props$styleProps = props.styleProps) === null || _props$styleProps === void 0 ? void 0 : _props$styleProps.generalStyleProps, {
14
15
  display: state.appStates.isMinimized ? "none" : ""
15
16
  });
16
17
  let surveyInviteLink = "";
17
18
 
18
19
  if (state.domainStates.postChatContext.surveyInviteLink) {
19
- surveyInviteLink = state.domainStates.postChatContext.surveyInviteLink + "&lang=" + (state.domainStates.postChatContext.formsProLocale ?? "en");
20
+ surveyInviteLink = state.domainStates.postChatContext.surveyInviteLink + "&embed=" + (postChatSurveyMode === PostChatSurveyMode.Embed).toString() + "&compact=" + (props.isCustomerVoiceSurveyCompact ?? true).toString() + "&lang=" + (state.domainStates.postChatContext.formsProLocale ?? "en") + "&showmultilingual=false";
20
21
  }
21
22
 
22
23
  const styleProps = { ...props.styleProps,