@microsoft/omnichannel-chat-widget 0.1.0-main.15c1e2b → 0.1.0-main.18d1166

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 (69) hide show
  1. package/README.md +7 -34
  2. package/lib/cjs/common/Constants.js +3 -0
  3. package/lib/cjs/common/telemetry/TelemetryConstants.js +31 -4
  4. package/lib/cjs/common/utils.js +23 -2
  5. package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +11 -18
  6. package/lib/cjs/components/headerstateful/HeaderStateful.js +5 -4
  7. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/BotAuthActivitySubscriber.js +139 -0
  8. package/lib/cjs/components/livechatwidget/common/agentEndConversationHelper.js +36 -0
  9. package/lib/cjs/components/livechatwidget/common/createAdapter.js +2 -0
  10. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +5 -2
  11. package/lib/cjs/components/livechatwidget/common/endChat.js +43 -63
  12. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +11 -43
  13. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +3 -3
  14. package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +254 -2
  15. package/lib/cjs/components/livechatwidget/common/startChat.js +35 -50
  16. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +64 -27
  17. package/lib/cjs/components/loadingpanestateful/LoadingPaneStateful.js +8 -1
  18. package/lib/cjs/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +3 -1
  19. package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +1 -1
  20. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +7 -3
  21. package/lib/cjs/contexts/common/ConversationEndEntity.js +12 -0
  22. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +10 -7
  23. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +4 -1
  24. package/lib/cjs/contexts/createReducer.js +28 -2
  25. package/lib/cjs/hooks/useDebounce.js +28 -0
  26. package/lib/cjs/hooks/useWindowDimensions.js +30 -0
  27. package/lib/cjs/plugins/newMessageEventHandler.js +10 -0
  28. package/lib/esm/common/Constants.js +3 -0
  29. package/lib/esm/common/telemetry/TelemetryConstants.js +31 -4
  30. package/lib/esm/common/utils.js +20 -0
  31. package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +11 -18
  32. package/lib/esm/components/headerstateful/HeaderStateful.js +5 -4
  33. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/BotAuthActivitySubscriber.js +134 -0
  34. package/lib/esm/components/livechatwidget/common/agentEndConversationHelper.js +30 -0
  35. package/lib/esm/components/livechatwidget/common/createAdapter.js +2 -0
  36. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +5 -2
  37. package/lib/esm/components/livechatwidget/common/endChat.js +45 -65
  38. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +13 -45
  39. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +3 -3
  40. package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +254 -3
  41. package/lib/esm/components/livechatwidget/common/startChat.js +35 -50
  42. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +64 -27
  43. package/lib/esm/components/loadingpanestateful/LoadingPaneStateful.js +8 -1
  44. package/lib/esm/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +3 -1
  45. package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +1 -1
  46. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +5 -3
  47. package/lib/esm/contexts/common/ConversationEndEntity.js +5 -0
  48. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +10 -7
  49. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +4 -1
  50. package/lib/esm/contexts/createReducer.js +28 -2
  51. package/lib/esm/hooks/useDebounce.js +22 -0
  52. package/lib/esm/hooks/useWindowDimensions.js +23 -0
  53. package/lib/esm/plugins/newMessageEventHandler.js +10 -0
  54. package/lib/types/common/Constants.d.ts +3 -0
  55. package/lib/types/common/telemetry/TelemetryConstants.d.ts +27 -6
  56. package/lib/types/common/utils.d.ts +1 -0
  57. package/lib/types/components/confirmationpanestateful/interfaces/IConfirmationPaneStatefulParams.d.ts +0 -7
  58. package/lib/types/components/livechatwidget/common/ActivitySubscriber/BotAuthActivitySubscriber.d.ts +9 -0
  59. package/lib/types/components/livechatwidget/common/agentEndConversationHelper.d.ts +6 -0
  60. package/lib/types/components/livechatwidget/common/initWebChatComposer.d.ts +1 -1
  61. package/lib/types/components/livechatwidget/common/setPostChatContextAndLoadSurvey.d.ts +6 -1
  62. package/lib/types/components/livechatwidget/common/startChat.d.ts +2 -3
  63. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetControlProps.d.ts +1 -0
  64. package/lib/types/contexts/common/ConversationEndEntity.d.ts +4 -0
  65. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +5 -1
  66. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +10 -7
  67. package/lib/types/hooks/useDebounce.d.ts +3 -0
  68. package/lib/types/hooks/useWindowDimensions.d.ts +4 -0
  69. package/package.json +3 -3
