@microsoft/omnichannel-chat-widget 0.1.0-main.edd8c2a → 0.1.0-main.f4c21f0

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 (369) hide show
  1. package/README.md +259 -0
  2. package/lib/cjs/assets/Audios.js +8 -0
  3. package/lib/cjs/assets/Icons.js +30 -0
  4. package/lib/cjs/common/Constants.js +54 -151
  5. package/lib/cjs/common/KeyCodes.js +3 -4
  6. package/lib/cjs/common/contextDataStore/DataStoreManager.js +12 -0
  7. package/lib/cjs/{assets/assets.d.js → common/interfaces/IContextDataStore.js} +0 -0
  8. package/lib/cjs/common/storage/default/defaultCacheManager.js +26 -0
  9. package/lib/cjs/common/storage/default/defaultClientDataStoreProvider.js +111 -0
  10. package/lib/cjs/common/storage/default/defaultInMemoryDataStore.js +78 -0
  11. package/lib/cjs/common/telemetry/TelemetryConstants.js +88 -22
  12. package/lib/cjs/common/telemetry/TelemetryHelper.js +39 -59
  13. package/lib/cjs/common/telemetry/TelemetryManager.js +25 -35
  14. package/lib/cjs/common/telemetry/defaultConfigs/defaultAriaConfig.js +3 -3
  15. package/lib/cjs/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +4 -3
  16. package/lib/cjs/common/telemetry/loggers/ariaTelemetryLogger.js +59 -32
  17. package/lib/cjs/common/telemetry/loggers/consoleLogger.js +9 -14
  18. package/lib/cjs/common/utils.js +80 -80
  19. package/lib/cjs/components/callingcontainerstateful/CallingContainerStateful.js +21 -45
  20. package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +20 -26
  21. package/lib/cjs/components/chatbuttonstateful/common/styleProps/defaultOutOfOfficeChatButtonStyleProps.js +3 -0
  22. package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +15 -86
  23. package/lib/cjs/components/dimlayer/DimLayer.js +0 -4
  24. package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +11 -39
  25. package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.spec.js +6 -8
  26. package/lib/cjs/components/footerstateful/FooterStateful.js +14 -46
  27. package/lib/cjs/components/footerstateful/audionotificationstateful/AudioNotificationStateful.js +0 -6
  28. package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +15 -44
  29. package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.spec.js +6 -8
  30. package/lib/cjs/components/headerstateful/HeaderStateful.js +26 -35
  31. package/lib/cjs/components/livechatwidget/LiveChatWidget.js +2 -14
  32. package/lib/cjs/components/livechatwidget/common/ActivityStreamHandler.js +39 -0
  33. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +20 -0
  34. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.js +1 -0
  35. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +34 -0
  36. package/lib/cjs/components/livechatwidget/common/ChatAdapterShim.js +64 -0
  37. package/lib/cjs/components/livechatwidget/common/Deferred.js +37 -0
  38. package/lib/cjs/components/livechatwidget/common/authHelper.js +50 -0
  39. package/lib/cjs/components/livechatwidget/common/createAdapter.js +10 -9
  40. package/lib/cjs/components/livechatwidget/common/createFooter.js +4 -23
  41. package/lib/cjs/components/livechatwidget/common/createInternetConnectionChangeHandler.js +10 -10
  42. package/lib/cjs/components/livechatwidget/common/createMarkdown.js +36 -44
  43. package/lib/cjs/components/livechatwidget/common/defaultProps/defaultScrollBarProps.js +14 -0
  44. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +146 -68
  45. package/lib/cjs/components/livechatwidget/common/disposeTelemetryLoggers.js +11 -0
  46. package/lib/cjs/components/livechatwidget/common/endChat.js +168 -54
  47. package/lib/cjs/components/livechatwidget/common/getGeneralStylesForButton.js +0 -6
  48. package/lib/cjs/components/livechatwidget/common/initCallingSdk.js +10 -14
  49. package/lib/cjs/components/livechatwidget/common/initConfirmationPropsComposer.js +4 -8
  50. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +51 -54
  51. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +98 -66
  52. package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +13 -22
  53. package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +18 -29
  54. package/lib/cjs/components/livechatwidget/common/shareObservable.js +41 -0
  55. package/lib/cjs/components/livechatwidget/common/startChat.js +310 -67
  56. package/lib/cjs/components/livechatwidget/common/startProactiveChat.js +3 -11
  57. package/lib/cjs/components/livechatwidget/common/updateSessionDataForTelemetry.js +2 -11
  58. package/lib/cjs/components/livechatwidget/interfaces/IScrollBarProps.js +1 -0
  59. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +370 -160
  60. package/lib/cjs/components/loadingpanestateful/LoadingPaneStateful.js +20 -20
  61. package/lib/cjs/components/loadingpanestateful/common/errorUIStyleProps/errorUILoadingPaneStyleProps.js +57 -0
  62. package/lib/cjs/components/ooohpanestateful/OOOHPaneStateful.js +9 -14
  63. package/lib/cjs/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +9 -14
  64. package/lib/cjs/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +32 -23
  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 +27 -43
  70. package/lib/cjs/components/prechatsurveypanestateful/common/defaultStyles/defaultGeneralPreChatSurveyPaneStyleProps.js +1 -1
  71. package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +27 -35
  72. package/lib/cjs/components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.js +1 -0
  73. package/lib/cjs/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +6 -24
  74. package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +94 -19
  75. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +3 -7
  76. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatStatefulProps.js +2 -6
  77. package/lib/cjs/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +11 -0
  78. package/lib/cjs/components/webchatcontainerstateful/common/mockadapter.js +12 -27
  79. package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +9 -16
  80. package/lib/cjs/components/webchatcontainerstateful/common/utils/BrowserInfo.js +2 -24
  81. package/lib/cjs/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +56 -88
  82. package/lib/cjs/components/webchatcontainerstateful/common/utils/isMaskingFromCustomer.js +5 -8
  83. package/lib/cjs/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.js +1 -0
  84. package/lib/cjs/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.js +1 -0
  85. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +12 -0
  86. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/WebChatStoreLoader.js +3 -5
  87. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/BrowserVendor.js +0 -1
  88. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineActivityType.js +0 -1
  89. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineSenderRole.js +0 -1
  90. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/MessageType.js +0 -1
  91. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/NotificationLevel.js +0 -1
  92. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios.js +0 -1
  93. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/SendStatus.js +0 -1
  94. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/WebChatActionType.js +0 -1
  95. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsEgressMiddleware.js +0 -7
  96. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsIngressMiddleware.js +0 -5
  97. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +33 -80
  98. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +10 -22
  99. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +27 -61
  100. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.js +7 -15
  101. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +41 -0
  102. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +82 -0
  103. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +10 -0
  104. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.js +10 -0
  105. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampFailedStyles.js +2 -3
  106. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampRetryStyles.js +2 -3
  107. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.js +10 -0
  108. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware.js +3 -9
  109. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +89 -0
  110. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +7 -18
  111. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +8 -42
  112. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +4 -22
  113. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +13 -30
  114. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +3 -9
  115. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +6 -34
  116. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +1 -10
  117. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +7 -18
  118. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +17 -19
  119. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.js +1 -9
  120. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.js +3 -9
  121. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.js +13 -34
  122. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.js +1 -10
  123. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.js +7 -11
  124. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.js +5 -14
  125. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +1 -21
  126. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +33 -0
  127. package/lib/cjs/contexts/ChatAdapterStore.js +0 -2
  128. package/lib/cjs/contexts/ChatContextStore.js +0 -2
  129. package/lib/cjs/contexts/ChatSDKStore.js +0 -2
  130. package/lib/cjs/contexts/common/ConversationState.js +4 -3
  131. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +30 -23
  132. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +21 -12
  133. package/lib/cjs/contexts/createReducer.js +181 -101
  134. package/lib/cjs/controller/componentController.js +5 -34
  135. package/lib/cjs/hooks/useChatAdapterStore.js +0 -6
  136. package/lib/cjs/hooks/useChatContextStore.js +0 -6
  137. package/lib/cjs/hooks/useChatSDKStore.js +0 -6
  138. package/lib/cjs/index.js +0 -5
  139. package/lib/cjs/plugins/newMessageEventHandler.js +82 -0
  140. package/lib/esm/assets/Audios.js +1 -0
  141. package/lib/esm/assets/Icons.js +12 -0
  142. package/lib/esm/common/Constants.js +49 -139
  143. package/lib/esm/common/KeyCodes.js +3 -3
  144. package/lib/esm/common/contextDataStore/DataStoreManager.js +5 -0
  145. package/lib/esm/common/interfaces/IContextDataStore.js +1 -0
  146. package/lib/esm/common/storage/default/defaultCacheManager.js +18 -0
  147. package/lib/esm/common/storage/default/defaultClientDataStoreProvider.js +104 -0
  148. package/lib/esm/common/storage/default/defaultInMemoryDataStore.js +70 -0
  149. package/lib/esm/common/telemetry/TelemetryConstants.js +87 -17
  150. package/lib/esm/common/telemetry/TelemetryHelper.js +40 -49
  151. package/lib/esm/common/telemetry/TelemetryManager.js +24 -27
  152. package/lib/esm/common/telemetry/defaultConfigs/defaultAriaConfig.js +3 -3
  153. package/lib/esm/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +4 -1
  154. package/lib/esm/common/telemetry/loggers/ariaTelemetryLogger.js +62 -23
  155. package/lib/esm/common/telemetry/loggers/consoleLogger.js +9 -10
  156. package/lib/esm/common/utils.js +73 -45
  157. package/lib/esm/components/callingcontainerstateful/CallingContainerStateful.js +21 -16
  158. package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +23 -13
  159. package/lib/esm/components/chatbuttonstateful/common/styleProps/defaultOutOfOfficeChatButtonStyleProps.js +3 -0
  160. package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +16 -62
  161. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +11 -18
  162. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.spec.js +6 -6
  163. package/lib/esm/components/footerstateful/FooterStateful.js +15 -26
  164. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +15 -37
  165. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.spec.js +6 -6
  166. package/lib/esm/components/headerstateful/HeaderStateful.js +27 -21
  167. package/lib/esm/components/livechatwidget/LiveChatWidget.js +2 -2
  168. package/lib/esm/components/livechatwidget/common/ActivityStreamHandler.js +32 -0
  169. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +13 -0
  170. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.js +1 -0
  171. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +27 -0
  172. package/lib/esm/components/livechatwidget/common/ChatAdapterShim.js +57 -0
  173. package/lib/esm/components/livechatwidget/common/Deferred.js +30 -0
  174. package/lib/esm/components/livechatwidget/common/authHelper.js +42 -0
  175. package/lib/esm/components/livechatwidget/common/createAdapter.js +12 -4
  176. package/lib/esm/components/livechatwidget/common/createFooter.js +4 -16
  177. package/lib/esm/components/livechatwidget/common/createInternetConnectionChangeHandler.js +10 -5
  178. package/lib/esm/components/livechatwidget/common/createMarkdown.js +38 -37
  179. package/lib/esm/components/livechatwidget/common/defaultProps/defaultScrollBarProps.js +7 -0
  180. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +148 -58
  181. package/lib/esm/components/livechatwidget/common/disposeTelemetryLoggers.js +4 -0
  182. package/lib/esm/components/livechatwidget/common/endChat.js +171 -42
  183. package/lib/esm/components/livechatwidget/common/getGeneralStylesForButton.js +0 -2
  184. package/lib/esm/components/livechatwidget/common/initCallingSdk.js +12 -11
  185. package/lib/esm/components/livechatwidget/common/initConfirmationPropsComposer.js +4 -5
  186. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +53 -26
  187. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +98 -58
  188. package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +13 -11
  189. package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +19 -21
  190. package/lib/esm/components/livechatwidget/common/shareObservable.js +35 -0
  191. package/lib/esm/components/livechatwidget/common/startChat.js +313 -52
  192. package/lib/esm/components/livechatwidget/common/startProactiveChat.js +5 -5
  193. package/lib/esm/components/livechatwidget/common/updateSessionDataForTelemetry.js +4 -2
  194. package/lib/esm/components/livechatwidget/interfaces/IScrollBarProps.js +1 -0
  195. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +371 -114
  196. package/lib/esm/components/loadingpanestateful/LoadingPaneStateful.js +20 -8
  197. package/lib/esm/components/loadingpanestateful/common/errorUIStyleProps/errorUILoadingPaneStyleProps.js +50 -0
  198. package/lib/esm/components/ooohpanestateful/OOOHPaneStateful.js +9 -4
  199. package/lib/esm/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +9 -4
  200. package/lib/esm/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +32 -11
  201. package/lib/esm/components/postchatsurveypanestateful/common/defaultStyleProps/defaultgeneralPostChatSurveyPaneStyleProps.js +1 -1
  202. package/lib/esm/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.js +6 -0
  203. package/lib/esm/components/postchatsurveypanestateful/enums/PostChatSurveyMode.js +0 -1
  204. package/lib/esm/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.js +1 -0
  205. package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +30 -28
  206. package/lib/esm/components/prechatsurveypanestateful/common/defaultStyles/defaultGeneralPreChatSurveyPaneStyleProps.js +1 -1
  207. package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +30 -14
  208. package/lib/esm/components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.js +1 -0
  209. package/lib/esm/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +6 -6
  210. package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +94 -4
  211. package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +3 -1
  212. package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultWebChatStatefulProps.js +2 -2
  213. package/lib/esm/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +4 -0
  214. package/lib/esm/components/webchatcontainerstateful/common/mockadapter.js +12 -19
  215. package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +9 -12
  216. package/lib/esm/components/webchatcontainerstateful/common/utils/BrowserInfo.js +2 -16
  217. package/lib/esm/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +7 -17
  218. package/lib/esm/components/webchatcontainerstateful/common/utils/isMaskingFromCustomer.js +5 -6
  219. package/lib/esm/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.js +1 -0
  220. package/lib/esm/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.js +1 -0
  221. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +5 -0
  222. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/WebChatStoreLoader.js +3 -3
  223. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/BrowserVendor.js +0 -1
  224. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineActivityType.js +0 -1
  225. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineSenderRole.js +0 -1
  226. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/MessageType.js +0 -1
  227. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/NotificationLevel.js +0 -1
  228. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios.js +0 -1
  229. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/SendStatus.js +0 -1
  230. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/WebChatActionType.js +0 -1
  231. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsEgressMiddleware.js +2 -5
  232. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsIngressMiddleware.js +0 -4
  233. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +34 -66
  234. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +12 -14
  235. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +27 -40
  236. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.js +9 -8
  237. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +34 -0
  238. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +80 -0
  239. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +3 -0
  240. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.js +3 -0
  241. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampFailedStyles.js +2 -1
  242. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampRetryStyles.js +2 -1
  243. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.js +3 -0
  244. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware.js +3 -7
  245. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +83 -0
  246. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +8 -9
  247. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +9 -28
  248. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +5 -14
  249. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +15 -19
  250. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +5 -8
  251. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +6 -29
  252. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +3 -7
  253. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +9 -14
  254. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +17 -14
  255. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.js +3 -7
  256. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.js +3 -7
  257. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.js +15 -27
  258. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.js +3 -5
  259. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.js +9 -9
  260. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.js +7 -9
  261. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +1 -13
  262. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +27 -0
  263. package/lib/esm/contexts/ChatAdapterStore.js +2 -1
  264. package/lib/esm/contexts/ChatContextStore.js +2 -1
  265. package/lib/esm/contexts/ChatSDKStore.js +2 -1
  266. package/lib/esm/contexts/common/ConversationState.js +4 -3
  267. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +30 -23
  268. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +21 -8
  269. package/lib/esm/contexts/createReducer.js +181 -97
  270. package/lib/esm/controller/componentController.js +6 -5
  271. package/lib/esm/hooks/useChatAdapterStore.js +0 -4
  272. package/lib/esm/hooks/useChatContextStore.js +0 -4
  273. package/lib/esm/hooks/useChatSDKStore.js +0 -4
  274. package/lib/esm/plugins/newMessageEventHandler.js +75 -0
  275. package/lib/types/assets/Audios.d.ts +1 -0
  276. package/lib/types/assets/Icons.d.ts +12 -0
  277. package/lib/types/common/Constants.d.ts +41 -1
  278. package/lib/types/common/contextDataStore/DataStoreManager.d.ts +4 -0
  279. package/lib/types/common/interfaces/IContextDataStore.d.ts +14 -0
  280. package/lib/types/common/storage/default/defaultCacheManager.d.ts +4 -0
  281. package/lib/types/common/storage/default/defaultClientDataStoreProvider.d.ts +2 -0
  282. package/lib/types/common/storage/default/defaultInMemoryDataStore.d.ts +6 -0
  283. package/lib/types/common/telemetry/TelemetryConstants.d.ts +62 -4
  284. package/lib/types/common/telemetry/TelemetryHelper.d.ts +2 -0
  285. package/lib/types/common/telemetry/TelemetryManager.d.ts +1 -0
  286. package/lib/types/common/telemetry/definitions/Contracts.d.ts +7 -4
  287. package/lib/types/common/telemetry/definitions/Payload.d.ts +16 -9
  288. package/lib/types/common/telemetry/interfaces/IChatSDKLogger.d.ts +1 -0
  289. package/lib/types/common/telemetry/interfaces/IInternalTelemetryData.d.ts +2 -0
  290. package/lib/types/common/telemetry/interfaces/ITelemetryConfig.d.ts +16 -0
  291. package/lib/types/common/utils.d.ts +8 -1
  292. package/lib/types/components/confirmationpanestateful/interfaces/IConfirmationPaneStatefulParams.d.ts +5 -2
  293. package/lib/types/components/footerstateful/audionotificationstateful/interfaces/IAudioNotificationStatefulParams.d.ts +0 -1
  294. package/lib/types/components/headerstateful/interfaces/IHeaderStatefulParams.d.ts +5 -1
  295. package/lib/types/components/livechatwidget/common/ActivityStreamHandler.d.ts +14 -0
  296. package/lib/types/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.d.ts +5 -0
  297. package/lib/types/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.d.ts +6 -0
  298. package/lib/types/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.d.ts +7 -0
  299. package/lib/types/components/livechatwidget/common/ChatAdapterShim.d.ts +7 -0
  300. package/lib/types/components/livechatwidget/common/Deferred.d.ts +9 -0
  301. package/lib/types/components/livechatwidget/common/authHelper.d.ts +5 -0
  302. package/lib/types/components/livechatwidget/common/defaultProps/defaultScrollBarProps.d.ts +2 -0
  303. package/lib/types/components/livechatwidget/common/disposeTelemetryLoggers.d.ts +1 -0
  304. package/lib/types/components/livechatwidget/common/endChat.d.ts +4 -1
  305. package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +6 -4
  306. package/lib/types/components/livechatwidget/common/setPostChatContextAndLoadSurvey.d.ts +1 -1
  307. package/lib/types/components/livechatwidget/common/shareObservable.d.ts +1 -0
  308. package/lib/types/components/livechatwidget/common/startChat.d.ts +5 -2
  309. package/lib/types/components/livechatwidget/common/startProactiveChat.d.ts +2 -1
  310. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetComponentOverrides.d.ts +1 -0
  311. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetControlProps.d.ts +4 -1
  312. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +8 -3
  313. package/lib/types/components/livechatwidget/interfaces/IScrollBarProps.d.ts +22 -0
  314. package/lib/types/components/loadingpanestateful/common/errorUIStyleProps/errorUILoadingPaneStyleProps.d.ts +2 -0
  315. package/lib/types/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.d.ts +2 -2
  316. package/lib/types/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.d.ts +5 -0
  317. package/lib/types/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.d.ts +4 -0
  318. package/lib/types/components/prechatsurveypanestateful/interfaces/IPreChatSurveyPaneStatefulParams.d.ts +1 -1
  319. package/lib/types/components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.d.ts +3 -0
  320. package/lib/types/components/reconnectchatpanestateful/interfaces/IReconnectChatPaneStatefulProps.d.ts +1 -2
  321. package/lib/types/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.d.ts +2 -0
  322. package/lib/types/components/webchatcontainerstateful/common/mockchatsdk.d.ts +2 -0
  323. package/lib/types/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.d.ts +1 -1
  324. package/lib/types/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.d.ts +4 -0
  325. package/lib/types/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.d.ts +4 -0
  326. package/lib/types/components/webchatcontainerstateful/interfaces/IRenderingMiddlewareProps.d.ts +4 -1
  327. package/lib/types/components/webchatcontainerstateful/interfaces/IWebChatContainerStatefulProps.d.ts +4 -0
  328. package/lib/types/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.d.ts +3 -0
  329. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.d.ts +0 -1
  330. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.d.ts +1 -1
  331. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.d.ts +2 -0
  332. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.d.ts +1 -0
  333. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.d.ts +2 -0
  334. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.d.ts +3 -0
  335. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.d.ts +3 -0
  336. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.d.ts +5 -0
  337. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.d.ts +1 -1
  338. package/lib/types/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.d.ts +1 -0
  339. package/lib/types/contexts/common/ConversationState.d.ts +4 -2
  340. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +8 -3
  341. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +30 -22
  342. package/lib/types/contexts/common/LiveChatWidgetContextInitialState.d.ts +1 -2
  343. package/lib/types/plugins/newMessageEventHandler.d.ts +2 -0
  344. package/package.json +14 -13
  345. package/lib/cjs/assets/audios/newMessageNotification.mp3 +0 -0
  346. package/lib/cjs/assets/icons/archiveIcon.svg +0 -3
  347. package/lib/cjs/assets/icons/audioIcon.svg +0 -6
  348. package/lib/cjs/assets/icons/blankIcon.svg +0 -6
  349. package/lib/cjs/assets/icons/excelIcon.svg +0 -6
  350. package/lib/cjs/assets/icons/imageIcon.svg +0 -6
  351. package/lib/cjs/assets/icons/oneNoteIcon.svg +0 -6
  352. package/lib/cjs/assets/icons/pdfIcon.svg +0 -6
  353. package/lib/cjs/assets/icons/powerpointIcon.svg +0 -6
  354. package/lib/cjs/assets/icons/videoIcon.svg +0 -6
  355. package/lib/cjs/assets/icons/visioIcon.svg +0 -6
  356. package/lib/cjs/assets/icons/wordIcon.svg +0 -6
  357. package/lib/esm/assets/assets.d.js +0 -0
  358. package/lib/esm/assets/audios/newMessageNotification.mp3 +0 -0
  359. package/lib/esm/assets/icons/archiveIcon.svg +0 -3
  360. package/lib/esm/assets/icons/audioIcon.svg +0 -6
  361. package/lib/esm/assets/icons/blankIcon.svg +0 -6
  362. package/lib/esm/assets/icons/excelIcon.svg +0 -6
  363. package/lib/esm/assets/icons/imageIcon.svg +0 -6
  364. package/lib/esm/assets/icons/oneNoteIcon.svg +0 -6
  365. package/lib/esm/assets/icons/pdfIcon.svg +0 -6
  366. package/lib/esm/assets/icons/powerpointIcon.svg +0 -6
  367. package/lib/esm/assets/icons/videoIcon.svg +0 -6
  368. package/lib/esm/assets/icons/visioIcon.svg +0 -6
  369. package/lib/esm/assets/icons/wordIcon.svg +0 -6
