@microsoft/omnichannel-chat-widget 0.1.0-main.3eb9e8c → 0.1.0-main.4151518

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 (338) hide show
  1. package/README.md +7 -34
  2. package/lib/cjs/assets/Icons.js +4 -2
  3. package/lib/cjs/common/Constants.js +32 -170
  4. package/lib/cjs/common/KeyCodes.js +3 -4
  5. package/lib/cjs/common/contextDataStore/DataStoreManager.js +3 -5
  6. package/lib/cjs/common/storage/default/defaultCacheManager.js +26 -0
  7. package/lib/cjs/common/storage/default/defaultClientDataStoreProvider.js +111 -0
  8. package/lib/cjs/common/storage/default/defaultInMemoryDataStore.js +78 -0
  9. package/lib/cjs/common/telemetry/TelemetryConstants.js +65 -27
  10. package/lib/cjs/common/telemetry/TelemetryHelper.js +21 -59
  11. package/lib/cjs/common/telemetry/TelemetryManager.js +3 -32
  12. package/lib/cjs/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +0 -2
  13. package/lib/cjs/common/telemetry/loggers/ariaTelemetryLogger.js +30 -36
  14. package/lib/cjs/common/telemetry/loggers/consoleLogger.js +0 -9
  15. package/lib/cjs/common/utils.js +54 -107
  16. package/lib/cjs/components/callingcontainerstateful/CallingContainerStateful.js +8 -46
  17. package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +2 -24
  18. package/lib/cjs/components/chatbuttonstateful/common/styleProps/defaultOutOfOfficeChatButtonStyleProps.js +3 -0
  19. package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +18 -49
  20. package/lib/cjs/components/dimlayer/DimLayer.js +0 -4
  21. package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +9 -37
  22. package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.spec.js +6 -8
  23. package/lib/cjs/components/footerstateful/FooterStateful.js +11 -42
  24. package/lib/cjs/components/footerstateful/audionotificationstateful/AudioNotificationStateful.js +0 -6
  25. package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +7 -45
  26. package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.spec.js +6 -8
  27. package/lib/cjs/components/headerstateful/HeaderStateful.js +21 -32
  28. package/lib/cjs/components/livechatwidget/LiveChatWidget.js +2 -14
  29. package/lib/cjs/components/livechatwidget/common/ActivityStreamHandler.js +39 -0
  30. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/BotAuthActivitySubscriber.js +139 -0
  31. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +20 -0
  32. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +34 -0
  33. package/lib/cjs/components/livechatwidget/common/ChatAdapterShim.js +64 -0
  34. package/lib/cjs/components/livechatwidget/common/Deferred.js +37 -0
  35. package/lib/cjs/components/livechatwidget/common/agentEndConversationHelper.js +36 -0
  36. package/lib/cjs/components/livechatwidget/common/authHelper.js +50 -0
  37. package/lib/cjs/components/livechatwidget/common/createAdapter.js +12 -9
  38. package/lib/cjs/components/livechatwidget/common/createFooter.js +4 -23
  39. package/lib/cjs/components/livechatwidget/common/createInternetConnectionChangeHandler.js +10 -10
  40. package/lib/cjs/components/livechatwidget/common/createMarkdown.js +36 -43
  41. package/lib/cjs/components/livechatwidget/common/defaultProps/defaultScrollBarProps.js +14 -0
  42. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +133 -54
  43. package/lib/cjs/components/livechatwidget/common/disposeTelemetryLoggers.js +0 -3
  44. package/lib/cjs/components/livechatwidget/common/endChat.js +67 -72
  45. package/lib/cjs/components/livechatwidget/common/getGeneralStylesForButton.js +0 -6
  46. package/lib/cjs/components/livechatwidget/common/initCallingSdk.js +7 -16
  47. package/lib/cjs/components/livechatwidget/common/initConfirmationPropsComposer.js +4 -8
  48. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +25 -98
  49. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +79 -128
  50. package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +4 -17
  51. package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +256 -12
  52. package/lib/cjs/components/livechatwidget/common/shareObservable.js +41 -0
  53. package/lib/cjs/components/livechatwidget/common/startChat.js +204 -128
  54. package/lib/cjs/components/livechatwidget/common/startProactiveChat.js +0 -8
  55. package/lib/cjs/components/livechatwidget/common/updateSessionDataForTelemetry.js +2 -11
  56. package/lib/cjs/components/livechatwidget/interfaces/IScrollBarProps.js +1 -0
  57. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +308 -232
  58. package/lib/cjs/components/loadingpanestateful/LoadingPaneStateful.js +37 -25
  59. package/lib/cjs/components/loadingpanestateful/common/errorUIStyleProps/errorUILoadingPaneStyleProps.js +57 -0
  60. package/lib/cjs/components/loadingpanestateful/interfaces/IStartChatErrorPaneControlProps.js +1 -0
  61. package/lib/cjs/components/loadingpanestateful/interfaces/IStartChatErrorPaneProps.js +1 -0
  62. package/lib/cjs/components/ooohpanestateful/OOOHPaneStateful.js +4 -17
  63. package/lib/cjs/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +4 -17
  64. package/lib/cjs/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +35 -24
  65. package/lib/cjs/components/postchatsurveypanestateful/common/defaultStyleProps/defaultgeneralPostChatSurveyPaneStyleProps.js +1 -1
  66. package/lib/cjs/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.js +13 -0
  67. package/lib/cjs/components/postchatsurveypanestateful/enums/PostChatSurveyMode.js +0 -1
  68. package/lib/cjs/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.js +1 -0
  69. package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +11 -39
  70. package/lib/cjs/components/prechatsurveypanestateful/common/defaultStyles/defaultGeneralPreChatSurveyPaneStyleProps.js +1 -1
  71. package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +2 -32
  72. package/lib/cjs/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +8 -24
  73. package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +29 -34
  74. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +3 -7
  75. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatStatefulProps.js +2 -6
  76. package/lib/cjs/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +11 -0
  77. package/lib/cjs/components/webchatcontainerstateful/common/mockadapter.js +12 -27
  78. package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +6 -17
  79. package/lib/cjs/components/webchatcontainerstateful/common/utils/BrowserInfo.js +2 -24
  80. package/lib/cjs/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +5 -15
  81. package/lib/cjs/components/webchatcontainerstateful/common/utils/isMaskingFromCustomer.js +5 -8
  82. package/lib/cjs/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.js +1 -0
  83. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +3 -5
  84. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/WebChatStoreLoader.js +3 -5
  85. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/BrowserVendor.js +0 -1
  86. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineActivityType.js +0 -1
  87. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineSenderRole.js +0 -1
  88. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/MessageType.js +0 -1
  89. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/NotificationLevel.js +0 -1
  90. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios.js +0 -1
  91. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/SendStatus.js +0 -1
  92. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/WebChatActionType.js +0 -1
  93. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsEgressMiddleware.js +0 -7
  94. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsIngressMiddleware.js +0 -5
  95. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +17 -41
  96. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +10 -22
  97. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +25 -61
  98. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.js +7 -15
  99. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +2 -13
  100. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +0 -16
  101. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +10 -0
  102. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.js +10 -0
  103. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampFailedStyles.js +2 -3
  104. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampRetryStyles.js +2 -3
  105. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.js +10 -0
  106. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware.js +3 -9
  107. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +2 -30
  108. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +7 -18
  109. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +8 -42
  110. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +4 -22
  111. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +20 -33
  112. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +3 -9
  113. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +81 -45
  114. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +1 -10
  115. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +1 -12
  116. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +17 -19
  117. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.js +1 -9
  118. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.js +3 -9
  119. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.js +13 -34
  120. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.js +1 -10
  121. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.js +7 -11
  122. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.js +5 -14
  123. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +1 -21
  124. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +0 -12
  125. package/lib/cjs/contexts/ChatAdapterStore.js +0 -2
  126. package/lib/cjs/contexts/ChatContextStore.js +0 -2
  127. package/lib/cjs/contexts/ChatSDKStore.js +0 -2
  128. package/lib/cjs/contexts/common/ConversationEndEntity.js +12 -0
  129. package/lib/cjs/contexts/common/ConversationState.js +0 -1
  130. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +34 -28
  131. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +19 -13
  132. package/lib/cjs/contexts/createReducer.js +195 -107
  133. package/lib/cjs/controller/componentController.js +2 -31
  134. package/lib/cjs/hooks/useChatAdapterStore.js +0 -6
  135. package/lib/cjs/hooks/useChatContextStore.js +0 -6
  136. package/lib/cjs/hooks/useChatSDKStore.js +0 -6
  137. package/lib/cjs/hooks/useDebounce.js +28 -0
  138. package/lib/cjs/hooks/useWindowDimensions.js +30 -0
  139. package/lib/cjs/index.js +0 -5
  140. package/lib/cjs/plugins/newMessageEventHandler.js +29 -36
  141. package/lib/esm/assets/Icons.js +2 -1
  142. package/lib/esm/common/Constants.js +28 -157
  143. package/lib/esm/common/KeyCodes.js +3 -3
  144. package/lib/esm/common/contextDataStore/DataStoreManager.js +3 -3
  145. package/lib/esm/common/storage/default/defaultCacheManager.js +18 -0
  146. package/lib/esm/common/storage/default/defaultClientDataStoreProvider.js +104 -0
  147. package/lib/esm/common/storage/default/defaultInMemoryDataStore.js +70 -0
  148. package/lib/esm/common/telemetry/TelemetryConstants.js +69 -24
  149. package/lib/esm/common/telemetry/TelemetryHelper.js +21 -47
  150. package/lib/esm/common/telemetry/TelemetryManager.js +3 -19
  151. package/lib/esm/common/telemetry/loggers/ariaTelemetryLogger.js +28 -24
  152. package/lib/esm/common/telemetry/loggers/consoleLogger.js +0 -5
  153. package/lib/esm/common/utils.js +51 -57
  154. package/lib/esm/components/callingcontainerstateful/CallingContainerStateful.js +8 -17
  155. package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +2 -7
  156. package/lib/esm/components/chatbuttonstateful/common/styleProps/defaultOutOfOfficeChatButtonStyleProps.js +3 -0
  157. package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +20 -30
  158. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +9 -16
  159. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.spec.js +6 -6
  160. package/lib/esm/components/footerstateful/FooterStateful.js +13 -23
  161. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +7 -35
  162. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.spec.js +6 -6
  163. package/lib/esm/components/headerstateful/HeaderStateful.js +21 -17
  164. package/lib/esm/components/livechatwidget/LiveChatWidget.js +2 -2
  165. package/lib/esm/components/livechatwidget/common/ActivityStreamHandler.js +32 -0
  166. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/BotAuthActivitySubscriber.js +134 -0
  167. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +13 -0
  168. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +27 -0
  169. package/lib/esm/components/livechatwidget/common/ChatAdapterShim.js +57 -0
  170. package/lib/esm/components/livechatwidget/common/Deferred.js +30 -0
  171. package/lib/esm/components/livechatwidget/common/agentEndConversationHelper.js +30 -0
  172. package/lib/esm/components/livechatwidget/common/authHelper.js +42 -0
  173. package/lib/esm/components/livechatwidget/common/createAdapter.js +14 -4
  174. package/lib/esm/components/livechatwidget/common/createFooter.js +4 -16
  175. package/lib/esm/components/livechatwidget/common/createInternetConnectionChangeHandler.js +10 -5
  176. package/lib/esm/components/livechatwidget/common/createMarkdown.js +38 -37
  177. package/lib/esm/components/livechatwidget/common/defaultProps/defaultScrollBarProps.js +7 -0
  178. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +134 -40
  179. package/lib/esm/components/livechatwidget/common/endChat.js +71 -59
  180. package/lib/esm/components/livechatwidget/common/getGeneralStylesForButton.js +0 -2
  181. package/lib/esm/components/livechatwidget/common/initCallingSdk.js +9 -11
  182. package/lib/esm/components/livechatwidget/common/initConfirmationPropsComposer.js +4 -5
  183. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +28 -64
  184. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +78 -109
  185. package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +4 -9
  186. package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +259 -6
  187. package/lib/esm/components/livechatwidget/common/shareObservable.js +35 -0
  188. package/lib/esm/components/livechatwidget/common/startChat.js +203 -104
  189. package/lib/esm/components/livechatwidget/common/updateSessionDataForTelemetry.js +4 -2
  190. package/lib/esm/components/livechatwidget/interfaces/IScrollBarProps.js +1 -0
  191. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +312 -171
  192. package/lib/esm/components/loadingpanestateful/LoadingPaneStateful.js +38 -13
  193. package/lib/esm/components/loadingpanestateful/common/errorUIStyleProps/errorUILoadingPaneStyleProps.js +50 -0
  194. package/lib/esm/components/loadingpanestateful/interfaces/IStartChatErrorPaneControlProps.js +1 -0
  195. package/lib/esm/components/loadingpanestateful/interfaces/IStartChatErrorPaneProps.js +1 -0
  196. package/lib/esm/components/ooohpanestateful/OOOHPaneStateful.js +4 -5
  197. package/lib/esm/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +4 -5
  198. package/lib/esm/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +35 -12
  199. package/lib/esm/components/postchatsurveypanestateful/common/defaultStyleProps/defaultgeneralPostChatSurveyPaneStyleProps.js +1 -1
  200. package/lib/esm/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.js +6 -0
  201. package/lib/esm/components/postchatsurveypanestateful/enums/PostChatSurveyMode.js +0 -1
  202. package/lib/esm/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.js +1 -0
  203. package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +13 -23
  204. package/lib/esm/components/prechatsurveypanestateful/common/defaultStyles/defaultGeneralPreChatSurveyPaneStyleProps.js +1 -1
  205. package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +4 -8
  206. package/lib/esm/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +8 -6
  207. package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +27 -9
  208. package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +3 -1
  209. package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultWebChatStatefulProps.js +2 -2
  210. package/lib/esm/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +4 -0
  211. package/lib/esm/components/webchatcontainerstateful/common/mockadapter.js +12 -19
  212. package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +6 -13
  213. package/lib/esm/components/webchatcontainerstateful/common/utils/BrowserInfo.js +2 -16
  214. package/lib/esm/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +5 -5
  215. package/lib/esm/components/webchatcontainerstateful/common/utils/isMaskingFromCustomer.js +5 -6
  216. package/lib/esm/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.js +1 -0
  217. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +3 -3
  218. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/WebChatStoreLoader.js +3 -3
  219. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/BrowserVendor.js +0 -1
  220. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineActivityType.js +0 -1
  221. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineSenderRole.js +0 -1
  222. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/MessageType.js +0 -1
  223. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/NotificationLevel.js +0 -1
  224. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios.js +0 -1
  225. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/SendStatus.js +0 -1
  226. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/WebChatActionType.js +0 -1
  227. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsEgressMiddleware.js +2 -5
  228. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsIngressMiddleware.js +0 -4
  229. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +17 -26
  230. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +12 -14
  231. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +25 -39
  232. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.js +9 -8
  233. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +2 -9
  234. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +0 -14
  235. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +3 -0
  236. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.js +3 -0
  237. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampFailedStyles.js +2 -1
  238. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampRetryStyles.js +2 -1
  239. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.js +3 -0
  240. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware.js +3 -7
  241. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +4 -28
  242. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +8 -9
  243. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +9 -28
  244. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +5 -14
  245. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +20 -22
  246. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +5 -8
  247. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +81 -40
  248. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +3 -7
  249. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +3 -8
  250. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +17 -14
  251. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.js +3 -7
  252. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.js +3 -7
  253. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.js +15 -27
  254. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.js +3 -5
  255. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.js +9 -9
  256. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.js +7 -9
  257. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +1 -13
  258. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +0 -5
  259. package/lib/esm/contexts/ChatAdapterStore.js +2 -1
  260. package/lib/esm/contexts/ChatContextStore.js +2 -1
  261. package/lib/esm/contexts/ChatSDKStore.js +2 -1
  262. package/lib/esm/contexts/common/ConversationEndEntity.js +5 -0
  263. package/lib/esm/contexts/common/ConversationState.js +0 -1
  264. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +34 -28
  265. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +19 -9
  266. package/lib/esm/contexts/createReducer.js +195 -104
  267. package/lib/esm/controller/componentController.js +3 -2
  268. package/lib/esm/hooks/useChatAdapterStore.js +0 -4
  269. package/lib/esm/hooks/useChatContextStore.js +0 -4
  270. package/lib/esm/hooks/useChatSDKStore.js +0 -4
  271. package/lib/esm/hooks/useDebounce.js +22 -0
  272. package/lib/esm/hooks/useWindowDimensions.js +23 -0
  273. package/lib/esm/plugins/newMessageEventHandler.js +29 -26
  274. package/lib/types/assets/Icons.d.ts +1 -0
  275. package/lib/types/common/Constants.d.ts +22 -0
  276. package/lib/types/common/storage/default/defaultCacheManager.d.ts +4 -0
  277. package/lib/types/common/storage/default/defaultClientDataStoreProvider.d.ts +2 -0
  278. package/lib/types/common/storage/default/defaultInMemoryDataStore.d.ts +6 -0
  279. package/lib/types/common/telemetry/TelemetryConstants.d.ts +47 -9
  280. package/lib/types/common/telemetry/TelemetryHelper.d.ts +1 -1
  281. package/lib/types/common/telemetry/definitions/Contracts.d.ts +4 -4
  282. package/lib/types/common/telemetry/definitions/Payload.d.ts +1 -0
  283. package/lib/types/common/telemetry/interfaces/ITelemetryConfig.d.ts +4 -0
  284. package/lib/types/common/utils.d.ts +6 -4
  285. package/lib/types/components/confirmationpanestateful/interfaces/IConfirmationPaneStatefulParams.d.ts +0 -7
  286. package/lib/types/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.d.ts +1 -1
  287. package/lib/types/components/headerstateful/interfaces/IHeaderStatefulParams.d.ts +2 -1
  288. package/lib/types/components/livechatwidget/common/ActivityStreamHandler.d.ts +14 -0
  289. package/lib/types/components/livechatwidget/common/ActivitySubscriber/BotAuthActivitySubscriber.d.ts +9 -0
  290. package/lib/types/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.d.ts +5 -0
  291. package/lib/types/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.d.ts +6 -0
  292. package/lib/types/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.d.ts +7 -0
  293. package/lib/types/components/livechatwidget/common/ChatAdapterShim.d.ts +7 -0
  294. package/lib/types/components/livechatwidget/common/Deferred.d.ts +9 -0
  295. package/lib/types/components/livechatwidget/common/agentEndConversationHelper.d.ts +6 -0
  296. package/lib/types/components/livechatwidget/common/authHelper.d.ts +5 -0
  297. package/lib/types/components/livechatwidget/common/defaultProps/defaultScrollBarProps.d.ts +2 -0
  298. package/lib/types/components/livechatwidget/common/endChat.d.ts +1 -1
  299. package/lib/types/components/livechatwidget/common/initWebChatComposer.d.ts +1 -1
  300. package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +6 -8
  301. package/lib/types/components/livechatwidget/common/setPostChatContextAndLoadSurvey.d.ts +6 -1
  302. package/lib/types/components/livechatwidget/common/shareObservable.d.ts +1 -0
  303. package/lib/types/components/livechatwidget/common/startChat.d.ts +5 -4
  304. package/lib/types/components/livechatwidget/common/startProactiveChat.d.ts +1 -1
  305. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetControlProps.d.ts +4 -1
  306. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +7 -4
  307. package/lib/types/components/livechatwidget/interfaces/IScrollBarProps.d.ts +22 -0
  308. package/lib/types/components/loadingpanestateful/LoadingPaneStateful.d.ts +1 -2
  309. package/lib/types/components/loadingpanestateful/common/errorUIStyleProps/errorUILoadingPaneStyleProps.d.ts +2 -0
  310. package/lib/types/components/loadingpanestateful/interfaces/IStartChatErrorPaneControlProps.d.ts +4 -0
  311. package/lib/types/components/loadingpanestateful/interfaces/IStartChatErrorPaneProps.d.ts +4 -0
  312. package/lib/types/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.d.ts +2 -2
  313. package/lib/types/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.d.ts +5 -0
  314. package/lib/types/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.d.ts +4 -0
  315. package/lib/types/components/reconnectchatpanestateful/interfaces/IReconnectChatPaneStatefulProps.d.ts +0 -1
  316. package/lib/types/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.d.ts +2 -0
  317. package/lib/types/components/webchatcontainerstateful/common/mockchatsdk.d.ts +1 -0
  318. package/lib/types/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.d.ts +4 -0
  319. package/lib/types/components/webchatcontainerstateful/interfaces/IRenderingMiddlewareProps.d.ts +4 -1
  320. package/lib/types/components/webchatcontainerstateful/interfaces/IWebChatContainerStatefulProps.d.ts +2 -0
  321. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.d.ts +1 -1
  322. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.d.ts +1 -1
  323. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.d.ts +1 -1
  324. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.d.ts +2 -0
  325. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.d.ts +3 -0
  326. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.d.ts +3 -0
  327. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.d.ts +1 -1
  328. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.d.ts +1 -1
  329. package/lib/types/contexts/common/ConversationEndEntity.d.ts +4 -0
  330. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +10 -3
  331. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +34 -27
  332. package/lib/types/contexts/common/LiveChatWidgetContextInitialState.d.ts +1 -2
  333. package/lib/types/hooks/useDebounce.d.ts +3 -0
  334. package/lib/types/hooks/useWindowDimensions.d.ts +4 -0
  335. package/package.json +5 -4
  336. package/lib/types/components/livechatwidget/interfaces/IAuthProps.d.ts +0 -4
  337. /package/lib/cjs/components/livechatwidget/{interfaces/IAuthProps.js → common/ActivitySubscriber/IActivitySubscriber.js} +0 -0
  338. /package/lib/esm/components/livechatwidget/{interfaces/IAuthProps.js → common/ActivitySubscriber/IActivitySubscriber.js} +0 -0
