@microsoft/omnichannel-chat-widget 0.1.0-main.0d584e6 → 0.1.0-main.0d8d3bf

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