@@ -1,42 +1,81 @@
1
- import { isNullOrEmptyString, isNullOrUndefined } from "../../utils";
2
- import AWTEventProperties from "@microsoft/omnichannel-chat-sdk/lib/external/aria/webjs/AWTEventProperties";
3
- import AWTLogManager from "@microsoft/omnichannel-chat-sdk/lib/external/aria/webjs/AWTLogManager";
4
- import { AWTPiiKind } from "@microsoft/omnichannel-chat-sdk/lib/external/aria/common/Enums";
5
- import { Constants } from "../../Constants";
6
- import { TelemetryHelper } from "../TelemetryHelper";
1
+ import { getDomain, isNullOrEmptyString, isNullOrUndefined } from "../../utils";
2
+ import { AWTLogManager } from "@microsoft/omnichannel-chat-sdk/lib/external/aria/webjs/AriaSDK";
3
+ import { AWTCustomerContentKind, AWTPiiKind, AWTPropertyType } from "@microsoft/omnichannel-chat-sdk/lib/external/aria/common/Enums";
4
+ import { Constants, AriaTelemetryConstants, EnvironmentVersion } from "../../Constants";
5
+ import { TelemetryManager } from "../TelemetryManager";
7
6
  export const ariaTelemetryLogger = (ariaTelemetryKey, disabledCookieUsage, collectiorUriForTelemetry, ariaTelemetryApplicationName) => {
8
7
  let _logger;
9
-
10
8
  const logger = () => {
11
9
  if (isNullOrUndefined(_logger) && !isNullOrEmptyString(ariaTelemetryKey)) {
12
10
  const configuration = {
13
11
  disableCookiesUsage: disabledCookieUsage
14
12
  };
15
-
16
13
  if (!isNullOrEmptyString(collectiorUriForTelemetry)) {
17
14
  configuration.collectorUri = collectiorUriForTelemetry;
15
+ } else {
16
+ if (TelemetryManager.InternalTelemetryData.environmentVersion == EnvironmentVersion.prod) {
17
+ var _TelemetryManager$Int;
18
+ const orgUrl = (_TelemetryManager$Int = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int === void 0 ? void 0 : _TelemetryManager$Int.orgUrl;
19
+ if (!isNullOrUndefined(orgUrl)) {
20
+ // If the given org is a Production EU org, modify the Aria collector uri
21
+ const region = getDomain(orgUrl);
22
+ if (region === AriaTelemetryConstants.EU) {
23
+ configuration.collectorUri = AriaTelemetryConstants.EUROPE_ENDPOINT;
24
+ }
25
+ }
26
+ }
27
+ }
28
+ try {
29
+ _logger = AWTLogManager.initialize(ariaTelemetryKey, configuration);
30
+ if (_logger === undefined) {
31
+ _logger = AWTLogManager.getLogger(ariaTelemetryKey);
32
+ }
33
+ } catch (error) {
34
+ console.log(error);
18
35
  }
19
-
20
- _logger = AWTLogManager.initialize(ariaTelemetryKey, configuration);
21
36
  }
22
-
23
37
  return _logger;
24
38
  };
25
-
26
39
  const ariaLogger = {
27
40
  log: (logLevel, telemetryInput) => {
28
- let property;
29
- const eventProperties = new AWTEventProperties();
30
- const event = TelemetryHelper.buildTelemetryEvent(logLevel, telemetryInput);
31
- eventProperties.setName(telemetryInput.scenarioType);
32
-
33
- for (const key of Object.keys(event)) {
34
- property = typeof event[key] === "object" ? JSON.stringify(event[key]) : event[key];
35
- eventProperties.setProperty(key, property);
41
+ try {
42
+ var _telemetryInput$telem;
43
+ const telemetryInfo = telemetryInput === null || telemetryInput === void 0 ? void 0 : (_telemetryInput$telem = telemetryInput.telemetryInfo) === null || _telemetryInput$telem === void 0 ? void 0 : _telemetryInput$telem.telemetryInfo;
44
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
45
+ const eventProperties = {
46
+ name: telemetryInput.scenarioType,
47
+ properties: {}
48
+ };
49
+ if (telemetryInfo) {
50
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
51
+ Object.keys(telemetryInfo).forEach((key, index) => {
52
+ if (!isNullOrUndefined(telemetryInfo[key]) && !isNullOrEmptyString(telemetryInfo[key])) {
53
+ const property = {
54
+ value: typeof telemetryInfo[key] === "object" ? JSON.stringify(telemetryInfo[key]) : telemetryInfo[key],
55
+ type: typeof telemetryInfo[key] === "number" ? AWTPropertyType.Double : AWTPropertyType.String,
56
+ pii: AWTPiiKind.NotSet,
57
+ cc: AWTCustomerContentKind.NotSet
58
+ };
59
+ eventProperties.properties[key] = property;
60
+ }
61
+ });
62
+ const nameProperty = {
63
+ value: Constants.LiveChatWidget,
64
+ type: AWTPropertyType.String,
65
+ pii: AWTPiiKind.GenericData,
66
+ cc: AWTCustomerContentKind.NotSet
67
+ };
68
+ eventProperties.properties[ariaTelemetryApplicationName] = nameProperty;
69
+ }
70
+ logger() ? logger().logEvent(eventProperties) : console.log("Unable to initialize aria logger");
71
+ } catch (error) {
72
+ console.error("Error in logging telemetry to Aria logger:" + error);
36
73
  }
37
-
38
- eventProperties.setPropertyWithPii(ariaTelemetryApplicationName, Constants.LiveChatWidget, AWTPiiKind.GenericData);
39
- logger() ? logger().logEvent(eventProperties) : console.log("Unable to initialize aria logger");
74
+ },
75
+ dispose: () => {
76
+ AWTLogManager.flush(function () {
77
+ console.log("Aria logger disposed");
78
+ });
40
79
  }
41
80
  };
42
81
  return ariaLogger;
@@ -4,32 +4,31 @@ export const consoleLogger = () => {
4
4
  const consoleLogger = {
5
5
  log: (logLevel, telemetryInput) => {
6
6
  const payload = telemetryInput !== null && telemetryInput !== void 0 && telemetryInput.payload && Object.keys(telemetryInput === null || telemetryInput === void 0 ? void 0 : telemetryInput.payload).length > 0 ? telemetryInput === null || telemetryInput === void 0 ? void 0 : telemetryInput.payload : "";
7
-
7
+ const telemetryInfo = telemetryInput !== null && telemetryInput !== void 0 && telemetryInput.telemetryInfo && Object.keys(telemetryInput === null || telemetryInput === void 0 ? void 0 : telemetryInput.telemetryInfo).length > 0 ? telemetryInput === null || telemetryInput === void 0 ? void 0 : telemetryInput.telemetryInfo : "";
8
8
  try {
9
9
  switch (logLevel) {
10
10
  case LogLevel.INFO:
11
- console.info(Constants.LiveChatWidget, payload);
11
+ console.info(Constants.LiveChatWidget, payload, telemetryInfo);
12
12
  break;
13
-
14
13
  case LogLevel.DEBUG:
15
- console.debug(Constants.LiveChatWidget, payload);
14
+ console.debug(Constants.LiveChatWidget, payload, telemetryInfo);
16
15
  break;
17
-
18
16
  case LogLevel.WARN:
19
- console.warn(Constants.LiveChatWidget, payload);
17
+ console.warn(Constants.LiveChatWidget, payload, telemetryInfo);
20
18
  break;
21
-
22
19
  case LogLevel.ERROR:
23
- console.error(Constants.LiveChatWidget, payload);
20
+ console.error(Constants.LiveChatWidget, payload, telemetryInfo);
24
21
  break;
25
-
26
22
  default:
27
- console.debug(Constants.LiveChatWidget, payload);
23
+ console.debug(Constants.LiveChatWidget, payload, telemetryInfo);
28
24
  break;
29
25
  }
30
26
  } catch (ex) {
31
27
  console.error("An unexpected error occurred in the Telemetry client: " + ex);
32
28
  }
29
+ },
30
+ dispose: () => {
31
+ console.log("disposing loggers");
33
32
  }
34
33
  };
35
34
  return consoleLogger;
@@ -1,23 +1,23 @@
1
- import { Constants, LocaleConstants } from "./Constants";
1
+ import { AriaTelemetryConstants, Constants, LocaleConstants } from "./Constants";
2
+ import { DataStoreManager } from "./contextDataStore/DataStoreManager";
2
3
  import { KeyCodes } from "./KeyCodes";
3
-
4
+ import { BroadcastEvent } from "./telemetry/TelemetryConstants";
5
+ import { Md5 } from "md5-typescript";
4
6
  const getElementBySelector = selector => {
5
7
  let element;
6
-
7
8
  if (typeof selector === "string") {
8
9
  element = document.querySelector(selector);
9
10
  } else {
10
11
  element = selector;
11
12
  }
12
-
13
13
  return element;
14
- }; // The purpose of this function is:
14
+ };
15
+
16
+ // The purpose of this function is:
15
17
  // - to make elements not focusable, when confirmation pane or email transcript pane are showing,
16
18
  // - to set their initial tab indices back after confirmation pane or email transcript pane are closed
17
19
  // Otherwise, the user will be able to click on the screen and tab through different buttons or other elements, even though
18
20
  // these dialogs are showing
19
-
20
-
21
21
  export const setTabIndices = (elements, tabIndexMap, shouldBeFocusable) => {
22
22
  if (elements) {
23
23
  if (shouldBeFocusable) {
@@ -26,7 +26,6 @@ export const setTabIndices = (elements, tabIndexMap, shouldBeFocusable) => {
26
26
  elements[index].tabIndex = tabIndexMap.get(elements[index].id);
27
27
  }
28
28
  }
29
-
30
29
  tabIndexMap.clear();
31
30
  } else {
32
31
  for (let index = 0; index < elements.length; index++) {
@@ -38,64 +37,49 @@ export const setTabIndices = (elements, tabIndexMap, shouldBeFocusable) => {
38
37
  };
39
38
  export const findParentFocusableElementsWithoutChildContainer = elementId => {
40
39
  const childContainer = document.getElementById(elementId);
41
-
42
40
  if (!childContainer) {
43
41
  return null;
44
42
  }
45
-
46
43
  const parentContainer = childContainer.parentElement;
47
-
48
44
  if (!parentContainer) {
49
45
  return null;
50
46
  }
51
-
52
47
  const parentFocusableElements = findAllFocusableElement(parentContainer);
53
-
54
48
  if (!parentFocusableElements) {
55
49
  return null;
56
50
  }
57
-
58
51
  for (let index = 0; index < parentFocusableElements.length; index++) {
59
52
  if (childContainer.contains(parentFocusableElements[index])) {
60
53
  parentFocusableElements.splice(index, 1);
61
54
  index--;
62
55
  }
63
56
  }
64
-
65
57
  return parentFocusableElements;
66
58
  };
67
59
  export const findAllFocusableElement = parent => {
68
60
  const container = getElementBySelector(parent);
69
-
70
61
  if (container !== null) {
71
62
  return Array.prototype.slice.call(container.querySelectorAll("a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), [tabindex=\"0\"]"));
72
63
  }
73
-
74
64
  return null;
75
65
  };
76
66
  export const preventFocusToMoveOutOfElement = elementId => {
77
67
  const container = document.getElementById(elementId);
78
-
79
68
  if (!container) {
80
69
  return;
81
70
  }
82
-
83
71
  const focusableElements = findAllFocusableElement(container);
84
-
85
72
  if (!focusableElements) {
86
73
  return;
87
74
  }
88
-
89
75
  const firstFocusableElement = focusableElements[0];
90
76
  const lastFocusableElement = focusableElements[focusableElements.length - 1];
91
-
92
77
  firstFocusableElement.onkeydown = e => {
93
78
  if (e.shiftKey && e.key === KeyCodes.TAB) {
94
79
  e.preventDefault();
95
80
  lastFocusableElement === null || lastFocusableElement === void 0 ? void 0 : lastFocusableElement.focus();
96
81
  }
97
82
  };
98
-
99
83
  lastFocusableElement.onkeydown = e => {
100
84
  if (!e.shiftKey && e.key === KeyCodes.TAB) {
101
85
  e.preventDefault();
@@ -126,14 +110,12 @@ export const escapeHtml = inputString => {
126
110
  export const getIconText = text => {
127
111
  if (text) {
128
112
  const initials = text.split(/\s/).reduce((response, word) => response += word.slice(0, 1), "");
129
-
130
113
  if (initials.length > 1) {
131
114
  return initials.substring(0, 2).toUpperCase();
132
115
  } else {
133
116
  return text.substring(0, 2).toUpperCase();
134
117
  }
135
118
  }
136
-
137
119
  return "";
138
120
  };
139
121
  export const getLocaleDirection = localeLCID => {
@@ -149,20 +131,16 @@ export const getTimestampHourMinute = timestampStr => {
149
131
  const minuteFormat = "2-digit";
150
132
  const date = new Date(timestampStr);
151
133
  const now = new Date();
152
-
153
134
  if (isNaN(date.getTime())) {
154
135
  return "";
155
136
  }
156
-
157
137
  if (date.getFullYear() !== now.getFullYear()) {
158
138
  yearFormat = "numeric";
159
139
  monthDayFormat = "2-digit";
160
140
  }
161
-
162
141
  if (date.getMonth() !== now.getMonth() || date.getDate() !== now.getDate()) {
163
142
  monthDayFormat = "2-digit";
164
143
  }
165
-
166
144
  return date.toLocaleTimeString(navigator.language, {
167
145
  year: yearFormat,
168
146
  month: monthDayFormat,
@@ -176,7 +154,6 @@ export const parseAdaptiveCardPayload = (payload, requiredFieldMissingMessage) =
176
154
  try {
177
155
  const parsedPayload = JSON.parse(payload.replace(/&#42;/g, "*"));
178
156
  const body = parsedPayload.body;
179
-
180
157
  if (body) {
181
158
  //Parse ID field into available options and add required error messages
182
159
  for (const fields of body) {
@@ -184,23 +161,21 @@ export const parseAdaptiveCardPayload = (payload, requiredFieldMissingMessage) =
184
161
  const parsedId = JSON.parse(fields.id);
185
162
  fields.id = parsedId.Id;
186
163
  fields.isRequired = parsedId.IsRequired ?? false;
187
-
188
164
  if (fields.isRequired) {
189
165
  fields.errorMessage = requiredFieldMissingMessage.replace("{0}", parsedId.Name ?? "");
190
166
  }
191
167
  }
192
168
  }
193
169
  }
194
-
195
170
  return JSON.stringify(parsedPayload);
196
171
  } catch (ex) {
197
172
  throw new Error(`Adaptive card pase error: ${ex}`);
198
173
  }
199
174
  }
200
-
201
175
  return payload;
202
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
176
+ };
203
177
 
178
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
204
179
  export const extractPreChatSurveyResponseValues = (preChatSurvey, values) => {
205
180
  if (preChatSurvey && preChatSurvey !== "{}" && values) {
206
181
  try {
@@ -210,14 +185,13 @@ export const extractPreChatSurveyResponseValues = (preChatSurvey, values) => {
210
185
  "Type": Constants.InputSubmit
211
186
  };
212
187
  const computedValues = [];
213
-
214
188
  for (const val of values) {
215
189
  const index = val.index;
216
190
  const Id = body[index].id;
217
191
  computedValues[Id] = val.value;
218
192
  }
219
-
220
- const finalPayload = { ...type,
193
+ const finalPayload = {
194
+ ...type,
221
195
  ...computedValues
222
196
  };
223
197
  return finalPayload;
@@ -225,10 +199,10 @@ export const extractPreChatSurveyResponseValues = (preChatSurvey, values) => {
225
199
  throw new Error(`PreChatSurvey Response parse error: ${ex}`);
226
200
  }
227
201
  }
228
-
229
202
  return {};
230
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
203
+ };
231
204
 
205
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
232
206
  export const isNullOrUndefined = obj => {
233
207
  return obj === null || obj === undefined;
234
208
  };
@@ -239,26 +213,21 @@ export const newGuid = () => {
239
213
  //RFC 4122 canonical representation Version-4 xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx where x is any hexadecimal digit and y is one of 8, 9, A, or B
240
214
  const guidPattern = Constants.GuidPattern;
241
215
  let newGuid = "";
242
-
243
216
  for (let i = 0; i < guidPattern.length; i++) {
244
217
  const randomString = Math.floor(Math.random() * Date.now());
245
-
246
218
  switch (guidPattern[i]) {
247
219
  case "x":
248
220
  newGuid += randomString.toString(16).substring(0, 4);
249
221
  break;
250
222
  //get 4 digit
251
-
252
223
  case "m":
253
224
  newGuid += randomString.toString(16).substring(0, 3);
254
225
  break;
255
226
  //Get 3 digit
256
-
257
227
  case "y":
258
228
  newGuid += (randomString & 0x3 | 0x8).toString(16);
259
229
  break;
260
230
  // To get only one of 8, 9, A, or B
261
-
262
231
  default:
263
232
  newGuid += guidPattern[i];
264
233
  //Default "-" and "4"
@@ -274,6 +243,65 @@ export const createTimer = () => {
274
243
  const ms = new Date().getTime() - timeStart;
275
244
  return ms;
276
245
  }
277
-
278
246
  };
247
+ };
248
+
249
+ // Returns the domain of the org
250
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
251
+ export const getDomain = hostValue => {
252
+ for (let i = 0; i < AriaTelemetryConstants.lcwEUDomainNames.length; i++) {
253
+ if (hostValue.endsWith(AriaTelemetryConstants.lcwEUDomainNames[i])) {
254
+ return AriaTelemetryConstants.EU;
255
+ }
256
+ }
257
+ return AriaTelemetryConstants.Public;
258
+ };
259
+ export const getWidgetCacheId = (orgId, widgetId, widgetInstanceId) => {
260
+ const widgetCacheId = `${widgetInstanceId}_${orgId}_${widgetId}`;
261
+ return Md5.init(widgetCacheId);
262
+ };
263
+ export const getWidgetEndChatEventName = (orgId, widgetId, widgetInstanceId) => {
264
+ if (!isNullOrEmptyString(widgetInstanceId)) {
265
+ return `${BroadcastEvent.ChatEnded}_${widgetInstanceId}_${orgId}_${widgetId}`;
266
+ }
267
+ return `${BroadcastEvent.ChatEnded}_${orgId}_${widgetId}`;
268
+ };
269
+
270
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
271
+ export const getStateFromCache = (orgId, widgetId, widgetInstanceId) => {
272
+ // Getting updated state from cache
273
+ try {
274
+ if (DataStoreManager.clientDataStore) {
275
+ var _DataStoreManager$cli;
276
+ const widgetStateEventName = getWidgetCacheId(orgId, widgetId, widgetInstanceId);
277
+ const widgetStateFromCache = (_DataStoreManager$cli = DataStoreManager.clientDataStore) === null || _DataStoreManager$cli === void 0 ? void 0 : _DataStoreManager$cli.getData(widgetStateEventName, "localStorage");
278
+ const persistedState = widgetStateFromCache ? JSON.parse(widgetStateFromCache) : undefined;
279
+ return persistedState;
280
+ } else {
281
+ return null;
282
+ }
283
+ } catch (error) {
284
+ console.log(error);
285
+ return null;
286
+ }
287
+ };
288
+
289
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
290
+ export const isUndefinedOrEmpty = object => {
291
+ if (object) {
292
+ if (Object.keys(object).length === 0) {
293
+ return true;
294
+ }
295
+ return false;
296
+ } else {
297
+ return true;
298
+ }
299
+ };
300
+
301
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
302
+ export const addDelayInMs = ms => {
303
+ return new Promise(resolve => setTimeout(resolve, ms));
304
+ };
305
+ export const getBroadcastChannelName = (widgetId, widgetInstanceId) => {
306
+ return widgetInstanceId && !isNullOrEmptyString(widgetInstanceId) ? `${widgetInstanceId}_${widgetId}` : widgetId;
279
307
  };
@@ -7,17 +7,17 @@ import useChatContextStore from "../../hooks/useChatContextStore";
7
7
  import useChatSDKStore from "../../hooks/useChatSDKStore";
8
8
  export const CallingContainerStateful = props => {
9
9
  var _props$controlProps, _props$controlProps2, _props$controlProps2$, _props$controlProps3, _props$controlProps3$, _props$controlProps3$2, _props$controlProps4, _props$controlProps4$, _props$controlProps4$2, _props$controlProps5;
10
-
11
10
  //TODO : Close button confirmation implmentation is pending
12
- const [state, dispatch] = useChatContextStore(); // eslint-disable-next-line @typescript-eslint/no-explicit-any
13
11
 
14
- const chatSDK = useChatSDKStore(); // eslint-disable-next-line @typescript-eslint/no-explicit-any
12
+ const [state, dispatch] = useChatContextStore();
13
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
14
+ const chatSDK = useChatSDKStore();
15
15
 
16
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
17
  const {
17
18
  voiceVideoCallingSdk
18
19
  } = props;
19
20
  let callId;
20
-
21
21
  const resetCallingStates = reset => {
22
22
  if (reset) {
23
23
  dispatch({
@@ -42,12 +42,10 @@ export const CallingContainerStateful = props => {
42
42
  });
43
43
  }
44
44
  };
45
-
46
45
  useEffect(() => {
47
46
  const init = async () => {
48
47
  try {
49
48
  var _controlProps$current, _controlProps$current2, _controlProps$current3, _controlProps$current4;
50
-
51
49
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
52
50
  TelemetryHelper.callId = callId;
53
51
  await voiceVideoCallingSdk.initialize({
@@ -60,16 +58,15 @@ export const CallingContainerStateful = props => {
60
58
  });
61
59
  } catch (e) {
62
60
  TelemetryHelper.logCallingEvent(LogLevel.ERROR, {
63
- Event: TelemetryEvent.VoiceVideoInitializeException,
61
+ Event: TelemetryEvent.VoiceVideoSdkInitializeException,
64
62
  Description: `Failed to initialize VideoVoiceCalling Sdk: ${e}`
65
63
  });
66
64
  }
67
65
  };
68
-
69
66
  init().then(() => {
70
67
  if (voiceVideoCallingSdk) {
71
68
  TelemetryHelper.logCallingEvent(LogLevel.INFO, {
72
- Event: TelemetryEvent.VoiceVideoInitialize,
69
+ Event: TelemetryEvent.VoiceVideoSdkInitialize,
73
70
  Description: "Initialize VideoVoiceCalling Sdk Success"
74
71
  }, callId);
75
72
  voiceVideoCallingSdk.onCallAdded(() => {
@@ -131,14 +128,12 @@ export const CallingContainerStateful = props => {
131
128
  }, callId);
132
129
  const isRemoteVideoDisabled = !voiceVideoCallingSdk.isRemoteVideoEnabled();
133
130
  const isLocalVideoDisabled = !voiceVideoCallingSdk.isLocalVideoEnabled();
134
-
135
131
  if (isRemoteVideoDisabled && isLocalVideoDisabled) {
136
132
  dispatch({
137
133
  type: LiveChatWidgetActionType.DISABLE_VIDEO_CALL,
138
134
  payload: true
139
135
  });
140
136
  }
141
-
142
137
  dispatch({
143
138
  type: LiveChatWidgetActionType.DISABLE_REMOTE_VIDEO,
144
139
  payload: isRemoteVideoDisabled
@@ -150,14 +145,12 @@ export const CallingContainerStateful = props => {
150
145
  }, callId);
151
146
  const isLocalVideoDisabled = !voiceVideoCallingSdk.isLocalVideoEnabled();
152
147
  const isRemoteVideoDisabled = !voiceVideoCallingSdk.isRemoteVideoEnabled();
153
-
154
148
  if (isRemoteVideoDisabled && isLocalVideoDisabled) {
155
149
  dispatch({
156
150
  type: LiveChatWidgetActionType.DISABLE_VIDEO_CALL,
157
151
  payload: true
158
152
  });
159
153
  }
160
-
161
154
  dispatch({
162
155
  type: LiveChatWidgetActionType.DISABLE_LOCAL_VIDEO,
163
156
  payload: isLocalVideoDisabled
@@ -177,6 +170,19 @@ export const CallingContainerStateful = props => {
177
170
  });
178
171
  }
179
172
  });
173
+ window.addEventListener("beforeunload", () => {
174
+ if (state.uiStates.isIncomingCall) {
175
+ voiceVideoCallingSdk === null || voiceVideoCallingSdk === void 0 ? void 0 : voiceVideoCallingSdk.rejectCall();
176
+ } else {
177
+ voiceVideoCallingSdk === null || voiceVideoCallingSdk === void 0 ? void 0 : voiceVideoCallingSdk.stopCall();
178
+ }
179
+ voiceVideoCallingSdk === null || voiceVideoCallingSdk === void 0 ? void 0 : voiceVideoCallingSdk.close();
180
+ dispatch({
181
+ type: LiveChatWidgetActionType.SET_E2VV_ENABLED,
182
+ payload: false
183
+ });
184
+ resetCallingStates(true);
185
+ });
180
186
  }, []);
181
187
  const controlProps = {
182
188
  id: "oc-lcw-callingcontainer",
@@ -217,7 +223,6 @@ export const CallingContainerStateful = props => {
217
223
  }
218
224
  }, callId);
219
225
  }
220
-
221
226
  dispatch({
222
227
  type: LiveChatWidgetActionType.SET_INCOMING_CALL,
223
228
  payload: false
@@ -243,7 +248,6 @@ export const CallingContainerStateful = props => {
243
248
  }
244
249
  }, callId);
245
250
  }
246
-
247
251
  dispatch({
248
252
  type: LiveChatWidgetActionType.SET_INCOMING_CALL,
249
253
  payload: false
@@ -303,7 +307,8 @@ export const CallingContainerStateful = props => {
303
307
  }, callId);
304
308
  }
305
309
  }, []),
306
- nonActionIds: { ...(props === null || props === void 0 ? void 0 : (_props$controlProps2 = props.controlProps) === null || _props$controlProps2 === void 0 ? void 0 : (_props$controlProps2$ = _props$controlProps2.currentCallControlProps) === null || _props$controlProps2$ === void 0 ? void 0 : _props$controlProps2$.nonActionIds),
310
+ nonActionIds: {
311
+ ...(props === null || props === void 0 ? void 0 : (_props$controlProps2 = props.controlProps) === null || _props$controlProps2 === void 0 ? void 0 : (_props$controlProps2$ = _props$controlProps2.currentCallControlProps) === null || _props$controlProps2$ === void 0 ? void 0 : _props$controlProps2$.nonActionIds),
307
312
  selfVideoTileId: (props === null || props === void 0 ? void 0 : (_props$controlProps3 = props.controlProps) === null || _props$controlProps3 === void 0 ? void 0 : (_props$controlProps3$ = _props$controlProps3.currentCallControlProps) === null || _props$controlProps3$ === void 0 ? void 0 : (_props$controlProps3$2 = _props$controlProps3$.nonActionIds) === null || _props$controlProps3$2 === void 0 ? void 0 : _props$controlProps3$2.selfVideoTileId) ?? "selfVideo",
308
313
  remoteVideoTileId: (props === null || props === void 0 ? void 0 : (_props$controlProps4 = props.controlProps) === null || _props$controlProps4 === void 0 ? void 0 : (_props$controlProps4$ = _props$controlProps4.currentCallControlProps) === null || _props$controlProps4$ === void 0 ? void 0 : (_props$controlProps4$2 = _props$controlProps4$.nonActionIds) === null || _props$controlProps4$2 === void 0 ? void 0 : _props$controlProps4$2.remoteVideoTileId) ?? "remoteVideo"
309
314
  },
@@ -1,6 +1,6 @@
1
- import { LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
2
- import React, { useEffect, useState } from "react";
3
- import { ChatButton } from "@microsoft/omnichannel-chat-components";
1
+ import { BroadcastEvent, LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
2
+ import React, { useEffect, useRef, useState } from "react";
3
+ import { BroadcastService, ChatButton } from "@microsoft/omnichannel-chat-components";
4
4
  import { Constants } from "../../common/Constants";
5
5
  import { setFocusOnElement } from "../../common/utils";
6
6
  import { ConversationState } from "../../contexts/common/ConversationState";
@@ -10,30 +10,34 @@ import { TelemetryTimers } from "../../common/telemetry/TelemetryManager";
10
10
  import { defaultOutOfOfficeChatButtonStyleProps } from "./common/styleProps/defaultOutOfOfficeChatButtonStyleProps";
11
11
  import useChatContextStore from "../../hooks/useChatContextStore";
12
12
  export const ChatButtonStateful = props => {
13
- var _state$domainStates$l, _state$domainStates$l2, _buttonProps$controlP;
14
-
13
+ var _state$domainStates$l, _state$domainStates$l2, _buttonProps$controlP, _props$buttonProps, _props$buttonProps$co, _props$buttonProps2, _props$buttonProps2$c, _props$buttonProps3, _props$buttonProps3$c;
15
14
  const [state, dispatch] = useChatContextStore();
16
15
  const {
17
16
  buttonProps,
18
17
  outOfOfficeButtonProps,
19
18
  startChat
20
- } = props; //Setting OutOfOperatingHours Flag
21
-
19
+ } = props;
20
+ //Setting OutOfOperatingHours Flag
22
21
  const [outOfOperatingHours, setOutOfOperatingHours] = useState(((_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.OutOfOperatingHours) === "True");
22
+ const proactiveChatInNewWindow = useRef(state.appStates.proactiveChatStates.proactiveChatInNewWindow);
23
23
  const outOfOfficeStyleProps = Object.assign({}, defaultOutOfOfficeChatButtonStyleProps, outOfOfficeButtonProps === null || outOfOfficeButtonProps === void 0 ? void 0 : outOfOfficeButtonProps.styleProps);
24
24
  const controlProps = {
25
25
  id: "oc-lcw-chat-button",
26
26
  dir: state.domainStates.globalDir,
27
27
  titleText: "Let's Chat!",
28
28
  subtitleText: "We're online.",
29
- hideNotificationBubble: !(state.appStates.isMinimized === true && state.appStates.unreadMessageCount > 0) || (buttonProps === null || buttonProps === void 0 ? void 0 : (_buttonProps$controlP = buttonProps.controlProps) === null || _buttonProps$controlP === void 0 ? void 0 : _buttonProps$controlP.hideNotificationBubble) === true,
30
- unreadMessageCount: state.appStates.unreadMessageCount ? state.appStates.unreadMessageCount > Constants.maximumUnreadMessageCount ? Constants.maximumUnreadMessageCount.toString() + "+" : state.appStates.unreadMessageCount.toString() : "0",
29
+ hideNotificationBubble: (buttonProps === null || buttonProps === void 0 ? void 0 : (_buttonProps$controlP = buttonProps.controlProps) === null || _buttonProps$controlP === void 0 ? void 0 : _buttonProps$controlP.hideNotificationBubble) === true || state.appStates.isMinimized === false,
30
+ unreadMessageCount: state.appStates.unreadMessageCount ? state.appStates.unreadMessageCount > Constants.maximumUnreadMessageCount ? (_props$buttonProps = props.buttonProps) === null || _props$buttonProps === void 0 ? void 0 : (_props$buttonProps$co = _props$buttonProps.controlProps) === null || _props$buttonProps$co === void 0 ? void 0 : _props$buttonProps$co.largeUnreadMessageString : state.appStates.unreadMessageCount.toString() : "0",
31
31
  onClick: async () => {
32
32
  TelemetryHelper.logActionEvent(LogLevel.INFO, {
33
33
  Event: TelemetryEvent.LCWChatButtonClicked
34
34
  });
35
-
36
- if (state.appStates.isMinimized) {
35
+ if (proactiveChatInNewWindow.current) {
36
+ const proactiveChatIsInPopoutModeEvent = {
37
+ eventName: BroadcastEvent.ProactiveChatIsInPopoutMode
38
+ };
39
+ BroadcastService.postMessage(proactiveChatIsInPopoutModeEvent);
40
+ } else if (state.appStates.isMinimized) {
37
41
  dispatch({
38
42
  type: LiveChatWidgetActionType.SET_MINIMIZED,
39
43
  payload: false
@@ -42,6 +46,7 @@ export const ChatButtonStateful = props => {
42
46
  await startChat();
43
47
  }
44
48
  },
49
+ unreadMessageString: (_props$buttonProps2 = props.buttonProps) === null || _props$buttonProps2 === void 0 ? void 0 : (_props$buttonProps2$c = _props$buttonProps2.controlProps) === null || _props$buttonProps2$c === void 0 ? void 0 : _props$buttonProps2$c.unreadMessageString,
45
50
  ...(buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.controlProps)
46
51
  };
47
52
  const outOfOfficeControlProps = {
@@ -50,6 +55,9 @@ export const ChatButtonStateful = props => {
50
55
  titleText: "We're Offline",
51
56
  subtitleText: "No agents available",
52
57
  onClick: async () => {
58
+ TelemetryHelper.logActionEvent(LogLevel.INFO, {
59
+ Event: TelemetryEvent.LCWChatButtonClicked
60
+ });
53
61
  if (state.appStates.isMinimized) {
54
62
  dispatch({
55
63
  type: LiveChatWidgetActionType.SET_MINIMIZED,
@@ -62,18 +70,17 @@ export const ChatButtonStateful = props => {
62
70
  });
63
71
  }
64
72
  },
73
+ unreadMessageString: (_props$buttonProps3 = props.buttonProps) === null || _props$buttonProps3 === void 0 ? void 0 : (_props$buttonProps3$c = _props$buttonProps3.controlProps) === null || _props$buttonProps3$c === void 0 ? void 0 : _props$buttonProps3$c.unreadMessageString,
65
74
  ...(outOfOfficeButtonProps === null || outOfOfficeButtonProps === void 0 ? void 0 : outOfOfficeButtonProps.controlProps)
66
75
  };
67
76
  useEffect(() => {
68
77
  if (state.appStates.outsideOperatingHours) {
69
78
  setOutOfOperatingHours(true);
70
79
  }
71
-
72
80
  TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
73
81
  Event: TelemetryEvent.LCWChatButtonShow,
74
82
  ElapsedTimeInMilliseconds: TelemetryTimers.LcwLoadToChatButtonTimer.milliSecondsElapsed
75
83
  });
76
-
77
84
  if (state.uiStates.focusChatButton) {
78
85
  setFocusOnElement(document.getElementById((controlProps === null || controlProps === void 0 ? void 0 : controlProps.id) ?? "oc-lcw-chat-button"));
79
86
  } else {
@@ -83,6 +90,9 @@ export const ChatButtonStateful = props => {
83
90
  });
84
91
  }
85
92
  }, []);
93
+ useEffect(() => {
94
+ proactiveChatInNewWindow.current = state.appStates.proactiveChatStates.proactiveChatInNewWindow;
95
+ }, [state.appStates.proactiveChatStates.proactiveChatInNewWindow]);
86
96
  return /*#__PURE__*/React.createElement(ChatButton, {
87
97
  componentOverrides: buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.componentOverrides,
88
98
  controlProps: outOfOperatingHours ? outOfOfficeControlProps : controlProps,