@@ -1,19 +1,20 @@
1
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
-
3
2
  import { BroadcastEvent, LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
4
- import { BroadcastService, decodeComponentString } from "@microsoft/omnichannel-chat-components";
3
+ import { BroadcastService, BroadcastServiceInitialize, decodeComponentString } from "@microsoft/omnichannel-chat-components";
5
4
  import { Stack } from "@fluentui/react";
6
5
  import React, { useEffect, useRef, useState } from "react";
7
- import { createTimer, getLocaleDirection, getStateFromCache, getWidgetCacheId, getWidgetEndChatEventName, isUndefinedOrEmpty } from "../../../common/utils";
8
- import { getReconnectIdForAuthenticatedChat, handleUnauthenticatedReconnectChat, startUnauthenticatedReconnectChat } from "../common/reconnectChatHelper";
9
- import { initStartChat, prepareStartChat, setPreChatAndInitiateChat } from "../common/startChat";
6
+ import { checkIfConversationStillValid, initStartChat, prepareStartChat, setPreChatAndInitiateChat } from "../common/startChat";
7
+ import { createTimer, getBroadcastChannelName, getLocaleDirection, getStateFromCache, getWidgetCacheId, getWidgetEndChatEventName, isNullOrEmptyString, isUndefinedOrEmpty } from "../../../common/utils";
8
+ import { endChat, prepareEndChat } from "../common/endChat";
10
9
  import { shouldShowCallingContainer, shouldShowChatButton, shouldShowConfirmationPane, shouldShowEmailTranscriptPane, shouldShowHeader, shouldShowLoadingPane, shouldShowOutOfOfficeHoursPane, shouldShowPostChatLoadingPane, shouldShowPostChatSurveyPane, shouldShowPreChatSurveyPane, shouldShowProactiveChatPane, shouldShowReconnectChatPane, shouldShowWebChatContainer } from "../../../controller/componentController";
10
+ import { ActivityStreamHandler } from "../common/ActivityStreamHandler";
11
11
  import CallingContainerStateful from "../../callingcontainerstateful/CallingContainerStateful";
12
12
  import ChatButtonStateful from "../../chatbuttonstateful/ChatButtonStateful";
13
13
  import { Components } from "botframework-webchat";
14
14
  import ConfirmationPaneStateful from "../../confirmationpanestateful/ConfirmationPaneStateful";
15
15
  import { ConversationState } from "../../../contexts/common/ConversationState";
16
16
  import { DataStoreManager } from "../../../common/contextDataStore/DataStoreManager";
17
+ import { Constants, E2VVOptions } from "../../../common/Constants";
17
18
  import { ElementType } from "@microsoft/omnichannel-chat-components";
18
19
  import EmailTranscriptPaneStateful from "../../emailtranscriptpanestateful/EmailTranscriptPaneStateful";
19
20
  import HeaderStateful from "../../headerstateful/HeaderStateful";
@@ -30,173 +31,192 @@ import { TelemetryTimers } from "../../../common/telemetry/TelemetryManager";
30
31
  import WebChatContainerStateful from "../../webchatcontainerstateful/WebChatContainerStateful";
31
32
  import { createFooter } from "../common/createFooter";
32
33
  import { createInternetConnectionChangeHandler } from "../common/createInternetConnectionChangeHandler";
34
+ import { defaultClientDataStoreProvider } from "../../../common/storage/default/defaultClientDataStoreProvider";
35
+ import { defaultScrollBarProps } from "../common/defaultProps/defaultScrollBarProps";
33
36
  import { defaultWebChatContainerStatefulProps } from "../../webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps";
34
37
  import { disposeTelemetryLoggers } from "../common/disposeTelemetryLoggers";
35
- import { endChat, prepareEndChat } from "../common/endChat";
36
38
  import { getGeneralStylesForButton } from "../common/getGeneralStylesForButton";
37
39
  import { initCallingSdk } from "../common/initCallingSdk";
38
40
  import { initConfirmationPropsComposer } from "../common/initConfirmationPropsComposer";
39
41
  import { initWebChatComposer } from "../common/initWebChatComposer";
42
+ import { registerBroadcastServiceForLocalStorage } from "../../../common/storage/default/defaultCacheManager";
40
43
  import { registerTelemetryLoggers } from "../common/registerTelemetryLoggers";
41
44
  import { setPostChatContextAndLoadSurvey } from "../common/setPostChatContextAndLoadSurvey";
42
45
  import { startProactiveChat } from "../common/startProactiveChat";
43
46
  import useChatAdapterStore from "../../../hooks/useChatAdapterStore";
44
47
  import useChatContextStore from "../../../hooks/useChatContextStore";
45
48
  import useChatSDKStore from "../../../hooks/useChatSDKStore";
49
+ import { ConversationEndEntity } from "../../../contexts/common/ConversationEndEntity";
50
+ import { handleAgentEndConversation } from "../common/agentEndConversationHelper";
51
+ import { handleChatReconnect, isReconnectEnabled } from "../common/reconnectChatHelper";
46
52
  export const LiveChatWidgetStateful = props => {
47
- var _props$webChatContain, _props$styleProps, _props$controlProps, _props$webChatContain3, _props$webChatContain4, _props$styleProps2, _props$controlProps5, _props$controlProps6, _props$componentOverr, _props$controlProps7, _props$componentOverr2, _props$controlProps8, _props$componentOverr3, _props$controlProps9, _props$componentOverr4, _props$controlProps10, _props$componentOverr5, _props$controlProps11, _props$componentOverr6, _props$controlProps12, _props$componentOverr7, _props$controlProps13, _props$controlProps14, _props$componentOverr8, _props$controlProps15, _props$componentOverr9, _props$controlProps16, _props$componentOverr10, _props$componentOverr11, _props$componentOverr12;
48
-
49
- const [state, dispatch] = useChatContextStore(); // eslint-disable-next-line @typescript-eslint/no-explicit-any
50
-
53
+ var _props$webChatContain, _props$styleProps, _chatSDK$omnichannelC, _props$controlProps, _props$controlProps2, _props$webChatContain3, _props$webChatContain4, _props$styleProps2, _props$controlProps15, _props$controlProps16, _props$componentOverr, _props$controlProps17, _props$componentOverr2, _props$controlProps18, _props$componentOverr3, _props$controlProps19, _props$componentOverr4, _props$controlProps20, _props$componentOverr5, _props$controlProps21, _props$componentOverr6, _props$controlProps22, _props$componentOverr7, _props$controlProps23, _props$controlProps24, _props$componentOverr8, _props$controlProps25, _props$componentOverr9, _props$controlProps26, _props$componentOverr10, _props$componentOverr11, _props$componentOverr12;
54
+ const [state, dispatch] = useChatContextStore();
55
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
51
56
  const [adapter, setAdapter] = useChatAdapterStore();
52
- const [webChatStyles, setWebChatStyles] = useState({ ...defaultWebChatContainerStatefulProps.webChatStyles,
57
+ const [webChatStyles, setWebChatStyles] = useState({
58
+ ...defaultWebChatContainerStatefulProps.webChatStyles,
53
59
  ...((_props$webChatContain = props.webChatContainerProps) === null || _props$webChatContain === void 0 ? void 0 : _props$webChatContain.webChatStyles)
54
- }); // eslint-disable-next-line @typescript-eslint/no-explicit-any
55
-
56
- const chatSDK = useChatSDKStore(); // eslint-disable-next-line @typescript-eslint/no-explicit-any
57
-
60
+ });
61
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
62
+ const chatSDK = useChatSDKStore();
63
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
58
64
  const [voiceVideoCallingSDK, setVoiceVideoCallingSDK] = useState(undefined);
59
65
  const {
60
66
  Composer
61
67
  } = Components;
62
- const canStartProactiveChat = useRef(true); // Process general styles
68
+ const canStartProactiveChat = useRef(true);
63
69
 
70
+ // Process general styles
64
71
  const generalStyles = {
65
72
  root: Object.assign({}, getGeneralStylesForButton(state), (_props$styleProps = props.styleProps) === null || _props$styleProps === void 0 ? void 0 : _props$styleProps.generalStyles)
66
73
  };
74
+
75
+ //Scrollbar styles
76
+ const scrollbarProps = Object.assign({}, defaultScrollBarProps, props === null || props === void 0 ? void 0 : props.scrollBarProps);
77
+ 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) ?? "");
78
+ BroadcastServiceInitialize(broadcastServiceChannelName);
67
79
  TelemetryTimers.LcwLoadToChatButtonTimer = createTimer();