package/README.md CHANGED
@@ -11,8 +11,6 @@
11
11
  1. [Installation](#installation)
12
12
  1. [Example Usage](#example-usage)
13
13
  1. [Components](#components)
14
- 1. [Common Scenarios](#common-scenarios)
15
- - [Disable Bot Magic Code](#disable-bot-magic-code)
16
14
  1. [See Also](#see-also)
17
15
 
18
16
  ## Introduction
@@ -97,7 +95,9 @@ const render = async () => {
97
95
  render();
98
96
  ```
99
97
 
100
- A sample widget can be found in this repo [here](https://github.com/microsoft/omnichannel-chat-widget/tree/main/chat-widget/sample). To build it, do ```yarn build-sample``` or ```yarn build-sample:dev``` from project root.
98
+ A javascript sample widget can be found in this repo [here](https://github.com/microsoft/omnichannel-chat-widget/tree/main/chat-widget/samples/javascript-sample). To build it, do ```yarn build-sample``` or ```yarn build-sample:dev``` from project root.
99
+
100
+ A typescript sample widget can be found [here](https://github.com/microsoft/omnichannel-chat-widget/tree/main/chat-widget/samples/typescript-sample)
101
101
 
102
102
  ## Components
103
103
 
@@ -129,6 +129,7 @@ These are components that are included in the ```@microsoft/omnichannel-chat-com
129
129
  | ----- | -------- | ----- |
130
130
  | WebChatContainer | The default wrapper around BotFramework's [WebChat](https://github.com/microsoft/BotFramework-WebChat), which is the message container we are using | [IWebChatContainerStatefulProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-widget/src/components/webchatcontainerstateful/interfaces/IWebChatContainerStatefulProps.ts) |
131
131
  | LiveChatWidget | The default widget that stitches the UI components with Chat SDK | [ILiveChatWidgetProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-widget/src/components/livechatwidget/interfaces/ILiveChatWidgetProps.ts) |
132
+ | PostChatLoadingPane | The default loading pane used after the chat is ended and before the post chat pane loads completely | [ILoadingPaneProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-components/src/components/loadingpane/interfaces/ILoadingPaneProps.ts) |
132
133
 
133
134
  Some of the interfaces listed in the Stateless table have Stateful counterparts defined in the ```@microsoft/omnichannel-chat-widget``` package. For example, [IConfirmationPaneStatefulProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-widget/src/components/confirmationpanestateful/interfaces/IConfirmationPaneStatefulProps.ts) extends [IConfirmationPaneProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-components/src/components/confirmationpane/interfaces/IConfirmationPaneProps.ts) with additional attributes that only makes sense in the stateful context.
134
135
 
@@ -220,40 +221,12 @@ const customizedFooterProp: IFooterProps = {
220
221
 
221
222
  > :pushpin: Note that [WebChat hooks](https://github.com/microsoft/BotFramework-WebChat/blob/main/docs/HOOKS.md) can also be used in any custom components.
222
223
 
223
- ## Common Scenarios
224
-
225
- ### Disable Bot Magic Code
226
-
227
- Configuration to disable the default behaviour of having to type the magic code in the conversation to complete the sign-in proccess with a bot. Instead, the magic code will be sent to the bot behind the scenes.
228
-
229
- 1. Add [MagicCodeForwarder.html](sample/MagicCodeForwarder.html) in the same location as the chat widget
230
-
231
- 2. Add `botMagicCode` configuration to disable default magic code feature
232
-
233
- > :exclamation: `fwdUrl` **MUST** have the same `origin` as the chat widget URL
234
-
235
- ```js
236
- const liveChatWidgetProps = {
237
- chatSDK: chatSDK, // mandatory
238
- chatConfig: chatConfig, // mandatory
239
- webChatContainerProps: {
240
- botMagicCode: {
241
- disabled: true,
242
- fwdUrl: 'http://localhost:8000/sample/MagicCodeForwarder.html'
243
- }
244
- },
245
- };
246
-
247
- ReactDOM.render(
248
- <LiveChatWidget {...liveChatWidgetProps}/>,
249
- document.getElementById("my-container")
250
- );
251
- ```
252
-
253
224
  ## See Also
254
225
 
255
226
  [Telemetry](https://github.com/microsoft/omnichannel-chat-widget/blob/main/docs/Telemetry.md)\
256
227
  [Create LCW widget with Webpack5 and TypeScript](https://github.com/microsoft/omnichannel-chat-widget/blob/main/docs/BuildingUsingWebpack5.md)\
257
228
  [Omnichannel Features](https://github.com/microsoft/omnichannel-chat-widget/blob/main/docs/Features.md)\
258
229
  [How to Add Visual Regression Tests](https://github.com/microsoft/omnichannel-chat-widget/blob/main/docs/VisualRegressionTestingGuide.md)\
259
- [Security](https://github.com/microsoft/omnichannel-chat-widget/blob/main/SECURITY.md)
230
+ [Security](https://github.com/microsoft/omnichannel-chat-widget/blob/main/SECURITY.md)\
231
+ [Third Party Cookie Support](https://github.com/microsoft/omnichannel-chat-widget/blob/main/docs/Tpc.md)\
232
+ [Storybook](https://microsoft.github.io/omnichannel-chat-widget/docs/storybook/)
@@ -28,6 +28,8 @@ _defineProperty(Constants, "truePascal", "True");
28
28
  _defineProperty(Constants, "true", "true");
29
29
  _defineProperty(Constants, "false", "false");
30
30
  _defineProperty(Constants, "maximumUnreadMessageCount", 99);
31
+ _defineProperty(Constants, "userParticipantTypeTag", "User");
32
+ _defineProperty(Constants, "botParticipantTypeTag", "Bot");
31
33
  _defineProperty(Constants, "channelIdKey", "ChannelId-");
32
34
  _defineProperty(Constants, "ChannelId", "lcw");
33
35
  _defineProperty(Constants, "CustomerTag", "FromCustomer");
@@ -135,6 +137,7 @@ _defineProperty(HtmlAttributeNames, "noreferrerTag", "noreferrer");
135
137
  _defineProperty(HtmlAttributeNames, "adaptiveCardClassName", "ac-adaptiveCard");
136
138
  _defineProperty(HtmlAttributeNames, "adaptiveCardTextBlockClassName", "ac-textBlock");
137
139
  _defineProperty(HtmlAttributeNames, "adaptiveCardToggleInputClassName", "ac-toggleInput");
140
+ _defineProperty(HtmlAttributeNames, "adaptiveCardActionSetClassName", "ac-actionSet");
138
141
  class WebChatMiddlewareConstants {}
139
142
  exports.WebChatMiddlewareConstants = WebChatMiddlewareConstants;
140
143
  _defineProperty(WebChatMiddlewareConstants, "nextVisibleActivity", "nextVisibleActivity");
@@ -56,6 +56,10 @@ exports.BroadcastEvent = BroadcastEvent;
56
56
  BroadcastEvent["RaiseErrorEvent"] = "RaiseErrorEvent";
57
57
  BroadcastEvent["NetworkDisconnected"] = "NetworkDisconnected";
58
58
  BroadcastEvent["NetworkReconnected"] = "NetworkReconnected";
59
+ BroadcastEvent["SigninCardReceived"] = "SignInCardReceived";
60
+ BroadcastEvent["BotAuthConfigRequest"] = "BotAuthConfigRequest";
61
+ BroadcastEvent["BotAuthConfigResponse"] = "BotAuthConfigResponse";
62
+ BroadcastEvent["HideChatVisibilityChangeEvent"] = "hideChatVisibilityChangeEvent";
59
63
  })(BroadcastEvent || (exports.BroadcastEvent = BroadcastEvent = {}));
60
64
  let TelemetryEvent;
61
65
  exports.TelemetryEvent = TelemetryEvent;
@@ -92,11 +96,10 @@ exports.TelemetryEvent = TelemetryEvent;
92
96
  TelemetryEvent["GetConversationDetailsCallFailed"] = "GetConversationDetailsCallFailed";
93
97
  TelemetryEvent["EndChatSDKCallFailed"] = "EndChatSDKCallFailed";
94
98
  TelemetryEvent["GetChatReconnectContextSDKCallFailed"] = "GetChatReconnectContextSDKCallFailed";
95
- TelemetryEvent["PostChatContextCallSucceed"] = "PostChatContextCallSucceed";
96
- TelemetryEvent["PostChatContextCallFailed"] = "PostChatContextCallFailed";
97
99
  TelemetryEvent["ParseAdaptiveCardFailed"] = "ParseAdaptiveCardFailed";
98
100
  TelemetryEvent["ClientDataStoreProviderFailed"] = "ClientDataStoreProviderFailed";
99
101
  TelemetryEvent["InMemoryDataStoreFailed"] = "InMemoryDataStoreFailed";
102
+ TelemetryEvent["ChatVisibilityChanged"] = "ChatVisibilityChanged";
100
103
  TelemetryEvent["WebChatLoaded"] = "WebChatLoaded";
101
104
  TelemetryEvent["LCWChatButtonClicked"] = "LCWChatButtonClicked";
102
105
  TelemetryEvent["LCWChatButtonShow"] = "LCWChatButtonShow";
@@ -104,6 +107,7 @@ exports.TelemetryEvent = TelemetryEvent;
104
107
  TelemetryEvent["WidgetLoadComplete"] = "WidgetLoadComplete";
105
108
  TelemetryEvent["WidgetLoadFailed"] = "WidgetLoadFailed";
106
109
  TelemetryEvent["StartChatMethodException"] = "StartChatMethodException";
110
+ TelemetryEvent["CloseChatCall"] = "CloseChatCall";
107
111
  TelemetryEvent["CloseChatMethodException"] = "CloseChatMethodException";
108
112
  TelemetryEvent["PrechatSurveyLoaded"] = "PrechatSurveyLoaded";
109
113
  TelemetryEvent["PrechatSubmitted"] = "PrechatSubmitted";
@@ -117,6 +121,7 @@ exports.TelemetryEvent = TelemetryEvent;
117
121
  TelemetryEvent["DownloadTranscriptResponseNullOrUndefined"] = "DownloadTranscriptResponseNullOrUndefined";
118
122
  TelemetryEvent["EmailTranscriptSent"] = "EmailTranscriptSent";
119
123
  TelemetryEvent["EmailTranscriptFailed"] = "EmailTranscriptFailed";
124
+ TelemetryEvent["ErrorUIPaneLoaded"] = "ErrorUIPaneLoaded";
120
125
  TelemetryEvent["DownloadTranscriptFailed"] = "DownloadTranscriptFailed";
121
126
  TelemetryEvent["StartChatFailed"] = "StartChatFailed";
122
127
  TelemetryEvent["IC3ThreadUpdateEventReceived"] = "IC3ThreadUpdateEventReceived";
@@ -125,8 +130,6 @@ exports.TelemetryEvent = TelemetryEvent;
125
130
  TelemetryEvent["LoadingPaneLoaded"] = "LoadingPaneLoaded";
126
131
  TelemetryEvent["EmailTranscriptLoaded"] = "EmailTranscriptLoaded";
127
132
  TelemetryEvent["OutOfOfficePaneLoaded"] = "OutOfOfficePaneLoaded";
128
- TelemetryEvent["PostChatSurveyLoadingPaneLoaded"] = "PostChatSurveyLoadingPaneLoaded";
129
- TelemetryEvent["PostChatSurveyLoaded"] = "PostChatSurveyLoaded";
130
133
  TelemetryEvent["ConfirmationPaneLoaded"] = "ConfirmationPaneLoaded";
131
134
  TelemetryEvent["ProactiveChatPaneLoaded"] = "ProactiveChatPaneLoaded";
132
135
  TelemetryEvent["ReconnectChatPaneLoaded"] = "ReconnectChatPaneLoaded";
@@ -139,6 +142,7 @@ exports.TelemetryEvent = TelemetryEvent;
139
142
  TelemetryEvent["SuppressBotMagicCodeSucceeded"] = "SuppressBotMagicCodeSucceeded";
140
143
  TelemetryEvent["SuppressBotMagicCodeFailed"] = "SuppressBotMagicCodeFailed";
141
144
  TelemetryEvent["GetConversationDetailsException"] = "GetConversationDetailsException";
145
+ TelemetryEvent["AppStatesException"] = "AppStatesException";
142
146
  TelemetryEvent["BrowserUnloadEventStarted"] = "BrowserUnloadEventStarted";
143
147
  TelemetryEvent["GetAuthTokenCalled"] = "GetAuthTokenCalled";
144
148
  TelemetryEvent["GetAuthTokenFailed"] = "GetAuthTokenFailed";
@@ -146,6 +150,11 @@ exports.TelemetryEvent = TelemetryEvent;
146
150
  TelemetryEvent["CustomerVoiceResponsePageLoaded"] = "CustomerVoiceResponsePageLoaded";
147
151
  TelemetryEvent["CustomerVoiceFormResponseSubmitted"] = "CustomerVoiceFormResponseSubmitted";
148
152
  TelemetryEvent["CustomerVoiceFormResponseError"] = "CustomerVoiceFormResponseError";
153
+ TelemetryEvent["BotAuthActivityEmptySasUrl"] = "BotAuthActivityEmptySasUrl";
154
+ TelemetryEvent["SetBotAuthProviderFetchConfig"] = "SetBotAuthProviderFetchConfig";
155
+ TelemetryEvent["SetBotAuthProviderHideCard"] = "SetBotAuthProviderHideCard";
156
+ TelemetryEvent["SetBotAuthProviderDisplayCard"] = "SetBotAuthProviderDisplayCard";
157
+ TelemetryEvent["SetBotAuthProviderNotFound"] = "SetBotAuthProviderNotFound";
149
158
  TelemetryEvent["ProcessingHTMLTextMiddlewareFailed"] = "ProcessingHTMLTextMiddlewareFailed";
150
159
  TelemetryEvent["ProcessingSanitizationMiddlewareFailed"] = "ProcessingSanitizationMiddlewareFailed";
151
160
  TelemetryEvent["FormatTagsMiddlewareJSONStringifyFailed"] = "FormatTagsMiddlewareJSONStringifyFailed";
@@ -155,6 +164,8 @@ exports.TelemetryEvent = TelemetryEvent;
155
164
  TelemetryEvent["DataMaskingRuleApplyFailed"] = "DataMaskingRuleApplyFailed";
156
165
  TelemetryEvent["IC3ClientEvent"] = "IC3ClientEvent";
157
166
  TelemetryEvent["ConversationEndedThreadEventReceived"] = "ConversationEndedThreadEventReceived";
167
+ TelemetryEvent["ConversationEndedByCustomer"] = "ConversationEndedByCustomer";
168
+ TelemetryEvent["ConversationEndedByAgent"] = "ConversationEndedByAgent";
158
169
  TelemetryEvent["InvalidConfiguration"] = "InvalidConfiguration";
159
170
  TelemetryEvent["SendTypingIndicatorSucceeded"] = "SendTypingIndicatorSucceeded";
160
171
  TelemetryEvent["SendTypingIndicatorFailed"] = "SendTypingIndicatorFailed";
@@ -173,9 +184,19 @@ exports.TelemetryEvent = TelemetryEvent;
173
184
  TelemetryEvent["MessageSent"] = "MessageSent";
174
185
  TelemetryEvent["MessageReceived"] = "MessageReceived";
175
186
  TelemetryEvent["SystemMessageReceived"] = "SystemMessageReceived";
187
+ TelemetryEvent["HistoryMessageReceived"] = "HistoryMessageReceived";
176
188
  TelemetryEvent["CustomContextReceived"] = "CustomContextReceived";
177
189
  TelemetryEvent["NetworkDisconnected"] = "NetworkDisconnected";
178
190
  TelemetryEvent["NetworkReconnected"] = "NetworkReconnected";
191
+ TelemetryEvent["LinkModePostChatWorkflowStarted"] = "LinkModePostChatWorkflowStarted";
192
+ TelemetryEvent["EmbedModePostChatWorkflowStarted"] = "EmbedModePostChatWorkflowStarted";
193
+ TelemetryEvent["PostChatWorkflowFromCustomer"] = "PostChatWorkflowFromCustomer";
194
+ TelemetryEvent["PostChatWorkflowFromAgent"] = "PostChatWorkflowFromAgent";
195
+ TelemetryEvent["PostChatWorkflowFromBot"] = "PostChatWorkflowFromBot";
196
+ TelemetryEvent["PostChatContextCallSucceed"] = "PostChatContextCallSucceed";
197
+ TelemetryEvent["PostChatContextCallFailed"] = "PostChatContextCallFailed";
198
+ TelemetryEvent["PostChatSurveyLoadingPaneLoaded"] = "PostChatSurveyLoadingPaneLoaded";
199
+ TelemetryEvent["PostChatSurveyLoaded"] = "PostChatSurveyLoaded";
179
200
  })(TelemetryEvent || (exports.TelemetryEvent = TelemetryEvent = {}));
180
201
  class TelemetryConstants {
181
202
  static map(eventTypeOrScenarioType) {
@@ -230,6 +251,12 @@ class TelemetryConstants {
230
251
  case TelemetryEvent.CustomerVoiceResponsePageLoaded:
231
252
  case TelemetryEvent.CustomerVoiceFormResponseSubmitted:
232
253
  case TelemetryEvent.CustomerVoiceFormResponseError:
254
+ case TelemetryEvent.LinkModePostChatWorkflowStarted:
255
+ case TelemetryEvent.EmbedModePostChatWorkflowStarted:
256
+ case TelemetryEvent.PostChatWorkflowFromCustomer:
257
+ case TelemetryEvent.PostChatWorkflowFromAgent:
258
+ case TelemetryEvent.PostChatWorkflowFromBot:
259
+ case TelemetryEvent.AppStatesException:
233
260
  return ScenarioType.ACTIONS;
234
261
  case TelemetryEvent.StartChatSDKCall:
235
262
  case TelemetryEvent.StartChatEventRecevied:
@@ -3,12 +3,13 @@
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.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;
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.debounceLeading = exports.createTimer = exports.changeLanguageCodeFormatForWebChat = exports.addDelayInMs = void 0;
7
7
  var _Constants = require("./Constants");
8
8
  var _DataStoreManager = require("./contextDataStore/DataStoreManager");
9
9
  var _KeyCodes = require("./KeyCodes");
10
10
  var _TelemetryConstants = require("./telemetry/TelemetryConstants");
11
11
  var _md5Typescript = require("md5-typescript");
12
+ var _this = void 0;
12
13
  const getElementBySelector = selector => {
13
14
  let element;
14
15
  if (typeof selector === "string") {
@@ -334,4 +335,24 @@ exports.addDelayInMs = addDelayInMs;
334
335
  const getBroadcastChannelName = (widgetId, widgetInstanceId) => {
335
336
  return widgetInstanceId && !isNullOrEmptyString(widgetInstanceId) ? `${widgetInstanceId}_${widgetId}` : widgetId;
336
337
  };
337
- exports.getBroadcastChannelName = getBroadcastChannelName;
338
+
339
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
340
+ exports.getBroadcastChannelName = getBroadcastChannelName;
341
+ const debounceLeading = function (fn) {
342
+ let ms = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 3000;
343
+ let timeoutId;
344
+ return function () {
345
+ // eslint-disable-line @typescript-eslint/no-explicit-any
346
+
347
+ if (!timeoutId) {
348
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
349
+ args[_key] = arguments[_key];
350
+ }
351
+ fn.apply(_this, args);
352
+ }
353
+ timeoutId = setTimeout(() => {
354
+ timeoutId = null;
355
+ }, ms);
356
+ };
357
+ };
358
+ exports.debounceLeading = debounceLeading;
@@ -10,11 +10,10 @@ var _react = _interopRequireWildcard(require("react"));
10
10
  var _utils = require("../../common/utils");
11
11
  var _DimLayer = require("../dimlayer/DimLayer");
12
12
  var _LiveChatWidgetActionType = require("../../contexts/common/LiveChatWidgetActionType");
13
- var _NotificationHandler = require("../webchatcontainerstateful/webchatcontroller/notification/NotificationHandler");
14
- var _NotificationScenarios = require("../webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios");
15
13
  var _TelemetryHelper = require("../../common/telemetry/TelemetryHelper");
16
14
  var _useChatAdapterStore = _interopRequireDefault(require("../../hooks/useChatAdapterStore"));
17
15
  var _useChatContextStore = _interopRequireDefault(require("../../hooks/useChatContextStore"));
16
+ var _ConversationEndEntity = require("../../contexts/common/ConversationEndEntity");
18
17
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
18
  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); }
20
19
  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; }
@@ -23,10 +22,7 @@ const ConfirmationPaneStateful = props => {
23
22
  const initialTabIndexMap = new Map();
24
23
  let elements = [];
25
24
  const [state, dispatch] = (0, _useChatContextStore.default)();
26
- const {
27
- prepareEndChat
28
- } = props;
29
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
25
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars
30
26
  const [adapter] = (0, _useChatAdapterStore.default)();
31
27
  const controlProps = {
32
28
  id: "oc-lcw-confirmation-pane",
@@ -40,18 +36,15 @@ const ConfirmationPaneStateful = props => {
40
36
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_SHOW_CONFIRMATION,
41
37
  payload: false
42
38
  });
43
- try {
44
- (0, _utils.setTabIndices)(elements, initialTabIndexMap, true);
45
- await prepareEndChat(adapter, state);
46
- } catch (ex) {
47
- _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.ERROR, {
48
- Event: _TelemetryConstants.TelemetryEvent.GetConversationDetailsCallFailed,
49
- ExceptionDetails: {
50
- exception: `Get Conversation Details Call Failed : ${ex}`
51
- }
52
- });
53
- _NotificationHandler.NotificationHandler.notifyError(_NotificationScenarios.NotificationScenarios.Connection, "Get Conversation Details Call Failed: " + ex);
54
- }
39
+ (0, _utils.setTabIndices)(elements, initialTabIndexMap, true);
40
+ dispatch({
41
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_ENDED_BY,
42
+ payload: _ConversationEndEntity.ConversationEndEntity.Customer
43
+ });
44
+ _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
45
+ Event: _TelemetryConstants.TelemetryEvent.ConversationEndedByCustomer,
46
+ Description: "Conversation is ended by customer."
47
+ });
55
48
  },
56
49
  onCancel: () => {
57
50
  _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
@@ -13,6 +13,7 @@ var _TelemetryHelper = require("../../common/telemetry/TelemetryHelper");
13
13
  var _defaultOutOfOfficeHeaderStyleProps = require("./common/styleProps/defaultOutOfOfficeHeaderStyleProps");
14
14
  var _useChatAdapterStore = _interopRequireDefault(require("../../hooks/useChatAdapterStore"));
15
15
  var _useChatContextStore = _interopRequireDefault(require("../../hooks/useChatContextStore"));
16
+ var _ConversationEndEntity = require("../../contexts/common/ConversationEndEntity");
16
17
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
18
  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); }
18
19
  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; }
@@ -30,7 +31,7 @@ const HeaderStateful = props => {
30
31
  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");
31
32
  const outOfOfficeStyleProps = Object.assign({}, _defaultOutOfOfficeHeaderStyleProps.defaultOutOfOfficeHeaderStyleProps, outOfOfficeHeaderProps === null || outOfOfficeHeaderProps === void 0 ? void 0 : outOfOfficeHeaderProps.styleProps);
32
33
  const conversationState = (0, _react.useRef)(state.appStates.conversationState);
33
- const conversationEndedByAgent = (0, _react.useRef)(state.appStates.conversationEndedByAgent);
34
+ const conversationEndedBy = (0, _react.useRef)(state.appStates.conversationEndedBy);
34
35
  const controlProps = {
35
36
  id: "oc-lcw-header",
36
37
  dir: state.domainStates.globalDir,
@@ -50,7 +51,7 @@ const HeaderStateful = props => {
50
51
  Event: _TelemetryConstants.TelemetryEvent.HeaderCloseButtonClicked,
51
52
  Description: "Header Close button clicked."
52
53
  });
53
- if (conversationState.current === _ConversationState.ConversationState.Active || conversationEndedByAgent.current) {
54
+ if (conversationState.current === _ConversationState.ConversationState.Active || conversationEndedBy.current === _ConversationEndEntity.ConversationEndEntity.Agent) {
54
55
  dispatch({
55
56
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_SHOW_CONFIRMATION,
56
57
  payload: true
@@ -72,7 +73,7 @@ const HeaderStateful = props => {
72
73
  ...(headerProps === null || headerProps === void 0 ? void 0 : headerProps.controlProps),
73
74
  hideTitle: state.appStates.conversationState === _ConversationState.ConversationState.Loading && !state.appStates.isStartChatFailing || 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),
74
75
  hideIcon: state.appStates.conversationState === _ConversationState.ConversationState.Loading && !state.appStates.isStartChatFailing || 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),
75
- hideCloseButton: state.appStates.conversationState === _ConversationState.ConversationState.Loading && !state.appStates.isStartChatFailing || 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)
76
+ hideCloseButton: state.appStates.conversationState === _ConversationState.ConversationState.Loading && !state.appStates.isStartChatFailing || state.appStates.conversationState === _ConversationState.ConversationState.PostchatLoading || 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)
76
77
  };
77
78
  const outOfOfficeControlProps = {
78
79
  id: "oc-lcw-header",
@@ -96,7 +97,7 @@ const HeaderStateful = props => {
96
97
  if (state.appStates.conversationState) {
97
98
  conversationState.current = state.appStates.conversationState;
98
99
  }
99
- conversationEndedByAgent.current = state.appStates.conversationEndedByAgent;
100
+ conversationEndedBy.current = state.appStates.conversationEndedBy;
100
101
  }, [state.appStates]);
101
102
  return /*#__PURE__*/_react.default.createElement(_omnichannelChatComponents.Header, {
102
103
  componentOverrides: headerProps === null || headerProps === void 0 ? void 0 : headerProps.componentOverrides,
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.BotAuthActivitySubscriber = void 0;
7
+ var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
8
+ var _TelemetryConstants = require("../../../../common/telemetry/TelemetryConstants");
9
+ var _TelemetryHelper = require("../../../../common/telemetry/TelemetryHelper");
10
+ 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; }
11
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
12
+ 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); }
13
+ const supportedSignInCardContentTypes = ["application/vnd.microsoft.card.signin", "application/vnd.microsoft.card.oauth"];
14
+ const botOauthUrlRegex = /[\S]+.botframework.com\/api\/oauth\/signin\?signin=([\S]+)/;
15
+ const delay = t => new Promise(resolve => setTimeout(resolve, t));
16
+ const fetchBotAuthConfigRetries = 3;
17
+ const fetchBotAuthConfigRetryInterval = 1000;
18
+ let response;
19
+ const extractSignInId = signInUrl => {
20
+ const result = botOauthUrlRegex.exec(signInUrl);
21
+ if (result && result[1]) {
22
+ return result[1];
23
+ }
24
+ return "";
25
+ };
26
+ const extractSasUrl = async attachment => {
27
+ let sasUrl = undefined;
28
+ if (attachment && attachment.content && attachment.content.tokenPostResource && attachment.content.tokenPostResource.sasUrl) {
29
+ sasUrl = attachment.content.tokenPostResource.sasUrl;
30
+ }
31
+ if (!sasUrl) {
32
+ const signInId = extractSignInId(attachment.content.buttons[0].value);
33
+ const getTestUrlEndpoint = `https://token.botframework.com/api/sas/gettesturl?signInId=${signInId}`;
34
+ try {
35
+ const response = await window.fetch(getTestUrlEndpoint);
36
+ if (response.status === 200) {
37
+ const responseJson = await response.json();
38
+ sasUrl = responseJson.sasUrl;
39
+ }
40
+ } catch {
41
+ sasUrl = undefined;
42
+ }
43
+ }
44
+ return sasUrl;
45
+ };
46
+ const fetchBotAuthConfig = async retries => {
47
+ _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
48
+ Event: _TelemetryConstants.TelemetryEvent.SetBotAuthProviderFetchConfig
49
+ });
50
+ const botAuthConfigRequestEvent = {
51
+ eventName: _TelemetryConstants.BroadcastEvent.BotAuthConfigRequest
52
+ };
53
+ _omnichannelChatComponents.BroadcastService.postMessage(botAuthConfigRequestEvent);
54
+ const listener = _omnichannelChatComponents.BroadcastService.getMessageByEventName(_TelemetryConstants.BroadcastEvent.BotAuthConfigResponse).subscribe(data => {
55
+ var _data$payload, _data$payload2;
56
+ response = ((_data$payload = data.payload) === null || _data$payload === void 0 ? void 0 : _data$payload.response) !== undefined ? (_data$payload2 = data.payload) === null || _data$payload2 === void 0 ? void 0 : _data$payload2.response : response;
57
+ listener.unsubscribe();
58
+ });
59
+ if (response !== undefined) {
60
+ //return response;
61
+ return response;
62
+ }
63
+ if (retries === 1) {
64
+ // Base Case
65
+ throw new Error();
66
+ }
67
+ await delay(fetchBotAuthConfigRetryInterval);
68
+ return await fetchBotAuthConfig(--retries);
69
+ };
70
+ class BotAuthActivitySubscriber {
71
+ constructor() {
72
+ _defineProperty(this, "observer", void 0);
73
+ _defineProperty(this, "signInCardSeen", void 0);
74
+ this.signInCardSeen = new Set();
75
+ }
76
+ applicable(activity) {
77
+ var _activity$attachments;
78
+ return (activity === null || activity === void 0 ? void 0 : (_activity$attachments = activity.attachments) === null || _activity$attachments === void 0 ? void 0 : _activity$attachments.length) > 0 && activity.attachments[0] && supportedSignInCardContentTypes.indexOf(activity.attachments[0].contentType) >= 0;
79
+ }
80
+ async apply(activity) {
81
+ this.observer.next(false); // Hides card
82
+ const attachment = activity.attachments[0];
83
+ const signInUrl = attachment.content.buttons[0].value;
84
+ const signInId = extractSignInId(signInUrl);
85
+ if (!signInId) {
86
+ return;
87
+ }
88
+ if (this.signInCardSeen.has(signInId)) {
89
+ // Prevents duplicate auth
90
+ return;
91
+ }
92
+ this.signInCardSeen.add(signInId);
93
+ const sasUrl = await extractSasUrl(attachment);
94
+ const event = {
95
+ eventName: _TelemetryConstants.BroadcastEvent.SigninCardReceived,
96
+ payload: {
97
+ sasUrl
98
+ }
99
+ };
100
+ if (!sasUrl) {
101
+ _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
102
+ Event: _TelemetryConstants.TelemetryEvent.BotAuthActivityEmptySasUrl,
103
+ Description: "SaS Url is empty"
104
+ });
105
+ return activity;
106
+ } else {
107
+ _omnichannelChatComponents.BroadcastService.postMessage(event);
108
+ }
109
+ try {
110
+ const response = await fetchBotAuthConfig(fetchBotAuthConfigRetries);
111
+ if (response === false) {
112
+ _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
113
+ Event: _TelemetryConstants.TelemetryEvent.SetBotAuthProviderHideCard
114
+ });
115
+ } else {
116
+ _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
117
+ Event: _TelemetryConstants.TelemetryEvent.SetBotAuthProviderDisplayCard
118
+ });
119
+ return activity;
120
+ }
121
+ } catch {
122
+ _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
123
+ Event: _TelemetryConstants.TelemetryEvent.SetBotAuthProviderNotFound
124
+ });
125
+ //this is to ensure listener continues waiting for response
126
+ if (this.signInCardSeen.has(signInId)) {
127
+ this.signInCardSeen.delete(signInId);
128
+ }
129
+ return activity;
130
+ }
131
+ }
132
+ async next(activity) {
133
+ if (this.applicable(activity)) {
134
+ return await this.apply(activity);
135
+ }
136
+ return activity;
137
+ }
138
+ }
139
+ exports.BotAuthActivitySubscriber = BotAuthActivitySubscriber;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.handleAgentEndConversation = void 0;
7
+ var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
8
+ var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
9
+ var _ConversationEndEntity = require("../../../contexts/common/ConversationEndEntity");
10
+ var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidgetActionType");
11
+ var _setPostChatContextAndLoadSurvey = require("./setPostChatContextAndLoadSurvey");
12
+ const handleAgentEndConversation = (props, state, dispatch) => {
13
+ const isPostChatEnabled = (0, _setPostChatContextAndLoadSurvey.checkPostChatEnabled)(props, state);
14
+ if (isPostChatEnabled) {
15
+ if (!state.appStates.postChatWorkflowInProgress) {
16
+ dispatch({
17
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_ENDED_BY,
18
+ payload: _ConversationEndEntity.ConversationEndEntity.Agent
19
+ });
20
+ _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
21
+ Event: _TelemetryConstants.TelemetryEvent.ConversationEndedByAgent,
22
+ Description: "Conversation is ended from agent side"
23
+ });
24
+ }
25
+ } else {
26
+ dispatch({
27
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_ENDED_BY,
28
+ payload: _ConversationEndEntity.ConversationEndEntity.Agent
29
+ });
30
+ _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
31
+ Event: _TelemetryConstants.TelemetryEvent.ConversationEndedByAgent,
32
+ Description: "Conversation is ended from agent side"
33
+ });
34
+ }
35
+ };
36
+ exports.handleAgentEndConversation = handleAgentEndConversation;
@@ -10,6 +10,7 @@ var _NotificationScenarios = require("../../webchatcontainerstateful/webchatcont
10
10
  var _defaultMiddlewareLocalizedTexts = require("../../webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts");
11
11
  var _ChatAdapterShim = require("./ChatAdapterShim");
12
12
  var _PauseActivitySubscriber = require("./ActivitySubscriber/PauseActivitySubscriber");
13
+ var _BotAuthActivitySubscriber = require("./ActivitySubscriber/BotAuthActivitySubscriber");
13
14
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
14
15
  const createAdapter = async chatSDK => {
15
16
  const chatAdapterOptionalParams = {
@@ -34,6 +35,7 @@ const createAdapter = async chatSDK => {
34
35
  if (chatSDK.isMockModeOn !== true) {
35
36
  adapter = new _ChatAdapterShim.ChatAdapterShim(adapter);
36
37
  adapter.addSubscriber(new _PauseActivitySubscriber.PauseActivitySubscriber());
38
+ adapter.addSubscriber(new _BotAuthActivitySubscriber.BotAuthActivitySubscriber());
37
39
  return adapter.chatAdapter;
38
40
  }
39
41
  return adapter;
@@ -427,7 +427,8 @@ const dummyDefaultProps = {
427
427
  alignItems: "center",
428
428
  margin: "0px 14px 0px 14px",
429
429
  textOverflow: "ellipsis !important",
430
- width: "max-content",
430
+ width: "90px",
431
+ whiteSpace: "nowrap",
431
432
  cursor: "pointer"
432
433
  },
433
434
  classNames: {
@@ -584,6 +585,7 @@ const dummyDefaultProps = {
584
585
  hideCallingContainer: false,
585
586
  hideChatButton: false,
586
587
  hideConfirmationPane: false,
588
+ hideErrorUIPane: false,
587
589
  hideFooter: false,
588
590
  hideHeader: false,
589
591
  hideLoadingPane: false,
@@ -1031,7 +1033,8 @@ const dummyDefaultProps = {
1031
1033
  margin: "0px 0px 20px 0px",
1032
1034
  display: "flex",
1033
1035
  order: 1,
1034
- alignSelf: "auto"
1036
+ alignSelf: "auto",
1037
+ overflow: "visible"
1035
1038
  },
1036
1039
  iconImageProps: {
1037
1040
  src: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxnIGZpbHRlcj0idXJsKCNmaWx0ZXIwX2lpKSI+DQo8cGF0aCBkPSJNMTUuMTk3MSAxNi4yNzI1VjI1Ljg1MjRDMTUuMTk3MSAyNy4zODExIDE1Ljg0MDEgMjcuNTIwMSAxNi45ODMyIDI3LjUyMDFMMjYuNzA4NCAyNy41NjQ5TDMxLjAwMzkgMzIuMzEyM1YyNy41NjQ5SDMxLjg5N0MzMi4xNzQzIDI3LjU2MzcgMzIuNDQ4NyAyNy41MDc3IDMyLjcwNDUgMjcuNDAwMUMzMi45NjAzIDI3LjI5MjQgMzMuMTkyNSAyNy4xMzUzIDMzLjM4NzggMjYuOTM3NUMzMy41ODMxIDI2LjczOTggMzMuNzM3NyAyNi41MDU0IDMzLjg0MjcgMjYuMjQ3N0MzMy45NDc4IDI1Ljk5IDM0LjAwMTMgMjUuNzE0IDM0LjAwMDEgMjUuNDM1NVYxNi4zMDM4QzM0LjAwMTMgMTYuMDI1NCAzMy45NDc4IDE1Ljc0OTQgMzMuODQyNyAxNS40OTE3QzMzLjczNzcgMTUuMjM0IDMzLjU4MzEgMTQuOTk5NiAzMy4zODc4IDE0LjgwMThDMzMuMTkyNSAxNC42MDQxIDMyLjk2MDMgMTQuNDQ2OSAzMi43MDQ1IDE0LjMzOTNDMzIuNDQ4NyAxNC4yMzE2IDMyLjE3NDMgMTQuMTc1NiAzMS44OTcgMTQuMTc0NEwxNy4zMDQ3IDE0LjE0MzFDMTcuMDI2OSAxNC4xNDM3IDE2Ljc1MiAxNC4xOTkyIDE2LjQ5NTcgMTQuMzA2NkMxNi4yMzk0IDE0LjQxNCAxNi4wMDY3IDE0LjU3MTEgMTUuODEwOSAxNC43Njg5QzE1LjYxNTIgMTQuOTY2NyAxNS40NjAyIDE1LjIwMTMgMTUuMzU0OCAxNS40NTkzQzE1LjI0OTUgMTUuNzE3MyAxNS4xOTU5IDE1Ljk5MzYgMTUuMTk3MSAxNi4yNzI1WiIgZmlsbD0iI0Q2RDZENiIvPg0KPC9nPg0KPGcgZmlsdGVyPSJ1cmwoI2ZpbHRlcjFfZGlpKSI+DQo8cGF0aCBkPSJNMjcuODczNSA2LjY5ODg3VjE4Ljg0MDlDMjcuODczNSAyMC43Nzg1IDI3LjA1NzIgMjAuOTU0NiAyNS42MDU4IDIwLjk1NDZMMTMuMjU4IDIxLjAxMTRMNy44MDQxNCAyNy4wMjg1VjIxLjAxMTRINi42NzAyN0M2LjMxODEyIDIxLjAwOTkgNS45Njk3MSAyMC45Mzg5IDUuNjQ0OTMgMjAuODAyNUM1LjMyMDE2IDIwLjY2NjEgNS4wMjUzOCAyMC40NjY4IDQuNzc3NDIgMjAuMjE2MkM0LjUyOTQ2IDE5Ljk2NTYgNC4zMzMxOSAxOS42Njg1IDQuMTk5OCAxOS4zNDE5QzQuMDY2NDIgMTkuMDE1MiAzLjk5ODUzIDE4LjY2NTUgNC4wMDAwMiAxOC4zMTI1VjYuNzM4NjRDMy45OTg1MyA2LjM4NTcxIDQuMDY2NDIgNi4wMzU5NSA0LjE5OTggNS43MDkzMUM0LjMzMzE5IDUuMzgyNjcgNC41Mjk0NiA1LjA4NTU3IDQuNzc3NDIgNC44MzQ5NUM1LjAyNTM4IDQuNTg0MzQgNS4zMjAxNiA0LjM4NTEzIDUuNjQ0OTMgNC4yNDg2OUM1Ljk2OTcxIDQuMTEyMjUgNi4zMTgxMiA0LjA0MTI2IDYuNjcwMjcgNC4wMzk3N0wyNS4xOTc2IDRDMjUuNTUwMiA0LjAwMDc0IDI1Ljg5OTMgNC4wNzExOCAyNi4yMjQ3IDQuMjA3MjlDMjYuNTUwMSA0LjM0MzM5IDI2Ljg0NTYgNC41NDI0OSAyNy4wOTQxIDQuNzkzMThDMjcuMzQyNyA1LjA0Mzg2IDI3LjUzOTUgNS4zNDEyMiAyNy42NzMyIDUuNjY4MjNDMjcuODA3IDUuOTk1MjMgMjcuODc1IDYuMzQ1NDYgMjcuODczNSA2LjY5ODg3WiIgZmlsbD0idXJsKCNwYWludDBfbGluZWFyKSIvPg0KPC9nPg0KPGRlZnM+DQo8ZmlsdGVyIGlkPSJmaWx0ZXIwX2lpIiB4PSIxNS4xOTcxIiB5PSIxNC4xNDMxIiB3aWR0aD0iMTguODAzMSIgaGVpZ2h0PSIxOC4xNjkzIiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz0ic1JHQiI+DQo8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PSIwIiByZXN1bHQ9IkJhY2tncm91bmRJbWFnZUZpeCIvPg0KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJCYWNrZ3JvdW5kSW1hZ2VGaXgiIHJlc3VsdD0ic2hhcGUiLz4NCjxmZUNvbG9yTWF0cml4IGluPSJTb3VyY2VBbHBoYSIgdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwIiByZXN1bHQ9ImhhcmRBbHBoYSIvPg0KPGZlT2Zmc2V0IGR4PSItMC4yIiBkeT0iLTAuMiIvPg0KPGZlQ29tcG9zaXRlIGluMj0iaGFyZEFscGhhIiBvcGVyYXRvcj0iYXJpdGhtZXRpYyIgazI9Ii0xIiBrMz0iMSIvPg0KPGZlQ29sb3JNYXRyaXggdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDAuMTcgMCIvPg0KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbjI9InNoYXBlIiByZXN1bHQ9ImVmZmVjdDFfaW5uZXJTaGFkb3ciLz4NCjxmZUNvbG9yTWF0cml4IGluPSJTb3VyY2VBbHBoYSIgdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwIiByZXN1bHQ9ImhhcmRBbHBoYSIvPg0KPGZlT2Zmc2V0IGR4PSItMC41IiBkeT0iLTAuNSIvPg0KPGZlQ29tcG9zaXRlIGluMj0iaGFyZEFscGhhIiBvcGVyYXRvcj0iYXJpdGhtZXRpYyIgazI9Ii0xIiBrMz0iMSIvPg0KPGZlQ29sb3JNYXRyaXggdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDAuMTYgMCIvPg0KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbjI9ImVmZmVjdDFfaW5uZXJTaGFkb3ciIHJlc3VsdD0iZWZmZWN0Ml9pbm5lclNoYWRvdyIvPg0KPC9maWx0ZXI+DQo8ZmlsdGVyIGlkPSJmaWx0ZXIxX2RpaSIgeD0iMCIgeT0iMCIgd2lkdGg9IjM5Ljg3MzYiIGhlaWdodD0iMzkuMDI4NSIgZmlsdGVyVW5pdHM9InVzZXJTcGFjZU9uVXNlIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9InNSR0IiPg0KPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMCIgcmVzdWx0PSJCYWNrZ3JvdW5kSW1hZ2VGaXgiLz4NCjxmZUNvbG9yTWF0cml4IGluPSJTb3VyY2VBbHBoYSIgdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwIi8+DQo8ZmVPZmZzZXQgZHg9IjQiIGR5PSI0Ii8+DQo8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSI0Ii8+DQo8ZmVDb2xvck1hdHJpeCB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMC4yNSAwIi8+DQo8ZmVCbGVuZCBtb2RlPSJub3JtYWwiIGluMj0iQmFja2dyb3VuZEltYWdlRml4IiByZXN1bHQ9ImVmZmVjdDFfZHJvcFNoYWRvdyIvPg0KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJlZmZlY3QxX2Ryb3BTaGFkb3ciIHJlc3VsdD0ic2hhcGUiLz4NCjxmZUNvbG9yTWF0cml4IGluPSJTb3VyY2VBbHBoYSIgdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwIiByZXN1bHQ9ImhhcmRBbHBoYSIvPg0KPGZlT2Zmc2V0IGR4PSItMiIgZHk9Ii0yIi8+DQo8ZmVDb21wb3NpdGUgaW4yPSJoYXJkQWxwaGEiIG9wZXJhdG9yPSJhcml0aG1ldGljIiBrMj0iLTEiIGszPSIxIi8+DQo8ZmVDb2xvck1hdHJpeCB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMC4xNyAwIi8+DQo8ZmVCbGVuZCBtb2RlPSJub3JtYWwiIGluMj0ic2hhcGUiIHJlc3VsdD0iZWZmZWN0Ml9pbm5lclNoYWRvdyIvPg0KPGZlQ29sb3JNYXRyaXggaW49IlNvdXJjZUFscGhhIiB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDAiIHJlc3VsdD0iaGFyZEFscGhhIi8+DQo8ZmVPZmZzZXQgZHg9Ii0xIiBkeT0iLTEiLz4NCjxmZUNvbXBvc2l0ZSBpbjI9ImhhcmRBbHBoYSIgb3BlcmF0b3I9ImFyaXRobWV0aWMiIGsyPSItMSIgazM9IjEiLz4NCjxmZUNvbG9yTWF0cml4IHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwLjE2IDAiLz4NCjxmZUJsZW5kIG1vZGU9Im5vcm1hbCIgaW4yPSJlZmZlY3QyX2lubmVyU2hhZG93IiByZXN1bHQ9ImVmZmVjdDNfaW5uZXJTaGFkb3ciLz4NCjwvZmlsdGVyPg0KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDBfbGluZWFyIiB4MT0iLTAuMzk1MDAxIiB5MT0iMjMuMTI4MiIgeDI9IjIwLjEwNTgiIHkyPSIzNy44NDc0IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+DQo8c3RvcCBzdG9wLWNvbG9yPSIjRUZFRkVGIi8+DQo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IndoaXRlIi8+DQo8L2xpbmVhckdyYWRpZW50Pg0KPC9kZWZzPg0KPC9zdmc+DQo=",