@microsoft/omnichannel-chat-widget 0.1.0-main.47ede4d → 0.1.0-main.4e35349

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 (298) hide show
  1. package/README.md +32 -0
  2. package/lib/cjs/common/Constants.js +29 -152
  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 +51 -21
  9. package/lib/cjs/common/telemetry/TelemetryHelper.js +24 -54
  10. package/lib/cjs/common/telemetry/TelemetryManager.js +8 -30
  11. package/lib/cjs/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +4 -3
  12. package/lib/cjs/common/telemetry/loggers/ariaTelemetryLogger.js +49 -35
  13. package/lib/cjs/common/telemetry/loggers/consoleLogger.js +6 -14
  14. package/lib/cjs/common/utils.js +80 -80
  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 +11 -71
  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 +12 -44
  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 +17 -37
  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 +73 -51
  39. package/lib/cjs/components/livechatwidget/common/disposeTelemetryLoggers.js +0 -3
  40. package/lib/cjs/components/livechatwidget/common/endChat.js +79 -21
  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 +38 -52
  45. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +128 -57
  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 +153 -77
  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 +283 -136
  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 +9 -14
  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 +33 -0
  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 +11 -9
  120. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +12 -12
  121. package/lib/cjs/contexts/createReducer.js +150 -104
  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 +13 -37
  128. package/lib/esm/common/Constants.js +26 -140
  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 +55 -18
  135. package/lib/esm/common/telemetry/TelemetryHelper.js +25 -44
  136. package/lib/esm/common/telemetry/TelemetryManager.js +8 -18
  137. package/lib/esm/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +4 -1
  138. package/lib/esm/common/telemetry/loggers/ariaTelemetryLogger.js +49 -23
  139. package/lib/esm/common/telemetry/loggers/consoleLogger.js +6 -10
  140. package/lib/esm/common/utils.js +73 -45
  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 +14 -48
  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 +14 -25
  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 +17 -22
  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 +75 -39
  163. package/lib/esm/components/livechatwidget/common/endChat.js +82 -12
  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 +41 -22
  168. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +127 -50
  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 +157 -60
  173. package/lib/esm/components/livechatwidget/common/updateSessionDataForTelemetry.js +4 -2
  174. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +289 -91
  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 +9 -4
  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 +27 -0
  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 +11 -9
  242. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +12 -8
  243. package/lib/esm/contexts/createReducer.js +150 -101
  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 +13 -26
  249. package/lib/types/common/Constants.d.ts +25 -2
  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 +36 -5
  255. package/lib/types/common/telemetry/TelemetryHelper.d.ts +2 -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 +8 -1
  259. package/lib/types/components/confirmationpanestateful/interfaces/IConfirmationPaneStatefulParams.d.ts +4 -4
  260. package/lib/types/components/footerstateful/audionotificationstateful/interfaces/IAudioNotificationStatefulParams.d.ts +0 -1
  261. package/lib/types/components/headerstateful/interfaces/IHeaderStatefulParams.d.ts +2 -1
  262. package/lib/types/components/livechatwidget/common/ActivityStreamHandler.d.ts +14 -0
  263. package/lib/types/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.d.ts +5 -0
  264. package/lib/types/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.d.ts +6 -0
  265. package/lib/types/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.d.ts +7 -0
  266. package/lib/types/components/livechatwidget/common/ChatAdapterShim.d.ts +7 -0
  267. package/lib/types/components/livechatwidget/common/Deferred.d.ts +9 -0
  268. package/lib/types/components/livechatwidget/common/authHelper.d.ts +5 -0
  269. package/lib/types/components/livechatwidget/common/endChat.d.ts +4 -1
  270. package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +6 -2
  271. package/lib/types/components/livechatwidget/common/shareObservable.d.ts +1 -0
  272. package/lib/types/components/livechatwidget/common/startChat.d.ts +4 -2
  273. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetComponentOverrides.d.ts +1 -0
  274. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetControlProps.d.ts +1 -0
  275. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +4 -3
  276. package/lib/types/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.d.ts +2 -2
  277. package/lib/types/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.d.ts +4 -0
  278. package/lib/types/components/reconnectchatpanestateful/interfaces/IReconnectChatPaneStatefulProps.d.ts +1 -1
  279. package/lib/types/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.d.ts +2 -0
  280. package/lib/types/components/webchatcontainerstateful/common/mockchatsdk.d.ts +1 -0
  281. package/lib/types/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.d.ts +4 -0
  282. package/lib/types/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.d.ts +4 -0
  283. package/lib/types/components/webchatcontainerstateful/interfaces/IRenderingMiddlewareProps.d.ts +4 -1
  284. package/lib/types/components/webchatcontainerstateful/interfaces/IWebChatContainerStatefulProps.d.ts +4 -0
  285. package/lib/types/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.d.ts +3 -0
  286. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.d.ts +1 -1
  287. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.d.ts +2 -0
  288. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.d.ts +1 -0
  289. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.d.ts +2 -0
  290. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.d.ts +3 -0
  291. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.d.ts +3 -0
  292. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.d.ts +5 -0
  293. package/lib/types/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.d.ts +1 -0
  294. package/lib/types/contexts/common/ConversationState.d.ts +3 -2
  295. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +4 -2
  296. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +12 -9
  297. package/lib/types/contexts/common/LiveChatWidgetContextInitialState.d.ts +1 -2
  298. package/package.json +9 -9
