@microsoft/omnichannel-chat-widget 0.1.0-main.dbc1afa → 0.1.0-main.dee03a3

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 (310) hide show
  1. package/README.md +32 -0
  2. package/lib/cjs/assets/Icons.js +4 -2
  3. package/lib/cjs/common/Constants.js +30 -163
  4. package/lib/cjs/common/KeyCodes.js +3 -4
  5. package/lib/cjs/common/contextDataStore/DataStoreManager.js +3 -5
  6. package/lib/cjs/common/storage/default/defaultCacheManager.js +26 -0
  7. package/lib/cjs/common/storage/default/defaultClientDataStoreProvider.js +102 -0
  8. package/lib/cjs/common/storage/default/defaultInMemoryDataStore.js +78 -0
  9. package/lib/cjs/common/telemetry/TelemetryConstants.js +48 -25
  10. package/lib/cjs/common/telemetry/TelemetryHelper.js +19 -58
  11. package/lib/cjs/common/telemetry/TelemetryManager.js +3 -32
  12. package/lib/cjs/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +0 -2
  13. package/lib/cjs/common/telemetry/loggers/ariaTelemetryLogger.js +30 -36
  14. package/lib/cjs/common/telemetry/loggers/consoleLogger.js +0 -9
  15. package/lib/cjs/common/utils.js +65 -93
  16. package/lib/cjs/components/callingcontainerstateful/CallingContainerStateful.js +8 -46
  17. package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +19 -25
  18. package/lib/cjs/components/chatbuttonstateful/common/styleProps/defaultOutOfOfficeChatButtonStyleProps.js +3 -0
  19. package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +8 -33
  20. package/lib/cjs/components/dimlayer/DimLayer.js +0 -4
  21. package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +9 -37
  22. package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.spec.js +6 -8
  23. package/lib/cjs/components/footerstateful/FooterStateful.js +11 -42
  24. package/lib/cjs/components/footerstateful/audionotificationstateful/AudioNotificationStateful.js +0 -6
  25. package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +14 -43
  26. package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.spec.js +6 -8
  27. package/lib/cjs/components/headerstateful/HeaderStateful.js +20 -32
  28. package/lib/cjs/components/livechatwidget/LiveChatWidget.js +2 -14
  29. package/lib/cjs/components/livechatwidget/common/ActivityStreamHandler.js +39 -0
  30. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +20 -0
  31. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.js +1 -0
  32. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +34 -0
  33. package/lib/cjs/components/livechatwidget/common/ChatAdapterShim.js +64 -0
  34. package/lib/cjs/components/livechatwidget/common/Deferred.js +37 -0
  35. package/lib/cjs/components/livechatwidget/common/authHelper.js +50 -0
  36. package/lib/cjs/components/livechatwidget/common/createAdapter.js +10 -9
  37. package/lib/cjs/components/livechatwidget/common/createFooter.js +4 -23
  38. package/lib/cjs/components/livechatwidget/common/createInternetConnectionChangeHandler.js +10 -10
  39. package/lib/cjs/components/livechatwidget/common/createMarkdown.js +36 -43
  40. package/lib/cjs/components/livechatwidget/common/defaultProps/defaultScrollBarProps.js +14 -0
  41. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +125 -47
  42. package/lib/cjs/components/livechatwidget/common/disposeTelemetryLoggers.js +0 -3
  43. package/lib/cjs/components/livechatwidget/common/endChat.js +95 -48
  44. package/lib/cjs/components/livechatwidget/common/getGeneralStylesForButton.js +0 -6
  45. package/lib/cjs/components/livechatwidget/common/initCallingSdk.js +7 -16
  46. package/lib/cjs/components/livechatwidget/common/initConfirmationPropsComposer.js +4 -8
  47. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +32 -53
  48. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +76 -129
  49. package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +4 -17
  50. package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +2 -15
  51. package/lib/cjs/components/livechatwidget/common/shareObservable.js +41 -0
  52. package/lib/cjs/components/livechatwidget/common/startChat.js +230 -126
  53. package/lib/cjs/components/livechatwidget/common/startProactiveChat.js +0 -8
  54. package/lib/cjs/components/livechatwidget/common/updateSessionDataForTelemetry.js +2 -11
  55. package/lib/cjs/components/livechatwidget/interfaces/IScrollBarProps.js +1 -0
  56. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +315 -205
  57. package/lib/cjs/components/loadingpanestateful/LoadingPaneStateful.js +19 -19
  58. package/lib/cjs/components/loadingpanestateful/common/errorUIStyleProps/errorUILoadingPaneStyleProps.js +57 -0
  59. package/lib/cjs/components/ooohpanestateful/OOOHPaneStateful.js +4 -17
  60. package/lib/cjs/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +4 -17
  61. package/lib/cjs/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +32 -23
  62. package/lib/cjs/components/postchatsurveypanestateful/common/defaultStyleProps/defaultgeneralPostChatSurveyPaneStyleProps.js +1 -1
  63. package/lib/cjs/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.js +13 -0
  64. package/lib/cjs/components/postchatsurveypanestateful/enums/PostChatSurveyMode.js +0 -1
  65. package/lib/cjs/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.js +1 -0
  66. package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +10 -42
  67. package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +19 -33
  68. package/lib/cjs/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +6 -24
  69. package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +94 -19
  70. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +3 -7
  71. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatStatefulProps.js +2 -6
  72. package/lib/cjs/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +11 -0
  73. package/lib/cjs/components/webchatcontainerstateful/common/mockadapter.js +12 -27
  74. package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +6 -17
  75. package/lib/cjs/components/webchatcontainerstateful/common/utils/BrowserInfo.js +2 -24
  76. package/lib/cjs/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +5 -15
  77. package/lib/cjs/components/webchatcontainerstateful/common/utils/isMaskingFromCustomer.js +5 -8
  78. package/lib/cjs/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.js +1 -0
  79. package/lib/cjs/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.js +1 -0
  80. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +12 -0
  81. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/WebChatStoreLoader.js +3 -5
  82. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/BrowserVendor.js +0 -1
  83. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineActivityType.js +0 -1
  84. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineSenderRole.js +0 -1
  85. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/MessageType.js +0 -1
  86. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/NotificationLevel.js +0 -1
  87. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios.js +0 -1
  88. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/SendStatus.js +0 -1
  89. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/WebChatActionType.js +0 -1
  90. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsEgressMiddleware.js +0 -7
  91. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsIngressMiddleware.js +0 -5
  92. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +27 -37
  93. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +10 -22
  94. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +25 -61
  95. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.js +7 -15
  96. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +41 -0
  97. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +82 -0
  98. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +10 -0
  99. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.js +10 -0
  100. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampFailedStyles.js +2 -3
  101. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampRetryStyles.js +2 -3
  102. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.js +10 -0
  103. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware.js +3 -9
  104. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +89 -0
  105. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +7 -18
  106. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +8 -42
  107. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +4 -22
  108. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +13 -30
  109. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +3 -9
  110. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +6 -34
  111. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +1 -10
  112. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +1 -12
  113. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +17 -19
  114. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.js +1 -9
  115. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.js +3 -9
  116. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.js +13 -34
  117. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.js +1 -10
  118. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.js +7 -11
  119. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.js +5 -14
  120. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +1 -21
  121. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +0 -12
  122. package/lib/cjs/contexts/ChatAdapterStore.js +0 -2
  123. package/lib/cjs/contexts/ChatContextStore.js +0 -2
  124. package/lib/cjs/contexts/ChatSDKStore.js +0 -2
  125. package/lib/cjs/contexts/common/ConversationState.js +3 -3
  126. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +30 -26
  127. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +13 -13
  128. package/lib/cjs/contexts/createReducer.js +164 -102
  129. package/lib/cjs/controller/componentController.js +4 -33
  130. package/lib/cjs/hooks/useChatAdapterStore.js +0 -6
  131. package/lib/cjs/hooks/useChatContextStore.js +0 -6
  132. package/lib/cjs/hooks/useChatSDKStore.js +0 -6
  133. package/lib/cjs/index.js +0 -5
  134. package/lib/cjs/plugins/newMessageEventHandler.js +15 -36
  135. package/lib/esm/assets/Icons.js +2 -1
  136. package/lib/esm/common/Constants.js +27 -150
  137. package/lib/esm/common/KeyCodes.js +3 -3
  138. package/lib/esm/common/contextDataStore/DataStoreManager.js +3 -3
  139. package/lib/esm/common/storage/default/defaultCacheManager.js +18 -0
  140. package/lib/esm/common/storage/default/defaultClientDataStoreProvider.js +95 -0
  141. package/lib/esm/common/storage/default/defaultInMemoryDataStore.js +70 -0
  142. package/lib/esm/common/telemetry/TelemetryConstants.js +52 -22
  143. package/lib/esm/common/telemetry/TelemetryHelper.js +19 -46
  144. package/lib/esm/common/telemetry/TelemetryManager.js +3 -19
  145. package/lib/esm/common/telemetry/loggers/ariaTelemetryLogger.js +28 -24
  146. package/lib/esm/common/telemetry/loggers/consoleLogger.js +0 -5
  147. package/lib/esm/common/utils.js +61 -51
  148. package/lib/esm/components/callingcontainerstateful/CallingContainerStateful.js +8 -17
  149. package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +22 -12
  150. package/lib/esm/components/chatbuttonstateful/common/styleProps/defaultOutOfOfficeChatButtonStyleProps.js +3 -0
  151. package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +10 -14
  152. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +9 -16
  153. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.spec.js +6 -6
  154. package/lib/esm/components/footerstateful/FooterStateful.js +13 -23
  155. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +14 -36
  156. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.spec.js +6 -6
  157. package/lib/esm/components/headerstateful/HeaderStateful.js +20 -17
  158. package/lib/esm/components/livechatwidget/LiveChatWidget.js +2 -2
  159. package/lib/esm/components/livechatwidget/common/ActivityStreamHandler.js +32 -0
  160. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +13 -0
  161. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.js +1 -0
  162. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +27 -0
  163. package/lib/esm/components/livechatwidget/common/ChatAdapterShim.js +57 -0
  164. package/lib/esm/components/livechatwidget/common/Deferred.js +30 -0
  165. package/lib/esm/components/livechatwidget/common/authHelper.js +42 -0
  166. package/lib/esm/components/livechatwidget/common/createAdapter.js +12 -4
  167. package/lib/esm/components/livechatwidget/common/createFooter.js +4 -16
  168. package/lib/esm/components/livechatwidget/common/createInternetConnectionChangeHandler.js +10 -5
  169. package/lib/esm/components/livechatwidget/common/createMarkdown.js +38 -37
  170. package/lib/esm/components/livechatwidget/common/defaultProps/defaultScrollBarProps.js +7 -0
  171. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +126 -33
  172. package/lib/esm/components/livechatwidget/common/endChat.js +97 -32
  173. package/lib/esm/components/livechatwidget/common/getGeneralStylesForButton.js +0 -2
  174. package/lib/esm/components/livechatwidget/common/initCallingSdk.js +9 -11
  175. package/lib/esm/components/livechatwidget/common/initConfirmationPropsComposer.js +4 -5
  176. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +35 -22
  177. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +77 -111
  178. package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +4 -9
  179. package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +4 -7
  180. package/lib/esm/components/livechatwidget/common/shareObservable.js +35 -0
  181. package/lib/esm/components/livechatwidget/common/startChat.js +228 -102
  182. package/lib/esm/components/livechatwidget/common/updateSessionDataForTelemetry.js +4 -2
  183. package/lib/esm/components/livechatwidget/interfaces/IScrollBarProps.js +1 -0
  184. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +317 -148
  185. package/lib/esm/components/loadingpanestateful/LoadingPaneStateful.js +19 -7
  186. package/lib/esm/components/loadingpanestateful/common/errorUIStyleProps/errorUILoadingPaneStyleProps.js +50 -0
  187. package/lib/esm/components/ooohpanestateful/OOOHPaneStateful.js +4 -5
  188. package/lib/esm/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +4 -5
  189. package/lib/esm/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +32 -11
  190. package/lib/esm/components/postchatsurveypanestateful/common/defaultStyleProps/defaultgeneralPostChatSurveyPaneStyleProps.js +1 -1
  191. package/lib/esm/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.js +6 -0
  192. package/lib/esm/components/postchatsurveypanestateful/enums/PostChatSurveyMode.js +0 -1
  193. package/lib/esm/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.js +1 -0
  194. package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +13 -26
  195. package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +21 -9
  196. package/lib/esm/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +6 -6
  197. package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +94 -4
  198. package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +3 -1
  199. package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultWebChatStatefulProps.js +2 -2
  200. package/lib/esm/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +4 -0
  201. package/lib/esm/components/webchatcontainerstateful/common/mockadapter.js +12 -19
  202. package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +6 -13
  203. package/lib/esm/components/webchatcontainerstateful/common/utils/BrowserInfo.js +2 -16
  204. package/lib/esm/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +5 -5
  205. package/lib/esm/components/webchatcontainerstateful/common/utils/isMaskingFromCustomer.js +5 -6
  206. package/lib/esm/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.js +1 -0
  207. package/lib/esm/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.js +1 -0
  208. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +5 -0
  209. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/WebChatStoreLoader.js +3 -3
  210. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/BrowserVendor.js +0 -1
  211. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineActivityType.js +0 -1
  212. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineSenderRole.js +0 -1
  213. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/MessageType.js +0 -1
  214. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/NotificationLevel.js +0 -1
  215. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios.js +0 -1
  216. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/SendStatus.js +0 -1
  217. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/WebChatActionType.js +0 -1
  218. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsEgressMiddleware.js +2 -5
  219. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsIngressMiddleware.js +0 -4
  220. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +27 -22
  221. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +12 -14
  222. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +25 -39
  223. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.js +9 -8
  224. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +34 -0
  225. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +80 -0
  226. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +3 -0
  227. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.js +3 -0
  228. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampFailedStyles.js +2 -1
  229. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampRetryStyles.js +2 -1
  230. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.js +3 -0
  231. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware.js +3 -7
  232. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +83 -0
  233. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +8 -9
  234. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +9 -28
  235. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +5 -14
  236. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +15 -19
  237. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +5 -8
  238. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +6 -29
  239. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +3 -7
  240. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +3 -8
  241. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +17 -14
  242. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.js +3 -7
  243. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.js +3 -7
  244. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.js +15 -27
  245. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.js +3 -5
  246. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.js +9 -9
  247. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.js +7 -9
  248. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +1 -13
  249. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +0 -5
  250. package/lib/esm/contexts/ChatAdapterStore.js +2 -1
  251. package/lib/esm/contexts/ChatContextStore.js +2 -1
  252. package/lib/esm/contexts/ChatSDKStore.js +2 -1
  253. package/lib/esm/contexts/common/ConversationState.js +3 -3
  254. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +30 -26
  255. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +13 -9
  256. package/lib/esm/contexts/createReducer.js +164 -99
  257. package/lib/esm/controller/componentController.js +5 -4
  258. package/lib/esm/hooks/useChatAdapterStore.js +0 -4
  259. package/lib/esm/hooks/useChatContextStore.js +0 -4
  260. package/lib/esm/hooks/useChatSDKStore.js +0 -4
  261. package/lib/esm/plugins/newMessageEventHandler.js +15 -26
  262. package/lib/types/assets/Icons.d.ts +1 -0
  263. package/lib/types/common/Constants.d.ts +20 -0
  264. package/lib/types/common/interfaces/IContextDataStore.d.ts +1 -1
  265. package/lib/types/common/storage/default/defaultCacheManager.d.ts +4 -0
  266. package/lib/types/common/storage/default/defaultClientDataStoreProvider.d.ts +2 -0
  267. package/lib/types/common/storage/default/defaultInMemoryDataStore.d.ts +6 -0
  268. package/lib/types/common/telemetry/TelemetryConstants.d.ts +35 -7
  269. package/lib/types/common/telemetry/definitions/Contracts.d.ts +2 -4
  270. package/lib/types/common/utils.d.ts +7 -3
  271. package/lib/types/components/headerstateful/interfaces/IHeaderStatefulParams.d.ts +2 -1
  272. package/lib/types/components/livechatwidget/common/ActivityStreamHandler.d.ts +14 -0
  273. package/lib/types/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.d.ts +5 -0
  274. package/lib/types/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.d.ts +6 -0
  275. package/lib/types/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.d.ts +7 -0
  276. package/lib/types/components/livechatwidget/common/ChatAdapterShim.d.ts +7 -0
  277. package/lib/types/components/livechatwidget/common/Deferred.d.ts +9 -0
  278. package/lib/types/components/livechatwidget/common/authHelper.d.ts +5 -0
  279. package/lib/types/components/livechatwidget/common/defaultProps/defaultScrollBarProps.d.ts +2 -0
  280. package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +6 -7
  281. package/lib/types/components/livechatwidget/common/shareObservable.d.ts +1 -0
  282. package/lib/types/components/livechatwidget/common/startChat.d.ts +6 -2
  283. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetControlProps.d.ts +2 -1
  284. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +5 -2
  285. package/lib/types/components/livechatwidget/interfaces/IScrollBarProps.d.ts +22 -0
  286. package/lib/types/components/loadingpanestateful/common/errorUIStyleProps/errorUILoadingPaneStyleProps.d.ts +2 -0
  287. package/lib/types/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.d.ts +2 -2
  288. package/lib/types/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.d.ts +5 -0
  289. package/lib/types/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.d.ts +4 -0
  290. package/lib/types/components/reconnectchatpanestateful/interfaces/IReconnectChatPaneStatefulProps.d.ts +0 -2
  291. package/lib/types/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.d.ts +2 -0
  292. package/lib/types/components/webchatcontainerstateful/common/mockchatsdk.d.ts +1 -0
  293. package/lib/types/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.d.ts +4 -0
  294. package/lib/types/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.d.ts +4 -0
  295. package/lib/types/components/webchatcontainerstateful/interfaces/IRenderingMiddlewareProps.d.ts +4 -1
  296. package/lib/types/components/webchatcontainerstateful/interfaces/IWebChatContainerStatefulProps.d.ts +4 -0
  297. package/lib/types/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.d.ts +3 -0
  298. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.d.ts +1 -1
  299. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.d.ts +2 -0
  300. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.d.ts +1 -0
  301. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.d.ts +2 -0
  302. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.d.ts +3 -0
  303. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.d.ts +3 -0
  304. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.d.ts +5 -0
  305. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.d.ts +1 -1
  306. package/lib/types/contexts/common/ConversationState.d.ts +3 -2
  307. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +5 -3
  308. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +30 -25
  309. package/lib/types/contexts/common/LiveChatWidgetContextInitialState.d.ts +1 -2
  310. package/package.json +5 -4
