@microsoft/omnichannel-chat-widget 0.1.0-main.d5a92f2 → 0.1.0-main.d5e0dfe

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 (42) hide show
  1. package/lib/cjs/common/Constants.js +2 -2
  2. package/lib/cjs/common/telemetry/TelemetryHelper.js +2 -1
  3. package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +1 -1
  4. package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +1 -1
  5. package/lib/cjs/components/headerstateful/HeaderStateful.js +3 -1
  6. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +59 -11
  7. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +3 -6
  8. package/lib/cjs/components/livechatwidget/common/startChat.js +18 -9
  9. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +8 -8
  10. package/lib/cjs/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +2 -0
  11. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +1 -3
  12. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +2 -1
  13. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.js +1 -1
  14. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.js +1 -1
  15. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +5 -6
  16. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +2 -14
  17. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +2 -11
  18. package/lib/cjs/plugins/newMessageEventHandler.js +4 -0
  19. package/lib/esm/common/Constants.js +2 -2
  20. package/lib/esm/common/telemetry/TelemetryHelper.js +2 -1
  21. package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +1 -1
  22. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +1 -1
  23. package/lib/esm/components/headerstateful/HeaderStateful.js +3 -1
  24. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +59 -11
  25. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +4 -6
  26. package/lib/esm/components/livechatwidget/common/startChat.js +18 -9
  27. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +9 -9
  28. package/lib/esm/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +2 -0
  29. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +1 -3
  30. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +2 -1
  31. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.js +1 -1
  32. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.js +1 -1
  33. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +5 -6
  34. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +2 -14
  35. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +2 -11
  36. package/lib/esm/plugins/newMessageEventHandler.js +4 -0
  37. package/lib/types/common/telemetry/definitions/Contracts.d.ts +2 -0
  38. package/lib/types/common/telemetry/definitions/Payload.d.ts +1 -0
  39. package/lib/types/common/telemetry/interfaces/ITelemetryConfig.d.ts +4 -0
  40. package/lib/types/components/livechatwidget/common/startChat.d.ts +2 -1
  41. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.d.ts +1 -1
  42. package/package.json +3 -3
@@ -51,8 +51,8 @@ _defineProperty(Constants, "acsChannel", "ACS_CHANNEL");
51
51
  _defineProperty(Constants, "publicMessageTag", "public");
52
52
  _defineProperty(Constants, "supportedAdaptiveCardContentTypes", ["application/vnd.microsoft.card.adaptive", "application/vnd.microsoft.card.audio", "application/vnd.microsoft.card.hero", "application/vnd.microsoft.card.receipt", "application/vnd.microsoft.card.thumbnail", "application/vnd.microsoft.card.signin", "application/vnd.microsoft.card.oauth"]);
53
53
  _defineProperty(Constants, "maxUploadFileSize", "500000");
54
- _defineProperty(Constants, "imageRegex", /(\.)(jpeg|jpg|jiff|png|gif|bmp)$/i);
55
- _defineProperty(Constants, "audioMediaRegex", /(\.)(aac|aiff|alac|flac|mp2|mp3|pcm|wav|wma)$/i);
54
+ _defineProperty(Constants, "imageRegex", /(\.)(jpeg|jpg|jiff|png|gif|bmp|webp)$/i);
55
+ _defineProperty(Constants, "audioMediaRegex", /(\.)(aac|aiff|alac|amr|flac|mp2|mp3|pcm|wav|wma)$/i);
56
56
  _defineProperty(Constants, "videoMediaRegex", /(\.)(avchd|avi|flv|mpe|mpeg|mpg|mpv|mp4|m4p|m4v|mov|qt|swf|webm|wmv)$/i);
57
57
  _defineProperty(Constants, "chromeSupportedInlineMediaRegex", /(\.)(aac|mp3|wav|mp4)$/i);
58
58
  _defineProperty(Constants, "firefoxSupportedInlineMediaRegex", /(\.)(aac|flac|mp3|wav|mp4|mov)$/i);
@@ -62,6 +62,7 @@ class TelemetryHelper {
62
62
  event.ElapsedTimeInMilliseconds = payload.ElapsedTimeInMilliseconds;
63
63
  event.ExceptionDetails = JSON.stringify(payload.ExceptionDetails);
64
64
  event.Description = payload.Description;
65
+ event.CustomProperties = JSON.stringify(payload.CustomProperties);
65
66
  });
66
67
  }
67
68
  static conformToWebChatContract(level, input) {
@@ -167,7 +168,7 @@ class TelemetryHelper {
167
168
  telemetryDataLocal.widgetId = telemetryConfig === null || telemetryConfig === void 0 ? void 0 : telemetryConfig.appId;
168
169
  telemetryDataLocal.orgId = telemetryConfig === null || telemetryConfig === void 0 ? void 0 : telemetryConfig.orgId;
169
170
  telemetryDataLocal.orgUrl = telemetryConfig === null || telemetryConfig === void 0 ? void 0 : telemetryConfig.orgUrl;
170
- telemetryDataLocal.lcwRuntimeId = (0, _utils.newGuid)();
171
+ telemetryDataLocal.lcwRuntimeId = telemetryConfig.LCWRuntimeId ?? (0, _utils.newGuid)();
171
172
  return telemetryDataLocal;
172
173
  }
173
174
  static addSessionDataToTelemetry(chatSession, telemetryInternalData) {
@@ -90,7 +90,7 @@ const ConfirmationPaneStateful = props => {
90
90
  Event: _TelemetryConstants.TelemetryEvent.ConfirmationPaneLoaded
91
91
  });
92
92
  }, []);
93
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, !(controlProps !== null && controlProps !== void 0 && controlProps.disableDimLayer) && /*#__PURE__*/_react.default.createElement(_DimLayer.DimLayer, {
93
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_DimLayer.DimLayer, {
94
94
  brightness: (controlProps === null || controlProps === void 0 ? void 0 : controlProps.brightnessValueOnDim) ?? "0.2"
95
95
  }), /*#__PURE__*/_react.default.createElement(_omnichannelChatComponents.ConfirmationPane, {
96
96
  componentOverrides: props === null || props === void 0 ? void 0 : props.componentOverrides,
@@ -97,7 +97,7 @@ const EmailTranscriptPaneStateful = props => {
97
97
  Event: _TelemetryConstants.TelemetryEvent.EmailTranscriptLoaded
98
98
  });
99
99
  }, [initialEmail]);
