@microsoft/omnichannel-chat-widget 0.1.0-main.bf74329 → 0.1.0-main.c1bbb91

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 (126) hide show
  1. package/lib/cjs/assets/Icons.js +4 -2
  2. package/lib/cjs/common/Constants.js +24 -4
  3. package/lib/cjs/common/KeyCodes.js +3 -1
  4. package/lib/cjs/common/contextDataStore/DataStoreManager.js +3 -1
  5. package/lib/cjs/common/storage/default/defaultCacheManager.js +5 -3
  6. package/lib/cjs/common/storage/default/defaultClientDataStoreProvider.js +15 -6
  7. package/lib/cjs/common/telemetry/TelemetryConstants.js +12 -5
  8. package/lib/cjs/common/telemetry/TelemetryHelper.js +7 -2
  9. package/lib/cjs/common/telemetry/TelemetryManager.js +3 -1
  10. package/lib/cjs/components/callingcontainerstateful/CallingContainerStateful.js +2 -2
  11. package/lib/cjs/components/chatbuttonstateful/common/styleProps/defaultOutOfOfficeChatButtonStyleProps.js +3 -0
  12. package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +1 -1
  13. package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +1 -1
  14. package/lib/cjs/components/headerstateful/HeaderStateful.js +6 -4
  15. package/lib/cjs/components/livechatwidget/common/ActivityStreamHandler.js +3 -1
  16. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +3 -1
  17. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +3 -1
  18. package/lib/cjs/components/livechatwidget/common/ChatAdapterShim.js +3 -1
  19. package/lib/cjs/components/livechatwidget/common/Deferred.js +3 -1
  20. package/lib/cjs/components/livechatwidget/common/defaultProps/defaultScrollBarProps.js +14 -0
  21. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +67 -16
  22. package/lib/cjs/components/livechatwidget/common/endChat.js +42 -2
  23. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +13 -19
  24. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +75 -114
  25. package/lib/cjs/components/livechatwidget/common/startChat.js +162 -45
  26. package/lib/cjs/components/livechatwidget/interfaces/IScrollBarProps.js +1 -0
  27. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +152 -116
  28. package/lib/cjs/components/loadingpanestateful/LoadingPaneStateful.js +22 -2
  29. package/lib/cjs/components/loadingpanestateful/common/errorUIStyleProps/errorUILoadingPaneStyleProps.js +57 -0
  30. package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +2 -2
  31. package/lib/cjs/components/prechatsurveypanestateful/common/defaultStyles/defaultGeneralPreChatSurveyPaneStyleProps.js +1 -1
  32. package/lib/cjs/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +4 -0
  33. package/lib/cjs/components/webchatcontainerstateful/common/mockadapter.js +3 -1
  34. package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +3 -1
  35. package/lib/cjs/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +2 -0
  36. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +3 -1
  37. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/WebChatStoreLoader.js +3 -1
  38. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +1 -3
  39. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +2 -1
  40. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.js +1 -1
  41. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.js +1 -1
  42. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +5 -6
  43. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +2 -14
  44. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +2 -11
  45. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +12 -1
  46. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +29 -27
  47. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +6 -3
  48. package/lib/cjs/contexts/createReducer.js +19 -2
  49. package/lib/cjs/controller/componentController.js +1 -1
  50. package/lib/cjs/hooks/useDebounce.js +28 -0
  51. package/lib/cjs/hooks/useWindowDimensions.js +30 -0
  52. package/lib/cjs/plugins/newMessageEventHandler.js +4 -0
  53. package/lib/esm/assets/Icons.js +2 -1
  54. package/lib/esm/common/Constants.js +21 -3
  55. package/lib/esm/common/KeyCodes.js +3 -1
  56. package/lib/esm/common/contextDataStore/DataStoreManager.js +3 -1
  57. package/lib/esm/common/storage/default/defaultCacheManager.js +5 -3
  58. package/lib/esm/common/storage/default/defaultClientDataStoreProvider.js +15 -6
  59. package/lib/esm/common/telemetry/TelemetryConstants.js +12 -5
  60. package/lib/esm/common/telemetry/TelemetryHelper.js +7 -2
  61. package/lib/esm/common/telemetry/TelemetryManager.js +3 -1
  62. package/lib/esm/components/callingcontainerstateful/CallingContainerStateful.js +2 -2
  63. package/lib/esm/components/chatbuttonstateful/common/styleProps/defaultOutOfOfficeChatButtonStyleProps.js +3 -0
  64. package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +1 -1
  65. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +1 -1
  66. package/lib/esm/components/headerstateful/HeaderStateful.js +6 -4
  67. package/lib/esm/components/livechatwidget/common/ActivityStreamHandler.js +3 -1
  68. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +3 -1
  69. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +3 -1
  70. package/lib/esm/components/livechatwidget/common/ChatAdapterShim.js +3 -1
  71. package/lib/esm/components/livechatwidget/common/Deferred.js +3 -1
  72. package/lib/esm/components/livechatwidget/common/defaultProps/defaultScrollBarProps.js +7 -0
  73. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +67 -16
  74. package/lib/esm/components/livechatwidget/common/endChat.js +42 -2
  75. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +13 -19
  76. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +72 -109
  77. package/lib/esm/components/livechatwidget/common/startChat.js +161 -45
  78. package/lib/esm/components/livechatwidget/interfaces/IScrollBarProps.js +1 -0
  79. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +153 -117
  80. package/lib/esm/components/loadingpanestateful/LoadingPaneStateful.js +22 -2
  81. package/lib/esm/components/loadingpanestateful/common/errorUIStyleProps/errorUILoadingPaneStyleProps.js +50 -0
  82. package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +2 -2
  83. package/lib/esm/components/prechatsurveypanestateful/common/defaultStyles/defaultGeneralPreChatSurveyPaneStyleProps.js +1 -1
  84. package/lib/esm/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +4 -0
  85. package/lib/esm/components/webchatcontainerstateful/common/mockadapter.js +3 -1
  86. package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +3 -1
  87. package/lib/esm/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +2 -0
  88. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +3 -1
  89. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/WebChatStoreLoader.js +3 -1
  90. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +1 -3
  91. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +2 -1
  92. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.js +1 -1
  93. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.js +1 -1
  94. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +5 -6
  95. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +2 -14
  96. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +2 -11
  97. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +12 -1
  98. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +29 -27
  99. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +6 -3
  100. package/lib/esm/contexts/createReducer.js +19 -2
  101. package/lib/esm/controller/componentController.js +1 -1
  102. package/lib/esm/hooks/useDebounce.js +22 -0
  103. package/lib/esm/hooks/useWindowDimensions.js +23 -0
  104. package/lib/esm/plugins/newMessageEventHandler.js +4 -0
  105. package/lib/types/assets/Icons.d.ts +1 -0
  106. package/lib/types/common/Constants.d.ts +14 -0
  107. package/lib/types/common/storage/default/defaultCacheManager.d.ts +1 -1
  108. package/lib/types/common/storage/default/defaultClientDataStoreProvider.d.ts +1 -1
  109. package/lib/types/common/telemetry/TelemetryConstants.d.ts +11 -4
  110. package/lib/types/common/telemetry/definitions/Contracts.d.ts +4 -4
  111. package/lib/types/common/telemetry/definitions/Payload.d.ts +1 -0
  112. package/lib/types/common/telemetry/interfaces/ITelemetryConfig.d.ts +4 -0
  113. package/lib/types/components/livechatwidget/common/defaultProps/defaultScrollBarProps.d.ts +2 -0
  114. package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +5 -7
  115. package/lib/types/components/livechatwidget/common/startChat.d.ts +5 -4
  116. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetControlProps.d.ts +3 -1
  117. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +2 -0
  118. package/lib/types/components/livechatwidget/interfaces/IScrollBarProps.d.ts +22 -0
  119. package/lib/types/components/loadingpanestateful/common/errorUIStyleProps/errorUILoadingPaneStyleProps.d.ts +2 -0
  120. package/lib/types/components/reconnectchatpanestateful/interfaces/IReconnectChatPaneStatefulProps.d.ts +0 -1
  121. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.d.ts +1 -1
  122. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +2 -1
  123. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +29 -27
  124. package/lib/types/hooks/useDebounce.d.ts +3 -0
  125. package/lib/types/hooks/useWindowDimensions.d.ts +4 -0
  126. package/package.json +3 -3
