@microsoft/omnichannel-chat-widget 0.1.0-main.eb80fb1 → 0.1.0-main.f514612

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 (177) hide show
  1. package/README.md +35 -11
  2. package/lib/cjs/common/Constants.js +54 -6
  3. package/lib/cjs/common/storage/default/defaultCacheManager.js +34 -0
  4. package/lib/cjs/common/storage/default/defaultClientDataStoreProvider.js +114 -0
  5. package/lib/cjs/common/storage/default/defaultInMemoryDataStore.js +86 -0
  6. package/lib/cjs/common/telemetry/TelemetryConstants.js +64 -6
  7. package/lib/cjs/common/telemetry/TelemetryHelper.js +13 -0
  8. package/lib/cjs/common/telemetry/TelemetryManager.js +17 -6
  9. package/lib/cjs/common/telemetry/defaultConfigs/defaultAriaConfig.js +1 -1
  10. package/lib/cjs/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +4 -1
  11. package/lib/cjs/common/telemetry/loggers/ariaTelemetryLogger.js +33 -13
  12. package/lib/cjs/common/telemetry/loggers/consoleLogger.js +6 -5
  13. package/lib/cjs/common/utils.js +89 -2
  14. package/lib/cjs/components/callingcontainerstateful/CallingContainerStateful.js +14 -0
  15. package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +20 -4
  16. package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +6 -40
  17. package/lib/cjs/components/footerstateful/FooterStateful.js +2 -10
  18. package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +11 -2
  19. package/lib/cjs/components/headerstateful/HeaderStateful.js +14 -10
  20. package/lib/cjs/components/livechatwidget/common/ActivityStreamHandler.js +44 -0
  21. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +23 -0
  22. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.js +1 -0
  23. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +39 -0
  24. package/lib/cjs/components/livechatwidget/common/ChatAdapterShim.js +70 -0
  25. package/lib/cjs/components/livechatwidget/common/Deferred.js +42 -0
  26. package/lib/cjs/components/livechatwidget/common/authHelper.js +65 -0
  27. package/lib/cjs/components/livechatwidget/common/createAdapter.js +13 -1
  28. package/lib/cjs/components/livechatwidget/common/createFooter.js +7 -16
  29. package/lib/cjs/components/livechatwidget/common/createInternetConnectionChangeHandler.js +12 -0
  30. package/lib/cjs/components/livechatwidget/common/createMarkdown.js +32 -32
  31. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +34 -19
  32. package/lib/cjs/components/livechatwidget/common/endChat.js +141 -50
  33. package/lib/cjs/components/livechatwidget/common/initCallingSdk.js +1 -1
  34. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +51 -9
  35. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +144 -39
  36. package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +6 -17
  37. package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +6 -9
  38. package/lib/cjs/components/livechatwidget/common/shareObservable.js +45 -0
  39. package/lib/cjs/components/livechatwidget/common/startChat.js +171 -51
  40. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +308 -81
  41. package/lib/cjs/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +8 -0
  42. package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +5 -10
  43. package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +19 -3
  44. package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +96 -2
  45. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +4 -1
  46. package/lib/cjs/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +11 -0
  47. package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +6 -0
  48. package/lib/cjs/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.js +1 -0
  49. package/lib/cjs/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.js +1 -0
  50. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +14 -0
  51. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +25 -48
  52. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +2 -1
  53. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +3 -1
  54. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +52 -0
  55. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +98 -0
  56. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +10 -0
  57. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +117 -0
  58. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +6 -6
  59. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +45 -0
  60. package/lib/cjs/contexts/common/ConversationState.js +4 -2
  61. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +10 -7
  62. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +17 -4
  63. package/lib/cjs/contexts/createReducer.js +24 -10
  64. package/lib/cjs/controller/componentController.js +5 -5
  65. package/lib/cjs/plugins/newMessageEventHandler.js +99 -0
  66. package/lib/esm/common/Constants.js +50 -5
  67. package/lib/esm/common/storage/default/defaultCacheManager.js +19 -0
  68. package/lib/esm/common/storage/default/defaultClientDataStoreProvider.js +102 -0
  69. package/lib/esm/common/storage/default/defaultInMemoryDataStore.js +71 -0
  70. package/lib/esm/common/telemetry/TelemetryConstants.js +60 -5
  71. package/lib/esm/common/telemetry/TelemetryHelper.js +13 -1
  72. package/lib/esm/common/telemetry/TelemetryManager.js +15 -6
  73. package/lib/esm/common/telemetry/defaultConfigs/defaultAriaConfig.js +1 -1
  74. package/lib/esm/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +4 -1
  75. package/lib/esm/common/telemetry/loggers/ariaTelemetryLogger.js +36 -14
  76. package/lib/esm/common/telemetry/loggers/consoleLogger.js +6 -5
  77. package/lib/esm/common/utils.js +64 -1
  78. package/lib/esm/components/callingcontainerstateful/CallingContainerStateful.js +14 -0
  79. package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +22 -7
  80. package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +6 -36
  81. package/lib/esm/components/footerstateful/FooterStateful.js +2 -10
  82. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +9 -3
  83. package/lib/esm/components/headerstateful/HeaderStateful.js +15 -11
  84. package/lib/esm/components/livechatwidget/common/ActivityStreamHandler.js +34 -0
  85. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +14 -0
  86. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.js +1 -0
  87. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +29 -0
  88. package/lib/esm/components/livechatwidget/common/ChatAdapterShim.js +59 -0
  89. package/lib/esm/components/livechatwidget/common/Deferred.js +33 -0
  90. package/lib/esm/components/livechatwidget/common/authHelper.js +50 -0
  91. package/lib/esm/components/livechatwidget/common/createAdapter.js +12 -2
  92. package/lib/esm/components/livechatwidget/common/createFooter.js +4 -15
  93. package/lib/esm/components/livechatwidget/common/createInternetConnectionChangeHandler.js +8 -0
  94. package/lib/esm/components/livechatwidget/common/createMarkdown.js +32 -31
  95. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +34 -20
  96. package/lib/esm/components/livechatwidget/common/endChat.js +139 -50
  97. package/lib/esm/components/livechatwidget/common/initCallingSdk.js +1 -1
  98. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +46 -11
  99. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +134 -41
  100. package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +5 -14
  101. package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +6 -9
  102. package/lib/esm/components/livechatwidget/common/shareObservable.js +38 -0
  103. package/lib/esm/components/livechatwidget/common/startChat.js +165 -54
  104. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +293 -84
  105. package/lib/esm/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +6 -0
  106. package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +7 -11
  107. package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +20 -4
  108. package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +86 -2
  109. package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +3 -1
  110. package/lib/esm/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +4 -0
  111. package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +6 -0
  112. package/lib/esm/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.js +1 -0
  113. package/lib/esm/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.js +1 -0
  114. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +5 -0
  115. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +23 -46
  116. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +2 -1
  117. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +2 -1
  118. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +41 -0
  119. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +94 -0
  120. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +3 -0
  121. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +107 -0
  122. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +6 -6
  123. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +32 -0
  124. package/lib/esm/contexts/common/ConversationState.js +4 -2
  125. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +10 -7
  126. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +15 -4
  127. package/lib/esm/contexts/createReducer.js +24 -9
  128. package/lib/esm/controller/componentController.js +5 -5
  129. package/lib/esm/plugins/newMessageEventHandler.js +82 -0
  130. package/lib/types/common/Constants.d.ts +27 -2
  131. package/lib/types/common/interfaces/IContextDataStore.d.ts +2 -2
  132. package/lib/types/common/storage/default/defaultCacheManager.d.ts +4 -0
  133. package/lib/types/common/storage/default/defaultClientDataStoreProvider.d.ts +2 -0
  134. package/lib/types/common/storage/default/defaultInMemoryDataStore.d.ts +6 -0
  135. package/lib/types/common/telemetry/TelemetryConstants.d.ts +46 -4
  136. package/lib/types/common/telemetry/TelemetryHelper.d.ts +2 -0
  137. package/lib/types/common/telemetry/definitions/Payload.d.ts +12 -9
  138. package/lib/types/common/telemetry/interfaces/ITelemetryConfig.d.ts +3 -3
  139. package/lib/types/common/utils.d.ts +8 -1
  140. package/lib/types/components/confirmationpanestateful/interfaces/IConfirmationPaneStatefulParams.d.ts +5 -2
  141. package/lib/types/components/footerstateful/audionotificationstateful/interfaces/IAudioNotificationStatefulParams.d.ts +0 -1
  142. package/lib/types/components/headerstateful/interfaces/IHeaderStatefulParams.d.ts +5 -1
  143. package/lib/types/components/livechatwidget/common/ActivityStreamHandler.d.ts +14 -0
  144. package/lib/types/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.d.ts +5 -0
  145. package/lib/types/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.d.ts +6 -0
  146. package/lib/types/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.d.ts +7 -0
  147. package/lib/types/components/livechatwidget/common/ChatAdapterShim.d.ts +7 -0
  148. package/lib/types/components/livechatwidget/common/Deferred.d.ts +9 -0
  149. package/lib/types/components/livechatwidget/common/authHelper.d.ts +5 -0
  150. package/lib/types/components/livechatwidget/common/endChat.d.ts +4 -1
  151. package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +6 -2
  152. package/lib/types/components/livechatwidget/common/shareObservable.d.ts +1 -0
  153. package/lib/types/components/livechatwidget/common/startChat.d.ts +4 -2
  154. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetComponentOverrides.d.ts +1 -0
  155. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetControlProps.d.ts +1 -0
  156. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +2 -1
  157. package/lib/types/components/reconnectchatpanestateful/interfaces/IReconnectChatPaneStatefulProps.d.ts +1 -1
  158. package/lib/types/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.d.ts +2 -0
  159. package/lib/types/components/webchatcontainerstateful/common/mockchatsdk.d.ts +2 -0
  160. package/lib/types/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.d.ts +4 -0
  161. package/lib/types/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.d.ts +4 -0
  162. package/lib/types/components/webchatcontainerstateful/interfaces/IRenderingMiddlewareProps.d.ts +2 -1
  163. package/lib/types/components/webchatcontainerstateful/interfaces/IWebChatContainerStatefulProps.d.ts +4 -0
  164. package/lib/types/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.d.ts +3 -0
  165. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.d.ts +0 -1
  166. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.d.ts +1 -1
  167. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.d.ts +2 -0
  168. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.d.ts +1 -0
  169. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.d.ts +2 -0
  170. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.d.ts +5 -0
  171. package/lib/types/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.d.ts +1 -0
  172. package/lib/types/contexts/common/ConversationState.d.ts +4 -2
  173. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +3 -1
  174. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +11 -8
  175. package/lib/types/contexts/common/LiveChatWidgetContextInitialState.d.ts +1 -2
  176. package/lib/types/plugins/newMessageEventHandler.d.ts +2 -0
  177. package/package.json +11 -12
