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

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 (264) hide show
  1. package/lib/cjs/common/Constants.js +17 -168
  2. package/lib/cjs/common/KeyCodes.js +0 -3
  3. package/lib/cjs/common/contextDataStore/DataStoreManager.js +0 -4
  4. package/lib/cjs/common/storage/default/defaultCacheManager.js +0 -10
  5. package/lib/cjs/common/storage/default/defaultClientDataStoreProvider.js +4 -16
  6. package/lib/cjs/common/storage/default/defaultInMemoryDataStore.js +2 -10
  7. package/lib/cjs/common/telemetry/TelemetryConstants.js +22 -23
  8. package/lib/cjs/common/telemetry/TelemetryHelper.js +16 -57
  9. package/lib/cjs/common/telemetry/TelemetryManager.js +0 -31
  10. package/lib/cjs/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +0 -2
  11. package/lib/cjs/common/telemetry/loggers/ariaTelemetryLogger.js +30 -36
  12. package/lib/cjs/common/telemetry/loggers/consoleLogger.js +0 -9
  13. package/lib/cjs/common/utils.js +18 -105
  14. package/lib/cjs/components/callingcontainerstateful/CallingContainerStateful.js +8 -46
  15. package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +2 -24
  16. package/lib/cjs/components/chatbuttonstateful/common/styleProps/defaultOutOfOfficeChatButtonStyleProps.js +3 -0
  17. package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +8 -32
  18. package/lib/cjs/components/dimlayer/DimLayer.js +0 -4
  19. package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +8 -36
  20. package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.spec.js +6 -8
  21. package/lib/cjs/components/footerstateful/FooterStateful.js +10 -34
  22. package/lib/cjs/components/footerstateful/audionotificationstateful/AudioNotificationStateful.js +0 -6
  23. package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +7 -45
  24. package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.spec.js +6 -8
  25. package/lib/cjs/components/headerstateful/HeaderStateful.js +12 -27
  26. package/lib/cjs/components/livechatwidget/LiveChatWidget.js +2 -14
  27. package/lib/cjs/components/livechatwidget/common/ActivityStreamHandler.js +2 -9
  28. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +0 -5
  29. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +4 -11
  30. package/lib/cjs/components/livechatwidget/common/ChatAdapterShim.js +11 -19
  31. package/lib/cjs/components/livechatwidget/common/Deferred.js +3 -10
  32. package/lib/cjs/components/livechatwidget/common/authHelper.js +4 -19
  33. package/lib/cjs/components/livechatwidget/common/createAdapter.js +2 -13
  34. package/lib/cjs/components/livechatwidget/common/createFooter.js +0 -10
  35. package/lib/cjs/components/livechatwidget/common/createInternetConnectionChangeHandler.js +2 -14
  36. package/lib/cjs/components/livechatwidget/common/createMarkdown.js +16 -24
  37. package/lib/cjs/components/livechatwidget/common/defaultProps/defaultScrollBarProps.js +14 -0
  38. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +41 -35
  39. package/lib/cjs/components/livechatwidget/common/disposeTelemetryLoggers.js +0 -3
  40. package/lib/cjs/components/livechatwidget/common/endChat.js +30 -33
  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 +16 -54
  45. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +80 -150
  46. package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +4 -17
  47. package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +2 -11
  48. package/lib/cjs/components/livechatwidget/common/shareObservable.js +4 -8
  49. package/lib/cjs/components/livechatwidget/common/startChat.js +126 -109
  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/interfaces/IScrollBarProps.js +1 -0
  53. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +201 -256
  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 +4 -17
  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 +9 -37
  63. package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +2 -32
  64. package/lib/cjs/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +6 -24
  65. package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +19 -38
  66. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +0 -7
  67. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatStatefulProps.js +2 -6
  68. package/lib/cjs/components/webchatcontainerstateful/common/mockadapter.js +9 -26
  69. package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +2 -17
  70. package/lib/cjs/components/webchatcontainerstateful/common/utils/BrowserInfo.js +2 -24
  71. package/lib/cjs/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +3 -15
  72. package/lib/cjs/components/webchatcontainerstateful/common/utils/isMaskingFromCustomer.js +5 -8
  73. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +0 -4
  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 +17 -41
  86. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +8 -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 +2 -13
  90. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +0 -16
  91. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.js +10 -0
  92. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampFailedStyles.js +2 -3
  93. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampRetryStyles.js +2 -3
  94. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.js +10 -0
  95. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware.js +3 -9
  96. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +2 -30
  97. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +2 -12
  98. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +6 -28
  99. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +2 -11
  100. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +13 -30
  101. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +3 -9
  102. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +6 -34
  103. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +1 -10
  104. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +1 -12
  105. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +17 -19
  106. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.js +1 -9
  107. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.js +3 -9
  108. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.js +13 -34
  109. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.js +1 -10
  110. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.js +7 -11
  111. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.js +5 -14
  112. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +1 -21
  113. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +0 -12
  114. package/lib/cjs/contexts/ChatAdapterStore.js +0 -2
  115. package/lib/cjs/contexts/ChatContextStore.js +0 -2
  116. package/lib/cjs/contexts/ChatSDKStore.js +0 -2
  117. package/lib/cjs/contexts/common/ConversationState.js +0 -1
  118. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +3 -3
  119. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +2 -11
  120. package/lib/cjs/contexts/createReducer.js +146 -108
  121. package/lib/cjs/controller/componentController.js +2 -31
  122. package/lib/cjs/hooks/useChatAdapterStore.js +0 -6
  123. package/lib/cjs/hooks/useChatContextStore.js +0 -6
  124. package/lib/cjs/hooks/useChatSDKStore.js +0 -6
  125. package/lib/cjs/index.js +0 -5
  126. package/lib/cjs/plugins/newMessageEventHandler.js +15 -36
  127. package/lib/esm/common/Constants.js +14 -155
  128. package/lib/esm/common/KeyCodes.js +0 -2
  129. package/lib/esm/common/contextDataStore/DataStoreManager.js +0 -2
  130. package/lib/esm/common/storage/default/defaultCacheManager.js +0 -3
  131. package/lib/esm/common/storage/default/defaultClientDataStoreProvider.js +4 -11
  132. package/lib/esm/common/storage/default/defaultInMemoryDataStore.js +2 -3
  133. package/lib/esm/common/telemetry/TelemetryConstants.js +26 -20
  134. package/lib/esm/common/telemetry/TelemetryHelper.js +16 -45
  135. package/lib/esm/common/telemetry/TelemetryManager.js +0 -18
  136. package/lib/esm/common/telemetry/loggers/ariaTelemetryLogger.js +28 -24
  137. package/lib/esm/common/telemetry/loggers/consoleLogger.js +0 -5
  138. package/lib/esm/common/utils.js +18 -53
  139. package/lib/esm/components/callingcontainerstateful/CallingContainerStateful.js +8 -17
  140. package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +2 -7
  141. package/lib/esm/components/chatbuttonstateful/common/styleProps/defaultOutOfOfficeChatButtonStyleProps.js +3 -0
  142. package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +10 -13
  143. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +8 -15
  144. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.spec.js +6 -6
  145. package/lib/esm/components/footerstateful/FooterStateful.js +12 -15
  146. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +7 -35
  147. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.spec.js +6 -6
  148. package/lib/esm/components/headerstateful/HeaderStateful.js +12 -12
  149. package/lib/esm/components/livechatwidget/LiveChatWidget.js +2 -2
  150. package/lib/esm/components/livechatwidget/common/ActivityStreamHandler.js +2 -6
  151. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +0 -3
  152. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +4 -8
  153. package/lib/esm/components/livechatwidget/common/ChatAdapterShim.js +11 -15
  154. package/lib/esm/components/livechatwidget/common/Deferred.js +3 -8
  155. package/lib/esm/components/livechatwidget/common/authHelper.js +4 -12
  156. package/lib/esm/components/livechatwidget/common/createAdapter.js +4 -6
  157. package/lib/esm/components/livechatwidget/common/createFooter.js +0 -1
  158. package/lib/esm/components/livechatwidget/common/createInternetConnectionChangeHandler.js +2 -5
  159. package/lib/esm/components/livechatwidget/common/createMarkdown.js +18 -18
  160. package/lib/esm/components/livechatwidget/common/defaultProps/defaultScrollBarProps.js +7 -0
  161. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +43 -22
  162. package/lib/esm/components/livechatwidget/common/endChat.js +32 -18
  163. package/lib/esm/components/livechatwidget/common/getGeneralStylesForButton.js +0 -2
  164. package/lib/esm/components/livechatwidget/common/initCallingSdk.js +9 -11
  165. package/lib/esm/components/livechatwidget/common/initConfirmationPropsComposer.js +4 -5
  166. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +18 -19
  167. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +79 -130
  168. package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +4 -9
  169. package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +4 -3
  170. package/lib/esm/components/livechatwidget/common/shareObservable.js +4 -7
  171. package/lib/esm/components/livechatwidget/common/startChat.js +126 -81
  172. package/lib/esm/components/livechatwidget/common/updateSessionDataForTelemetry.js +4 -2
  173. package/lib/esm/components/livechatwidget/interfaces/IScrollBarProps.js +1 -0
  174. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +203 -190
  175. package/lib/esm/components/loadingpanestateful/LoadingPaneStateful.js +4 -5
  176. package/lib/esm/components/ooohpanestateful/OOOHPaneStateful.js +4 -5
  177. package/lib/esm/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +4 -5
  178. package/lib/esm/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +32 -11
  179. package/lib/esm/components/postchatsurveypanestateful/common/defaultStyleProps/defaultgeneralPostChatSurveyPaneStyleProps.js +1 -1
  180. package/lib/esm/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.js +6 -0
  181. package/lib/esm/components/postchatsurveypanestateful/enums/PostChatSurveyMode.js +0 -1
  182. package/lib/esm/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.js +1 -0
  183. package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +11 -21
  184. package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +4 -8
  185. package/lib/esm/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +6 -6
  186. package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +17 -11
  187. package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultWebChatStatefulProps.js +2 -2
  188. package/lib/esm/components/webchatcontainerstateful/common/mockadapter.js +9 -18
  189. package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +2 -13
  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/webchatcontroller/BotMagicCodeStore.js +0 -2
  194. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/WebChatStoreLoader.js +0 -2
  195. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/BrowserVendor.js +0 -1
  196. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineActivityType.js +0 -1
  197. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineSenderRole.js +0 -1
  198. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/MessageType.js +0 -1
  199. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/NotificationLevel.js +0 -1
  200. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios.js +0 -1
  201. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/SendStatus.js +0 -1
  202. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/WebChatActionType.js +0 -1
  203. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsEgressMiddleware.js +2 -5
  204. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsIngressMiddleware.js +0 -4
  205. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +17 -26
  206. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +10 -11
  207. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +23 -38
  208. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.js +9 -8
  209. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +2 -9
  210. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +0 -14
  211. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.js +3 -0
  212. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampFailedStyles.js +2 -1
  213. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampRetryStyles.js +2 -1
  214. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.js +3 -0
  215. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware.js +3 -7
  216. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +4 -28
  217. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +3 -3
  218. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +7 -14
  219. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +3 -3
  220. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +15 -19
  221. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +5 -8
  222. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +6 -29
  223. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +3 -7
  224. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +3 -8
  225. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +17 -14
  226. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.js +3 -7
  227. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.js +3 -7
  228. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.js +15 -27
  229. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.js +3 -5
  230. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.js +9 -9
  231. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.js +7 -9
  232. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +1 -13
  233. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +0 -5
  234. package/lib/esm/contexts/ChatAdapterStore.js +2 -1
  235. package/lib/esm/contexts/ChatContextStore.js +2 -1
  236. package/lib/esm/contexts/ChatSDKStore.js +2 -1
  237. package/lib/esm/contexts/common/ConversationState.js +0 -1
  238. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +3 -3
  239. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +2 -5
  240. package/lib/esm/contexts/createReducer.js +146 -105
  241. package/lib/esm/controller/componentController.js +3 -2
  242. package/lib/esm/hooks/useChatAdapterStore.js +0 -4
  243. package/lib/esm/hooks/useChatContextStore.js +0 -4
  244. package/lib/esm/hooks/useChatSDKStore.js +0 -4
  245. package/lib/esm/plugins/newMessageEventHandler.js +15 -26
  246. package/lib/types/common/Constants.d.ts +12 -0
  247. package/lib/types/common/telemetry/TelemetryConstants.d.ts +11 -4
  248. package/lib/types/common/telemetry/definitions/Contracts.d.ts +2 -4
  249. package/lib/types/components/livechatwidget/common/defaultProps/defaultScrollBarProps.d.ts +2 -0
  250. package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +5 -7
  251. package/lib/types/components/livechatwidget/common/startChat.d.ts +3 -2
  252. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetControlProps.d.ts +1 -1
  253. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +4 -2
  254. package/lib/types/components/livechatwidget/interfaces/IScrollBarProps.d.ts +22 -0
  255. package/lib/types/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.d.ts +2 -2
  256. package/lib/types/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.d.ts +5 -0
  257. package/lib/types/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.d.ts +4 -0
  258. package/lib/types/components/reconnectchatpanestateful/interfaces/IReconnectChatPaneStatefulProps.d.ts +0 -1
  259. package/lib/types/components/webchatcontainerstateful/interfaces/IRenderingMiddlewareProps.d.ts +2 -0
  260. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.d.ts +3 -0
  261. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.d.ts +3 -0
  262. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +2 -2
  263. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +4 -3
  264. package/package.json +3 -3