@@ -8,16 +8,18 @@ var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants"
8
8
  var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
9
9
  var _react = require("@fluentui/react");
10
10
  var _react2 = _interopRequireWildcard(require("react"));
11
- var _utils = require("../../../common/utils");
12
- var _reconnectChatHelper = require("../common/reconnectChatHelper");
13
11
  var _startChat = require("../common/startChat");
12
+ var _utils = require("../../../common/utils");
13
+ var _endChat = require("../common/endChat");
14
14
  var _componentController = require("../../../controller/componentController");
15
+ var _ActivityStreamHandler = require("../common/ActivityStreamHandler");
15
16
  var _CallingContainerStateful = _interopRequireDefault(require("../../callingcontainerstateful/CallingContainerStateful"));
16
17
  var _ChatButtonStateful = _interopRequireDefault(require("../../chatbuttonstateful/ChatButtonStateful"));
17
18
  var _botframeworkWebchat = require("botframework-webchat");
18
19
  var _ConfirmationPaneStateful = _interopRequireDefault(require("../../confirmationpanestateful/ConfirmationPaneStateful"));
19
20
  var _ConversationState = require("../../../contexts/common/ConversationState");
20
21
  var _DataStoreManager = require("../../../common/contextDataStore/DataStoreManager");
22
+ var _Constants = require("../../../common/Constants");
21
23
  var _EmailTranscriptPaneStateful = _interopRequireDefault(require("../../emailtranscriptpanestateful/EmailTranscriptPaneStateful"));
22
24
  var _HeaderStateful = _interopRequireDefault(require("../../headerstateful/HeaderStateful"));
23
25
  var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidgetActionType");
@@ -33,22 +35,21 @@ var _TelemetryManager = require("../../../common/telemetry/TelemetryManager");
33
35
  var _WebChatContainerStateful = _interopRequireDefault(require("../../webchatcontainerstateful/WebChatContainerStateful"));
34
36
  var _createFooter = require("../common/createFooter");
35
37
  var _createInternetConnectionChangeHandler = require("../common/createInternetConnectionChangeHandler");
38
+ var _defaultClientDataStoreProvider = require("../../../common/storage/default/defaultClientDataStoreProvider");
39
+ var _defaultScrollBarProps = require("../common/defaultProps/defaultScrollBarProps");
36
40
  var _defaultWebChatContainerStatefulProps = require("../../webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps");
37
41
  var _disposeTelemetryLoggers = require("../common/disposeTelemetryLoggers");
38
- var _endChat = require("../common/endChat");
39
42
  var _getGeneralStylesForButton = require("../common/getGeneralStylesForButton");
40
43
  var _initCallingSdk = require("../common/initCallingSdk");
41
44
  var _initConfirmationPropsComposer = require("../common/initConfirmationPropsComposer");
42
45
  var _initWebChatComposer = require("../common/initWebChatComposer");
46
+ var _defaultCacheManager = require("../../../common/storage/default/defaultCacheManager");
43
47
  var _registerTelemetryLoggers = require("../common/registerTelemetryLoggers");
44
48
  var _setPostChatContextAndLoadSurvey = require("../common/setPostChatContextAndLoadSurvey");
45
49
  var _startProactiveChat = require("../common/startProactiveChat");
46
50
  var _useChatAdapterStore = _interopRequireDefault(require("../../../hooks/useChatAdapterStore"));
47
51
  var _useChatContextStore = _interopRequireDefault(require("../../../hooks/useChatContextStore"));
48
52
  var _useChatSDKStore = _interopRequireDefault(require("../../../hooks/useChatSDKStore"));
49
- var _ActivityStreamHandler = require("../common/ActivityStreamHandler");
50
- var _defaultCacheManager = require("../../../common/storage/default/defaultCacheManager");
51
- var _defaultClientDataStoreProvider = require("../../../common/storage/default/defaultClientDataStoreProvider");
52
53
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
53
54
  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); }
54
55
  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; }