@@ -13,6 +13,10 @@ var _ariaTelemetryLogger = require("./loggers/ariaTelemetryLogger");
13
13
 
14
14
  var _consoleLogger = require("./loggers/consoleLogger");
15
15
 
16
+ var _defaultAriaConfig = require("./defaultConfigs/defaultAriaConfig");
17
+
18
+ var _TelemetryHelper = require("./TelemetryHelper");
19
+
16
20
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
17
21
 
18
22
  class TelemetryTimers {}
@@ -45,25 +49,25 @@ const RegisterLoggers = () => {
45
49
  const registerLoggers = () => {
46
50
  var _TelemetryManager$Int, _TelemetryManager$Int2, _TelemetryManager$Int3, _TelemetryManager$Int4, _TelemetryManager$Int5, _TelemetryManager$Int6, _TelemetryManager$Int7, _TelemetryManager$Int8;
47
51
 
48
- if (!((_TelemetryManager$Int = TelemetryManager.InternalTelemetryData) !== null && _TelemetryManager$Int !== void 0 && (_TelemetryManager$Int2 = _TelemetryManager$Int.telemetryConfig) !== null && _TelemetryManager$Int2 !== void 0 && _TelemetryManager$Int2.disableConsoleLog) || !((_TelemetryManager$Int3 = TelemetryManager.InternalTelemetryData) !== null && _TelemetryManager$Int3 !== void 0 && (_TelemetryManager$Int4 = _TelemetryManager$Int3.telemetryConfig) !== null && _TelemetryManager$Int4 !== void 0 && _TelemetryManager$Int4.telemetryDisabled)) {
52
+ if (((_TelemetryManager$Int = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int === void 0 ? void 0 : (_TelemetryManager$Int2 = _TelemetryManager$Int.telemetryConfig) === null || _TelemetryManager$Int2 === void 0 ? void 0 : _TelemetryManager$Int2.disableConsoleLog) === false || ((_TelemetryManager$Int3 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int3 === void 0 ? void 0 : (_TelemetryManager$Int4 = _TelemetryManager$Int3.telemetryConfig) === null || _TelemetryManager$Int4 === void 0 ? void 0 : _TelemetryManager$Int4.telemetryDisabled) === false) {
49
53
  _omnichannelChatComponents.BroadcastService.getAnyMessage().subscribe(event => {
50
- if (event.payload && event.eventName !== _TelemetryConstants.TelemetryEvent.ChatWidgetStateChanged) {
54
+ if (event.payload && event.eventName in _TelemetryConstants.TelemetryEvent) {
51
55
  logTelemetry(event);
52
56
  }
53
57
  });
54
58
  }
55
59
 
56
- if (!((_TelemetryManager$Int5 = TelemetryManager.InternalTelemetryData) !== null && _TelemetryManager$Int5 !== void 0 && (_TelemetryManager$Int6 = _TelemetryManager$Int5.telemetryConfig) !== null && _TelemetryManager$Int6 !== void 0 && _TelemetryManager$Int6.disableConsoleLog)) {
60
+ if (((_TelemetryManager$Int5 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int5 === void 0 ? void 0 : (_TelemetryManager$Int6 = _TelemetryManager$Int5.telemetryConfig) === null || _TelemetryManager$Int6 === void 0 ? void 0 : _TelemetryManager$Int6.disableConsoleLog) === false) {
57
61
  loggers.push((0, _consoleLogger.consoleLogger)());
58
62
  }
59
63
 
60
- if (!((_TelemetryManager$Int7 = TelemetryManager.InternalTelemetryData) !== null && _TelemetryManager$Int7 !== void 0 && (_TelemetryManager$Int8 = _TelemetryManager$Int7.telemetryConfig) !== null && _TelemetryManager$Int8 !== void 0 && _TelemetryManager$Int8.telemetryDisabled)) {
64
+ if (((_TelemetryManager$Int7 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int7 === void 0 ? void 0 : (_TelemetryManager$Int8 = _TelemetryManager$Int7.telemetryConfig) === null || _TelemetryManager$Int8 === void 0 ? void 0 : _TelemetryManager$Int8.telemetryDisabled) === false) {
61
65
  var _TelemetryManager$Int9, _TelemetryManager$Int18, _TelemetryManager$Int19;
62
66
 
63
67
  if ((_TelemetryManager$Int9 = TelemetryManager.InternalTelemetryData) !== null && _TelemetryManager$Int9 !== void 0 && _TelemetryManager$Int9.ariaConfig) {
64
68
  var _TelemetryManager$Int10, _TelemetryManager$Int11, _TelemetryManager$Int12, _TelemetryManager$Int13, _TelemetryManager$Int14, _TelemetryManager$Int15, _TelemetryManager$Int16, _TelemetryManager$Int17;
65
69
 
66
- loggers.push((0, _ariaTelemetryLogger.ariaTelemetryLogger)(((_TelemetryManager$Int10 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int10 === void 0 ? void 0 : (_TelemetryManager$Int11 = _TelemetryManager$Int10.ariaConfig) === null || _TelemetryManager$Int11 === void 0 ? void 0 : _TelemetryManager$Int11.ariaTelemetryKey) ?? "", ((_TelemetryManager$Int12 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int12 === void 0 ? void 0 : (_TelemetryManager$Int13 = _TelemetryManager$Int12.ariaConfig) === null || _TelemetryManager$Int13 === void 0 ? void 0 : _TelemetryManager$Int13.disableCookieUsage) ?? false, ((_TelemetryManager$Int14 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int14 === void 0 ? void 0 : (_TelemetryManager$Int15 = _TelemetryManager$Int14.ariaConfig) === null || _TelemetryManager$Int15 === void 0 ? void 0 : _TelemetryManager$Int15.collectorUriForTelemetry) ?? "", ((_TelemetryManager$Int16 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int16 === void 0 ? void 0 : (_TelemetryManager$Int17 = _TelemetryManager$Int16.ariaConfig) === null || _TelemetryManager$Int17 === void 0 ? void 0 : _TelemetryManager$Int17.ariaTelemetryApplicationName) ?? "OmniChannelProd_Web"));
70
+ loggers.push((0, _ariaTelemetryLogger.ariaTelemetryLogger)(((_TelemetryManager$Int10 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int10 === void 0 ? void 0 : (_TelemetryManager$Int11 = _TelemetryManager$Int10.ariaConfig) === null || _TelemetryManager$Int11 === void 0 ? void 0 : _TelemetryManager$Int11.ariaTelemetryKey) ?? _defaultAriaConfig.defaultAriaConfig.ariaTelemetryKey, ((_TelemetryManager$Int12 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int12 === void 0 ? void 0 : (_TelemetryManager$Int13 = _TelemetryManager$Int12.ariaConfig) === null || _TelemetryManager$Int13 === void 0 ? void 0 : _TelemetryManager$Int13.disableCookieUsage) ?? _defaultAriaConfig.defaultAriaConfig.disableCookieUsage, ((_TelemetryManager$Int14 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int14 === void 0 ? void 0 : (_TelemetryManager$Int15 = _TelemetryManager$Int14.ariaConfig) === null || _TelemetryManager$Int15 === void 0 ? void 0 : _TelemetryManager$Int15.collectorUriForTelemetry) ?? _defaultAriaConfig.defaultAriaConfig.collectorUriForTelemetry, ((_TelemetryManager$Int16 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int16 === void 0 ? void 0 : (_TelemetryManager$Int17 = _TelemetryManager$Int16.ariaConfig) === null || _TelemetryManager$Int17 === void 0 ? void 0 : _TelemetryManager$Int17.ariaTelemetryApplicationName) ?? _defaultAriaConfig.defaultAriaConfig.ariaTelemetryApplicationName));
67
71
  }
68
72
 
69
73
  const customLoggers = (_TelemetryManager$Int18 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int18 === void 0 ? void 0 : (_TelemetryManager$Int19 = _TelemetryManager$Int18.telemetryConfig) === null || _TelemetryManager$Int19 === void 0 ? void 0 : _TelemetryManager$Int19.telemetryLoggers;
@@ -86,8 +90,15 @@ const RegisterLoggers = () => {
86
90
 
87
91
  const logTelemetry = telemetryEvent => {
88
92
  loggers.map(logger => {
93
+ var _payload;
94
+
89
95
  const logLevel = telemetryEvent.logLevel ?? _TelemetryConstants.LogLevel.INFO;
90
- logger.log(logLevel, parseInput(telemetryEvent === null || telemetryEvent === void 0 ? void 0 : telemetryEvent.payload));
96
+ const scenarioType = ((_payload = telemetryEvent.payload) === null || _payload === void 0 ? void 0 : _payload.scenarioType) ?? _TelemetryConstants.ScenarioType.UNDEFINED;
97
+ const telemetryInput = parseInput(telemetryEvent === null || telemetryEvent === void 0 ? void 0 : telemetryEvent.payload, scenarioType);
98
+ telemetryInput.telemetryInfo = {
99
+ telemetryInfo: _TelemetryHelper.TelemetryHelper.buildTelemetryEvent(logLevel, telemetryInput)
100
+ };
101
+ logger.log(logLevel, telemetryInput);
91
102
  });
92
103
  };
93
104
 
@@ -7,7 +7,7 @@ exports.defaultAriaConfig = void 0;
7
7
  const defaultAriaConfig = {
8
8
  collectorUriForTelemetry: "",
9
9
  ariaTelemetryKey: "c7655518acf1403f93ff6b9f77942f0a-d01a02fd-6b50-4de3-a566-62eda11f93bc-7083",
10
- ariaTelemetryApplicationName: "",
10
+ ariaTelemetryApplicationName: "D365_Omnichannel_Client_Public_Prod",
11
11
  disableCookieUsage: true
12
12
  };
13
13
  exports.defaultAriaConfig = defaultAriaConfig;
@@ -11,6 +11,9 @@ const defaultTelemetryConfiguration = {
11
11
  telemetryDisabled: false,
12
12
  disableConsoleLog: false,
13
13
  telemetryLoggers: [],
14
- ariaConfigurations: _defaultAriaConfig.defaultAriaConfig
14
+ ariaConfigurations: _defaultAriaConfig.defaultAriaConfig,
15
+ chatWidgetVersion: "0.0.0-0",
16
+ chatComponentVersion: "0.0.0-0",
17
+ OCChatSDKVersion: "0.0.0-0"
15
18
  };
16
19
  exports.defaultTelemetryConfiguration = defaultTelemetryConfiguration;
@@ -15,7 +15,7 @@ var _Enums = require("@microsoft/omnichannel-chat-sdk/lib/external/aria/common/E
15
15
 
16
16
  var _Constants = require("../../Constants");
17
17
 
18
- var _TelemetryHelper = require("../TelemetryHelper");
18
+ var _TelemetryManager = require("../TelemetryManager");
19
19
 
20
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
21
 
@@ -30,6 +30,21 @@ const ariaTelemetryLogger = (ariaTelemetryKey, disabledCookieUsage, collectiorUr
30
30
 
31
31
  if (!(0, _utils.isNullOrEmptyString)(collectiorUriForTelemetry)) {
32
32
  configuration.collectorUri = collectiorUriForTelemetry;
33
+ } else {
34
+ if (_TelemetryManager.TelemetryManager.InternalTelemetryData.environmentVersion == _Constants.EnvironmentVersion.prod) {
35
+ var _TelemetryManager$Int;
36
+
37
+ const orgUrl = (_TelemetryManager$Int = _TelemetryManager.TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int === void 0 ? void 0 : _TelemetryManager$Int.orgUrl;
38
+
39
+ if (!(0, _utils.isNullOrUndefined)(orgUrl)) {
40
+ // If the given org is a Production EU org, modify the Aria collector uri
41
+ const region = (0, _utils.getDomain)(orgUrl);
42
+
43
+ if (region === _Constants.AriaTelemetryConstants.EU) {
44
+ configuration.collectorUri = _Constants.AriaTelemetryConstants.EUROPE_ENDPOINT;
45
+ }
46
+ }
47
+ }
33
48
  }
34
49
 
35
50
  try {
@@ -48,20 +63,25 @@ const ariaTelemetryLogger = (ariaTelemetryKey, disabledCookieUsage, collectiorUr
48
63
 
49
64
  const ariaLogger = {
50
65
  log: (logLevel, telemetryInput) => {
51
- let property;
52
- const eventProperties = new _AWTEventProperties.default();
53
-
54
- const event = _TelemetryHelper.TelemetryHelper.buildTelemetryEvent(logLevel, telemetryInput);
55
-
56
- eventProperties.setName(telemetryInput.scenarioType);
66
+ try {
67
+ let property;
68
+ const telemetryInfo = telemetryInput === null || telemetryInput === void 0 ? void 0 : telemetryInput.telemetryInfo;
69
+ const eventProperties = new _AWTEventProperties.default();
70
+ eventProperties.setName(telemetryInput.scenarioType);
71
+
72
+ if (telemetryInfo) {
73
+ for (const key of Object.keys(telemetryInfo)) {
74
+ property = typeof telemetryInfo[key] === "object" ? JSON.stringify(telemetryInfo[key]) : telemetryInfo[key];
75
+ eventProperties.setProperty(key, property);
76
+ }
77
+
78
+ eventProperties.setPropertyWithPii(ariaTelemetryApplicationName, _Constants.Constants.LiveChatWidget, _Enums.AWTPiiKind.GenericData);
79
+ }
57
80
 
58
- for (const key of Object.keys(event)) {
59
- property = typeof event[key] === "object" ? JSON.stringify(event[key]) : event[key];
60
- eventProperties.setProperty(key, property);
81
+ logger() ? logger().logEvent(eventProperties) : console.log("Unable to initialize aria logger");
82
+ } catch (error) {
83
+ console.error("Error in logging telemetry to Aria logger:" + error);
61
84
  }
62
-
63
- eventProperties.setPropertyWithPii(ariaTelemetryApplicationName, _Constants.Constants.LiveChatWidget, _Enums.AWTPiiKind.GenericData);
64
- logger() ? logger().logEvent(eventProperties) : console.log("Unable to initialize aria logger");
65
85
  },
66
86
  dispose: () => {
67
87
  _AWTLogManager.default.flush(function () {
@@ -13,27 +13,28 @@ const consoleLogger = () => {
13
13
  const consoleLogger = {
14
14
  log: (logLevel, telemetryInput) => {
15
15
  const payload = telemetryInput !== null && telemetryInput !== void 0 && telemetryInput.payload && Object.keys(telemetryInput === null || telemetryInput === void 0 ? void 0 : telemetryInput.payload).length > 0 ? telemetryInput === null || telemetryInput === void 0 ? void 0 : telemetryInput.payload : "";
16
+ const telemetryInfo = telemetryInput !== null && telemetryInput !== void 0 && telemetryInput.telemetryInfo && Object.keys(telemetryInput === null || telemetryInput === void 0 ? void 0 : telemetryInput.telemetryInfo).length > 0 ? telemetryInput === null || telemetryInput === void 0 ? void 0 : telemetryInput.telemetryInfo : "";
16
17
 
17
18
  try {
18
19
  switch (logLevel) {
19
20
  case _TelemetryConstants.LogLevel.INFO:
20
- console.info(_Constants.Constants.LiveChatWidget, payload);
21
+ console.info(_Constants.Constants.LiveChatWidget, payload, telemetryInfo);
21
22
  break;
22
23
 
23
24
  case _TelemetryConstants.LogLevel.DEBUG:
24
- console.debug(_Constants.Constants.LiveChatWidget, payload);
25
+ console.debug(_Constants.Constants.LiveChatWidget, payload, telemetryInfo);
25
26
  break;
26
27
 
27
28
  case _TelemetryConstants.LogLevel.WARN:
28
- console.warn(_Constants.Constants.LiveChatWidget, payload);
29
+ console.warn(_Constants.Constants.LiveChatWidget, payload, telemetryInfo);
29
30
  break;
30
31
 
31
32
  case _TelemetryConstants.LogLevel.ERROR:
32
- console.error(_Constants.Constants.LiveChatWidget, payload);
33
+ console.error(_Constants.Constants.LiveChatWidget, payload, telemetryInfo);
33
34
  break;
34
35
 
35
36
  default:
36
- console.debug(_Constants.Constants.LiveChatWidget, payload);
37
+ console.debug(_Constants.Constants.LiveChatWidget, payload, telemetryInfo);
37
38
  break;
38
39
  }
39
40
  } catch (ex) {
@@ -3,12 +3,18 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.setTabIndices = exports.setFocusOnSendBox = exports.setFocusOnElement = exports.preventFocusToMoveOutOfElement = exports.parseAdaptiveCardPayload = exports.newGuid = exports.isNullOrUndefined = exports.isNullOrEmptyString = exports.getTimestampHourMinute = exports.getLocaleDirection = exports.getIconText = exports.findParentFocusableElementsWithoutChildContainer = exports.findAllFocusableElement = exports.extractPreChatSurveyResponseValues = exports.escapeHtml = exports.createTimer = exports.changeLanguageCodeFormatForWebChat = void 0;
6
+ exports.setTabIndices = exports.setFocusOnSendBox = exports.setFocusOnElement = exports.preventFocusToMoveOutOfElement = exports.parseAdaptiveCardPayload = exports.newGuid = exports.isUndefinedOrEmpty = exports.isNullOrUndefined = exports.isNullOrEmptyString = exports.getWidgetEndChatEventName = exports.getWidgetCacheId = exports.getTimestampHourMinute = exports.getStateFromCache = exports.getLocaleDirection = exports.getIconText = exports.getDomain = exports.getBroadcastChannelName = exports.findParentFocusableElementsWithoutChildContainer = exports.findAllFocusableElement = exports.extractPreChatSurveyResponseValues = exports.escapeHtml = exports.createTimer = exports.changeLanguageCodeFormatForWebChat = exports.addDelayInMs = void 0;
7
7
 
8
8
  var _Constants = require("./Constants");
9
9
 
10
+ var _DataStoreManager = require("./contextDataStore/DataStoreManager");
11
+
10
12
  var _KeyCodes = require("./KeyCodes");
11
13
 
14
+ var _TelemetryConstants = require("./telemetry/TelemetryConstants");
15
+
16
+ var _md5Typescript = require("md5-typescript");
17
+
12
18
  const getElementBySelector = selector => {
13
19
  let element;
14
20
 
@@ -332,6 +338,87 @@ const createTimer = () => {
332
338
  }
333
339
 
334
340
  };
341
+ }; // Returns the domain of the org
342
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
343
+
344
+
345
+ exports.createTimer = createTimer;
346
+
347
+ const getDomain = hostValue => {
348
+ for (let i = 0; i < _Constants.AriaTelemetryConstants.lcwEUDomainNames.length; i++) {
349
+ if (hostValue.endsWith(_Constants.AriaTelemetryConstants.lcwEUDomainNames[i])) {
350
+ return _Constants.AriaTelemetryConstants.EU;
351
+ }
352
+ }
353
+
354
+ return _Constants.AriaTelemetryConstants.Public;
355
+ };
356
+
357
+ exports.getDomain = getDomain;
358
+
359
+ const getWidgetCacheId = (orgId, widgetId, widgetInstanceId) => {
360
+ const widgetCacheId = `${widgetInstanceId}_${orgId}_${widgetId}`;
361
+ return _md5Typescript.Md5.init(widgetCacheId);
362
+ };
363
+
364
+ exports.getWidgetCacheId = getWidgetCacheId;
365
+
366
+ const getWidgetEndChatEventName = (orgId, widgetId, widgetInstanceId) => {
367
+ if (!isNullOrEmptyString(widgetInstanceId)) {
368
+ return `${_TelemetryConstants.BroadcastEvent.ChatEnded}_${widgetInstanceId}_${orgId}_${widgetId}`;
369
+ }
370
+
371
+ return `${_TelemetryConstants.BroadcastEvent.ChatEnded}_${orgId}_${widgetId}`;
372
+ }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
373
+
374
+
375
+ exports.getWidgetEndChatEventName = getWidgetEndChatEventName;
376
+
377
+ const getStateFromCache = (orgId, widgetId, widgetInstanceId) => {
378
+ // Getting updated state from cache
379
+ try {
380
+ if (_DataStoreManager.DataStoreManager.clientDataStore) {
381
+ var _DataStoreManager$cli;
382
+
383
+ const widgetStateEventName = getWidgetCacheId(orgId, widgetId, widgetInstanceId);
384
+ const widgetStateFromCache = (_DataStoreManager$cli = _DataStoreManager.DataStoreManager.clientDataStore) === null || _DataStoreManager$cli === void 0 ? void 0 : _DataStoreManager$cli.getData(widgetStateEventName, "localStorage");
385
+ const persistedState = widgetStateFromCache ? JSON.parse(widgetStateFromCache) : undefined;
386
+ return persistedState;
387
+ } else {
388
+ return null;
389
+ }
390
+ } catch (error) {
391
+ console.log(error);
392
+ return null;
393
+ }
394
+ }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
395
+
396
+
397
+ exports.getStateFromCache = getStateFromCache;
398
+
399
+ const isUndefinedOrEmpty = object => {
400
+ if (object) {
401
+ if (Object.keys(object).length === 0) {
402
+ return true;
403
+ }
404
+
405
+ return false;
406
+ } else {
407
+ return true;
408
+ }
409
+ }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
410
+
411
+
412
+ exports.isUndefinedOrEmpty = isUndefinedOrEmpty;
413
+
414
+ const addDelayInMs = ms => {
415
+ return new Promise(resolve => setTimeout(resolve, ms));
416
+ };
417
+
418
+ exports.addDelayInMs = addDelayInMs;
419
+
420
+ const getBroadcastChannelName = (widgetId, widgetInstanceId) => {
421
+ return widgetInstanceId && !isNullOrEmptyString(widgetInstanceId) ? `${widgetInstanceId}_${widgetId}` : widgetId;
335
422
  };
336
423
 
337
- exports.createTimer = createTimer;
424
+ exports.getBroadcastChannelName = getBroadcastChannelName;
@@ -206,6 +206,20 @@ const CallingContainerStateful = props => {
206
206
  });
207
207
  }
208
208
  });
209
+ window.addEventListener("beforeunload", () => {
210
+ if (state.uiStates.isIncomingCall) {
211
+ voiceVideoCallingSdk === null || voiceVideoCallingSdk === void 0 ? void 0 : voiceVideoCallingSdk.rejectCall();
212
+ } else {
213
+ voiceVideoCallingSdk === null || voiceVideoCallingSdk === void 0 ? void 0 : voiceVideoCallingSdk.stopCall();
214
+ }
215
+
216
+ voiceVideoCallingSdk === null || voiceVideoCallingSdk === void 0 ? void 0 : voiceVideoCallingSdk.close();
217
+ dispatch({
218
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_E2VV_ENABLED,
219
+ payload: false
220
+ });
221
+ resetCallingStates(true);
222
+ });
209
223
  }, []);
210
224
  const controlProps = {
211
225
  id: "oc-lcw-callingcontainer",
@@ -34,7 +34,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
34
34
  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; }
35
35
 
36
36
  const ChatButtonStateful = props => {
37
- var _state$domainStates$l, _state$domainStates$l2, _buttonProps$controlP;
37
+ var _state$domainStates$l, _state$domainStates$l2, _buttonProps$controlP, _props$buttonProps, _props$buttonProps$co, _props$buttonProps2, _props$buttonProps2$c, _props$buttonProps3, _props$buttonProps3$c;
38
38
 
39
39
  const [state, dispatch] = (0, _useChatContextStore.default)();
40
40
  const {
@@ -44,20 +44,27 @@ const ChatButtonStateful = props => {
44
44
  } = props; //Setting OutOfOperatingHours Flag
45
45
 
46
46
  const [outOfOperatingHours, setOutOfOperatingHours] = (0, _react.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");
47
+ const proactiveChatInNewWindow = (0, _react.useRef)(state.appStates.proactiveChatStates.proactiveChatInNewWindow);
47
48
  const outOfOfficeStyleProps = Object.assign({}, _defaultOutOfOfficeChatButtonStyleProps.defaultOutOfOfficeChatButtonStyleProps, outOfOfficeButtonProps === null || outOfOfficeButtonProps === void 0 ? void 0 : outOfOfficeButtonProps.styleProps);
48
49
  const controlProps = {
49
50
  id: "oc-lcw-chat-button",
50
51
  dir: state.domainStates.globalDir,
51
52
  titleText: "Let's Chat!",
52
53
  subtitleText: "We're online.",
53
- hideNotificationBubble: !(state.appStates.isMinimized === true && state.appStates.unreadMessageCount > 0) || (buttonProps === null || buttonProps === void 0 ? void 0 : (_buttonProps$controlP = buttonProps.controlProps) === null || _buttonProps$controlP === void 0 ? void 0 : _buttonProps$controlP.hideNotificationBubble) === true,
54
- unreadMessageCount: state.appStates.unreadMessageCount ? state.appStates.unreadMessageCount > _Constants.Constants.maximumUnreadMessageCount ? _Constants.Constants.maximumUnreadMessageCount.toString() + "+" : state.appStates.unreadMessageCount.toString() : "0",
54
+ hideNotificationBubble: (buttonProps === null || buttonProps === void 0 ? void 0 : (_buttonProps$controlP = buttonProps.controlProps) === null || _buttonProps$controlP === void 0 ? void 0 : _buttonProps$controlP.hideNotificationBubble) === true || state.appStates.isMinimized === false,
55
+ unreadMessageCount: state.appStates.unreadMessageCount ? state.appStates.unreadMessageCount > _Constants.Constants.maximumUnreadMessageCount ? (_props$buttonProps = props.buttonProps) === null || _props$buttonProps === void 0 ? void 0 : (_props$buttonProps$co = _props$buttonProps.controlProps) === null || _props$buttonProps$co === void 0 ? void 0 : _props$buttonProps$co.largeUnreadMessageString : state.appStates.unreadMessageCount.toString() : "0",
55
56
  onClick: async () => {
56
57
  _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
57
58
  Event: _TelemetryConstants.TelemetryEvent.LCWChatButtonClicked
58
59
  });
59
60
 
60
- if (state.appStates.isMinimized) {
61
+ if (proactiveChatInNewWindow.current) {
62
+ const proactiveChatIsInPopoutModeEvent = {
63
+ eventName: _TelemetryConstants.BroadcastEvent.ProactiveChatIsInPopoutMode
64
+ };
65
+
66
+ _omnichannelChatComponents.BroadcastService.postMessage(proactiveChatIsInPopoutModeEvent);
67
+ } else if (state.appStates.isMinimized) {
61
68
  dispatch({
62
69
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_MINIMIZED,
63
70
  payload: false
@@ -66,6 +73,7 @@ const ChatButtonStateful = props => {
66
73
  await startChat();
67
74
  }
68
75
  },
76
+ unreadMessageString: (_props$buttonProps2 = props.buttonProps) === null || _props$buttonProps2 === void 0 ? void 0 : (_props$buttonProps2$c = _props$buttonProps2.controlProps) === null || _props$buttonProps2$c === void 0 ? void 0 : _props$buttonProps2$c.unreadMessageString,
69
77
  ...(buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.controlProps)
70
78
  };
71
79
  const outOfOfficeControlProps = {
@@ -74,6 +82,10 @@ const ChatButtonStateful = props => {
74
82
  titleText: "We're Offline",
75
83
  subtitleText: "No agents available",
76
84
  onClick: async () => {
85
+ _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
86
+ Event: _TelemetryConstants.TelemetryEvent.LCWChatButtonClicked
87
+ });
88
+
77
89
  if (state.appStates.isMinimized) {
78
90
  dispatch({
79
91
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_MINIMIZED,
@@ -86,6 +98,7 @@ const ChatButtonStateful = props => {
86
98
  });
87
99
  }
88
100
  },
101
+ unreadMessageString: (_props$buttonProps3 = props.buttonProps) === null || _props$buttonProps3 === void 0 ? void 0 : (_props$buttonProps3$c = _props$buttonProps3.controlProps) === null || _props$buttonProps3$c === void 0 ? void 0 : _props$buttonProps3$c.unreadMessageString,
89
102
  ...(outOfOfficeButtonProps === null || outOfOfficeButtonProps === void 0 ? void 0 : outOfOfficeButtonProps.controlProps)
90
103
  };
91
104
  (0, _react.useEffect)(() => {
@@ -107,6 +120,9 @@ const ChatButtonStateful = props => {
107
120
  });
108
121
  }
109
122
  }, []);
123
+ (0, _react.useEffect)(() => {
124
+ proactiveChatInNewWindow.current = state.appStates.proactiveChatStates.proactiveChatInNewWindow;
125
+ }, [state.appStates.proactiveChatStates.proactiveChatInNewWindow]);
110
126
  return /*#__PURE__*/_react.default.createElement(_omnichannelChatComponents.ChatButton, {
111
127
  componentOverrides: buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.componentOverrides,
112
128
  controlProps: outOfOperatingHours ? outOfOfficeControlProps : controlProps,
@@ -7,12 +7,12 @@ exports.default = exports.ConfirmationPaneStateful = void 0;
7
7
 
8
8
  var _TelemetryConstants = require("../../common/telemetry/TelemetryConstants");
9
9
 
10
+ var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
11
+
10
12
  var _react = _interopRequireWildcard(require("react"));
11
13
 
12
14
  var _utils = require("../../common/utils");
13
15
 
14
- var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
15
-
16
16
  var _DimLayer = require("../dimlayer/DimLayer");
17
17
 
18
18
  var _LiveChatWidgetActionType = require("../../contexts/common/LiveChatWidgetActionType");
@@ -21,18 +21,12 @@ var _NotificationHandler = require("../webchatcontainerstateful/webchatcontrolle
21
21
 
22
22
  var _NotificationScenarios = require("../webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios");
23
23
 
24
- var _PostChatSurveyMode = require("../postchatsurveypanestateful/enums/PostChatSurveyMode");
25
-
26
24
  var _TelemetryHelper = require("../../common/telemetry/TelemetryHelper");
27
25
 
28
26
  var _useChatAdapterStore = _interopRequireDefault(require("../../hooks/useChatAdapterStore"));
29
27
 
30
28
  var _useChatContextStore = _interopRequireDefault(require("../../hooks/useChatContextStore"));
31
29
 
32
- var _useChatSDKStore = _interopRequireDefault(require("../../hooks/useChatSDKStore"));
33
-
34
- var _Constants = require("../../common/Constants");
35
-
36
30
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
37
31
 
38
32
  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); }
@@ -41,21 +35,14 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
41
35
 
42
36
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
43
37
  const ConfirmationPaneStateful = props => {
44
- var _state$domainStates$l, _state$domainStates$l2, _state$domainStates$l3, _state$domainStates$l4;
45
-
46
38
  const initialTabIndexMap = new Map();
47
- let elements = []; // eslint-disable-next-line @typescript-eslint/no-explicit-any
48
-
49
- const chatSDK = (0, _useChatSDKStore.default)();
39
+ let elements = [];
50
40
  const [state, dispatch] = (0, _useChatContextStore.default)();
51
41
  const {
52
- endChat
42
+ prepareEndChat
53
43
  } = props; // eslint-disable-next-line @typescript-eslint/no-explicit-any
54
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
55
44
 
56
45
  const [adapter] = (0, _useChatAdapterStore.default)();
57
- const isPostChatEnabled = (_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.msdyn_postconversationsurveyenable;
58
- const postChatSurveyMode = (_state$domainStates$l3 = state.domainStates.liveChatConfig) === null || _state$domainStates$l3 === void 0 ? void 0 : (_state$domainStates$l4 = _state$domainStates$l3.LiveWSAndLiveChatEngJoin) === null || _state$domainStates$l4 === void 0 ? void 0 : _state$domainStates$l4.msdyn_postconversationsurveymode;
59
46
  const controlProps = {
60
47
  id: "oc-lcw-confirmation-pane",
61
48
  dir: state.domainStates.globalDir,
@@ -71,29 +58,8 @@ const ConfirmationPaneStateful = props => {
71
58
  });
72
59
 
73
60
  try {
74
- // check agent has joined conversation
75
- const conversationDetails = await chatSDK.getConversationDetails();
76
-
77
- if (isPostChatEnabled === "true" && postChatSurveyMode === _PostChatSurveyMode.PostChatSurveyMode.Embed && conversationDetails.canRenderPostChat === _Constants.Constants.truePascal) {
78
- const loadPostChatEvent = {
79
- eventName: "LoadPostChatSurvey"
80
- };
81
-
82
- _omnichannelChatComponents.BroadcastService.postMessage(loadPostChatEvent);
83
- } else {
84
- (0, _utils.setTabIndices)(elements, initialTabIndexMap, true);
85
-
86
- try {
87
- await endChat(adapter);
88
- } catch (error) {
89
- _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.ERROR, {
90
- Event: _TelemetryConstants.TelemetryEvent.CloseChatMethodException,
91
- ExceptionDetails: {
92
- exception: `Failed to endChat: ${error}`
93
- }
94
- });
95
- }
96
- }
61
+ (0, _utils.setTabIndices)(elements, initialTabIndexMap, true);
62
+ await prepareEndChat(adapter, state);
97
63
  } catch (ex) {
98
64
  _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.ERROR, {
99
65
  Event: _TelemetryConstants.TelemetryEvent.GetConversationDetailsCallFailed,
@@ -110,21 +110,13 @@ const FooterStateful = props => {
110
110
  isAudioMuted: state.appStates.isAudioMuted
111
111
  }
112
112
  };
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, {
113
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, !hideFooterDisplay && /*#__PURE__*/_react.default.createElement(_omnichannelChatComponents.Footer, {
121
114
  componentOverrides: footerProps === null || footerProps === void 0 ? void 0 : footerProps.componentOverrides,
122
115
  controlProps: controlProps,
123
116
  styleProps: footerProps === null || footerProps === void 0 ? void 0 : footerProps.styleProps
124
117
  }), /*#__PURE__*/_react.default.createElement(_AudioNotificationStateful.default, {
125
118
  audioSrc: (audioNotificationProps === null || audioNotificationProps === void 0 ? void 0 : audioNotificationProps.audioSrc) ?? _Audios.NewMessageNotificationSoundBase64,
126
- hideAudioNotificationButton: (footerProps === null || footerProps === void 0 ? void 0 : (_footerProps$controlP4 = footerProps.controlProps) === null || _footerProps$controlP4 === void 0 ? void 0 : _footerProps$controlP4.hideAudioNotificationButton) ?? false,
127
- isAudioMuted: state.appStates.isAudioMuted ?? false
119
+ 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
128
120
  }));
129
121
  };
130
122
 
@@ -116,8 +116,17 @@ const beautifyChatTranscripts = (chatTranscripts, renderMarkDown, attachmentMess
116
116
  let fileAttachmentName = _Constants.TranscriptConstants.DefaultFileAttachmentName;
117
117
  let dialogColor = _Constants.TranscriptConstants.CustomerDialogColor;
118
118
  let fontColor = _Constants.TranscriptConstants.CustomerFontColor;
119
+ const isSystemMessage = value.tags && value.tags.toLowerCase().indexOf(_Constants.Constants.systemMessageTag) !== -1;
120
+ const isControlMessage = value.isControlMessage && value.isControlMessage === true;
119
121
 
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) {
122
+ const isAdaptiveCard = value.contentType && value.contentType.toLowerCase() === _Constants.TranscriptConstants.AdaptiveCardType;
123
+
124
+ const isInternalMessage = value.deliveryMode && value.deliveryMode.toLowerCase() === _Constants.TranscriptConstants.InternalMode;
125
+
126
+ const isHiddenMessage = value.tags && value.tags.toLowerCase().indexOf(_Constants.Constants.hiddenTag.toLowerCase()) !== -1;
127
+ const shouldIgnoreMessage = isSystemMessage || isControlMessage || isAdaptiveCard || isInternalMessage || isHiddenMessage;
128
+
129
+ if (shouldIgnoreMessage) {
121
130
  return;
122
131
  } else if (value.from) {
123
132
  if (value.from.application) {
@@ -138,7 +147,7 @@ const beautifyChatTranscripts = (chatTranscripts, renderMarkDown, attachmentMess
138
147
 
139
148
  if (value.attachments && value.attachments.length > 0 && value.attachments[0].name) {
140
149
  fileAttachmentName = value.attachments[0].name;
141
- value.content = attachmentMessage ?? "The following attachment was uploaded during the conversation:" + fileAttachmentName;
150
+ value.content = attachmentMessage ? attachmentMessage + " " + fileAttachmentName : "The following attachment was uploaded during the conversation: " + fileAttachmentName;
142
151
  }
143
152
  }
144
153
 
@@ -43,6 +43,7 @@ const HeaderStateful = props => {
43
43
 
44
44
  const [outOfOperatingHours, setOutOfOperatingHours] = (0, _react.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");
45
45
  const outOfOfficeStyleProps = Object.assign({}, _defaultOutOfOfficeHeaderStyleProps.defaultOutOfOfficeHeaderStyleProps, outOfOfficeHeaderProps === null || outOfOfficeHeaderProps === void 0 ? void 0 : outOfOfficeHeaderProps.styleProps);
46
+ const conversationState = (0, _react.useRef)(state.appStates.conversationState);
46
47
  const controlProps = {
47
48
  id: "oc-lcw-header",
48
49
  dir: state.domainStates.globalDir,
@@ -63,17 +64,16 @@ const HeaderStateful = props => {
63
64
  Description: "Header Close button clicked."
64
65
  });
65
66
 
66
- if (state.appStates.conversationState === _ConversationState.ConversationState.Active) {
67
+ if (conversationState.current === _ConversationState.ConversationState.Active) {
67
68
  dispatch({
68
69
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_SHOW_CONFIRMATION,
69
70
  payload: true
70
71
  });
71
- } else if (state.appStates.conversationState === _ConversationState.ConversationState.Postchat) {
72
- dispatch({
73
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_SHOULD_SHOW_POST_CHAT,
74
- payload: false
75
- });
76
- await endChat(adapter);
72
+ } else {
73
+ const skipEndChatSDK = true;
74
+ const skipCloseChat = false;
75
+ const postMessageToOtherTabs = true;
76
+ await endChat(adapter, skipEndChatSDK, skipCloseChat, postMessageToOtherTabs);
77
77
  }
78
78
 
79
79
  dispatch({
@@ -82,8 +82,8 @@ const HeaderStateful = props => {
82
82
  });
83
83
  },
84
84
  ...(headerProps === null || headerProps === void 0 ? void 0 : headerProps.controlProps),
85
- hideTitle: state.appStates.conversationState === _ConversationState.ConversationState.Loading || (headerProps === null || headerProps === void 0 ? void 0 : (_headerProps$controlP = headerProps.controlProps) === null || _headerProps$controlP === void 0 ? void 0 : _headerProps$controlP.hideTitle),
86
- hideIcon: state.appStates.conversationState === _ConversationState.ConversationState.Loading || (headerProps === null || headerProps === void 0 ? void 0 : (_headerProps$controlP2 = headerProps.controlProps) === null || _headerProps$controlP2 === void 0 ? void 0 : _headerProps$controlP2.hideIcon),
85
+ hideTitle: state.appStates.conversationState === _ConversationState.ConversationState.Loading || state.appStates.conversationState === _ConversationState.ConversationState.PostchatLoading || (headerProps === null || headerProps === void 0 ? void 0 : (_headerProps$controlP = headerProps.controlProps) === null || _headerProps$controlP === void 0 ? void 0 : _headerProps$controlP.hideTitle),
86
+ hideIcon: state.appStates.conversationState === _ConversationState.ConversationState.Loading || state.appStates.conversationState === _ConversationState.ConversationState.PostchatLoading || (headerProps === null || headerProps === void 0 ? void 0 : (_headerProps$controlP2 = headerProps.controlProps) === null || _headerProps$controlP2 === void 0 ? void 0 : _headerProps$controlP2.hideIcon),
87
87
  hideCloseButton: state.appStates.conversationState === _ConversationState.ConversationState.Loading || state.appStates.conversationState === _ConversationState.ConversationState.Prechat || state.appStates.conversationState === _ConversationState.ConversationState.ReconnectChat || (headerProps === null || headerProps === void 0 ? void 0 : (_headerProps$controlP3 = headerProps.controlProps) === null || _headerProps$controlP3 === void 0 ? void 0 : _headerProps$controlP3.hideCloseButton)
88
88
  };
89
89
  const outOfOfficeControlProps = {
@@ -105,7 +105,11 @@ const HeaderStateful = props => {
105
105
  if (state.appStates.outsideOperatingHours) {
106
106
  setOutOfOperatingHours(true);
107
107
  }
108
- }, []);
108
+
109
+ if (state.appStates.conversationState) {
110
+ conversationState.current = state.appStates.conversationState;
111
+ }
112
+ }, [state.appStates]);
109
113
  return /*#__PURE__*/_react.default.createElement(_omnichannelChatComponents.Header, {
110
114
  componentOverrides: headerProps === null || headerProps === void 0 ? void 0 : headerProps.componentOverrides,
111
115
  controlProps: outOfOperatingHours || state.appStates.conversationState === _ConversationState.ConversationState.OutOfOffice ? outOfOfficeControlProps : controlProps,