@microsoft/omnichannel-chat-widget 1.0.5-main.d908c85 → 1.0.6-main.0c19ff3

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 (47) hide show
  1. package/lib/cjs/common/Constants.js +1 -0
  2. package/lib/cjs/common/telemetry/TelemetryHelper.js +19 -17
  3. package/lib/cjs/common/utils.js +17 -2
  4. package/lib/cjs/components/footerstateful/FooterStateful.js +2 -2
  5. package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +21 -12
  6. package/lib/cjs/components/footerstateful/downloadtranscriptstateful/interfaces/IWebChatTranscriptConfig.js +1 -0
  7. package/lib/cjs/components/livechatwidget/common/createDownloadTranscriptProps.js +27 -0
  8. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +9 -1
  9. package/lib/cjs/components/livechatwidget/common/startChat.js +27 -12
  10. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +36 -28
  11. package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +6 -0
  12. package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +5 -1
  13. package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +21 -11
  14. package/lib/cjs/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +3 -1
  15. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSentMessageAnchorStyles.js +10 -0
  16. package/lib/cjs/plugins/createChatTranscript.js +548 -0
  17. package/lib/esm/common/Constants.js +1 -0
  18. package/lib/esm/common/telemetry/TelemetryHelper.js +19 -17
  19. package/lib/esm/common/utils.js +15 -1
  20. package/lib/esm/components/footerstateful/FooterStateful.js +2 -2
  21. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +22 -13
  22. package/lib/esm/components/footerstateful/downloadtranscriptstateful/interfaces/IWebChatTranscriptConfig.js +1 -0
  23. package/lib/esm/components/livechatwidget/common/createDownloadTranscriptProps.js +20 -0
  24. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +9 -1
  25. package/lib/esm/components/livechatwidget/common/startChat.js +27 -12
  26. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +36 -28
  27. package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +6 -0
  28. package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +5 -1
  29. package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +21 -11
  30. package/lib/esm/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +3 -1
  31. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSentMessageAnchorStyles.js +3 -0
  32. package/lib/esm/plugins/createChatTranscript.js +543 -0
  33. package/lib/types/common/Constants.d.ts +1 -0
  34. package/lib/types/common/telemetry/TelemetryHelper.d.ts +3 -3
  35. package/lib/types/common/telemetry/definitions/Contracts.d.ts +1 -0
  36. package/lib/types/common/telemetry/definitions/Payload.d.ts +1 -0
  37. package/lib/types/common/utils.d.ts +1 -0
  38. package/lib/types/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.d.ts +2 -1
  39. package/lib/types/components/footerstateful/downloadtranscriptstateful/interfaces/IDownloadTranscriptProps.d.ts +5 -0
  40. package/lib/types/components/footerstateful/downloadtranscriptstateful/interfaces/IWebChatTranscriptConfig.d.ts +13 -0
  41. package/lib/types/components/livechatwidget/common/createDownloadTranscriptProps.d.ts +24 -0
  42. package/lib/types/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.d.ts +2 -0
  43. package/lib/types/components/webchatcontainerstateful/interfaces/IRenderingMiddlewareProps.d.ts +1 -0
  44. package/lib/types/components/webchatcontainerstateful/interfaces/IWebChatProps.d.ts +1 -0
  45. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSentMessageAnchorStyles.d.ts +2 -0
  46. package/lib/types/plugins/createChatTranscript.d.ts +2 -0
  47. package/package.json +3 -3
@@ -155,6 +155,7 @@ _defineProperty(HtmlAttributeNames, "listItem", "LI");
155
155
  _defineProperty(HtmlAttributeNames, "unorderedList", "UL");
156
156
  _defineProperty(HtmlAttributeNames, "div", "div");
157
157
  _defineProperty(HtmlAttributeNames, "aTagName", "a");
158
+ _defineProperty(HtmlAttributeNames, "pTagName", "p");
158
159
  _defineProperty(HtmlAttributeNames, "noopenerTag", "noopener");
159
160
  _defineProperty(HtmlAttributeNames, "noreferrerTag", "noreferrer");
160
161
  _defineProperty(HtmlAttributeNames, "adaptiveCardClassName", "ac-adaptiveCard");
@@ -5,9 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.TelemetryHelper = void 0;
7
7
  var _TelemetryConstants = require("./TelemetryConstants");
8
- var _utils = require("../utils");
9
- var _TelemetryManager = require("./TelemetryManager");
10
8
  var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
9
+ var _TelemetryManager = require("./TelemetryManager");
10
+ var _utils = require("../utils");
11
11
  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; }
12
12
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
13
13
  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); }