@@ -75,38 +76,79 @@ const LiveChatWidgetStateful = props => {
75
76
  const generalStyles = {
76
77
  root: Object.assign({}, (0, _getGeneralStylesForButton.getGeneralStylesForButton)(state), (_props$styleProps = props.styleProps) === null || _props$styleProps === void 0 ? void 0 : _props$styleProps.generalStyles)
77
78
  };
79
+
80
+ //Scrollbar styles
81
+ const scrollbarProps = Object.assign({}, _defaultScrollBarProps.defaultScrollBarProps, props === null || props === void 0 ? void 0 : props.scrollBarProps);
78
82
  const broadcastServiceChannelName = (0, _utils.getBroadcastChannelName)(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC === void 0 ? void 0 : _chatSDK$omnichannelC.widgetId, ((_props$controlProps = props.controlProps) === null || _props$controlProps === void 0 ? void 0 : _props$controlProps.widgetInstanceId) ?? "");
79
83
  (0, _omnichannelChatComponents.BroadcastServiceInitialize)(broadcastServiceChannelName);
80
84
  _TelemetryManager.TelemetryTimers.LcwLoadToChatButtonTimer = (0, _utils.createTimer)();
81
85
  const widgetElementId = ((_props$controlProps2 = props.controlProps) === null || _props$controlProps2 === void 0 ? void 0 : _props$controlProps2.id) || "oc-lcw";
82
86
  const currentMessageCountRef = (0, _react2.useRef)(0);
83
87
  let widgetStateEventName = "";
84
- const initiateEndChatOnBrowserUnload = () => {
85
- var _DataStoreManager$cli;
86
- _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
87
- Event: _TelemetryConstants.TelemetryEvent.BrowserUnloadEventStarted,
88
- Description: "Browser unload event received."
89
- });
90
- (0, _endChat.endChat)(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, false, false, false);
91
- // Clean local storage
92
- (_DataStoreManager$cli = _DataStoreManager.DataStoreManager.clientDataStore) === null || _DataStoreManager$cli === void 0 ? void 0 : _DataStoreManager$cli.removeData(widgetStateEventName, "localStorage");
88
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
89
+ let optionalParams;
90
+ let activeCachedChatExist = false;
91
+ const setOptionalParams = () => {
92
+ var _state$appStates, _state$domainStates;
93
+ if (!(0, _utils.isUndefinedOrEmpty)((_state$appStates = state.appStates) === null || _state$appStates === void 0 ? void 0 : _state$appStates.reconnectId)) {
94
+ activeCachedChatExist = true;
95
+ optionalParams = {
96
+ reconnectId: state.appStates.reconnectId
97
+ };
98
+ } else if (!(0, _utils.isUndefinedOrEmpty)((_state$domainStates = state.domainStates) === null || _state$domainStates === void 0 ? void 0 : _state$domainStates.liveChatContext)) {
99
+ var _state$domainStates2;
100
+ activeCachedChatExist = true;
101
+ optionalParams = {
102
+ liveChatContext: (_state$domainStates2 = state.domainStates) === null || _state$domainStates2 === void 0 ? void 0 : _state$domainStates2.liveChatContext
103
+ };
104
+ } else {
105
+ activeCachedChatExist = false;
106
+ optionalParams = {};
107
+ }
108
+ };
93
109
 
94
- //Dispose calling instance
95
- if (voiceVideoCallingSDK) {
96
- voiceVideoCallingSDK === null || voiceVideoCallingSDK === void 0 ? void 0 : voiceVideoCallingSDK.close();
110
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
111
+ const startChat = async (props, localState) => {
112
+ let isChatValid = false;
113
+
114
+ //Start a chat from cache/reconnectid
115
+ if (activeCachedChatExist === true) {
116
+ var _state$domainStates3, _state$domainStates3$;
117
+ dispatch({
118
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
119
+ payload: _ConversationState.ConversationState.Loading
120
+ });
121
+ if (localState) {
122
+ localState.appStates.conversationState = _ConversationState.ConversationState.Loading;
123
+ }
124
+
125
+ //Check if conversation state is not in wrapup or closed state
126
+ isChatValid = await (0, _startChat.checkIfConversationStillValid)(chatSDK, props, (_state$domainStates3 = state.domainStates) === null || _state$domainStates3 === void 0 ? void 0 : (_state$domainStates3$ = _state$domainStates3.liveChatContext) === null || _state$domainStates3$ === void 0 ? void 0 : _state$domainStates3$.requestId, dispatch);
127
+ if (isChatValid === true) {
128
+ await (0, _startChat.initStartChat)(chatSDK, dispatch, setAdapter, props, optionalParams);
129
+ return;
130
+ }
131
+ }
132
+ if (isChatValid === false) {
133
+ if (localState) {
134
+ await (0, _startChat.setPreChatAndInitiateChat)(chatSDK, dispatch, setAdapter, undefined, undefined, localState, props);
135
+ return;
136
+ } else {
137
+ dispatch({
138
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
139
+ payload: _ConversationState.ConversationState.Closed
140
+ });
141
+ }
97
142
  }
98
- //Message for clearing window[popouTab]
99
- _omnichannelChatComponents.BroadcastService.postMessage({
100
- eventName: _TelemetryConstants.BroadcastEvent.ClosePopoutWindow
101
- });
102
143
  };
103
144
  (0, _react2.useEffect)(() => {
104
- 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;
145
+ var _props$controlProps5, _props$controlProps6, _props$controlProps7, _props$chatConfig, _props$chatConfig$Liv, _props$controlProps9, _props$chatConfig2, _props$chatConfig2$Ch;
105
146
  // Add default localStorage support for widget
106
147
  if (props.contextDataStore === undefined) {
107
- var _chatSDK$omnichannelC2, _chatSDK$omnichannelC3, _props$controlProps3;
108
- (0, _defaultCacheManager.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) ?? "");
109
- _DataStoreManager.DataStoreManager.clientDataStore = (0, _defaultClientDataStoreProvider.defaultClientDataStoreProvider)();
148
+ var _props$controlProps3, _chatSDK$omnichannelC2, _chatSDK$omnichannelC3, _props$controlProps4;
149
+ const cacheTtlInMins = (props === null || props === void 0 ? void 0 : (_props$controlProps3 = props.controlProps) === null || _props$controlProps3 === void 0 ? void 0 : _props$controlProps3.cacheTtlInMins) ?? _Constants.Constants.CacheTtlInMinutes;
150
+ _DataStoreManager.DataStoreManager.clientDataStore = (0, _defaultClientDataStoreProvider.defaultClientDataStoreProvider)(cacheTtlInMins);
151
+ (0, _defaultCacheManager.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$controlProps4 = props.controlProps) === null || _props$controlProps4 === void 0 ? void 0 : _props$controlProps4.widgetInstanceId) ?? "", cacheTtlInMins);
110
152
  } else {
111
153
  _DataStoreManager.DataStoreManager.clientDataStore = props.contextDataStore;
112
154
  }