100
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, !(controlProps !== null && controlProps !== void 0 && controlProps.disableDimLayer) && /*#__PURE__*/_react.default.createElement(_DimLayer.DimLayer, {
100
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_DimLayer.DimLayer, {
101
101
  brightness: (controlProps === null || controlProps === void 0 ? void 0 : controlProps.brightnessValueOnDim) ?? "0.2"
102
102
  }), /*#__PURE__*/_react.default.createElement(_omnichannelChatComponents.InputValidationPane, {
103
103
  componentOverrides: props.componentOverrides,
@@ -30,6 +30,7 @@ const HeaderStateful = props => {
30
30
  const [outOfOperatingHours, setOutOfOperatingHours] = (0, _react.useState)(((_state$domainStates$l = state.domainStates.liveChatConfig) === null || _state$domainStates$l === void 0 ? void 0 : (_state$domainStates$l2 = _state$domainStates$l.LiveWSAndLiveChatEngJoin) === null || _state$domainStates$l2 === void 0 ? void 0 : _state$domainStates$l2.OutOfOperatingHours) === "True");
31
31
  const outOfOfficeStyleProps = Object.assign({}, _defaultOutOfOfficeHeaderStyleProps.defaultOutOfOfficeHeaderStyleProps, outOfOfficeHeaderProps === null || outOfOfficeHeaderProps === void 0 ? void 0 : outOfOfficeHeaderProps.styleProps);
32
32
  const conversationState = (0, _react.useRef)(state.appStates.conversationState);
33
+ const conversationEndedByAgent = (0, _react.useRef)(state.appStates.conversationEndedByAgent);
33
34
  const controlProps = {
34
35
  id: "oc-lcw-header",
35
36
  dir: state.domainStates.globalDir,
@@ -49,7 +50,7 @@ const HeaderStateful = props => {
49
50
  Event: _TelemetryConstants.TelemetryEvent.HeaderCloseButtonClicked,
50
51
  Description: "Header Close button clicked."
51
52
  });
52
- if (conversationState.current === _ConversationState.ConversationState.Active) {
53
+ if (conversationState.current === _ConversationState.ConversationState.Active || conversationEndedByAgent.current) {
53
54
  dispatch({
54
55
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_SHOW_CONFIRMATION,
55
56
  payload: true
@@ -95,6 +96,7 @@ const HeaderStateful = props => {
95
96
  if (state.appStates.conversationState) {
96
97
  conversationState.current = state.appStates.conversationState;
97
98
  }
99
+ conversationEndedByAgent.current = state.appStates.conversationEndedByAgent;
98
100
  }, [state.appStates]);
99
101
  return /*#__PURE__*/_react.default.createElement(_omnichannelChatComponents.Header, {
100
102
  componentOverrides: headerProps === null || headerProps === void 0 ? void 0 : headerProps.componentOverrides,
@@ -13,9 +13,9 @@ var _activityMiddleware = require("../../../webchatcontainerstateful/webchatcont
13
13
  var _attachmentMiddleware = _interopRequireDefault(require("../../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware"));
14
14
  var _avatarMiddleware = require("../../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware");
15
15
  var _createMarkdown = require("../createMarkdown");
16
+ var _WebChatLogger = require("../../../webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger");
16
17
  var _groupActivitiesMiddleware = require("../../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware");
17
18
  var _typingIndicatorMiddleware = require("../../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware");
18
- var _WebChatLogger = require("../../../webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger");
19
19
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
20
  /* eslint-disable @typescript-eslint/no-empty-function, @typescript-eslint/no-explicit-any */
21
21
 
@@ -413,6 +413,7 @@ const dummyDefaultProps = {
413
413
  width: "90px",
414
414
  cursor: "pointer",
415
415
  overflow: "hidden",
416
+ padding: "0px",
416
417
  whiteSpace: "nowrap"
417
418
  },
418
419
  subtitleStyleProps: {
@@ -420,6 +421,7 @@ const dummyDefaultProps = {
420
421
  fontWeight: "200",
421
422
  color: "#666",
422
423
  overflow: "hidden",
424
+ padding: "0px",
423
425
  fontFamily: "'Segoe UI',Arial,sans-serif",
424
426
  display: "block",
425
427
  alignItems: "center",
@@ -475,7 +477,6 @@ const dummyDefaultProps = {
475
477
  cancelButtonText: "Cancel",
476
478
  cancelButtonAriaLabel: "Cancel. Return to Chat",
477
479
  brightnessValueOnDim: "0.2",
478
- disableDimLayer: false,
479
480
  onConfirm: () => {},
480
481
  // Detailed implementation omitted
481
482
  onCancel: () => {} // Detailed implementation omitted
@@ -483,20 +484,23 @@ const dummyDefaultProps = {
483
484
 
484
485
  styleProps: {
485
486
  generalStyleProps: {
487
+ display: "flex",
488
+ minHeight: "160px",
489
+ maxHeight: "300px",
490
+ boxSizing: "border-box",
486
491
  backgroundColor: "#FFFFFF",
487
492
  borderRadius: "2px",
488
493
  color: "black",
489
494
  fontFamily: "Segoe UI, Arial, sans-serif",
490
495
  fontSize: "14px",
491
- height: "160px",
492
496
  padding: "10px 20px",
493
- width: "262px",
494
497
  position: "absolute",
495
498
  justifyContent: "center",
496
499
  alignItems: "center",
497
- display: "flex",
498
500
  flexFlow: "column",
499
- zIndex: "9999"
501
+ zIndex: "9999",
502
+ left: "26px",
503
+ right: "26px"
500
504
  },
501
505
  titleStyleProps: {
502
506
  color: "#323130",
@@ -518,10 +522,14 @@ const dummyDefaultProps = {
518
522
  },
519
523
  buttonGroupStyleProps: {
520
524
  display: "flex",
525
+ width: "auto",
526
+ height: "auto",
527
+ boxSizing: "border-box",
521
528
  flexFlow: "row",
522
529
  justifyContent: "center",
523
530
  alignItems: "center",
524
- gap: "10px"
531
+ gap: "10px",
532
+ marginBottom: "10px"
525
533
  },
526
534
  confirmButtonStyleProps: {
527
535
  backgroundColor: "rgba(9,72,159,1)",
@@ -626,7 +634,6 @@ const dummyDefaultProps = {
626
634
  cancelButtonText: "Cancel",
627
635
  cancelButtonAriaLabel: "Cancel",
628
636
  brightnessValueOnDim: "0.2",
629
- disableDimLayer: false,
630
637
  onSend: undefined,
631
638
  onCancel: undefined,
632
639
  checkInput: undefined
@@ -1159,7 +1166,7 @@ const dummyDefaultProps = {
1159
1166
  subtitleText: "Please take a moment to give us feedback about your chat experience. We are loading the survey for you now."
1160
1167
  },
1161
1168
  styleProps: {
1162
- // ...[Existing chat button style props]
1169
+ // ...[Existing loading pane style props]
1163
1170
  generalStyleProps: {
1164
1171
  position: "initial",
1165
1172
  width: "100%",
@@ -1190,6 +1197,47 @@ const dummyDefaultProps = {
1190
1197
  },
1191
1198
  isCustomerVoiceSurveyCompact: undefined
1192
1199
  },
1200
+ preChatSurveyPaneProps: {
1201
+ controlProps: {
1202
+ id: "oc-lcw-prechatsurveypane-default",
1203
+ dir: "auto",
1204
+ hidePreChatSurveyPane: false,
1205
+ adaptiveCardHostConfig: "{\"fontFamily\":\"Segoe UI, Helvetica Neue, sans-serif\",\"containerStyles\":{\"default\":{\"foregroundColors\":{\"default\":{\"default\":\"#000000\"}},\"backgroundColor\":\"#FFFFFF\"}},\"actions\":{\"actionsOrientation\":\"Vertical\",\"actionAlignment\":\"stretch\"}}",
1206
+ payload: "{\"$schema\":\"http://adaptivecards.io/schemas/adaptive-card.json\",\"type\":\"AdaptiveCard\",\"version\":\"1.1\",\"body\":[{\"type\":\"TextBlock\",\"weight\":\"bolder\",\"text\":\"Please answer below questions.\"},{\"type\":\"Input.Text\",\"id\":\"1e5e4e7a-8f0b-ec11-b6e6-000d3a305d38\",\"label\":\"name pls?\",\"maxLength\":100,\"isRequired\":true,\"errorMessage\":\"Name is required\"},{\"type\":\"Input.Text\",\"id\":\"7f8f5d6d-995e-ec11-8f8f-000d3a31376e\",\"label\":\"multi\\nmulti\\nmulti\",\"style\":\"text\",\"isMultiline\":true,\"maxLength\":250},{\"type\":\"Input.ChoiceSet\",\"id\":\"e4bdf7cb-995e-ec11-8f8f-000d3a31376e\",\"label\":\"options\",\"isMultiSelect\":false,\"value\":\"1\",\"style\":\"compact\",\"choices\":[{\"title\":\"one\",\"value\":\"1\"},{\"title\":\"two\",\"value\":\"2\"},{\"title\":\"three\",\"value\":\"3\"}]},{\"type\":\"Input.Toggle\",\"id\":\"b26011d2-995e-ec11-8f8f-000d3a31376e\",\"title\":\"consent\",\"valueOn\":\"True\",\"valueOff\":\"False\",\"value\":\"false\"},{\"type\":\"TextBlock\",\"isSubtle\":true,\"text\":\"Fields marked with * are mandatory.\",\"wrap\":true}],\"actions\":[{\"type\":\"Action.Submit\",\"title\":\"Submit\",\"data\":{\"Type\":\"InputSubmit\"}}]}",
1207
+ onSubmit: function () {} // Detailed implementation omitted
1208
+ },
1209
+
1210
+ styleProps: {
1211
+ generalStyleProps: {
1212
+ borderStyle: "solid",
1213
+ borderRadius: "4px",
1214
+ borderWidth: "3px",
1215
+ backgroundColor: "#FFFFFF",
1216
+ borderColor: "#F1F1F1",
1217
+ overflowY: "auto",
1218
+ height: "inherit",
1219
+ width: "inherit"
1220
+ },
1221
+ customButtonStyleProps: {
1222
+ backgroundColor: "rgb(49, 95, 162)",
1223
+ color: "#FFFFFF",
1224
+ fontFamily: "Segoe UI, Arial, sans-serif",
1225
+ fontSize: "15px",
1226
+ height: "48px"
1227
+ },
1228
+ adaptiveCardContainerStyleProps: {
1229
+ border: "1px solid #ECECEC",
1230
+ borderRadius: "4px",
1231
+ margin: "3%"
1232
+ },
1233
+ customTextInputStyleProps: {
1234
+ height: "20px"
1235
+ },
1236
+ customMultilineTextInputStyleProps: {
1237
+ height: "52px"
1238
+ }
1239
+ }
1240
+ },
1193
1241
  proactiveChatPaneProps: {
1194
1242
  componentOverrides: {
1195
1243
  title: undefined,
@@ -1568,10 +1616,10 @@ const dummyDefaultProps = {
1568
1616
  padding: "0px 10px 0 10px"
1569
1617
  },
1570
1618
  userMessageBoxStyles: {
1571
- maxWidth: "75%"
1619
+ maxWidth: "90%"
1572
1620
  },
1573
1621
  systemMessageBoxStyles: {
1574
- maxWidth: "75%"
1622
+ maxWidth: "90%"
1575
1623
  },
1576
1624
  typingIndicatorStyleProps: {
1577
1625
  marginLeft: "10px",
@@ -6,12 +6,12 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.isReconnectEnabled = exports.handleChatReconnect = exports.getChatReconnectContext = void 0;
7
7
  require("regenerator-runtime/runtime");
8
8
  var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
9
+ var _authHelper = require("./authHelper");
10
+ var _utils = require("../../../common/utils");
9
11
  var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
10
12
  var _ConversationState = require("../../../contexts/common/ConversationState");
11
13
  var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidgetActionType");
12
14
  var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
13
- var _authHelper = require("./authHelper");
14
- var _utils = require("../../../common/utils");
15
15
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
16
  const handleChatReconnect = async (chatSDK, props, dispatch, setAdapter, initStartChat, state) => {
17
17
  var _props$chatConfig, _props$chatConfig$Liv;
@@ -84,10 +84,7 @@ const getChatReconnectContext = async (chatSDK, chatConfig, props, isAuthenticat
84
84
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
85
85
  exports.getChatReconnectContext = getChatReconnectContext;
86
86
  const setReconnectIdAndStartChat = async (isAuthenticatedChat, chatSDK, props, dispatch, setAdapter, reconnectId, initStartChat) => {
87
- if (isAuthenticatedChat) {
88
- // Get auth token for for getting chat reconnect context
89
- await (0, _authHelper.handleAuthentication)(chatSDK, props.chatConfig, props.getAuthToken);
90
- } else {
87
+ if (!isAuthenticatedChat) {
91
88
  const startUnauthenticatedReconnectChat = {
92
89
  eventName: _TelemetryConstants.BroadcastEvent.StartUnauthenticatedReconnectChat
93
90
  };
@@ -4,8 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.setPreChatAndInitiateChat = exports.prepareStartChat = exports.initStartChat = exports.checkIfConversationStillValid = void 0;
7
- var _Constants = require("../../../common/Constants");
8
7
  var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
8
+ var _Constants = require("../../../common/Constants");
9
+ var _utils = require("../../../common/utils");
10
+ var _authHelper = require("./authHelper");
11
+ var _ActivityStreamHandler = require("./ActivityStreamHandler");
12
+ var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
9
13
  var _ConversationState = require("../../../contexts/common/ConversationState");
10
14
  var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidgetActionType");
11
15
  var _NotificationHandler = require("../../webchatcontainerstateful/webchatcontroller/notification/NotificationHandler");
@@ -14,13 +18,9 @@ var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
14
18
  var _TelemetryManager = require("../../../common/telemetry/TelemetryManager");
15
19
  var _createAdapter = require("./createAdapter");
16
20
  var _newMessageEventHandler = require("../../../plugins/newMessageEventHandler");
17
- var _utils = require("../../../common/utils");
21
+ var _reconnectChatHelper = require("./reconnectChatHelper");
18
22
  var _setPostChatContextAndLoadSurvey = require("./setPostChatContextAndLoadSurvey");
19
23
  var _updateSessionDataForTelemetry = require("./updateSessionDataForTelemetry");
20
- var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
21
- var _ActivityStreamHandler = require("./ActivityStreamHandler");
22
- var _authHelper = require("./authHelper");
23
- var _reconnectChatHelper = require("./reconnectChatHelper");
24
24
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
25
25
  let optionalParams = {};
26
26
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -84,7 +84,10 @@ const setPreChatAndInitiateChat = async (chatSDK, dispatch, setAdapter, isProact
84
84
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
85
85
  payload: _ConversationState.ConversationState.Loading
86
86
  });
87
- await initStartChat(chatSDK, props === null || props === void 0 ? void 0 : props.chatConfig, props === null || props === void 0 ? void 0 : props.getAuthToken, dispatch, setAdapter);
87
+ const optionalParams = {
88
+ isProactiveChat
89
+ };
90
+ await initStartChat(chatSDK, props === null || props === void 0 ? void 0 : props.chatConfig, props === null || props === void 0 ? void 0 : props.getAuthToken, dispatch, setAdapter, optionalParams);
88
91
  };
89
92
 
90
93
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -120,10 +123,16 @@ const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAda
120
123
  });
121
124
  }
122
125
  try {
126
+ var _window$Microsoft, _window$Microsoft$Dyn, _window$Microsoft$Dyn2, _window$Microsoft$Dyn3;
123
127
  // Set custom context params
124
128
  setCustomContextParams(chatSDK);
125
- optionalParams = Object.assign({}, params, optionalParams);
126
- await chatSDK.startChat(optionalParams);
129
+ const defaultOptionalParams = {
130
+ sendDefaultInitContext: true,
131
+ isProactiveChat: !!(params !== null && params !== void 0 && params.isProactiveChat),
132
+ portalContactId: (_window$Microsoft = window.Microsoft) === null || _window$Microsoft === void 0 ? void 0 : (_window$Microsoft$Dyn = _window$Microsoft.Dynamic365) === null || _window$Microsoft$Dyn === void 0 ? void 0 : (_window$Microsoft$Dyn2 = _window$Microsoft$Dyn.Portal) === null || _window$Microsoft$Dyn2 === void 0 ? void 0 : (_window$Microsoft$Dyn3 = _window$Microsoft$Dyn2.User) === null || _window$Microsoft$Dyn3 === void 0 ? void 0 : _window$Microsoft$Dyn3.contactId
133
+ };
134
+ const startChatOptionalParams = Object.assign({}, params, optionalParams, defaultOptionalParams);
135
+ await chatSDK.startChat(startChatOptionalParams);
127
136
  isStartChatSuccessful = true;
128
137
  } catch (error) {
129
138
  _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.ERROR, {
@@ -8,15 +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
11
  var _startChat = require("../common/startChat");
12
+ var _utils = require("../../../common/utils");
13
+ var _endChat = require("../common/endChat");
13
14
  var _componentController = require("../../../controller/componentController");
15
+ var _ActivityStreamHandler = require("../common/ActivityStreamHandler");
14
16
  var _CallingContainerStateful = _interopRequireDefault(require("../../callingcontainerstateful/CallingContainerStateful"));
15
17
  var _ChatButtonStateful = _interopRequireDefault(require("../../chatbuttonstateful/ChatButtonStateful"));
16
18
  var _botframeworkWebchat = require("botframework-webchat");
17
19
  var _ConfirmationPaneStateful = _interopRequireDefault(require("../../confirmationpanestateful/ConfirmationPaneStateful"));
18
20
  var _ConversationState = require("../../../contexts/common/ConversationState");
19
21
  var _DataStoreManager = require("../../../common/contextDataStore/DataStoreManager");
22
+ var _Constants = require("../../../common/Constants");
20
23
  var _EmailTranscriptPaneStateful = _interopRequireDefault(require("../../emailtranscriptpanestateful/EmailTranscriptPaneStateful"));
21
24
  var _HeaderStateful = _interopRequireDefault(require("../../headerstateful/HeaderStateful"));
22
25
  var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidgetActionType");
@@ -32,24 +35,21 @@ var _TelemetryManager = require("../../../common/telemetry/TelemetryManager");
32
35
  var _WebChatContainerStateful = _interopRequireDefault(require("../../webchatcontainerstateful/WebChatContainerStateful"));
33
36
  var _createFooter = require("../common/createFooter");
34
37
  var _createInternetConnectionChangeHandler = require("../common/createInternetConnectionChangeHandler");
38
+ var _defaultClientDataStoreProvider = require("../../../common/storage/default/defaultClientDataStoreProvider");
39
+ var _defaultScrollBarProps = require("../common/defaultProps/defaultScrollBarProps");
35
40
  var _defaultWebChatContainerStatefulProps = require("../../webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps");
36
41
  var _disposeTelemetryLoggers = require("../common/disposeTelemetryLoggers");
37
- var _endChat = require("../common/endChat");
38
42
  var _getGeneralStylesForButton = require("../common/getGeneralStylesForButton");
39
43
  var _initCallingSdk = require("../common/initCallingSdk");
40
44
  var _initConfirmationPropsComposer = require("../common/initConfirmationPropsComposer");
41
45
  var _initWebChatComposer = require("../common/initWebChatComposer");
46
+ var _defaultCacheManager = require("../../../common/storage/default/defaultCacheManager");
42
47
  var _registerTelemetryLoggers = require("../common/registerTelemetryLoggers");
43
48
  var _setPostChatContextAndLoadSurvey = require("../common/setPostChatContextAndLoadSurvey");
44
49
  var _startProactiveChat = require("../common/startProactiveChat");
45
50
  var _useChatAdapterStore = _interopRequireDefault(require("../../../hooks/useChatAdapterStore"));
46
51
  var _useChatContextStore = _interopRequireDefault(require("../../../hooks/useChatContextStore"));
47
52
  var _useChatSDKStore = _interopRequireDefault(require("../../../hooks/useChatSDKStore"));
48
- var _ActivityStreamHandler = require("../common/ActivityStreamHandler");
49
- var _defaultCacheManager = require("../../../common/storage/default/defaultCacheManager");
50
- var _defaultClientDataStoreProvider = require("../../../common/storage/default/defaultClientDataStoreProvider");
51
- var _defaultScrollBarProps = require("../common/defaultProps/defaultScrollBarProps");
52
- var _Constants = require("../../../common/Constants");
53
53
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
54
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); }
55
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; }
@@ -103,7 +103,7 @@ const LiveChatWidgetStateful = props => {
103
103
  };
104
104
  } else {
105
105
  activeCachedChatExist = false;
106
- optionalParams = undefined;
106
+ optionalParams = {};
107
107
  }
108
108
  };
109
109
 
@@ -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,
@@ -57,9 +57,7 @@ const activityStatusMiddleware = () => next => args => {
57
57
  style: {
58
58
  padding: "2px"
59
59
  }
60
- }, sendState === _SendStatus.SendStatus.Sending && /*#__PURE__*/_react.default.createElement(_SendingTimestamp.SendingTimestamp, {
61
- args: args
62
- }), sendState === _SendStatus.SendStatus.SendFailed && /*#__PURE__*/_react.default.createElement(_NotDeliveredTimestamp.NotDeliveredTimestamp, {
60
+ }, sendState === _SendStatus.SendStatus.Sending && /*#__PURE__*/_react.default.createElement(_SendingTimestamp.SendingTimestamp, null), sendState === _SendStatus.SendStatus.SendFailed && /*#__PURE__*/_react.default.createElement(_NotDeliveredTimestamp.NotDeliveredTimestamp, {
63
61
  args: args
64
62
  }), sendState === _SendStatus.SendStatus.Sent && /*#__PURE__*/_react.default.createElement(_DeliveredTimestamp.DeliveredTimestamp, {
65
63
  args: args,
@@ -236,7 +236,8 @@ const createAttachmentMiddleware = enableInlinePlaying => {
236
236
  renderer: next
237
237
  });
238
238
  }
239
- if (fileExtension === "txt") {
239
+ const isUnknownImageObject = contentType.toLowerCase().includes("image") && !imageExtension;
240
+ if (fileExtension === "txt" || isUnknownImageObject) {
240
241
  return /*#__PURE__*/_react.default.createElement(Attachment, {
241
242
  iconData: iconData,
242
243
  textCard: patchAttachment(card, {
@@ -5,6 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.defaultSystemMessageBoxStyles = void 0;
7
7
  const defaultSystemMessageBoxStyles = {
8
- maxWidth: "75%"
8
+ maxWidth: "90%"
9
9
  };
10
10
  exports.defaultSystemMessageBoxStyles = defaultSystemMessageBoxStyles;
@@ -5,6 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.defaultUserMessageBoxStyles = void 0;
7
7
  const defaultUserMessageBoxStyles = {
8
- maxWidth: "75%"
8
+ maxWidth: "90%"
9
9
  };
10
10
  exports.defaultUserMessageBoxStyles = defaultUserMessageBoxStyles;
@@ -33,14 +33,13 @@ const DeliveredTimestamp = _ref => {
33
33
  } = args;
34
34
  return /*#__PURE__*/_react.default.createElement(_react2.Stack, {
35
35
  style: contentStyles,
36
+ dir: dir
37
+ }, role === _DirectLineSenderRole.DirectLineSenderRole.Bot && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("span", {
36
38
  dir: dir,
37
- horizontal: true
38
- }, role === _DirectLineSenderRole.DirectLineSenderRole.Bot && /*#__PURE__*/_react.default.createElement("span", {
39
39
  "aria-hidden": "false"
40
- }, name), role === _DirectLineSenderRole.DirectLineSenderRole.Bot && /*#__PURE__*/_react.default.createElement("span", null, " \xA0-\xA0 "), /*#__PURE__*/_react.default.createElement("span", {
40
+ }, name, " - ", (0, _utils.getTimestampHourMinute)(timestamp))), role === _DirectLineSenderRole.DirectLineSenderRole.User && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("span", {
41
+ "aria-hidden": "false",
41
42
  dir: dir
42
- }, " ", (0, _utils.getTimestampHourMinute)(timestamp)), role === _DirectLineSenderRole.DirectLineSenderRole.User && /*#__PURE__*/_react.default.createElement("span", null, " \xA0-\xA0 "), role === _DirectLineSenderRole.DirectLineSenderRole.User && /*#__PURE__*/_react.default.createElement("span", {
43
- "aria-hidden": "false"
44
- }, ((_state$domainStates$m = state.domainStates.middlewareLocalizedTexts) === null || _state$domainStates$m === void 0 ? void 0 : _state$domainStates$m.MIDDLEWARE_MESSAGE_DELIVERED) ?? _defaultMiddlewareLocalizedTexts.defaultMiddlewareLocalizedTexts.MIDDLEWARE_MESSAGE_DELIVERED));
43
+ }, " ", (0, _utils.getTimestampHourMinute)(timestamp), " - ", ((_state$domainStates$m = state.domainStates.middlewareLocalizedTexts) === null || _state$domainStates$m === void 0 ? void 0 : _state$domainStates$m.MIDDLEWARE_MESSAGE_DELIVERED) ?? _defaultMiddlewareLocalizedTexts.defaultMiddlewareLocalizedTexts.MIDDLEWARE_MESSAGE_DELIVERED)));
45
44
  };
46
45
  exports.DeliveredTimestamp = DeliveredTimestamp;
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.NotDeliveredTimestamp = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
- var _Constants = require("../../../../../../common/Constants");
9
8
  var _KeyCodes = require("../../../../../../common/KeyCodes");
10
9
  var _react2 = require("@fluentui/react");
11
10
  var _defaultMiddlewareLocalizedTexts = require("../../../../common/defaultProps/defaultMiddlewareLocalizedTexts");
@@ -57,9 +56,8 @@ const NotDeliveredTimestamp = _ref => {
57
56
  timestampWebChatNodes[1].innerText = (0, _utils.getTimestampHourMinute)(timestamp);
58
57
  }
59
58
  }, [timestampRef]);
60
- const onRetryClick = (0, _react.useCallback)(async event => {
59
+ const onRetryClick = (0, _react.useCallback)(async () => {
61
60
  var _activity$channelData;
62
- removeNotDeliveredTimestamp(event);
63
61
  activity.previousClientActivityID = (_activity$channelData = activity.channelData) === null || _activity$channelData === void 0 ? void 0 : _activity$channelData.clientActivityID;
64
62
  await postActivity(activity);
65
63
  focus("sendBox");
@@ -67,19 +65,9 @@ const NotDeliveredTimestamp = _ref => {
67
65
  const onRetryKeyEnter = event => {
68
66
  if (event.code === _KeyCodes.KeyCodes.ENTER) {
69
67
  event.preventDefault();
70
- onRetryClick(event);
68
+ onRetryClick();
71
69
  }
72
70
  };
73
- const removeNotDeliveredTimestamp = event => {
74
- let parent = event.target.parentElement;
75
- while (parent.tagName !== _Constants.HtmlAttributeNames.listItem) {
76
- parent = parent.parentElement;
77
- if (parent.tagName === _Constants.HtmlAttributeNames.unorderedList) {
78
- return;
79
- }
80
- }
81
- parent.parentNode.removeChild(parent);
82
- };
83
71
  return /*#__PURE__*/_react.default.createElement(_react2.Stack, {
84
72
  style: contentStyles,
85
73
  dir: dir,
@@ -8,30 +8,21 @@ var _react = _interopRequireDefault(require("react"));
8
8
  var _react2 = require("@fluentui/react");
9
9
  var _defaultMiddlewareLocalizedTexts = require("../../../../common/defaultProps/defaultMiddlewareLocalizedTexts");
10
10
  var _defaultTimestampContentStyles = require("../defaultStyles/defaultTimestampContentStyles");
11
- var _utils = require("../../../../../../common/utils");
12
11
  var _ = require("../../../../../..");
13
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
13
  /* eslint @typescript-eslint/no-explicit-any: "off" */
15
- const SendingTimestamp = _ref => {
14
+ const SendingTimestamp = () => {
16
15
  var _state$domainStates$r, _state$domainStates$r2, _state$domainStates$m;
17
- let {
18
- args
19
- } = _ref;
20
16
  const [state] = (0, _.useChatContextStore)();
21
17
  const dir = ((_state$domainStates$r = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r === void 0 ? void 0 : _state$domainStates$r.timestampDir) ?? state.domainStates.globalDir;
22
18
  const contentStyles = {
23
19
  ..._defaultTimestampContentStyles.defaultTimestampContentStyles,
24
20
  ...((_state$domainStates$r2 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r2 === void 0 ? void 0 : _state$domainStates$r2.timestampContentStyleProps)
25
21
  };
26
- const {
27
- activity: {
28
- timestamp
29
- }
30
- } = args;
31
22
  return /*#__PURE__*/_react.default.createElement(_react2.Stack, {
32
23
  style: contentStyles,
33
24
  dir: dir,
34
25
  horizontal: true
35
- }, /*#__PURE__*/_react.default.createElement("span", null, " ", (0, _utils.getTimestampHourMinute)(timestamp)), /*#__PURE__*/_react.default.createElement("span", null, " \xA0-\xA0 "), /*#__PURE__*/_react.default.createElement("span", null, " ", ((_state$domainStates$m = state.domainStates.middlewareLocalizedTexts) === null || _state$domainStates$m === void 0 ? void 0 : _state$domainStates$m.MIDDLEWARE_MESSAGE_SENDING) ?? _defaultMiddlewareLocalizedTexts.defaultMiddlewareLocalizedTexts.MIDDLEWARE_MESSAGE_SENDING, " "));
26
+ }, /*#__PURE__*/_react.default.createElement("span", null, " ", ((_state$domainStates$m = state.domainStates.middlewareLocalizedTexts) === null || _state$domainStates$m === void 0 ? void 0 : _state$domainStates$m.MIDDLEWARE_MESSAGE_SENDING) ?? _defaultMiddlewareLocalizedTexts.defaultMiddlewareLocalizedTexts.MIDDLEWARE_MESSAGE_SENDING, " "));
36
27
  };
37
28
  exports.SendingTimestamp = SendingTimestamp;
@@ -45,6 +45,10 @@ const createOnNewAdapterActivityHandler = (chatId, userId) => {
45
45
  if (activity !== null && activity !== void 0 && (_activity$channelData5 = activity.channelData) !== null && _activity$channelData5 !== void 0 && (_activity$channelData6 = _activity$channelData5.tags) !== null && _activity$channelData6 !== void 0 && _activity$channelData6.includes(_Constants.Constants.systemMessageTag)) {
46
46
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
47
47
  payload.messageType = _Constants.Constants.systemMessageTag;
48
+ _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
49
+ Event: _TelemetryConstants.TelemetryEvent.MessageReceived,
50
+ Description: "System message received"
51
+ });
48
52
  } else {
49
53
  var _activity$channelData7, _activity$channelData8, _activity$channelData9;
50
54
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -44,8 +44,8 @@ _defineProperty(Constants, "acsChannel", "ACS_CHANNEL");
44
44
  _defineProperty(Constants, "publicMessageTag", "public");
45
45
  _defineProperty(Constants, "supportedAdaptiveCardContentTypes", ["application/vnd.microsoft.card.adaptive", "application/vnd.microsoft.card.audio", "application/vnd.microsoft.card.hero", "application/vnd.microsoft.card.receipt", "application/vnd.microsoft.card.thumbnail", "application/vnd.microsoft.card.signin", "application/vnd.microsoft.card.oauth"]);
46
46
  _defineProperty(Constants, "maxUploadFileSize", "500000");
47
- _defineProperty(Constants, "imageRegex", /(\.)(jpeg|jpg|jiff|png|gif|bmp)$/i);
48
- _defineProperty(Constants, "audioMediaRegex", /(\.)(aac|aiff|alac|flac|mp2|mp3|pcm|wav|wma)$/i);
47
+ _defineProperty(Constants, "imageRegex", /(\.)(jpeg|jpg|jiff|png|gif|bmp|webp)$/i);
48
+ _defineProperty(Constants, "audioMediaRegex", /(\.)(aac|aiff|alac|amr|flac|mp2|mp3|pcm|wav|wma)$/i);
49
49
  _defineProperty(Constants, "videoMediaRegex", /(\.)(avchd|avi|flv|mpe|mpeg|mpg|mpv|mp4|m4p|m4v|mov|qt|swf|webm|wmv)$/i);
50
50
  _defineProperty(Constants, "chromeSupportedInlineMediaRegex", /(\.)(aac|mp3|wav|mp4)$/i);
51
51
  _defineProperty(Constants, "firefoxSupportedInlineMediaRegex", /(\.)(aac|flac|mp3|wav|mp4|mov)$/i);
@@ -56,6 +56,7 @@ export class TelemetryHelper {
56
56
  event.ElapsedTimeInMilliseconds = payload.ElapsedTimeInMilliseconds;
57
57
  event.ExceptionDetails = JSON.stringify(payload.ExceptionDetails);
58
58
  event.Description = payload.Description;
59
+ event.CustomProperties = JSON.stringify(payload.CustomProperties);
59
60
  });
60
61
  }
61
62
  static conformToWebChatContract(level, input) {
@@ -161,7 +162,7 @@ export class TelemetryHelper {
161
162
  telemetryDataLocal.widgetId = telemetryConfig === null || telemetryConfig === void 0 ? void 0 : telemetryConfig.appId;
162
163
  telemetryDataLocal.orgId = telemetryConfig === null || telemetryConfig === void 0 ? void 0 : telemetryConfig.orgId;
163
164
  telemetryDataLocal.orgUrl = telemetryConfig === null || telemetryConfig === void 0 ? void 0 : telemetryConfig.orgUrl;
164
- telemetryDataLocal.lcwRuntimeId = newGuid();
165
+ telemetryDataLocal.lcwRuntimeId = telemetryConfig.LCWRuntimeId ?? newGuid();
165
166
  return telemetryDataLocal;
166
167
  }
167
168
  static addSessionDataToTelemetry(chatSession, telemetryInternalData) {
@@ -82,7 +82,7 @@ export const ConfirmationPaneStateful = props => {
82
82
  Event: TelemetryEvent.ConfirmationPaneLoaded
83
83
  });
84
84
  }, []);
85
- return /*#__PURE__*/React.createElement(React.Fragment, null, !(controlProps !== null && controlProps !== void 0 && controlProps.disableDimLayer) && /*#__PURE__*/React.createElement(DimLayer, {
85
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(DimLayer, {
86
86
  brightness: (controlProps === null || controlProps === void 0 ? void 0 : controlProps.brightnessValueOnDim) ?? "0.2"
87
87
  }), /*#__PURE__*/React.createElement(ConfirmationPane, {
88
88
  componentOverrides: props === null || props === void 0 ? void 0 : props.componentOverrides,
@@ -88,7 +88,7 @@ export const EmailTranscriptPaneStateful = props => {
88
88
  Event: TelemetryEvent.EmailTranscriptLoaded
89
89
  });
90
90
  }, [initialEmail]);
91
- return /*#__PURE__*/React.createElement(React.Fragment, null, !(controlProps !== null && controlProps !== void 0 && controlProps.disableDimLayer) && /*#__PURE__*/React.createElement(DimLayer, {
91
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(DimLayer, {
92
92
  brightness: (controlProps === null || controlProps === void 0 ? void 0 : controlProps.brightnessValueOnDim) ?? "0.2"
93
93
  }), /*#__PURE__*/React.createElement(InputValidationPane, {
94
94
  componentOverrides: props.componentOverrides,
@@ -21,6 +21,7 @@ export const HeaderStateful = props => {
21
21
  const [outOfOperatingHours, setOutOfOperatingHours] = useState(((_state$domainStates$l = state.domainStates.liveChatConfig) === null || _state$domainStates$l === void 0 ? void 0 : (_state$domainStates$l2 = _state$domainStates$l.LiveWSAndLiveChatEngJoin) === null || _state$domainStates$l2 === void 0 ? void 0 : _state$domainStates$l2.OutOfOperatingHours) === "True");
22
22
  const outOfOfficeStyleProps = Object.assign({}, defaultOutOfOfficeHeaderStyleProps, outOfOfficeHeaderProps === null || outOfOfficeHeaderProps === void 0 ? void 0 : outOfOfficeHeaderProps.styleProps);
23
23
  const conversationState = useRef(state.appStates.conversationState);
24
+ const conversationEndedByAgent = useRef(state.appStates.conversationEndedByAgent);
24
25
  const controlProps = {
25
26
  id: "oc-lcw-header",
26
27
  dir: state.domainStates.globalDir,
@@ -40,7 +41,7 @@ export const HeaderStateful = props => {
40
41
  Event: TelemetryEvent.HeaderCloseButtonClicked,
41
42
  Description: "Header Close button clicked."
42
43
  });
43
- if (conversationState.current === ConversationState.Active) {
44
+ if (conversationState.current === ConversationState.Active || conversationEndedByAgent.current) {
44
45
  dispatch({
45
46
  type: LiveChatWidgetActionType.SET_SHOW_CONFIRMATION,
46
47
  payload: true
@@ -86,6 +87,7 @@ export const HeaderStateful = props => {
86
87
  if (state.appStates.conversationState) {
87
88
  conversationState.current = state.appStates.conversationState;
88
89
  }
90
+ conversationEndedByAgent.current = state.appStates.conversationEndedByAgent;
89
91
  }, [state.appStates]);
90
92
  return /*#__PURE__*/React.createElement(Header, {
91
93
  componentOverrides: headerProps === null || headerProps === void 0 ? void 0 : headerProps.componentOverrides,
@@ -9,9 +9,9 @@ import { createActivityMiddleware } from "../../../webchatcontainerstateful/webc
9
9
  import createAttachmentMiddleware from "../../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware";
10
10
  import { createAvatarMiddleware } from "../../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware";
11
11
  import { createMarkdown } from "../createMarkdown";
12
+ import { createWebChatTelemetry } from "../../../webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger";
12
13
  import { groupActivitiesMiddleware } from "../../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware";
13
14
  import { typingIndicatorMiddleware } from "../../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware";
14
- import { createWebChatTelemetry } from "../../../webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger";
15
15
 
16
16
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
17
17
  export const dummyDefaultProps = {
@@ -407,6 +407,7 @@ export const dummyDefaultProps = {
407
407
  width: "90px",
408
408
  cursor: "pointer",
409
409
  overflow: "hidden",
410
+ padding: "0px",
410
411
  whiteSpace: "nowrap"
411
412
  },
412
413
  subtitleStyleProps: {
@@ -414,6 +415,7 @@ export const dummyDefaultProps = {
414
415
  fontWeight: "200",
415
416
  color: "#666",
416
417
  overflow: "hidden",
418
+ padding: "0px",
417
419
  fontFamily: "'Segoe UI',Arial,sans-serif",
418
420
  display: "block",
419
421
  alignItems: "center",
@@ -469,7 +471,6 @@ export const dummyDefaultProps = {
469
471
  cancelButtonText: "Cancel",
470
472
  cancelButtonAriaLabel: "Cancel. Return to Chat",
471
473
  brightnessValueOnDim: "0.2",
472
- disableDimLayer: false,
473
474
  onConfirm: () => {},
474
475
  // Detailed implementation omitted
475
476
  onCancel: () => {} // Detailed implementation omitted
@@ -477,20 +478,23 @@ export const dummyDefaultProps = {
477
478
 
478
479
  styleProps: {
479
480
  generalStyleProps: {
481
+ display: "flex",
482
+ minHeight: "160px",
483
+ maxHeight: "300px",
484
+ boxSizing: "border-box",
480
485
  backgroundColor: "#FFFFFF",
481
486
  borderRadius: "2px",
482
487
  color: "black",
483
488
  fontFamily: "Segoe UI, Arial, sans-serif",
484
489
  fontSize: "14px",
485
- height: "160px",
486
490
  padding: "10px 20px",
487
- width: "262px",
488
491
  position: "absolute",
489
492
  justifyContent: "center",
490
493
  alignItems: "center",
491
- display: "flex",
492
494
  flexFlow: "column",
493
- zIndex: "9999"
495
+ zIndex: "9999",
496
+ left: "26px",
497
+ right: "26px"
494
498
  },
495
499
  titleStyleProps: {
496
500
  color: "#323130",
@@ -512,10 +516,14 @@ export const dummyDefaultProps = {
512
516
  },
513
517
  buttonGroupStyleProps: {
514
518
  display: "flex",
519
+ width: "auto",
520
+ height: "auto",
521
+ boxSizing: "border-box",
515
522
  flexFlow: "row",
516
523
  justifyContent: "center",
517
524
  alignItems: "center",
518
- gap: "10px"
525
+ gap: "10px",
526
+ marginBottom: "10px"
519
527
  },
520
528
  confirmButtonStyleProps: {
521
529
  backgroundColor: "rgba(9,72,159,1)",
@@ -620,7 +628,6 @@ export const dummyDefaultProps = {
620
628
  cancelButtonText: "Cancel",
621
629
  cancelButtonAriaLabel: "Cancel",
622
630
  brightnessValueOnDim: "0.2",
623
- disableDimLayer: false,
624
631
  onSend: undefined,
625
632
  onCancel: undefined,
626
633
  checkInput: undefined
@@ -1153,7 +1160,7 @@ export const dummyDefaultProps = {
1153
1160
  subtitleText: "Please take a moment to give us feedback about your chat experience. We are loading the survey for you now."
1154
1161
  },
1155
1162
  styleProps: {
1156
- // ...[Existing chat button style props]
1163
+ // ...[Existing loading pane style props]
1157
1164
  generalStyleProps: {
1158
1165
  position: "initial",
1159
1166
  width: "100%",
@@ -1184,6 +1191,47 @@ export const dummyDefaultProps = {
1184
1191
  },
1185
1192
  isCustomerVoiceSurveyCompact: undefined
1186
1193
  },
1194
+ preChatSurveyPaneProps: {
1195
+ controlProps: {
1196
+ id: "oc-lcw-prechatsurveypane-default",
1197
+ dir: "auto",
1198
+ hidePreChatSurveyPane: false,
1199
+ adaptiveCardHostConfig: "{\"fontFamily\":\"Segoe UI, Helvetica Neue, sans-serif\",\"containerStyles\":{\"default\":{\"foregroundColors\":{\"default\":{\"default\":\"#000000\"}},\"backgroundColor\":\"#FFFFFF\"}},\"actions\":{\"actionsOrientation\":\"Vertical\",\"actionAlignment\":\"stretch\"}}",
1200
+ payload: "{\"$schema\":\"http://adaptivecards.io/schemas/adaptive-card.json\",\"type\":\"AdaptiveCard\",\"version\":\"1.1\",\"body\":[{\"type\":\"TextBlock\",\"weight\":\"bolder\",\"text\":\"Please answer below questions.\"},{\"type\":\"Input.Text\",\"id\":\"1e5e4e7a-8f0b-ec11-b6e6-000d3a305d38\",\"label\":\"name pls?\",\"maxLength\":100,\"isRequired\":true,\"errorMessage\":\"Name is required\"},{\"type\":\"Input.Text\",\"id\":\"7f8f5d6d-995e-ec11-8f8f-000d3a31376e\",\"label\":\"multi\\nmulti\\nmulti\",\"style\":\"text\",\"isMultiline\":true,\"maxLength\":250},{\"type\":\"Input.ChoiceSet\",\"id\":\"e4bdf7cb-995e-ec11-8f8f-000d3a31376e\",\"label\":\"options\",\"isMultiSelect\":false,\"value\":\"1\",\"style\":\"compact\",\"choices\":[{\"title\":\"one\",\"value\":\"1\"},{\"title\":\"two\",\"value\":\"2\"},{\"title\":\"three\",\"value\":\"3\"}]},{\"type\":\"Input.Toggle\",\"id\":\"b26011d2-995e-ec11-8f8f-000d3a31376e\",\"title\":\"consent\",\"valueOn\":\"True\",\"valueOff\":\"False\",\"value\":\"false\"},{\"type\":\"TextBlock\",\"isSubtle\":true,\"text\":\"Fields marked with * are mandatory.\",\"wrap\":true}],\"actions\":[{\"type\":\"Action.Submit\",\"title\":\"Submit\",\"data\":{\"Type\":\"InputSubmit\"}}]}",
1201
+ onSubmit: function () {} // Detailed implementation omitted
1202
+ },
1203
+
1204
+ styleProps: {
1205
+ generalStyleProps: {
1206
+ borderStyle: "solid",
1207
+ borderRadius: "4px",
1208
+ borderWidth: "3px",
1209
+ backgroundColor: "#FFFFFF",
1210
+ borderColor: "#F1F1F1",
1211
+ overflowY: "auto",
1212
+ height: "inherit",
1213
+ width: "inherit"
1214
+ },
1215
+ customButtonStyleProps: {
1216
+ backgroundColor: "rgb(49, 95, 162)",
1217
+ color: "#FFFFFF",
1218
+ fontFamily: "Segoe UI, Arial, sans-serif",
1219
+ fontSize: "15px",
1220
+ height: "48px"
1221
+ },
1222
+ adaptiveCardContainerStyleProps: {
1223
+ border: "1px solid #ECECEC",
1224
+ borderRadius: "4px",
1225
+ margin: "3%"
1226
+ },
1227
+ customTextInputStyleProps: {
1228
+ height: "20px"
1229
+ },
1230
+ customMultilineTextInputStyleProps: {
1231
+ height: "52px"
1232
+ }
1233
+ }
1234
+ },
1187
1235
  proactiveChatPaneProps: {
1188
1236
  componentOverrides: {
1189
1237
  title: undefined,
@@ -1562,10 +1610,10 @@ export const dummyDefaultProps = {
1562
1610
  padding: "0px 10px 0 10px"
1563
1611
  },
1564
1612
  userMessageBoxStyles: {
1565
- maxWidth: "75%"
1613
+ maxWidth: "90%"
1566
1614
  },
1567
1615
  systemMessageBoxStyles: {
1568
- maxWidth: "75%"
1616
+ maxWidth: "90%"
1569
1617
  },
1570
1618
  typingIndicatorStyleProps: {
1571
1619
  marginLeft: "10px",
@@ -1,11 +1,12 @@
1
1
  import "regenerator-runtime/runtime";
2
2
  import { BroadcastEvent, LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
3
+ import { handleAuthentication, removeAuthTokenProvider } from "./authHelper";
4
+ import { isNullOrEmptyString, isNullOrUndefined } from "../../../common/utils";
3
5
  import { BroadcastService } from "@microsoft/omnichannel-chat-components";
4
6
  import { ConversationState } from "../../../contexts/common/ConversationState";
5
7
  import { LiveChatWidgetActionType } from "../../../contexts/common/LiveChatWidgetActionType";
6
8
  import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
7
- import { handleAuthentication, removeAuthTokenProvider } from "./authHelper";
8
- import { isNullOrEmptyString, isNullOrUndefined } from "../../../common/utils";
9
+
9
10
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
11
  const handleChatReconnect = async (chatSDK, props, dispatch, setAdapter, initStartChat, state) => {
11
12
  var _props$chatConfig, _props$chatConfig$Liv;
@@ -76,10 +77,7 @@ const getChatReconnectContext = async (chatSDK, chatConfig, props, isAuthenticat
76
77
 
77
78
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
78
79
  const setReconnectIdAndStartChat = async (isAuthenticatedChat, chatSDK, props, dispatch, setAdapter, reconnectId, initStartChat) => {
79
- if (isAuthenticatedChat) {
80
- // Get auth token for for getting chat reconnect context
81
- await handleAuthentication(chatSDK, props.chatConfig, props.getAuthToken);
82
- } else {
80
+ if (!isAuthenticatedChat) {
83
81
  const startUnauthenticatedReconnectChat = {
84
82
  eventName: BroadcastEvent.StartUnauthenticatedReconnectChat
85
83
  };
@@ -1,5 +1,9 @@
1
- import { ChatSDKError, LiveWorkItemState } from "../../../common/Constants";
2
1
  import { BroadcastEvent, LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
2
+ import { ChatSDKError, LiveWorkItemState } from "../../../common/Constants";
3
+ import { createTimer, getStateFromCache, isUndefinedOrEmpty } from "../../../common/utils";
4
+ import { getAuthClientFunction, handleAuthentication } from "./authHelper";
5
+ import { ActivityStreamHandler } from "./ActivityStreamHandler";
6
+ import { BroadcastService } from "@microsoft/omnichannel-chat-components";
3
7
  import { ConversationState } from "../../../contexts/common/ConversationState";
4
8
  import { LiveChatWidgetActionType } from "../../../contexts/common/LiveChatWidgetActionType";
5
9
  import { NotificationHandler } from "../../webchatcontainerstateful/webchatcontroller/notification/NotificationHandler";
@@ -8,13 +12,9 @@ import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
8
12
  import { TelemetryTimers } from "../../../common/telemetry/TelemetryManager";
9
13
  import { createAdapter } from "./createAdapter";
10
14
  import { createOnNewAdapterActivityHandler } from "../../../plugins/newMessageEventHandler";
11
- import { createTimer, getStateFromCache, isUndefinedOrEmpty } from "../../../common/utils";
15
+ import { handleChatReconnect } from "./reconnectChatHelper";
12
16
  import { setPostChatContextAndLoadSurvey } from "./setPostChatContextAndLoadSurvey";
13
17
  import { updateSessionDataForTelemetry } from "./updateSessionDataForTelemetry";
14
- import { BroadcastService } from "@microsoft/omnichannel-chat-components";
15
- import { ActivityStreamHandler } from "./ActivityStreamHandler";
16
- import { getAuthClientFunction, handleAuthentication } from "./authHelper";
17
- import { handleChatReconnect } from "./reconnectChatHelper";
18
18
 
19
19
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
20
20
  let optionalParams = {};
@@ -78,7 +78,10 @@ const setPreChatAndInitiateChat = async (chatSDK, dispatch, setAdapter, isProact
78
78
  type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
79
79
  payload: ConversationState.Loading
80
80
  });
81
- await initStartChat(chatSDK, props === null || props === void 0 ? void 0 : props.chatConfig, props === null || props === void 0 ? void 0 : props.getAuthToken, dispatch, setAdapter);
81
+ const optionalParams = {
82
+ isProactiveChat
83
+ };
84
+ await initStartChat(chatSDK, props === null || props === void 0 ? void 0 : props.chatConfig, props === null || props === void 0 ? void 0 : props.getAuthToken, dispatch, setAdapter, optionalParams);
82
85
  };
83
86
 
84
87
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -113,10 +116,16 @@ const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAda
113
116
  });
114
117
  }
115
118
  try {
119
+ var _window$Microsoft, _window$Microsoft$Dyn, _window$Microsoft$Dyn2, _window$Microsoft$Dyn3;
116
120
  // Set custom context params
117
121
  setCustomContextParams(chatSDK);
118
- optionalParams = Object.assign({}, params, optionalParams);
119
- await chatSDK.startChat(optionalParams);
122
+ const defaultOptionalParams = {
123
+ sendDefaultInitContext: true,
124
+ isProactiveChat: !!(params !== null && params !== void 0 && params.isProactiveChat),
125
+ portalContactId: (_window$Microsoft = window.Microsoft) === null || _window$Microsoft === void 0 ? void 0 : (_window$Microsoft$Dyn = _window$Microsoft.Dynamic365) === null || _window$Microsoft$Dyn === void 0 ? void 0 : (_window$Microsoft$Dyn2 = _window$Microsoft$Dyn.Portal) === null || _window$Microsoft$Dyn2 === void 0 ? void 0 : (_window$Microsoft$Dyn3 = _window$Microsoft$Dyn2.User) === null || _window$Microsoft$Dyn3 === void 0 ? void 0 : _window$Microsoft$Dyn3.contactId
126
+ };
127
+ const startChatOptionalParams = Object.assign({}, params, optionalParams, defaultOptionalParams);
128
+ await chatSDK.startChat(startChatOptionalParams);
120
129
  isStartChatSuccessful = true;
121
130
  } catch (error) {
122
131
  TelemetryHelper.logSDKEvent(LogLevel.ERROR, {
@@ -1,17 +1,20 @@
1
1
  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); }
2
2
  import { BroadcastEvent, LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
3
- import { BroadcastService, decodeComponentString, BroadcastServiceInitialize } from "@microsoft/omnichannel-chat-components";
3
+ import { BroadcastService, BroadcastServiceInitialize, decodeComponentString } from "@microsoft/omnichannel-chat-components";
4
4
  import { Stack } from "@fluentui/react";
5
5
  import React, { useEffect, useRef, useState } from "react";
6
- import { createTimer, getBroadcastChannelName, getLocaleDirection, getStateFromCache, getWidgetCacheId, getWidgetEndChatEventName, isNullOrEmptyString, isUndefinedOrEmpty } from "../../../common/utils";
7
6
  import { checkIfConversationStillValid, initStartChat, prepareStartChat, setPreChatAndInitiateChat } from "../common/startChat";
7
+ import { createTimer, getBroadcastChannelName, getLocaleDirection, getStateFromCache, getWidgetCacheId, getWidgetEndChatEventName, isNullOrEmptyString, isUndefinedOrEmpty } from "../../../common/utils";
8
+ import { endChat, prepareEndChat } from "../common/endChat";
8
9
  import { shouldShowCallingContainer, shouldShowChatButton, shouldShowConfirmationPane, shouldShowEmailTranscriptPane, shouldShowHeader, shouldShowLoadingPane, shouldShowOutOfOfficeHoursPane, shouldShowPostChatLoadingPane, shouldShowPostChatSurveyPane, shouldShowPreChatSurveyPane, shouldShowProactiveChatPane, shouldShowReconnectChatPane, shouldShowWebChatContainer } from "../../../controller/componentController";
10
+ import { ActivityStreamHandler } from "../common/ActivityStreamHandler";
9
11
  import CallingContainerStateful from "../../callingcontainerstateful/CallingContainerStateful";
10
12
  import ChatButtonStateful from "../../chatbuttonstateful/ChatButtonStateful";
11
13
  import { Components } from "botframework-webchat";
12
14
  import ConfirmationPaneStateful from "../../confirmationpanestateful/ConfirmationPaneStateful";
13
15
  import { ConversationState } from "../../../contexts/common/ConversationState";
14
16
  import { DataStoreManager } from "../../../common/contextDataStore/DataStoreManager";
17
+ import { E2VVOptions } from "../../../common/Constants";
15
18
  import { ElementType } from "@microsoft/omnichannel-chat-components";
16
19
  import EmailTranscriptPaneStateful from "../../emailtranscriptpanestateful/EmailTranscriptPaneStateful";
17
20
  import HeaderStateful from "../../headerstateful/HeaderStateful";
@@ -28,24 +31,21 @@ import { TelemetryTimers } from "../../../common/telemetry/TelemetryManager";
28
31
  import WebChatContainerStateful from "../../webchatcontainerstateful/WebChatContainerStateful";
29
32
  import { createFooter } from "../common/createFooter";
30
33
  import { createInternetConnectionChangeHandler } from "../common/createInternetConnectionChangeHandler";
34
+ import { defaultClientDataStoreProvider } from "../../../common/storage/default/defaultClientDataStoreProvider";
35
+ import { defaultScrollBarProps } from "../common/defaultProps/defaultScrollBarProps";
31
36
  import { defaultWebChatContainerStatefulProps } from "../../webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps";
32
37
  import { disposeTelemetryLoggers } from "../common/disposeTelemetryLoggers";
33
- import { endChat, prepareEndChat } from "../common/endChat";
34
38
  import { getGeneralStylesForButton } from "../common/getGeneralStylesForButton";
35
39
  import { initCallingSdk } from "../common/initCallingSdk";
36
40
  import { initConfirmationPropsComposer } from "../common/initConfirmationPropsComposer";
37
41
  import { initWebChatComposer } from "../common/initWebChatComposer";
42
+ import { registerBroadcastServiceForLocalStorage } from "../../../common/storage/default/defaultCacheManager";
38
43
  import { registerTelemetryLoggers } from "../common/registerTelemetryLoggers";
39
44
  import { setPostChatContextAndLoadSurvey } from "../common/setPostChatContextAndLoadSurvey";
40
45
  import { startProactiveChat } from "../common/startProactiveChat";
41
46
  import useChatAdapterStore from "../../../hooks/useChatAdapterStore";
42
47
  import useChatContextStore from "../../../hooks/useChatContextStore";
43
48
  import useChatSDKStore from "../../../hooks/useChatSDKStore";
44
- import { ActivityStreamHandler } from "../common/ActivityStreamHandler";
45
- import { registerBroadcastServiceForLocalStorage } from "../../../common/storage/default/defaultCacheManager";
46
- import { defaultClientDataStoreProvider } from "../../../common/storage/default/defaultClientDataStoreProvider";
47
- import { defaultScrollBarProps } from "../common/defaultProps/defaultScrollBarProps";
48
- import { E2VVOptions } from "../../../common/Constants";
49
49
  export const LiveChatWidgetStateful = props => {
50
50
  var _props$webChatContain, _props$styleProps, _chatSDK$omnichannelC, _props$controlProps, _props$controlProps2, _props$webChatContain3, _props$webChatContain4, _props$styleProps2, _props$controlProps13, _props$controlProps14, _props$componentOverr, _props$controlProps15, _props$componentOverr2, _props$controlProps16, _props$componentOverr3, _props$controlProps17, _props$componentOverr4, _props$controlProps18, _props$componentOverr5, _props$controlProps19, _props$componentOverr6, _props$controlProps20, _props$componentOverr7, _props$controlProps21, _props$controlProps22, _props$componentOverr8, _props$controlProps23, _props$componentOverr9, _props$controlProps24, _props$componentOverr10, _props$componentOverr11, _props$componentOverr12;
51
51
  const [state, dispatch] = useChatContextStore();
@@ -95,7 +95,7 @@ export const LiveChatWidgetStateful = props => {
95
95
  };
96
96
  } else {
97
97
  activeCachedChatExist = false;
98
- optionalParams = undefined;
98
+ optionalParams = {};
99
99
  }
100
100
  };
101
101
 
@@ -6,6 +6,7 @@ const FileAttachmentIconMap = {
6
6
  "aac": AudioIcon,
7
7
  "aiff": AudioIcon,
8
8
  "alac": AudioIcon,
9
+ "amr": AudioIcon,
9
10
  "avchd": VideoIcon,
10
11
  "avi": VideoIcon,
11
12
  "bmp": ImageIcon,
@@ -44,6 +45,7 @@ const FileAttachmentIconMap = {
44
45
  "vsdx": VisioIcon,
45
46
  "wav": AudioIcon,
46
47
  "webm": VideoIcon,
48
+ "webp": ImageIcon,
47
49
  "wma": AudioIcon,
48
50
  "wmv": VideoIcon,
49
51
  "xls": ExcelIcon,
@@ -51,9 +51,7 @@ export const activityStatusMiddleware = () => next => args => {
51
51
  style: {
52
52
  padding: "2px"
53
53
  }
54
- }, sendState === SendStatus.Sending && /*#__PURE__*/React.createElement(SendingTimestamp, {
55
- args: args
56
- }), sendState === SendStatus.SendFailed && /*#__PURE__*/React.createElement(NotDeliveredTimestamp, {
54
+ }, sendState === SendStatus.Sending && /*#__PURE__*/React.createElement(SendingTimestamp, null), sendState === SendStatus.SendFailed && /*#__PURE__*/React.createElement(NotDeliveredTimestamp, {
57
55
  args: args
58
56
  }), sendState === SendStatus.Sent && /*#__PURE__*/React.createElement(DeliveredTimestamp, {
59
57
  args: args,
@@ -229,7 +229,8 @@ const createAttachmentMiddleware = enableInlinePlaying => {
229
229
  renderer: next
230
230
  });
231
231
  }
232
- if (fileExtension === "txt") {
232
+ const isUnknownImageObject = contentType.toLowerCase().includes("image") && !imageExtension;
233
+ if (fileExtension === "txt" || isUnknownImageObject) {
233
234
  return /*#__PURE__*/React.createElement(Attachment, {
234
235
  iconData: iconData,
235
236
  textCard: patchAttachment(card, {
@@ -1,3 +1,3 @@
1
1
  export const defaultSystemMessageBoxStyles = {
2
- maxWidth: "75%"
2
+ maxWidth: "90%"
3
3
  };
@@ -1,3 +1,3 @@
1
1
  export const defaultUserMessageBoxStyles = {
2
- maxWidth: "75%"
2
+ maxWidth: "90%"
3
3
  };
@@ -27,13 +27,12 @@ export const DeliveredTimestamp = _ref => {
27
27
  } = args;
28
28
  return /*#__PURE__*/React.createElement(Stack, {
29
29
  style: contentStyles,
30
+ dir: dir
31
+ }, role === DirectLineSenderRole.Bot && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
30
32
  dir: dir,
31
- horizontal: true
32
- }, role === DirectLineSenderRole.Bot && /*#__PURE__*/React.createElement("span", {
33
33
  "aria-hidden": "false"
34
- }, name), role === DirectLineSenderRole.Bot && /*#__PURE__*/React.createElement("span", null, " \xA0-\xA0 "), /*#__PURE__*/React.createElement("span", {
34
+ }, name, " - ", getTimestampHourMinute(timestamp))), role === DirectLineSenderRole.User && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
35
+ "aria-hidden": "false",
35
36
  dir: dir
36
- }, " ", getTimestampHourMinute(timestamp)), role === DirectLineSenderRole.User && /*#__PURE__*/React.createElement("span", null, " \xA0-\xA0 "), role === DirectLineSenderRole.User && /*#__PURE__*/React.createElement("span", {
37
- "aria-hidden": "false"
38
- }, ((_state$domainStates$m = state.domainStates.middlewareLocalizedTexts) === null || _state$domainStates$m === void 0 ? void 0 : _state$domainStates$m.MIDDLEWARE_MESSAGE_DELIVERED) ?? defaultMiddlewareLocalizedTexts.MIDDLEWARE_MESSAGE_DELIVERED));
37
+ }, " ", getTimestampHourMinute(timestamp), " - ", ((_state$domainStates$m = state.domainStates.middlewareLocalizedTexts) === null || _state$domainStates$m === void 0 ? void 0 : _state$domainStates$m.MIDDLEWARE_MESSAGE_DELIVERED) ?? defaultMiddlewareLocalizedTexts.MIDDLEWARE_MESSAGE_DELIVERED)));
39
38
  };
@@ -1,5 +1,4 @@
1
1
  import React, { useCallback, useEffect, useRef } from "react";
2
- import { HtmlAttributeNames } from "../../../../../../common/Constants";
3
2
  import { KeyCodes } from "../../../../../../common/KeyCodes";
4
3
  import { Stack } from "@fluentui/react";
5
4
  import { defaultMiddlewareLocalizedTexts } from "../../../../common/defaultProps/defaultMiddlewareLocalizedTexts";
@@ -50,9 +49,8 @@ export const NotDeliveredTimestamp = _ref => {
50
49
  timestampWebChatNodes[1].innerText = getTimestampHourMinute(timestamp);
51
50
  }
52
51
  }, [timestampRef]);
53
- const onRetryClick = useCallback(async event => {
52
+ const onRetryClick = useCallback(async () => {
54
53
  var _activity$channelData;
55
- removeNotDeliveredTimestamp(event);
56
54
  activity.previousClientActivityID = (_activity$channelData = activity.channelData) === null || _activity$channelData === void 0 ? void 0 : _activity$channelData.clientActivityID;
57
55
  await postActivity(activity);
58
56
  focus("sendBox");
@@ -60,19 +58,9 @@ export const NotDeliveredTimestamp = _ref => {
60
58
  const onRetryKeyEnter = event => {
61
59
  if (event.code === KeyCodes.ENTER) {
62
60
  event.preventDefault();
63
- onRetryClick(event);
61
+ onRetryClick();
64
62
  }
65
63
  };
66
- const removeNotDeliveredTimestamp = event => {
67
- let parent = event.target.parentElement;
68
- while (parent.tagName !== HtmlAttributeNames.listItem) {
69
- parent = parent.parentElement;
70
- if (parent.tagName === HtmlAttributeNames.unorderedList) {
71
- return;
72
- }
73
- }
74
- parent.parentNode.removeChild(parent);
75
- };
76
64
  return /*#__PURE__*/React.createElement(Stack, {
77
65
  style: contentStyles,
78
66
  dir: dir,
@@ -2,29 +2,20 @@ import React from "react";
2
2
  import { Stack } from "@fluentui/react";
3
3
  import { defaultMiddlewareLocalizedTexts } from "../../../../common/defaultProps/defaultMiddlewareLocalizedTexts";
4
4
  import { defaultTimestampContentStyles } from "../defaultStyles/defaultTimestampContentStyles";
5
- import { getTimestampHourMinute } from "../../../../../../common/utils";
6
5
  import { useChatContextStore } from "../../../../../..";
7
6
 
8
7
  /* eslint @typescript-eslint/no-explicit-any: "off" */
9
- export const SendingTimestamp = _ref => {
8
+ export const SendingTimestamp = () => {
10
9
  var _state$domainStates$r, _state$domainStates$r2, _state$domainStates$m;
11
- let {
12
- args
13
- } = _ref;
14
10
  const [state] = useChatContextStore();
15
11
  const dir = ((_state$domainStates$r = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r === void 0 ? void 0 : _state$domainStates$r.timestampDir) ?? state.domainStates.globalDir;
16
12
  const contentStyles = {
17
13
  ...defaultTimestampContentStyles,
18
14
  ...((_state$domainStates$r2 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r2 === void 0 ? void 0 : _state$domainStates$r2.timestampContentStyleProps)
19
15
  };
20
- const {
21
- activity: {
22
- timestamp
23
- }
24
- } = args;
25
16
  return /*#__PURE__*/React.createElement(Stack, {
26
17
  style: contentStyles,
27
18
  dir: dir,
28
19
  horizontal: true
29
- }, /*#__PURE__*/React.createElement("span", null, " ", getTimestampHourMinute(timestamp)), /*#__PURE__*/React.createElement("span", null, " \xA0-\xA0 "), /*#__PURE__*/React.createElement("span", null, " ", ((_state$domainStates$m = state.domainStates.middlewareLocalizedTexts) === null || _state$domainStates$m === void 0 ? void 0 : _state$domainStates$m.MIDDLEWARE_MESSAGE_SENDING) ?? defaultMiddlewareLocalizedTexts.MIDDLEWARE_MESSAGE_SENDING, " "));
20
+ }, /*#__PURE__*/React.createElement("span", null, " ", ((_state$domainStates$m = state.domainStates.middlewareLocalizedTexts) === null || _state$domainStates$m === void 0 ? void 0 : _state$domainStates$m.MIDDLEWARE_MESSAGE_SENDING) ?? defaultMiddlewareLocalizedTexts.MIDDLEWARE_MESSAGE_SENDING, " "));
30
21
  };
@@ -39,6 +39,10 @@ export const createOnNewAdapterActivityHandler = (chatId, userId) => {
39
39
  if (activity !== null && activity !== void 0 && (_activity$channelData5 = activity.channelData) !== null && _activity$channelData5 !== void 0 && (_activity$channelData6 = _activity$channelData5.tags) !== null && _activity$channelData6 !== void 0 && _activity$channelData6.includes(Constants.systemMessageTag)) {
40
40
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
41
41
  payload.messageType = Constants.systemMessageTag;
42
+ TelemetryHelper.logActionEvent(LogLevel.INFO, {
43
+ Event: TelemetryEvent.MessageReceived,
44
+ Description: "System message received"
45
+ });
42
46
  } else {
43
47
  var _activity$channelData7, _activity$channelData8, _activity$channelData9;
44
48
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -32,6 +32,8 @@ export interface LoadContract extends BaseContract {
32
32
  export interface ActionsContract extends BaseContract {
33
33
  Event?: string;
34
34
  ActionType?: string;
35
+ Description?: string;
36
+ CustomProperties?: any;
35
37
  }
36
38
  export interface IC3ClientContract extends BaseContract {
37
39
  Event?: string;
@@ -72,6 +72,7 @@ export interface ActionTelemetryData extends BaseTelemetryData {
72
72
  ActionType?: string;
73
73
  ExceptionDetails?: object;
74
74
  Description?: string;
75
+ CustomProperties?: any;
75
76
  }
76
77
  export interface CallingTelemetryData extends BaseTelemetryData {
77
78
  CallId?: string;
@@ -41,4 +41,8 @@ export interface ITelemetryConfig {
41
41
  * Omnichannel Chat SDK Version
42
42
  */
43
43
  OCChatSDKVersion: string;
44
+ /**
45
+ * LCW Runtime Id
46
+ */
47
+ LCWRuntimeId?: string;
44
48
  }
@@ -3,8 +3,9 @@ import { Dispatch } from "react";
3
3
  import { ILiveChatWidgetAction } from "../../../contexts/common/ILiveChatWidgetAction";
4
4
  import { ILiveChatWidgetContext } from "../../../contexts/common/ILiveChatWidgetContext";
5
5
  import { ILiveChatWidgetProps } from "../interfaces/ILiveChatWidgetProps";
6
+ import StartChatOptionalParams from "@microsoft/omnichannel-chat-sdk/lib/core/StartChatOptionalParams";
6
7
  declare const prepareStartChat: (props: ILiveChatWidgetProps, chatSDK: any, state: ILiveChatWidgetContext, dispatch: Dispatch<ILiveChatWidgetAction>, setAdapter: any) => Promise<void>;
7
8
  declare const setPreChatAndInitiateChat: (chatSDK: any, dispatch: Dispatch<ILiveChatWidgetAction>, setAdapter: any, isProactiveChat?: boolean | undefined, proactiveChatEnablePrechatState?: boolean | undefined, state?: ILiveChatWidgetContext | undefined, props?: ILiveChatWidgetProps | undefined) => Promise<void>;
8
- declare const initStartChat: (chatSDK: any, chatConfig: ChatConfig | undefined, getAuthToken: ((authClientFunction?: string | undefined) => Promise<string | null>) | undefined, dispatch: Dispatch<ILiveChatWidgetAction>, setAdapter: any, params?: any, persistedState?: any) => Promise<void>;
9
+ declare const initStartChat: (chatSDK: any, chatConfig: ChatConfig | undefined, getAuthToken: ((authClientFunction?: string | undefined) => Promise<string | null>) | undefined, dispatch: Dispatch<ILiveChatWidgetAction>, setAdapter: any, params?: StartChatOptionalParams | undefined, persistedState?: any) => Promise<void>;
9
10
  declare const checkIfConversationStillValid: (chatSDK: any, props: any, requestId: any, dispatch: Dispatch<ILiveChatWidgetAction>) => Promise<boolean>;
10
11
  export { prepareStartChat, initStartChat, setPreChatAndInitiateChat, checkIfConversationStillValid };
@@ -1 +1 @@
1
- export declare const SendingTimestamp: ({ args }: any) => JSX.Element;
1
+ export declare const SendingTimestamp: () => JSX.Element;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@microsoft/omnichannel-chat-widget",
3
- "version": "0.1.0-main.d5a92f2",
3
+ "version": "0.1.0-main.d5e0dfe",
4
4
  "description": "Microsoft Omnichannel Chat Widget",
5
5
  "main": "lib/cjs/index.js",
6
6
  "types": "lib/types/index.d.ts",
@@ -74,8 +74,8 @@
74
74
  },
75
75
  "dependencies": {
76
76
  "@fluentui/react": "^8.49.1",
77
- "@microsoft/omnichannel-chat-components": "0.1.0-main.d066b23",
78
- "@microsoft/omnichannel-chat-sdk": "1.1.1-main.b88f92d",
77
+ "@microsoft/omnichannel-chat-components": "0.1.0-main.501b425",
78
+ "@microsoft/omnichannel-chat-sdk": "1.2.1-main.aaf8f21",
79
79
  "abort-controller-es5": "^2.0.1",
80
80
  "dompurify": "^2.3.4",
81
81
  "markdown-it": "^12.3.2",