@microsoft/omnichannel-chat-widget 0.1.0-main.c461296 → 0.1.0-main.c881067

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