68
- const widgetElementId = ((_props$controlProps = props.controlProps) === null || _props$controlProps === void 0 ? void 0 : _props$controlProps.id) || "oc-lcw";
80
+ const widgetElementId = ((_props$controlProps2 = props.controlProps) === null || _props$controlProps2 === void 0 ? void 0 : _props$controlProps2.id) || "oc-lcw";
69
81
  const currentMessageCountRef = useRef(0);
70
82
  let widgetStateEventName = "";
83
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
84
+ let optionalParams;
85
+ let activeCachedChatExist = false;
86
+ const setOptionalParams = () => {
87
+ var _state$appStates, _state$domainStates;
88
+ if (!isUndefinedOrEmpty((_state$appStates = state.appStates) === null || _state$appStates === void 0 ? void 0 : _state$appStates.reconnectId)) {
89
+ activeCachedChatExist = true;
90
+ optionalParams = {
91
+ reconnectId: state.appStates.reconnectId
92
+ };
93
+ } else if (!isUndefinedOrEmpty((_state$domainStates = state.domainStates) === null || _state$domainStates === void 0 ? void 0 : _state$domainStates.liveChatContext)) {
94
+ var _state$domainStates2;
95
+ activeCachedChatExist = true;
96
+ optionalParams = {
97
+ liveChatContext: (_state$domainStates2 = state.domainStates) === null || _state$domainStates2 === void 0 ? void 0 : _state$domainStates2.liveChatContext
98
+ };
99
+ } else {
100
+ activeCachedChatExist = false;
101
+ optionalParams = {};
102
+ }
103
+ };
71
104
 