@@ -117,117 +159,55 @@ const LiveChatWidgetStateful = props => {
117
159
  payload: widgetElementId
118
160
  });
119
161
  dispatch({
120
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_SKIP_CHAT_BUTTON_RENDERING,
121
- payload: ((_props$controlProps4 = props.controlProps) === null || _props$controlProps4 === void 0 ? void 0 : _props$controlProps4.skipChatButtonRendering) || false
162
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_START_CHAT_BUTTON_DISPLAY,
163
+ payload: ((_props$controlProps5 = props.controlProps) === null || _props$controlProps5 === void 0 ? void 0 : _props$controlProps5.hideStartChatButton) || false
122
164
  });
123
165
  dispatch({
124
166
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_E2VV_ENABLED,
125
167
  payload: false
126
168
  });
127
- if ((_props$controlProps5 = props.controlProps) !== null && _props$controlProps5 !== void 0 && _props$controlProps5.widgetInstanceId && !(0, _utils.isNullOrEmptyString)((_props$controlProps6 = props.controlProps) === null || _props$controlProps6 === void 0 ? void 0 : _props$controlProps6.widgetInstanceId)) {
128
- var _props$controlProps7;
169
+ if ((_props$controlProps6 = props.controlProps) !== null && _props$controlProps6 !== void 0 && _props$controlProps6.widgetInstanceId && !(0, _utils.isNullOrEmptyString)((_props$controlProps7 = props.controlProps) === null || _props$controlProps7 === void 0 ? void 0 : _props$controlProps7.widgetInstanceId)) {
170
+ var _props$controlProps8;
129
171
  dispatch({
130
172
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_WIDGET_INSTANCE_ID,
131
- payload: (_props$controlProps7 = props.controlProps) === null || _props$controlProps7 === void 0 ? void 0 : _props$controlProps7.widgetInstanceId
173
+ payload: (_props$controlProps8 = props.controlProps) === null || _props$controlProps8 === void 0 ? void 0 : _props$controlProps8.widgetInstanceId
132
174
  });
133
175
  }
134
- (0, _initCallingSdk.initCallingSdk)(chatSDK, setVoiceVideoCallingSDK).then(sdkCreated => {
135
- sdkCreated && dispatch({
136
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_E2VV_ENABLED,
137
- payload: true
176
+ if (((_props$chatConfig = props.chatConfig) === null || _props$chatConfig === void 0 ? void 0 : (_props$chatConfig$Liv = _props$chatConfig.LiveWSAndLiveChatEngJoin) === null || _props$chatConfig$Liv === void 0 ? void 0 : _props$chatConfig$Liv.msdyn_callingoptions) !== _Constants.E2VVOptions.NoCalling) {
177
+ (0, _initCallingSdk.initCallingSdk)(chatSDK, setVoiceVideoCallingSDK).then(sdkCreated => {
178
+ sdkCreated && dispatch({
179
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_E2VV_ENABLED,
180
+ payload: true
181
+ });
138
182
  });
139
- });
183
+ }
140
184
 
141
185
  // Initialize global dir
142
- const globalDir = ((_props$controlProps8 = props.controlProps) === null || _props$controlProps8 === void 0 ? void 0 : _props$controlProps8.dir) ?? (0, _utils.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);
186
+ const globalDir = ((_props$controlProps9 = props.controlProps) === null || _props$controlProps9 === void 0 ? void 0 : _props$controlProps9.dir) ?? (0, _utils.getLocaleDirection)((_props$chatConfig2 = props.chatConfig) === null || _props$chatConfig2 === void 0 ? void 0 : (_props$chatConfig2$Ch = _props$chatConfig2.ChatWidgetLanguage) === null || _props$chatConfig2$Ch === void 0 ? void 0 : _props$chatConfig2$Ch.msdyn_localeid);
143
187
  dispatch({
144
188
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_GLOBAL_DIR,
145
189
  payload: globalDir
146
190
  });
147
- 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) {
148
- var _props$reconnectChatP2, _props$reconnectChatP3;
149
- (0, _reconnectChatHelper.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, _startChat.initStartChat);
150
- return;
151
- }
191
+ setOptionalParams();
152
192
 
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
155
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
156
- 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;
157
- if (!state.appStates.skipChatButtonRendering && state.appStates.conversationState === _ConversationState.ConversationState.Active && isAuthenticationSettingsEnabled === true && (_props$reconnectChatP4 = props.reconnectChatPaneProps) !== null && _props$reconnectChatP4 !== void 0 && _props$reconnectChatP4.isReconnectEnabled) {
158
- (0, _reconnectChatHelper.getReconnectIdForAuthenticatedChat)(props, chatSDK).then(authReconnectId => {
159
- if (authReconnectId && !state.appStates.reconnectId) {
160
- dispatch({
161
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_RECONNECT_ID,
162
- payload: authReconnectId
163
- });
164
- dispatch({
165
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
166
- payload: _ConversationState.ConversationState.ReconnectChat
167
- });
168
- }
169
- });
170
- return;
171
- }
172
- if (!state.appStates.skipChatButtonRendering && !(0, _utils.isUndefinedOrEmpty)((_state$domainStates = state.domainStates) === null || _state$domainStates === void 0 ? void 0 : _state$domainStates.liveChatContext) && state.appStates.conversationState === _ConversationState.ConversationState.Active) {
173
- var _state$domainStates2;
174
- const optionalParams = {
175
- liveChatContext: (_state$domainStates2 = state.domainStates) === null || _state$domainStates2 === void 0 ? void 0 : _state$domainStates2.liveChatContext
176
- };
177
- (0, _startChat.initStartChat)(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, optionalParams);
178
- return;
193
+ // Unauth chat
194
+ if (state.appStates.hideStartChatButton === false) {
195
+ startChat(props);
179
196
  }
180
-
181
- // All other case should show start chat button, skipChatButtonRendering will take care of it own
182
- dispatch({
183
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
184
- payload: _ConversationState.ConversationState.Closed
185
- });
186
197
  }, []);
187
198
 
188
199
  // useEffect for when skip chat button rendering
189
200
  (0, _react2.useEffect)(() => {
190
- if (state.appStates.skipChatButtonRendering) {
191
- var _props$reconnectChatP5;
201
+ if (state.appStates.hideStartChatButton === true) {
192
202
  _omnichannelChatComponents.BroadcastService.postMessage({
193
203
  eventName: _TelemetryConstants.BroadcastEvent.ChatInitiated
194
204
  });
195
- if ((_props$reconnectChatP5 = props.reconnectChatPaneProps) !== null && _props$reconnectChatP5 !== void 0 && _props$reconnectChatP5.reconnectId && !state.appStates.reconnectId) {
196
- var _props$reconnectChatP6, _props$reconnectChatP7, _props$reconnectChatP8;
197
- (0, _reconnectChatHelper.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, _startChat.initStartChat, (_props$reconnectChatP8 = props.reconnectChatPaneProps) === null || _props$reconnectChatP8 === void 0 ? void 0 : _props$reconnectChatP8.redirectInSameWindow);
198
- } else {
199
- (0, _reconnectChatHelper.getReconnectIdForAuthenticatedChat)(props, chatSDK).then(authReconnectId => {
200
- if (authReconnectId && !state.appStates.reconnectId) {
201
- dispatch({
202
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_RECONNECT_ID,
203
- payload: authReconnectId
204
- });
205
- dispatch({
206
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
207
- payload: _ConversationState.ConversationState.ReconnectChat
208
- });
209
- } else {
210
- var _state$domainStates3;
211
- const chatStartedSkippingChatButtonRendering = {
212
- eventName: _TelemetryConstants.BroadcastEvent.StartChatSkippingChatButtonRendering
213
- };
214
- _omnichannelChatComponents.BroadcastService.postMessage(chatStartedSkippingChatButtonRendering);
215
- if (!(0, _utils.isUndefinedOrEmpty)((_state$domainStates3 = state.domainStates) === null || _state$domainStates3 === void 0 ? void 0 : _state$domainStates3.liveChatContext) && state.appStates.conversationState === _ConversationState.ConversationState.Active) {
216
- var _state$domainStates4;
217
- const optionalParams = {
218
- liveChatContext: (_state$domainStates4 = state.domainStates) === null || _state$domainStates4 === void 0 ? void 0 : _state$domainStates4.liveChatContext
219
- };
220
- (0, _startChat.initStartChat)(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, optionalParams);
221
- } else {
222
- (0, _startChat.setPreChatAndInitiateChat)(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter);
223
- }
224
- }
225
- });
226
- }
205
+ //Pass the state to avoid getting stale state
206
+ startChat(props, state);
227
207
  }
228
- }, [state.appStates.skipChatButtonRendering]);
208
+ }, [state.appStates.hideStartChatButton]);
229
209
 
