@microsoft/omnichannel-chat-widget 0.1.0-main.07a2a56 → 0.1.0-main.0c0fd47

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 (259) hide show
  1. package/lib/cjs/assets/Icons.js +4 -2
  2. package/lib/cjs/common/Constants.js +20 -169
  3. package/lib/cjs/common/KeyCodes.js +3 -4
  4. package/lib/cjs/common/contextDataStore/DataStoreManager.js +3 -5
  5. package/lib/cjs/common/storage/default/defaultCacheManager.js +3 -11
  6. package/lib/cjs/common/storage/default/defaultClientDataStoreProvider.js +4 -16
  7. package/lib/cjs/common/storage/default/defaultInMemoryDataStore.js +2 -10
  8. package/lib/cjs/common/telemetry/TelemetryConstants.js +15 -23
  9. package/lib/cjs/common/telemetry/TelemetryHelper.js +19 -58
  10. package/lib/cjs/common/telemetry/TelemetryManager.js +3 -32
  11. package/lib/cjs/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +0 -2
  12. package/lib/cjs/common/telemetry/loggers/ariaTelemetryLogger.js +2 -21
  13. package/lib/cjs/common/telemetry/loggers/consoleLogger.js +0 -9
  14. package/lib/cjs/common/utils.js +18 -105
  15. package/lib/cjs/components/callingcontainerstateful/CallingContainerStateful.js +8 -46
  16. package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +2 -24
  17. package/lib/cjs/components/chatbuttonstateful/common/styleProps/defaultOutOfOfficeChatButtonStyleProps.js +3 -0
  18. package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +4 -28
  19. package/lib/cjs/components/dimlayer/DimLayer.js +0 -4
  20. package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +4 -32
  21. package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.spec.js +6 -8
  22. package/lib/cjs/components/footerstateful/FooterStateful.js +6 -29
  23. package/lib/cjs/components/footerstateful/audionotificationstateful/AudioNotificationStateful.js +0 -6
  24. package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +7 -45
  25. package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.spec.js +6 -8
  26. package/lib/cjs/components/headerstateful/HeaderStateful.js +7 -28
  27. package/lib/cjs/components/livechatwidget/LiveChatWidget.js +2 -14
  28. package/lib/cjs/components/livechatwidget/common/ActivityStreamHandler.js +5 -10
  29. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +3 -6
  30. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +7 -12
  31. package/lib/cjs/components/livechatwidget/common/ChatAdapterShim.js +14 -20
  32. package/lib/cjs/components/livechatwidget/common/Deferred.js +6 -11
  33. package/lib/cjs/components/livechatwidget/common/authHelper.js +4 -19
  34. package/lib/cjs/components/livechatwidget/common/createAdapter.js +2 -13
  35. package/lib/cjs/components/livechatwidget/common/createFooter.js +0 -10
  36. package/lib/cjs/components/livechatwidget/common/createInternetConnectionChangeHandler.js +2 -14
  37. package/lib/cjs/components/livechatwidget/common/createMarkdown.js +16 -24
  38. package/lib/cjs/components/livechatwidget/common/defaultProps/defaultScrollBarProps.js +14 -0
  39. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +60 -26
  40. package/lib/cjs/components/livechatwidget/common/disposeTelemetryLoggers.js +0 -3
  41. package/lib/cjs/components/livechatwidget/common/endChat.js +50 -35
  42. package/lib/cjs/components/livechatwidget/common/getGeneralStylesForButton.js +0 -6
  43. package/lib/cjs/components/livechatwidget/common/initCallingSdk.js +0 -8
  44. package/lib/cjs/components/livechatwidget/common/initConfirmationPropsComposer.js +4 -8
  45. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +16 -54
  46. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +78 -151
  47. package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +4 -17
  48. package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +2 -11
  49. package/lib/cjs/components/livechatwidget/common/shareObservable.js +4 -8
  50. package/lib/cjs/components/livechatwidget/common/startChat.js +141 -112
  51. package/lib/cjs/components/livechatwidget/common/startProactiveChat.js +0 -8
  52. package/lib/cjs/components/livechatwidget/common/updateSessionDataForTelemetry.js +2 -11
  53. package/lib/cjs/components/livechatwidget/interfaces/IScrollBarProps.js +1 -0
  54. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +201 -256
  55. package/lib/cjs/components/loadingpanestateful/LoadingPaneStateful.js +19 -19
  56. package/lib/cjs/components/loadingpanestateful/common/errorUIStyleProps/errorUILoadingPaneStyleProps.js +57 -0
  57. package/lib/cjs/components/ooohpanestateful/OOOHPaneStateful.js +4 -17
  58. package/lib/cjs/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +4 -17
  59. package/lib/cjs/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +27 -20
  60. package/lib/cjs/components/postchatsurveypanestateful/common/defaultStyleProps/defaultgeneralPostChatSurveyPaneStyleProps.js +1 -1
  61. package/lib/cjs/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.js +13 -0
  62. package/lib/cjs/components/postchatsurveypanestateful/enums/PostChatSurveyMode.js +0 -1
  63. package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +9 -37
  64. package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +2 -32
  65. package/lib/cjs/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +6 -24
  66. package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +3 -36
  67. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +0 -7
  68. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatStatefulProps.js +2 -6
  69. package/lib/cjs/components/webchatcontainerstateful/common/mockadapter.js +12 -27
  70. package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +5 -18
  71. package/lib/cjs/components/webchatcontainerstateful/common/utils/BrowserInfo.js +2 -24
  72. package/lib/cjs/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +3 -15
  73. package/lib/cjs/components/webchatcontainerstateful/common/utils/isMaskingFromCustomer.js +5 -8
  74. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +3 -5
  75. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/WebChatStoreLoader.js +3 -5
  76. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/BrowserVendor.js +0 -1
  77. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineActivityType.js +0 -1
  78. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineSenderRole.js +0 -1
  79. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/MessageType.js +0 -1
  80. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/NotificationLevel.js +0 -1
  81. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios.js +0 -1
  82. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/SendStatus.js +0 -1
  83. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/WebChatActionType.js +0 -1
  84. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsEgressMiddleware.js +0 -7
  85. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsIngressMiddleware.js +0 -5
  86. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +17 -41
  87. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +8 -19
  88. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +23 -60
  89. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.js +7 -15
  90. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +2 -13
  91. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +0 -16
  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/groupActivitiesMiddleware.js +3 -9
  95. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +2 -30
  96. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +7 -18
  97. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +6 -28
  98. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +2 -11
  99. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +13 -30
  100. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +3 -9
  101. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +6 -34
  102. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +1 -10
  103. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +1 -12
  104. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +17 -19
  105. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.js +1 -9
  106. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.js +3 -9
  107. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.js +13 -34
  108. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.js +1 -10
  109. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.js +7 -11
  110. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.js +5 -14
  111. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +1 -21
  112. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +0 -12
  113. package/lib/cjs/contexts/ChatAdapterStore.js +0 -2
  114. package/lib/cjs/contexts/ChatContextStore.js +0 -2
  115. package/lib/cjs/contexts/ChatSDKStore.js +0 -2
  116. package/lib/cjs/contexts/common/ConversationState.js +0 -1
  117. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +29 -28
  118. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +2 -10
  119. package/lib/cjs/contexts/createReducer.js +152 -106
  120. package/lib/cjs/controller/componentController.js +2 -31
  121. package/lib/cjs/hooks/useChatAdapterStore.js +0 -6
  122. package/lib/cjs/hooks/useChatContextStore.js +0 -6
  123. package/lib/cjs/hooks/useChatSDKStore.js +0 -6
  124. package/lib/cjs/index.js +0 -5
  125. package/lib/cjs/plugins/newMessageEventHandler.js +15 -36
  126. package/lib/esm/assets/Icons.js +2 -1
  127. package/lib/esm/common/Constants.js +17 -156
  128. package/lib/esm/common/KeyCodes.js +3 -3
  129. package/lib/esm/common/contextDataStore/DataStoreManager.js +3 -3
  130. package/lib/esm/common/storage/default/defaultCacheManager.js +3 -4
  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 +19 -20
  134. package/lib/esm/common/telemetry/TelemetryHelper.js +19 -46
  135. package/lib/esm/common/telemetry/TelemetryManager.js +3 -19
  136. package/lib/esm/common/telemetry/loggers/ariaTelemetryLogger.js +2 -14
  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 +6 -9
  143. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +4 -11
  144. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.spec.js +6 -6
  145. package/lib/esm/components/footerstateful/FooterStateful.js +8 -10
  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 +7 -13
  149. package/lib/esm/components/livechatwidget/LiveChatWidget.js +2 -2
  150. package/lib/esm/components/livechatwidget/common/ActivityStreamHandler.js +5 -7
  151. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +3 -4
  152. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +7 -9
  153. package/lib/esm/components/livechatwidget/common/ChatAdapterShim.js +14 -16
  154. package/lib/esm/components/livechatwidget/common/Deferred.js +6 -9
  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 +62 -13
  162. package/lib/esm/components/livechatwidget/common/endChat.js +52 -20
  163. package/lib/esm/components/livechatwidget/common/getGeneralStylesForButton.js +0 -2
  164. package/lib/esm/components/livechatwidget/common/initCallingSdk.js +2 -2
  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 +77 -131
  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 +141 -84
  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 +19 -7
  176. package/lib/esm/components/loadingpanestateful/common/errorUIStyleProps/errorUILoadingPaneStyleProps.js +50 -0
  177. package/lib/esm/components/ooohpanestateful/OOOHPaneStateful.js +4 -5
  178. package/lib/esm/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +4 -5
  179. package/lib/esm/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +27 -7
  180. package/lib/esm/components/postchatsurveypanestateful/common/defaultStyleProps/defaultgeneralPostChatSurveyPaneStyleProps.js +1 -1
  181. package/lib/esm/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.js +6 -0
  182. package/lib/esm/components/postchatsurveypanestateful/enums/PostChatSurveyMode.js +0 -1
  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 +3 -8
  187. package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultWebChatStatefulProps.js +2 -2
  188. package/lib/esm/components/webchatcontainerstateful/common/mockadapter.js +12 -19
  189. package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +5 -14
  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 +3 -3
  194. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/WebChatStoreLoader.js +3 -3
  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/defaultTimestampFailedStyles.js +2 -1
  212. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampRetryStyles.js +2 -1
  213. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware.js +3 -7
  214. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +4 -28
  215. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +8 -9
  216. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +7 -14
  217. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +3 -3
  218. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +15 -19
  219. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +5 -8
  220. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +6 -29
  221. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +3 -7
  222. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +3 -8
  223. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +17 -14
  224. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.js +3 -7
  225. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.js +3 -7
  226. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.js +15 -27
  227. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.js +3 -5
  228. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.js +9 -9
  229. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.js +7 -9
  230. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +1 -13
  231. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +0 -5
  232. package/lib/esm/contexts/ChatAdapterStore.js +2 -1
  233. package/lib/esm/contexts/ChatContextStore.js +2 -1
  234. package/lib/esm/contexts/ChatSDKStore.js +2 -1
  235. package/lib/esm/contexts/common/ConversationState.js +0 -1
  236. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +29 -28
  237. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +2 -4
  238. package/lib/esm/contexts/createReducer.js +152 -103
  239. package/lib/esm/controller/componentController.js +3 -2
  240. package/lib/esm/hooks/useChatAdapterStore.js +0 -4
  241. package/lib/esm/hooks/useChatContextStore.js +0 -4
  242. package/lib/esm/hooks/useChatSDKStore.js +0 -4
  243. package/lib/esm/plugins/newMessageEventHandler.js +15 -26
  244. package/lib/types/assets/Icons.d.ts +1 -0
  245. package/lib/types/common/Constants.d.ts +12 -0
  246. package/lib/types/common/telemetry/TelemetryConstants.d.ts +11 -4
  247. package/lib/types/common/telemetry/definitions/Contracts.d.ts +2 -4
  248. package/lib/types/components/livechatwidget/common/defaultProps/defaultScrollBarProps.d.ts +2 -0
  249. package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +5 -7
  250. package/lib/types/components/livechatwidget/common/startChat.d.ts +3 -2
  251. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetControlProps.d.ts +1 -1
  252. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +2 -0
  253. package/lib/types/components/livechatwidget/interfaces/IScrollBarProps.d.ts +22 -0
  254. package/lib/types/components/loadingpanestateful/common/errorUIStyleProps/errorUILoadingPaneStyleProps.d.ts +2 -0
  255. package/lib/types/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.d.ts +5 -0
  256. package/lib/types/components/reconnectchatpanestateful/interfaces/IReconnectChatPaneStatefulProps.d.ts +0 -1
  257. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +2 -1
  258. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +29 -27
  259. package/package.json +3 -3
@@ -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;
@@ -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;