@microsoft/omnichannel-chat-widget 0.1.0-main.106d830 → 0.1.0-main.1e0880a

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 (294) hide show
  1. package/README.md +32 -0
  2. package/lib/cjs/common/Constants.js +9 -160
  3. package/lib/cjs/common/KeyCodes.js +0 -3
  4. package/lib/cjs/common/contextDataStore/DataStoreManager.js +0 -4
  5. package/lib/cjs/common/storage/default/defaultCacheManager.js +24 -0
  6. package/lib/cjs/common/storage/default/defaultClientDataStoreProvider.js +102 -0
  7. package/lib/cjs/common/storage/default/defaultInMemoryDataStore.js +78 -0
  8. package/lib/cjs/common/telemetry/TelemetryConstants.js +40 -21
  9. package/lib/cjs/common/telemetry/TelemetryHelper.js +14 -57
  10. package/lib/cjs/common/telemetry/TelemetryManager.js +6 -31
  11. package/lib/cjs/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +4 -3
  12. package/lib/cjs/common/telemetry/loggers/ariaTelemetryLogger.js +37 -42
  13. package/lib/cjs/common/telemetry/loggers/consoleLogger.js +6 -14
  14. package/lib/cjs/common/utils.js +71 -84
  15. package/lib/cjs/components/callingcontainerstateful/CallingContainerStateful.js +19 -43
  16. package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +20 -26
  17. package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +7 -32
  18. package/lib/cjs/components/dimlayer/DimLayer.js +0 -4
  19. package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +8 -36
  20. package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.spec.js +6 -8
  21. package/lib/cjs/components/footerstateful/FooterStateful.js +11 -42
  22. package/lib/cjs/components/footerstateful/audionotificationstateful/AudioNotificationStateful.js +0 -6
  23. package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +15 -44
  24. package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.spec.js +6 -8
  25. package/lib/cjs/components/headerstateful/HeaderStateful.js +16 -30
  26. package/lib/cjs/components/livechatwidget/LiveChatWidget.js +2 -14
  27. package/lib/cjs/components/livechatwidget/common/ActivityStreamHandler.js +37 -0
  28. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +18 -0
  29. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.js +1 -0
  30. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +32 -0
  31. package/lib/cjs/components/livechatwidget/common/ChatAdapterShim.js +62 -0
  32. package/lib/cjs/components/livechatwidget/common/Deferred.js +35 -0
  33. package/lib/cjs/components/livechatwidget/common/authHelper.js +50 -0
  34. package/lib/cjs/components/livechatwidget/common/createAdapter.js +10 -9
  35. package/lib/cjs/components/livechatwidget/common/createFooter.js +4 -23
  36. package/lib/cjs/components/livechatwidget/common/createInternetConnectionChangeHandler.js +10 -10
  37. package/lib/cjs/components/livechatwidget/common/createMarkdown.js +36 -43
  38. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +69 -50
  39. package/lib/cjs/components/livechatwidget/common/disposeTelemetryLoggers.js +0 -3
  40. package/lib/cjs/components/livechatwidget/common/endChat.js +57 -35
  41. package/lib/cjs/components/livechatwidget/common/getGeneralStylesForButton.js +0 -6
  42. package/lib/cjs/components/livechatwidget/common/initCallingSdk.js +7 -16
  43. package/lib/cjs/components/livechatwidget/common/initConfirmationPropsComposer.js +4 -8
  44. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +36 -53
  45. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +68 -82
  46. package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +7 -32
  47. package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +2 -15
  48. package/lib/cjs/components/livechatwidget/common/shareObservable.js +41 -0
  49. package/lib/cjs/components/livechatwidget/common/startChat.js +167 -100
  50. package/lib/cjs/components/livechatwidget/common/startProactiveChat.js +0 -8
  51. package/lib/cjs/components/livechatwidget/common/updateSessionDataForTelemetry.js +2 -11
  52. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +263 -160
  53. package/lib/cjs/components/loadingpanestateful/LoadingPaneStateful.js +4 -17
  54. package/lib/cjs/components/ooohpanestateful/OOOHPaneStateful.js +4 -17
  55. package/lib/cjs/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +4 -17
  56. package/lib/cjs/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +9 -23
  57. package/lib/cjs/components/postchatsurveypanestateful/enums/PostChatSurveyMode.js +0 -1
  58. package/lib/cjs/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.js +1 -0
  59. package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +11 -44
  60. package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +19 -33
  61. package/lib/cjs/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +2 -24
  62. package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +94 -19
  63. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +3 -7
  64. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatStatefulProps.js +2 -6
  65. package/lib/cjs/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +11 -0
  66. package/lib/cjs/components/webchatcontainerstateful/common/mockadapter.js +9 -26
  67. package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +3 -16
  68. package/lib/cjs/components/webchatcontainerstateful/common/utils/BrowserInfo.js +2 -24
  69. package/lib/cjs/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +3 -15
  70. package/lib/cjs/components/webchatcontainerstateful/common/utils/isMaskingFromCustomer.js +5 -8
  71. package/lib/cjs/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.js +1 -0
  72. package/lib/cjs/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.js +1 -0
  73. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +10 -0
  74. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/WebChatStoreLoader.js +0 -4
  75. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/BrowserVendor.js +0 -1
  76. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineActivityType.js +0 -1
  77. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineSenderRole.js +0 -1
  78. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/MessageType.js +0 -1
  79. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/NotificationLevel.js +0 -1
  80. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios.js +0 -1
  81. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/SendStatus.js +0 -1
  82. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/WebChatActionType.js +0 -1
  83. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsEgressMiddleware.js +0 -7
  84. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsIngressMiddleware.js +0 -5
  85. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +27 -37
  86. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +9 -19
  87. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +23 -60
  88. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.js +7 -15
  89. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +41 -0
  90. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +82 -0
  91. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +10 -0
  92. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.js +10 -0
  93. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampFailedStyles.js +2 -3
  94. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampRetryStyles.js +2 -3
  95. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.js +10 -0
  96. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware.js +3 -9
  97. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +89 -0
  98. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +2 -12
  99. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +6 -28
  100. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +2 -11
  101. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +13 -30
  102. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +3 -9
  103. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +6 -34
  104. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +1 -10
  105. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +1 -12
  106. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +5 -18
  107. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.js +1 -9
  108. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.js +3 -9
  109. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.js +13 -34
  110. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.js +1 -10
  111. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.js +7 -11
  112. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.js +5 -14
  113. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +1 -21
  114. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +1 -12
  115. package/lib/cjs/contexts/ChatAdapterStore.js +0 -2
  116. package/lib/cjs/contexts/ChatContextStore.js +0 -2
  117. package/lib/cjs/contexts/ChatSDKStore.js +0 -2
  118. package/lib/cjs/contexts/common/ConversationState.js +3 -3
  119. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +26 -23
  120. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +12 -12
  121. package/lib/cjs/contexts/createReducer.js +150 -97
  122. package/lib/cjs/controller/componentController.js +3 -32
  123. package/lib/cjs/hooks/useChatAdapterStore.js +0 -6
  124. package/lib/cjs/hooks/useChatContextStore.js +0 -6
  125. package/lib/cjs/hooks/useChatSDKStore.js +0 -6
  126. package/lib/cjs/index.js +0 -5
  127. package/lib/cjs/plugins/newMessageEventHandler.js +22 -46
  128. package/lib/esm/common/Constants.js +9 -148
  129. package/lib/esm/common/KeyCodes.js +0 -2
  130. package/lib/esm/common/contextDataStore/DataStoreManager.js +0 -2
  131. package/lib/esm/common/storage/default/defaultCacheManager.js +16 -0
  132. package/lib/esm/common/storage/default/defaultClientDataStoreProvider.js +95 -0
  133. package/lib/esm/common/storage/default/defaultInMemoryDataStore.js +70 -0
  134. package/lib/esm/common/telemetry/TelemetryConstants.js +44 -18
  135. package/lib/esm/common/telemetry/TelemetryHelper.js +14 -45
  136. package/lib/esm/common/telemetry/TelemetryManager.js +6 -19
  137. package/lib/esm/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +4 -1
  138. package/lib/esm/common/telemetry/loggers/ariaTelemetryLogger.js +35 -26
  139. package/lib/esm/common/telemetry/loggers/consoleLogger.js +6 -10
  140. package/lib/esm/common/utils.js +64 -46
  141. package/lib/esm/components/callingcontainerstateful/CallingContainerStateful.js +19 -14
  142. package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +23 -13
  143. package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +9 -13
  144. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +8 -15
  145. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.spec.js +6 -6
  146. package/lib/esm/components/footerstateful/FooterStateful.js +13 -23
  147. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +15 -37
  148. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.spec.js +6 -6
  149. package/lib/esm/components/headerstateful/HeaderStateful.js +16 -15
  150. package/lib/esm/components/livechatwidget/LiveChatWidget.js +2 -2
  151. package/lib/esm/components/livechatwidget/common/ActivityStreamHandler.js +30 -0
  152. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +11 -0
  153. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.js +1 -0
  154. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +25 -0
  155. package/lib/esm/components/livechatwidget/common/ChatAdapterShim.js +55 -0
  156. package/lib/esm/components/livechatwidget/common/Deferred.js +28 -0
  157. package/lib/esm/components/livechatwidget/common/authHelper.js +42 -0
  158. package/lib/esm/components/livechatwidget/common/createAdapter.js +12 -4
  159. package/lib/esm/components/livechatwidget/common/createFooter.js +4 -16
  160. package/lib/esm/components/livechatwidget/common/createInternetConnectionChangeHandler.js +10 -5
  161. package/lib/esm/components/livechatwidget/common/createMarkdown.js +38 -37
  162. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +71 -37
  163. package/lib/esm/components/livechatwidget/common/endChat.js +57 -21
  164. package/lib/esm/components/livechatwidget/common/getGeneralStylesForButton.js +0 -2
  165. package/lib/esm/components/livechatwidget/common/initCallingSdk.js +9 -11
  166. package/lib/esm/components/livechatwidget/common/initConfirmationPropsComposer.js +4 -5
  167. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +39 -22
  168. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +71 -68
  169. package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +7 -22
  170. package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +4 -7
  171. package/lib/esm/components/livechatwidget/common/shareObservable.js +35 -0
  172. package/lib/esm/components/livechatwidget/common/startChat.js +170 -82
  173. package/lib/esm/components/livechatwidget/common/updateSessionDataForTelemetry.js +4 -2
  174. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +267 -109
  175. package/lib/esm/components/loadingpanestateful/LoadingPaneStateful.js +4 -5
  176. package/lib/esm/components/ooohpanestateful/OOOHPaneStateful.js +4 -5
  177. package/lib/esm/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +4 -5
  178. package/lib/esm/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +9 -11
  179. package/lib/esm/components/postchatsurveypanestateful/enums/PostChatSurveyMode.js +0 -1
  180. package/lib/esm/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.js +1 -0
  181. package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +15 -29
  182. package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +21 -9
  183. package/lib/esm/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +2 -6
  184. package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +94 -4
  185. package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +3 -1
  186. package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultWebChatStatefulProps.js +2 -2
  187. package/lib/esm/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +4 -0
  188. package/lib/esm/components/webchatcontainerstateful/common/mockadapter.js +9 -18
  189. package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +3 -12
  190. package/lib/esm/components/webchatcontainerstateful/common/utils/BrowserInfo.js +2 -16
  191. package/lib/esm/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +3 -5
  192. package/lib/esm/components/webchatcontainerstateful/common/utils/isMaskingFromCustomer.js +5 -6
  193. package/lib/esm/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.js +1 -0
  194. package/lib/esm/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.js +1 -0
  195. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +3 -0
  196. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/WebChatStoreLoader.js +0 -2
  197. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/BrowserVendor.js +0 -1
  198. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineActivityType.js +0 -1
  199. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineSenderRole.js +0 -1
  200. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/MessageType.js +0 -1
  201. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/NotificationLevel.js +0 -1
  202. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios.js +0 -1
  203. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/SendStatus.js +0 -1
  204. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/WebChatActionType.js +0 -1
  205. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsEgressMiddleware.js +2 -5
  206. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsIngressMiddleware.js +0 -4
  207. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +27 -22
  208. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +11 -11
  209. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +23 -38
  210. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.js +9 -8
  211. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +34 -0
  212. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +80 -0
  213. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +3 -0
  214. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.js +3 -0
  215. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampFailedStyles.js +2 -1
  216. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampRetryStyles.js +2 -1
  217. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.js +3 -0
  218. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware.js +3 -7
  219. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +83 -0
  220. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +3 -3
  221. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +7 -14
  222. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +3 -3
  223. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +15 -19
  224. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +5 -8
  225. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +6 -29
  226. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +3 -7
  227. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +3 -8
  228. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +5 -13
  229. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.js +3 -7
  230. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.js +3 -7
  231. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.js +15 -27
  232. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.js +3 -5
  233. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.js +9 -9
  234. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.js +7 -9
  235. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +1 -13
  236. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +1 -5
  237. package/lib/esm/contexts/ChatAdapterStore.js +2 -1
  238. package/lib/esm/contexts/ChatContextStore.js +2 -1
  239. package/lib/esm/contexts/ChatSDKStore.js +2 -1
  240. package/lib/esm/contexts/common/ConversationState.js +3 -3
  241. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +26 -23
  242. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +12 -8
  243. package/lib/esm/contexts/createReducer.js +150 -94
  244. package/lib/esm/controller/componentController.js +4 -3
  245. package/lib/esm/hooks/useChatAdapterStore.js +0 -4
  246. package/lib/esm/hooks/useChatContextStore.js +0 -4
  247. package/lib/esm/hooks/useChatSDKStore.js +0 -4
  248. package/lib/esm/plugins/newMessageEventHandler.js +22 -35
  249. package/lib/types/common/Constants.d.ts +9 -1
  250. package/lib/types/common/interfaces/IContextDataStore.d.ts +2 -2
  251. package/lib/types/common/storage/default/defaultCacheManager.d.ts +4 -0
  252. package/lib/types/common/storage/default/defaultClientDataStoreProvider.d.ts +2 -0
  253. package/lib/types/common/storage/default/defaultInMemoryDataStore.d.ts +6 -0
  254. package/lib/types/common/telemetry/TelemetryConstants.d.ts +30 -5
  255. package/lib/types/common/telemetry/TelemetryHelper.d.ts +1 -0
  256. package/lib/types/common/telemetry/definitions/Payload.d.ts +12 -9
  257. package/lib/types/common/telemetry/interfaces/ITelemetryConfig.d.ts +3 -3
  258. package/lib/types/common/utils.d.ts +7 -1
  259. package/lib/types/components/headerstateful/interfaces/IHeaderStatefulParams.d.ts +2 -1
  260. package/lib/types/components/livechatwidget/common/ActivityStreamHandler.d.ts +14 -0
  261. package/lib/types/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.d.ts +5 -0
  262. package/lib/types/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.d.ts +6 -0
  263. package/lib/types/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.d.ts +7 -0
  264. package/lib/types/components/livechatwidget/common/ChatAdapterShim.d.ts +7 -0
  265. package/lib/types/components/livechatwidget/common/Deferred.d.ts +9 -0
  266. package/lib/types/components/livechatwidget/common/authHelper.d.ts +5 -0
  267. package/lib/types/components/livechatwidget/common/endChat.d.ts +1 -1
  268. package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +5 -4
  269. package/lib/types/components/livechatwidget/common/shareObservable.d.ts +1 -0
  270. package/lib/types/components/livechatwidget/common/startChat.d.ts +4 -2
  271. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetControlProps.d.ts +1 -0
  272. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +4 -3
  273. package/lib/types/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.d.ts +2 -2
  274. package/lib/types/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.d.ts +4 -0
  275. package/lib/types/components/reconnectchatpanestateful/interfaces/IReconnectChatPaneStatefulProps.d.ts +0 -1
  276. package/lib/types/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.d.ts +2 -0
  277. package/lib/types/components/webchatcontainerstateful/common/mockchatsdk.d.ts +1 -0
  278. package/lib/types/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.d.ts +4 -0
  279. package/lib/types/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.d.ts +4 -0
  280. package/lib/types/components/webchatcontainerstateful/interfaces/IRenderingMiddlewareProps.d.ts +4 -1
  281. package/lib/types/components/webchatcontainerstateful/interfaces/IWebChatContainerStatefulProps.d.ts +4 -0
  282. package/lib/types/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.d.ts +3 -0
  283. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.d.ts +1 -1
  284. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.d.ts +2 -0
  285. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.d.ts +1 -0
  286. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.d.ts +2 -0
  287. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.d.ts +3 -0
  288. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.d.ts +3 -0
  289. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.d.ts +5 -0
  290. package/lib/types/contexts/common/ConversationState.d.ts +3 -2
  291. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +4 -2
  292. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +26 -22
  293. package/lib/types/contexts/common/LiveChatWidgetContextInitialState.d.ts +1 -2
  294. package/package.json +7 -9