230
- // useEffect for when skip chat button rendering
210
+ // useEffect for custom context
231
211
  (0, _react2.useEffect)(() => {
232
212
  var _chatSDK$omnichannelC8, _chatSDK$omnichannelC9, _props$controlProps12;
233
213
  // Add the custom context on receiving the SetCustomContext event
@@ -304,7 +284,7 @@ const LiveChatWidgetStateful = props => {
304
284
 
305
285
  // End chat
306
286
  _omnichannelChatComponents.BroadcastService.getMessageByEventName(_TelemetryConstants.BroadcastEvent.InitiateEndChat).subscribe(async () => {
307
- if (state.appStates.skipChatButtonRendering !== true) {
287
+ if (state.appStates.hideStartChatButton === false) {
308
288
  var _chatSDK$omnichannelC6, _chatSDK$omnichannelC7, _props$controlProps11;
309
289
  // This is to ensure to get latest state from cache in multitab
310
290
  const persistedState = (0, _utils.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) ?? "");
@@ -345,6 +325,26 @@ const LiveChatWidgetStateful = props => {
345
325
  payload: msg === null || msg === void 0 ? void 0 : msg.payload
346
326
  });
347
327
  });
328
+
329
+ // Reset state variables
330
+ _omnichannelChatComponents.BroadcastService.getMessageByEventName(_TelemetryConstants.BroadcastEvent.RaiseErrorEvent).subscribe(() => {
331
+ dispatch({
332
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_LIVE_CHAT_CONFIG,
333
+ payload: undefined
334
+ });
335
+ dispatch({
336
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CUSTOM_CONTEXT,
337
+ payload: undefined
338
+ });
339
+ dispatch({
340
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CHAT_TOKEN,
341
+ payload: undefined
342
+ });
343
+ dispatch({
344
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
345
+ payload: undefined
346
+ });
347
+ });
348
348
  return () => {
349
349
  (0, _disposeTelemetryLoggers.disposeTelemetryLoggers)();
350
350
  };
@@ -417,7 +417,7 @@ const LiveChatWidgetStateful = props => {
417
417
  // Ghost chat scenarios
418
418
  /* COMMENTING THIS CODE FOR PARITY WITH OLD LCW
419
419
  if (state.appStates.conversationState === ConversationState.Active &&
420
- props.controlProps?.skipChatButtonRendering === true) {
420
+ props.controlProps?.hideStartChatButton === true) {
421
421
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
422
422
 
423
423
  window.onbeforeunload = function () {
@@ -439,6 +439,25 @@ const LiveChatWidgetStateful = props => {
439
439
  };
440
440
  _omnichannelChatComponents.BroadcastService.postMessage(chatWidgetStateChangeEvent);
441
441
  }, [state]);
442
+ const initiateEndChatOnBrowserUnload = () => {
443
+ var _DataStoreManager$cli;
444
+ _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
445
+ Event: _TelemetryConstants.TelemetryEvent.BrowserUnloadEventStarted,
446
+ Description: "Browser unload event received."
447
+ });
448
+ (0, _endChat.endChat)(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, false, false, false);
449
+ // Clean local storage
450
+ (_DataStoreManager$cli = _DataStoreManager.DataStoreManager.clientDataStore) === null || _DataStoreManager$cli === void 0 ? void 0 : _DataStoreManager$cli.removeData(widgetStateEventName, "localStorage");
451
+
452
+ //Dispose calling instance
453
+ if (voiceVideoCallingSDK) {
454
+ voiceVideoCallingSDK === null || voiceVideoCallingSDK === void 0 ? void 0 : voiceVideoCallingSDK.close();
455
+ }
456
+ //Message for clearing window[popouTab]
457
+ _omnichannelChatComponents.BroadcastService.postMessage({
458
+ eventName: _TelemetryConstants.BroadcastEvent.ClosePopoutWindow
459
+ });
460
+ };
442
461
  const webChatProps = (0, _initWebChatComposer.initWebChatComposer)(props, chatSDK, state, dispatch, setWebChatStyles);
443
462
  const setPostChatContextRelay = () => (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch);
444
463
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -447,16 +466,33 @@ const LiveChatWidgetStateful = props => {
447
466
  const prepareEndChatRelay = (adapter, state) => (0, _endChat.prepareEndChat)(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, state);
448
467
  const prepareStartChatRelay = () => (0, _startChat.prepareStartChat)(props, chatSDK, state, dispatch, setAdapter);
449
468
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
450
- const initStartChatRelay = (optionalParams, persistedState) => (0, _startChat.initStartChat)(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, optionalParams, persistedState);
469
+ const initStartChatRelay = (optionalParams, persistedState) => (0, _startChat.initStartChat)(chatSDK, dispatch, setAdapter, props, optionalParams, persistedState);
451
470
  const confirmationPaneProps = (0, _initConfirmationPropsComposer.initConfirmationPropsComposer)(props);
452
- return /*#__PURE__*/_react2.default.createElement(Composer, _extends({}, webChatProps, {
471
+ return /*#__PURE__*/_react2.default.createElement(_react2.default.Fragment, null, /*#__PURE__*/_react2.default.createElement("style", null, `
472
+ ::-webkit-scrollbar {
473
+ width: ${scrollbarProps.width};
474
+ }
475
+
476
+ ::-webkit-scrollbar-track {
477
+ background: ${scrollbarProps.trackBackgroundColor};
478
+ }
479
+
480
+ ::-webkit-scrollbar-thumb {
481
+ background: ${scrollbarProps.thumbBackgroundColor};
482
+ border-radius: ${scrollbarProps.thumbBorderRadius};
483
+ }
484
+
485
+ ::-webkit-scrollbar-thumb:hover {
486
+ background: ${scrollbarProps.thumbHoverColor};
487
+ }
488
+ `), /*#__PURE__*/_react2.default.createElement(Composer, _extends({}, webChatProps, {
453
489
  styleOptions: webChatStyles,
454
490
  directLine: ((_props$webChatContain4 = props.webChatContainerProps) === null || _props$webChatContain4 === void 0 ? void 0 : _props$webChatContain4.directLine) ?? adapter ?? _defaultWebChatContainerStatefulProps.defaultWebChatContainerStatefulProps.directLine
455
491
  }), /*#__PURE__*/_react2.default.createElement(_react.Stack, {
456
492
  id: widgetElementId,
457
493
  styles: generalStyles,
458
494
  className: (_props$styleProps2 = props.styleProps) === null || _props$styleProps2 === void 0 ? void 0 : _props$styleProps2.className
459
- }, !((_props$controlProps14 = props.controlProps) !== null && _props$controlProps14 !== void 0 && _props$controlProps14.hideChatButton) && !((_props$controlProps15 = props.controlProps) !== null && _props$controlProps15 !== void 0 && _props$controlProps15.skipChatButtonRendering) && (0, _componentController.shouldShowChatButton)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_props$componentOverr = props.componentOverrides) === null || _props$componentOverr === void 0 ? void 0 : _props$componentOverr.chatButton) || /*#__PURE__*/_react2.default.createElement(_ChatButtonStateful.default, {
495
+ }, !((_props$controlProps14 = props.controlProps) !== null && _props$controlProps14 !== void 0 && _props$controlProps14.hideChatButton) && !((_props$controlProps15 = props.controlProps) !== null && _props$controlProps15 !== void 0 && _props$controlProps15.hideStartChatButton) && (0, _componentController.shouldShowChatButton)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_props$componentOverr = props.componentOverrides) === null || _props$componentOverr === void 0 ? void 0 : _props$componentOverr.chatButton) || /*#__PURE__*/_react2.default.createElement(_ChatButtonStateful.default, {
460
496
  buttonProps: props.chatButtonProps,
461
497
  outOfOfficeButtonProps: props.outOfOfficeChatButtonProps,
462
498
  startChat: prepareStartChatRelay
@@ -478,7 +514,7 @@ const LiveChatWidgetStateful = props => {
478
514
  }, props.callingContainerProps)), !((_props$controlProps23 = props.controlProps) !== null && _props$controlProps23 !== void 0 && _props$controlProps23.hideWebChatContainer) && (0, _componentController.shouldShowWebChatContainer)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_props$componentOverr8 = props.componentOverrides) === null || _props$componentOverr8 === void 0 ? void 0 : _props$componentOverr8.webChatContainer) || /*#__PURE__*/_react2.default.createElement(_WebChatContainerStateful.default, props.webChatContainerProps)), !((_props$controlProps24 = props.controlProps) !== null && _props$controlProps24 !== void 0 && _props$controlProps24.hideConfirmationPane) && (0, _componentController.shouldShowConfirmationPane)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_props$componentOverr9 = props.componentOverrides) === null || _props$componentOverr9 === void 0 ? void 0 : _props$componentOverr9.confirmationPane) || /*#__PURE__*/_react2.default.createElement(_ConfirmationPaneStateful.default, _extends({}, confirmationPaneProps, {
479
515
  setPostChatContext: setPostChatContextRelay,
480
516
  prepareEndChat: prepareEndChatRelay
481
- }))), !((_props$controlProps25 = props.controlProps) !== null && _props$controlProps25 !== void 0 && _props$controlProps25.hidePostChatLoadingPane) && (0, _componentController.shouldShowPostChatLoadingPane)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_props$componentOverr10 = props.componentOverrides) === null || _props$componentOverr10 === void 0 ? void 0 : _props$componentOverr10.postChatLoadingPane) || /*#__PURE__*/_react2.default.createElement(_PostChatLoadingPaneStateful.default, props.postChatLoadingPaneProps)), (0, _componentController.shouldShowPostChatSurveyPane)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_props$componentOverr11 = props.componentOverrides) === null || _props$componentOverr11 === void 0 ? void 0 : _props$componentOverr11.postChatSurveyPane) || /*#__PURE__*/_react2.default.createElement(_PostChatSurveyPaneStateful.default, _extends({}, props.postChatSurveyPaneProps, props.chatSDK))), (0, _createFooter.createFooter)(props, state), (0, _componentController.shouldShowEmailTranscriptPane)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_props$componentOverr12 = props.componentOverrides) === null || _props$componentOverr12 === void 0 ? void 0 : _props$componentOverr12.emailTranscriptPane) || /*#__PURE__*/_react2.default.createElement(_EmailTranscriptPaneStateful.default, props.emailTranscriptPane))));
517
+ }))), !((_props$controlProps25 = props.controlProps) !== null && _props$controlProps25 !== void 0 && _props$controlProps25.hidePostChatLoadingPane) && (0, _componentController.shouldShowPostChatLoadingPane)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_props$componentOverr10 = props.componentOverrides) === null || _props$componentOverr10 === void 0 ? void 0 : _props$componentOverr10.postChatLoadingPane) || /*#__PURE__*/_react2.default.createElement(_PostChatLoadingPaneStateful.default, props.postChatLoadingPaneProps)), (0, _componentController.shouldShowPostChatSurveyPane)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_props$componentOverr11 = props.componentOverrides) === null || _props$componentOverr11 === void 0 ? void 0 : _props$componentOverr11.postChatSurveyPane) || /*#__PURE__*/_react2.default.createElement(_PostChatSurveyPaneStateful.default, _extends({}, props.postChatSurveyPaneProps, props.chatSDK))), (0, _createFooter.createFooter)(props, state), (0, _componentController.shouldShowEmailTranscriptPane)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_props$componentOverr12 = props.componentOverrides) === null || _props$componentOverr12 === void 0 ? void 0 : _props$componentOverr12.emailTranscriptPane) || /*#__PURE__*/_react2.default.createElement(_EmailTranscriptPaneStateful.default, props.emailTranscriptPane)))));
482
518
  };