72
- const initiateEndChatOnBrowserUnload = () => {
73
- var _chatSDK$omnichannelC, _chatSDK$omnichannelC2, _DataStoreManager$cli;
74
-
75
- TelemetryHelper.logActionEvent(LogLevel.INFO, {
76
- Event: TelemetryEvent.BrowserUnloadEventStarted,
77
- Description: "Browser unload event received."
78
- });
79
- const persistedState = getStateFromCache(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC === void 0 ? void 0 : _chatSDK$omnichannelC.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC2 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC2 === void 0 ? void 0 : _chatSDK$omnichannelC2.widgetId); // End chat if the chat is still active and browser closed
80
-
81
- if (persistedState.appStates.conversationState === ConversationState.Active) {
82
- //Browser close scenario/no room for PCS/so just end chat and notify agent immidiately
83
- endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, false, false, false);
84
- } // Clean local storage
85
-
86
-
87
- (_DataStoreManager$cli = DataStoreManager.clientDataStore) === null || _DataStoreManager$cli === void 0 ? void 0 : _DataStoreManager$cli.removeData(widgetStateEventName, "localStorage"); //Dispose calling instance
88
-
89
- if (voiceVideoCallingSDK) {
90
- voiceVideoCallingSDK === null || voiceVideoCallingSDK === void 0 ? void 0 : voiceVideoCallingSDK.close();
91
- } //Message for clearing window[popouTab]
105
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
106
+ const startChat = async (props, localState) => {
107
+ let isChatValid = false;
92
108
 
109
+ //Start a chat from cache/reconnectid
110
+ if (activeCachedChatExist === true) {
111
+ dispatch({
112
+ type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
113
+ payload: ConversationState.Loading
114
+ });
115
+ if (localState) {
116
+ localState.appStates.conversationState = ConversationState.Loading;
117
+ }
93
118
 
94
- BroadcastService.postMessage({
95
- eventName: BroadcastEvent.ClosePopoutWindow
96
- });
119
+ //Check if conversation state is not in wrapup or closed state
120
+ isChatValid = await checkIfConversationStillValid(chatSDK, dispatch, state);
121
+ if (isChatValid === true) {
122
+ //Check if reconnect enabled
123
+ if (isReconnectEnabled(props.chatConfig) === true) {
124
+ await handleChatReconnect(chatSDK, props, dispatch, setAdapter, initStartChat, state);
125
+ // If chat reconnect has kicked in chat state will become Active or Reconnect. So just exit, else go next
126
+ if (state.appStates.conversationState === ConversationState.Active || state.appStates.conversationState === ConversationState.ReconnectChat) {
127
+ return;
128
+ }
129
+ }
130
+ await initStartChat(chatSDK, dispatch, setAdapter, props, optionalParams);
131
+ return;
132
+ }
133
+ }
134
+ if (isChatValid === false) {
135
+ if (localState) {
136
+ await setPreChatAndInitiateChat(chatSDK, dispatch, setAdapter, undefined, undefined, localState, props);
137
+ return;
138
+ } else {
139
+ dispatch({
140
+ type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
141
+ payload: ConversationState.Closed
142
+ });
143
+ }
144
+ }
97
145
  };
98
146
 