@@ -4,67 +4,46 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = exports.EmailTranscriptPaneStateful = void 0;
7
-
8
7
  var _TelemetryConstants = require("../../common/telemetry/TelemetryConstants");
9
-
10
8
  var _react = _interopRequireWildcard(require("react"));
11
-
12
9
  var _utils = require("../../common/utils");
13
-
14
10
  var _DimLayer = require("../dimlayer/DimLayer");
15
-
16
11
  var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
17
-
18
12
  var _LiveChatWidgetActionType = require("../../contexts/common/LiveChatWidgetActionType");
19
-
20
13
  var _NotificationHandler = require("../webchatcontainerstateful/webchatcontroller/notification/NotificationHandler");
21
-
22
14
  var _NotificationScenarios = require("../webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios");
23
-
24
15
  var _Constants = require("../../common/Constants");
25
-
26
16
  var _TelemetryHelper = require("../../common/telemetry/TelemetryHelper");
27
-
28
17
  var _useChatContextStore = _interopRequireDefault(require("../../hooks/useChatContextStore"));
29
-
30
18
  var _useChatSDKStore = _interopRequireDefault(require("../../hooks/useChatSDKStore"));
31
-
32
19
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
33
-
34
20
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
35
-
36
21
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
37
-
38
22
  const EmailTranscriptPaneStateful = props => {
39
23
  var _props$controlProps;
40
-
41
24
  const initialTabIndexMap = new Map();
42
25
  let elements = [];
43
- const [state, dispatch] = (0, _useChatContextStore.default)(); // eslint-disable-next-line @typescript-eslint/no-explicit-any
44
-
26
+ const [state, dispatch] = (0, _useChatContextStore.default)();
27
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
45
28
  const chatSDK = (0, _useChatSDKStore.default)();
46
29
  const [initialEmail, setInitialEmail] = (0, _react.useState)("");
47
-
48
30
  const closeEmailTranscriptPane = () => {
49
31
  dispatch({
50
32
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_SHOW_EMAIL_TRANSCRIPT_PANE,
51
33
  payload: false
52
34
  });
53
- const previousFocused = state.appStates.previousElementOnFocusBeforeModalOpen;
54
-
55
- if (previousFocused) {
56
- (0, _utils.setFocusOnElement)(previousFocused);
35
+ const previousFocusedElementId = state.appStates.previousElementIdOnFocusBeforeModalOpen;
36
+ if (previousFocusedElementId) {
37
+ (0, _utils.setFocusOnElement)("#" + previousFocusedElementId);
57
38
  } else {
58
39
  (0, _utils.setFocusOnSendBox)();
59
40
  }
60
-
61
41
  dispatch({
62
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_PREVIOUS_FOCUSED_ELEMENT,
42
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_PREVIOUS_FOCUSED_ELEMENT_ID,
63
43
  payload: null
64
44
  });
65
45
  (0, _utils.setTabIndices)(elements, initialTabIndexMap, true);
66
46
  };
67
-
68
47
  const controlProps = {
69
48
  id: "oclcw-emailTranscriptDialogContainer",
70
49
  dir: state.domainStates.globalDir,
@@ -74,10 +53,8 @@ const EmailTranscriptPaneStateful = props => {
74
53
  emailAddress: email,
75
54
  attachmentMessage: (props === null || props === void 0 ? void 0 : props.attachmentMessage) ?? "The following attachment was uploaded during the conversation:"
76
55
  };
77
-
78
56
  try {
79
57
  await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.emailLiveChatTranscript(chatTranscriptBody));
80
-
81
58
  _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
82
59
  Event: _TelemetryConstants.TelemetryEvent.EmailTranscriptSent,
83
60
  Description: "Transcript sent to email successfully."
@@ -89,7 +66,6 @@ const EmailTranscriptPaneStateful = props => {
89
66
  exception: ex
90
67
  }
91
68
  });
92
-
93
69
  _NotificationHandler.NotificationHandler.notifyError(_NotificationScenarios.NotificationScenarios.EmailTranscriptError, (props === null || props === void 0 ? void 0 : props.bannerMessageOnError) ?? "Email transcript to " + email + " failed.");
94
70
  }