@@ -3,25 +3,13 @@ import React from "react";
3
3
  import { decodeComponentString } from "@microsoft/omnichannel-chat-components";
4
4
  import { shouldShowFooter } from "../../../controller/componentController";
5
5
  export const createFooter = (props, state) => {
6
- var _props$footerProps, _props$controlProps, _props$componentOverr, _props$componentOverr2;
7
-
8
- const footerPropsHidden = { ...props.footerProps,
9
- controlProps: { ...((_props$footerProps = props.footerProps) === null || _props$footerProps === void 0 ? void 0 : _props$footerProps.controlProps),
10
- hideDownloadTranscriptButton: true,
11
- hideEmailTranscriptButton: true,
12
- hideAudioNotificationButton: true
13
- }
14
- };
15
- const footer = !((_props$controlProps = props.controlProps) !== null && _props$controlProps !== void 0 && _props$controlProps.hideFooter) && shouldShowFooter(state) ? decodeComponentString((_props$componentOverr = props.componentOverrides) === null || _props$componentOverr === void 0 ? void 0 : _props$componentOverr.footer) || /*#__PURE__*/React.createElement(FooterStateful, {
6
+ var _props$controlProps, _props$componentOverr;
7
+ const hideFooterDisplay = !((_props$controlProps = props.controlProps) !== null && _props$controlProps !== void 0 && _props$controlProps.hideFooter) && shouldShowFooter(state) ? false : true;
8
+ const footer = decodeComponentString((_props$componentOverr = props.componentOverrides) === null || _props$componentOverr === void 0 ? void 0 : _props$componentOverr.footer) || /*#__PURE__*/React.createElement(FooterStateful, {
16
9
  footerProps: props.footerProps,
17
10
  downloadTranscriptProps: props.downloadTranscriptProps,
18
11
  audioNotificationProps: props.audioNotificationProps,
19
- hideFooterDisplay: false
20
- }) : decodeComponentString((_props$componentOverr2 = props.componentOverrides) === null || _props$componentOverr2 === void 0 ? void 0 : _props$componentOverr2.footer) || /*#__PURE__*/React.createElement(FooterStateful, {
21
- footerProps: footerPropsHidden,
22
- downloadTranscriptProps: props.downloadTranscriptProps,
23
- audioNotificationProps: props.audioNotificationProps,
24
- hideFooterDisplay: true
12
+ hideFooterDisplay: hideFooterDisplay
25
13
  });
26
14
  return footer;
27
15
  };
@@ -2,7 +2,8 @@ import { Constants } from "../../../common/Constants";
2
2
  import { NotificationHandler } from "../../webchatcontainerstateful/webchatcontroller/notification/NotificationHandler";
3
3
  import { NotificationScenarios } from "../../webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios";
4
4
  import { defaultMiddlewareLocalizedTexts } from "../../webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts";
5
-
5
+ import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
6
+ import { LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
6
7
  const isInternetConnected = async () => {
7
8
  try {
8
9
  const response = await fetch(Constants.internetConnectionTestUrl);
@@ -12,19 +13,23 @@ const isInternetConnected = async () => {
12
13
  return false;
13
14
  }
14
15
  };
15
-
16
16
  export const createInternetConnectionChangeHandler = async () => {
17
17
  const handler = async () => {
18
18
  const connected = await isInternetConnected();
19
-
20
19
  if (!connected) {
20
+ TelemetryHelper.logActionEvent(LogLevel.WARN, {
21
+ Event: TelemetryEvent.NetworkDisconnected
22
+ });
21
23
  NotificationHandler.notifyError(NotificationScenarios.InternetConnection, defaultMiddlewareLocalizedTexts.MIDDLEWARE_BANNER_NO_INTERNET_CONNECTION);
22
24
  } else {
25
+ TelemetryHelper.logActionEvent(LogLevel.WARN, {
26
+ Event: TelemetryEvent.NetworkReconnected
27
+ });
23
28
  NotificationHandler.notifySuccess(NotificationScenarios.InternetConnection, defaultMiddlewareLocalizedTexts.MIDDLEWARE_BANNER_INTERNET_BACK_ONLINE);
24
29
  }
25
- }; // Checking connection status on online & offline events due to possible false positives
26
-
30
+ };
27
31
 
32
+ // Checking connection status on online & offline events due to possible false positives
28
33
  window.addEventListener("online", () => handler(), false);
29
34
  window.addEventListener("offline", () => handler(), false);
30
35
  };
@@ -1,61 +1,62 @@
1
1
  import MarkdownIt from "markdown-it";
2
2
  import MarkdownItForInline from "markdown-it-for-inline";
3
3
  import { defaultMarkdownLocalizedTexts } from "../../webchatcontainerstateful/common/defaultProps/defaultMarkdownLocalizedTexts";
4
- import { Constants } from "../../../common/Constants"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
4
+ import { Constants } from "../../../common/Constants";
5
5
 
6
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6
7
  export const createMarkdown = (disableMarkdownMessageFormatting, disableNewLineMarkdownSupport) => {
7
8
  let markdown;
8
-
9
9
  if (!disableMarkdownMessageFormatting) {
10
10
  markdown = new MarkdownIt(Constants.Default, {
11
11
  html: true,
12
12
  linkify: true,
13
13
  breaks: !disableNewLineMarkdownSupport
14
- }); // ToDo: Commenting below usage of plugin until deferred bug is resolved: https://github.com/mayashavin/markdown-it-slack/issues/1
15
- // markdown.use(MarkdownSlack);
16
- // Markdown override for open link in new tab
17
- // eslint-disable-next-line @typescript-eslint/no-explicit-any, quotes
18
-
19
- markdown.use(MarkdownItForInline, "url_new_win", "link_open", function (tokens, idx, env) {
20
- const targetAttrIndex = tokens[idx].attrIndex(Constants.Target); // Put a transparent pixel instead of the "open in new window" icon, so developers can easily modify the icon in CSS.
21
-
22
- const TRANSPARENT_GIF = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7";
23
-
24
- if (~targetAttrIndex) {
25
- tokens[idx].attrs[targetAttrIndex][1] = Constants.Blank;
26
- } else {
27
- tokens[idx].attrPush([Constants.Target, Constants.Blank]);
28
- }
29
-
30
- const relAttrIndex = tokens[idx].attrIndex(Constants.TargetRelationship);
31
-
32
- if (~relAttrIndex) {
33
- tokens[idx].attrs[relAttrIndex][1] = Constants.TargetRelationshipAttributes;
34
- } else {
35
- tokens[idx].attrPush([Constants.TargetRelationship, Constants.TargetRelationshipAttributes]);
36
- tokens[idx].attrPush([Constants.Title, defaultMarkdownLocalizedTexts.MARKDOWN_EXTERNAL_LINK_ALT]); // eslint-disable-next-line quotes
37
-
38
- const iconTokens = markdown.parseInline(`![${defaultMarkdownLocalizedTexts.MARKDOWN_EXTERNAL_LINK_ALT}](${TRANSPARENT_GIF})`, env)[0].children;
39
-
40
- if (iconTokens && iconTokens.length > 0) {
41
- iconTokens[0].attrJoin("class", Constants.OpenLinkIconCssClass);
42
- tokens.splice(idx + 2, 0, ...iconTokens);
43
- }
44
- }
45
14
  });
15
+ // ToDo: Commenting below usage of plugin until deferred bug is resolved: https://github.com/mayashavin/markdown-it-slack/issues/1
16
+ // markdown.use(MarkdownSlack);
46
17
  } else {
47
18
  markdown = new MarkdownIt(Constants.Zero, {
48
19
  html: true,
49
20
  linkify: true,
50
21
  breaks: !disableNewLineMarkdownSupport
51
22
  });
52
- markdown.enable(["entity", // Rule to process html entity - {, ¯, "
53
- "linkify", // Rule to replace link-like texts with link nodes
54
- "html_block", // Rule to process html blocks and paragraphs
55
- "html_inline", // Rule to process html tags
23
+ markdown.enable(["entity",
24
+ // Rule to process html entity - {, ¯, "
25
+ "linkify",
26
+ // Rule to replace link-like texts with link nodes
27
+ "html_block",
28
+ // Rule to process html blocks and paragraphs
29
+ "html_inline",
30
+ // Rule to process html tags
56
31
  "newline" // Rule to proceess '\n'
57
32
  ]);
58
33
  }
59
34
 
35
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
36
+ markdown.use(MarkdownItForInline, "url_new_win", "link_open", function (tokens, idx, env) {
37
+ const targetAttrIndex = tokens[idx].attrIndex(Constants.Target);
38
+ // Put a transparent pixel instead of the "open in new window" icon, so developers can easily modify the icon in CSS.
39
+ const TRANSPARENT_GIF = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7";
40
+ if (~targetAttrIndex) {
41
+ tokens[idx].attrs[targetAttrIndex][1] = Constants.Blank;
42
+ } else {
43
+ tokens[idx].attrPush([Constants.Target, Constants.Blank]);
44
+ }
45
+ const relAttrIndex = tokens[idx].attrIndex(Constants.TargetRelationship);
46
+ if (~relAttrIndex) {
47
+ tokens[idx].attrs[relAttrIndex][1] = Constants.TargetRelationshipAttributes;
48
+ } else {
49
+ tokens[idx].attrPush([Constants.TargetRelationship, Constants.TargetRelationshipAttributes]);
50
+ if (!disableMarkdownMessageFormatting) {
51
+ tokens[idx].attrPush([Constants.Title, defaultMarkdownLocalizedTexts.MARKDOWN_EXTERNAL_LINK_ALT]);
52
+ // eslint-disable-next-line quotes
53
+ const iconTokens = markdown.parseInline(`![${defaultMarkdownLocalizedTexts.MARKDOWN_EXTERNAL_LINK_ALT}](${TRANSPARENT_GIF})`, env)[0].children;
54
+ if (iconTokens && iconTokens.length > 0) {
55
+ iconTokens[0].attrJoin("class", Constants.OpenLinkIconCssClass);
56
+ tokens.splice(idx + 2, 0, ...iconTokens);
57
+ }
58
+ }
59
+ }
60
+ });
60
61
  return markdown;
61
62
  };
@@ -1,4 +1,5 @@
1
1
  /* eslint-disable @typescript-eslint/no-empty-function, @typescript-eslint/no-explicit-any */
2
+
2
3
  import { ChatReconnectIconBase64, CloseChatButtonIconBase64, ModernChatIconBase64, ProactiveChatBannerBase64 } from "@microsoft/omnichannel-chat-components";
3
4
  import MockAdapter from "../../../webchatcontainerstateful/common/mockadapter";
4
5
  import { NewMessageNotificationSoundBase64 } from "../../../../assets/Audios";
@@ -10,8 +11,9 @@ import { createAvatarMiddleware } from "../../../webchatcontainerstateful/webcha
10
11
  import { createMarkdown } from "../createMarkdown";
11
12
  import { groupActivitiesMiddleware } from "../../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware";
12
13
  import { typingIndicatorMiddleware } from "../../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware";
13
- import { createWebChatTelemetry } from "../../../webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger"; // eslint-disable-next-line @typescript-eslint/no-unused-vars
14
+ import { createWebChatTelemetry } from "../../../webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger";
14
15
 
16
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
15
17
  export const dummyDefaultProps = {
16
18
  audioNotificationProps: {
17
19
  audioSrc: NewMessageNotificationSoundBase64
@@ -166,24 +168,28 @@ export const dummyDefaultProps = {
166
168
  },
167
169
  audioCallButtonStyleProps: {
168
170
  borderRadius: "50%",
169
- color: "#FFFFFF",
170
171
  backgroundColor: "#008000",
171
172
  lineHeight: "40px",
172
173
  height: "40px",
173
174
  width: "40px",
174
- fontSize: 18
175
+ icon: {
176
+ fontSize: 18,
177
+ color: "#FFFFFF"
178
+ }
175
179
  },
176
180
  audioCallButtonHoverStyleProps: {
177
181
  filter: "brightness(0.8)"
178
182
  },
179
183
  videoCallButtonStyleProps: {
180
184
  borderRadius: "50%",
181
- color: "#FFFFFF",
182
185
  backgroundColor: "#008000",
183
186
  lineHeight: "40px",
184
187
  height: "40px",
185
188
  width: "40px",
186
- fontSize: 18
189
+ icon: {
190
+ fontSize: 18,
191
+ color: "#FFFFFF"
192
+ }
187
193
  },
188
194
  videoCallButtonHoverStyleProps: {
189
195
  filter: "brightness(0.8)"
@@ -194,13 +200,15 @@ export const dummyDefaultProps = {
194
200
  },
195
201
  declineCallButtonStyleProps: {
196
202
  borderRadius: "50%",
197
- color: "#FFFFFF",
198
203
  backgroundColor: "#DC0000",
199
204
  lineHeight: "40px",
200
205
  height: "40px",
201
206
  width: "40px",
202
- fontSize: 18,
203
- marginLeft: "5px"
207
+ marginLeft: "5px",
208
+ icon: {
209
+ fontSize: 18,
210
+ color: "#FFFFFF"
211
+ }
204
212
  },
205
213
  incomingCallTitleStyleProps: {
206
214
  margin: "0 5px",
@@ -253,18 +261,6 @@ export const dummyDefaultProps = {
253
261
  width: "50px",
254
262
  fontSize: "18px"
255
263
  },
256
- currentCallTimerStyleProps: {
257
- borderRadius: "2px",
258
- margin: "1px",
259
- color: "#FFFFFF",
260
- paddingTop: "18px",
261
- fontSize: 12,
262
- fontFamily: "Segoe UI, Arial, sans-serif",
263
- backgroundColor: "darkgrey",
264
- height: "45px",
265
- width: "50px",
266
- textAlign: "center"
267
- },
268
264
  videoTileStyleProps: {
269
265
  width: "100%",
270
266
  marginLeft: "auto",
@@ -328,7 +324,10 @@ export const dummyDefaultProps = {
328
324
  hideChatTextContainer: false,
329
325
  hideChatSubtitle: false,
330
326
  hideChatTitle: false,
331
- hideNotificationBubble: true
327
+ hideNotificationBubble: true,
328
+ unreadMessageString: "new messages",
329
+ largeUnreadMessageString: "99+",
330
+ ariaLabelUnreadMessageString: "you have new messages"
332
331
  },
333
332
  styleProps: {
334
333
  generalStyleProps: {
@@ -474,8 +473,8 @@ export const dummyDefaultProps = {
474
473
  onConfirm: () => {},
475
474
  // Detailed implementation omitted
476
475
  onCancel: () => {} // Detailed implementation omitted
477
-
478
476
  },
477
+
479
478
  styleProps: {
480
479
  generalStyleProps: {
481
480
  backgroundColor: "#FFFFFF",
@@ -780,6 +779,7 @@ export const dummyDefaultProps = {
780
779
  },
781
780
  audioNotificationButtonProps: {
782
781
  id: "oc-lcw-footer-audionotification-button",
782
+ type: "icon",
783
783
  ariaLabel: "Turn sound off",
784
784
  toggleAriaLabel: "Turn sound on",
785
785
  iconName: "Volume3",
@@ -805,8 +805,10 @@ export const dummyDefaultProps = {
805
805
  padding: "0 10px 5px 10px"
806
806
  },
807
807
  downloadTranscriptButtonStyleProps: {
808
- color: "blue",
809
- fontSize: 16,
808
+ icon: {
809
+ color: "blue",
810
+ fontSize: 16
811
+ },
810
812
  height: "25px",
811
813
  lineHeight: "25px",
812
814
  width: "25px"
@@ -816,8 +818,10 @@ export const dummyDefaultProps = {
816
818
  backgroundColor: "#C8C8C8"
817
819
  },
818
820
  emailTranscriptButtonStyleProps: {
819
- color: "blue",
820
- fontSize: 16,
821
+ cicon: {
822
+ color: "blue",
823
+ fontSize: 16
824
+ },
821
825
  height: "25px",
822
826
  lineHeight: "25px",
823
827
  width: "25px"
@@ -827,8 +831,10 @@ export const dummyDefaultProps = {
827
831
  backgroundColor: "#C8C8C8"
828
832
  },
829
833
  audioNotificationButtonStyleProps: {
830
- color: "blue",
831
- fontSize: 16,
834
+ icon: {
835
+ color: "blue",
836
+ fontSize: 16
837
+ },
832
838
  height: "25px",
833
839
  lineHeight: "25px",
834
840
  width: "25px"
@@ -879,7 +885,7 @@ export const dummyDefaultProps = {
879
885
  className: undefined
880
886
  },
881
887
  closeButtonProps: {
882
- id: "oc-lcw-header-minimize-button",
888
+ id: "oc-lcw-header-close-button",
883
889
  type: "icon",
884
890
  iconName: "ChromeClose",
885
891
  ariaLabel: "Close",
@@ -1058,8 +1064,8 @@ export const dummyDefaultProps = {
1058
1064
  titleText: "We're Offline",
1059
1065
  subtitleText: "No agents available",
1060
1066
  onClick: () => {} // Detailed implementation omitted
1061
-
1062
1067
  },
1068
+
1063
1069
  styleProps: {
1064
1070
  // ...[Existing chat button style props]
1065
1071
  iconStyleProps: {
@@ -1077,8 +1083,8 @@ export const dummyDefaultProps = {
1077
1083
  text: "We're Offline"
1078
1084
  },
1079
1085
  onMinimizeClick: () => {} // Detailed implementation omitted
1080
-
1081
1086
  },
1087
+
1082
1088
  styleProps: {
1083
1089
  // ...[Existing chat button style props]
1084
1090
  generalStyleProps: {
@@ -1175,7 +1181,8 @@ export const dummyDefaultProps = {
1175
1181
  backgroundColor: "#FFFFFF",
1176
1182
  borderColor: "#F1F1F1"
1177
1183
  }
1178
- }
1184
+ },
1185
+ isCustomerVoiceSurveyCompact: undefined
1179
1186
  },
1180
1187
  proactiveChatPaneProps: {
1181
1188
  componentOverrides: {
@@ -1195,7 +1202,17 @@ export const dummyDefaultProps = {
1195
1202
  hideSubtitle: false,
1196
1203
  subtitleText: "Live chat support!",
1197
1204
  hideCloseButton: false,
1198
- closeButtonAriaLabel: "Close Button",
1205
+ closeButtonProps: {
1206
+ id: "oc-lcw-proactivechat-closebutton",
1207
+ type: "icon",
1208
+ iconName: "ChromeClose",
1209
+ ariaLabel: "Close",
1210
+ imageIconProps: undefined,
1211
+ text: "Close",
1212
+ onClick: undefined,
1213
+ className: undefined,
1214
+ hideButtonTitle: true
1215
+ },
1199
1216
  isBodyContainerHorizantal: false,
1200
1217
  hideBodyTitle: false,
1201
1218
  bodyTitleText: "Hi! Have any questions? I am here to help.",
@@ -1205,8 +1222,8 @@ export const dummyDefaultProps = {
1205
1222
  onClose: () => {},
1206
1223
  // Detailed implementation omitted
1207
1224
  onStart: () => {} // Detailed implementation omitted
1208
-
1209
1225
  },
1226
+
1210
1227
  styleProps: {
1211
1228
  generalStyleProps: {
1212
1229
  backgroundColor: "rgb(255, 255, 255)",
@@ -1337,8 +1354,8 @@ export const dummyDefaultProps = {
1337
1354
  onStartNewChat: () => {},
1338
1355
  // Detailed implementation omitted
1339
1356
  onMinimize: () => {} // Detailed implementation omitted
1340
-
1341
1357
  },
1358
+
1342
1359
  styleProps: {
1343
1360
  generalStyleProps: {
1344
1361
  backgroundColor: "rgb(255, 255, 255)",
@@ -1423,7 +1440,6 @@ export const dummyDefaultProps = {
1423
1440
  startNewChatButtonClassName: undefined
1424
1441
  }
1425
1442
  },
1426
- authClientFunction: undefined,
1427
1443
  isReconnectEnabled: undefined,
1428
1444
  reconnectId: undefined,
1429
1445
  redirectInSameWindow: undefined
@@ -1546,6 +1562,12 @@ export const dummyDefaultProps = {
1546
1562
  lineHeight: "16px",
1547
1563
  padding: "0px 10px 0 10px"
1548
1564
  },
1565
+ userMessageBoxStyles: {
1566
+ maxWidth: "75%"
1567
+ },
1568
+ systemMessageBoxStyles: {
1569
+ maxWidth: "75%"
1570
+ },
1549
1571
  typingIndicatorStyleProps: {
1550
1572
  marginLeft: "10px",
1551
1573
  marginBottom: "5px",
@@ -1665,6 +1687,9 @@ export const dummyDefaultProps = {
1665
1687
  },
1666
1688
  attachmentSizeStyles: {
1667
1689
  display: "none"
1690
+ },
1691
+ receivedMessageAnchorStyles: {
1692
+ color: "white"
1668
1693
  }
1669
1694
  },
1670
1695
  localizedTexts: {
@@ -1688,7 +1713,16 @@ export const dummyDefaultProps = {
1688
1713
  MIDDLEWARE_MESSAGE_RETRY: "Retry",
1689
1714
  PRECHAT_REQUIRED_FIELD_MISSING_MESSAGE: "{0} field is required",
1690
1715
  MARKDOWN_EXTERNAL_LINK_ALT: "Opens in a new window; external."
1716
+ },
1717
+ botMagicCode: {
1718
+ disabled: false,
1719
+ fwdUrl: ""
1720
+ },
1721
+ adaptiveCardStyles: {
1722
+ background: "white",
1723
+ color: "black"
1691
1724
  }
1692
1725
  },
1693
- telemetryConfig: undefined
1726
+ telemetryConfig: undefined,
1727
+ getAuthToken: undefined
1694
1728
  };
@@ -7,21 +7,36 @@ import { WebChatStoreLoader } from "../../webchatcontainerstateful/webchatcontro
7
7
  import { defaultWebChatContainerStatefulProps } from "../../webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps";
8
8
  import { PostChatSurveyMode } from "../../postchatsurveypanestateful/enums/PostChatSurveyMode";
9
9
  import { Constants } from "../../../common/Constants";
10
+ import { addDelayInMs, getWidgetEndChatEventName } from "../../../common/utils";
10
11
 
11
12
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
12
13
  const prepareEndChat = async (props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, state) => {
13
- var _state$domainStates$l, _state$domainStates$l2, _state$domainStates$l3, _state$domainStates$l4;
14
-
14
+ var _state$domainStates$l, _state$domainStates$l2, _state$domainStates$l3, _state$domainStates$l4, _conversationDetails;
15
15
  const isPostChatEnabled = (_state$domainStates$l = state.domainStates.liveChatConfig) === null || _state$domainStates$l === void 0 ? void 0 : (_state$domainStates$l2 = _state$domainStates$l.LiveWSAndLiveChatEngJoin) === null || _state$domainStates$l2 === void 0 ? void 0 : _state$domainStates$l2.msdyn_postconversationsurveyenable;
16
16
  const postChatSurveyMode = (_state$domainStates$l3 = state.domainStates.liveChatConfig) === null || _state$domainStates$l3 === void 0 ? void 0 : (_state$domainStates$l4 = _state$domainStates$l3.LiveWSAndLiveChatEngJoin) === null || _state$domainStates$l4 === void 0 ? void 0 : _state$domainStates$l4.msdyn_postconversationsurveymode;
17
- const conversationDetails = await chatSDK.getConversationDetails();
18
17
 
19
- if (isPostChatEnabled === "true" && (conversationDetails === null || conversationDetails === void 0 ? void 0 : conversationDetails.canRenderPostChat) === Constants.truePascal) {
18
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
19
+ let conversationDetails = undefined;
20
+ try {
21
+ conversationDetails = await chatSDK.getConversationDetails();
22
+ } catch (erorr) {
23
+ TelemetryHelper.logActionEvent(LogLevel.ERROR, {
24
+ Event: TelemetryEvent.GetConversationDetailsException,
25
+ ExceptionDetails: {
26
+ exception: `Failed to get conversation details: ${erorr}`
27
+ }
28
+ });
29
+ }
30
+ if (isPostChatEnabled === "true" && ((_conversationDetails = conversationDetails) === null || _conversationDetails === void 0 ? void 0 : _conversationDetails.canRenderPostChat) === Constants.truePascal) {
20
31
  const skipEndChatSDK = false;
21
32
  const skipCloseChat = true;
22
- await endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, skipEndChatSDK, skipCloseChat);
23
-
33
+ await endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, skipEndChatSDK, skipCloseChat, false);
24
34
  if (postChatSurveyMode === PostChatSurveyMode.Embed) {
35
+ dispatch({
36
+ type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
37
+ payload: ConversationState.PostchatLoading
38
+ });
39
+ await addDelayInMs(Constants.PostChatLoadingDurationInMs);
25
40
  const loadPostChatEvent = {
26
41
  eventName: BroadcastEvent.LoadPostChatSurvey
27
42
  };
@@ -32,13 +47,13 @@ const prepareEndChat = async (props, chatSDK, setAdapter, setWebChatStyles, disp
32
47
  payload: ConversationState.InActive
33
48
  });
34
49
  }
35
- } else {
36
- await endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter);
50
+ return;
37
51
  }
38
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
39
-
52
+ await endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, false, false, true);
53
+ };
40
54
 
41
- const endChat = async (props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, skipEndChatSDK, skipCloseChat) => {
55
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
56
+ const endChat = async (props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, skipEndChatSDK, skipCloseChat, postMessageToOtherTab) => {
42
57
  if (!skipEndChatSDK) {
43
58
  try {
44
59
  TelemetryHelper.logSDKEvent(LogLevel.INFO, {
@@ -52,16 +67,30 @@ const endChat = async (props, chatSDK, setAdapter, setWebChatStyles, dispatch, a
52
67
  exception: ex
53
68
  }
54
69
  });
70
+ postMessageToOtherTab = false;
55
71
  }
56
72
  }
57
73
 
74
+ // Need to clear these states immediately when chat ended from OC.
75
+ dispatch({
76
+ type: LiveChatWidgetActionType.SET_CUSTOM_CONTEXT,
77
+ payload: undefined
78
+ });
79
+ dispatch({
80
+ type: LiveChatWidgetActionType.SET_CHAT_TOKEN,
81
+ payload: undefined
82
+ });
83
+ dispatch({
84
+ type: LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
85
+ payload: undefined
86
+ });
58
87
  if (!skipCloseChat) {
59
88
  try {
60
89
  var _props$webChatContain;
61
-
62
90
  adapter === null || adapter === void 0 ? void 0 : adapter.end();
63
91
  setAdapter(undefined);
64
- setWebChatStyles({ ...defaultWebChatContainerStatefulProps.webChatStyles,
92
+ setWebChatStyles({
93
+ ...defaultWebChatContainerStatefulProps.webChatStyles,
65
94
  ...((_props$webChatContain = props.webChatContainerProps) === null || _props$webChatContain === void 0 ? void 0 : _props$webChatContain.webChatStyles)
66
95
  });
67
96
  WebChatStoreLoader.store = null;
@@ -82,16 +111,24 @@ const endChat = async (props, chatSDK, setAdapter, setWebChatStyles, dispatch, a
82
111
  payload: null
83
112
  });
84
113
  dispatch({
85
- type: LiveChatWidgetActionType.SET_CHAT_TOKEN,
86
- payload: undefined
114
+ type: LiveChatWidgetActionType.SET_UNREAD_MESSAGE_COUNT,
115
+ payload: 0
87
116
  });
88
117
  dispatch({
89
- type: LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
90
- payload: undefined
91
- });
92
- BroadcastService.postMessage({
93
- eventName: BroadcastEvent.EndChat
118
+ type: LiveChatWidgetActionType.SET_PROACTIVE_CHAT_PARAMS,
119
+ payload: {
120
+ proactiveChatBodyTitle: "",
121
+ proactiveChatEnablePrechat: false,
122
+ proactiveChatInNewWindow: false
123
+ }
94
124
  });
125
+ if (postMessageToOtherTab) {
126
+ var _chatSDK$omnichannelC, _chatSDK$omnichannelC2, _props$controlProps;
127
+ const endChatEventName = getWidgetEndChatEventName(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC === void 0 ? void 0 : _chatSDK$omnichannelC.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC2 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC2 === void 0 ? void 0 : _chatSDK$omnichannelC2.widgetId, (props === null || props === void 0 ? void 0 : (_props$controlProps = props.controlProps) === null || _props$controlProps === void 0 ? void 0 : _props$controlProps.widgetInstanceId) ?? "");
128
+ BroadcastService.postMessage({
129
+ eventName: endChatEventName
130
+ });
131
+ }
95
132
  } catch (error) {
96
133
  TelemetryHelper.logActionEvent(LogLevel.ERROR, {
97
134
  Event: TelemetryEvent.CloseChatMethodException,
@@ -102,5 +139,4 @@ const endChat = async (props, chatSDK, setAdapter, setWebChatStyles, dispatch, a
102
139
  }
103
140
  }
104
141
  };
105
-
106
142
  export { prepareEndChat, endChat };
@@ -2,7 +2,6 @@ import { shouldShowChatButton, shouldShowProactiveChatPane } from "../../../cont
2
2
  import { defaultLiveChatWidgetGeneralStyles } from "./defaultStyles/defaultLiveChatWidgetGeneralStyles";
3
3
  export const getGeneralStylesForButton = state => {
4
4
  let generalStylesForButton = defaultLiveChatWidgetGeneralStyles;
5
-
6
5
  if (!shouldShowChatButton(state) && !shouldShowProactiveChatPane(state)) {
7
6
  generalStylesForButton = Object.assign({}, defaultLiveChatWidgetGeneralStyles, {
8
7
  boxShadow: "0px 0px 2px rgba(0, 0, 0, 0.16), 0px 4px 8px rgba(0, 0, 0, 0.12)",
@@ -12,6 +11,5 @@ export const getGeneralStylesForButton = state => {
12
11
  padding: "0.5"
13
12
  });
14
13
  }
15
-
16
14
  return generalStylesForButton;
17
15
  };
@@ -1,6 +1,7 @@
1
1
  import { LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
2
- import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
2
+ import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
3
3
 
4
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
4
5
  export const initCallingSdk = async (chatSDK, setVoiceVideoCallingSDK) => {
5
6
  try {
6
7
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -13,18 +14,15 @@ export const initCallingSdk = async (chatSDK, setVoiceVideoCallingSDK) => {
13
14
  });
14
15
  return true;
15
16
  }
16
-
17
17
  return false;
18
18
  } catch (error) {
19
- if (error !== "Voice and video call is not enabled") {
20
- TelemetryHelper.logCallingEvent(LogLevel.ERROR, {
21
- Event: TelemetryEvent.CallingSDKLoadFailed,
22
- ExceptionDetails: {
23
- exception: error
24
- }
25
- });
26
- }
27
-
19
+ TelemetryHelper.logCallingEvent(LogLevel.ERROR, {
20
+ Event: TelemetryEvent.CallingSDKLoadFailed,
21
+ ExceptionDetails: {
22
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
23
+ exception: error.message
24
+ }
25
+ });
28
26
  return false;
29
27
  }
30
28
  };
@@ -1,14 +1,13 @@
1
1
  import { defaultConfirmationPaneLocalizedTexts } from "../../confirmationpanestateful/common/defaultProps/defaultConfirmationPaneLocalizedTexts";
2
2
  export const initConfirmationPropsComposer = props => {
3
3
  var _props$confirmationPa, _props$footerProps, _props$footerProps$co, _props$footerProps2, _props$footerProps2$c, _props$confirmationPa2;
4
-
5
- const confirmationPanelocalizedTexts = { ...defaultConfirmationPaneLocalizedTexts,
4
+ const confirmationPanelocalizedTexts = {
5
+ ...defaultConfirmationPaneLocalizedTexts,
6
6
  ...(props === null || props === void 0 ? void 0 : (_props$confirmationPa = props.confirmationPaneProps) === null || _props$confirmationPa === void 0 ? void 0 : _props$confirmationPa.confirmationPaneLocalizedTexts)
7
7
  };
8
8
  let confirmationPaneInputs;
9
9
  const emailTranscriptDisabled = ((_props$footerProps = props.footerProps) === null || _props$footerProps === void 0 ? void 0 : (_props$footerProps$co = _props$footerProps.controlProps) === null || _props$footerProps$co === void 0 ? void 0 : _props$footerProps$co.hideEmailTranscriptButton) ?? false;
10
10
  const downloadTranscriptDisabled = ((_props$footerProps2 = props.footerProps) === null || _props$footerProps2 === void 0 ? void 0 : (_props$footerProps2$c = _props$footerProps2.controlProps) === null || _props$footerProps2$c === void 0 ? void 0 : _props$footerProps2$c.hideDownloadTranscriptButton) ?? false;
11
-
12
11
  if (!emailTranscriptDisabled && !downloadTranscriptDisabled) {
13
12
  confirmationPaneInputs = {
14
13
  title: confirmationPanelocalizedTexts.CLOSE_CONFIRMATION_DIALOG_TITLE_FOR_EMAIL_AND_DOWNLOAD_TRANSCRIPT_ENABLED,
@@ -30,8 +29,8 @@ export const initConfirmationPropsComposer = props => {
30
29
  description: confirmationPanelocalizedTexts.CLOSE_CONFIRMATION_DIALOG_DESCRIPTION_DEFAULT
31
30
  };
32
31
  }
33
-
34
- const confirmationPaneProps = { ...props.confirmationPaneProps,
32
+ const confirmationPaneProps = {
33
+ ...props.confirmationPaneProps,
35
34
  controlProps: {
36
35
  titleText: confirmationPaneInputs.title,
37
36
  subtitleText: confirmationPaneInputs.description,