@@ -3,27 +3,25 @@
3
3
  *
4
4
  * Checks if the attachment being uploaded satisfies Omnichannel's requirement on file extensions and file size.
5
5
  ******/
6
+
6
7
  import { NotificationHandler } from "../../notification/NotificationHandler";
7
8
  import { NotificationScenarios } from "../../enums/NotificationScenarios";
8
9
  import { WebChatActionType } from "../../enums/WebChatActionType";
9
10
  const MBtoBRatio = 1000000;
11
+
10
12
  /*
11
13
  * If an attachment is invalid, delete this attachment from the attachments list
12
14
  * If the result attachment list is empty, return a dummy action
13
15
  */
14
-
15
16
  const validateAttachment = (action, allowedFileExtensions, maxUploadFileSize, localizedTexts) => {
16
17
  var _action$payload, _action$payload$activ, _action$payload2, _action$payload2$acti, _action$payload2$acti2, _action$payload3, _action$payload3$acti, _action$payload3$acti2;
17
-
18
18
  const attachments = action === null || action === void 0 ? void 0 : (_action$payload = action.payload) === null || _action$payload === void 0 ? void 0 : (_action$payload$activ = _action$payload.activity) === null || _action$payload$activ === void 0 ? void 0 : _action$payload$activ.attachments;
19
19
  const attachmentSizes = 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$acti2 = _action$payload2$acti.channelData) === null || _action$payload2$acti2 === void 0 ? void 0 : _action$payload2$acti2.attachmentSizes;