483
519
  exports.LiveChatWidgetStateful = LiveChatWidgetStateful;
484
520
  var _default = LiveChatWidgetStateful;
@@ -11,6 +11,8 @@ var _TelemetryHelper = require("../../common/telemetry/TelemetryHelper");
11
11
  var _defaultgeneralLoadingPaneStyleProps = require("./common/defaultStyleProps/defaultgeneralLoadingPaneStyleProps");
12
12
  var _utils = require("../../common/utils");
13
13
  var _useChatContextStore = _interopRequireDefault(require("../../hooks/useChatContextStore"));
14
+ var _useWindowDimensions = _interopRequireDefault(require("../../hooks/useWindowDimensions"));
15
+ var _errorUILoadingPaneStyleProps = require("./common/errorUIStyleProps/errorUILoadingPaneStyleProps");
14
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
17
  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); }
16
18
  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; }
@@ -22,11 +24,27 @@ const LoadingPaneStateful = props => {
22
24
  ...props.styleProps,
23
25
  generalStyleProps: generalStyleProps
24
26
  };
27
+ const errorUIStyleProps = {
28
+ ..._errorUILoadingPaneStyleProps.errorUILoadingPaneStyleProps
29
+ };
25
30
  const controlProps = {
26
31
  id: "oc-lcw-loading-pane",
27
32
  dir: state.domainStates.globalDir,
28
33
  ...props.controlProps
29
34
  };