@@ -36,15 +36,16 @@ class TelemetryHelper {
36
36
  static populateBasicProperties(level,
37
37
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
38
38
  telemetryData) {
39
- var _TelemetryManager$Int, _TelemetryManager$Int2, _TelemetryManager$Int3, _TelemetryManager$Int4, _TelemetryManager$Int5, _TelemetryManager$Int6, _TelemetryManager$Int7;
39
+ var _TelemetryManager$Int, _TelemetryManager$Int2, _TelemetryManager$Int3, _TelemetryManager$Int4, _TelemetryManager$Int5, _TelemetryManager$Int6, _TelemetryManager$Int7, _TelemetryManager$Int8;
40
40
  return {
41
41
  WidgetId: ((_TelemetryManager$Int = _TelemetryManager.TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int === void 0 ? void 0 : _TelemetryManager$Int.widgetId) ?? "",
42
42
  ChatId: ((_TelemetryManager$Int2 = _TelemetryManager.TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int2 === void 0 ? void 0 : _TelemetryManager$Int2.chatId) ?? "",
43
43
  ChannelId: ((_TelemetryManager$Int3 = _TelemetryManager.TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int3 === void 0 ? void 0 : _TelemetryManager$Int3.channelId) ?? "lcw2.0",
44
44
  ConversationId: ((_TelemetryManager$Int4 = _TelemetryManager.TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int4 === void 0 ? void 0 : _TelemetryManager$Int4.conversationId) ?? "",
45
45
  OrganizationId: ((_TelemetryManager$Int5 = _TelemetryManager.TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int5 === void 0 ? void 0 : _TelemetryManager$Int5.orgId) ?? "",
46
- LCWRuntimeId: ((_TelemetryManager$Int6 = _TelemetryManager.TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int6 === void 0 ? void 0 : _TelemetryManager$Int6.lcwRuntimeId) ?? "",
47
- CurrentRequestId: ((_TelemetryManager$Int7 = _TelemetryManager.TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int7 === void 0 ? void 0 : _TelemetryManager$Int7.currentRequestId) ?? "",
46
+ OrganizationUrl: ((_TelemetryManager$Int6 = _TelemetryManager.TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int6 === void 0 ? void 0 : _TelemetryManager$Int6.orgUrl) ?? "",
47
+ LCWRuntimeId: ((_TelemetryManager$Int7 = _TelemetryManager.TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int7 === void 0 ? void 0 : _TelemetryManager$Int7.lcwRuntimeId) ?? "",
48
+ CurrentRequestId: ((_TelemetryManager$Int8 = _TelemetryManager.TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int8 === void 0 ? void 0 : _TelemetryManager$Int8.currentRequestId) ?? "",
48
49
  LogLevel: level
49
50
  };
50
51
  }
@@ -79,40 +80,41 @@ class TelemetryHelper {
79
80
  static conformToConfigValidationContract(level, input) {
80
81
  const payload = input.payload;
81
82
  return TelemetryHelper.populate(level, payload, event => {
82
- var _TelemetryManager$Int8, _TelemetryManager$Int9, _TelemetryManager$Int10;
83
+ var _TelemetryManager$Int9, _TelemetryManager$Int10, _TelemetryManager$Int11;
83
84
  event.Event = payload.Event;
84
85
  event.RequestId = payload.RequestId;
85
- event.LCWVersion = (_TelemetryManager$Int8 = _TelemetryManager.TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int8 === void 0 ? void 0 : _TelemetryManager$Int8.environmentVersion;
86
+ event.LCWVersion = (_TelemetryManager$Int9 = _TelemetryManager.TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int9 === void 0 ? void 0 : _TelemetryManager$Int9.environmentVersion;
86
87
  event.CloudType = payload.CloudType;
87
- event.Domain = (_TelemetryManager$Int9 = _TelemetryManager.TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int9 === void 0 ? void 0 : _TelemetryManager$Int9.hostName;
88
+ event.Domain = (_TelemetryManager$Int10 = _TelemetryManager.TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int10 === void 0 ? void 0 : _TelemetryManager$Int10.hostName;
88
89
  event.ElapsedTimeInMilliseconds = payload.ElapsedTimeInMilliseconds;
89
90
  event.ExceptionDetails = JSON.stringify(payload.ExceptionDetails);
90
- event.Language = ((_TelemetryManager$Int10 = _TelemetryManager.TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int10 === void 0 ? void 0 : _TelemetryManager$Int10.chatWidgetLocaleLCID) || "";
91
+ event.Language = ((_TelemetryManager$Int11 = _TelemetryManager.TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int11 === void 0 ? void 0 : _TelemetryManager$Int11.chatWidgetLocaleLCID) || "";
91
92
  event.Description = payload.Data;
92
93
  });
93
94
  }
94
95
  static conformToLoadContract(level, input) {
95
96
  const payload = input.payload;
96
97
  return TelemetryHelper.populate(level, payload, event => {
97
- var _TelemetryManager$Int11, _TelemetryManager$Int12, _TelemetryManager$Int13;
98
+ var _TelemetryManager$Int12, _TelemetryManager$Int13, _TelemetryManager$Int14;
98
99
  event.Event = payload.Event;
100
+ event.Description = payload.Description;
99
101
  event.ResourcePath = payload.ResourcePath;
100
102
  event.WidgetState = payload.WidgetState;
101
103
  event.ChatState = payload.ChatState;
102
104
  event.ChatType = payload.ChatType;
103
105
  event.ElapsedTimeInMilliseconds = payload.ElapsedTimeInMilliseconds;
104
106
  event.ExceptionDetails = JSON.stringify(payload.ExceptionDetails);
105
- event.OCChatSDKVersion = ((_TelemetryManager$Int11 = _TelemetryManager.TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int11 === void 0 ? void 0 : _TelemetryManager$Int11.OCChatSDKVersion) ?? "";
106
- event.OCChatWidgetVersion = ((_TelemetryManager$Int12 = _TelemetryManager.TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int12 === void 0 ? void 0 : _TelemetryManager$Int12.chatWidgetVersion) ?? "";
107
- event.OCChatComponentsVersion = ((_TelemetryManager$Int13 = _TelemetryManager.TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int13 === void 0 ? void 0 : _TelemetryManager$Int13.chatComponentVersion) ?? "";
107
+ event.OCChatSDKVersion = ((_TelemetryManager$Int12 = _TelemetryManager.TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int12 === void 0 ? void 0 : _TelemetryManager$Int12.OCChatSDKVersion) ?? "";
108
+ event.OCChatWidgetVersion = ((_TelemetryManager$Int13 = _TelemetryManager.TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int13 === void 0 ? void 0 : _TelemetryManager$Int13.chatWidgetVersion) ?? "";
109
+ event.OCChatComponentsVersion = ((_TelemetryManager$Int14 = _TelemetryManager.TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int14 === void 0 ? void 0 : _TelemetryManager$Int14.chatComponentVersion) ?? "";
108
110
  });
109
111
  }
110
112
  static conformToIC3ClientContract(level, input) {
111
113
  const payload = input.payload;
112
114
  return TelemetryHelper.populate(level, payload, event => {
113
- var _TelemetryManager$Int14;
115
+ var _TelemetryManager$Int15;
114
116
  event.Event = payload.Event;
115
- event.IC3ClientVersion = (_TelemetryManager$Int14 = _TelemetryManager.TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int14 === void 0 ? void 0 : _TelemetryManager$Int14.IC3ClientVersion;
117
+ event.IC3ClientVersion = (_TelemetryManager$Int15 = _TelemetryManager.TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int15 === void 0 ? void 0 : _TelemetryManager$Int15.IC3ClientVersion;
116
118
  event.SubscriptionId = payload.SubscriptionId;
117
119
  event.EndpointUrl = payload.EndpointUrl;
118
120
  event.EndpointId = payload.EndpointId;
@@ -219,14 +221,14 @@ _defineProperty(TelemetryHelper, "logActionEvent", (logLevel, payload) => {
219
221
  _omnichannelChatComponents.BroadcastService.postMessage(telemetryEvent);
220
222
  });
221
223
  _defineProperty(TelemetryHelper, "logSDKEvent", (logLevel, payload) => {
222
- var _TelemetryManager$Int15;
224
+ var _TelemetryManager$Int16;
223
225
  const telemetryEvent = {
224
226
  eventName: (payload === null || payload === void 0 ? void 0 : payload.Event) ?? "",
225
227
  logLevel: logLevel,
226
228
  payload: {
227
229
  ...payload,
228
230
  TransactionId: (0, _utils.newGuid)(),
229
- RequestId: (_TelemetryManager$Int15 = _TelemetryManager.TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int15 === void 0 ? void 0 : _TelemetryManager$Int15.currentRequestId
231
+ RequestId: (_TelemetryManager$Int16 = _TelemetryManager.TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int16 === void 0 ? void 0 : _TelemetryManager$Int16.currentRequestId
230
232
  }
231
233
  };
232
234
  _omnichannelChatComponents.BroadcastService.postMessage(telemetryEvent);
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.setTabIndices = exports.setFocusOnSendBox = exports.setFocusOnElement = exports.preventFocusToMoveOutOfElement = exports.parseAdaptiveCardPayload = exports.newGuid = exports.isUndefinedOrEmpty = exports.isNullOrUndefined = exports.isNullOrEmptyString = exports.getWidgetEndChatEventName = exports.getWidgetCacheIdfromProps = exports.getWidgetCacheId = exports.getTimestampHourMinute = exports.getStateFromCache = exports.getLocaleDirection = exports.getIconText = exports.getDomain = exports.getConversationDetailsCall = exports.getBroadcastChannelName = exports.findParentFocusableElementsWithoutChildContainer = exports.findAllFocusableElement = exports.extractPreChatSurveyResponseValues = exports.escapeHtml = exports.debounceLeading = exports.createTimer = exports.checkContactIdError = exports.changeLanguageCodeFormatForWebChat = exports.addDelayInMs = void 0;
6
+ exports.setTabIndices = exports.setFocusOnSendBox = exports.setFocusOnElement = exports.preventFocusToMoveOutOfElement = exports.parseAdaptiveCardPayload = exports.newGuid = exports.isUndefinedOrEmpty = exports.isNullOrUndefined = exports.isNullOrEmptyString = exports.getWidgetEndChatEventName = exports.getWidgetCacheIdfromProps = exports.getWidgetCacheId = exports.getTimestampHourMinute = exports.getStateFromCache = exports.getLocaleDirection = exports.getIconText = exports.getDomain = exports.getConversationDetailsCall = exports.getBroadcastChannelName = exports.findParentFocusableElementsWithoutChildContainer = exports.findAllFocusableElement = exports.extractPreChatSurveyResponseValues = exports.escapeHtml = exports.debounceLeading = exports.createTimer = exports.createFileAndDownload = exports.checkContactIdError = exports.changeLanguageCodeFormatForWebChat = exports.addDelayInMs = void 0;
7
7
  var _Constants = require("./Constants");
8
8
  var _TelemetryConstants = require("./telemetry/TelemetryConstants");
9
9
  var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
@@ -416,4 +416,19 @@ const checkContactIdError = e => {
416
416
  _omnichannelChatComponents.BroadcastService.postMessage(contactIdNotFoundErrorEvent);
417
417
  }
418
418
  };
419
- exports.checkContactIdError = checkContactIdError;
419
+ exports.checkContactIdError = checkContactIdError;
420
+ const createFileAndDownload = (fileName, blobData, mimeType) => {
421
+ const aElement = document.createElement("a");
422
+ const blob = new Blob([blobData], {
423
+ type: mimeType
424
+ });
425
+ const objectUrl = URL.createObjectURL(blob);
426
+ aElement.setAttribute(_Constants.HtmlAttributeNames.href, objectUrl);
427
+ aElement.setAttribute(_Constants.HtmlAttributeNames.download, fileName);
428
+ aElement.setAttribute(_Constants.HtmlAttributeNames.ariaHidden, "true");
429
+ aElement.style.display = "none";
430
+ document.body.appendChild(aElement);
431
+ aElement.click();
432
+ document.body.removeChild(aElement);
433
+ };
434
+ exports.createFileAndDownload = createFileAndDownload;
@@ -22,7 +22,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
22
22
  const FooterStateful = props => {
23
23
  var _footerProps$controlP3, _footerProps$controlP4;
24
24
  const [state, dispatch] = (0, _useChatContextStore.default)();
25
- // hideFooterDisplay - the purpose of this is to keep the footer always "active",
25
+ // hideFooterDisplay - the purpose of this is to keep the footer always "active",
26
26
  // but hide it visually in certain states (e.g., loading state) and show in some other states (e.g. active state).
27
27
  // The reason for this approach is to make sure that state variables for audio notification work correctly after minimizing
28
28
  const {
@@ -42,7 +42,7 @@ const FooterStateful = props => {
42
42
  Event: _TelemetryConstants.TelemetryEvent.DownloadTranscriptButtonClicked,
43
43
  Description: "Download Transcript button clicked."
44
44
  });
45
- await (0, _DownloadTranscriptStateful.downloadTranscript)(chatSDK, downloadTranscriptProps === null || downloadTranscriptProps === void 0 ? void 0 : downloadTranscriptProps.renderMarkDown, downloadTranscriptProps === null || downloadTranscriptProps === void 0 ? void 0 : downloadTranscriptProps.bannerMessageOnError, downloadTranscriptProps === null || downloadTranscriptProps === void 0 ? void 0 : downloadTranscriptProps.attachmentMessage, state);
45
+ await (0, _DownloadTranscriptStateful.downloadTranscript)(chatSDK, downloadTranscriptProps, state);
46
46
  } catch (ex) {
47
47
  _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.ERROR, {
48
48
  Event: _TelemetryConstants.TelemetryEvent.DownloadTranscriptFailed,
@@ -9,7 +9,9 @@ var _NotificationScenarios = require("../../webchatcontainerstateful/webchatcont
9
9
  var _NotificationHandler = require("../../webchatcontainerstateful/webchatcontroller/notification/NotificationHandler");
10
10
  var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
11
11
  var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
12
+ var _createChatTranscript = _interopRequireDefault(require("../../../plugins/createChatTranscript"));
12
13
  var _dompurify = _interopRequireDefault(require("dompurify"));
14
+ var _utils = require("../../../common/utils");
13
15
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
16
  const processDisplayName = displayName => {
15
17
  // if displayname matches "teamsvisitor:<some alphanumeric string>", we replace it with "Customer"
@@ -161,7 +163,7 @@ const beautifyChatTranscripts = (chatTranscripts, renderMarkDown, attachmentMess
161
163
  };
162
164
 
163
165
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
164
- const downloadTranscript = async (chatSDK, renderMarkDown, bannerMessageOnError, attachmentMessage, state) => {
166
+ const downloadTranscript = async (chatSDK, downloadTranscriptProps, state) => {
165
167
  var _state$domainStates, _state$domainStates2, _state$domainStates2$;
166
168
  // Need to keep existing request id for scenarios when trnascript is downloaded after endchat
167
169
  const liveChatContext = {
@@ -174,18 +176,25 @@ const downloadTranscript = async (chatSDK, renderMarkDown, bannerMessageOnError,
174
176
  if (typeof data === _Constants.Constants.String) {
175
177
  data = JSON.parse(data);
176
178
  }
179
+ const {
180
+ bannerMessageOnError,
181
+ renderMarkDown,
182
+ attachmentMessage,
183
+ webChatTranscript
184
+ } = downloadTranscriptProps;
177
185
  if (data[_Constants.Constants.ChatMessagesJson] !== null && data[_Constants.Constants.ChatMessagesJson] !== undefined) {
178
- const chatTranscripts = window.btoa(encodeURIComponent(beautifyChatTranscripts(data[_Constants.Constants.ChatMessagesJson], renderMarkDown, attachmentMessage)));
179
- const byteCharacters = decodeURIComponent(window.atob(chatTranscripts));
180
- const blob = new Blob([byteCharacters], {
181
- "type": "text/html;charset=utf-8"
182
- });
183
- const link = document.createElement("a");
184
- document.body.appendChild(link);
185
- link.setAttribute(_Constants.HtmlAttributeNames.download, _Constants.TranscriptConstants.ChatTranscriptDownloadFile);
186
- link.setAttribute(_Constants.HtmlAttributeNames.href, URL.createObjectURL(blob));
187
- link.setAttribute(_Constants.HtmlAttributeNames.ariaHidden, "true");
188
- link.click();
186
+ const useWebChatTranscript = (0, _utils.isNullOrUndefined)(webChatTranscript === null || webChatTranscript === void 0 ? void 0 : webChatTranscript.disabled) || (webChatTranscript === null || webChatTranscript === void 0 ? void 0 : webChatTranscript.disabled) === false;
187
+ if (useWebChatTranscript) {
188
+ const transcriptOptions = {
189
+ ...webChatTranscript
190
+ };
191
+ await (0, _createChatTranscript.default)(data[_Constants.Constants.ChatMessagesJson], chatSDK, false, transcriptOptions);
192
+ } else {
193
+ // Legacy Transcript
194
+ const chatTranscripts = window.btoa(encodeURIComponent(beautifyChatTranscripts(data[_Constants.Constants.ChatMessagesJson], renderMarkDown, attachmentMessage)));
195
+ const byteCharacters = decodeURIComponent(window.atob(chatTranscripts));
196
+ (0, _utils.createFileAndDownload)(_Constants.TranscriptConstants.ChatTranscriptDownloadFile, byteCharacters, "text/html;charset=utf-8");
197
+ }
189
198
  } else {
190
199
  _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.ERROR, {
191
200
  Event: _TelemetryConstants.TelemetryEvent.DownloadTranscriptResponseNullOrUndefined,
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _defaultWebChatContainerStatefulProps = require("../../webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps");
8
+ const createDownloadTranscriptProps = (downloadTranscriptProps, webChatStyles, webChatContainerProps) => {
9
+ const disableNewLineMarkdownSupport = (webChatContainerProps === null || webChatContainerProps === void 0 ? void 0 : webChatContainerProps.disableNewLineMarkdownSupport) ?? _defaultWebChatContainerStatefulProps.defaultWebChatContainerStatefulProps.disableNewLineMarkdownSupport;
10
+ const disableMarkdownMessageFormatting = (webChatContainerProps === null || webChatContainerProps === void 0 ? void 0 : webChatContainerProps.disableMarkdownMessageFormatting) ?? _defaultWebChatContainerStatefulProps.defaultWebChatContainerStatefulProps.disableMarkdownMessageFormatting;
11
+ const props = {
12
+ ...downloadTranscriptProps,
13
+ webChatTranscript: {
14
+ ...(downloadTranscriptProps === null || downloadTranscriptProps === void 0 ? void 0 : downloadTranscriptProps.webChatTranscript),
15
+ disableNewLineMarkdownSupport,
16
+ disableMarkdownMessageFormatting,
17
+ transcriptBackgroundColor: webChatStyles === null || webChatStyles === void 0 ? void 0 : webChatStyles.backgroundColor,
18
+ agentAvatarBackgroundColor: webChatStyles === null || webChatStyles === void 0 ? void 0 : webChatStyles.bubbleBackground,
19
+ agentAvatarFontColor: webChatStyles === null || webChatStyles === void 0 ? void 0 : webChatStyles.bubbleTextColor,
20
+ customerAvatarBackgroundColor: webChatStyles === null || webChatStyles === void 0 ? void 0 : webChatStyles.bubbleFromUserBackground,
21
+ customerAvatarFontColor: webChatStyles === null || webChatStyles === void 0 ? void 0 : webChatStyles.bubbleFromUserTextColor
22
+ }
23
+ };
24
+ return props;
25
+ };
26
+ var _default = createDownloadTranscriptProps;
27
+ exports.default = _default;
@@ -601,7 +601,15 @@ const dummyDefaultProps = {
601
601
  downloadTranscriptProps: {
602
602
  bannerMessageOnError: "Download transcript failed.",
603
603
  renderMarkDown: undefined,
604
- attachmentMessage: "The following attachment was uploaded during the conversation:"
604
+ attachmentMessage: "The following attachment was uploaded during the conversation:",
605
+ webChatTranscript: {
606
+ disabled: false,
607
+ fileName: "transcript",
608
+ pageTitle: "Customer Transcript",
609
+ attachmentMessage: "The following attachment was uploaded during the conversation: ",
610
+ networkOnlineMessage: "Connection restored. Please refresh the page",
611
+ networkOfflineMessage: "Network Error. Please make sure you are connected to the internet."
612
+ }
605
613
  },
606
614
  emailTranscriptPane: {
607
615
  componentOverrides: {
@@ -61,12 +61,13 @@ const prepareStartChat = async (props, chatSDK, state, dispatch, setAdapter) =>
61
61
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
62
62
  exports.prepareStartChat = prepareStartChat;
63
63
  const setPreChatAndInitiateChat = async (chatSDK, dispatch, setAdapter, isProactiveChat, proactiveChatEnablePrechatState, state, props) => {
64
+ var _props$controlProps;
64
65
  //Handle reconnect scenario
65
66
 
66
67
  // Getting prechat Survey Context
67
68
  const parseToJson = false;
68
69
  const preChatSurveyResponse = await chatSDK.getPreChatSurvey(parseToJson);
69
- const showPrechat = isProactiveChat ? preChatSurveyResponse && proactiveChatEnablePrechatState : preChatSurveyResponse;
70
+ const showPrechat = isProactiveChat ? preChatSurveyResponse && proactiveChatEnablePrechatState : preChatSurveyResponse && !(props !== null && props !== void 0 && (_props$controlProps = props.controlProps) !== null && _props$controlProps !== void 0 && _props$controlProps.hidePreChatSurveyPane);
70
71
  if (showPrechat) {
71
72
  dispatch({
72
73
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_PRE_CHAT_SURVEY_RESPONSE,
@@ -93,13 +94,13 @@ const setPreChatAndInitiateChat = async (chatSDK, dispatch, setAdapter, isProact
93
94
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
94
95
  exports.setPreChatAndInitiateChat = setPreChatAndInitiateChat;
95
96
  const initStartChat = async (chatSDK, dispatch, setAdapter, props, params, persistedState) => {
96
- var _props$controlProps;
97
+ var _props$controlProps2;
97
98
  let isStartChatSuccessful = false;
98
99
  const chatConfig = props === null || props === void 0 ? void 0 : props.chatConfig;
99
100
  const getAuthToken = props === null || props === void 0 ? void 0 : props.getAuthToken;
100
- const hideErrorUIPane = props === null || props === void 0 ? void 0 : (_props$controlProps = props.controlProps) === null || _props$controlProps === void 0 ? void 0 : _props$controlProps.hideErrorUIPane;
101
+ const hideErrorUIPane = props === null || props === void 0 ? void 0 : (_props$controlProps2 = props.controlProps) === null || _props$controlProps2 === void 0 ? void 0 : _props$controlProps2.hideErrorUIPane;
101
102
  try {
102
- var _newAdapter$activity$, _TelemetryTimers$Widg;
103
+ var _newAdapter$activity$, _TelemetryTimers$Widg2;
103
104
  //Start widget load timer
104
105
  _TelemetryManager.TelemetryTimers.WidgetLoadTimer = (0, _utils.createTimer)();
105
106
  _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
@@ -175,10 +176,16 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, props, params, persi
175
176
  });
176
177
  }
177
178
  if (persistedState) {
179
+ var _TelemetryTimers$Widg;
178
180
  dispatch({
179
181
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_WIDGET_STATE,
180
182
  payload: persistedState
181
183
  });
184
+ _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
185
+ Event: _TelemetryConstants.TelemetryEvent.WidgetLoadComplete,
186
+ Description: "Widget load complete. Persisted state retrieved",
187
+ ElapsedTimeInMilliseconds: _TelemetryManager.TelemetryTimers === null || _TelemetryManager.TelemetryTimers === void 0 ? void 0 : (_TelemetryTimers$Widg = _TelemetryManager.TelemetryTimers.WidgetLoadTimer) === null || _TelemetryTimers$Widg === void 0 ? void 0 : _TelemetryTimers$Widg.milliSecondsElapsed
188
+ });
182
189
  await (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch, true);
183
190
  return;
184
191
  }
@@ -192,7 +199,7 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, props, params, persi
192
199
  _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
193
200
  Event: _TelemetryConstants.TelemetryEvent.WidgetLoadComplete,
194
201
  Description: "Widget load complete",
195
- ElapsedTimeInMilliseconds: _TelemetryManager.TelemetryTimers === null || _TelemetryManager.TelemetryTimers === void 0 ? void 0 : (_TelemetryTimers$Widg = _TelemetryManager.TelemetryTimers.WidgetLoadTimer) === null || _TelemetryTimers$Widg === void 0 ? void 0 : _TelemetryTimers$Widg.milliSecondsElapsed
202
+ ElapsedTimeInMilliseconds: _TelemetryManager.TelemetryTimers === null || _TelemetryManager.TelemetryTimers === void 0 ? void 0 : (_TelemetryTimers$Widg2 = _TelemetryManager.TelemetryTimers.WidgetLoadTimer) === null || _TelemetryTimers$Widg2 === void 0 ? void 0 : _TelemetryTimers$Widg2.milliSecondsElapsed
196
203
  });
197
204
 
198
205
  // Set post chat context in state
@@ -202,15 +209,10 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, props, params, persi
202
209
  // Updating chat session detail for telemetry
203
210
  await (0, _updateSessionDataForTelemetry.updateSessionDataForTelemetry)(chatSDK, dispatch);
204
211
  } catch (ex) {
205
- _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.ERROR, {
206
- Event: _TelemetryConstants.TelemetryEvent.WidgetLoadFailed,
207
- ExceptionDetails: {
208
- Exception: `Widget load Failed: ${ex}`
209
- }
210
- });
211
- _NotificationHandler.NotificationHandler.notifyError(_NotificationScenarios.NotificationScenarios.Connection, "Start Chat Failed: " + ex);
212
+ var _TelemetryTimers$Widg4;
212
213
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
213
214
  if (ex.message === _Constants.ChatSDKError.WidgetUseOutsideOperatingHour) {
215
+ var _TelemetryTimers$Widg3;
214
216
  dispatch({
215
217
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_OUTSIDE_OPERATING_HOURS,
216
218
  payload: true
@@ -219,8 +221,21 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, props, params, persi
219
221
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
220
222
  payload: _ConversationState.ConversationState.OutOfOffice
221
223
  });
224
+ _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
225
+ Event: _TelemetryConstants.TelemetryEvent.WidgetLoadComplete,
226
+ Description: "Widget load complete. Widget is OOOH.",
227
+ ElapsedTimeInMilliseconds: _TelemetryManager.TelemetryTimers === null || _TelemetryManager.TelemetryTimers === void 0 ? void 0 : (_TelemetryTimers$Widg3 = _TelemetryManager.TelemetryTimers.WidgetLoadTimer) === null || _TelemetryTimers$Widg3 === void 0 ? void 0 : _TelemetryTimers$Widg3.milliSecondsElapsed
228
+ });
222
229
  return;
223
230
  }
231
+ _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.ERROR, {
232
+ Event: _TelemetryConstants.TelemetryEvent.WidgetLoadFailed,
233
+ ExceptionDetails: {
234
+ Exception: `Widget load Failed: ${ex}`
235
+ },
236
+ ElapsedTimeInMilliseconds: _TelemetryManager.TelemetryTimers === null || _TelemetryManager.TelemetryTimers === void 0 ? void 0 : (_TelemetryTimers$Widg4 = _TelemetryManager.TelemetryTimers.WidgetLoadTimer) === null || _TelemetryTimers$Widg4 === void 0 ? void 0 : _TelemetryTimers$Widg4.milliSecondsElapsed
237
+ });
238
+ _NotificationHandler.NotificationHandler.notifyError(_NotificationScenarios.NotificationScenarios.Connection, "Start Chat Failed: " + ex);
224
239
  dispatch({
225
240
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_START_CHAT_FAILING,
226
241
  payload: true
@@ -20,6 +20,7 @@ var _CallingContainerStateful = _interopRequireDefault(require("../../callingcon
20
20
  var _ChatButtonStateful = _interopRequireDefault(require("../../chatbuttonstateful/ChatButtonStateful"));
21
21
  var _ConfirmationPaneStateful = _interopRequireDefault(require("../../confirmationpanestateful/ConfirmationPaneStateful"));
22
22
  var _ConversationState = require("../../../contexts/common/ConversationState");
23
+ var _createDownloadTranscriptProps = _interopRequireDefault(require("../common/createDownloadTranscriptProps"));
23
24
  var _DataStoreManager = require("../../../common/contextDataStore/DataStoreManager");
24
25
  var _EmailTranscriptPaneStateful = _interopRequireDefault(require("../../emailtranscriptpanestateful/EmailTranscriptPaneStateful"));
25
26
  var _HeaderStateful = _interopRequireDefault(require("../../headerstateful/HeaderStateful"));
@@ -57,7 +58,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
57
58
  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; }
58
59
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
59
60
  const LiveChatWidgetStateful = props => {
60
- var _props$webChatContain, _props$styleProps, _chatSDK$omnichannelC, _props$controlProps, _props$controlProps2, _state$appStates7, _props$webChatContain5, _state$appStates14, _props$webChatContain6, _props$styleProps2, _props$controlProps11, _props$controlProps12, _props$componentOverr, _props$controlProps13, _props$componentOverr2, _props$controlProps14, _props$componentOverr3, _props$controlProps15, _props$componentOverr4, _props$controlProps16, _props$componentOverr5, _props$controlProps17, _props$componentOverr6, _props$controlProps18, _props$componentOverr7, _props$controlProps19, _props$controlProps20, _props$componentOverr8, _props$controlProps21, _props$componentOverr9, _props$controlProps22, _props$componentOverr10, _props$componentOverr11, _props$componentOverr12;
61
+ var _props$webChatContain, _props$styleProps, _chatSDK$omnichannelC, _props$controlProps, _props$controlProps2, _state$appStates7, _props$webChatContain5, _state$appStates14, _props$webChatContain6, _livechatProps$webCha, _livechatProps$styleP, _livechatProps$contro, _livechatProps$contro2, _livechatProps$compon, _livechatProps$contro3, _livechatProps$compon2, _livechatProps$contro4, _livechatProps$compon3, _livechatProps$contro5, _livechatProps$compon4, _livechatProps$contro6, _livechatProps$compon5, _livechatProps$contro7, _livechatProps$compon6, _livechatProps$contro8, _livechatProps$compon7, _livechatProps$contro9, _livechatProps$contro10, _livechatProps$compon8, _livechatProps$contro11, _livechatProps$compon9, _livechatProps$contro12, _livechatProps$compon10, _livechatProps$compon11, _livechatProps$compon12;
61
62
  const [state, dispatch] = (0, _useChatContextStore.default)();
62
63
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
63
64
  const [adapter, setAdapter] = (0, _useChatAdapterStore.default)();
@@ -553,12 +554,11 @@ const LiveChatWidgetStateful = props => {
553
554
  if (state.appStates.conversationState === ConversationState.Active &&
554
555
  props.controlProps?.hideStartChatButton === true) {
555
556
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
556
-
557
- window.onbeforeunload = function () {
557
+ window.onbeforeunload = function () {
558
558
  const prompt = Constants.BrowserUnloadConfirmationMessage;
559
559
  return prompt;
560
560
  };
561
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
561
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
562
562
  window.onunload = function () {
563
563
  initiateEndChatOnBrowserUnload();
564
564
  };
@@ -609,56 +609,64 @@ const LiveChatWidgetStateful = props => {
609
609
  const confirmationPaneProps = (0, _initConfirmationPropsComposer.initConfirmationPropsComposer)(props);
610
610
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
611
611
  const prepareEndChatRelay = () => (0, _endChat.prepareEndChat)(props, chatSDK, state, dispatch, setAdapter, setWebChatStyles, adapter, uwid.current);
612
+ const downloadTranscriptProps = (0, _createDownloadTranscriptProps.default)(props.downloadTranscriptProps, {
613
+ ...(_defaultWebChatContainerStatefulProps.defaultWebChatContainerStatefulProps === null || _defaultWebChatContainerStatefulProps.defaultWebChatContainerStatefulProps === void 0 ? void 0 : _defaultWebChatContainerStatefulProps.defaultWebChatContainerStatefulProps.webChatStyles),
614
+ ...((_props$webChatContain6 = props.webChatContainerProps) === null || _props$webChatContain6 === void 0 ? void 0 : _props$webChatContain6.webChatStyles)
615
+ }, props.webChatContainerProps);
616
+ const livechatProps = {
617
+ ...props,
618
+ downloadTranscriptProps
619
+ };
612
620
  return /*#__PURE__*/_react2.default.createElement(_react2.default.Fragment, null, /*#__PURE__*/_react2.default.createElement("style", null, `
613
621
  ::-webkit-scrollbar {
614
622
  width: ${scrollbarProps.width};
615
623
  }
616
-
624
+
617
625
  ::-webkit-scrollbar-track {
618
626
  background: ${scrollbarProps.trackBackgroundColor};
619
627
  }
620
-
628
+
621
629
  ::-webkit-scrollbar-thumb {
622
630
  background: ${scrollbarProps.thumbBackgroundColor};
623
631
  border-radius: ${scrollbarProps.thumbBorderRadius};
624
632
  }
625
-
633
+
626
634
  ::-webkit-scrollbar-thumb:hover {
627
635
  background: ${scrollbarProps.thumbHoverColor};
628
- }
636
+ }
629
637
  `), /*#__PURE__*/_react2.default.createElement(Composer, _extends({}, webChatProps, {
630
638
  styleOptions: webChatStyles,
631
- directLine: ((_props$webChatContain6 = props.webChatContainerProps) === null || _props$webChatContain6 === void 0 ? void 0 : _props$webChatContain6.directLine) ?? adapter ?? _defaultWebChatContainerStatefulProps.defaultWebChatContainerStatefulProps.directLine
639
+ directLine: ((_livechatProps$webCha = livechatProps.webChatContainerProps) === null || _livechatProps$webCha === void 0 ? void 0 : _livechatProps$webCha.directLine) ?? adapter ?? _defaultWebChatContainerStatefulProps.defaultWebChatContainerStatefulProps.directLine
632
640
  }), /*#__PURE__*/_react2.default.createElement(_react.Stack, {
633
641
  id: widgetElementId,
634
642
  styles: generalStyles,
635
- className: (_props$styleProps2 = props.styleProps) === null || _props$styleProps2 === void 0 ? void 0 : _props$styleProps2.className
636
- }, !((_props$controlProps11 = props.controlProps) !== null && _props$controlProps11 !== void 0 && _props$controlProps11.hideChatButton) && !((_props$controlProps12 = props.controlProps) !== null && _props$controlProps12 !== void 0 && _props$controlProps12.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, {
637
- buttonProps: props.chatButtonProps,
638
- outOfOfficeButtonProps: props.outOfOfficeChatButtonProps,
643
+ className: (_livechatProps$styleP = livechatProps.styleProps) === null || _livechatProps$styleP === void 0 ? void 0 : _livechatProps$styleP.className
644
+ }, !((_livechatProps$contro = livechatProps.controlProps) !== null && _livechatProps$contro !== void 0 && _livechatProps$contro.hideChatButton) && !((_livechatProps$contro2 = livechatProps.controlProps) !== null && _livechatProps$contro2 !== void 0 && _livechatProps$contro2.hideStartChatButton) && (0, _componentController.shouldShowChatButton)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_livechatProps$compon = livechatProps.componentOverrides) === null || _livechatProps$compon === void 0 ? void 0 : _livechatProps$compon.chatButton) || /*#__PURE__*/_react2.default.createElement(_ChatButtonStateful.default, {
645
+ buttonProps: livechatProps.chatButtonProps,
646
+ outOfOfficeButtonProps: livechatProps.outOfOfficeChatButtonProps,
639
647
  startChat: prepareStartChatRelay
640
- })), !((_props$controlProps13 = props.controlProps) !== null && _props$controlProps13 !== void 0 && _props$controlProps13.hideProactiveChatPane) && (0, _componentController.shouldShowProactiveChatPane)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_props$componentOverr2 = props.componentOverrides) === null || _props$componentOverr2 === void 0 ? void 0 : _props$componentOverr2.proactiveChatPane) || /*#__PURE__*/_react2.default.createElement(_ProactiveChatPaneStateful.default, {
641
- proactiveChatProps: props.proactiveChatPaneProps,
648
+ })), !((_livechatProps$contro3 = livechatProps.controlProps) !== null && _livechatProps$contro3 !== void 0 && _livechatProps$contro3.hideProactiveChatPane) && (0, _componentController.shouldShowProactiveChatPane)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_livechatProps$compon2 = livechatProps.componentOverrides) === null || _livechatProps$compon2 === void 0 ? void 0 : _livechatProps$compon2.proactiveChatPane) || /*#__PURE__*/_react2.default.createElement(_ProactiveChatPaneStateful.default, {
649
+ proactiveChatProps: livechatProps.proactiveChatPaneProps,
642
650
  startChat: prepareStartChatRelay
643
- })), !((_props$controlProps14 = props.controlProps) !== null && _props$controlProps14 !== void 0 && _props$controlProps14.hideHeader) && (0, _componentController.shouldShowHeader)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_props$componentOverr3 = props.componentOverrides) === null || _props$componentOverr3 === void 0 ? void 0 : _props$componentOverr3.header) || /*#__PURE__*/_react2.default.createElement(_HeaderStateful.default, {
644
- headerProps: props.headerProps,
645
- outOfOfficeHeaderProps: props.outOfOfficeHeaderProps,
651
+ })), !((_livechatProps$contro4 = livechatProps.controlProps) !== null && _livechatProps$contro4 !== void 0 && _livechatProps$contro4.hideHeader) && (0, _componentController.shouldShowHeader)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_livechatProps$compon3 = livechatProps.componentOverrides) === null || _livechatProps$compon3 === void 0 ? void 0 : _livechatProps$compon3.header) || /*#__PURE__*/_react2.default.createElement(_HeaderStateful.default, {
652
+ headerProps: livechatProps.headerProps,
653
+ outOfOfficeHeaderProps: livechatProps.outOfOfficeHeaderProps,
646
654
  endChat: endChatRelay
647
- })), !((_props$controlProps15 = props.controlProps) !== null && _props$controlProps15 !== void 0 && _props$controlProps15.hideLoadingPane) && (0, _componentController.shouldShowLoadingPane)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_props$componentOverr4 = props.componentOverrides) === null || _props$componentOverr4 === void 0 ? void 0 : _props$componentOverr4.loadingPane) || /*#__PURE__*/_react2.default.createElement(_LoadingPaneStateful.default, {
648
- loadingPaneProps: props.loadingPaneProps,
649
- startChatErrorPaneProps: props.startChatErrorPaneProps
650
- })), !((_props$controlProps16 = props.controlProps) !== null && _props$controlProps16 !== void 0 && _props$controlProps16.hideOutOfOfficeHoursPane) && (0, _componentController.shouldShowOutOfOfficeHoursPane)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_props$componentOverr5 = props.componentOverrides) === null || _props$componentOverr5 === void 0 ? void 0 : _props$componentOverr5.outOfOfficeHoursPane) || /*#__PURE__*/_react2.default.createElement(_OOOHPaneStateful.default, props.outOfOfficeHoursPaneProps)), !((_props$controlProps17 = props.controlProps) !== null && _props$controlProps17 !== void 0 && _props$controlProps17.hideReconnectChatPane) && (0, _componentController.shouldShowReconnectChatPane)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_props$componentOverr6 = props.componentOverrides) === null || _props$componentOverr6 === void 0 ? void 0 : _props$componentOverr6.reconnectChatPane) || /*#__PURE__*/_react2.default.createElement(_ReconnectChatPaneStateful.default, {
651
- reconnectChatProps: props.reconnectChatPaneProps,
655
+ })), !((_livechatProps$contro5 = livechatProps.controlProps) !== null && _livechatProps$contro5 !== void 0 && _livechatProps$contro5.hideLoadingPane) && (0, _componentController.shouldShowLoadingPane)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_livechatProps$compon4 = livechatProps.componentOverrides) === null || _livechatProps$compon4 === void 0 ? void 0 : _livechatProps$compon4.loadingPane) || /*#__PURE__*/_react2.default.createElement(_LoadingPaneStateful.default, {
656
+ loadingPaneProps: livechatProps.loadingPaneProps,
657
+ startChatErrorPaneProps: livechatProps.startChatErrorPaneProps
658
+ })), !((_livechatProps$contro6 = livechatProps.controlProps) !== null && _livechatProps$contro6 !== void 0 && _livechatProps$contro6.hideOutOfOfficeHoursPane) && (0, _componentController.shouldShowOutOfOfficeHoursPane)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_livechatProps$compon5 = livechatProps.componentOverrides) === null || _livechatProps$compon5 === void 0 ? void 0 : _livechatProps$compon5.outOfOfficeHoursPane) || /*#__PURE__*/_react2.default.createElement(_OOOHPaneStateful.default, livechatProps.outOfOfficeHoursPaneProps)), !((_livechatProps$contro7 = livechatProps.controlProps) !== null && _livechatProps$contro7 !== void 0 && _livechatProps$contro7.hideReconnectChatPane) && (0, _componentController.shouldShowReconnectChatPane)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_livechatProps$compon6 = livechatProps.componentOverrides) === null || _livechatProps$compon6 === void 0 ? void 0 : _livechatProps$compon6.reconnectChatPane) || /*#__PURE__*/_react2.default.createElement(_ReconnectChatPaneStateful.default, {
659
+ reconnectChatProps: livechatProps.reconnectChatPaneProps,
652
660
  initStartChat: initStartChatRelay
653
- })), !((_props$controlProps18 = props.controlProps) !== null && _props$controlProps18 !== void 0 && _props$controlProps18.hidePreChatSurveyPane) && (0, _componentController.shouldShowPreChatSurveyPane)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_props$componentOverr7 = props.componentOverrides) === null || _props$componentOverr7 === void 0 ? void 0 : _props$componentOverr7.preChatSurveyPane) || /*#__PURE__*/_react2.default.createElement(_PreChatSurveyPaneStateful.default, {
654
- surveyProps: props.preChatSurveyPaneProps,
661
+ })), !((_livechatProps$contro8 = livechatProps.controlProps) !== null && _livechatProps$contro8 !== void 0 && _livechatProps$contro8.hidePreChatSurveyPane) && (0, _componentController.shouldShowPreChatSurveyPane)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_livechatProps$compon7 = livechatProps.componentOverrides) === null || _livechatProps$compon7 === void 0 ? void 0 : _livechatProps$compon7.preChatSurveyPane) || /*#__PURE__*/_react2.default.createElement(_PreChatSurveyPaneStateful.default, {
662
+ surveyProps: livechatProps.preChatSurveyPaneProps,
655
663
  initStartChat: initStartChatRelay
656
- })), !((_props$controlProps19 = props.controlProps) !== null && _props$controlProps19 !== void 0 && _props$controlProps19.hideCallingContainer) && (0, _componentController.shouldShowCallingContainer)(state) && /*#__PURE__*/_react2.default.createElement(_CallingContainerStateful.default, _extends({
664
+ })), !((_livechatProps$contro9 = livechatProps.controlProps) !== null && _livechatProps$contro9 !== void 0 && _livechatProps$contro9.hideCallingContainer) && (0, _componentController.shouldShowCallingContainer)(state) && /*#__PURE__*/_react2.default.createElement(_CallingContainerStateful.default, _extends({
657
665
  voiceVideoCallingSdk: voiceVideoCallingSDK
658
- }, props.callingContainerProps)), !((_props$controlProps20 = props.controlProps) !== null && _props$controlProps20 !== void 0 && _props$controlProps20.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$controlProps21 = props.controlProps) !== null && _props$controlProps21 !== void 0 && _props$controlProps21.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, {
666
+ }, livechatProps.callingContainerProps)), !((_livechatProps$contro10 = livechatProps.controlProps) !== null && _livechatProps$contro10 !== void 0 && _livechatProps$contro10.hideWebChatContainer) && (0, _componentController.shouldShowWebChatContainer)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_livechatProps$compon8 = livechatProps.componentOverrides) === null || _livechatProps$compon8 === void 0 ? void 0 : _livechatProps$compon8.webChatContainer) || /*#__PURE__*/_react2.default.createElement(_WebChatContainerStateful.default, livechatProps.webChatContainerProps)), !((_livechatProps$contro11 = livechatProps.controlProps) !== null && _livechatProps$contro11 !== void 0 && _livechatProps$contro11.hideConfirmationPane) && (0, _componentController.shouldShowConfirmationPane)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_livechatProps$compon9 = livechatProps.componentOverrides) === null || _livechatProps$compon9 === void 0 ? void 0 : _livechatProps$compon9.confirmationPane) || /*#__PURE__*/_react2.default.createElement(_ConfirmationPaneStateful.default, _extends({}, confirmationPaneProps, {
659
667
  setPostChatContext: setPostChatContextRelay,
660
668
  prepareEndChat: prepareEndChatRelay
661
- }))), !((_props$controlProps22 = props.controlProps) !== null && _props$controlProps22 !== void 0 && _props$controlProps22.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)))));
669
+ }))), !((_livechatProps$contro12 = livechatProps.controlProps) !== null && _livechatProps$contro12 !== void 0 && _livechatProps$contro12.hidePostChatLoadingPane) && (0, _componentController.shouldShowPostChatLoadingPane)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_livechatProps$compon10 = livechatProps.componentOverrides) === null || _livechatProps$compon10 === void 0 ? void 0 : _livechatProps$compon10.postChatLoadingPane) || /*#__PURE__*/_react2.default.createElement(_PostChatLoadingPaneStateful.default, livechatProps.postChatLoadingPaneProps)), (0, _componentController.shouldShowPostChatSurveyPane)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_livechatProps$compon11 = livechatProps.componentOverrides) === null || _livechatProps$compon11 === void 0 ? void 0 : _livechatProps$compon11.postChatSurveyPane) || /*#__PURE__*/_react2.default.createElement(_PostChatSurveyPaneStateful.default, _extends({}, livechatProps.postChatSurveyPaneProps, livechatProps.chatSDK))), (0, _createFooter.createFooter)(livechatProps, state), (0, _componentController.shouldShowEmailTranscriptPane)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_livechatProps$compon12 = livechatProps.componentOverrides) === null || _livechatProps$compon12 === void 0 ? void 0 : _livechatProps$compon12.emailTranscriptPane) || /*#__PURE__*/_react2.default.createElement(_EmailTranscriptPaneStateful.default, livechatProps.emailTranscriptPane)))));
662
670
  };