147
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
148
+ const setupClientDataStore = () => {
149
+ // Add default localStorage support for widget
150
+ if (props.contextDataStore === undefined) {
151
+ var _props$controlProps3, _chatSDK$omnichannelC2, _chatSDK$omnichannelC3, _props$controlProps4;
152
+ const cacheTtlInMins = (props === null || props === void 0 ? void 0 : (_props$controlProps3 = props.controlProps) === null || _props$controlProps3 === void 0 ? void 0 : _props$controlProps3.cacheTtlInMins) ?? Constants.CacheTtlInMinutes;
153
+ DataStoreManager.clientDataStore = defaultClientDataStoreProvider(cacheTtlInMins);
154
+ 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$controlProps4 = props.controlProps) === null || _props$controlProps4 === void 0 ? void 0 : _props$controlProps4.widgetInstanceId) ?? "", cacheTtlInMins);
155
+ } else {
156
+ DataStoreManager.clientDataStore = props.contextDataStore;
157
+ }
158
+ };
99
159
  useEffect(() => {
100
- var _props$controlProps2, _props$controlProps3, _props$chatConfig, _props$chatConfig$Cha, _props$controlProps4, _props$reconnectChatP, _props$chatConfig2, _props$chatConfig2$Li;
101
-
160
+ var _props$controlProps5, _props$controlProps6, _props$controlProps7, _props$chatConfig, _props$chatConfig$Liv, _props$controlProps9, _props$chatConfig2, _props$chatConfig2$Ch;
161
+ setupClientDataStore();
102
162
  registerTelemetryLoggers(props, dispatch);
103
163
  createInternetConnectionChangeHandler();
104
- DataStoreManager.clientDataStore = props.contextDataStore ?? undefined;
105
164
  dispatch({
106
165
  type: LiveChatWidgetActionType.SET_WIDGET_ELEMENT_ID,
107
166
  payload: widgetElementId
108
167
  });
109
168
  dispatch({
110
- type: LiveChatWidgetActionType.SET_SKIP_CHAT_BUTTON_RENDERING,
111
- payload: ((_props$controlProps2 = props.controlProps) === null || _props$controlProps2 === void 0 ? void 0 : _props$controlProps2.skipChatButtonRendering) || false
169
+ type: LiveChatWidgetActionType.SET_START_CHAT_BUTTON_DISPLAY,
170
+ payload: ((_props$controlProps5 = props.controlProps) === null || _props$controlProps5 === void 0 ? void 0 : _props$controlProps5.hideStartChatButton) || false
112
171
  });
113
172
  dispatch({
114
173
  type: LiveChatWidgetActionType.SET_E2VV_ENABLED,
115
174
  payload: false
116
175
  });
117
- initCallingSdk(chatSDK, setVoiceVideoCallingSDK).then(sdkCreated => {
118
- sdkCreated && dispatch({
119
- type: LiveChatWidgetActionType.SET_E2VV_ENABLED,
120
- payload: true
176
+ if ((_props$controlProps6 = props.controlProps) !== null && _props$controlProps6 !== void 0 && _props$controlProps6.widgetInstanceId && !isNullOrEmptyString((_props$controlProps7 = props.controlProps) === null || _props$controlProps7 === void 0 ? void 0 : _props$controlProps7.widgetInstanceId)) {
177
+ var _props$controlProps8;
178
+ dispatch({
179
+ type: LiveChatWidgetActionType.SET_WIDGET_INSTANCE_ID,
180
+ payload: (_props$controlProps8 = props.controlProps) === null || _props$controlProps8 === void 0 ? void 0 : _props$controlProps8.widgetInstanceId
181
+ });
182
+ }
183
+ if (((_props$chatConfig = props.chatConfig) === null || _props$chatConfig === void 0 ? void 0 : (_props$chatConfig$Liv = _props$chatConfig.LiveWSAndLiveChatEngJoin) === null || _props$chatConfig$Liv === void 0 ? void 0 : _props$chatConfig$Liv.msdyn_callingoptions) !== E2VVOptions.NoCalling) {
184
+ initCallingSdk(chatSDK, setVoiceVideoCallingSDK).then(sdkCreated => {
185
+ sdkCreated && dispatch({
186
+ type: LiveChatWidgetActionType.SET_E2VV_ENABLED,
187
+ payload: true
188
+ });
121
189
  });
122
- }); // Initialize global dir
190
+ }
123
191
 
124
- const globalDir = ((_props$controlProps3 = props.controlProps) === null || _props$controlProps3 === void 0 ? void 0 : _props$controlProps3.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);
192
+ // Initialize global dir
193
+ const globalDir = ((_props$controlProps9 = props.controlProps) === null || _props$controlProps9 === void 0 ? void 0 : _props$controlProps9.dir) ?? getLocaleDirection((_props$chatConfig2 = props.chatConfig) === null || _props$chatConfig2 === void 0 ? void 0 : (_props$chatConfig2$Ch = _props$chatConfig2.ChatWidgetLanguage) === null || _props$chatConfig2$Ch === void 0 ? void 0 : _props$chatConfig2$Ch.msdyn_localeid);
125
194
  dispatch({
126
195
  type: LiveChatWidgetActionType.SET_GLOBAL_DIR,
127
196
  payload: globalDir
128
197
  });
198
+ setOptionalParams();
129
199
 
130
- if (!((_props$controlProps4 = props.controlProps) !== null && _props$controlProps4 !== void 0 && _props$controlProps4.skipChatButtonRendering) && (_props$reconnectChatP = props.reconnectChatPaneProps) !== null && _props$reconnectChatP !== void 0 && _props$reconnectChatP.reconnectId) {
131
- var _props$reconnectChatP2;
132
-
133
- startUnauthenticatedReconnectChat(chatSDK, props.authProps, dispatch, setAdapter, (_props$reconnectChatP2 = props.reconnectChatPaneProps) === null || _props$reconnectChatP2 === void 0 ? void 0 : _props$reconnectChatP2.reconnectId, initStartChat);
134
- return;
135
- } // Check if auth settings enabled, do not connect to existing chat from cache during refresh/re-load
136
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
137
-
138
-
139
- 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;
140
-
141
- if (!isAuthenticationSettingsEnabled) {
142
- var _state$domainStates;
143
-
144
- if (!isUndefinedOrEmpty((_state$domainStates = state.domainStates) === null || _state$domainStates === void 0 ? void 0 : _state$domainStates.liveChatContext) && state.appStates.conversationState === ConversationState.Active) {
145
- var _state$domainStates2;
146
-
147
- const optionalParams = {
148
- liveChatContext: (_state$domainStates2 = state.domainStates) === null || _state$domainStates2 === void 0 ? void 0 : _state$domainStates2.liveChatContext
149
- };
150
- initStartChat(chatSDK, props.authProps, dispatch, setAdapter, optionalParams);
151
- return;
152
- }
153
- } // All other case should show start chat button, skipChatButtonRendering will take care of it own
154
-
155
-
156
- dispatch({
157
- type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
158
- payload: ConversationState.Closed
159
- });
160
- }, []); // useEffect for when skip chat button rendering
200
+ // Unauth chat
201
+ if (state.appStates.hideStartChatButton === false) {
202
+ startChat(props);
203
+ }
204
+ }, []);
161
205
 
206
+ // useEffect for when skip chat button rendering
162
207
  useEffect(() => {
163
- if (state.appStates.skipChatButtonRendering) {
164
- var _props$reconnectChatP3;
165
-
208
+ if (state.appStates.hideStartChatButton === true) {
166
209
  BroadcastService.postMessage({
167
210
  eventName: BroadcastEvent.ChatInitiated
168
211
  });
169
-
170
- if ((_props$reconnectChatP3 = props.reconnectChatPaneProps) !== null && _props$reconnectChatP3 !== void 0 && _props$reconnectChatP3.reconnectId && !state.appStates.reconnectId) {
171
- var _props$reconnectChatP4, _props$reconnectChatP5;
172
-
173
- handleUnauthenticatedReconnectChat(chatSDK, props.authProps, dispatch, setAdapter, (_props$reconnectChatP4 = props.reconnectChatPaneProps) === null || _props$reconnectChatP4 === void 0 ? void 0 : _props$reconnectChatP4.reconnectId, initStartChat, (_props$reconnectChatP5 = props.reconnectChatPaneProps) === null || _props$reconnectChatP5 === void 0 ? void 0 : _props$reconnectChatP5.redirectInSameWindow);
174
- } else {
175
- getReconnectIdForAuthenticatedChat(props, chatSDK).then(authReconnectId => {
176
- if (authReconnectId && !state.appStates.reconnectId) {
177
- dispatch({
178
- type: LiveChatWidgetActionType.SET_RECONNECT_ID,
179
- payload: authReconnectId
180
- });
181
- dispatch({
182
- type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
183
- payload: ConversationState.ReconnectChat
184
- });
185
- } else {
186
- const chatStartedSkippingChatButtonRendering = {
187
- eventName: BroadcastEvent.StartChatSkippingChatButtonRendering
188
- };
189
- BroadcastService.postMessage(chatStartedSkippingChatButtonRendering);
190
- setPreChatAndInitiateChat(chatSDK, props.authProps, dispatch, setAdapter);
191
- }
192
- });
193
- }
212
+ //Pass the state to avoid getting stale state
213
+ startChat(props, state);
194
214
  }
195
- }, [state.appStates.skipChatButtonRendering]); // useEffect for when skip chat button rendering
215
+ }, [state.appStates.hideStartChatButton]);
196
216
 