@@ -4,17 +4,18 @@
4
4
  * This middleware handles the avatar icon for each non-system message. It does the following processing:
5
5
  * 1. Renders the first two letters of the sender as the profile pic
6
6
  ******/
7
+
7
8
  import React from "react";
8
9
  import { Constants } from "../../../../../common/Constants";
9
10
  import { defaultAvatarStyles } from "./defaultStyles/defaultAvatarStyles";
10
11
  import { defaultAvatarTextStyles } from "./defaultStyles/defaultAvatarTextStyles";
11
- import { getIconText } from "../../../../../common/utils"; // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
12
+ import { getIconText } from "../../../../../common/utils";
12
13
 
14
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
13
15
  export const createAvatarMiddleware = (avatarStyleProps, avatarTextStyleProps) => () => next => function () {
14
16
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
15
17
  args[_key] = arguments[_key];
16
18
  }
17
-
18
19
  const [params] = args;
19
20
  const {
20
21
  activity: {
@@ -27,18 +28,18 @@ export const createAvatarMiddleware = (avatarStyleProps, avatarTextStyleProps) =
27
28
  },
28
29
  fromUser
29
30
  } = params;
30
-
31
31
  if (fromUser !== false || tags && tags.includes(Constants.systemMessageTag)) {
32
32
  return false;
33
33
  }