663
671
  exports.LiveChatWidgetStateful = LiveChatWidgetStateful;
664
672
  var _default = LiveChatWidgetStateful;
@@ -121,6 +121,12 @@ const PreChatSurveyPaneStateful = props => {
121
121
  const current = children[index];
122
122
  if (current && current.className == _Constants.HtmlAttributeNames.adaptiveCardTextBlockClassName) {
123
123
  value = current.innerHTML;
124
+ if (current.childElementCount > 0) {
125
+ const paragraph = current.children[0];
126
+ if (paragraph.tagName.toLowerCase() == _Constants.HtmlAttributeNames.pTagName) {
127
+ value = paragraph.innerHTML;
128
+ }
129
+ }
124
130
  }
125
131
  if (current && current.tagName.toLowerCase() == _Constants.HtmlAttributeNames.div && current.childElementCount > 0) {
126
132
  const input = current.children[0].children;
@@ -60,9 +60,13 @@ const ProactiveChatPaneStateful = props => {
60
60
  Description: "Proactive chat accepted."
61
61
  });
62
62
  if (state.appStates.proactiveChatStates.proactiveChatInNewWindow) {
63
+ var _state$appStates, _state$appStates$proa;
63
64
  // TODO: BroadcastService: replace with the sdk broadcast service, when in place
64
65
  const startPopoutChatEvent = {
65
- eventName: _TelemetryConstants.BroadcastEvent.ProactiveChatStartPopoutChat
66
+ eventName: _TelemetryConstants.BroadcastEvent.ProactiveChatStartPopoutChat,
67
+ payload: {
68
+ enablePrechat: (state === null || state === void 0 ? void 0 : (_state$appStates = state.appStates) === null || _state$appStates === void 0 ? void 0 : (_state$appStates$proa = _state$appStates.proactiveChatStates) === null || _state$appStates$proa === void 0 ? void 0 : _state$appStates$proa.proactiveChatEnablePrechat) === true
69
+ }
66
70
  };
67
71
  _omnichannelChatComponents.BroadcastService.postMessage(startPopoutChatEvent);
68
72
  dispatch({