@microsoft/omnichannel-chat-widget 0.1.0-main.eb80fb1 → 0.1.0-main.ec08ec5

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 (308) hide show
  1. package/README.md +35 -11
  2. package/lib/cjs/common/Constants.js +31 -150
  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 +79 -24
  9. package/lib/cjs/common/telemetry/TelemetryHelper.js +26 -54
  10. package/lib/cjs/common/telemetry/TelemetryManager.js +14 -34
  11. package/lib/cjs/common/telemetry/defaultConfigs/defaultAriaConfig.js +1 -1
  12. package/lib/cjs/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +4 -3
  13. package/lib/cjs/common/telemetry/loggers/ariaTelemetryLogger.js +49 -35
  14. package/lib/cjs/common/telemetry/loggers/consoleLogger.js +6 -14
  15. package/lib/cjs/common/utils.js +80 -80
  16. package/lib/cjs/components/callingcontainerstateful/CallingContainerStateful.js +21 -45
  17. package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +20 -26
  18. package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +12 -70
  19. package/lib/cjs/components/dimlayer/DimLayer.js +0 -4
  20. package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +8 -36
  21. package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.spec.js +6 -8
  22. package/lib/cjs/components/footerstateful/FooterStateful.js +12 -44
  23. package/lib/cjs/components/footerstateful/audionotificationstateful/AudioNotificationStateful.js +0 -6
  24. package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +15 -44
  25. package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.spec.js +6 -8
  26. package/lib/cjs/components/headerstateful/HeaderStateful.js +23 -34
  27. package/lib/cjs/components/livechatwidget/LiveChatWidget.js +2 -14
  28. package/lib/cjs/components/livechatwidget/common/ActivityStreamHandler.js +37 -0
  29. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +18 -0
  30. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.js +1 -0
  31. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +32 -0
  32. package/lib/cjs/components/livechatwidget/common/ChatAdapterShim.js +62 -0
  33. package/lib/cjs/components/livechatwidget/common/Deferred.js +35 -0
  34. package/lib/cjs/components/livechatwidget/common/authHelper.js +50 -0
  35. package/lib/cjs/components/livechatwidget/common/createAdapter.js +10 -9
  36. package/lib/cjs/components/livechatwidget/common/createFooter.js +4 -23
  37. package/lib/cjs/components/livechatwidget/common/createInternetConnectionChangeHandler.js +10 -10
  38. package/lib/cjs/components/livechatwidget/common/createMarkdown.js +36 -44
  39. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +73 -52
  40. package/lib/cjs/components/livechatwidget/common/disposeTelemetryLoggers.js +0 -3
  41. package/lib/cjs/components/livechatwidget/common/endChat.js +127 -61
  42. package/lib/cjs/components/livechatwidget/common/getGeneralStylesForButton.js +0 -6
  43. package/lib/cjs/components/livechatwidget/common/initCallingSdk.js +8 -17
  44. package/lib/cjs/components/livechatwidget/common/initConfirmationPropsComposer.js +4 -8
  45. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +58 -54
  46. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +131 -56
  47. package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +9 -33
  48. package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +3 -15
  49. package/lib/cjs/components/livechatwidget/common/shareObservable.js +41 -0
  50. package/lib/cjs/components/livechatwidget/common/startChat.js +157 -77
  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/livechatwidgetstateful/LiveChatWidgetStateful.js +287 -139
  54. package/lib/cjs/components/loadingpanestateful/LoadingPaneStateful.js +4 -17
  55. package/lib/cjs/components/ooohpanestateful/OOOHPaneStateful.js +4 -17
  56. package/lib/cjs/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +9 -14
  57. package/lib/cjs/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +32 -23
  58. package/lib/cjs/components/postchatsurveypanestateful/common/defaultStyleProps/defaultgeneralPostChatSurveyPaneStyleProps.js +1 -1
  59. package/lib/cjs/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.js +13 -0
  60. package/lib/cjs/components/postchatsurveypanestateful/enums/PostChatSurveyMode.js +0 -1
  61. package/lib/cjs/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.js +1 -0
  62. package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +11 -44
  63. package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +21 -35
  64. package/lib/cjs/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +2 -24
  65. package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +94 -19
  66. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +3 -7
  67. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatStatefulProps.js +2 -6
  68. package/lib/cjs/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +11 -0
  69. package/lib/cjs/components/webchatcontainerstateful/common/mockadapter.js +9 -26
  70. package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +6 -15
  71. package/lib/cjs/components/webchatcontainerstateful/common/utils/BrowserInfo.js +2 -24
  72. package/lib/cjs/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +3 -15
  73. package/lib/cjs/components/webchatcontainerstateful/common/utils/isMaskingFromCustomer.js +5 -8
  74. package/lib/cjs/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.js +1 -0
  75. package/lib/cjs/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.js +1 -0
  76. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +10 -0
  77. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/WebChatStoreLoader.js +0 -4
  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 +33 -80
  89. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +9 -19
  90. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +25 -60
  91. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.js +7 -15
  92. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +41 -0
  93. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +82 -0
  94. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +10 -0
  95. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.js +10 -0
  96. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampFailedStyles.js +2 -3
  97. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampRetryStyles.js +2 -3
  98. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.js +10 -0
  99. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware.js +3 -9
  100. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +89 -0
  101. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +2 -12
  102. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +6 -28
  103. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +2 -11
  104. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +13 -30
  105. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +3 -9
  106. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +6 -34
  107. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +1 -10
  108. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +7 -18
  109. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +16 -19
  110. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.js +1 -9
  111. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.js +3 -9
  112. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.js +13 -34
  113. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.js +1 -10
  114. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.js +7 -11
  115. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.js +5 -14
  116. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +1 -21
  117. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +33 -0
  118. package/lib/cjs/contexts/ChatAdapterStore.js +0 -2
  119. package/lib/cjs/contexts/ChatContextStore.js +0 -2
  120. package/lib/cjs/contexts/ChatSDKStore.js +0 -2
  121. package/lib/cjs/contexts/common/ConversationState.js +4 -3
  122. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +11 -9
  123. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +14 -10
  124. package/lib/cjs/contexts/createReducer.js +150 -107
  125. package/lib/cjs/controller/componentController.js +5 -34
  126. package/lib/cjs/hooks/useChatAdapterStore.js +0 -6
  127. package/lib/cjs/hooks/useChatContextStore.js +0 -6
  128. package/lib/cjs/hooks/useChatSDKStore.js +0 -6
  129. package/lib/cjs/index.js +0 -5
  130. package/lib/cjs/plugins/newMessageEventHandler.js +78 -0
  131. package/lib/esm/common/Constants.js +28 -138
  132. package/lib/esm/common/KeyCodes.js +0 -2
  133. package/lib/esm/common/contextDataStore/DataStoreManager.js +0 -2
  134. package/lib/esm/common/storage/default/defaultCacheManager.js +16 -0
  135. package/lib/esm/common/storage/default/defaultClientDataStoreProvider.js +95 -0
  136. package/lib/esm/common/storage/default/defaultInMemoryDataStore.js +70 -0
  137. package/lib/esm/common/telemetry/TelemetryConstants.js +78 -19
  138. package/lib/esm/common/telemetry/TelemetryHelper.js +27 -44
  139. package/lib/esm/common/telemetry/TelemetryManager.js +14 -23
  140. package/lib/esm/common/telemetry/defaultConfigs/defaultAriaConfig.js +1 -1
  141. package/lib/esm/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +4 -1
  142. package/lib/esm/common/telemetry/loggers/ariaTelemetryLogger.js +49 -23
  143. package/lib/esm/common/telemetry/loggers/consoleLogger.js +6 -10
  144. package/lib/esm/common/utils.js +73 -45
  145. package/lib/esm/components/callingcontainerstateful/CallingContainerStateful.js +21 -16
  146. package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +23 -13
  147. package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +13 -46
  148. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +8 -15
  149. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.spec.js +6 -6
  150. package/lib/esm/components/footerstateful/FooterStateful.js +14 -25
  151. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +15 -37
  152. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.spec.js +6 -6
  153. package/lib/esm/components/headerstateful/HeaderStateful.js +24 -20
  154. package/lib/esm/components/livechatwidget/LiveChatWidget.js +2 -2
  155. package/lib/esm/components/livechatwidget/common/ActivityStreamHandler.js +30 -0
  156. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +11 -0
  157. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.js +1 -0
  158. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +25 -0
  159. package/lib/esm/components/livechatwidget/common/ChatAdapterShim.js +55 -0
  160. package/lib/esm/components/livechatwidget/common/Deferred.js +28 -0
  161. package/lib/esm/components/livechatwidget/common/authHelper.js +42 -0
  162. package/lib/esm/components/livechatwidget/common/createAdapter.js +12 -4
  163. package/lib/esm/components/livechatwidget/common/createFooter.js +4 -16
  164. package/lib/esm/components/livechatwidget/common/createInternetConnectionChangeHandler.js +10 -5
  165. package/lib/esm/components/livechatwidget/common/createMarkdown.js +38 -37
  166. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +75 -40
  167. package/lib/esm/components/livechatwidget/common/endChat.js +131 -50
  168. package/lib/esm/components/livechatwidget/common/getGeneralStylesForButton.js +0 -2
  169. package/lib/esm/components/livechatwidget/common/initCallingSdk.js +10 -12
  170. package/lib/esm/components/livechatwidget/common/initConfirmationPropsComposer.js +4 -5
  171. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +60 -26
  172. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +129 -50
  173. package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +9 -23
  174. package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +4 -6
  175. package/lib/esm/components/livechatwidget/common/shareObservable.js +35 -0
  176. package/lib/esm/components/livechatwidget/common/startChat.js +161 -61
  177. package/lib/esm/components/livechatwidget/common/updateSessionDataForTelemetry.js +4 -2
  178. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +293 -94
  179. package/lib/esm/components/loadingpanestateful/LoadingPaneStateful.js +4 -5
  180. package/lib/esm/components/ooohpanestateful/OOOHPaneStateful.js +4 -5
  181. package/lib/esm/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +9 -4
  182. package/lib/esm/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +32 -11
  183. package/lib/esm/components/postchatsurveypanestateful/common/defaultStyleProps/defaultgeneralPostChatSurveyPaneStyleProps.js +1 -1
  184. package/lib/esm/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.js +6 -0
  185. package/lib/esm/components/postchatsurveypanestateful/enums/PostChatSurveyMode.js +0 -1
  186. package/lib/esm/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.js +1 -0
  187. package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +15 -29
  188. package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +24 -12
  189. package/lib/esm/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +2 -6
  190. package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +94 -4
  191. package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +3 -1
  192. package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultWebChatStatefulProps.js +2 -2
  193. package/lib/esm/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +4 -0
  194. package/lib/esm/components/webchatcontainerstateful/common/mockadapter.js +9 -18
  195. package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +6 -11
  196. package/lib/esm/components/webchatcontainerstateful/common/utils/BrowserInfo.js +2 -16
  197. package/lib/esm/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +3 -5
  198. package/lib/esm/components/webchatcontainerstateful/common/utils/isMaskingFromCustomer.js +5 -6
  199. package/lib/esm/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.js +1 -0
  200. package/lib/esm/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.js +1 -0
  201. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +3 -0
  202. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/WebChatStoreLoader.js +0 -2
  203. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/BrowserVendor.js +0 -1
  204. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineActivityType.js +0 -1
  205. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineSenderRole.js +0 -1
  206. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/MessageType.js +0 -1
  207. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/NotificationLevel.js +0 -1
  208. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios.js +0 -1
  209. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/SendStatus.js +0 -1
  210. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/WebChatActionType.js +0 -1
  211. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsEgressMiddleware.js +2 -5
  212. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsIngressMiddleware.js +0 -4
  213. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +34 -66
  214. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +11 -11
  215. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +25 -39
  216. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.js +9 -8
  217. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +34 -0
  218. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +80 -0
  219. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +3 -0
  220. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.js +3 -0
  221. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampFailedStyles.js +2 -1
  222. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampRetryStyles.js +2 -1
  223. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.js +3 -0
  224. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware.js +3 -7
  225. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +83 -0
  226. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +3 -3
  227. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +7 -14
  228. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +3 -3
  229. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +15 -19
  230. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +5 -8
  231. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +6 -29
  232. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +3 -7
  233. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +9 -14
  234. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +16 -14
  235. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.js +3 -7
  236. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.js +3 -7
  237. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.js +15 -27
  238. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.js +3 -5
  239. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.js +9 -9
  240. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.js +7 -9
  241. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +1 -13
  242. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +27 -0
  243. package/lib/esm/contexts/ChatAdapterStore.js +2 -1
  244. package/lib/esm/contexts/ChatContextStore.js +2 -1
  245. package/lib/esm/contexts/ChatSDKStore.js +2 -1
  246. package/lib/esm/contexts/common/ConversationState.js +4 -3
  247. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +11 -9
  248. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +14 -6
  249. package/lib/esm/contexts/createReducer.js +150 -103
  250. package/lib/esm/controller/componentController.js +6 -5
  251. package/lib/esm/hooks/useChatAdapterStore.js +0 -4
  252. package/lib/esm/hooks/useChatContextStore.js +0 -4
  253. package/lib/esm/hooks/useChatSDKStore.js +0 -4
  254. package/lib/esm/plugins/newMessageEventHandler.js +71 -0
  255. package/lib/types/common/Constants.d.ts +27 -2
  256. package/lib/types/common/interfaces/IContextDataStore.d.ts +2 -2
  257. package/lib/types/common/storage/default/defaultCacheManager.d.ts +4 -0
  258. package/lib/types/common/storage/default/defaultClientDataStoreProvider.d.ts +2 -0
  259. package/lib/types/common/storage/default/defaultInMemoryDataStore.d.ts +6 -0
  260. package/lib/types/common/telemetry/TelemetryConstants.d.ts +53 -6
  261. package/lib/types/common/telemetry/TelemetryHelper.d.ts +2 -0
  262. package/lib/types/common/telemetry/definitions/Contracts.d.ts +2 -4
  263. package/lib/types/common/telemetry/definitions/Payload.d.ts +12 -9
  264. package/lib/types/common/telemetry/interfaces/ITelemetryConfig.d.ts +3 -3
  265. package/lib/types/common/utils.d.ts +8 -1
  266. package/lib/types/components/confirmationpanestateful/interfaces/IConfirmationPaneStatefulParams.d.ts +5 -2
  267. package/lib/types/components/footerstateful/audionotificationstateful/interfaces/IAudioNotificationStatefulParams.d.ts +0 -1
  268. package/lib/types/components/headerstateful/interfaces/IHeaderStatefulParams.d.ts +5 -1
  269. package/lib/types/components/livechatwidget/common/ActivityStreamHandler.d.ts +14 -0
  270. package/lib/types/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.d.ts +5 -0
  271. package/lib/types/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.d.ts +6 -0
  272. package/lib/types/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.d.ts +7 -0
  273. package/lib/types/components/livechatwidget/common/ChatAdapterShim.d.ts +7 -0
  274. package/lib/types/components/livechatwidget/common/Deferred.d.ts +9 -0
  275. package/lib/types/components/livechatwidget/common/authHelper.d.ts +5 -0
  276. package/lib/types/components/livechatwidget/common/endChat.d.ts +4 -1
  277. package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +7 -2
  278. package/lib/types/components/livechatwidget/common/shareObservable.d.ts +1 -0
  279. package/lib/types/components/livechatwidget/common/startChat.d.ts +4 -2
  280. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetComponentOverrides.d.ts +1 -0
  281. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetControlProps.d.ts +1 -0
  282. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +4 -3
  283. package/lib/types/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.d.ts +2 -2
  284. package/lib/types/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.d.ts +5 -0
  285. package/lib/types/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.d.ts +4 -0
  286. package/lib/types/components/reconnectchatpanestateful/interfaces/IReconnectChatPaneStatefulProps.d.ts +1 -2
  287. package/lib/types/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.d.ts +2 -0
  288. package/lib/types/components/webchatcontainerstateful/common/mockchatsdk.d.ts +2 -0
  289. package/lib/types/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.d.ts +4 -0
  290. package/lib/types/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.d.ts +4 -0
  291. package/lib/types/components/webchatcontainerstateful/interfaces/IRenderingMiddlewareProps.d.ts +4 -1
  292. package/lib/types/components/webchatcontainerstateful/interfaces/IWebChatContainerStatefulProps.d.ts +4 -0
  293. package/lib/types/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.d.ts +3 -0
  294. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.d.ts +0 -1
  295. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.d.ts +1 -1
  296. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.d.ts +2 -0
  297. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.d.ts +1 -0
  298. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.d.ts +2 -0
  299. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.d.ts +3 -0
  300. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.d.ts +3 -0
  301. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.d.ts +5 -0
  302. package/lib/types/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.d.ts +1 -0
  303. package/lib/types/contexts/common/ConversationState.d.ts +4 -2
  304. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +4 -2
  305. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +12 -9
  306. package/lib/types/contexts/common/LiveChatWidgetContextInitialState.d.ts +1 -2
  307. package/lib/types/plugins/newMessageEventHandler.d.ts +2 -0
  308. package/package.json +12 -13