217
+ // useEffect for custom context
197
218
  useEffect(() => {
198
- var _chatSDK$omnichannelC7, _chatSDK$omnichannelC8;
199
-
219
+ var _chatSDK$omnichannelC8, _chatSDK$omnichannelC9, _props$controlProps13;
200
220
  // Add the custom context on receiving the SetCustomContext event
201
221
  BroadcastService.getMessageByEventName(BroadcastEvent.SetCustomContext).subscribe(msg => {
202
222
  TelemetryHelper.logActionEvent(LogLevel.INFO, {
@@ -213,10 +233,8 @@ export const LiveChatWidgetStateful = props => {
213
233
  Event: TelemetryEvent.StartProactiveChatEventReceived,
214
234
  Description: "Start proactive chat event received."
215
235
  });
216
-
217
- if (canStartProactiveChat.current) {
236
+ if (canStartProactiveChat.current === true) {
218
237
  var _msg$payload, _msg$payload2, _msg$payload3;
219
-
220
238
  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);
221
239
  } else {
222
240
  TelemetryHelper.logActionEvent(LogLevel.INFO, {
@@ -224,27 +242,58 @@ export const LiveChatWidgetStateful = props => {
224
242
  Description: "Start proactive chat method called, when chat was already triggered."
225
243
  });
226
244
  }
227
- }); // Start chat from SDK Event
245
+ });
228
246
 
229
- BroadcastService.getMessageByEventName(BroadcastEvent.StartChat).subscribe(() => {
230
- var _chatSDK$omnichannelC3, _chatSDK$omnichannelC4;
247
+ // Toggle chat visibility
248
+ BroadcastService.getMessageByEventName(BroadcastEvent.HideChatVisibilityChangeEvent).subscribe(event => {
249
+ var _event$payload;
250
+ if ((event === null || event === void 0 ? void 0 : (_event$payload = event.payload) === null || _event$payload === void 0 ? void 0 : _event$payload.isChatHidden) !== undefined) {
251
+ var _event$payload2, _props$controlProps10;
252
+ TelemetryHelper.logActionEvent(LogLevel.INFO, {
253
+ Event: TelemetryEvent.ChatVisibilityChanged,
254
+ Description: "Chat visibility changed to " + (event === null || event === void 0 ? void 0 : (_event$payload2 = event.payload) === null || _event$payload2 === void 0 ? void 0 : _event$payload2.isChatHidden)
255
+ });
256
+ if ((_props$controlProps10 = props.controlProps) !== null && _props$controlProps10 !== void 0 && _props$controlProps10.hideStartChatButton) {
257
+ var _event$payload3;
258
+ dispatch({
259
+ type: LiveChatWidgetActionType.SET_MINIMIZED,
260
+ payload: event === null || event === void 0 ? void 0 : (_event$payload3 = event.payload) === null || _event$payload3 === void 0 ? void 0 : _event$payload3.isChatHidden
261
+ });
262
+ }
263
+ }
264
+ });
231
265
 
266
+ // Start chat from SDK Event
267
+ BroadcastService.getMessageByEventName(BroadcastEvent.StartChat).subscribe(() => {
268
+ var _chatSDK$omnichannelC4, _chatSDK$omnichannelC5, _props$controlProps11;
232
269
  TelemetryHelper.logActionEvent(LogLevel.INFO, {
233
270
  Event: TelemetryEvent.StartChatEventRecevied,
234
271
  Description: "Start chat event received."
235
272
  });
236
- const persistedState = getStateFromCache(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC3 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC3 === void 0 ? void 0 : _chatSDK$omnichannelC3.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC4 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC4 === void 0 ? void 0 : _chatSDK$omnichannelC4.widgetId);
273
+ 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$controlProps11 = props.controlProps) === null || _props$controlProps11 === void 0 ? void 0 : _props$controlProps11.widgetInstanceId) ?? "");
237
274
 
238
- if (persistedState && (persistedState.appStates.conversationState === ConversationState.Closed || persistedState.appStates.conversationState === ConversationState.InActive || persistedState.appStates.conversationState === ConversationState.Postchat)) {
239
- // Embedded mode
275
+ // Chat not found in cache
276
+ if (persistedState === undefined) {
240
277
  BroadcastService.postMessage({
241
278
  eventName: BroadcastEvent.ChatInitiated
242
279
  });
243
280
  prepareStartChat(props, chatSDK, state, dispatch, setAdapter);
244
- } else {
281
+ return;
282
+ }
283
+
284
+ // Chat exist in cache
285
+ if (persistedState) {
245
286
  var _persistedState$domai, _persistedState$domai2, _persistedState$domai3, _persistedState$domai4;
287
+ // Only initiate new chat if widget state in cache in one of the followings
288
+ if (persistedState.appStates.conversationState === ConversationState.Closed || persistedState.appStates.conversationState === ConversationState.InActive || persistedState.appStates.conversationState === ConversationState.Postchat) {
289
+ BroadcastService.postMessage({
290
+ eventName: BroadcastEvent.ChatInitiated
291
+ });
292
+ prepareStartChat(props, chatSDK, state, dispatch, setAdapter);
293
+ return;
294
+ }
246
295
 
247
- // Minimize to Maximize
296
+ // If minimized, maximize the chat
248
297
  dispatch({
249
298
  type: LiveChatWidgetActionType.SET_MINIMIZED,
250
299
  payload: false
@@ -257,15 +306,14 @@ export const LiveChatWidgetStateful = props => {
257
306
  }
258
307
  });
259
308
  }
260
- }); // End chat
309
+ });
261
310
 
311
+ // End chat
262
312
  BroadcastService.getMessageByEventName(BroadcastEvent.InitiateEndChat).subscribe(async () => {
263
- if (state.appStates.skipChatButtonRendering !== true) {
264
- var _chatSDK$omnichannelC5, _chatSDK$omnichannelC6;
265
-
313
+ if (state.appStates.hideStartChatButton === false) {
314
+ var _chatSDK$omnichannelC6, _chatSDK$omnichannelC7, _props$controlProps12;
266
315
  // This is to ensure to get latest state from cache in multitab
267
- const persistedState = getStateFromCache(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC5 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC5 === void 0 ? void 0 : _chatSDK$omnichannelC5.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC6 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC6 === void 0 ? void 0 : _chatSDK$omnichannelC6.widgetId);
268
-
316
+ 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$controlProps12 = props.controlProps) === null || _props$controlProps12 === void 0 ? void 0 : _props$controlProps12.widgetInstanceId) ?? "");
269
317
  if (persistedState && persistedState.appStates.conversationState === ConversationState.Active) {
270
318
  prepareEndChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, state);
271
319
  } else {
@@ -274,32 +322,55 @@ export const LiveChatWidgetStateful = props => {
274
322
  endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, skipEndChatSDK, skipCloseChat);
275
323
  }
276
324
  }
277
-
278
325
  BroadcastService.postMessage({
279
326
  eventName: BroadcastEvent.CloseChat
280
327
  });
281
- }); // End chat on browser unload
328
+ });
282
329
 
330
+ // End chat on browser unload
283
331
  BroadcastService.getMessageByEventName(BroadcastEvent.InitiateEndChatOnBrowserUnload).subscribe(() => {
284
332
  initiateEndChatOnBrowserUnload();
285
- }); // Listen to end chat event from other tabs
333
+ });
286
334
 
287
- const endChatEventName = getWidgetEndChatEventName(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC7 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC7 === void 0 ? void 0 : _chatSDK$omnichannelC7.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC8 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC8 === void 0 ? void 0 : _chatSDK$omnichannelC8.widgetId);
335
+ // Listen to end chat event from other tabs
336
+ 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$controlProps13 = props.controlProps) === null || _props$controlProps13 === void 0 ? void 0 : _props$controlProps13.widgetInstanceId) ?? "");
288
337
  BroadcastService.getMessageByEventName(endChatEventName).subscribe(async () => {
289
338
  endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, false, false, false);
290
- }); // When conversation ended by agent
339
+ return;
340
+ });
291
341
 
292
- if (state.appStates.conversationEndedByAgent) {
342
+ // When conversation ended by agent
343
+ if (state.appStates.conversationEndedBy === ConversationEndEntity.Agent) {
293
344
  endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter);
294
- } //Listen to WidgetSize, used for minimize to maximize
295
-
345
+ }
296
346
 
347
+ //Listen to WidgetSize, used for minimize to maximize
297
348
  BroadcastService.getMessageByEventName("WidgetSize").subscribe(msg => {
298
349
  dispatch({
299
350
  type: LiveChatWidgetActionType.SET_WIDGET_SIZE,
300
351
  payload: msg === null || msg === void 0 ? void 0 : msg.payload
301
352
  });
302
353
  });
354
+
355
+ // Reset state variables
356
+ BroadcastService.getMessageByEventName(BroadcastEvent.RaiseErrorEvent).subscribe(() => {
357
+ dispatch({
358
+ type: LiveChatWidgetActionType.SET_LIVE_CHAT_CONFIG,
359
+ payload: undefined
360
+ });
361
+ dispatch({
362
+ type: LiveChatWidgetActionType.SET_CUSTOM_CONTEXT,
363
+ payload: undefined
364
+ });
365
+ dispatch({
366
+ type: LiveChatWidgetActionType.SET_CHAT_TOKEN,
367
+ payload: undefined
368
+ });
369
+ dispatch({
370
+ type: LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
371
+ payload: undefined
372
+ });
373
+ });
303
374
  return () => {
304
375
  disposeTelemetryLoggers();
305
376
  };
@@ -313,8 +384,9 @@ export const LiveChatWidgetStateful = props => {
313
384
  dispatch({
314
385
  type: LiveChatWidgetActionType.SET_UNREAD_MESSAGE_COUNT,
315
386
  payload: currentMessageCountRef.current + 1
316
- }); // New message notification
387
+ });
317
388
 