20
-
21
20
  if (attachments) {
22
21
  for (let i = 0; i < attachments.length; i++) {
23
22
  const fileExtensionValid = validateFileExtension(attachments[i], allowedFileExtensions);
24
23
  const fileSizeValid = validateFileSize(attachmentSizes[i], maxUploadFileSize);
25
24
  const fileIsEmpty = parseInt(attachmentSizes[i]) == 0;
26
-
27
25
  if (!fileExtensionValid || !fileSizeValid || fileIsEmpty) {
28
26
  NotificationHandler.notifyError(NotificationScenarios.AttachmentError, buildErrorMessage(attachments[i].name, fileExtensionValid, fileSizeValid, fileIsEmpty, maxUploadFileSize, localizedTexts));
29
27
  attachments.splice(i, 1);
@@ -32,7 +30,6 @@ const validateAttachment = (action, allowedFileExtensions, maxUploadFileSize, lo
32
30
  }
33
31
  }
34
32
  }
35
-
36
33
  if ((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.attachments) === null || _action$payload3$acti2 === void 0 ? void 0 : _action$payload3$acti2.length) > 0) {
37
34
  return action;
38
35
  } else {
@@ -41,37 +38,30 @@ const validateAttachment = (action, allowedFileExtensions, maxUploadFileSize, lo
41
38
  payload: null
42
39
  };
43
40
  }
44
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
45
-
41
+ };
46
42
 
43
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
47
44
  const validateFileExtension = (attachment, allowedFileExtensions) => {
48
45
  if (!allowedFileExtensions) {
49
46
  return true;
50
47
  }
51
-
52
48
  const fileName = attachment.name.toLowerCase();
53
49
  const index = fileName.lastIndexOf(".");
54
-
55
50
  if (!index) {
56
51
  return false;
57
52
  }
58
-
59
53
  const fileExtension = fileName.substring(index);
60
54
  const allExtensions = allowedFileExtensions === null || allowedFileExtensions === void 0 ? void 0 : allowedFileExtensions.toLowerCase().split(",");
61
55
  return allExtensions.indexOf(fileExtension) > -1;
62
56
  };
63
-
64
57
  const validateFileSize = (attachmentSize, maxUploadFileSize) => {
65
58
  return (maxUploadFileSize && parseInt(maxUploadFileSize) * MBtoBRatio) > parseInt(attachmentSize);
66
59
  };