34
-
35
- const avatarStyles = { ...defaultAvatarStyles,
34
+ const avatarStyles = {
35
+ ...defaultAvatarStyles,
36
36
  ...avatarStyleProps
37
37
  };
38
- const avatarTextStyles = { ...defaultAvatarTextStyles,
38
+ const avatarTextStyles = {
39
+ ...defaultAvatarTextStyles,
39
40
  ...avatarTextStyleProps
40
- }; // eslint-disable-next-line react/display-name
41
-
41
+ };
42
+ // eslint-disable-next-line react/display-name
42
43
  return () => /*#__PURE__*/React.createElement("div", {
43
44
  style: avatarStyles
44
45
  }, /*#__PURE__*/React.createElement("p", {
@@ -0,0 +1,34 @@
1
+ import { BotMagicCodeStore } from "../../BotMagicCodeStore";
2
+ var CardActionType;
3
+ (function (CardActionType) {
4
+ CardActionType["OpenUrl"] = "openUrl";
5
+ CardActionType["SignIn"] = "signin";
6
+ })(CardActionType || (CardActionType = {}));
7
+ const validCardActionTypes = [CardActionType.OpenUrl, CardActionType.SignIn];
8
+ const botOauthUrlRegex = /[\S]+.botframework.com\/api\/oauth\/signin\?signin=([\S]+)/;
9
+ export const createCardActionMiddleware = botMagicCodeConfig => {
10
+ const cardActionMiddleware = () => next => function () {
11
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
12
+ args[_key] = arguments[_key];
13
+ }
14
+ // eslint-disable-line @typescript-eslint/no-explicit-any
15
+ const [card] = args;
16
+ if (card.cardAction && validCardActionTypes.indexOf(card.cardAction.type) >= 0 && card.cardAction.value) {
17
+ // Override signin url only if fwdUrl is valid & feature is enabled
18
+ if ((botMagicCodeConfig === null || botMagicCodeConfig === void 0 ? void 0 : botMagicCodeConfig.disabled) === true && botMagicCodeConfig !== null && botMagicCodeConfig !== void 0 && botMagicCodeConfig.fwdUrl) {
19
+ const baseUrl = window.location.origin;
20
+ const result = botOauthUrlRegex.exec(card.cardAction.value);
21
+ if (result) {
22
+ BotMagicCodeStore.botOAuthSignInId = `${result[1]}`;
23
+ }
24
+
25
+ // fwdUrl must be on the same domain as the chat widget
26
+ if (botMagicCodeConfig !== null && botMagicCodeConfig !== void 0 && botMagicCodeConfig.fwdUrl.startsWith(baseUrl)) {
27
+ card.cardAction.value += `&fwdUrl=${botMagicCodeConfig.fwdUrl}`;
28
+ }
29
+ }
30
+ }
31
+ return next(...args);
32
+ };
33
+ return cardActionMiddleware;
34
+ };
@@ -0,0 +1,80 @@
1
+ import "@testing-library/jest-dom/extend-expect";
2
+ import { createCardActionMiddleware } from "./cardActionMiddleware";
3
+ describe("cardActionMiddleware test", () => {
4
+ it("createCardActionMiddleware() with undefined botMagicCodeConfig should not change the sign in card url", () => {
5
+ const next = args => args; // eslint-disable-line @typescript-eslint/no-explicit-any
6
+ const signInUrl = "https://token.botframework.com/api/oauth/signin?signin=[signin]";
7
+ const args = {
8
+ cardAction: {
9
+ type: "signin",
10
+ value: signInUrl
11
+ }
12
+ };
13
+ const results = createCardActionMiddleware(undefined)()(next)(args);
14
+ expect(signInUrl).toEqual(results.cardAction.value);
15
+ });
16
+ it("createCardActionMiddleware() with botMagicCode enabled should not change the sign in card url", () => {
17
+ const botMagicCodeConfig = {
18
+ disabled: false
19
+ };
20
+ const next = args => args; // eslint-disable-line @typescript-eslint/no-explicit-any
21
+ const signInUrl = "https://token.botframework.com/api/oauth/signin?signin=[signin]";
22
+ const args = {
23
+ cardAction: {
24
+ type: "signin",
25
+ value: signInUrl
26
+ }
27
+ };
28
+ const results = createCardActionMiddleware(botMagicCodeConfig)()(next)(args);
29
+ expect(args.cardAction.value).toEqual(results.cardAction.value);
30
+ });
31
+ it("createCardActionMiddleware() with botMagicCode disabled & no fwdUrl should not change the sign in card url", () => {
32
+ const botMagicCodeConfig = {
33
+ disabled: true
34
+ };
35
+ const next = args => args; // eslint-disable-line @typescript-eslint/no-explicit-any
36
+ const signInUrl = "https://token.botframework.com/api/oauth/signin?signin=[signin]";
37
+ const args = {
38
+ cardAction: {
39
+ type: "signin",
40
+ value: signInUrl
41
+ }
42
+ };
43
+ const results = createCardActionMiddleware(botMagicCodeConfig)()(next)(args);
44
+ expect(args.cardAction.value).toEqual(results.cardAction.value);
45
+ });
46
+ it("createCardActionMiddleware() with botMagicCode disabled & fwdUrl should append the fwdUrl in the sign in card url", () => {
47
+ const botMagicCodeConfig = {
48
+ disabled: true,
49
+ fwdUrl: "http://localhost/forwarder.html"
50
+ };
51
+ const next = args => args; // eslint-disable-line @typescript-eslint/no-explicit-any
52
+ const signInUrl = "https://token.botframework.com/api/oauth/signin?signin=[signin]";
53
+ const args = {
54
+ cardAction: {
55
+ type: "signin",
56
+ value: signInUrl
57
+ }
58
+ };
59
+ const results = createCardActionMiddleware(botMagicCodeConfig)()(next)(args);
60
+ expect(signInUrl === results.cardAction.value).toBe(false);
61
+ expect(results.cardAction.value === `${signInUrl}&fwdUrl=${botMagicCodeConfig.fwdUrl}`).toBe(true);
62
+ });
63
+ it("createCardActionMiddleware() should not append fwdUrl if fwdUrl & sign in card url are not in the same domain", () => {
64
+ const botMagicCodeConfig = {
65
+ disabled: true,
66
+ fwdUrl: "https://localhost/forwarder.html"
67
+ };
68
+ const next = args => args; // eslint-disable-line @typescript-eslint/no-explicit-any
69
+ const signInUrl = "https://token.botframework.com/api/oauth/signin?signin=[signin]";
70
+ const args = {
71
+ cardAction: {
72
+ type: "signin",
73
+ value: signInUrl
74
+ }
75
+ };
76
+ const results = createCardActionMiddleware(botMagicCodeConfig)()(next)(args);
77
+ expect(signInUrl === results.cardAction.value).toBe(true);
78
+ expect(results.cardAction.value === `${signInUrl}&fwdUrl=${botMagicCodeConfig.fwdUrl}`).toBe(false);
79
+ });
80
+ });
@@ -1,4 +1,5 @@
1
1
  import { defaultTimestampContentStyles } from "./defaultTimestampContentStyles";
2
- export const defaultTimestampFailedStyles = { ...defaultTimestampContentStyles,
2
+ export const defaultTimestampFailedStyles = {
3
+ ...defaultTimestampContentStyles,
3
4
  color: "#A80000"
4
5
  };
@@ -1,5 +1,6 @@
1
1
  import { defaultTimestampContentStyles } from "./defaultTimestampContentStyles";
2
- export const defaultTimestampRetryStyles = { ...defaultTimestampContentStyles,
2
+ export const defaultTimestampRetryStyles = {
3
+ ...defaultTimestampContentStyles,
3
4
  color: "#0063B1",
4
5
  cursor: "pointer"
5
6
  };
@@ -4,13 +4,12 @@
4
4
  * This middleware controls which messages are grouped together regarding to timestamps. It does the following processing:
5
5
  * 1. Distinguishes different messages by sender name and whether it is a system message
6
6
  ******/
7
- import { Constants } from "../../../../../common/Constants";
8
7
 
8
+ import { Constants } from "../../../../../common/Constants";
9
9
  function bin(items, grouping) {
10
10
  let lastBin;
11
11
  const bins = [];
12
12
  let lastItem;
13
-
14
13
  if (items.length > 0) {
15
14
  items.forEach(item => {
16
15
  if (lastItem && grouping(lastItem, item)) {
@@ -19,20 +18,17 @@ function bin(items, grouping) {
19
18
  lastBin = [item];
20
19
  bins.push(lastBin);
21
20
  }
22
-
23
21
  lastItem = item;
24
22
  });
25
23
  }
26
-
27
24
  return bins;
28
- } // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
29
-
25
+ }
30
26
 
27
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
31
28
  export const groupActivitiesMiddleware = () => next => args => {
32
29
  const {
33
30
  activities
34
31
  } = args;
35
-
36
32
  if (activities != null && activities.length > 0) {
37
33
  const {
38
34
  status
@@ -0,0 +1,83 @@
1
+ import { WebChatActionType } from "../../enums/WebChatActionType";
2
+ import { Constants } from "../../../../../common/Constants";
3
+
4
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars
5
+ const createMessageTimeStampMiddleware = _ref => {
6
+ let {
7
+ dispatch
8
+ } = _ref;
9
+ return next => action => {
10
+ if (isApplicable(action)) {
11
+ return next(evaluateTagsAndOverrideTimeStamp(action));
12
+ }
13
+ return next(action);
14
+ };
15
+ };
16
+ const isApplicable = action => {
17
+ return action.type === WebChatActionType.DIRECT_LINE_INCOMING_ACTIVITY && isPVAConversation(action) && isPayloadValid(action) && isValidChannel(action);
18
+ };
19
+ const isPayloadValid = action => {
20
+ var _action$payload;
21
+ return action === null || action === void 0 ? void 0 : (_action$payload = action.payload) === null || _action$payload === void 0 ? void 0 : _action$payload.activity;
22
+ };
23
+ const isValidChannel = action => {
24
+ var _action$payload2, _action$payload2$acti;
25
+ return (action === null || action === void 0 ? void 0 : (_action$payload2 = action.payload) === null || _action$payload2 === void 0 ? void 0 : (_action$payload2$acti = _action$payload2.activity) === null || _action$payload2$acti === void 0 ? void 0 : _action$payload2$acti.channelId) === Constants.acsChannel;
26
+ };
27
+ const isPVAConversation = action => {
28
+ return !isTagIncluded(action, Constants.systemMessageTag) && !isTagIncluded(action, Constants.publicMessageTag) && !isRoleUserOn(action);
29
+ };
30
+
31
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
32
+ const isTagIncluded = (action, tag) => {
33
+ return isDataTagsPresent(action) && action.payload.activity.channelData.tags.includes(tag);
34
+ };
35
+ const isRoleUserOn = action => {
36
+ var _action$payload3, _action$payload3$acti, _action$payload3$acti2;
37
+ return (action === null || action === void 0 ? void 0 : (_action$payload3 = action.payload) === null || _action$payload3 === void 0 ? void 0 : (_action$payload3$acti = _action$payload3.activity) === null || _action$payload3$acti === void 0 ? void 0 : (_action$payload3$acti2 = _action$payload3$acti.from) === null || _action$payload3$acti2 === void 0 ? void 0 : _action$payload3$acti2.role) === Constants.userMessageTag;
38
+ };
39
+ const overrideTimeStamp = (timestampOriginal, timeStampNew) => {
40
+ return isTimestampValid(timeStampNew) ? timeStampNew : timestampOriginal;
41
+ };
42
+ const isTimestampValid = timeStamp => {
43
+ const regex = /(\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])(T)(\d{2})(:{1})(\d{2})(:{1})(\d{2})(.\d+)([Z]{1}))/;
44
+ return regex.test(timeStamp);
45
+ };
46
+ const isDataTagsPresent = action => {
47
+ var _action$payload4, _action$payload4$acti, _action$payload4$acti2;
48
+ return (action === null || action === void 0 ? void 0 : (_action$payload4 = action.payload) === null || _action$payload4 === void 0 ? void 0 : (_action$payload4$acti = _action$payload4.activity) === null || _action$payload4$acti === void 0 ? void 0 : (_action$payload4$acti2 = _action$payload4$acti.channelData) === null || _action$payload4$acti2 === void 0 ? void 0 : _action$payload4$acti2.tags) && action.payload.activity.channelData.tags.length > 0;
49
+ };
50
+ const evaluateTagsAndOverrideTimeStamp = action => {
51
+ const tagValue = tagLookup(action, Constants.prefixTimestampTag);
52
+ if (tagValue) {
53
+ const newTimestamp = extractTimeStamp(tagValue);
54
+ action.payload.activity.timestamp = overrideTimeStamp(action.payload.activity.timestamp, newTimestamp);
55
+ }
56
+ return action;
57
+ };
58
+ const extractTimeStamp = timeStamp => {
59
+ if (timeStamp && timeStamp.length > 0) {
60
+ const ts = timeStamp.split(Constants.prefixTimestampTag);
61
+ if (ts && ts.length > 1) {
62
+ return ts[1];
63
+ }
64
+ }
65
+ return timeStamp;
66
+ };
67
+ const tagLookup = (action, tag) => {
68
+ if (!isDataTagsPresent(action)) {
69
+ return null;
70
+ }
71
+ const tags = action.payload.activity.channelData.tags;
72
+ let value;
73
+ if (tags && tags.length > 0) {
74
+ for (let i = 0; i < tags.length; i++) {
75
+ value = tags[i];
76
+ if (value && value.indexOf(tag) > -1) {
77
+ return value;
78
+ }
79
+ }
80
+ }
81
+ return null;
82
+ };
83
+ export default createMessageTimeStampMiddleware;
@@ -5,11 +5,10 @@ import { defaultMiddlewareLocalizedTexts } from "../../../../common/defaultProps
5
5
  import { defaultTimestampContentStyles } from "../defaultStyles/defaultTimestampContentStyles";
6
6
  import { getTimestampHourMinute } from "../../../../../../common/utils";
7
7
  import { useChatContextStore } from "../../../../../..";
8
- /* eslint @typescript-eslint/no-explicit-any: "off" */
9
8
 
9
+ /* eslint @typescript-eslint/no-explicit-any: "off" */
10
10
  export const DeliveredTimestamp = _ref => {
11
11
  var _state$domainStates$r, _state$domainStates$r2, _state$domainStates$m;
12
-
13
12
  let {
14
13
  args,
15
14
  role,
@@ -17,7 +16,8 @@ export const DeliveredTimestamp = _ref => {
17
16
  } = _ref;
18
17
  const [state] = useChatContextStore();
19
18
  const dir = ((_state$domainStates$r = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r === void 0 ? void 0 : _state$domainStates$r.timestampDir) ?? state.domainStates.globalDir;
20
- const contentStyles = { ...defaultTimestampContentStyles,
19
+ const contentStyles = {
20
+ ...defaultTimestampContentStyles,
21
21
  ...((_state$domainStates$r2 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r2 === void 0 ? void 0 : _state$domainStates$r2.timestampContentStyleProps)
22
22
  };
23
23
  const {
@@ -9,11 +9,10 @@ import { defaultTimestampRetryStyles } from "../defaultStyles/defaultTimestampRe
9
9
  import { getTimestampHourMinute } from "../../../../../../common/utils";
10
10
  import { hooks } from "botframework-webchat";
11
11
  import { useChatContextStore } from "../../../../../..";
12
- /* eslint @typescript-eslint/no-explicit-any: "off" */
13
12
 
13
+ /* eslint @typescript-eslint/no-explicit-any: "off" */
14
14
  export const NotDeliveredTimestamp = _ref => {
15
15
  var _state$domainStates$r, _state$domainStates$r2, _state$domainStates$r3, _state$domainStates$r4, _state$domainStates$m, _state$domainStates$m2;
16
-
17
16
  let {
18
17
  args
19
18
  } = _ref;
@@ -32,54 +31,48 @@ export const NotDeliveredTimestamp = _ref => {
32
31
  } = activity;
33
32
  const [state] = useChatContextStore();
34
33
  const dir = ((_state$domainStates$r = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r === void 0 ? void 0 : _state$domainStates$r.timestampDir) ?? state.domainStates.globalDir;
35
- const contentStyles = { ...defaultTimestampContentStyles,
34
+ const contentStyles = {
35
+ ...defaultTimestampContentStyles,
36
36
  ...((_state$domainStates$r2 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r2 === void 0 ? void 0 : _state$domainStates$r2.timestampContentStyleProps)
37
37
  };
38
- const failedTextStyles = { ...defaultTimestampFailedStyles,
38
+ const failedTextStyles = {
39
+ ...defaultTimestampFailedStyles,
39
40
  ...((_state$domainStates$r3 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r3 === void 0 ? void 0 : _state$domainStates$r3.timestampFailedTextStyleProps)
40
41
  };
41
- const retryTextStyles = { ...defaultTimestampRetryStyles,
42
+ const retryTextStyles = {
43
+ ...defaultTimestampRetryStyles,
42
44
  ...((_state$domainStates$r4 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r4 === void 0 ? void 0 : _state$domainStates$r4.timestampRetryTextStyleProps)
43
45
  };
44
46
  useEffect(() => {
45
47
  var _timestampRef$current;
46
-
47
48
  const timestampWebChatNodes = timestampRef === null || timestampRef === void 0 ? void 0 : (_timestampRef$current = timestampRef.current) === null || _timestampRef$current === void 0 ? void 0 : _timestampRef$current.childNodes;
48
-
49
49
  if ((timestampWebChatNodes === null || timestampWebChatNodes === void 0 ? void 0 : timestampWebChatNodes.length) > 1) {
50
50
  timestampWebChatNodes[1].innerText = getTimestampHourMinute(timestamp);
51
51
  }
52
52
  }, [timestampRef]);
53
53
  const onRetryClick = useCallback(async event => {
54
54
  var _activity$channelData;
55
-
56
55
  removeNotDeliveredTimestamp(event);
57
56
  activity.previousClientActivityID = (_activity$channelData = activity.channelData) === null || _activity$channelData === void 0 ? void 0 : _activity$channelData.clientActivityID;
58
57
  await postActivity(activity);
59
58
  focus("sendBox");
60
59
  }, [activity, focus, postActivity]);
61
-
62
60
  const onRetryKeyEnter = event => {
63
61
  if (event.code === KeyCodes.ENTER) {
64
62
  event.preventDefault();
65
63
  onRetryClick(event);
66
64
  }
67
65
  };
68
-
69
66
  const removeNotDeliveredTimestamp = event => {
70
67
  let parent = event.target.parentElement;
71
-
72
68
  while (parent.tagName !== HtmlAttributeNames.listItem) {
73
69
  parent = parent.parentElement;
74
-
75
70
  if (parent.tagName === HtmlAttributeNames.unorderedList) {
76
71
  return;
77
72
  }
78
73
  }
79
-
80
74
  parent.parentNode.removeChild(parent);
81
75
  };
82
-
83
76
  return /*#__PURE__*/React.createElement(Stack, {
84
77
  style: contentStyles,
85
78
  dir: dir,
@@ -4,17 +4,17 @@ import { defaultMiddlewareLocalizedTexts } from "../../../../common/defaultProps
4
4
  import { defaultTimestampContentStyles } from "../defaultStyles/defaultTimestampContentStyles";
5
5
  import { getTimestampHourMinute } from "../../../../../../common/utils";
6
6
  import { useChatContextStore } from "../../../../../..";
7
- /* eslint @typescript-eslint/no-explicit-any: "off" */
8
7
 
8
+ /* eslint @typescript-eslint/no-explicit-any: "off" */
9
9
  export const SendingTimestamp = _ref => {
10
10
  var _state$domainStates$r, _state$domainStates$r2, _state$domainStates$m;
11
-
12
11
  let {
13
12
  args
14
13
  } = _ref;
15
14
  const [state] = useChatContextStore();
16
15
  const dir = ((_state$domainStates$r = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r === void 0 ? void 0 : _state$domainStates$r.timestampDir) ?? state.domainStates.globalDir;
17
- const contentStyles = { ...defaultTimestampContentStyles,
16
+ const contentStyles = {
17
+ ...defaultTimestampContentStyles,
18
18
  ...((_state$domainStates$r2 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r2 === void 0 ? void 0 : _state$domainStates$r2.timestampContentStyleProps)
19
19
  };
20
20
  const {
@@ -3,6 +3,7 @@
3
3
  *
4
4
  * This middleware changes the component that shows who's actively typing. It uses the default Microsoft LiveChatWidget styles.
5
5
  ******/
6
+
6
7
  import React from "react";
7
8
  import { DirectLineSenderRole } from "../../enums/DirectLineSenderRole";
8
9
  import { defaultMiddlewareLocalizedTexts } from "../../../common/defaultProps/defaultMiddlewareLocalizedTexts";
@@ -10,11 +11,11 @@ import { defaultTypingIndicatorBubbleStyles } from "./defaultStyles/defaultTypin
10
11
  import { defaultTypingIndicatorContainerStyles } from "./defaultStyles/defaultTypingIndicatorContainerStyles";
11
12
  import { defaultTypingIndicatorMessageStyles } from "./defaultStyles/defaultTypingIndicatorMessageStyles";
12
13
  import { useChatContextStore } from "../../../../..";
13
- import useChatSDKStore from "../../../../../hooks/useChatSDKStore"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
14
+ import useChatSDKStore from "../../../../../hooks/useChatSDKStore";
14
15
 
16
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
15
17
  const TypingIndicator = _ref => {
16
18
  var _state$domainStates$l, _state$domainStates$r, _state$domainStates$r2, _state$domainStates$r3;
17
-
18
19
  let {
19
20
  activeTyping,
20
21
  visible
@@ -22,39 +23,37 @@ const TypingIndicator = _ref => {
22
23
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
23
24
  const chatSDK = useChatSDKStore();
24
25
  const [state] = useChatContextStore();
25
-
26
26
  if (!activeTyping || Object.keys(activeTyping).length === 0 || ((_state$domainStates$l = state.domainStates.liveChatConfig) === null || _state$domainStates$l === void 0 ? void 0 : _state$domainStates$l.LiveChatVersion) === 1 && !visible) {
27
27
  return null;
28
28
  }
29
-
30
29
  activeTyping = Object.keys(activeTyping).map(key => activeTyping[key]);
31
-
32
30
  for (let i = 0; i < activeTyping.length; i++) {
33
31
  if (activeTyping[i].role && activeTyping[i].role === DirectLineSenderRole.User) {
34
32
  var _state$domainStates$l2;
35
-
36
33
  //visible is set to false if the current user is typing, in which case, we just send typing indicator to OC
37
34
  if (((_state$domainStates$l2 = state.domainStates.liveChatConfig) === null || _state$domainStates$l2 === void 0 ? void 0 : _state$domainStates$l2.LiveChatVersion) === 2 && !visible) {
38
35
  chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.sendTypingEvent();
39
36
  return null;
40
37
  }
41
-
42
38
  activeTyping.splice(i, 1);
43
39
  i--;
44
40
  }
45
41
  }
46
-
47
- const localizedTexts = { ...defaultMiddlewareLocalizedTexts,
42
+ const localizedTexts = {
43
+ ...defaultMiddlewareLocalizedTexts,
48
44
  ...state.domainStates.middlewareLocalizedTexts
49
45
  };
50
46
  const message = getTypingIndicatorMessage(activeTyping, localizedTexts);
51
- const typingIndicatorStyles = { ...defaultTypingIndicatorContainerStyles,
47
+ const typingIndicatorStyles = {
48
+ ...defaultTypingIndicatorContainerStyles,
52
49
  ...((_state$domainStates$r = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r === void 0 ? void 0 : _state$domainStates$r.typingIndicatorStyleProps)
53
50
  };
54
- const typingIndicatorBubbleStyles = { ...defaultTypingIndicatorBubbleStyles,
51
+ const typingIndicatorBubbleStyles = {
52
+ ...defaultTypingIndicatorBubbleStyles,
55
53
  ...((_state$domainStates$r2 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r2 === void 0 ? void 0 : _state$domainStates$r2.typingIndicatorBubbleStyleProps)
56
54
  };
57
- const typingIndicatorMessageStyles = { ...defaultTypingIndicatorMessageStyles,
55
+ const typingIndicatorMessageStyles = {
56
+ ...defaultTypingIndicatorMessageStyles,
58
57
  ...((_state$domainStates$r3 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r3 === void 0 ? void 0 : _state$domainStates$r3.typingIndicatorMessageStyleProps)
59
58
  };
60
59
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("style", null, `
@@ -96,9 +95,9 @@ const TypingIndicator = _ref => {
96
95
  }), /*#__PURE__*/React.createElement("div", {
97
96
  style: typingIndicatorMessageStyles
98
97
  }, " ", message, " ")));
99
- }; // eslint-disable-next-line react/display-name, @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
100
-
98
+ };
101
99
 
100
+ // eslint-disable-next-line react/display-name, @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
102
101
  export const typingIndicatorMiddleware = () => next => args => {
103
102
  const {
104
103
  activeTyping,
@@ -108,8 +107,9 @@ export const typingIndicatorMiddleware = () => next => args => {
108
107
  activeTyping: activeTyping,
109
108
  visible: visible
110
109
  });
111
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
110
+ };
112
111
 
112
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
113
113
  const getTypingIndicatorMessage = (activeTyping, localizedTexts) => {
114
114
  if (!activeTyping || activeTyping.length === 0) {
115
115
  return "";
@@ -120,19 +120,15 @@ const getTypingIndicatorMessage = (activeTyping, localizedTexts) => {
120
120
  const firstMember = activeTyping[0].name;
121
121
  const lastMember = activeTyping[1].name;
122
122
  let message = localizedTexts.MIDDLEWARE_TYPING_INDICATOR_TWO;
123
-
124
123
  if (!message) {
125
124
  return "";
126
125
  }
127
-
128
126
  if (message.includes("{0}")) {
129
127
  message = message.replace("{0}", firstMember);
130
128
  }
131
-
132
129
  if (message.includes("{1}")) {
133
130
  message = message.replace("{1}", lastMember);
134
131
  }
135
-
136
132
  return message;
137
133
  } else {
138
134
  const message = localizedTexts.MIDDLEWARE_TYPING_INDICATOR_MULTIPLE;
@@ -3,8 +3,10 @@
3
3
  *
4
4
  * Handles attachment sending.
5
5
  ******/
6
- import { WebChatActionType } from "../../enums/WebChatActionType"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
6
 
7
+ import { WebChatActionType } from "../../enums/WebChatActionType";
8
+
9
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
8
10
  const createSendFileAction = files => {
9
11
  return {
10
12
  payload: {
@@ -12,31 +14,26 @@ const createSendFileAction = files => {
12
14
  },
13
15
  type: WebChatActionType.WEB_CHAT_SEND_FILES
14
16
  };
15
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
-
17
+ };
17
18
 
19
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
18
20
  const attachmentProcessingMiddleware = _ref => {
19
21
  let {
20
22
  dispatch
21
23
  } = _ref;
22
24
  return next => async action => {
23
25
  var _action$payload, _action$payload$files;
24
-
25
26
  if ((action === null || action === void 0 ? void 0 : action.type) === WebChatActionType.WEB_CHAT_SEND_FILES && (action === null || action === void 0 ? void 0 : (_action$payload = action.payload) === null || _action$payload === void 0 ? void 0 : (_action$payload$files = _action$payload.files) === null || _action$payload$files === void 0 ? void 0 : _action$payload$files.length) > 0) {
26
27
  const files = action.payload.files;
27
-
28
28
  if (files.length === 1) {
29
29
  return next(action);
30
30
  }
31
-
32
31
  const dispatchAction = createSendFileAction(files.slice(0, files.length - 1));
33
32
  const nextAction = createSendFileAction([files[files.length - 1]]);
34
33
  await dispatch(dispatchAction);
35
34
  return next(nextAction);
36
35
  }
37
-
38
36
  return next(action);
39
37
  };
40
38
  };
41
-
42
39
  export default attachmentProcessingMiddleware;