95
71
  },
@@ -98,7 +74,6 @@ const EmailTranscriptPaneStateful = props => {
98
74
  Event: _TelemetryConstants.TelemetryEvent.EmailTranscriptCancelButtonClicked,
99
75
  Description: "Email Transcript cancel button clicked."
100
76
  });
101
-
102
77
  closeEmailTranscriptPane();
103
78
  },
104
79
  checkInput: function (input) {
@@ -106,25 +81,23 @@ const EmailTranscriptPaneStateful = props => {
106
81
  },
107
82
  ...props.controlProps,
108
83
  inputInitialText: ((_props$controlProps = props.controlProps) === null || _props$controlProps === void 0 ? void 0 : _props$controlProps.inputInitialText) ?? initialEmail
109
- }; // Move focus to the first button
84
+ };
110
85
 
86
+ // Move focus to the first button
111
87
  (0, _react.useEffect)(() => {
112
88
  (0, _utils.preventFocusToMoveOutOfElement)(controlProps.id);
113
89
  const focusableElements = (0, _utils.findAllFocusableElement)(`#${controlProps.id}`);
114
-
115
90
  if (focusableElements) {
116
91
  focusableElements[0].focus();
117
92
  }
118
-
119
93
  elements = (0, _utils.findParentFocusableElementsWithoutChildContainer)(controlProps.id);
120
94
  (0, _utils.setTabIndices)(elements, initialTabIndexMap, false);
121
95
  setInitialEmail(state.appStates.preChatResponseEmail);
122
-
123
96
  _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
124
97
  Event: _TelemetryConstants.TelemetryEvent.EmailTranscriptLoaded
125
98
  });