389
+ // New message notification
318
390
  BroadcastService.postMessage({
319
391
  eventName: BroadcastEvent.NewMessageNotification
320
392
  });
@@ -323,9 +395,15 @@ export const LiveChatWidgetStateful = props => {
323
395
  }, [state.appStates.conversationState]);
324
396
  useEffect(() => {
325
397
  canStartProactiveChat.current = state.appStates.conversationState === ConversationState.Closed && !state.appStates.proactiveChatStates.proactiveChatInNewWindow;
326
- }, [state.appStates.conversationState, state.appStates.proactiveChatStates.proactiveChatInNewWindow]); // Reset the UnreadMessageCount when minimized is toggled and broadcast it.
398
+ }, [state.appStates.conversationState, state.appStates.proactiveChatStates.proactiveChatInNewWindow]);
327
399
 
400
+ // Reset the UnreadMessageCount when minimized is toggled and broadcast it.
328
401
  useEffect(() => {
402
+ if (state.appStates.isMinimized) {
403
+ ActivityStreamHandler.cork();
404
+ } else {
405
+ setTimeout(() => ActivityStreamHandler.uncork(), 500);
406
+ }
329
407
  currentMessageCountRef.current = -1;
330
408
  dispatch({
331
409
  type: LiveChatWidgetActionType.SET_UNREAD_MESSAGE_COUNT,
@@ -337,8 +415,9 @@ export const LiveChatWidgetStateful = props => {
337
415
  payload: 0
338
416
  };
339
417
  BroadcastService.postMessage(customEvent);
340
- }, [state.appStates.isMinimized]); // Broadcast the UnreadMessageCount state on any change.
418
+ }, [state.appStates.isMinimized]);
341
419
 
420
+ // Broadcast the UnreadMessageCount state on any change.
342
421
  useEffect(() => {
343
422
  if (state.appStates.isMinimized === true && state.appStates.unreadMessageCount > 0) {
344
423
  const customEvent = {
@@ -351,68 +430,130 @@ export const LiveChatWidgetStateful = props => {
351
430
  }, [state.appStates.unreadMessageCount]);
352
431
  useEffect(() => {
353
432
  var _props$webChatContain2;
354
-
355
- setWebChatStyles({ ...webChatStyles,
433
+ setWebChatStyles({
434
+ ...webChatStyles,
356
435
  ...((_props$webChatContain2 = props.webChatContainerProps) === null || _props$webChatContain2 === void 0 ? void 0 : _props$webChatContain2.webChatStyles)
357
436
  });
358
- }, [(_props$webChatContain3 = props.webChatContainerProps) === null || _props$webChatContain3 === void 0 ? void 0 : _props$webChatContain3.webChatStyles]); // Publish chat widget state
437
+ }, [(_props$webChatContain3 = props.webChatContainerProps) === null || _props$webChatContain3 === void 0 ? void 0 : _props$webChatContain3.webChatStyles]);
359
438
 
439
+ // Publish chat widget state
360
440
  useEffect(() => {
361
- var _props$chatSDK, _props$chatSDK$omnich, _props$chatSDK2, _props$chatSDK2$omnic;
362
-
363
- 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);
441
+ var _props$chatSDK, _props$chatSDK$omnich, _props$chatSDK2, _props$chatSDK2$omnic, _props$controlProps14;
442
+ // Only activate these windows events when conversation state is active and chat widget is in popout mode
443
+ // Ghost chat scenarios
444
+ /* COMMENTING THIS CODE FOR PARITY WITH OLD LCW
445
+ if (state.appStates.conversationState === ConversationState.Active &&
446
+ props.controlProps?.hideStartChatButton === true) {
447
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
448
+
449
+ window.onbeforeunload = function () {
450
+ const prompt = Constants.BrowserUnloadConfirmationMessage;
451
+ return prompt;
452
+ };
453
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
454
+ window.onunload = function () {
455
+ initiateEndChatOnBrowserUnload();
456
+ };
457
+ }*/
458
+
459
+ 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$controlProps14 = props.controlProps) === null || _props$controlProps14 === void 0 ? void 0 : _props$controlProps14.widgetInstanceId) ?? "");
364
460
  const chatWidgetStateChangeEvent = {
365
461
  eventName: widgetStateEventName,
366
- payload: { ...state
462
+ payload: {
463
+ ...state
367
464
  }
368
465
  };
369
466
  BroadcastService.postMessage(chatWidgetStateChangeEvent);
370
467
  }, [state]);
371
- const webChatProps = initWebChatComposer(props, chatSDK, state, dispatch, setWebChatStyles);
372
-
373
- const setPostChatContextRelay = () => setPostChatContextAndLoadSurvey(chatSDK, dispatch); // eslint-disable-next-line @typescript-eslint/no-explicit-any
374
-
375
-
376
- const endChatRelay = (adapter, skipEndChatSDK, skipCloseChat) => endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, skipEndChatSDK, skipCloseChat); // eslint-disable-next-line @typescript-eslint/no-explicit-any
377
-
378
-
379
- const prepareEndChatRelay = (adapter, state) => prepareEndChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, state);
380
-
381
- const prepareStartChatRelay = () => prepareStartChat(props, chatSDK, state, dispatch, setAdapter); // eslint-disable-next-line @typescript-eslint/no-explicit-any
382
468
 
469
+ // Initiate End chat from a single point
470
+ useEffect(() => {
471
+ if (state.appStates.conversationEndedBy !== undefined) {
472
+ prepareEndChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, state);
473
+ }
474
+ }, [state.appStates.conversationEndedBy]);
383
475
 
384
- const initStartChatRelay = (optionalParams, persistedState) => initStartChat(chatSDK, props.authProps, dispatch, setAdapter, optionalParams, persistedState);
476
+ // Handle Agent end conversation cases
477
+ useEffect(() => {
478
+ if (state.appStates.conversationEndedByAgentEventReceived) {
479
+ handleAgentEndConversation(props, state, dispatch);
480
+ }
481
+ }, [state.appStates.conversationEndedByAgentEventReceived]);
482
+ const initiateEndChatOnBrowserUnload = () => {
483
+ var _DataStoreManager$cli;
484
+ TelemetryHelper.logActionEvent(LogLevel.INFO, {
485
+ Event: TelemetryEvent.BrowserUnloadEventStarted,
486
+ Description: "Browser unload event received."
487
+ });
488
+ endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, false, false, false);
489
+ // Clean local storage
490
+ (_DataStoreManager$cli = DataStoreManager.clientDataStore) === null || _DataStoreManager$cli === void 0 ? void 0 : _DataStoreManager$cli.removeData(widgetStateEventName, "localStorage");
385
491
 
492
+ //Dispose calling instance
493
+ if (voiceVideoCallingSDK) {
494
+ voiceVideoCallingSDK === null || voiceVideoCallingSDK === void 0 ? void 0 : voiceVideoCallingSDK.close();
495
+ }
496
+ //Message for clearing window[popouTab]
497
+ BroadcastService.postMessage({
498
+ eventName: BroadcastEvent.ClosePopoutWindow
499
+ });
500
+ };
501
+ const webChatProps = initWebChatComposer(props, chatSDK, setAdapter, state, dispatch, adapter, setWebChatStyles);
502
+ const setPostChatContextRelay = () => setPostChatContextAndLoadSurvey(chatSDK, dispatch);
503
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
504
+ const endChatRelay = (adapter, skipEndChatSDK, skipCloseChat, postMessageToOtherTab) => endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, skipEndChatSDK, skipCloseChat, postMessageToOtherTab);
505
+ const prepareStartChatRelay = () => prepareStartChat(props, chatSDK, state, dispatch, setAdapter);
506
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
507
+ const initStartChatRelay = (optionalParams, persistedState) => initStartChat(chatSDK, dispatch, setAdapter, props, optionalParams, persistedState);
386
508
  const confirmationPaneProps = initConfirmationPropsComposer(props);
