@microsoft/omnichannel-chat-widget 0.1.0-main.99b5123 → 0.1.0-main.a27ec4b

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 (40) hide show
  1. package/lib/cjs/common/storage/default/defaultCacheManager.js +34 -0
  2. package/lib/cjs/common/storage/default/defaultClientDataStoreProvider.js +114 -0
  3. package/lib/cjs/common/storage/default/defaultInMemoryDataStore.js +86 -0
  4. package/lib/cjs/common/telemetry/TelemetryConstants.js +6 -0
  5. package/lib/cjs/components/footerstateful/FooterStateful.js +1 -8
  6. package/lib/cjs/components/livechatwidget/common/authHelper.js +16 -3
  7. package/lib/cjs/components/livechatwidget/common/createFooter.js +7 -16
  8. package/lib/cjs/components/livechatwidget/common/createInternetConnectionChangeHandler.js +12 -0
  9. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +15 -2
  10. package/lib/cjs/components/livechatwidget/common/startChat.js +12 -3
  11. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +81 -44
  12. package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +6 -3
  13. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +2 -1
  14. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +10 -0
  15. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +10 -3
  16. package/lib/esm/common/storage/default/defaultCacheManager.js +19 -0
  17. package/lib/esm/common/storage/default/defaultClientDataStoreProvider.js +102 -0
  18. package/lib/esm/common/storage/default/defaultInMemoryDataStore.js +71 -0
  19. package/lib/esm/common/telemetry/TelemetryConstants.js +6 -0
  20. package/lib/esm/components/footerstateful/FooterStateful.js +1 -8
  21. package/lib/esm/components/livechatwidget/common/authHelper.js +14 -3
  22. package/lib/esm/components/livechatwidget/common/createFooter.js +4 -15
  23. package/lib/esm/components/livechatwidget/common/createInternetConnectionChangeHandler.js +8 -0
  24. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +15 -2
  25. package/lib/esm/components/livechatwidget/common/startChat.js +13 -4
  26. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +81 -44
  27. package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +5 -3
  28. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +2 -1
  29. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +3 -0
  30. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +8 -3
  31. package/lib/types/common/storage/default/defaultCacheManager.d.ts +4 -0
  32. package/lib/types/common/storage/default/defaultClientDataStoreProvider.d.ts +2 -0
  33. package/lib/types/common/storage/default/defaultInMemoryDataStore.d.ts +6 -0
  34. package/lib/types/common/telemetry/TelemetryConstants.d.ts +5 -1
  35. package/lib/types/components/livechatwidget/common/authHelper.d.ts +3 -2
  36. package/lib/types/components/webchatcontainerstateful/interfaces/IRenderingMiddlewareProps.d.ts +2 -1
  37. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.d.ts +1 -1
  38. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.d.ts +2 -0
  39. package/lib/types/contexts/common/LiveChatWidgetContextInitialState.d.ts +1 -2
  40. package/package.json +2 -2
@@ -3,25 +3,14 @@ import React from "react";
3
3
  import { decodeComponentString } from "@microsoft/omnichannel-chat-components";
4
4
  import { shouldShowFooter } from "../../../controller/componentController";