126
99
  }, [initialEmail]);
127
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, !(controlProps !== null && controlProps !== void 0 && controlProps.disableDimLayer) && /*#__PURE__*/_react.default.createElement(_DimLayer.DimLayer, {
100
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_DimLayer.DimLayer, {
128
101
  brightness: (controlProps === null || controlProps === void 0 ? void 0 : controlProps.brightnessValueOnDim) ?? "0.2"
129
102
  }), /*#__PURE__*/_react.default.createElement(_omnichannelChatComponents.InputValidationPane, {
130
103
  componentOverrides: props.componentOverrides,
@@ -132,7 +105,6 @@ const EmailTranscriptPaneStateful = props => {
132
105
  styleProps: props.styleProps
133
106
  }));
134
107
  };
135
-
136
108
  exports.EmailTranscriptPaneStateful = EmailTranscriptPaneStateful;
137
109
  var _default = EmailTranscriptPaneStateful;
138
110
  exports.default = _default;
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  var _omnichannelChatSdk = require("@microsoft/omnichannel-chat-sdk");
4
-
5
4
  var _react = require("@testing-library/react");
6
-
7
5
  jest.mock("@microsoft/omnichannel-chat-sdk");
8
6
  describe("EmailTranscriptPaneStateful unit test", () => {
9
7
  afterEach(() => {
@@ -23,10 +21,10 @@ describe("EmailTranscriptPaneStateful unit test", () => {
23
21
  attachmentMessage: "sample",
24
22
  locale: "sample"
25
23
  };
26
-
27
24
  try {
28
25
  await chatSDK.emailLiveChatTranscript(chatTranscriptBody);
29
- expect(chatSDK.emailLiveChatTranscript).toHaveBeenCalledTimes(1); // eslint-disable-next-line no-empty
26
+ expect(chatSDK.emailLiveChatTranscript).toHaveBeenCalledTimes(1);
27
+ // eslint-disable-next-line no-empty
30
28
  } catch (ex) {}
31
29
  });
32
30
  it("Method emailLiveChatTranscript throws exception", async () => {
@@ -43,9 +41,9 @@ describe("EmailTranscriptPaneStateful unit test", () => {
43
41
  attachmentMessage: "sample",
44
42
  locale: "sample"
45
43
  };
46
-
47
44
  try {
48
- await chatSDK.emailLiveChatTranscript(chatTranscriptBody); // eslint-disable-next-line @typescript-eslint/no-explicit-any
45
+ await chatSDK.emailLiveChatTranscript(chatTranscriptBody);
46
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
49
47
  } catch (ex) {
50
48
  expect(ex.message).toEqual(errorMessage);
51
49
  }
@@ -63,9 +61,9 @@ describe("EmailTranscriptPaneStateful unit test", () => {
63
61
  attachmentMessage: "sample",
64
62
  locale: "sample"
65
63
  };
66
-
67
64
  try {
68
- await chatSDK.emailLiveChatTranscript(chatTranscriptBody); // eslint-disable-next-line @typescript-eslint/no-explicit-any
65
+ await chatSDK.emailLiveChatTranscript(chatTranscriptBody);
66
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
69
67
  } catch (ex) {
70
68
  expect(ex.message).toEqual(errorMessage);
71
69
  }
@@ -4,50 +4,34 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = exports.FooterStateful = void 0;
7
-
8
7
  var _TelemetryConstants = require("../../common/telemetry/TelemetryConstants");
9
-
10
8
  var _react = _interopRequireDefault(require("react"));
11
-
12
9
  var _AudioNotificationStateful = _interopRequireDefault(require("./audionotificationstateful/AudioNotificationStateful"));
13
-
14
10
  var _Constants = require("../../common/Constants");
15
-
16
11
  var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
17
-
18
12
  var _LiveChatWidgetActionType = require("../../contexts/common/LiveChatWidgetActionType");
19
-
20
13
  var _Audios = require("../../assets/Audios");
21
-
22
14
  var _NotificationHandler = require("../webchatcontainerstateful/webchatcontroller/notification/NotificationHandler");
23
-
24
15
  var _NotificationScenarios = require("../webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios");
25
-
26
16
  var _TelemetryHelper = require("../../common/telemetry/TelemetryHelper");
27
-
28
17
  var _DownloadTranscriptStateful = require("./downloadtranscriptstateful/DownloadTranscriptStateful");
29
-
30
18
  var _useChatContextStore = _interopRequireDefault(require("../../hooks/useChatContextStore"));
31
-
32
19
  var _useChatSDKStore = _interopRequireDefault(require("../../hooks/useChatSDKStore"));
33
-
34
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
35
-
36
21
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
37
22
  const FooterStateful = props => {
38
23
  var _footerProps$controlP3, _footerProps$controlP4;
39
-
40
- const [state, dispatch] = (0, _useChatContextStore.default)(); // hideFooterDisplay - the purpose of this is to keep the footer always "active",
24
+ const [state, dispatch] = (0, _useChatContextStore.default)();
25
+ // hideFooterDisplay - the purpose of this is to keep the footer always "active",
41
26
  // but hide it visually in certain states (e.g., loading state) and show in some other states (e.g. active state).
42
27
  // The reason for this approach is to make sure that state variables for audio notification work correctly after minimizing
43
-
44
28
  const {
45
29
  footerProps,
46
30
  downloadTranscriptProps,
47
31
  audioNotificationProps,
48
32
  hideFooterDisplay
49
- } = props; // eslint-disable-next-line @typescript-eslint/no-explicit-any
50
-
33
+ } = props;
34
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
51
35
  const chatSDK = (0, _useChatSDKStore.default)();
52
36
  const controlProps = {
53
37
  id: "oc-lcw-footer",
@@ -58,7 +42,6 @@ const FooterStateful = props => {
58
42
  Event: _TelemetryConstants.TelemetryEvent.DownloadTranscriptButtonClicked,
59
43
  Description: "Download Transcript button clicked."
60
44
  });
61
-
62
45
  await (0, _DownloadTranscriptStateful.downloadTranscript)(chatSDK, downloadTranscriptProps === null || downloadTranscriptProps === void 0 ? void 0 : downloadTranscriptProps.renderMarkDown, downloadTranscriptProps === null || downloadTranscriptProps === void 0 ? void 0 : downloadTranscriptProps.bannerMessageOnError, downloadTranscriptProps === null || downloadTranscriptProps === void 0 ? void 0 : downloadTranscriptProps.attachmentMessage);
63
46
  } catch (ex) {
64
47
  _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.ERROR, {
@@ -67,28 +50,22 @@ const FooterStateful = props => {
67
50
  exception: ex
68
51
  }
69
52
  });
70
-
71
53
  _NotificationHandler.NotificationHandler.notifyError(_NotificationScenarios.NotificationScenarios.DownloadTranscriptError, (downloadTranscriptProps === null || downloadTranscriptProps === void 0 ? void 0 : downloadTranscriptProps.bannerMessageOnError) ?? _Constants.Constants.defaultDownloadTranscriptError);
72
54
  }
73
55
  },
74
56
  onEmailTranscriptClick: () => {
75
57
  var _footerProps$controlP, _footerProps$controlP2;
76
-
77
58
  _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
78
59
  Event: _TelemetryConstants.TelemetryEvent.EmailTranscriptButtonClicked,
79
60
  Description: "Email Transcript button clicked."
80
61
  });
81
-
82
- const emailTranscriptButtonId = (footerProps === null || footerProps === void 0 ? void 0 : (_footerProps$controlP = footerProps.controlProps) === null || _footerProps$controlP === void 0 ? void 0 : (_footerProps$controlP2 = _footerProps$controlP.emailTranscriptButtonProps) === null || _footerProps$controlP2 === void 0 ? void 0 : _footerProps$controlP2.id) ?? "oc-lcw-footer-emailtranscript-button";
83
- const emailTranscriptButton = document.getElementById(emailTranscriptButtonId);
84
-
85
- if (emailTranscriptButton) {
62
+ const emailTranscriptButtonId = (footerProps === null || footerProps === void 0 ? void 0 : (_footerProps$controlP = footerProps.controlProps) === null || _footerProps$controlP === void 0 ? void 0 : (_footerProps$controlP2 = _footerProps$controlP.emailTranscriptButtonProps) === null || _footerProps$controlP2 === void 0 ? void 0 : _footerProps$controlP2.id) ?? `${controlProps.id}-emailtranscript-button`;
63
+ if (emailTranscriptButtonId) {
86
64
  dispatch({
87
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_PREVIOUS_FOCUSED_ELEMENT,
88
- payload: emailTranscriptButton
65
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_PREVIOUS_FOCUSED_ELEMENT_ID,
66
+ payload: emailTranscriptButtonId
89
67
  });
90
68
  }
91
-
92
69
  dispatch({
93
70
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_SHOW_EMAIL_TRANSCRIPT_PANE,
94
71
  payload: true
@@ -99,25 +76,18 @@ const FooterStateful = props => {
99
76
  Event: _TelemetryConstants.TelemetryEvent.AudioToggleButtonClicked,
100
77
  Description: "Audio button clicked."
101
78
  });
102
-
103
79
  dispatch({
104
80
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_AUDIO_NOTIFICATION,
105
81
  payload: !state.appStates.isAudioMuted
106
82
  });
107
83
  },
108
84
  ...(footerProps === null || footerProps === void 0 ? void 0 : footerProps.controlProps),
109
- audioNotificationButtonProps: { ...(footerProps === null || footerProps === void 0 ? void 0 : (_footerProps$controlP3 = footerProps.controlProps) === null || _footerProps$controlP3 === void 0 ? void 0 : _footerProps$controlP3.audioNotificationButtonProps),
85
+ audioNotificationButtonProps: {
86
+ ...(footerProps === null || footerProps === void 0 ? void 0 : (_footerProps$controlP3 = footerProps.controlProps) === null || _footerProps$controlP3 === void 0 ? void 0 : _footerProps$controlP3.audioNotificationButtonProps),
110
87
  isAudioMuted: state.appStates.isAudioMuted
111
88
  }
112
89
  };
113
- const footerId = (controlProps === null || controlProps === void 0 ? void 0 : controlProps.id) ?? "oc-lcw-footer";
114
- const footer = document.getElementById(footerId);
115
-
116
- if (footer) {
117
- footer.style.display = hideFooterDisplay ? "none" : "";
118
- }
119
-
120
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_omnichannelChatComponents.Footer, {
90
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, !hideFooterDisplay && /*#__PURE__*/_react.default.createElement(_omnichannelChatComponents.Footer, {
121
91
  componentOverrides: footerProps === null || footerProps === void 0 ? void 0 : footerProps.componentOverrides,
122
92
  controlProps: controlProps,
123
93
  styleProps: footerProps === null || footerProps === void 0 ? void 0 : footerProps.styleProps
@@ -126,7 +96,6 @@ const FooterStateful = props => {
126
96
  isAudioMuted: state.appStates.isAudioMuted === null ? (footerProps === null || footerProps === void 0 ? void 0 : (_footerProps$controlP4 = footerProps.controlProps) === null || _footerProps$controlP4 === void 0 ? void 0 : _footerProps$controlP4.hideAudioNotificationButton) ?? false : state.appStates.isAudioMuted ?? false
127
97
  }));
128
98
  };
129
-
130
99
  exports.FooterStateful = FooterStateful;
131
100
  var _default = FooterStateful;
132
101
  exports.default = _default;
@@ -4,15 +4,10 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = exports.AudioNotificationStateful = void 0;
7
-
8
7
  var _react = _interopRequireWildcard(require("react"));
9
-
10
8
  var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
11
-
12
9
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
-
14
10
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15
-
16
11
  const AudioNotificationStateful = props => {
17
12
  const {
18
13
  audioSrc,
@@ -30,7 +25,6 @@ const AudioNotificationStateful = props => {
30
25
  }, [isAudioMuted]);
31
26
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null);
32
27
  };
33
-
34
28
  exports.AudioNotificationStateful = AudioNotificationStateful;
35
29
  var _default = AudioNotificationStateful;
36
30
  exports.default = _default;
@@ -4,37 +4,26 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.downloadTranscript = void 0;
7
-
8
7
  var _Constants = require("../../../common/Constants");
9
-
10
8
  var _NotificationScenarios = require("../../webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios");
11
-
12
9
  var _NotificationHandler = require("../../webchatcontainerstateful/webchatcontroller/notification/NotificationHandler");
13
-
14
10
  var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
15
-
16
11
  var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
17
-
18
12
  const processDisplayName = displayName => {
19
13
  // if displayname matches "teamsvisitor:<some alphanumeric string>", we replace it with "Customer"
20
14
  const displayNameRegex = ".+:.+";
21
15
  const matchedTeamsDisplayName = displayName.match(displayNameRegex);
22
-
23
16
  if (displayName.indexOf("teamsvisitor") >= 0 && matchedTeamsDisplayName && matchedTeamsDisplayName.length > 0) {
24
17
  displayName = "Customer";
25
18
  }
26
-
27
19
  return displayName;
28
20
  };
29
-
30
21
  const constructIconName = displayName => {
31
22
  if (!displayName) {
32
23
  return "";
33
24
  }
34
-
35
25
  let iconName = "C";
36
26
  const displayNameSplit = displayName.split(" ");
37
-
38
27
  if (displayNameSplit.length > 1) {
39
28
  // get the first letter of name and surname
40
29
  iconName = displayNameSplit[0][0] + displayNameSplit[1][0];
@@ -42,55 +31,42 @@ const constructIconName = displayName => {
42
31
  // get the first letter of name
43
32
  iconName = displayNameSplit[0][0];
44
33
  }
45
-
46
34
  return iconName;
47
35
  };
48
-
49
36
  const processCreatedDateTime = (createdDateTime, chatCount) => {
50
- const formattedDate = new Date(createdDateTime); // TODO: Localization:
51
-
52
- const formattedTimeString = formattedDate.toLocaleTimeString("en-us"
53
- /* Bootstrapper.LiveChatConfiguration.chatWidgetLocale */
54
- , {
37
+ const formattedDate = new Date(createdDateTime);
38
+ // TODO: Localization:
39
+ const formattedTimeString = formattedDate.toLocaleTimeString("en-us" /* Bootstrapper.LiveChatConfiguration.chatWidgetLocale */, {
55
40
  hour: "2-digit",
56
41
  minute: "2-digit"
57
42
  });
58
43
  const formattedSplitTimeString = formattedTimeString.split(" ");
59
44
  let finalizedTimeString = "";
60
-
61
45
  if (formattedSplitTimeString && formattedSplitTimeString.length > 1) {
62
46
  finalizedTimeString = formattedSplitTimeString[0] + " " + formattedSplitTimeString[1];
63
47
  }
64
-
65
48
  if (chatCount == 0) {
66
49
  return formattedDate.toLocaleDateString("en-us") + " " + finalizedTimeString;
67
50
  }
68
-
69
51
  return finalizedTimeString;
70
52
  };
71
-
72
53
  const processContent = (transcriptContent, isAgentChat, renderMarkDown) => {
73
54
  if (transcriptContent.toString().toLowerCase().indexOf(_Constants.TranscriptConstants.TranscriptMessageEmojiMessageType) >= 0) {
74
55
  // eslint-disable-next-line no-useless-escape
75
56
  const emojiRegex = "<img src=\"http.*:\/\/.+\/objects\/.+\/views.+\">";
76
57
  const matchedEmojiImgTag = transcriptContent.match(emojiRegex);
77
-
78
58
  if (matchedEmojiImgTag && matchedEmojiImgTag.length > 0 && transcriptContent.toString().toLowerCase().indexOf(matchedEmojiImgTag[0]) >= 0) {
79
59
  transcriptContent = transcriptContent.replace(matchedEmojiImgTag[0], "");
80
60
  }
81
61
  }
82
-
83
62
  if (!isAgentChat && transcriptContent.toString().toLowerCase().indexOf("a href") >= 0 && transcriptContent.toString().toLowerCase().indexOf("target") >= 0) {
84
63
  transcriptContent = transcriptContent.slice(0, transcriptContent.toString().indexOf("target")) + " style='color:white' " + transcriptContent.slice(transcriptContent.toString().indexOf("target"));
85
64
  }
86
-
87
65
  if (renderMarkDown) {
88
66
  transcriptContent = renderMarkDown(transcriptContent);
89
67
  }
90
-
91
68
  return transcriptContent;
92
69
  };
93
-
94
70
  const beautifyChatTranscripts = (chatTranscripts, renderMarkDown, attachmentMessage) => {
95
71
  const chats = JSON.parse(chatTranscripts).reverse();
96
72
  const docTypeTag = "<!DOCTYPE html>";
@@ -105,8 +81,9 @@ const beautifyChatTranscripts = (chatTranscripts, renderMarkDown, attachmentMess
105
81
  let tabIndex = 1;
106
82
  const mainTranscriptSection = "<div class='allTranscripts' style='max-width:60%;min-width:30%;margin-left:20%;background-color:#FFFFFF;'>";
107
83
  let previousDisplayName = "";
108
- let chatCount = 0; // eslint-disable-next-line @typescript-eslint/no-explicit-any
84
+ let chatCount = 0;
109
85
 
86
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
110
87
  chats.forEach(value => {
111
88
  let dialogNameMarginTop = "6px";
112
89
  let dialogboxMarginleft = "40px";
@@ -116,8 +93,13 @@ const beautifyChatTranscripts = (chatTranscripts, renderMarkDown, attachmentMess
116
93
  let fileAttachmentName = _Constants.TranscriptConstants.DefaultFileAttachmentName;
117
94
  let dialogColor = _Constants.TranscriptConstants.CustomerDialogColor;
118
95
  let fontColor = _Constants.TranscriptConstants.CustomerFontColor;
119
-
120
- if (value.tags && value.tags.toLowerCase().indexOf(_Constants.Constants.systemMessageTag) !== -1 || value.isControlMessage && value.isControlMessage === true || value.contentType && value.contentType.toLowerCase() === _Constants.TranscriptConstants.AdaptiveCardType || value.deliveryMode && value.deliveryMode.toLowerCase() === _Constants.TranscriptConstants.InternalMode) {
96
+ const isSystemMessage = value.tags && value.tags.toLowerCase().indexOf(_Constants.Constants.systemMessageTag) !== -1;
97
+ const isControlMessage = value.isControlMessage && value.isControlMessage === true;
98
+ const isAdaptiveCard = value.contentType && value.contentType.toLowerCase() === _Constants.TranscriptConstants.AdaptiveCardType;
99
+ const isInternalMessage = value.deliveryMode && value.deliveryMode.toLowerCase() === _Constants.TranscriptConstants.InternalMode;
100
+ const isHiddenMessage = value.tags && value.tags.toLowerCase().indexOf(_Constants.Constants.hiddenTag.toLowerCase()) !== -1;
101
+ const shouldIgnoreMessage = isSystemMessage || isControlMessage || isAdaptiveCard || isInternalMessage || isHiddenMessage;
102
+ if (shouldIgnoreMessage) {
121
103
  return;
122
104
  } else if (value.from) {
123
105
  if (value.from.application) {
@@ -132,19 +114,15 @@ const beautifyChatTranscripts = (chatTranscripts, renderMarkDown, attachmentMess
132
114
  displayName = value.from.user.displayName;
133
115
  dialogColor = _Constants.TranscriptConstants.CustomerDialogColor;
134
116
  }
135
-
136
117
  displayName = processDisplayName(displayName);
137
118
  iconName = constructIconName(displayName);
138
-
139
119
  if (value.attachments && value.attachments.length > 0 && value.attachments[0].name) {
140
120
  fileAttachmentName = value.attachments[0].name;
141
121
  value.content = attachmentMessage ? attachmentMessage + " " + fileAttachmentName : "The following attachment was uploaded during the conversation: " + fileAttachmentName;
142
122
  }
143
123
  }
144
-
145
124
  let displayNamePlaceholder = processCreatedDateTime(value.createdDateTime, chatCount);
146
125
  let iconPara = "";
147
-
148
126
  if (displayName !== previousDisplayName) {
149
127
  dialogboxMarginleft = "0px";
150
128
  displayNamePlaceholder = "<b>" + displayName + " </b> " + processCreatedDateTime(value.createdDateTime, chatCount);
@@ -155,17 +133,14 @@ const beautifyChatTranscripts = (chatTranscripts, renderMarkDown, attachmentMess
155
133
  </div>";
156
134
  tabIndex++;
157
135
  }
158
-
159
136
  if (displayName !== previousDisplayName) {
160
137
  if (previousDisplayName === "") {
161
138
  dialogNameMarginTop = "0px";
162
139
  }
163
-
164
140
  if (previousDisplayName !== "") {
165
141
  dialogNameMarginTop = "20px";
166
142
  }
167
143
  }
168
-
169
144
  const displayNameDiv = "<div style='margin-right:-2px;margin-top:" + dialogNameMarginTop + ";margin-bottom:-2px;margin-left:42px;top:-2px;position:relative;'>\
170
145
  <font tabindex ='" + tabIndex + "' size = '1px' color='#000000' style='font-family:Segoe UI,SegoeUI,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:500;'>\
171
146
  " + displayNamePlaceholder + "\
@@ -179,16 +154,14 @@ const beautifyChatTranscripts = (chatTranscripts, renderMarkDown, attachmentMess
179
154
  });
180
155
  const str = docTypeTag + docStartTag + docMetaTag + bodyStartTag + mainTranscriptSection + beautifiedChats + divEndTag + bodyEndTag + docEndTag;
181
156
  return str;
182
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
183
-
157
+ };
184
158
 
159
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
185
160
  const downloadTranscript = async (chatSDK, renderMarkDown, bannerMessageOnError, attachmentMessage) => {
186
161
  let data = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getLiveChatTranscript());
187
-
188
162
  if (typeof data === _Constants.Constants.String) {
189
163
  data = JSON.parse(data);
190
164
  }
191
-
192
165
  if (data[_Constants.Constants.ChatMessagesJson] !== null && data[_Constants.Constants.ChatMessagesJson] !== undefined) {
193
166
  const chatTranscripts = window.btoa(encodeURIComponent(beautifyChatTranscripts(data[_Constants.Constants.ChatMessagesJson], renderMarkDown, attachmentMessage)));
194
167
  const byteCharacters = decodeURIComponent(window.atob(chatTranscripts));
@@ -208,9 +181,7 @@ const downloadTranscript = async (chatSDK, renderMarkDown, bannerMessageOnError,
208
181
  exception: "Download transcript failed: response null or undefined."
209
182
  }
210
183
  });
211
-
212
184
  _NotificationHandler.NotificationHandler.notifyError(_NotificationScenarios.NotificationScenarios.DownloadTranscriptError, bannerMessageOnError ?? _Constants.Constants.defaultDownloadTranscriptError);
213
185
  }
214
186
  };
215
-
216
187
  exports.downloadTranscript = downloadTranscript;
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  var _omnichannelChatSdk = require("@microsoft/omnichannel-chat-sdk");
4
-
5
4
  var _react = require("@testing-library/react");
6
-
7
5
  jest.mock("@microsoft/omnichannel-chat-sdk");
8
6
  describe("DownloadTranscriptStateful unit test", () => {
9
7
  afterEach(() => {
@@ -18,10 +16,10 @@ describe("DownloadTranscriptStateful unit test", () => {
18
16
  };
19
17
  const chatSDK = new _omnichannelChatSdk.OmnichannelChatSDK(omnichannelConfig);
20
18
  jest.spyOn(chatSDK, "getLiveChatTranscript").mockResolvedValue(Promise.resolve());
21
-
22
19
  try {
23
20
  await chatSDK.getLiveChatTranscript();
24
- expect(chatSDK.getLiveChatTranscript).toHaveBeenCalledTimes(1); // eslint-disable-next-line no-empty
21
+ expect(chatSDK.getLiveChatTranscript).toHaveBeenCalledTimes(1);
22
+ // eslint-disable-next-line no-empty
25
23
  } catch (ex) {}
26
24
  });
27
25
  it("Method getLiveChatTranscript throws exception", async () => {
@@ -33,9 +31,9 @@ describe("DownloadTranscriptStateful unit test", () => {
33
31
  };
34
32
  const chatSDK = new _omnichannelChatSdk.OmnichannelChatSDK(omnichannelConfig);
35
33
  jest.spyOn(chatSDK, "getLiveChatTranscript").mockRejectedValue(new Error(errorMessage));
36
-
37
34
  try {
38
- await chatSDK.getLiveChatTranscript(); // eslint-disable-next-line @typescript-eslint/no-explicit-any
35
+ await chatSDK.getLiveChatTranscript();
36
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
39
37
  } catch (ex) {
40
38
  expect(ex.message).toEqual(errorMessage);
41
39
  }
@@ -48,9 +46,9 @@ describe("DownloadTranscriptStateful unit test", () => {
48
46
  widgetId: ""
49
47
  };
50
48
  const chatSDK = new _omnichannelChatSdk.OmnichannelChatSDK(omnichannelConfig);
51
-
52
49
  try {
53
- await chatSDK.getLiveChatTranscript(); // eslint-disable-next-line @typescript-eslint/no-explicit-any
50
+ await chatSDK.getLiveChatTranscript();
51
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
54
52
  } catch (ex) {
55
53
  expect(ex.message).toEqual(errorMessage);
56
54
  }