@@ -0,0 +1,11 @@
1
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+ export class DefaultActivitySubscriber {
3
+ constructor() {
4
+ _defineProperty(this, "observer", void 0);
5
+ }
6
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
+ async next(activity) {
8
+ this.observer.next(activity);
9
+ return false;
10
+ }
11
+ }
@@ -0,0 +1,25 @@
1
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+ import { ActivityStreamHandler } from "../ActivityStreamHandler";
3
+ export class PauseActivitySubscriber {
4
+ constructor() {
5
+ _defineProperty(this, "observer", void 0);
6
+ }
7
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
8
+ async apply(activity) {
9
+ await ActivityStreamHandler.restorePromise;
10
+ return activity;
11
+ }
12
+
13
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
14
+ applicable(activity) {
15
+ return true;
16
+ }
17
+
18
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
19
+ async next(activity) {
20
+ if (this.applicable(activity)) {
21
+ return await this.apply(activity);
22
+ }
23
+ return activity;
24
+ }
25
+ }
@@ -0,0 +1,55 @@
1
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+ import { DefaultActivitySubscriber } from "./ActivitySubscriber/DefaultActivitySubscriber";
3
+ import { shareObservable } from "./shareObservable";
4
+ export class ChatAdapterShim {
5
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6
+
7
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
8
+
9
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
+
11
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
12
+ constructor(chatAdapter) {
13
+ _defineProperty(this, "chatAdapter", void 0);
14
+ _defineProperty(this, "activityObserver", void 0);
15
+ _defineProperty(this, "subscribers", void 0);
16
+ this.subscribers = [];
17
+ this.chatAdapter = {
18
+ ...chatAdapter,
19
+ activity$: shareObservable(
20
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
21
+ new window.Observable(observer => {
22
+ this.activityObserver = observer;
23
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
24
+ const abortController = new window.AbortController();
25
+ (async () => {
26
+ try {
27
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
28
+ for await (let activity of chatAdapter.activities({
29
+ signal: abortController.signal
30
+ })) {
31
+ for (const subscriber of [...this.subscribers, new DefaultActivitySubscriber()]) {
32
+ subscriber.observer = this.activityObserver;
33
+ activity = await subscriber.next(activity);
34
+ if (!activity) {
35
+ break;
36
+ }
37
+ }
38
+ }
39
+ observer.complete();
40
+ } catch (error) {
41
+ observer.error(error);
42
+ }
43
+ })();
44
+ return () => {
45
+ abortController.abort();
46
+ };
47
+ }))
48
+ };
49
+ }
50
+
51
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
52
+ addSubscriber(subscriber) {
53
+ this.subscribers.push(subscriber);
54
+ }
55
+ }
@@ -0,0 +1,28 @@
1
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+ export class Deferred {
3
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
4
+
5
+ constructor() {
6
+ _defineProperty(this, "_promise", void 0);
7
+ _defineProperty(this, "_resolve", void 0);
8
+ _defineProperty(this, "_reject", () => {
9
+ return;
10
+ });
11
+ _defineProperty(this, "resolve", value => {
12
+ this._resolve(value);
13
+ });
14
+ _defineProperty(this, "reject", value => {
15
+ this._reject(value);
16
+ });
17
+ this._promise = new Promise((resolve, reject) => {
18
+ this._resolve = resolve;
19
+ this._reject = reject;
20
+ });
21
+ }
22
+
23
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
24
+
25
+ get promise() {
26
+ return this._promise;
27
+ }
28
+ }
@@ -0,0 +1,42 @@
1
+ import { LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
2
+ import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
3
+ import { isNullOrEmptyString } from "../../../common/utils";
4
+ const getAuthClientFunction = chatConfig => {
5
+ let authClientFunction = undefined;
6
+ if (chatConfig !== null && chatConfig !== void 0 && chatConfig.LiveChatConfigAuthSettings) {
7
+ var _chatConfig$LiveChatC;
8
+ authClientFunction = (chatConfig === null || chatConfig === void 0 ? void 0 : (_chatConfig$LiveChatC = chatConfig.LiveChatConfigAuthSettings) === null || _chatConfig$LiveChatC === void 0 ? void 0 : _chatConfig$LiveChatC.msdyn_javascriptclientfunction) ?? undefined;
9
+ }
10
+ return authClientFunction;
11
+ };
12
+
13
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
14
+ const handleAuthentication = async (chatSDK, chatConfig, getAuthToken) => {
15
+ const authClientFunction = getAuthClientFunction(chatConfig);
16
+ if (getAuthToken && authClientFunction) {
17
+ TelemetryHelper.logActionEvent(LogLevel.INFO, {
18
+ Event: TelemetryEvent.GetAuthTokenCalled
19
+ });
20
+ const token = await getAuthToken(authClientFunction);
21
+ if (!isNullOrEmptyString(token)) {
22
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
23
+ chatSDK.setAuthTokenProvider(async () => {
24
+ return token;
25
+ });
26
+ return true;
27
+ } else {
28
+ TelemetryHelper.logActionEvent(LogLevel.ERROR, {
29
+ Event: TelemetryEvent.ReceivedNullOrEmptyToken
30
+ });
31
+ return false;
32
+ }
33
+ }
34
+ return false;
35
+ };
36
+
37
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
38
+ const removeAuthTokenProvider = chatSDK => {
39
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
40
+ chatSDK.authenticatedUserToken = null;
41
+ };
42
+ export { getAuthClientFunction, handleAuthentication, removeAuthTokenProvider };
@@ -1,8 +1,11 @@
1
1
  import { NotificationHandler } from "../../webchatcontainerstateful/webchatcontroller/notification/NotificationHandler";
2
2
  import { NotificationLevel } from "../../webchatcontainerstateful/webchatcontroller/enums/NotificationLevel";
3
3
  import { NotificationScenarios } from "../../webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios";
4
- import { defaultMiddlewareLocalizedTexts } from "../../webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
4
+ import { defaultMiddlewareLocalizedTexts } from "../../webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts";
5
+ import { ChatAdapterShim } from "./ChatAdapterShim";
6
+ import { PauseActivitySubscriber } from "./ActivitySubscriber/PauseActivitySubscriber";
5
7
 
8
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6
9
  export const createAdapter = async chatSDK => {
7
10
  const chatAdapterOptionalParams = {
8
11
  IC3Adapter: {
@@ -11,11 +14,9 @@ export const createAdapter = async chatSDK => {
11
14
  if (notification.id === NotificationScenarios.InternetConnection && notification.level == NotificationLevel.Error) {
12
15
  notification.message = defaultMiddlewareLocalizedTexts.MIDDLEWARE_BANNER_NO_INTERNET_CONNECTION;
13
16
  }
14
-
15
17
  if (notification.id === NotificationScenarios.InternetConnection && notification.level == NotificationLevel.Success) {
16
18
  notification.message = defaultMiddlewareLocalizedTexts.MIDDLEWARE_BANNER_INTERNET_BACK_ONLINE;
17
19
  }
18
-
19
20
  if (notification.id && notification.message) {
20
21
  NotificationHandler.notifyWithLevel(notification.id, notification.message, notification.level);
21
22
  }
@@ -23,5 +24,12 @@ export const createAdapter = async chatSDK => {
23
24
  }
24
25
  }
25
26
  };
26
- return await chatSDK.createChatAdapter(chatAdapterOptionalParams);
27
+ let adapter = await chatSDK.createChatAdapter(chatAdapterOptionalParams);
28
+ //so far, there is no need to convert to the shim adapter when using visual tests
29
+ if (chatSDK.isMockModeOn !== true) {
30
+ adapter = new ChatAdapterShim(adapter);
31
+ adapter.addSubscriber(new PauseActivitySubscriber());
32
+ return adapter.chatAdapter;
33
+ }
34
+ return adapter;
27
35
  };
@@ -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
- import MarkdownSlack from "slack-markdown-it";
3
2
  import MarkdownItForInline from "markdown-it-for-inline";
4
3
  import { defaultMarkdownLocalizedTexts } from "../../webchatcontainerstateful/common/defaultProps/defaultMarkdownLocalizedTexts";
5
- import { Constants } from "../../../common/Constants"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
4
+ import { Constants } from "../../../common/Constants";
6
5
 
6
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
7
  export const createMarkdown = (disableMarkdownMessageFormatting, disableNewLineMarkdownSupport) => {
8
8
  let markdown;
9
-
10
9
  if (!disableMarkdownMessageFormatting) {
11
10
  markdown = new MarkdownIt(Constants.Default, {
12
11
  html: true,
13
12
  linkify: true,
14
13
  breaks: !disableNewLineMarkdownSupport
15
14
  });
16
- markdown.use(MarkdownSlack); // 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
- });
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";
@@ -9,8 +10,10 @@ import createAttachmentMiddleware from "../../../webchatcontainerstateful/webcha
9
10
  import { createAvatarMiddleware } from "../../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware";
10
11
  import { createMarkdown } from "../createMarkdown";
11
12
  import { groupActivitiesMiddleware } from "../../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware";
12
- import { typingIndicatorMiddleware } from "../../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware"; // eslint-disable-next-line @typescript-eslint/no-unused-vars
13
+ import { typingIndicatorMiddleware } from "../../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware";
14
+ import { createWebChatTelemetry } from "../../../webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger";
13
15
 
16
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
14
17
  export const dummyDefaultProps = {
15
18
  audioNotificationProps: {
16
19
  audioSrc: NewMessageNotificationSoundBase64
@@ -165,24 +168,28 @@ export const dummyDefaultProps = {
165
168
  },
166
169
  audioCallButtonStyleProps: {
167
170
  borderRadius: "50%",
168
- color: "#FFFFFF",
169
171
  backgroundColor: "#008000",
170
172
  lineHeight: "40px",
171
173
  height: "40px",
172
174
  width: "40px",
173
- fontSize: 18
175
+ icon: {
176
+ fontSize: 18,
177
+ color: "#FFFFFF"
178
+ }
174
179
  },
175
180
  audioCallButtonHoverStyleProps: {
176
181
  filter: "brightness(0.8)"
177
182
  },
178
183
  videoCallButtonStyleProps: {
179
184
  borderRadius: "50%",
180
- color: "#FFFFFF",
181
185
  backgroundColor: "#008000",
182
186
  lineHeight: "40px",
183
187
  height: "40px",
184
188
  width: "40px",
185
- fontSize: 18
189
+ icon: {
190
+ fontSize: 18,
191
+ color: "#FFFFFF"
192
+ }
186
193
  },
187
194
  videoCallButtonHoverStyleProps: {
188
195
  filter: "brightness(0.8)"
@@ -193,13 +200,15 @@ export const dummyDefaultProps = {
193
200
  },
194
201
  declineCallButtonStyleProps: {
195
202
  borderRadius: "50%",
196
- color: "#FFFFFF",
197
203
  backgroundColor: "#DC0000",
198
204
  lineHeight: "40px",
199
205
  height: "40px",
200
206
  width: "40px",
201
- fontSize: 18,
202
- marginLeft: "5px"
207
+ marginLeft: "5px",
208
+ icon: {
209
+ fontSize: 18,
210
+ color: "#FFFFFF"
211
+ }
203
212
  },
204
213
  incomingCallTitleStyleProps: {
205
214
  margin: "0 5px",
@@ -252,18 +261,6 @@ export const dummyDefaultProps = {
252
261
  width: "50px",
253
262
  fontSize: "18px"
254
263
  },
255
- currentCallTimerStyleProps: {
256
- borderRadius: "2px",
257
- margin: "1px",
258
- color: "#FFFFFF",
259
- paddingTop: "18px",
260
- fontSize: 12,
261
- fontFamily: "Segoe UI, Arial, sans-serif",
262
- backgroundColor: "darkgrey",
263
- height: "45px",
264
- width: "50px",
265
- textAlign: "center"
266
- },
267
264
  videoTileStyleProps: {
268
265
  width: "100%",
269
266
  marginLeft: "auto",
@@ -327,7 +324,10 @@ export const dummyDefaultProps = {
327
324
  hideChatTextContainer: false,
328
325
  hideChatSubtitle: false,
329
326
  hideChatTitle: false,
330
- hideNotificationBubble: true
327
+ hideNotificationBubble: true,
328
+ unreadMessageString: "new messages",
329
+ largeUnreadMessageString: "99+",
330
+ ariaLabelUnreadMessageString: "you have new messages"
331
331
  },
332
332
  styleProps: {
333
333
  generalStyleProps: {
@@ -473,8 +473,8 @@ export const dummyDefaultProps = {
473
473
  onConfirm: () => {},
474
474
  // Detailed implementation omitted
475
475
  onCancel: () => {} // Detailed implementation omitted
476
-
477
476
  },
477
+
478
478
  styleProps: {
479
479
  generalStyleProps: {
480
480
  backgroundColor: "#FFFFFF",
@@ -779,6 +779,7 @@ export const dummyDefaultProps = {
779
779
  },
780
780
  audioNotificationButtonProps: {
781
781
  id: "oc-lcw-footer-audionotification-button",
782
+ type: "icon",
782
783
  ariaLabel: "Turn sound off",
783
784
  toggleAriaLabel: "Turn sound on",
784
785
  iconName: "Volume3",
@@ -804,8 +805,10 @@ export const dummyDefaultProps = {
804
805
  padding: "0 10px 5px 10px"
805
806
  },
806
807
  downloadTranscriptButtonStyleProps: {
807
- color: "blue",
808
- fontSize: 16,
808
+ icon: {
809
+ color: "blue",
810
+ fontSize: 16
811
+ },
809
812
  height: "25px",
810
813
  lineHeight: "25px",
811
814
  width: "25px"
@@ -815,8 +818,10 @@ export const dummyDefaultProps = {
815
818
  backgroundColor: "#C8C8C8"
816
819
  },
817
820
  emailTranscriptButtonStyleProps: {
818
- color: "blue",
819
- fontSize: 16,
821
+ cicon: {
822
+ color: "blue",
823
+ fontSize: 16
824
+ },
820
825
  height: "25px",
821
826
  lineHeight: "25px",
822
827
  width: "25px"
@@ -826,8 +831,10 @@ export const dummyDefaultProps = {
826
831
  backgroundColor: "#C8C8C8"
827
832
  },
828
833
  audioNotificationButtonStyleProps: {
829
- color: "blue",
830
- fontSize: 16,
834
+ icon: {
835
+ color: "blue",
836
+ fontSize: 16
837
+ },
831
838
  height: "25px",
832
839
  lineHeight: "25px",
833
840
  width: "25px"
@@ -878,7 +885,7 @@ export const dummyDefaultProps = {
878
885
  className: undefined
879
886
  },
880
887
  closeButtonProps: {
881
- id: "oc-lcw-header-minimize-button",
888
+ id: "oc-lcw-header-close-button",
882
889
  type: "icon",
883
890
  iconName: "ChromeClose",
884
891
  ariaLabel: "Close",
@@ -1057,8 +1064,8 @@ export const dummyDefaultProps = {
1057
1064
  titleText: "We're Offline",
1058
1065
  subtitleText: "No agents available",
1059
1066
  onClick: () => {} // Detailed implementation omitted
1060
-
1061
1067
  },
1068
+
1062
1069
  styleProps: {
1063
1070
  // ...[Existing chat button style props]
1064
1071
  iconStyleProps: {
@@ -1076,8 +1083,8 @@ export const dummyDefaultProps = {
1076
1083
  text: "We're Offline"
1077
1084
  },
1078
1085
  onMinimizeClick: () => {} // Detailed implementation omitted
1079
-
1080
1086
  },
1087
+
1081
1088
  styleProps: {
1082
1089
  // ...[Existing chat button style props]
1083
1090
  generalStyleProps: {
@@ -1174,7 +1181,8 @@ export const dummyDefaultProps = {
1174
1181
  backgroundColor: "#FFFFFF",
1175
1182
  borderColor: "#F1F1F1"
1176
1183
  }
1177
- }
1184
+ },
1185
+ isCustomerVoiceSurveyCompact: undefined
1178
1186
  },
1179
1187
  proactiveChatPaneProps: {
1180
1188
  componentOverrides: {
@@ -1194,7 +1202,17 @@ export const dummyDefaultProps = {
1194
1202
  hideSubtitle: false,
1195
1203
  subtitleText: "Live chat support!",
1196
1204
  hideCloseButton: false,
1197
- 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
+ },
1198
1216
  isBodyContainerHorizantal: false,
1199
1217
  hideBodyTitle: false,
1200
1218
  bodyTitleText: "Hi! Have any questions? I am here to help.",
@@ -1204,8 +1222,8 @@ export const dummyDefaultProps = {
1204
1222
  onClose: () => {},
1205
1223
  // Detailed implementation omitted
1206
1224
  onStart: () => {} // Detailed implementation omitted
1207
-
1208
1225
  },
1226
+
1209
1227
  styleProps: {
1210
1228
  generalStyleProps: {
1211
1229
  backgroundColor: "rgb(255, 255, 255)",
@@ -1336,8 +1354,8 @@ export const dummyDefaultProps = {
1336
1354
  onStartNewChat: () => {},
1337
1355
  // Detailed implementation omitted
1338
1356
  onMinimize: () => {} // Detailed implementation omitted
1339
-
1340
1357
  },
1358
+
1341
1359
  styleProps: {
1342
1360
  generalStyleProps: {
1343
1361
  backgroundColor: "rgb(255, 255, 255)",
@@ -1422,9 +1440,8 @@ export const dummyDefaultProps = {
1422
1440
  startNewChatButtonClassName: undefined
1423
1441
  }
1424
1442
  },
1425
- authClientFunction: undefined,
1426
- isReconnectEnabled: undefined,
1427
- reconnectId: undefined
1443
+ reconnectId: undefined,
1444
+ redirectInSameWindow: undefined
1428
1445
  },
1429
1446
  styleProps: {
1430
1447
  generalStyles: {
@@ -1496,7 +1513,7 @@ export const dummyDefaultProps = {
1496
1513
  internalErrorBoxClass: undefined,
1497
1514
  internalRenderErrorBox: undefined,
1498
1515
  locale: "en-US",
1499
- onTelemetry: undefined,
1516
+ onTelemetry: createWebChatTelemetry(),
1500
1517
  overrideLocalizedStrings: undefined,
1501
1518
  renderMarkdown: createMarkdown(false, false),
1502
1519
  scrollToEndButtonMiddleware: undefined,
@@ -1544,6 +1561,12 @@ export const dummyDefaultProps = {
1544
1561
  lineHeight: "16px",
1545
1562
  padding: "0px 10px 0 10px"
1546
1563
  },
1564
+ userMessageBoxStyles: {
1565
+ maxWidth: "75%"
1566
+ },
1567
+ systemMessageBoxStyles: {
1568
+ maxWidth: "75%"
1569
+ },
1547
1570
  typingIndicatorStyleProps: {
1548
1571
  marginLeft: "10px",
1549
1572
  marginBottom: "5px",
@@ -1663,6 +1686,9 @@ export const dummyDefaultProps = {
1663
1686
  },
1664
1687
  attachmentSizeStyles: {
1665
1688
  display: "none"
1689
+ },
1690
+ receivedMessageAnchorStyles: {
1691
+ color: "white"
1666
1692
  }
1667
1693
  },
1668
1694
  localizedTexts: {
@@ -1686,7 +1712,16 @@ export const dummyDefaultProps = {
1686
1712
  MIDDLEWARE_MESSAGE_RETRY: "Retry",
1687
1713
  PRECHAT_REQUIRED_FIELD_MISSING_MESSAGE: "{0} field is required",
1688
1714
  MARKDOWN_EXTERNAL_LINK_ALT: "Opens in a new window; external."
1715
+ },
1716
+ botMagicCode: {
1717
+ disabled: false,
1718
+ fwdUrl: ""
1719
+ },
1720
+ adaptiveCardStyles: {
1721
+ background: "white",
1722
+ color: "black"
1689
1723
  }
1690
1724
  },
1691
- telemetryConfig: undefined
1725
+ telemetryConfig: undefined,
1726
+ getAuthToken: undefined
1692
1727
  };