@microsoft/omnichannel-chat-widget 0.1.0-main.a27ec4b → 0.1.0-main.a3902df

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