5
5
  export const createFooter = (props, state) => {
6
- var _props$footerProps, _props$controlProps, _props$componentOverr, _props$componentOverr2;
6
+ var _props$controlProps, _props$componentOverr;
7
7
 
8
- const footerPropsHidden = { ...props.footerProps,
9
- controlProps: { ...((_props$footerProps = props.footerProps) === null || _props$footerProps === void 0 ? void 0 : _props$footerProps.controlProps),
10
- hideDownloadTranscriptButton: true,
11
- hideEmailTranscriptButton: true,
12
- hideAudioNotificationButton: true
13
- }
14
- };
15
- const footer = !((_props$controlProps = props.controlProps) !== null && _props$controlProps !== void 0 && _props$controlProps.hideFooter) && shouldShowFooter(state) ? decodeComponentString((_props$componentOverr = props.componentOverrides) === null || _props$componentOverr === void 0 ? void 0 : _props$componentOverr.footer) || /*#__PURE__*/React.createElement(FooterStateful, {
8
+ const hideFooterDisplay = !((_props$controlProps = props.controlProps) !== null && _props$controlProps !== void 0 && _props$controlProps.hideFooter) && shouldShowFooter(state) ? false : true;
9
+ const footer = decodeComponentString((_props$componentOverr = props.componentOverrides) === null || _props$componentOverr === void 0 ? void 0 : _props$componentOverr.footer) || /*#__PURE__*/React.createElement(FooterStateful, {
16
10
  footerProps: props.footerProps,
17
11
  downloadTranscriptProps: props.downloadTranscriptProps,
18
12
  audioNotificationProps: props.audioNotificationProps,
19
- hideFooterDisplay: false
20
- }) : decodeComponentString((_props$componentOverr2 = props.componentOverrides) === null || _props$componentOverr2 === void 0 ? void 0 : _props$componentOverr2.footer) || /*#__PURE__*/React.createElement(FooterStateful, {
21
- footerProps: footerPropsHidden,
22
- downloadTranscriptProps: props.downloadTranscriptProps,
23
- audioNotificationProps: props.audioNotificationProps,
24
- hideFooterDisplay: true
13
+ hideFooterDisplay: hideFooterDisplay
25
14
  });
26
15
  return footer;
27
16
  };
@@ -2,6 +2,8 @@ import { Constants } from "../../../common/Constants";
2
2
  import { NotificationHandler } from "../../webchatcontainerstateful/webchatcontroller/notification/NotificationHandler";
3
3
  import { NotificationScenarios } from "../../webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios";
4
4
  import { defaultMiddlewareLocalizedTexts } from "../../webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts";
5
+ import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
6
+ import { LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
5
7
 
6
8
  const isInternetConnected = async () => {
7
9
  try {
@@ -18,8 +20,14 @@ export const createInternetConnectionChangeHandler = async () => {
18
20
  const connected = await isInternetConnected();
19
21
 
20
22
  if (!connected) {
23
+ TelemetryHelper.logActionEvent(LogLevel.WARN, {
24
+ Event: TelemetryEvent.NetworkDisconnected
25
+ });
21
26
  NotificationHandler.notifyError(NotificationScenarios.InternetConnection, defaultMiddlewareLocalizedTexts.MIDDLEWARE_BANNER_NO_INTERNET_CONNECTION);
22
27
  } else {
28
+ TelemetryHelper.logActionEvent(LogLevel.WARN, {
29
+ Event: TelemetryEvent.NetworkReconnected
30
+ });
23
31
  NotificationHandler.notifySuccess(NotificationScenarios.InternetConnection, defaultMiddlewareLocalizedTexts.MIDDLEWARE_BANNER_INTERNET_BACK_ONLINE);
24
32
  }
25
33
  }; // Checking connection status on online & offline events due to possible false positives
@@ -870,7 +870,7 @@ export const dummyDefaultProps = {
870
870
  className: undefined
871
871
  },
872
872
  closeButtonProps: {
873
- id: "oc-lcw-header-minimize-button",
873
+ id: "oc-lcw-header-close-button",
874
874
  type: "icon",
875
875
  iconName: "ChromeClose",
876
876
  ariaLabel: "Close",
@@ -1186,7 +1186,17 @@ export const dummyDefaultProps = {
1186
1186
  hideSubtitle: false,
1187
1187
  subtitleText: "Live chat support!",
1188
1188
  hideCloseButton: false,
1189
- closeButtonAriaLabel: "Close Button",
1189
+ closeButtonProps: {
1190
+ id: "oc-lcw-proactivechat-closebutton",
1191
+ type: "icon",
1192
+ iconName: "ChromeClose",
1193
+ ariaLabel: "Close",
1194
+ imageIconProps: undefined,
1195
+ text: "Close",
1196
+ onClick: undefined,
1197
+ className: undefined,
1198
+ hideButtonTitle: true
1199
+ },
1190
1200
  isBodyContainerHorizantal: false,
1191
1201
  hideBodyTitle: false,
1192
1202
  bodyTitleText: "Hi! Have any questions? I am here to help.",
@@ -1655,6 +1665,9 @@ export const dummyDefaultProps = {
1655
1665
  },
1656
1666
  attachmentSizeStyles: {
1657
1667
  display: "none"
1668
+ },
1669
+ receivedMessageAnchorStyles: {
1670
+ color: "white"
1658
1671
  }
1659
1672
  },
1660
1673
  localizedTexts: {
@@ -14,7 +14,7 @@ import { setPostChatContextAndLoadSurvey } from "./setPostChatContextAndLoadSurv
14
14
  import { updateSessionDataForTelemetry } from "./updateSessionDataForTelemetry";
15
15
  import { BroadcastService } from "@microsoft/omnichannel-chat-components";
16
16
  import { ActivityStreamHandler } from "./ActivityStreamHandler";
17
- import { handleAuthentication } from "./authHelper"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
17
+ import { getAuthClientFunction, handleAuthentication } from "./authHelper"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
18
18
 
19
19
  let optionalParams = {}; // eslint-disable-next-line @typescript-eslint/no-explicit-any
20
20
 
@@ -93,6 +93,17 @@ const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAda
93
93
  try {
94
94
  var _newAdapter$activity$, _TelemetryTimers$Widg;
95
95
 
96
+ const authClientFunction = getAuthClientFunction(chatConfig);
97
+
98
+ if (getAuthToken && authClientFunction) {
99
+ // set auth token to chat sdk before start chat
100
+ const authSuccess = await handleAuthentication(chatSDK, chatConfig, getAuthToken);
101
+
102
+ if (!authSuccess) {
103
+ return;
104
+ }
105
+ }
106
+
96
107
  let isStartChatSuccessful = false; //Check if chat retrieved from cache
97
108
 
98
109
  if (persistedState || params !== null && params !== void 0 && params.liveChatContext) {
@@ -115,9 +126,7 @@ const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAda
115
126
  }); // Set custom context params
116
127
 
117
128
  setCustomContextParams(chatSDK);
118
- optionalParams = Object.assign({}, params, optionalParams); // set auth token to chat sdk before start chat
119
-
120
- await handleAuthentication(chatSDK, chatConfig, getAuthToken);
129
+ optionalParams = Object.assign({}, params, optionalParams);
121
130
  await chatSDK.startChat(optionalParams);
122
131
  isStartChatSuccessful = true;
123
132
  } catch (error) {
@@ -44,7 +44,8 @@ import useChatAdapterStore from "../../../hooks/useChatAdapterStore";
44
44
  import useChatContextStore from "../../../hooks/useChatContextStore";
45
45
  import useChatSDKStore from "../../../hooks/useChatSDKStore";
46
46
  import { ActivityStreamHandler } from "../common/ActivityStreamHandler";
47
- import { Constants } from "../../../common/Constants";
47
+ import { registerBroadcastServiceForLocalStorage } from "../../../common/storage/default/defaultCacheManager";
48
+ import { defaultClientDataStoreProvider } from "../../../common/storage/default/defaultClientDataStoreProvider";
48
49
  export const LiveChatWidgetStateful = props => {
49
50
  var _props$webChatContain, _props$styleProps, _chatSDK$omnichannelC, _props$controlProps, _props$controlProps2, _props$webChatContain3, _props$webChatContain4, _props$styleProps2, _props$controlProps14, _props$controlProps15, _props$componentOverr, _props$controlProps16, _props$componentOverr2, _props$controlProps17, _props$componentOverr3, _props$controlProps18, _props$componentOverr4, _props$controlProps19, _props$componentOverr5, _props$controlProps20, _props$componentOverr6, _props$controlProps21, _props$componentOverr7, _props$controlProps22, _props$controlProps23, _props$componentOverr8, _props$controlProps24, _props$componentOverr9, _props$controlProps25, _props$componentOverr10, _props$componentOverr11, _props$componentOverr12;
50
51
 
@@ -95,30 +96,39 @@ export const LiveChatWidgetStateful = props => {
95
96
  };
96
97
 
97
98
  useEffect(() => {
98
- var _props$controlProps3, _props$controlProps4, _props$controlProps5, _props$controlProps7, _props$chatConfig, _props$chatConfig$Cha, _props$controlProps8, _props$reconnectChatP, _props$chatConfig2, _props$chatConfig2$Li;
99
+ var _props$controlProps4, _props$controlProps5, _props$controlProps6, _props$controlProps8, _props$chatConfig, _props$chatConfig$Cha, _props$controlProps9, _props$reconnectChatP, _props$chatConfig2, _props$chatConfig2$Li, _props$reconnectChatP4, _state$domainStates;
100
+
101
+ // Add default localStorage support for widget
102
+ if (props.contextDataStore === undefined) {
103
+ var _chatSDK$omnichannelC2, _chatSDK$omnichannelC3, _props$controlProps3;
104
+
105
+ registerBroadcastServiceForLocalStorage(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC2 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC2 === void 0 ? void 0 : _chatSDK$omnichannelC2.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC3 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC3 === void 0 ? void 0 : _chatSDK$omnichannelC3.widgetId, (props === null || props === void 0 ? void 0 : (_props$controlProps3 = props.controlProps) === null || _props$controlProps3 === void 0 ? void 0 : _props$controlProps3.widgetInstanceId) ?? "");
106
+ DataStoreManager.clientDataStore = defaultClientDataStoreProvider();
107
+ } else {
108
+ DataStoreManager.clientDataStore = props.contextDataStore;
109
+ }
99
110
 
100
111
  registerTelemetryLoggers(props, dispatch);
101
112
  createInternetConnectionChangeHandler();
102
- DataStoreManager.clientDataStore = props.contextDataStore ?? undefined;
103
113
  dispatch({
104
114
  type: LiveChatWidgetActionType.SET_WIDGET_ELEMENT_ID,
105
115
  payload: widgetElementId
106
116
  });
107
117
  dispatch({
108
118
  type: LiveChatWidgetActionType.SET_SKIP_CHAT_BUTTON_RENDERING,
109
- payload: ((_props$controlProps3 = props.controlProps) === null || _props$controlProps3 === void 0 ? void 0 : _props$controlProps3.skipChatButtonRendering) || false
119
+ payload: ((_props$controlProps4 = props.controlProps) === null || _props$controlProps4 === void 0 ? void 0 : _props$controlProps4.skipChatButtonRendering) || false
110
120
  });
111
121
  dispatch({
112
122
  type: LiveChatWidgetActionType.SET_E2VV_ENABLED,
113
123
  payload: false
114
124
  });
115
125
 
116
- if ((_props$controlProps4 = props.controlProps) !== null && _props$controlProps4 !== void 0 && _props$controlProps4.widgetInstanceId && !isNullOrEmptyString((_props$controlProps5 = props.controlProps) === null || _props$controlProps5 === void 0 ? void 0 : _props$controlProps5.widgetInstanceId)) {
117
- var _props$controlProps6;
126
+ if ((_props$controlProps5 = props.controlProps) !== null && _props$controlProps5 !== void 0 && _props$controlProps5.widgetInstanceId && !isNullOrEmptyString((_props$controlProps6 = props.controlProps) === null || _props$controlProps6 === void 0 ? void 0 : _props$controlProps6.widgetInstanceId)) {
127
+ var _props$controlProps7;
118
128
 
119
129
  dispatch({
120
130
  type: LiveChatWidgetActionType.SET_WIDGET_INSTANCE_ID,
121
- payload: (_props$controlProps6 = props.controlProps) === null || _props$controlProps6 === void 0 ? void 0 : _props$controlProps6.widgetInstanceId
131
+ payload: (_props$controlProps7 = props.controlProps) === null || _props$controlProps7 === void 0 ? void 0 : _props$controlProps7.widgetInstanceId
122
132
  });
123
133
  }
124
134
 
@@ -129,35 +139,48 @@ export const LiveChatWidgetStateful = props => {
129
139
  });
130
140
  }); // Initialize global dir
131
141
 
132
- const globalDir = ((_props$controlProps7 = props.controlProps) === null || _props$controlProps7 === void 0 ? void 0 : _props$controlProps7.dir) ?? getLocaleDirection((_props$chatConfig = props.chatConfig) === null || _props$chatConfig === void 0 ? void 0 : (_props$chatConfig$Cha = _props$chatConfig.ChatWidgetLanguage) === null || _props$chatConfig$Cha === void 0 ? void 0 : _props$chatConfig$Cha.msdyn_localeid);
142
+ const globalDir = ((_props$controlProps8 = props.controlProps) === null || _props$controlProps8 === void 0 ? void 0 : _props$controlProps8.dir) ?? getLocaleDirection((_props$chatConfig = props.chatConfig) === null || _props$chatConfig === void 0 ? void 0 : (_props$chatConfig$Cha = _props$chatConfig.ChatWidgetLanguage) === null || _props$chatConfig$Cha === void 0 ? void 0 : _props$chatConfig$Cha.msdyn_localeid);
133
143
  dispatch({
134
144
  type: LiveChatWidgetActionType.SET_GLOBAL_DIR,
135
145
  payload: globalDir
136
146
  });
137
147
 
138
- if (!((_props$controlProps8 = props.controlProps) !== null && _props$controlProps8 !== void 0 && _props$controlProps8.skipChatButtonRendering) && (_props$reconnectChatP = props.reconnectChatPaneProps) !== null && _props$reconnectChatP !== void 0 && _props$reconnectChatP.reconnectId) {
148
+ if (!((_props$controlProps9 = props.controlProps) !== null && _props$controlProps9 !== void 0 && _props$controlProps9.skipChatButtonRendering) && (_props$reconnectChatP = props.reconnectChatPaneProps) !== null && _props$reconnectChatP !== void 0 && _props$reconnectChatP.reconnectId) {
139
149
  var _props$reconnectChatP2, _props$reconnectChatP3;
140
150
 
141
151
  startUnauthenticatedReconnectChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, (_props$reconnectChatP2 = props.reconnectChatPaneProps) === null || _props$reconnectChatP2 === void 0 ? void 0 : _props$reconnectChatP2.isReconnectEnabled, (_props$reconnectChatP3 = props.reconnectChatPaneProps) === null || _props$reconnectChatP3 === void 0 ? void 0 : _props$reconnectChatP3.reconnectId, initStartChat);
142
152
  return;
143
- } // Check if auth settings enabled, do not connect to existing chat from cache during refresh/re-load
153
+ } // Checks if reconnectId is present for auth chat. If it is present, then it shows reconnect chat pane,
154
+ // where customer can choose to continue previous conversation or start new conversation
144
155
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
145
156
 
146
157
 
147
158
  const isAuthenticationSettingsEnabled = (_props$chatConfig2 = props.chatConfig) !== null && _props$chatConfig2 !== void 0 && (_props$chatConfig2$Li = _props$chatConfig2.LiveChatConfigAuthSettings) !== null && _props$chatConfig2$Li !== void 0 && _props$chatConfig2$Li.msdyn_javascriptclientfunction ? true : false;
148
159
 
149
- if (isAuthenticationSettingsEnabled === false) {
150
- var _state$domainStates;
160
+ if (!state.appStates.skipChatButtonRendering && state.appStates.conversationState === ConversationState.Active && isAuthenticationSettingsEnabled === true && (_props$reconnectChatP4 = props.reconnectChatPaneProps) !== null && _props$reconnectChatP4 !== void 0 && _props$reconnectChatP4.isReconnectEnabled) {
161
+ getReconnectIdForAuthenticatedChat(props, chatSDK).then(authReconnectId => {
162
+ if (authReconnectId && !state.appStates.reconnectId) {
163
+ dispatch({
164
+ type: LiveChatWidgetActionType.SET_RECONNECT_ID,
165
+ payload: authReconnectId
166
+ });
167
+ dispatch({
168
+ type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
169
+ payload: ConversationState.ReconnectChat
170
+ });
171
+ }
172
+ });
173
+ return;
174
+ }
151
175
 
152
- if (!isUndefinedOrEmpty((_state$domainStates = state.domainStates) === null || _state$domainStates === void 0 ? void 0 : _state$domainStates.liveChatContext) && state.appStates.conversationState === ConversationState.Active) {
153
- var _state$domainStates2;
176
+ if (!state.appStates.skipChatButtonRendering && !isUndefinedOrEmpty((_state$domainStates = state.domainStates) === null || _state$domainStates === void 0 ? void 0 : _state$domainStates.liveChatContext) && state.appStates.conversationState === ConversationState.Active) {
177
+ var _state$domainStates2;
154
178
 
155
- const optionalParams = {
156
- liveChatContext: (_state$domainStates2 = state.domainStates) === null || _state$domainStates2 === void 0 ? void 0 : _state$domainStates2.liveChatContext
157
- };
158
- initStartChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, optionalParams);
159
- return;
160
- }
179
+ const optionalParams = {
180
+ liveChatContext: (_state$domainStates2 = state.domainStates) === null || _state$domainStates2 === void 0 ? void 0 : _state$domainStates2.liveChatContext
181
+ };
182
+ initStartChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, optionalParams);
183
+ return;
161
184
  } // All other case should show start chat button, skipChatButtonRendering will take care of it own
162
185
 
163
186
 
@@ -169,16 +192,16 @@ export const LiveChatWidgetStateful = props => {
169
192
 
170
193
  useEffect(() => {
171
194
  if (state.appStates.skipChatButtonRendering) {
172
- var _props$reconnectChatP4;
195
+ var _props$reconnectChatP5;
173
196
 
174
197
  BroadcastService.postMessage({
175
198
  eventName: BroadcastEvent.ChatInitiated
176
199
  });
177
200
 
178
- if ((_props$reconnectChatP4 = props.reconnectChatPaneProps) !== null && _props$reconnectChatP4 !== void 0 && _props$reconnectChatP4.reconnectId && !state.appStates.reconnectId) {
179
- var _props$reconnectChatP5, _props$reconnectChatP6, _props$reconnectChatP7;
201
+ if ((_props$reconnectChatP5 = props.reconnectChatPaneProps) !== null && _props$reconnectChatP5 !== void 0 && _props$reconnectChatP5.reconnectId && !state.appStates.reconnectId) {
202
+ var _props$reconnectChatP6, _props$reconnectChatP7, _props$reconnectChatP8;
180
203
 
181
- handleUnauthenticatedReconnectChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, (_props$reconnectChatP5 = props.reconnectChatPaneProps) === null || _props$reconnectChatP5 === void 0 ? void 0 : _props$reconnectChatP5.isReconnectEnabled, (_props$reconnectChatP6 = props.reconnectChatPaneProps) === null || _props$reconnectChatP6 === void 0 ? void 0 : _props$reconnectChatP6.reconnectId, initStartChat, (_props$reconnectChatP7 = props.reconnectChatPaneProps) === null || _props$reconnectChatP7 === void 0 ? void 0 : _props$reconnectChatP7.redirectInSameWindow);
204
+ handleUnauthenticatedReconnectChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, (_props$reconnectChatP6 = props.reconnectChatPaneProps) === null || _props$reconnectChatP6 === void 0 ? void 0 : _props$reconnectChatP6.isReconnectEnabled, (_props$reconnectChatP7 = props.reconnectChatPaneProps) === null || _props$reconnectChatP7 === void 0 ? void 0 : _props$reconnectChatP7.reconnectId, initStartChat, (_props$reconnectChatP8 = props.reconnectChatPaneProps) === null || _props$reconnectChatP8 === void 0 ? void 0 : _props$reconnectChatP8.redirectInSameWindow);
182
205
  } else {
183
206
  getReconnectIdForAuthenticatedChat(props, chatSDK).then(authReconnectId => {
184
207
  if (authReconnectId && !state.appStates.reconnectId) {
@@ -191,11 +214,23 @@ export const LiveChatWidgetStateful = props => {
191
214
  payload: ConversationState.ReconnectChat
192
215
  });
193
216
  } else {
217
+ var _state$domainStates3;
218
+
194
219
  const chatStartedSkippingChatButtonRendering = {
195
220
  eventName: BroadcastEvent.StartChatSkippingChatButtonRendering
196
221
  };
197
222
  BroadcastService.postMessage(chatStartedSkippingChatButtonRendering);
198
- setPreChatAndInitiateChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter);
223
+
224
+ if (!isUndefinedOrEmpty((_state$domainStates3 = state.domainStates) === null || _state$domainStates3 === void 0 ? void 0 : _state$domainStates3.liveChatContext) && state.appStates.conversationState === ConversationState.Active) {
225
+ var _state$domainStates4;
226
+
227
+ const optionalParams = {
228
+ liveChatContext: (_state$domainStates4 = state.domainStates) === null || _state$domainStates4 === void 0 ? void 0 : _state$domainStates4.liveChatContext
229
+ };
230
+ initStartChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, optionalParams);
231
+ } else {
232
+ setPreChatAndInitiateChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter);
233
+ }
199
234
  }
200
235
  });
201
236
  }
@@ -203,7 +238,7 @@ export const LiveChatWidgetStateful = props => {
203
238
  }, [state.appStates.skipChatButtonRendering]); // useEffect for when skip chat button rendering
204
239
 
205
240
  useEffect(() => {
206
- var _chatSDK$omnichannelC6, _chatSDK$omnichannelC7, _props$controlProps11;
241
+ var _chatSDK$omnichannelC8, _chatSDK$omnichannelC9, _props$controlProps12;
207
242
 
208
243
  // Add the custom context on receiving the SetCustomContext event
209
244
  BroadcastService.getMessageByEventName(BroadcastEvent.SetCustomContext).subscribe(msg => {
@@ -235,13 +270,13 @@ export const LiveChatWidgetStateful = props => {
235
270
  }); // Start chat from SDK Event
236
271
 
237
272
  BroadcastService.getMessageByEventName(BroadcastEvent.StartChat).subscribe(() => {
238
- var _chatSDK$omnichannelC2, _chatSDK$omnichannelC3, _props$controlProps9;
273
+ var _chatSDK$omnichannelC4, _chatSDK$omnichannelC5, _props$controlProps10;
239
274
 
240
275
  TelemetryHelper.logActionEvent(LogLevel.INFO, {
241
276
  Event: TelemetryEvent.StartChatEventRecevied,
242
277
  Description: "Start chat event received."
243
278
  });
244
- const persistedState = getStateFromCache(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC2 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC2 === void 0 ? void 0 : _chatSDK$omnichannelC2.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC3 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC3 === void 0 ? void 0 : _chatSDK$omnichannelC3.widgetId, (props === null || props === void 0 ? void 0 : (_props$controlProps9 = props.controlProps) === null || _props$controlProps9 === void 0 ? void 0 : _props$controlProps9.widgetInstanceId) ?? ""); // Chat not found in cache
279
+ const persistedState = getStateFromCache(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC4 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC4 === void 0 ? void 0 : _chatSDK$omnichannelC4.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC5 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC5 === void 0 ? void 0 : _chatSDK$omnichannelC5.widgetId, (props === null || props === void 0 ? void 0 : (_props$controlProps10 = props.controlProps) === null || _props$controlProps10 === void 0 ? void 0 : _props$controlProps10.widgetInstanceId) ?? ""); // Chat not found in cache
245
280
 
246
281
  if (persistedState === undefined) {
247
282
  BroadcastService.postMessage({
@@ -281,10 +316,10 @@ export const LiveChatWidgetStateful = props => {
281
316
 
282
317
  BroadcastService.getMessageByEventName(BroadcastEvent.InitiateEndChat).subscribe(async () => {
283
318
  if (state.appStates.skipChatButtonRendering !== true) {
284
- var _chatSDK$omnichannelC4, _chatSDK$omnichannelC5, _props$controlProps10;
319
+ var _chatSDK$omnichannelC6, _chatSDK$omnichannelC7, _props$controlProps11;
285
320
 
286
321
  // This is to ensure to get latest state from cache in multitab
287
- const persistedState = getStateFromCache(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC4 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC4 === void 0 ? void 0 : _chatSDK$omnichannelC4.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC5 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC5 === void 0 ? void 0 : _chatSDK$omnichannelC5.widgetId, (props === null || props === void 0 ? void 0 : (_props$controlProps10 = props.controlProps) === null || _props$controlProps10 === void 0 ? void 0 : _props$controlProps10.widgetInstanceId) ?? "");
322
+ const persistedState = getStateFromCache(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC6 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC6 === void 0 ? void 0 : _chatSDK$omnichannelC6.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC7 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC7 === void 0 ? void 0 : _chatSDK$omnichannelC7.widgetId, (props === null || props === void 0 ? void 0 : (_props$controlProps11 = props.controlProps) === null || _props$controlProps11 === void 0 ? void 0 : _props$controlProps11.widgetInstanceId) ?? "");
288
323
 
289
324
  if (persistedState && persistedState.appStates.conversationState === ConversationState.Active) {
290
325
  prepareEndChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, state);
@@ -304,7 +339,7 @@ export const LiveChatWidgetStateful = props => {
304
339
  initiateEndChatOnBrowserUnload();
305
340
  }); // Listen to end chat event from other tabs
306
341
 
307
- const endChatEventName = getWidgetEndChatEventName(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC6 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC6 === void 0 ? void 0 : _chatSDK$omnichannelC6.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC7 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC7 === void 0 ? void 0 : _chatSDK$omnichannelC7.widgetId, ((_props$controlProps11 = props.controlProps) === null || _props$controlProps11 === void 0 ? void 0 : _props$controlProps11.widgetInstanceId) ?? "");
342
+ const endChatEventName = getWidgetEndChatEventName(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC8 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC8 === void 0 ? void 0 : _chatSDK$omnichannelC8.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC9 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC9 === void 0 ? void 0 : _chatSDK$omnichannelC9.widgetId, ((_props$controlProps12 = props.controlProps) === null || _props$controlProps12 === void 0 ? void 0 : _props$controlProps12.widgetInstanceId) ?? "");
308
343
  BroadcastService.getMessageByEventName(endChatEventName).subscribe(async () => {
309
344
  endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, false, false, false);
310
345
  return;
@@ -385,23 +420,25 @@ export const LiveChatWidgetStateful = props => {
385
420
  }, [(_props$webChatContain3 = props.webChatContainerProps) === null || _props$webChatContain3 === void 0 ? void 0 : _props$webChatContain3.webChatStyles]); // Publish chat widget state
386
421
 
387
422
  useEffect(() => {
388
- var _props$controlProps12, _props$chatSDK, _props$chatSDK$omnich, _props$chatSDK2, _props$chatSDK2$omnic, _props$controlProps13;
423
+ var _props$chatSDK, _props$chatSDK$omnich, _props$chatSDK2, _props$chatSDK2$omnic, _props$controlProps13;
389
424
 
390
425
  // Only activate these windows events when conversation state is active and chat widget is in popout mode
391
426
  // Ghost chat scenarios
392
- if (state.appStates.conversationState === ConversationState.Active && ((_props$controlProps12 = props.controlProps) === null || _props$controlProps12 === void 0 ? void 0 : _props$controlProps12.skipChatButtonRendering) === true) {
393
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
394
- window.onbeforeunload = function () {
395
- const prompt = Constants.BrowserUnloadConfirmationMessage;
396
- return prompt;
397
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
398
-
399
-
400
- window.onunload = function () {
401
- initiateEndChatOnBrowserUnload();
402
- };
403
- }
404
427
 
428
+ /* COMMENTING THIS CODE FOR PARITY WITH OLD LCW
429
+ if (state.appStates.conversationState === ConversationState.Active &&
430
+ props.controlProps?.skipChatButtonRendering === true) {
431
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
432
+
433
+ window.onbeforeunload = function () {
434
+ const prompt = Constants.BrowserUnloadConfirmationMessage;
435
+ return prompt;
436
+ };
437
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
438
+ window.onunload = function () {
439
+ initiateEndChatOnBrowserUnload();
440
+ };
441
+ }*/
405
442
  widgetStateEventName = getWidgetCacheId(props === null || props === void 0 ? void 0 : (_props$chatSDK = props.chatSDK) === null || _props$chatSDK === void 0 ? void 0 : (_props$chatSDK$omnich = _props$chatSDK.omnichannelConfig) === null || _props$chatSDK$omnich === void 0 ? void 0 : _props$chatSDK$omnich.orgId, props === null || props === void 0 ? void 0 : (_props$chatSDK2 = props.chatSDK) === null || _props$chatSDK2 === void 0 ? void 0 : (_props$chatSDK2$omnic = _props$chatSDK2.omnichannelConfig) === null || _props$chatSDK2$omnic === void 0 ? void 0 : _props$chatSDK2$omnic.widgetId, (props === null || props === void 0 ? void 0 : (_props$controlProps13 = props.controlProps) === null || _props$controlProps13 === void 0 ? void 0 : _props$controlProps13.widgetInstanceId) ?? "");
406
443
  const chatWidgetStateChangeEvent = {
407
444
  eventName: widgetStateEventName,
@@ -13,6 +13,7 @@ import { WebChatStoreLoader } from "./webchatcontroller/WebChatStoreLoader";
13
13
  import { Constants } from "../../common/Constants";
14
14
  import { BotMagicCodeStore } from "./webchatcontroller/BotMagicCodeStore";
15
15
  import { defaultAdaptiveCardStyles } from "./common/defaultStyles/defaultAdaptiveCardStyles";
16
+ import { defaultReceivedMessageAnchorStyles } from "./webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles";
16
17
  const broadcastChannelMessageEvent = "message";
17
18
 
18
19
  const postActivity = activity => {
@@ -42,7 +43,7 @@ const createMagicCodeSuccessResponse = signin => {
42
43
  };
43
44
 
44
45
  export const WebChatContainerStateful = props => {
45
- var _props$adaptiveCardSt, _props$adaptiveCardSt2;
46
+ var _props$adaptiveCardSt, _props$adaptiveCardSt2, _props$renderingMiddl, _props$renderingMiddl2, _props$renderingMiddl3, _props$renderingMiddl4;
46
47
 
47
48
  const {
48
49
  BasicWebChat
@@ -122,7 +123,8 @@ export const WebChatContainerStateful = props => {
122
123
  .ms_lcw_webchat_received_message img.webchat__markdown__external-link-icon {
123
124
  background-image : url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIzIDMgMTggMTgiICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik03LjI1MDEgNC41MDAxN0gxMC43NDk1QzExLjE2MzcgNC41MDAxNyAxMS40OTk1IDQuODM1OTYgMTEuNDk5NSA1LjI1MDE3QzExLjQ5OTUgNS42Mjk4NiAxMS4yMTczIDUuOTQzNjYgMTAuODUxMyA1Ljk5MzMyTDEwLjc0OTUgNi4wMDAxN0g3LjI0OTc0QzYuMDcwNzkgNS45OTk2MSA1LjEwMzQ5IDYuOTA2NTYgNS4wMDc4NiA4LjA2MTEyTDUuMDAwMjggOC4yMjAwM0w1LjAwMzEyIDE2Ljc1MDdDNS4wMDM0MyAxNy45NDE1IDUuOTI4ODUgMTguOTE2MSA3LjA5OTY2IDE4Ljk5NDlMNy4yNTM3MSAxOS4wMDAxTDE1Ljc1MTggMTguOTg4NEMxNi45NDE1IDE4Ljk4NjggMTcuOTE0NSAxOC4wNjIgMTcuOTkzNSAxNi44OTIzTDE3Ljk5ODcgMTYuNzM4NFYxMy4yMzIxQzE3Ljk5ODcgMTIuODE3OSAxOC4zMzQ1IDEyLjQ4MjEgMTguNzQ4NyAxMi40ODIxQzE5LjEyODQgMTIuNDgyMSAxOS40NDIyIDEyLjc2NDMgMTkuNDkxOCAxMy4xMzAzTDE5LjQ5ODcgMTMuMjMyMVYxNi43Mzg0QzE5LjQ5ODcgMTguNzQwNyAxNy45MjkzIDIwLjM3NjkgMTUuOTUyOCAyMC40ODI5TDE1Ljc1MzggMjAuNDg4NEw3LjI1ODI3IDIwLjUwMDFMNy4wNTQ5NSAyMC40OTQ5QzUuMTQyMzkgMjAuMzk1NCAzLjYwODk1IDE4Ljg2MjcgMy41MDgzNyAxNi45NTAyTDMuNTAzMTIgMTYuNzUxMUwzLjUwMDg5IDguMjUyN0wzLjUwNTI5IDguMDUwMkMzLjYwNTM5IDYuMTM3NDkgNS4xMzg2NyA0LjYwNDQ5IDcuMDUwOTYgNC41MDUyN0w3LjI1MDEgNC41MDAxN0gxMC43NDk1SDcuMjUwMVpNMTMuNzQ4MSAzLjAwMTQ2TDIwLjMwMTggMy4wMDE5N0wyMC40MDE0IDMuMDE1NzVMMjAuNTAyMiAzLjA0MzkzTDIwLjU1OSAzLjA2ODAzQzIwLjYxMjIgMy4wOTEyMiAyMC42NjM0IDMuMTIxNjMgMjAuNzExMSAzLjE1ODg1TDIwLjc4MDQgMy4yMjE1NkwyMC44NjQxIDMuMzIwMTRMMjAuOTE4MyAzLjQxMDI1TDIwLjk1NyAzLjUwMDU3TDIwLjk3NjIgMy41NjQ3NkwyMC45ODk4IDMuNjI4NjJMMjAuOTk5MiAzLjcyMjgyTDIwLjk5OTcgMTAuMjU1NEMyMC45OTk3IDEwLjY2OTYgMjAuNjYzOSAxMS4wMDU0IDIwLjI0OTcgMTEuMDA1NEMxOS44NyAxMS4wMDU0IDE5LjU1NjIgMTAuNzIzMiAxOS41MDY1IDEwLjM1NzFMMTkuNDk5NyAxMC4yNTU0TDE5LjQ5ODkgNS41NjE0N0wxMi4yNzk3IDEyLjc4NDdDMTIuMDEzNCAxMy4wNTEgMTEuNTk2OCAxMy4wNzUzIDExLjMwMzEgMTIuODU3NUwxMS4yMTkgMTIuNzg0OUMxMC45NTI3IDEyLjUxODcgMTAuOTI4NCAxMi4xMDIxIDExLjE0NjIgMTEuODA4NEwxMS4yMTg4IDExLjcyNDNMMTguNDM2OSA0LjUwMTQ2SDEzLjc0ODFDMTMuMzY4NCA0LjUwMTQ2IDEzLjA1NDYgNC4yMTkzMSAxMy4wMDUgMy44NTMyNEwxMi45OTgxIDMuNzUxNDZDMTIuOTk4MSAzLjM3MTc3IDEzLjI4MDMgMy4wNTc5NyAxMy42NDY0IDMuMDA4MzFMMTMuNzQ4MSAzLjAwMTQ2WiIgZmlsbD0iI0ZGRkZGRiIgLz48L3N2Zz4) !important;
124
125
  height: '.75em';
125
- marginLeft: '.25em';
126
+ marginLeft: '.25em';
127
+ filter:${(props === null || props === void 0 ? void 0 : (_props$renderingMiddl = props.renderingMiddlewareProps) === null || _props$renderingMiddl === void 0 ? void 0 : (_props$renderingMiddl2 = _props$renderingMiddl.receivedMessageAnchorStyles) === null || _props$renderingMiddl2 === void 0 ? void 0 : _props$renderingMiddl2.filter) ?? "none"};
126
128
  }
127
129
  pre {
128
130
  white-space: pre-wrap;
@@ -135,7 +137,7 @@ export const WebChatContainerStateful = props => {
135
137
  .ms_lcw_webchat_received_message a:visited,
136
138
  .ms_lcw_webchat_received_message a:hover,
137
139
  .ms_lcw_webchat_received_message a:active {
138
- color: white;
140
+ color: ${(props === null || props === void 0 ? void 0 : (_props$renderingMiddl3 = props.renderingMiddlewareProps) === null || _props$renderingMiddl3 === void 0 ? void 0 : (_props$renderingMiddl4 = _props$renderingMiddl3.receivedMessageAnchorStyles) === null || _props$renderingMiddl4 === void 0 ? void 0 : _props$renderingMiddl4.color) ?? (defaultReceivedMessageAnchorStyles === null || defaultReceivedMessageAnchorStyles === void 0 ? void 0 : defaultReceivedMessageAnchorStyles.color)};
139
141
  } `), /*#__PURE__*/React.createElement(Stack, {
140
142
  styles: containerStyles
141
143
  }, /*#__PURE__*/React.createElement(BasicWebChat, null)));
@@ -61,6 +61,7 @@ export const activityStatusMiddleware = () => next => args => {
61
61
  args: args,
62
62
  role: current_role,
63
63
  name: current_name
64
- }));
64
+ })) // eslint-disable-next-line @typescript-eslint/no-explicit-any
65
+ ;
65
66
  }
66
67
  };
@@ -1,10 +1,15 @@
1
1
  import { ConversationState } from "./ConversationState";
2
2
  import { defaultMiddlewareLocalizedTexts } from "../../components/webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts";
3
+ import { getWidgetCacheId, isNullOrUndefined } from "../../common/utils";
4
+ import { defaultClientDataStoreProvider } from "../../common/storage/default/defaultClientDataStoreProvider";
3
5
  export const getLiveChatWidgetContextInitialState = props => {
4
- var _props$webChatContain;
6
+ var _props$chatSDK, _props$chatSDK$omnich, _props$chatSDK2, _props$chatSDK2$omnic, _props$controlProps, _props$webChatContain;
5
7
 
6
- if (props !== null && props !== void 0 && props.liveChatContextFromCache) {
7
- return props === null || props === void 0 ? void 0 : props.liveChatContextFromCache;
8
+ const widgetCacheId = getWidgetCacheId(props === null || props === void 0 ? void 0 : (_props$chatSDK = props.chatSDK) === null || _props$chatSDK === void 0 ? void 0 : (_props$chatSDK$omnich = _props$chatSDK.omnichannelConfig) === null || _props$chatSDK$omnich === void 0 ? void 0 : _props$chatSDK$omnich.orgId, props === null || props === void 0 ? void 0 : (_props$chatSDK2 = props.chatSDK) === null || _props$chatSDK2 === void 0 ? void 0 : (_props$chatSDK2$omnic = _props$chatSDK2.omnichannelConfig) === null || _props$chatSDK2$omnic === void 0 ? void 0 : _props$chatSDK2$omnic.widgetId, (props === null || props === void 0 ? void 0 : (_props$controlProps = props.controlProps) === null || _props$controlProps === void 0 ? void 0 : _props$controlProps.widgetInstanceId) ?? "");
9
+ const initialState = defaultClientDataStoreProvider().getData(widgetCacheId, "localStorage");
10
+
11
+ if (!isNullOrUndefined(initialState)) {
12
+ return JSON.parse(initialState);
8
13
  }
9
14
 
10
15
  const LiveChatWidgetContextInitialState = {
@@ -0,0 +1,4 @@
1
+ export declare class defaultCacheManager {
2
+ static InternalCache: any;
3
+ }
4
+ export declare const registerBroadcastServiceForLocalStorage: (orgid: string, widgetId: string, widgetInstanceId: string) => void;
@@ -0,0 +1,2 @@
1
+ import { IContextDataStore } from "../../interfaces/IContextDataStore";
2
+ export declare const defaultClientDataStoreProvider: () => IContextDataStore;
@@ -0,0 +1,6 @@
1
+ export declare const defaultInitializeInMemoryDataStore: (widgetId: string) => void;
2
+ export declare const inMemoryDataStore: () => {
3
+ getData: (key: string) => any;
4
+ setData: (key: any, data: any) => void;
5
+ removeData: (key: string) => void;
6
+ };
@@ -79,6 +79,8 @@ export declare enum TelemetryEvent {
79
79
  PostChatContextCallSucceed = "PostChatContextCallSucceed",
80
80
  PostChatContextCallFailed = "PostChatContextCallFailed",
81
81
  ParseAdaptiveCardFailed = "ParseAdaptiveCardFailed",
82
+ ClientDataStoreProviderFailed = "ClientDataStoreProviderFailed",
83
+ InMemoryDataStoreFailed = "InMemoryDataStoreFailed",
82
84
  WebChatLoaded = "WebChatLoaded",
83
85
  LCWChatButtonClicked = "LCWChatButtonClicked",
84
86
  LCWChatButtonShow = "LCWChatButtonShow",
@@ -148,7 +150,9 @@ export declare enum TelemetryEvent {
148
150
  ReconnectChatMinimize = "ReconnectChatMinimize",
149
151
  MessageSent = "MessageSent",
150
152
  MessageReceived = "MessageReceived",
151
- CustomContextReceived = "CustomContextReceived"
153
+ CustomContextReceived = "CustomContextReceived",
154
+ NetworkDisconnected = "NetworkDisconnected",
155
+ NetworkReconnected = "NetworkReconnected"
152
156
  }
153
157
  export interface TelemetryInput {
154
158
  scenarioType: ScenarioType;
@@ -1,4 +1,5 @@
1
1
  import ChatConfig from "@microsoft/omnichannel-chat-sdk/lib/core/ChatConfig";
2
- declare const handleAuthentication: (chatSDK: any, chatConfig: ChatConfig | undefined, getAuthToken: ((authClientFunction?: string | undefined) => Promise<string | null>) | undefined) => Promise<void>;
2
+ declare const getAuthClientFunction: (chatConfig: ChatConfig | undefined) => string | undefined;
3
+ declare const handleAuthentication: (chatSDK: any, chatConfig: ChatConfig | undefined, getAuthToken: ((authClientFunction?: string | undefined) => Promise<string | null>) | undefined) => Promise<boolean>;
3
4
  declare const removeAuthTokenProvider: (chatSDK: any) => void;
4
- export { handleAuthentication, removeAuthTokenProvider };
5
+ export { getAuthClientFunction, handleAuthentication, removeAuthTokenProvider };
@@ -1,5 +1,5 @@
1
- import { IAttachmentProps } from "./IAttachmentProps";
2
1
  import React from "react";
2
+ import { IAttachmentProps } from "./IAttachmentProps";
3
3
  export interface IRenderingMiddlewareProps {
4
4
  timestampDir?: "ltr" | "rtl" | "auto";
5
5
  disableActivityMiddleware?: boolean;
@@ -28,4 +28,5 @@ export interface IRenderingMiddlewareProps {
28
28
  attachmentDownloadIconStyles?: React.CSSProperties;
29
29
  attachmentContentStyles?: React.CSSProperties;
30
30
  attachmentSizeStyles?: React.CSSProperties;
31
+ receivedMessageAnchorStyles?: React.CSSProperties;
31
32
  }
@@ -1 +1 @@
1
- export declare const activityStatusMiddleware: () => (next: any) => (args: any) => JSX.Element | undefined;
1
+ export declare const activityStatusMiddleware: () => (next: any) => (args: any) => any;
@@ -0,0 +1,2 @@
1
+ /// <reference types="react" />
2
+ export declare const defaultReceivedMessageAnchorStyles: React.CSSProperties;
@@ -1,3 +1,2 @@
1
- import { ILiveChatWidgetContext } from "./ILiveChatWidgetContext";
2
1
  import { ILiveChatWidgetProps } from "../../components/livechatwidget/interfaces/ILiveChatWidgetProps";
3
- export declare const getLiveChatWidgetContextInitialState: (props: ILiveChatWidgetProps) => ILiveChatWidgetContext;
2
+ export declare const getLiveChatWidgetContextInitialState: (props: ILiveChatWidgetProps) => any;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@microsoft/omnichannel-chat-widget",
3
- "version": "0.1.0-main.99b5123",
3
+ "version": "0.1.0-main.a27ec4b",
4
4
  "description": "Microsoft Omnichannel Chat Widget",
5
5
  "main": "lib/cjs/index.js",
6
6
  "types": "lib/types/index.d.ts",
@@ -74,7 +74,7 @@
74
74
  },
75
75
  "dependencies": {
76
76
  "@fluentui/react": "^8.49.1",
77
- "@microsoft/omnichannel-chat-components": "0.1.0-main.5063558",
77
+ "@microsoft/omnichannel-chat-components": "0.1.0-main.d40108a",
78
78
  "@microsoft/omnichannel-chat-sdk": "1.0.1-main.077d17c",
79
79
  "abort-controller-es5": "^2.0.1",
80
80
  "dompurify": "^2.3.4",