67
-
68
60
  const buildErrorMessage = (fileName, supportedFileExtension, supportedFileSize, fileIsEmpty, maxUploadFileSize, localizedTexts) => {
69
61
  let errorMessage = "";
70
-
71
62
  if (!fileName || !maxUploadFileSize) {
72
63
  return localizedTexts.MIDDLEWARE_BANNER_FILE_NULL_ERROR ?? "";
73
64
  }
74
-
75
65
  if (!supportedFileExtension && !supportedFileSize) {
76
66
  errorMessage = getFileSizeAndFileExtensionErrorMessage(fileName, maxUploadFileSize, localizedTexts);
77
67
  } else if (!supportedFileSize) {
@@ -83,33 +73,25 @@ const buildErrorMessage = (fileName, supportedFileExtension, supportedFileSize,
83
73
  } else {
84
74
  errorMessage = localizedTexts.MIDDLEWARE_BANNER_ERROR_MESSAGE ?? "";
85
75
  }
86
-
87
76
  return errorMessage;
88
77
  };
89
-
90
78
  const getFileSizeAndFileExtensionErrorMessage = (fileName, maxUploadFileSize, localizedTexts) => {
91
79
  const index = fileName.lastIndexOf(".");
92
80
  let errorMessage;
93
-
94
81
  if (index < 0) {
95
82
  errorMessage = localizedTexts.MIDDLEWARE_BANNER_FILE_SIZE_WITHOUT_EXTENSION_ERROR;
96
83
  } else {
97
84
  var _errorMessage;
98
-
99
85
  const fileExtension = fileName.substring(index);
100
86
  errorMessage = localizedTexts.MIDDLEWARE_BANNER_FILE_SIZE_EXTENSION_ERROR;
101
-
102
87
  if ((_errorMessage = errorMessage) !== null && _errorMessage !== void 0 && _errorMessage.includes("{1}")) {
103
88
  errorMessage = errorMessage.replace("{1}", fileExtension);
104
89
  }
105
90
  }
106
-
107
91
  return errorMessage ? errorMessage.includes("{0}") ? errorMessage.replace("{0}", maxUploadFileSize) : errorMessage : "";
108
92
  };
109
-
110
93
  const getFileExtensionErrorMessage = (fileName, localizedTexts) => {
111
94
  const index = fileName.lastIndexOf(".");
112
-
113
95
  if (index < 0) {
114
96
  return localizedTexts.MIDDLEWARE_BANNER_FILE_WITHOUT_EXTENSION ?? "";
115
97
  } else {
@@ -118,13 +100,12 @@ const getFileExtensionErrorMessage = (fileName, localizedTexts) => {
118
100
  return errorMessage ? errorMessage.includes("{0}") ? errorMessage.replace("{0}", fileExtension) : errorMessage : "";
119
101
  }
120
102
  };
121
-
122
103
  const getFileSizeErrorMessage = (maxUploadFileSize, localizedTexts) => {
123
104
  const errorMessage = localizedTexts.MIDDLEWARE_BANNER_FILE_SIZE_ERROR;
124
105
  return errorMessage ? errorMessage.includes("{0}") ? errorMessage.replace("{0}", maxUploadFileSize) : errorMessage : "";
125
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars
126
-
106
+ };
127
107
 
108
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars
128
109
  const createAttachmentUploadValidatorMiddleware = (allowedFileExtensions, maxUploadFileSize, localizedTexts) => _ref => {
129
110
  let {
130
111
  dispatch
@@ -132,18 +113,14 @@ const createAttachmentUploadValidatorMiddleware = (allowedFileExtensions, maxUpl
132
113
  return next => action => {
133
114
  if (action.type === WebChatActionType.DIRECT_LINE_POST_ACTIVITY) {
134
115
  var _payload$activity, _payload$activity2, _payload$activity2$ch, _payload$activity3, _payload$activity3$at, _payload$activity4, _payload$activity4$ch, _payload$activity4$ch2;
135
-
136
116
  const {
137
117
  payload
138
118
  } = action;
139
-
140
119
  if (payload !== null && payload !== void 0 && (_payload$activity = payload.activity) !== null && _payload$activity !== void 0 && _payload$activity.attachments && payload !== null && payload !== void 0 && (_payload$activity2 = payload.activity) !== null && _payload$activity2 !== void 0 && (_payload$activity2$ch = _payload$activity2.channelData) !== null && _payload$activity2$ch !== void 0 && _payload$activity2$ch.attachmentSizes && (payload === null || payload === void 0 ? void 0 : (_payload$activity3 = payload.activity) === null || _payload$activity3 === void 0 ? void 0 : (_payload$activity3$at = _payload$activity3.attachments) === null || _payload$activity3$at === void 0 ? void 0 : _payload$activity3$at.length) === (payload === null || payload === void 0 ? void 0 : (_payload$activity4 = payload.activity) === null || _payload$activity4 === void 0 ? void 0 : (_payload$activity4$ch = _payload$activity4.channelData) === null || _payload$activity4$ch === void 0 ? void 0 : (_payload$activity4$ch2 = _payload$activity4$ch.attachmentSizes) === null || _payload$activity4$ch2 === void 0 ? void 0 : _payload$activity4$ch2.length)) {
141
120
  return next(validateAttachment(action, allowedFileExtensions, maxUploadFileSize, localizedTexts));
142
121
  }
143
122
  }
144
-
145
123
  return next(action);
146
124
  };
147
125
  };
148
-
149
126
  export default createAttachmentUploadValidatorMiddleware;
@@ -3,26 +3,25 @@
3
3
  *
4
4
  * Adds necessary tags if not present so that the rendering middlewares can process them later.
5
5
  ******/
6
+
6
7
  import { Constants } from "../../../../../common/Constants";
7
8
  import { DeliveryMode } from "@microsoft/omnichannel-chat-sdk";
8
- import { WebChatActionType } from "../../enums/WebChatActionType"; // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars
9
+ import { WebChatActionType } from "../../enums/WebChatActionType";
9
10
 
11
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars
10
12
  const channelDataMiddleware = _ref => {
11
13
  let {
12
14
  dispatch
13
15
  } = _ref;
14
16
  return next => action => {
15
17
  var _action$payload, _action$payload$activ;
16
-
17
18
  if ((action === null || action === void 0 ? void 0 : action.type) === WebChatActionType.DIRECT_LINE_POST_ACTIVITY_PENDING && action !== null && action !== void 0 && (_action$payload = action.payload) !== null && _action$payload !== void 0 && (_action$payload$activ = _action$payload.activity) !== null && _action$payload$activ !== void 0 && _action$payload$activ.channelData) {
18
19
  const channelIdTag = `${Constants.channelIdKey}${Constants.ChannelId}`;
19
20
  const customerMessageTag = `${Constants.CustomerTag}`;
20
-
21
21
  if (action.payload.activity.channelData.tags) {
22
22
  if (!action.payload.activity.channelData.tags.includes(channelIdTag)) {
23
23
  action.payload.activity.channelData.tags.push(channelIdTag);
24
24
  }
25
-
26
25
  if (!action.payload.activity.channelData.tags.includes(customerMessageTag)) {
27
26
  action.payload.activity.channelData.tags.push(customerMessageTag);
28
27
  }
@@ -30,14 +29,11 @@ const channelDataMiddleware = _ref => {
30
29
  action.payload.activity.channelData.tags = [channelIdTag];
31
30
  action.payload.activity.channelData.tags.push(customerMessageTag);
32
31
  }
33
-
34
32
  action.payload.activity.channelData.metadata = {
35
33
  deliveryMode: DeliveryMode.Bridged
36
34
  };
37
35
  }
38
-
39
36
  return next(action);
40
37
  };
41
38
  };
42
-
43
39
  export default channelDataMiddleware;
@@ -4,42 +4,37 @@
4
4
  * This middleware is invoked when the conversation is ended by the agent/bot.
5
5
  * The callback is then invoked to hide the send box (by default).
6
6
  ******/
7
+
7
8
  import { Constants } from "../../../../../common/Constants";
8
9
  import { DirectLineSenderRole } from "../../enums/DirectLineSenderRole";
9
10
  import { MessageTypes } from "../../enums/MessageType";
10
- import { WebChatActionType } from "../../enums/WebChatActionType"; // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars
11
+ import { WebChatActionType } from "../../enums/WebChatActionType";
11
12
 
13
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars
12
14
  const createConversationEndMiddleware = conversationEndCallback => _ref => {
13
15
  let {
14
16
  dispatch
15
17
  } = _ref;
16
18
  return next => action => {
17
19
  var _action$payload;
18
-
19
20
  if ((action === null || action === void 0 ? void 0 : action.type) == WebChatActionType.DIRECT_LINE_INCOMING_ACTIVITY && (_action$payload = action.payload) !== null && _action$payload !== void 0 && _action$payload.activity) {
20
21
  var _activity$from, _activity$from2, _activity$channelData7, _activity$channelData8;
21
-
22
22
  const activity = action.payload.activity;
23
-
24
23
  if (((_activity$from = activity.from) === null || _activity$from === void 0 ? void 0 : _activity$from.role) === DirectLineSenderRole.Bot && activity.channelId === "ACS_CHANNEL") {
25
24
  var _activity$channelData, _activity$channelData2, _activity$channelData3, _activity$channelData4, _activity$channelData5, _activity$channelData6;
26
-
27
25
  // ACS
28
26
  if ((_activity$channelData = activity.channelData) !== null && _activity$channelData !== void 0 && (_activity$channelData2 = _activity$channelData.tags) !== null && _activity$channelData2 !== void 0 && _activity$channelData2.includes(Constants.systemMessageTag) && ((_activity$channelData3 = activity.channelData) !== null && _activity$channelData3 !== void 0 && (_activity$channelData4 = _activity$channelData3.tags) !== null && _activity$channelData4 !== void 0 && _activity$channelData4.includes(Constants.agentEndConversationMessageTag) || (_activity$channelData5 = activity.channelData) !== null && _activity$channelData5 !== void 0 && (_activity$channelData6 = _activity$channelData5.tags) !== null && _activity$channelData6 !== void 0 && _activity$channelData6.includes(Constants.supervisorForceCloseMessageTag))) {
29
27
  conversationEndCallback();
30
28
  }
31
29
  } else if (((_activity$from2 = activity.from) === null || _activity$from2 === void 0 ? void 0 : _activity$from2.role) === DirectLineSenderRole.Channel && ((_activity$channelData7 = activity.channelData) === null || _activity$channelData7 === void 0 ? void 0 : _activity$channelData7.type) === MessageTypes.Thread && (_activity$channelData8 = activity.channelData) !== null && _activity$channelData8 !== void 0 && _activity$channelData8.properties) {
32
30
  var _activity$channelData9, _activity$channelData10, _activity$channelData11, _activity$channelData12;
33
-
34
31
  // IC3
35
32
  if (((_activity$channelData9 = activity.channelData) === null || _activity$channelData9 === void 0 ? void 0 : (_activity$channelData10 = _activity$channelData9.properties) === null || _activity$channelData10 === void 0 ? void 0 : _activity$channelData10.isdeleted) === Constants.truePascal || !((_activity$channelData11 = activity.channelData) !== null && _activity$channelData11 !== void 0 && (_activity$channelData12 = _activity$channelData11.properties) !== null && _activity$channelData12 !== void 0 && _activity$channelData12.containsExternalEntitiesListeningAll)) {
36
33
  conversationEndCallback();
37
34
  }
38
35
  }
39
36
  }
40
-
41
37
  return next(action);
42
38
  };
43
39
  };
44
-
45
40
  export default createConversationEndMiddleware;
@@ -3,18 +3,16 @@
3
3
  *
4
4
  * Applies data masking rules that Omnichannel Admin has configured.
5
5
  ******/
6
+
6
7
  import { LogLevel, TelemetryEvent } from "../../../../../common/telemetry/TelemetryConstants";
7
8
  import { TelemetryHelper } from "../../../../../common/telemetry/TelemetryHelper";
8
9
  import { WebChatActionType } from "../../enums/WebChatActionType";
9
10
  import { isMaskingforCustomer } from "../../../common/utils/isMaskingFromCustomer";
10
-
11
11
  const applyDataMasking = (action, regexCollection) => {
12
12
  const maskedChar = "#"; //to do: load from env once OC SDK supporting.
13
-
14
13
  let {
15
14
  text
16
15
  } = action.payload;
17
-
18
16
  if (!regexCollection) {
19
17
  TelemetryHelper.logActionEvent(LogLevel.ERROR, {
20
18
  Event: TelemetryEvent.InvalidConfiguration,
@@ -24,22 +22,26 @@ const applyDataMasking = (action, regexCollection) => {
24
22
  });
25
23
  return action;
26
24
  }
27
-
25
+ let isRuleMatched = false;
28
26
  for (const ruleId of Object.keys(regexCollection)) {
29
27
  const item = regexCollection[ruleId];
30
-
31
28
  if (item) {
32
29
  try {
33
30
  const regex = new RegExp(item, "gi");
34
- let match; // eslint-disable-next-line no-cond-assign
35
-
31
+ let match;
32
+ // eslint-disable-next-line no-cond-assign
36
33
  while (match = regex.exec(text)) {
37
34
  const replaceStr = match[0].replace(/./gi, maskedChar);
38
35
  text = text.replace(match[0], replaceStr);
36
+ TelemetryHelper.logActionEvent(LogLevel.INFO, {
37
+ Event: TelemetryEvent.DataMaskingRuleApplied,
38
+ Description: `Data Masking Rule Id: ${ruleId} applied.`
39
+ });
40
+ isRuleMatched = true;
39
41
  }
40
42
  } catch (err) {
41
43
  TelemetryHelper.logActionEvent(LogLevel.ERROR, {
42
- Event: TelemetryEvent.DataMaskingRuleApplied,
44
+ Event: TelemetryEvent.DataMaskingRuleApplyFailed,
43
45
  ExceptionDetails: {
44
46
  RuleId: ruleId,
45
47
  Exception: err
@@ -47,27 +49,28 @@ const applyDataMasking = (action, regexCollection) => {
47
49
  });
48
50
  }
49
51
  }
50
- }
51
52
 
53
+ // Exit if rule matched
54
+ if (isRuleMatched === true) {
55
+ break;
56
+ }
57
+ }
52
58
  action.payload.text = text;
53
59
  return action;
54
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars
55
-
60
+ };
56
61
 
62
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars
57
63
  const createDataMaskingMiddleware = dataMaskingInfo => _ref => {
58
64
  let {
59
65
  dispatch
60
66
  } = _ref;
61
67
  return next => action => {
62
68
  var _action$payload;
63
-
64
69
  if (isMaskingforCustomer(dataMaskingInfo) && (_action$payload = action.payload) !== null && _action$payload !== void 0 && _action$payload.text && action.type === WebChatActionType.WEB_CHAT_SEND_MESSAGE) {
65
70
  const regexCollection = dataMaskingInfo === null || dataMaskingInfo === void 0 ? void 0 : dataMaskingInfo.dataMaskingRules;
66
71
  return next(applyDataMasking(action, regexCollection));
67
72
  }
68
-
69
73
  return next(action);
70
74
  };
71
75
  };
72
-
73
76
  export default createDataMaskingMiddleware;
@@ -3,9 +3,11 @@
3
3
  *
4
4
  * Ensures that GIF are properly uploaded.
5
5
  ******/
6
+
6
7
  import { Constants } from "../../../../../common/Constants";
7
- import { WebChatActionType } from "../../enums/WebChatActionType"; // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars
8
+ import { WebChatActionType } from "../../enums/WebChatActionType";
8
9
 
10
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars
9
11
  const gifUploadMiddleware = _ref => {
10
12
  let {
11
13
  dispatch
@@ -13,16 +15,13 @@ const gifUploadMiddleware = _ref => {
13
15
  return next => action => {
14
16
  if (action.type === WebChatActionType.DIRECT_LINE_POST_ACTIVITY) {
15
17
  var _activity$attachments, _activity$channelData, _activity$channelData2;
16
-
17
18
  const {
18
19
  payload: {
19
20
  activity
20
21
  }
21
22
  } = action;
22
-
23
23
  if ((activity === null || activity === void 0 ? void 0 : (_activity$attachments = activity.attachments) === null || _activity$attachments === void 0 ? void 0 : _activity$attachments.length) === (activity === null || activity === void 0 ? void 0 : (_activity$channelData = activity.channelData) === null || _activity$channelData === void 0 ? void 0 : (_activity$channelData2 = _activity$channelData.attachmentSizes) === null || _activity$channelData2 === void 0 ? void 0 : _activity$channelData2.length)) {
24
24
  var _activity$attachments2;
25
-
26
25
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
27
26
  activity === null || activity === void 0 ? void 0 : (_activity$attachments2 = activity.attachments) === null || _activity$attachments2 === void 0 ? void 0 : _activity$attachments2.forEach(attachment => {
28
27
  const {
@@ -30,16 +29,13 @@ const gifUploadMiddleware = _ref => {
30
29
  contentUrl,
31
30
  contentType
32
31
  } = attachment;
33
-
34
32
  if (contentType === Constants.GifContentType && thumbnailUrl !== contentUrl) {
35
33
  attachment.thumbnailUrl = contentUrl;
36
34
  }
37
35
  });
38
36
  }
39
37
  }
40
-
41
38
  return next(action);
42
39
  };
43
40
  };
44
-
45
41
  export default gifUploadMiddleware;
@@ -3,14 +3,13 @@
3
3
  *
4
4
  * Ensures that video/audio attachment are properly rendered.
5
5
  ******/
6
+
6
7
  import { Constants } from "../../../../../common/Constants";
7
8
  import { WebChatActionType } from "../../enums/WebChatActionType";
8
-
9
9
  const disableHTMLPlayerDownloadButton = htmlTag => {
10
10
  setTimeout(() => {
11
11
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
12
12
  const elements = document.getElementsByTagName(htmlTag);
13
-
14
13
  for (let index = 0; index < elements.length; index++) {
15
14
  if (!elements[index].getAttribute(Constants.controlsList)) {
16
15
  elements[index].setAttribute(Constants.controlsList, Constants.nodownload);
@@ -22,23 +21,20 @@ const disableHTMLPlayerDownloadButton = htmlTag => {
22
21
  }
23
22
  }
24
23
  }, 500);
25
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars
26
-
24
+ };
27
25
 
26
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars
28
27
  const htmlPlayerMiddleware = _ref => {
29
28
  let {
30
29
  dispatch
31
30
  } = _ref;
32
31
  return next => action => {
33
32
  var _action$payload, _action$payload$activ, _action$payload$activ2;
34
-
35
33
  if (action.type === WebChatActionType.DIRECT_LINE_INCOMING_ACTIVITY && ((_action$payload = action.payload) === null || _action$payload === void 0 ? void 0 : (_action$payload$activ = _action$payload.activity) === null || _action$payload$activ === void 0 ? void 0 : (_action$payload$activ2 = _action$payload$activ.attachments) === null || _action$payload$activ2 === void 0 ? void 0 : _action$payload$activ2.length) > 0) {
36
34
  disableHTMLPlayerDownloadButton(Constants.video);
37
35
  disableHTMLPlayerDownloadButton(Constants.audio);
38
36
  }
39
-
40
37
  return next(action);
41
38
  };
42
39
  };
43
-
44
40
  export default htmlPlayerMiddleware;
@@ -3,16 +3,17 @@
3
3
  *
4
4
  * Ensures that links within messages are processed so that the caller website cannot be traced.
5
5
  ******/
6
+
6
7
  import { Constants, HtmlAttributeNames } from "../../../../../common/Constants";
7
8
  import DOMPurify from "dompurify";
8
9
  import { WebChatActionType } from "../../enums/WebChatActionType";
9
10
  import { TelemetryHelper } from "../../../../../common/telemetry/TelemetryHelper";
10
- import { LogLevel, TelemetryEvent } from "../../../../../common/telemetry/TelemetryConstants"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
11
+ import { LogLevel, TelemetryEvent } from "../../../../../common/telemetry/TelemetryConstants";
11
12
 
13
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
12
14
  const convertTextToHtmlNode = text => {
13
15
  if (!text) return "";
14
16
  const element = document.createElement(HtmlAttributeNames.div);
15
-
16
17
  try {
17
18
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
18
19
  text = DOMPurify.sanitize(text);
@@ -27,56 +28,50 @@ const convertTextToHtmlNode = text => {
27
28
  }
28
29
  });
29
30
  }
30
-
31
31
  return element;
32
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
33
-
32
+ };
34
33
 
34
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
35
35
  const processHTMLText = (action, text) => {
36
36
  const htmlNode = convertTextToHtmlNode(text);
37
37
  const aNodes = htmlNode.getElementsByTagName(HtmlAttributeNames.aTagName);
38
-
39
38
  if ((aNodes === null || aNodes === void 0 ? void 0 : aNodes.length) > 0) {
40
39
  try {
41
40
  for (let index = 0; index < aNodes.length; index++) {
42
41
  var _aNode$tagName;
43
-
44
- const aNode = aNodes[index]; // Skip if the node is not valid or the node's tag name is not equal to 'a', or the node href is empty.
45
-
42
+ const aNode = aNodes[index];
43
+ // Skip if the node is not valid or the node's tag name is not equal to 'a', or the node href is empty.
46
44
  if (((_aNode$tagName = aNode.tagName) === null || _aNode$tagName === void 0 ? void 0 : _aNode$tagName.toLowerCase()) !== HtmlAttributeNames.aTagName || !aNode.href) {
47
45
  continue;
48
- } // Add target to 'a' node if target is missing or does not equal to blank
49
-
46
+ }
50
47
 
48
+ // Add target to 'a' node if target is missing or does not equal to blank
51
49
  if (!aNode.target || aNode.target !== Constants.blank) {
52
50
  aNode.target = Constants.blank;
53
- } // If rel is missing or rel does not include noopener and noreferrer, add them
54
-
51
+ }
55
52
 
53
+ // If rel is missing or rel does not include noopener and noreferrer, add them
56
54
  if (!aNode.rel) {
57
55
  aNode.rel = `${HtmlAttributeNames.noopenerTag} ${HtmlAttributeNames.noreferrerTag}`;
58
56
  } else {
59
57
  if (aNode.rel.indexOf(HtmlAttributeNames.noopenerTag) === -1) {
60
58
  aNode.rel += ` ${HtmlAttributeNames.noopenerTag}`;
61
59
  }
62
-
63
60
  if (aNode.rel.indexOf(HtmlAttributeNames.noreferrerTag) === -1) {
64
61
  aNode.rel += ` ${HtmlAttributeNames.noreferrerTag}`;
65
62
  }
66
63
  }
67
- } // eslint-disable-next-line @typescript-eslint/no-explicit-any
68
-
64
+ }
69
65
 
66
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
70
67
  action = window.simpleUpdateIn(action, [Constants.payload, Constants.activity, Constants.text], () => htmlNode.innerHTML);
71
68
  } catch (e) {
72
69
  let errorMessage = "Failed to apply action: ";
73
-
74
70
  try {
75
71
  errorMessage += JSON.stringify(action);
76
72
  } catch (e) {
77
73
  errorMessage += " (unable to stringify action)";
78
74
  }
79
-
80
75
  TelemetryHelper.logActionEvent(LogLevel.ERROR, {
81
76
  Event: TelemetryEvent.ProcessingHTMLTextMiddlewareFailed,
82
77
  ExceptionDetails: {
@@ -86,11 +81,10 @@ const processHTMLText = (action, text) => {
86
81
  });
87
82
  }
88
83
  }
89
-
90
84
  return action;
91
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars
92
-
85
+ };
93
86
 
87
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars
94
88
  const htmlTextMiddleware = _ref => {
95
89
  let {
96
90
  dispatch
@@ -99,21 +93,17 @@ const htmlTextMiddleware = _ref => {
99
93
  if (action.type === WebChatActionType.DIRECT_LINE_INCOMING_ACTIVITY) {
100
94
  try {
101
95
  var _action$payload, _action$payload$activ;
102
-
103
96
  const text = (_action$payload = action.payload) === null || _action$payload === void 0 ? void 0 : (_action$payload$activ = _action$payload.activity) === null || _action$payload$activ === void 0 ? void 0 : _action$payload$activ.text;
104
-
105
97
  if (text) {
106
98
  action = processHTMLText(action, text);
107
99
  }
108
100
  } catch (e) {
109
101
  let errorMessage = "Failed to validate action.";
110
-
111
102
  try {
112
103
  errorMessage += JSON.stringify(action);
113
104
  } catch (e) {
114
105
  errorMessage += " (unable to stringify action)";
115
106
  }
116
-
117
107
  TelemetryHelper.logActionEvent(LogLevel.ERROR, {
118
108
  Event: TelemetryEvent.ProcessingHTMLTextMiddlewareFailed,
119
109
  ExceptionDetails: {
@@ -123,9 +113,7 @@ const htmlTextMiddleware = _ref => {
123
113
  });
124
114
  }
125
115
  }
126
-
127
116
  return next(action);
128
117
  };
129
118
  };
130
-
131
119
  export default htmlTextMiddleware;
@@ -3,11 +3,13 @@
3
3
  *
4
4
  * Enforces a max character limit that the sender can send to comply to Omnichannel chat services' limitation.
5
5
  ******/
6
+
6
7
  import { NotificationHandler } from "../../notification/NotificationHandler";
7
8
  import { NotificationScenarios } from "../../enums/NotificationScenarios";
8
9
  import { WebChatActionType } from "../../enums/WebChatActionType";
9
- import { WebChatMiddlewareConstants } from "../../../../../common/Constants"; // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars
10
+ import { WebChatMiddlewareConstants } from "../../../../../common/Constants";
10
11
 
12
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars
11
13
  const createMaxMessageSizeValidator = localizedTexts => _ref => {
12
14
  let {
13
15
  dispatch
@@ -15,9 +17,7 @@ const createMaxMessageSizeValidator = localizedTexts => _ref => {
15
17
  return next => action => {
16
18
  if (action.type === WebChatActionType.WEB_CHAT_SET_SEND_BOX) {
17
19
  var _action$payload, _action$payload$text;
18
-
19
20
  const textLength = ((_action$payload = action.payload) === null || _action$payload === void 0 ? void 0 : (_action$payload$text = _action$payload.text) === null || _action$payload$text === void 0 ? void 0 : _action$payload$text.length) || 0;
20
-
21
21
  if (textLength > WebChatMiddlewareConstants.maxTextLength) {
22
22
  NotificationHandler.notifyError(NotificationScenarios.MaxSizeError, localizedTexts.MIDDLEWARE_MAX_CHARACTER_COUNT_EXCEEDED);
23
23
  return next(action);
@@ -25,9 +25,7 @@ const createMaxMessageSizeValidator = localizedTexts => _ref => {
25
25
  NotificationHandler.dismissNotification(NotificationScenarios.MaxSizeError);
26
26
  }
27
27
  }
28
-
29
28
  return next(action);
30
29
  };
31
30
  };
32
-
33
31
  export default createMaxMessageSizeValidator;
@@ -3,9 +3,11 @@
3
3
  *
4
4
  * Adds necessary fields for the activity for the other middlewares to function as expected.
5
5
  ******/
6
+
6
7
  import { Constants } from "../../../../../common/Constants";
7
- import { WebChatActionType } from "../../enums/WebChatActionType"; // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
8
+ import { WebChatActionType } from "../../enums/WebChatActionType";
8
9
 
10
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
9
11
  const preProcessingMiddleware = _ref => {
10
12
  let {
11
13
  dispatch
@@ -15,30 +17,28 @@ const preProcessingMiddleware = _ref => {
15
17
  const {
16
18
  activity
17
19
  } = action.payload;
18
-
19
20
  if (!activity.from || activity.from.role === Constants.userMessageTag) {
20
- action = { ...action,
21
- payload: { ...action.payload,
22
- activity: { ...action.payload.activity,
21
+ action = {
22
+ ...action,
23
+ payload: {
24
+ ...action.payload,
25
+ activity: {
26
+ ...action.payload.activity,
23
27
  textFormat: Constants.markdown
24
28
  }
25
29
  }
26
30
  };
27
31
  }
28
32
  }
29
-
30
33
  if (action.type === WebChatActionType.DIRECT_LINE_INCOMING_ACTIVITY) {
31
34
  const {
32
35
  activity
33
36
  } = action.payload;
34
-
35
37
  if (activity) {
36
38
  action.payload.activity[Constants.actionType] = WebChatActionType.DIRECT_LINE_INCOMING_ACTIVITY;
37
39
  }
38
40
  }
39
-
40
41
  return next(action);
41
42
  };
42
43
  };
43
-
44
44
  export default preProcessingMiddleware;