@microsoft/omnichannel-chat-widget 0.1.0-main.34fc37e → 0.1.0-main.3aede09

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 +3 -0
  10. package/lib/cjs/components/livechatwidget/common/startChat.js +12 -3
  11. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +49 -41
  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 +3 -0
  25. package/lib/esm/components/livechatwidget/common/startChat.js +13 -4
  26. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +48 -41
  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
@@ -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, _props$reconnectChatP4;
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,13 +139,13 @@ 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);
@@ -161,21 +171,16 @@ export const LiveChatWidgetStateful = props => {
161
171
  }
162
172
  });
163
173
  return;
164
- } // Check if auth settings enabled, do not connect to existing chat from cache during refresh/re-load
165
-
166
-
167
- if (isAuthenticationSettingsEnabled === false) {
168
- var _state$domainStates;
174
+ }
169
175
 
170
- if (!isUndefinedOrEmpty((_state$domainStates = state.domainStates) === null || _state$domainStates === void 0 ? void 0 : _state$domainStates.liveChatContext) && state.appStates.conversationState === ConversationState.Active) {
171
- 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;
172
178
 
173
- const optionalParams = {
174
- liveChatContext: (_state$domainStates2 = state.domainStates) === null || _state$domainStates2 === void 0 ? void 0 : _state$domainStates2.liveChatContext
175
- };
176
- initStartChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, optionalParams);
177
- return;
178
- }
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;
179
184
  } // All other case should show start chat button, skipChatButtonRendering will take care of it own
180
185
 
181
186
 
@@ -221,7 +226,7 @@ export const LiveChatWidgetStateful = props => {
221
226
  }, [state.appStates.skipChatButtonRendering]); // useEffect for when skip chat button rendering
222
227
 
223
228
  useEffect(() => {
224
- var _chatSDK$omnichannelC6, _chatSDK$omnichannelC7, _props$controlProps11;
229
+ var _chatSDK$omnichannelC8, _chatSDK$omnichannelC9, _props$controlProps12;
225
230
 
226
231
  // Add the custom context on receiving the SetCustomContext event
227
232
  BroadcastService.getMessageByEventName(BroadcastEvent.SetCustomContext).subscribe(msg => {
@@ -253,13 +258,13 @@ export const LiveChatWidgetStateful = props => {
253
258
  }); // Start chat from SDK Event
254
259
 
255
260
  BroadcastService.getMessageByEventName(BroadcastEvent.StartChat).subscribe(() => {
256
- var _chatSDK$omnichannelC2, _chatSDK$omnichannelC3, _props$controlProps9;
261
+ var _chatSDK$omnichannelC4, _chatSDK$omnichannelC5, _props$controlProps10;
257
262
 
258
263
  TelemetryHelper.logActionEvent(LogLevel.INFO, {
259
264
  Event: TelemetryEvent.StartChatEventRecevied,
260
265
  Description: "Start chat event received."
261
266
  });
262
- 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
267
+ 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
263
268
 
264
269
  if (persistedState === undefined) {
265
270
  BroadcastService.postMessage({
@@ -299,10 +304,10 @@ export const LiveChatWidgetStateful = props => {
299
304
 
300
305
  BroadcastService.getMessageByEventName(BroadcastEvent.InitiateEndChat).subscribe(async () => {
301
306
  if (state.appStates.skipChatButtonRendering !== true) {
302
- var _chatSDK$omnichannelC4, _chatSDK$omnichannelC5, _props$controlProps10;
307
+ var _chatSDK$omnichannelC6, _chatSDK$omnichannelC7, _props$controlProps11;
303
308
 
304
309
  // This is to ensure to get latest state from cache in multitab
305
- 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) ?? "");
310
+ 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) ?? "");
306
311
 
307
312
  if (persistedState && persistedState.appStates.conversationState === ConversationState.Active) {
308
313
  prepareEndChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, state);
@@ -322,7 +327,7 @@ export const LiveChatWidgetStateful = props => {
322
327
  initiateEndChatOnBrowserUnload();
323
328
  }); // Listen to end chat event from other tabs
324
329
 
325
- 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) ?? "");
330
+ 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) ?? "");
326
331
  BroadcastService.getMessageByEventName(endChatEventName).subscribe(async () => {
327
332
  endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, false, false, false);
328
333
  return;
@@ -403,23 +408,25 @@ export const LiveChatWidgetStateful = props => {
403
408
  }, [(_props$webChatContain3 = props.webChatContainerProps) === null || _props$webChatContain3 === void 0 ? void 0 : _props$webChatContain3.webChatStyles]); // Publish chat widget state
404
409
 
405
410
  useEffect(() => {
406
- var _props$controlProps12, _props$chatSDK, _props$chatSDK$omnich, _props$chatSDK2, _props$chatSDK2$omnic, _props$controlProps13;
411
+ var _props$chatSDK, _props$chatSDK$omnich, _props$chatSDK2, _props$chatSDK2$omnic, _props$controlProps13;
407
412
 
408
413
  // Only activate these windows events when conversation state is active and chat widget is in popout mode
409
414
  // Ghost chat scenarios
410
- if (state.appStates.conversationState === ConversationState.Active && ((_props$controlProps12 = props.controlProps) === null || _props$controlProps12 === void 0 ? void 0 : _props$controlProps12.skipChatButtonRendering) === true) {
411
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
412
- window.onbeforeunload = function () {
413
- const prompt = Constants.BrowserUnloadConfirmationMessage;
414
- return prompt;
415
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
416
-
417
-
418
- window.onunload = function () {
419
- initiateEndChatOnBrowserUnload();
420
- };
421
- }
422
415
 
416
+ /* COMMENTING THIS CODE FOR PARITY WITH OLD LCW
417
+ if (state.appStates.conversationState === ConversationState.Active &&
418
+ props.controlProps?.skipChatButtonRendering === true) {
419
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
420
+
421
+ window.onbeforeunload = function () {
422
+ const prompt = Constants.BrowserUnloadConfirmationMessage;
423
+ return prompt;
424
+ };
425
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
426
+ window.onunload = function () {
427
+ initiateEndChatOnBrowserUnload();
428
+ };
429
+ }*/
423
430
  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) ?? "");
424
431
  const chatWidgetStateChangeEvent = {
425
432
  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.34fc37e",
3
+ "version": "0.1.0-main.3aede09",
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.5a87386",
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",