387
- return /*#__PURE__*/React.createElement(Composer, _extends({}, webChatProps, {
509
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("style", null, `
510
+ ::-webkit-scrollbar {
511
+ width: ${scrollbarProps.width};
512
+ }
513
+
514
+ ::-webkit-scrollbar-track {
515
+ background: ${scrollbarProps.trackBackgroundColor};
516
+ }
517
+
518
+ ::-webkit-scrollbar-thumb {
519
+ background: ${scrollbarProps.thumbBackgroundColor};
520
+ border-radius: ${scrollbarProps.thumbBorderRadius};
521
+ }
522
+
523
+ ::-webkit-scrollbar-thumb:hover {
524
+ background: ${scrollbarProps.thumbHoverColor};
525
+ }
526
+ `), /*#__PURE__*/React.createElement(Composer, _extends({}, webChatProps, {
388
527
  styleOptions: webChatStyles,
389
528
  directLine: ((_props$webChatContain4 = props.webChatContainerProps) === null || _props$webChatContain4 === void 0 ? void 0 : _props$webChatContain4.directLine) ?? adapter ?? defaultWebChatContainerStatefulProps.directLine
390
529
  }), /*#__PURE__*/React.createElement(Stack, {
391
530
  id: widgetElementId,
392
531
  styles: generalStyles,
393
532
  className: (_props$styleProps2 = props.styleProps) === null || _props$styleProps2 === void 0 ? void 0 : _props$styleProps2.className
394
- }, !((_props$controlProps5 = props.controlProps) !== null && _props$controlProps5 !== void 0 && _props$controlProps5.hideChatButton) && !((_props$controlProps6 = props.controlProps) !== null && _props$controlProps6 !== void 0 && _props$controlProps6.skipChatButtonRendering) && shouldShowChatButton(state) && (decodeComponentString((_props$componentOverr = props.componentOverrides) === null || _props$componentOverr === void 0 ? void 0 : _props$componentOverr.chatButton) || /*#__PURE__*/React.createElement(ChatButtonStateful, {
533
+ }, !((_props$controlProps15 = props.controlProps) !== null && _props$controlProps15 !== void 0 && _props$controlProps15.hideChatButton) && !((_props$controlProps16 = props.controlProps) !== null && _props$controlProps16 !== void 0 && _props$controlProps16.hideStartChatButton) && shouldShowChatButton(state) && (decodeComponentString((_props$componentOverr = props.componentOverrides) === null || _props$componentOverr === void 0 ? void 0 : _props$componentOverr.chatButton) || /*#__PURE__*/React.createElement(ChatButtonStateful, {
395
534
  buttonProps: props.chatButtonProps,
396
535
  outOfOfficeButtonProps: props.outOfOfficeChatButtonProps,
397
536
  startChat: prepareStartChatRelay
398
- })), !((_props$controlProps7 = props.controlProps) !== null && _props$controlProps7 !== void 0 && _props$controlProps7.hideProactiveChatPane) && shouldShowProactiveChatPane(state) && (decodeComponentString((_props$componentOverr2 = props.componentOverrides) === null || _props$componentOverr2 === void 0 ? void 0 : _props$componentOverr2.proactiveChatPane) || /*#__PURE__*/React.createElement(ProactiveChatPaneStateful, {
537
+ })), !((_props$controlProps17 = props.controlProps) !== null && _props$controlProps17 !== void 0 && _props$controlProps17.hideProactiveChatPane) && shouldShowProactiveChatPane(state) && (decodeComponentString((_props$componentOverr2 = props.componentOverrides) === null || _props$componentOverr2 === void 0 ? void 0 : _props$componentOverr2.proactiveChatPane) || /*#__PURE__*/React.createElement(ProactiveChatPaneStateful, {
399
538
  proactiveChatProps: props.proactiveChatPaneProps,
400
539
  startChat: prepareStartChatRelay
401
- })), !((_props$controlProps8 = props.controlProps) !== null && _props$controlProps8 !== void 0 && _props$controlProps8.hideHeader) && shouldShowHeader(state) && (decodeComponentString((_props$componentOverr3 = props.componentOverrides) === null || _props$componentOverr3 === void 0 ? void 0 : _props$componentOverr3.header) || /*#__PURE__*/React.createElement(HeaderStateful, {
540
+ })), !((_props$controlProps18 = props.controlProps) !== null && _props$controlProps18 !== void 0 && _props$controlProps18.hideHeader) && shouldShowHeader(state) && (decodeComponentString((_props$componentOverr3 = props.componentOverrides) === null || _props$componentOverr3 === void 0 ? void 0 : _props$componentOverr3.header) || /*#__PURE__*/React.createElement(HeaderStateful, {
402
541
  headerProps: props.headerProps,
403
542
  outOfOfficeHeaderProps: props.outOfOfficeHeaderProps,
404
543
  endChat: endChatRelay
405
- })), !((_props$controlProps9 = props.controlProps) !== null && _props$controlProps9 !== void 0 && _props$controlProps9.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$controlProps10 = props.controlProps) !== null && _props$controlProps10 !== void 0 && _props$controlProps10.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$controlProps11 = props.controlProps) !== null && _props$controlProps11 !== void 0 && _props$controlProps11.hideReconnectChatPane) && shouldShowReconnectChatPane(state) && (decodeComponentString((_props$componentOverr6 = props.componentOverrides) === null || _props$componentOverr6 === void 0 ? void 0 : _props$componentOverr6.reconnectChatPane) || /*#__PURE__*/React.createElement(ReconnectChatPaneStateful, {
544
+ })), !((_props$controlProps19 = props.controlProps) !== null && _props$controlProps19 !== void 0 && _props$controlProps19.hideLoadingPane) && shouldShowLoadingPane(state) && (decodeComponentString((_props$componentOverr4 = props.componentOverrides) === null || _props$componentOverr4 === void 0 ? void 0 : _props$componentOverr4.loadingPane) || /*#__PURE__*/React.createElement(LoadingPaneStateful, {
545
+ loadingPaneProps: props.loadingPaneProps,
546
+ startChatErrorPaneProps: props.startChatErrorPaneProps
547
+ })), !((_props$controlProps20 = props.controlProps) !== null && _props$controlProps20 !== void 0 && _props$controlProps20.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$controlProps21 = props.controlProps) !== null && _props$controlProps21 !== void 0 && _props$controlProps21.hideReconnectChatPane) && shouldShowReconnectChatPane(state) && (decodeComponentString((_props$componentOverr6 = props.componentOverrides) === null || _props$componentOverr6 === void 0 ? void 0 : _props$componentOverr6.reconnectChatPane) || /*#__PURE__*/React.createElement(ReconnectChatPaneStateful, {
406
548
  reconnectChatProps: props.reconnectChatPaneProps,
407
549
  initStartChat: initStartChatRelay
408
- })), !((_props$controlProps12 = props.controlProps) !== null && _props$controlProps12 !== void 0 && _props$controlProps12.hidePreChatSurveyPane) && shouldShowPreChatSurveyPane(state) && (decodeComponentString((_props$componentOverr7 = props.componentOverrides) === null || _props$componentOverr7 === void 0 ? void 0 : _props$componentOverr7.preChatSurveyPane) || /*#__PURE__*/React.createElement(PreChatSurveyPaneStateful, {
550
+ })), !((_props$controlProps22 = props.controlProps) !== null && _props$controlProps22 !== void 0 && _props$controlProps22.hidePreChatSurveyPane) && shouldShowPreChatSurveyPane(state) && (decodeComponentString((_props$componentOverr7 = props.componentOverrides) === null || _props$componentOverr7 === void 0 ? void 0 : _props$componentOverr7.preChatSurveyPane) || /*#__PURE__*/React.createElement(PreChatSurveyPaneStateful, {
409
551
  surveyProps: props.preChatSurveyPaneProps,
410
552
  initStartChat: initStartChatRelay
411
- })), !((_props$controlProps13 = props.controlProps) !== null && _props$controlProps13 !== void 0 && _props$controlProps13.hideCallingContainer) && shouldShowCallingContainer(state) && /*#__PURE__*/React.createElement(CallingContainerStateful, _extends({
553
+ })), !((_props$controlProps23 = props.controlProps) !== null && _props$controlProps23 !== void 0 && _props$controlProps23.hideCallingContainer) && shouldShowCallingContainer(state) && /*#__PURE__*/React.createElement(CallingContainerStateful, _extends({
412
554
  voiceVideoCallingSdk: voiceVideoCallingSDK
413
- }, props.callingContainerProps)), !((_props$controlProps14 = props.controlProps) !== null && _props$controlProps14 !== void 0 && _props$controlProps14.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$controlProps15 = props.controlProps) !== null && _props$controlProps15 !== void 0 && _props$controlProps15.hideConfirmationPane) && shouldShowConfirmationPane(state) && (decodeComponentString((_props$componentOverr9 = props.componentOverrides) === null || _props$componentOverr9 === void 0 ? void 0 : _props$componentOverr9.confirmationPane) || /*#__PURE__*/React.createElement(ConfirmationPaneStateful, _extends({}, confirmationPaneProps, {
414
- setPostChatContext: setPostChatContextRelay,
415
- prepareEndChat: prepareEndChatRelay
416
- }))), !((_props$controlProps16 = props.controlProps) !== null && _props$controlProps16 !== void 0 && _props$controlProps16.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))));
555
+ }, props.callingContainerProps)), !((_props$controlProps24 = props.controlProps) !== null && _props$controlProps24 !== void 0 && _props$controlProps24.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$controlProps25 = props.controlProps) !== null && _props$controlProps25 !== void 0 && _props$controlProps25.hideConfirmationPane) && shouldShowConfirmationPane(state) && (decodeComponentString((_props$componentOverr9 = props.componentOverrides) === null || _props$componentOverr9 === void 0 ? void 0 : _props$componentOverr9.confirmationPane) || /*#__PURE__*/React.createElement(ConfirmationPaneStateful, _extends({}, confirmationPaneProps, {
556
+ setPostChatContext: setPostChatContextRelay
557
+ }))), !((_props$controlProps26 = props.controlProps) !== null && _props$controlProps26 !== void 0 && _props$controlProps26.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)))));
417
558
  };
418
559
  export default LiveChatWidgetStateful;