35
+ const errorUIControlProps = {
36
+ id: "oc-lcw-alert-pane",
37
+ dir: state.domainStates.globalDir,
38
+ titleText: "Chat is failing to load.",
39
+ subtitleText: "Please Close the chat and try again.",
40
+ hideSpinner: true,
41
+ hideSpinnerText: true,
42
+ ...props.controlProps
43
+ };
44
+ const {
45
+ height,
46
+ width
47
+ } = (0, _useWindowDimensions.default)();
30
48
 
31
49
  // Move focus to the first button
32
50
  (0, _react.useEffect)(() => {
@@ -41,8 +59,10 @@ const LoadingPaneStateful = props => {
41
59
  }, []);
42
60
  return /*#__PURE__*/_react.default.createElement(_omnichannelChatComponents.LoadingPane, {
43
61
  componentOverrides: props.componentOverrides,
44
- controlProps: controlProps,
45
- styleProps: styleProps
62
+ controlProps: state.appStates.isStartChatFailing ? errorUIControlProps : controlProps,
63
+ styleProps: state.appStates.isStartChatFailing ? errorUIStyleProps : styleProps,
64
+ windowWidth: width,
65
+ windowHeight: height
46
66
  });
47
67
  };
48
68
  exports.LoadingPaneStateful = LoadingPaneStateful;
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.errorUILoadingPaneStyleProps = void 0;
7
+ var _react = require("@fluentui/react");
8
+ var _Icons = require("../../../../assets/Icons");
9
+ const errorUILoadingPaneStyleProps = {
10
+ generalStyleProps: {
11
+ position: "initial",
12
+ width: "100%",
13
+ height: "100%",
14
+ left: "0%",
15
+ top: "0%",
16
+ borderRadius: "0 0 4px 4px",
17
+ borderWidth: "0px",
18
+ backgroundColor: "#FFFFFF"
19
+ },
20
+ titleStyleProps: {
21
+ fontFamily: "'Segoe UI',Arial,sans-serif",
22
+ fontWeight: "normal",
23
+ fontSize: "18px",
24
+ color: "#36454F",
25
+ textAlign: "center",
26
+ display: "flex",
27
+ order: 2,
28
+ alignSelf: "auto"
29
+ },
30
+ subtitleStyleProps: {
31
+ fontFamily: "'Segoe UI',Arial,sans-serif",
32
+ fontWeight: "normal",
33
+ fontSize: "18px",
34
+ color: "#36454F",
35
+ textAlign: "center",
36
+ display: "flex",
37
+ order: 3,
38
+ alignSelf: "auto"
39
+ },
40
+ iconStyleProps: {
41
+ display: "flex",
42
+ order: 1,
43
+ alignSelf: "auto",
44
+ backgroundColor: "#FFFFFF",
45
+ boxShadow: "#FFFFFF 0px 0px 0px 0px",
46
+ margin: "0px 0px 0px 0px"
47
+ },
48
+ iconImageProps: {
49
+ src: _Icons.AlertIcon,
50
+ imageFit: _react.ImageFit.center,
51
+ width: "86px",
52
+ height: "86px",
53
+ shouldFadeIn: false,
54
+ shouldStartVisible: true
55
+ }
56
+ };
57
+ exports.errorUILoadingPaneStyleProps = errorUILoadingPaneStyleProps;
@@ -77,7 +77,7 @@ const PreChatSurveyPaneStateful = props => {
77
77
  let optionalParams = {};
78
78
 
79
79
  //Connect to Active chats and chat is not popout
80
- if (persistedState && !(0, _utils.isUndefinedOrEmpty)(persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai = persistedState.domainStates) === null || _persistedState$domai === void 0 ? void 0 : _persistedState$domai.liveChatContext) && (persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$appSt = persistedState.appStates) === null || _persistedState$appSt === void 0 ? void 0 : _persistedState$appSt.conversationState) === _ConversationState.ConversationState.Active && !state.appStates.skipChatButtonRendering) {
80
+ if (persistedState && !(0, _utils.isUndefinedOrEmpty)(persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai = persistedState.domainStates) === null || _persistedState$domai === void 0 ? void 0 : _persistedState$domai.liveChatContext) && (persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$appSt = persistedState.appStates) === null || _persistedState$appSt === void 0 ? void 0 : _persistedState$appSt.conversationState) === _ConversationState.ConversationState.Active && state.appStates.hideStartChatButton === false) {
81
81
  var _persistedState$domai2;
82
82
  optionalParams = {
83
83
  liveChatContext: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai2 = persistedState.domainStates) === null || _persistedState$domai2 === void 0 ? void 0 : _persistedState$domai2.liveChatContext
@@ -120,7 +120,7 @@ const PreChatSurveyPaneStateful = props => {
120
120
  }
121
121
  if (current && current.tagName.toLowerCase() == _Constants.HtmlAttributeNames.div && current.childElementCount > 0) {
122
122
  const input = current.children[0].children;
123
- if (input && input.length > 0 && input[0].className != _Constants.HtmlAttributeNames.adaptiveCardToggleInputClassName) {
123
+ if ((input === null || input === void 0 ? void 0 : input.length) > 0 && input[0].className != _Constants.HtmlAttributeNames.adaptiveCardToggleInputClassName && input[0].className != _Constants.HtmlAttributeNames.adaptiveCardActionSetClassName) {
124
124
  input[0].setAttribute(_Constants.HtmlAttributeNames.ariaLabel, value);
125
125
  }
126
126
  }
@@ -7,7 +7,7 @@ exports.defaultGeneralPreChatSurveyPaneStyleProps = void 0;
7
7
  const defaultGeneralPreChatSurveyPaneStyleProps = {
8
8
  borderStyle: "solid",
9
9
  borderRadius: "inherit",
10
- borderWidth: "3px",
10
+ borderWidth: "0px",
11
11
  backgroundColor: "#FFFFFF",
12
12
  borderColor: "#F1F1F1",
13
13
  overflowY: "auto",
@@ -35,6 +35,10 @@ const ReconnectChatPaneStateful = props => {
35
35
  };
36
36
  await initStartChat(optionalParams);
37
37
  } else {
38
+ dispatch({
39
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_RECONNECT_ID,
40
+ payload: undefined
41
+ });
38
42
  const parseToJson = false;
39
43
  const preChatSurveyResponse = await chatSDK.getPreChatSurvey(parseToJson);
40
44
  if (preChatSurveyResponse) {
@@ -10,7 +10,9 @@ var _botframeworkDirectlinejs = require("botframework-directlinejs");
10
10
  var _rxjs = require("rxjs");
11
11
  var _Observable = require("rxjs/Observable");
12
12
  var _omnichannelChatSdk = require("@microsoft/omnichannel-chat-sdk");
13
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
13
+ 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; }
14
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
15
+ 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); }
14
16
  class MockAdapter {
15
17
  constructor() {
16
18
  _defineProperty(this, "activityObserver", void 0);
@@ -6,7 +6,9 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.MockChatSDK = void 0;
7
7
  var _mockadapter = _interopRequireDefault(require("./mockadapter"));
8
8
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
9
+ 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; }
10
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
11
+ 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); }
10
12
  class MockChatSDK {
11
13
  constructor() {
12
14
  _defineProperty(this, "sleep", ms => new Promise(r => setTimeout(r, ms)));
@@ -12,6 +12,7 @@ const FileAttachmentIconMap = {
12
12
  "aac": _Icons.AudioIcon,
13
13
  "aiff": _Icons.AudioIcon,
14
14
  "alac": _Icons.AudioIcon,
15
+ "amr": _Icons.AudioIcon,
15
16
  "avchd": _Icons.VideoIcon,
16
17
  "avi": _Icons.VideoIcon,
17
18
  "bmp": _Icons.ImageIcon,
@@ -50,6 +51,7 @@ const FileAttachmentIconMap = {
50
51
  "vsdx": _Icons.VisioIcon,
51
52
  "wav": _Icons.AudioIcon,
52
53
  "webm": _Icons.VideoIcon,
54
+ "webp": _Icons.ImageIcon,
53
55
  "wma": _Icons.AudioIcon,
54
56
  "wmv": _Icons.VideoIcon,
55
57
  "xls": _Icons.ExcelIcon,
@@ -4,7 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.BotMagicCodeStore = void 0;
7
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
7
+ 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; }
8
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
9
+ 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); }
8
10
  class BotMagicCodeStore {}
9
11
  exports.BotMagicCodeStore = BotMagicCodeStore;
10
12
  _defineProperty(BotMagicCodeStore, "botOAuthSignInId", "");