@microsoft/omnichannel-chat-widget 1.3.1-main.da9dc59 → 1.4.1-main.9bf5e75

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 (59) hide show
  1. package/lib/cjs/assets/Icons.js +8 -2
  2. package/lib/cjs/common/telemetry/loggers/ariaTelemetryLogger.js +2 -22
  3. package/lib/cjs/components/livechatwidget/common/createAdapter.js +5 -0
  4. package/lib/cjs/components/livechatwidget/common/endChat.js +75 -13
  5. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +6 -0
  6. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +31 -17
  7. package/lib/cjs/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +5 -2
  8. package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +13 -7
  9. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts.js +4 -3
  10. package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +3 -0
  11. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +40 -101
  12. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/Attachment.js +92 -0
  13. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/AttachmentContent.js +17 -0
  14. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/AttachmentIcon.js +21 -0
  15. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/DownloadBlockedAttachment.js +36 -0
  16. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/FileScanStatus.js +14 -0
  17. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/MaliciousAttachment.js +24 -0
  18. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/ScanInProgressAttachment.js +24 -0
  19. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/Spinner.js +41 -0
  20. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +1 -0
  21. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +2 -1
  22. package/lib/cjs/contexts/createReducer.js +8 -0
  23. package/lib/esm/assets/Icons.js +4 -1
  24. package/lib/esm/common/telemetry/loggers/ariaTelemetryLogger.js +2 -22
  25. package/lib/esm/components/livechatwidget/common/createAdapter.js +5 -0
  26. package/lib/esm/components/livechatwidget/common/endChat.js +74 -16
  27. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +6 -0
  28. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +34 -20
  29. package/lib/esm/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +6 -3
  30. package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +13 -7
  31. package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts.js +4 -3
  32. package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +3 -0
  33. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +36 -96
  34. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/Attachment.js +84 -0
  35. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/AttachmentContent.js +9 -0
  36. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/AttachmentIcon.js +13 -0
  37. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/DownloadBlockedAttachment.js +28 -0
  38. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/FileScanStatus.js +7 -0
  39. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/MaliciousAttachment.js +16 -0
  40. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/ScanInProgressAttachment.js +16 -0
  41. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/Spinner.js +33 -0
  42. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +1 -0
  43. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +2 -1
  44. package/lib/esm/contexts/createReducer.js +8 -0
  45. package/lib/types/assets/Icons.d.ts +3 -0
  46. package/lib/types/components/livechatwidget/common/endChat.d.ts +6 -2
  47. package/lib/types/components/webchatcontainerstateful/common/mockchatsdk.d.ts +1 -0
  48. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/Attachment.d.ts +2 -0
  49. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/AttachmentContent.d.ts +2 -0
  50. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/AttachmentIcon.d.ts +2 -0
  51. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/DownloadBlockedAttachment.d.ts +2 -0
  52. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/FileScanStatus.d.ts +6 -0
  53. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/MaliciousAttachment.d.ts +2 -0
  54. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/ScanInProgressAttachment.d.ts +2 -0
  55. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/Spinner.d.ts +2 -0
  56. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +2 -1
  57. package/lib/types/contexts/common/ILiveChatWidgetLocalizedTexts.d.ts +7 -0
  58. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +2 -1
  59. package/package.json +5 -3
@@ -1,7 +1,7 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
2
  /******
3
3
  * AttachmentMiddleware
4
- *
4
+ *
5
5
  * Handles attachment downloading.
6
6
  ******/
7
7
 
@@ -12,99 +12,15 @@ import { BroadcastEvent } from "../../../../../common/telemetry/TelemetryConstan
12
12
  import { BroadcastService } from "@microsoft/omnichannel-chat-components";
13
13
  import { WebChatActionType } from "../../enums/WebChatActionType";
14
14
  import { defaultAttachmentAdaptiveCardStyles } from "./defaultStyles/defaultAtttachmentAdaptiveCardStyles";
15
- import { defaultAttachmentContentStyles } from "./defaultStyles/defaultAttachmentContentStyles";
16
- import { defaultAttachmentDividerStyles } from "./defaultStyles/defaultAttachmentDividerStyles";
17
- import { defaultAttachmentDownloadIconStyles } from "./defaultStyles/defaultAttachmentDownloadIconStyles";
18
- import { defaultAttachmentFileNameStyles } from "./defaultStyles/defaultAttachmentFileNameStyles";
19
- import { defaultAttachmentIconStyles } from "./defaultStyles/defaultAtttachmentIconStyles";
20
15
  import { defaultAttachmentProps } from "../../../common/defaultProps/defaultAttachmentProps";
21
- import { defaultAttachmentSizeStyles } from "./defaultStyles/defaultAttachmentSizeStyles";
22
- import { defaultAttachmentStyles } from "./defaultStyles/defaultAtttachmentStyles";
23
16
  import { useChatContextStore } from "../../../../..";
24
- const AttachmentContent = props => {
25
- return /*#__PURE__*/React.createElement("div", {
26
- id: props.id,
27
- style: props.style
28
- }, props.children);
29
- };
30
- const AttachmentIcon = props => {
31
- return /*#__PURE__*/React.createElement("div", {
32
- id: props.id,
33
- style: props.style
34
- }, /*#__PURE__*/React.createElement("img", {
35
- src: props.src ?? getFileAttachmentIconData("txt")
36
- }));
37
- };
38
- const Attachment = props => {
39
- var _state$domainStates$r, _state$domainStates$r2, _state$domainStates$r3, _state$domainStates$r4, _state$domainStates$r5, _state$domainStates$r6, _state$domainStates$r7, _state$domainStates$r8, _state$domainStates$r9;
40
- const {
41
- iconData,
42
- imageCard,
43
- textCard,
44
- renderer
45
- } = props;
46
- const [state] = useChatContextStore();
47
- const attachmentId = ((_state$domainStates$r = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r === void 0 ? void 0 : (_state$domainStates$r2 = _state$domainStates$r.attachmentProps) === null || _state$domainStates$r2 === void 0 ? void 0 : _state$domainStates$r2.webChatAttachmentId) ?? defaultAttachmentProps.webChatAttachmentId;
48
- const attachmentDividerStyles = {
49
- ...defaultAttachmentDividerStyles,
50
- ...((_state$domainStates$r3 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r3 === void 0 ? void 0 : _state$domainStates$r3.attachmentDividerStyles)
51
- };
52
- const attachmentIconStyles = {
53
- ...defaultAttachmentIconStyles,
54
- ...((_state$domainStates$r4 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r4 === void 0 ? void 0 : _state$domainStates$r4.attachmentIconStyles)
55
- };
56
- const attachmentStyles = {
57
- ...defaultAttachmentStyles,
58
- ...((_state$domainStates$r5 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r5 === void 0 ? void 0 : _state$domainStates$r5.attachmentStyles)
59
- };
60
- const attachmentSizeStylesString = Object.entries({
61
- ...defaultAttachmentSizeStyles,
62
- ...((_state$domainStates$r6 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r6 === void 0 ? void 0 : _state$domainStates$r6.attachmentSizeStyles)
63
- }).map(_ref => {
64
- let [k, v] = _ref;
65
- return `${k.replace(/[A-Z]/g, match => `-${match.toLowerCase()}`)}:${v}`;
66
- }).join(";");
67
- const attachmentContentStylesString = Object.entries({
68
- ...defaultAttachmentContentStyles,
69
- ...((_state$domainStates$r7 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r7 === void 0 ? void 0 : _state$domainStates$r7.attachmentContentStyles)
70
- }).map(_ref2 => {
71
- let [k, v] = _ref2;
72
- return `${k.replace(/[A-Z]/g, match => `-${match.toLowerCase()}`)}:${v}`;
73
- }).join(";");
74
- const attachmentFileNameStylesString = Object.entries({
75
- ...defaultAttachmentFileNameStyles,
76
- ...((_state$domainStates$r8 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r8 === void 0 ? void 0 : _state$domainStates$r8.attachmentFileNameStyles)
77
- }).map(_ref3 => {
78
- let [k, v] = _ref3;
79
- return `${k.replace(/[A-Z]/g, match => `-${match.toLowerCase()}`)}:${v}`;
80
- }).join(";");
81
- const attachmentDownloadIconStylesString = Object.entries({
82
- ...defaultAttachmentDownloadIconStyles,
83
- ...((_state$domainStates$r9 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r9 === void 0 ? void 0 : _state$domainStates$r9.attachmentDownloadIconStyles)
84
- }).map(_ref4 => {
85
- let [k, v] = _ref4;
86
- return `${k.replace(/[A-Z]/g, match => `-${match.toLowerCase()}`)}:${v}`;
87
- }).join(";");
88
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("style", null, `
89
- .webchat__fileContent__size { ${attachmentSizeStylesString} }
90
- .webchat__fileContent { ${attachmentContentStylesString} }
91
- .webchat__fileContent__fileName { ${attachmentFileNameStylesString} }
92
- .webchat__fileContent__downloadIcon { ${attachmentDownloadIconStylesString} }
93
- `), /*#__PURE__*/React.createElement("div", {
94
- dir: state.domainStates.globalDir
95
- }, imageCard && renderer(imageCard), imageCard && /*#__PURE__*/React.createElement("hr", {
96
- id: attachmentId + "-divider",
97
- style: attachmentDividerStyles
98
- }), /*#__PURE__*/React.createElement(AttachmentContent, {
99
- attachment: textCard.attachment,
100
- id: attachmentId,
101
- style: attachmentStyles
102
- }, /*#__PURE__*/React.createElement(AttachmentIcon, {
103
- src: iconData,
104
- id: attachmentId + "-icon",
105
- style: attachmentIconStyles
106
- }), textCard && renderer(textCard))));
107
- };
17
+ import { NotificationHandler } from "../../notification/NotificationHandler";
18
+ import { NotificationScenarios } from "../../enums/NotificationScenarios";
19
+ import { defaultMiddlewareLocalizedTexts } from "../../../common/defaultProps/defaultMiddlewareLocalizedTexts";
20
+ import Attachment from "./attachments/Attachment";
21
+ import ScanInProgressAttachment from "./attachments/ScanInProgressAttachment";
22
+ import MaliciousAttachment from "./attachments/MaliciousAttachment";
23
+ import FileScanStatus from "./attachments/FileScanStatus";
108
24
 
109
25
  /**
110
26
  * Patch card with different attachment data.
@@ -140,9 +56,9 @@ const genPreviewCardWithAttachment = (card, iconData, next) => {
140
56
  });
141
57
  };
142
58
  const createAttachmentMiddleware = enableInlinePlaying => {
143
- // eslint-disable-next-line react/display-name
59
+ // eslint-disable-next-line react/display-name
144
60
  const attachmentMiddleware = () => next => function () {
145
- var _state$domainStates$r10, _state$domainStates$r11, _state$domainStates$r12, _card$activity$channe;
61
+ var _state$domainStates$r, _state$domainStates$r2, _state$domainStates$r3, _card$activity$channe;
146
62
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
147
63
  args[_key] = arguments[_key];
148
64
  }
@@ -192,10 +108,10 @@ const createAttachmentMiddleware = enableInlinePlaying => {
192
108
  }
193
109
  }
194
110
  const [state] = useChatContextStore();
195
- const attachmentId = ((_state$domainStates$r10 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r10 === void 0 ? void 0 : (_state$domainStates$r11 = _state$domainStates$r10.attachmentProps) === null || _state$domainStates$r11 === void 0 ? void 0 : _state$domainStates$r11.adaptiveCardAttachmentId) ?? defaultAttachmentProps.adaptiveCardAttachmentId;
111
+ const attachmentId = ((_state$domainStates$r = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r === void 0 ? void 0 : (_state$domainStates$r2 = _state$domainStates$r.attachmentProps) === null || _state$domainStates$r2 === void 0 ? void 0 : _state$domainStates$r2.adaptiveCardAttachmentId) ?? defaultAttachmentProps.adaptiveCardAttachmentId;
196
112
  const atttachmentAdaptiveCardStyles = {
197
113
  ...defaultAttachmentAdaptiveCardStyles,
198
- ...((_state$domainStates$r12 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r12 === void 0 ? void 0 : _state$domainStates$r12.attachmentAdaptiveCardStyles)
114
+ ...((_state$domainStates$r3 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r3 === void 0 ? void 0 : _state$domainStates$r3.attachmentAdaptiveCardStyles)
199
115
  };
200
116
  if (type === WebChatMiddlewareConstants.adaptiveCard || Constants.supportedAdaptiveCardContentTypes.indexOf(contentType) >= 0) {
201
117
  return /*#__PURE__*/React.createElement("div", {
@@ -213,6 +129,30 @@ const createAttachmentMiddleware = enableInlinePlaying => {
213
129
  if (!attachment.name) {
214
130
  return next(...args);
215
131
  }
132
+ if (card.activity.channelData && card.activity.channelData.fileScan) {
133
+ const index = attachments.findIndex(attachment => attachment.name === card.attachment.name);
134
+ const {
135
+ activity: {
136
+ channelData: {
137
+ fileScan
138
+ }
139
+ }
140
+ } = card;
141
+ const scanResult = fileScan[index];
142
+ if ((scanResult === null || scanResult === void 0 ? void 0 : scanResult.status) === FileScanStatus.INPROGRESS) {
143
+ return /*#__PURE__*/React.createElement(ScanInProgressAttachment, {
144
+ textCard: card
145
+ });
146
+ }
147
+ if ((scanResult === null || scanResult === void 0 ? void 0 : scanResult.status) === FileScanStatus.MALWARE) {
148
+ var _state$domainStates$m;
149
+ const localizedText = ((_state$domainStates$m = state.domainStates.middlewareLocalizedTexts) === null || _state$domainStates$m === void 0 ? void 0 : _state$domainStates$m.MIDDLEWARE_BANNER_FILE_IS_MALICIOUS) ?? defaultMiddlewareLocalizedTexts.MIDDLEWARE_BANNER_FILE_IS_MALICIOUS;
150
+ NotificationHandler.notifyError(NotificationScenarios.AttachmentError, localizedText.replace("{0}", attachment.name));
151
+ return /*#__PURE__*/React.createElement(MaliciousAttachment, {
152
+ textCard: card
153
+ });
154
+ }
155
+ }
216
156
  const fileExtension = attachment.name.substring(attachment.name.lastIndexOf(".") + 1, attachment.name.length) || attachment.name;
217
157
  const imageExtension = Constants.imageRegex.test(attachment.name);
218
158
  const audioExtension = Constants.audioMediaRegex.test(attachment.name);
@@ -0,0 +1,84 @@
1
+ import React from "react";
2
+ import useChatContextStore from "../../../../../../hooks/useChatContextStore";
3
+ import { defaultAttachmentProps } from "../../../../common/defaultProps/defaultAttachmentProps";
4
+ import { defaultAttachmentContentStyles } from "../defaultStyles/defaultAttachmentContentStyles";
5
+ import { defaultAttachmentDividerStyles } from "../defaultStyles/defaultAttachmentDividerStyles";
6
+ import { defaultAttachmentDownloadIconStyles } from "../defaultStyles/defaultAttachmentDownloadIconStyles";
7
+ import { defaultAttachmentFileNameStyles } from "../defaultStyles/defaultAttachmentFileNameStyles";
8
+ import { defaultAttachmentSizeStyles } from "../defaultStyles/defaultAttachmentSizeStyles";
9
+ import { defaultAttachmentIconStyles } from "../defaultStyles/defaultAtttachmentIconStyles";
10
+ import { defaultAttachmentStyles } from "../defaultStyles/defaultAtttachmentStyles";
11
+ import AttachmentContent from "./AttachmentContent";
12
+ import AttachmentIcon from "./AttachmentIcon";
13
+ const Attachment = props => {
14
+ var _state$domainStates$r, _state$domainStates$r2, _state$domainStates$r3, _state$domainStates$r4, _state$domainStates$r5, _state$domainStates$r6, _state$domainStates$r7, _state$domainStates$r8, _state$domainStates$r9;
15
+ // eslint-disable-line @typescript-eslint/no-explicit-any
16
+ const {
17
+ iconData,
18
+ imageCard,
19
+ textCard,
20
+ renderer
21
+ } = props;
22
+ const [state] = useChatContextStore();
23
+ const attachmentId = ((_state$domainStates$r = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r === void 0 ? void 0 : (_state$domainStates$r2 = _state$domainStates$r.attachmentProps) === null || _state$domainStates$r2 === void 0 ? void 0 : _state$domainStates$r2.webChatAttachmentId) ?? defaultAttachmentProps.webChatAttachmentId;
24
+ const attachmentDividerStyles = {
25
+ ...defaultAttachmentDividerStyles,
26
+ ...((_state$domainStates$r3 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r3 === void 0 ? void 0 : _state$domainStates$r3.attachmentDividerStyles)
27
+ };
28
+ const attachmentIconStyles = {
29
+ ...defaultAttachmentIconStyles,
30
+ ...((_state$domainStates$r4 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r4 === void 0 ? void 0 : _state$domainStates$r4.attachmentIconStyles)
31
+ };
32
+ const attachmentStyles = {
33
+ ...defaultAttachmentStyles,
34
+ ...((_state$domainStates$r5 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r5 === void 0 ? void 0 : _state$domainStates$r5.attachmentStyles)
35
+ };
36
+ const attachmentSizeStylesString = Object.entries({
37
+ ...defaultAttachmentSizeStyles,
38
+ ...((_state$domainStates$r6 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r6 === void 0 ? void 0 : _state$domainStates$r6.attachmentSizeStyles)
39
+ }).map(_ref => {
40
+ let [k, v] = _ref;
41
+ return `${k.replace(/[A-Z]/g, match => `-${match.toLowerCase()}`)}:${v}`;
42
+ }).join(";");
43
+ const attachmentContentStylesString = Object.entries({
44
+ ...defaultAttachmentContentStyles,
45
+ ...((_state$domainStates$r7 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r7 === void 0 ? void 0 : _state$domainStates$r7.attachmentContentStyles)
46
+ }).map(_ref2 => {
47
+ let [k, v] = _ref2;
48
+ return `${k.replace(/[A-Z]/g, match => `-${match.toLowerCase()}`)}:${v}`;
49
+ }).join(";");
50
+ const attachmentFileNameStylesString = Object.entries({
51
+ ...defaultAttachmentFileNameStyles,
52
+ ...((_state$domainStates$r8 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r8 === void 0 ? void 0 : _state$domainStates$r8.attachmentFileNameStyles)
53
+ }).map(_ref3 => {
54
+ let [k, v] = _ref3;
55
+ return `${k.replace(/[A-Z]/g, match => `-${match.toLowerCase()}`)}:${v}`;
56
+ }).join(";");
57
+ const attachmentDownloadIconStylesString = Object.entries({
58
+ ...defaultAttachmentDownloadIconStyles,
59
+ ...((_state$domainStates$r9 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r9 === void 0 ? void 0 : _state$domainStates$r9.attachmentDownloadIconStyles)
60
+ }).map(_ref4 => {
61
+ let [k, v] = _ref4;
62
+ return `${k.replace(/[A-Z]/g, match => `-${match.toLowerCase()}`)}:${v}`;
63
+ }).join(";");
64
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("style", null, `
65
+ .webchat__fileContent__size { ${attachmentSizeStylesString} }
66
+ .webchat__fileContent { ${attachmentContentStylesString} }
67
+ .webchat__fileContent__fileName { ${attachmentFileNameStylesString} }
68
+ .webchat__fileContent__downloadIcon { ${attachmentDownloadIconStylesString} }
69
+ `), /*#__PURE__*/React.createElement("div", {
70
+ dir: state.domainStates.globalDir
71
+ }, imageCard && renderer(imageCard), imageCard && /*#__PURE__*/React.createElement("hr", {
72
+ id: attachmentId + "-divider",
73
+ style: attachmentDividerStyles
74
+ }), /*#__PURE__*/React.createElement(AttachmentContent, {
75
+ attachment: textCard.attachment,
76
+ id: attachmentId,
77
+ style: attachmentStyles
78
+ }, /*#__PURE__*/React.createElement(AttachmentIcon, {
79
+ src: iconData,
80
+ id: attachmentId + "-icon",
81
+ style: attachmentIconStyles
82
+ }), textCard && renderer(textCard))));
83
+ };
84
+ export default Attachment;
@@ -0,0 +1,9 @@
1
+ import React from "react";
2
+ const AttachmentContent = props => {
3
+ // eslint-disable-line @typescript-eslint/no-explicit-any
4
+ return /*#__PURE__*/React.createElement("div", {
5
+ id: props.id,
6
+ style: props.style
7
+ }, props.children);
8
+ };
9
+ export default AttachmentContent;
@@ -0,0 +1,13 @@
1
+ import React from "react";
2
+ import { getFileAttachmentIconData } from "../../../../common/utils/FileAttachmentIconManager";
3
+ const AttachmentIcon = props => {
4
+ // eslint-disable-line @typescript-eslint/no-explicit-any
5
+ return /*#__PURE__*/React.createElement("div", {
6
+ id: props.id,
7
+ style: props.style
8
+ }, /*#__PURE__*/React.createElement("img", {
9
+ src: props.src ?? getFileAttachmentIconData("txt"),
10
+ alt: "attachment icon"
11
+ }));
12
+ };
13
+ export default AttachmentIcon;
@@ -0,0 +1,28 @@
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
+ import React from "react";
3
+ import Attachment from "./Attachment";
4
+ const DownloadBlockedAttachment = props => {
5
+ // eslint-disable-line @typescript-eslint/no-explicit-any
6
+ const renderer = () => /*#__PURE__*/React.createElement("div", {
7
+ style: {
8
+ display: "flex",
9
+ padding: "10px 10px 10px 8px",
10
+ width: "100%"
11
+ }
12
+ }, /*#__PURE__*/React.createElement("div", {
13
+ style: {
14
+ fontSize: 12,
15
+ fontFamily: "Segoe UI, Arial, sans-serif"
16
+ }
17
+ }, " ", props.textCard.attachment.name, " "), /*#__PURE__*/React.createElement("div", {
18
+ style: {
19
+ marginLeft: "auto",
20
+ paddingRight: "10px"
21
+ }
22
+ }, props.extraContent && props.extraContent));
23
+ return /*#__PURE__*/React.createElement(Attachment, _extends({}, props, {
24
+ imageCard: undefined,
25
+ renderer: renderer
26
+ }));
27
+ };
28
+ export default DownloadBlockedAttachment;
@@ -0,0 +1,7 @@
1
+ var FileScanStatus;
2
+ (function (FileScanStatus) {
3
+ FileScanStatus["PASSED"] = "passed";
4
+ FileScanStatus["MALWARE"] = "malware";
5
+ FileScanStatus["INPROGRESS"] = "in progress";
6
+ })(FileScanStatus || (FileScanStatus = {}));
7
+ export default FileScanStatus;
@@ -0,0 +1,16 @@
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
+ import React from "react";
3
+ import DownloadBlockedAttachment from "./DownloadBlockedAttachment";
4
+ import { CrossIcon, MaliciousFileIcon } from "../../../../../../assets/Icons";
5
+ const MaliciousAttachment = props => {
6
+ // eslint-disable-line @typescript-eslint/no-explicit-any
7
+ const extraContent = /*#__PURE__*/React.createElement("img", {
8
+ src: CrossIcon,
9
+ alt: "download blocked icon"
10
+ });
11
+ return /*#__PURE__*/React.createElement(DownloadBlockedAttachment, _extends({}, props, {
12
+ iconData: MaliciousFileIcon,
13
+ extraContent: extraContent
14
+ }));
15
+ };
16
+ export default MaliciousAttachment;
@@ -0,0 +1,16 @@
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
+ import React from "react";
3
+ import Spinner from "./Spinner";
4
+ import DownloadBlockedAttachment from "./DownloadBlockedAttachment";
5
+ import { FileScanInProgressIcon } from "../../../../../../assets/Icons";
6
+ const ScanInProgressAttachment = props => {
7
+ // eslint-disable-line @typescript-eslint/no-explicit-any
8
+ const extraContent = /*#__PURE__*/React.createElement(Spinner, {
9
+ size: 16
10
+ });
11
+ return /*#__PURE__*/React.createElement(DownloadBlockedAttachment, _extends({}, props, {
12
+ iconData: FileScanInProgressIcon,
13
+ extraContent: extraContent
14
+ }));
15
+ };
16
+ export default ScanInProgressAttachment;
@@ -0,0 +1,33 @@
1
+ import React from "react";
2
+ const Spinner = props => {
3
+ // eslint-disable-line @typescript-eslint/no-explicit-any
4
+ const spinnerStyle = {
5
+ // eslint-disable-line @typescript-eslint/no-explicit-any
6
+ boxSizing: "border-box",
7
+ borderRadius: "50%",
8
+ borderWidth: props.borderWidth || 2,
9
+ borderStyle: "solid",
10
+ borderColor: "rgb(0,120,212) rgb(199,224,244) rgb(199,224,244)",
11
+ borderImage: "initial",
12
+ animationName: "spin",
13
+ animationDuration: "1.3s",
14
+ animationIterationCount: "infinite",
15
+ animationTimingFunction: "cubic-bezier(0.53, 0.21, 0.29, 0.67)",
16
+ width: props.size || 20,
17
+ height: props.size || 20
18
+ };
19
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("style", null, `
20
+ @keyframes spin {
21
+ 0% {
22
+ transform: rotate(0deg);
23
+ }
24
+ 100% {
25
+ transform: rotate(360deg);
26
+ }
27
+ }
28
+ `), /*#__PURE__*/React.createElement("div", {
29
+ className: "spinner",
30
+ style: spinnerStyle
31
+ }));
32
+ };
33
+ export default Spinner;
@@ -43,4 +43,5 @@ export let LiveChatWidgetActionType;
43
43
  LiveChatWidgetActionType[LiveChatWidgetActionType["SET_CHAT_DISCONNECT_EVENT_RECEIVED"] = 40] = "SET_CHAT_DISCONNECT_EVENT_RECEIVED";
44
44
  LiveChatWidgetActionType[LiveChatWidgetActionType["SET_SURVEY_MODE"] = 41] = "SET_SURVEY_MODE";
45
45
  LiveChatWidgetActionType[LiveChatWidgetActionType["SET_CONFIRMATION_STATE"] = 42] = "SET_CONFIRMATION_STATE";
46
+ LiveChatWidgetActionType[LiveChatWidgetActionType["SET_POST_CHAT_PARTICIPANT_TYPE"] = 43] = "SET_POST_CHAT_PARTICIPANT_TYPE";
46
47
  })(LiveChatWidgetActionType || (LiveChatWidgetActionType = {}));
@@ -53,7 +53,8 @@ export const getLiveChatWidgetContextInitialState = props => {
53
53
  unreadMessageCount: 0,
54
54
  conversationEndedBy: ConversationEndEntity.NotSet,
55
55
  chatDisconnectEventReceived: false,
56
- selectedSurveyMode: null
56
+ selectedSurveyMode: null,
57
+ postChatParticipantType: undefined
57
58
  },
58
59
  uiStates: {
59
60
  showConfirmationPane: false,
@@ -325,6 +325,14 @@ export const createReducer = () => {
325
325
  confirmationState: action.payload
326
326
  }
327
327
  };
328
+ case LiveChatWidgetActionType.SET_POST_CHAT_PARTICIPANT_TYPE:
329
+ return {
330
+ ...state,
331
+ appStates: {
332
+ ...state.appStates,
333
+ postChatParticipantType: action.payload
334
+ }
335
+ };
328
336
  default:
329
337
  return state;
330
338
  }
@@ -11,3 +11,6 @@ export declare const VisioIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0
11
11
  export declare const WordIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciDQogICAgdmlld0JveD0iMCAwIDIwNDggMjA0OCINCiAgICB3aWR0aD0iMTJweCINCiAgICBoZWlnaHQ9IjEycHgiPg0KICAgIDxwYXRoIGQ9Ik0yMDQ4IDQ3NXYxNDQ1cTAgMjctMTAgNTB0LTI3IDQwLTQxIDI4LTUwIDEwSDY0MHEtMjcgMC01MC0xMHQtNDAtMjctMjgtNDEtMTAtNTB2LTI1NkgxMTVxLTI0IDAtNDQtOXQtMzctMjUtMjUtMzYtOS00NVY2MjdxMC0yNCA5LTQ0dDI1LTM3IDM2LTI1IDQ1LTloMzk3VjEyOHEwLTI3IDEwLTUwdDI3LTQwIDQxLTI4IDUwLTEwaDkzM3EyNiAwIDQ5IDl0NDIgMjhsMzQ3IDM0N3ExOCAxOCAyNyA0MXQxMCA1MHptLTM4NC0yNTZ2MTY1aDE2NWwtMTY1LTE2NXpNMzIwIDE0MjRoMTYxcTItOCA5LTQzdDE4LTgzIDIxLTEwMyAyMi0xMDEgMTYtNzYgOC0zMWw3IDMwcTcgMzAgMTcgNzd0MjMgMTAwIDIzIDEwMyAxOSA4NCAxMCA0M2gxNjBsMTQ4LTY3Mkg4MzRsLTgwIDQzOC0xMDAtNDM4SDUwMmwtOTYgNDQwLTg2LTQ0MEgxNzBsMTUwIDY3MnptMzIwIDQ5NmgxMjgwVjUxMmgtMjU2cS0yNyAwLTUwLTEwdC00MC0yNy0yOC00MS0xMC01MFYxMjhINjQwdjM4NGgzOTdxMjQgMCA0NCA5dDM3IDI1IDI1IDM2IDkgNDV2OTIycTAgMjQtOSA0NHQtMjUgMzctMzYgMjUtNDUgOUg2NDB2MjU2em02NDAtMTAyNFY3NjhoNTEydjEyOGgtNTEyem0wIDI1NnYtMTI4aDUxMnYxMjhoLTUxMnptMCAyNTZ2LTEyOGg1MTJ2MTI4aC01MTJ6IiAvPg0KPC9zdmc+";
12
12
  export declare const AlertIcon = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjwhRE9DVFlQRSBzdmcgIFBVQkxJQyAnLS8vVzNDLy9EVEQgU1ZHIDEuMC8vRU4nICAnaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMtU1ZHLTIwMDEwOTA0L0RURC9zdmcxMC5kdGQnPjxzdmcgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIGlkPSJMYXllcl8xIiB2ZXJzaW9uPSIxLjAiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PHBhdGggZD0iTTEzLDE3aC0ydi0yaDJWMTd6IE0xMywxM2gtMlY3aDJWMTN6Ii8+PGc+PHBhdGggZD0iTTEyLDRjNC40LDAsOCwzLjYsOCw4cy0zLjYsOC04LDhzLTgtMy42LTgtOFM3LjYsNCwxMiw0IE0xMiwyQzYuNSwyLDIsNi41LDIsMTJjMCw1LjUsNC41LDEwLDEwLDEwczEwLTQuNSwxMC0xMCAgIEMyMiw2LjUsMTcuNSwyLDEyLDJMMTIsMnoiLz48L2c+PC9zdmc+";
13
13
  export declare const NotificationAlertIcon = "data:image/svg+xml;base64,PHN2ZyBhcmlhLWxhYmVsPSJXYXJuaW5nIiBoZWlnaHQ9IjE5IiB2aWV3Qm94PSIwIDAgMTkgMTkiIHdpZHRoPSIxOSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNOS4zNzUgMEMxMC4yNDA5IDAgMTEuMDcxIDAuMTEwNjc3IDExLjg2NTIgMC4zMzIwMzFDMTIuNjY2IDAuNTUzMzg1IDEzLjQxNDcgMC44NjkxNDEgMTQuMTExMyAxLjI3OTNDMTQuODA3OSAxLjY4Mjk0IDE1LjQzOTUgMi4xNzEyMiAxNi4wMDU5IDIuNzQ0MTRDMTYuNTc4OCAzLjMxMDU1IDE3LjA2NzEgMy45NDIwNiAxNy40NzA3IDQuNjM4NjdDMTcuODgwOSA1LjMzNTI5IDE4LjE5NjYgNi4wODM5OCAxOC40MTggNi44ODQ3N0MxOC42MzkzIDcuNjc5MDQgMTguNzUgOC41MDkxMSAxOC43NSA5LjM3NUMxOC43NSAxMC4yNDA5IDE4LjYzOTMgMTEuMDc0MiAxOC40MTggMTEuODc1QzE4LjE5NjYgMTIuNjY5MyAxNy44ODA5IDEzLjQxNDcgMTcuNDcwNyAxNC4xMTEzQzE3LjA2NzEgMTQuODA3OSAxNi41Nzg4IDE1LjQ0MjcgMTYuMDA1OSAxNi4wMTU2QzE1LjQzOTUgMTYuNTgyIDE0LjgwNzkgMTcuMDcwMyAxNC4xMTEzIDE3LjQ4MDVDMTMuNDE0NyAxNy44ODQxIDEyLjY2NiAxOC4xOTY2IDExLjg2NTIgMTguNDE4QzExLjA3MSAxOC42MzkzIDEwLjI0MDkgMTguNzUgOS4zNzUgMTguNzVDOC41MDkxMSAxOC43NSA3LjY3NTc4IDE4LjYzOTMgNi44NzUgMTguNDE4QzYuMDgwNzMgMTguMTk2NiA1LjMzNTI5IDE3Ljg4NDEgNC42Mzg2NyAxNy40ODA1QzMuOTQyMDYgMTcuMDcwMyAzLjMwNzI5IDE2LjU4MiAyLjczNDM4IDE2LjAxNTZDMi4xNjc5NyAxNS40NDI3IDEuNjc5NjkgMTQuODA3OSAxLjI2OTUzIDE0LjExMTNDMC44NjU4ODUgMTMuNDE0NyAwLjU1MzM4NSAxMi42NjkzIDAuMzMyMDMxIDExLjg3NUMwLjExMDY3NyAxMS4wNzQyIDAgMTAuMjQwOSAwIDkuMzc1QzAgOC41MDkxMSAwLjExMDY3NyA3LjY3OTA0IDAuMzMyMDMxIDYuODg0NzdDMC41NTMzODUgNi4wODM5OCAwLjg2NTg4NSA1LjMzNTI5IDEuMjY5NTMgNC42Mzg2N0MxLjY3OTY5IDMuOTQyMDYgMi4xNjc5NyAzLjMxMDU1IDIuNzM0MzggMi43NDQxNEMzLjMwNzI5IDIuMTcxMjIgMy45NDIwNiAxLjY4Mjk0IDQuNjM4NjcgMS4yNzkzQzUuMzM1MjkgMC44NjkxNDEgNi4wODA3MyAwLjU1MzM4NSA2Ljg3NSAwLjMzMjAzMUM3LjY3NTc4IDAuMTEwNjc3IDguNTA5MTEgMCA5LjM3NSAwWk05LjM3NSAxNy41QzEwLjExNzIgMTcuNSAxMC44MzMzIDE3LjQwMjMgMTEuNTIzNCAxNy4yMDdDMTIuMjIwMSAxNy4wMTE3IDEyLjg2NzggMTYuNzM4MyAxMy40NjY4IDE2LjM4NjdDMTQuMDcyMyAxNi4wMzUyIDE0LjYyMjQgMTUuNjEyIDE1LjExNzIgMTUuMTE3MkMxNS42MTIgMTQuNjIyNCAxNi4wMzUyIDE0LjA3NTUgMTYuMzg2NyAxMy40NzY2QzE2LjczODMgMTIuODcxMSAxNy4wMTE3IDEyLjIyMzMgMTcuMjA3IDExLjUzMzJDMTcuNDAyMyAxMC44NDMxIDE3LjUgMTAuMTIzNyAxNy41IDkuMzc1QzE3LjUgOC42MzI4MSAxNy40MDIzIDcuOTE2NjcgMTcuMjA3IDcuMjI2NTZDMTcuMDExNyA2LjUyOTk1IDE2LjczODMgNS44ODIxNiAxNi4zODY3IDUuMjgzMkMxNi4wMzUyIDQuNjc3NzMgMTUuNjEyIDQuMTI3NiAxNS4xMTcyIDMuNjMyODFDMTQuNjIyNCAzLjEzODAyIDE0LjA3MjMgMi43MTQ4NCAxMy40NjY4IDIuMzYzMjhDMTIuODY3OCAyLjAxMTcyIDEyLjIyMDEgMS43MzgyOCAxMS41MjM0IDEuNTQyOTdDMTAuODMzMyAxLjM0NzY2IDEwLjExNzIgMS4yNSA5LjM3NSAxLjI1QzguNjI2MyAxLjI1IDcuOTA2OSAxLjM0NzY2IDcuMjE2OCAxLjU0Mjk3QzYuNTI2NjkgMS43MzgyOCA1Ljg3ODkxIDIuMDExNzIgNS4yNzM0NCAyLjM2MzI4QzQuNjc0NDggMi43MTQ4NCA0LjEyNzYgMy4xMzgwMiAzLjYzMjgxIDMuNjMyODFDMy4xMzgwMiA0LjEyNzYgMi43MTQ4NCA0LjY3NzczIDIuMzYzMjggNS4yODMyQzIuMDExNzIgNS44ODIxNiAxLjczODI4IDYuNTI5OTUgMS41NDI5NyA3LjIyNjU2QzEuMzQ3NjYgNy45MTY2NyAxLjI1IDguNjMyODEgMS4yNSA5LjM3NUMxLjI1IDEwLjExNzIgMS4zNDc2NiAxMC44MzY2IDEuNTQyOTcgMTEuNTMzMkMxLjczODI4IDEyLjIyMzMgMi4wMTE3MiAxMi44NzExIDIuMzYzMjggMTMuNDc2NkMyLjcxNDg0IDE0LjA3NTUgMy4xMzgwMiAxNC42MjI0IDMuNjMyODEgMTUuMTE3MkM0LjEyNzYgMTUuNjEyIDQuNjc0NDggMTYuMDM1MiA1LjI3MzQ0IDE2LjM4NjdDNS44Nzg5MSAxNi43MzgzIDYuNTI2NjkgMTcuMDExNyA3LjIxNjggMTcuMjA3QzcuOTA2OSAxNy40MDIzIDguNjI2MyAxNy41IDkuMzc1IDE3LjVaTTguNzUgNUgxMFYxMS4yNUg4Ljc1VjVaTTguNzUgMTIuNUgxMFYxMy43NUg4Ljc1VjEyLjVaIj48L3BhdGg+PC9zdmc+";
14
+ export declare const FileScanInProgressIcon = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgPHBhdGggZD0iTTYgMkM0Ljg5NTQzIDIgNCAyLjg5NTQzIDQgNFY5LjIwNzAzQzQuMzIyMjggOS4xMTU4OCA0LjY1NjU5IDkuMDUzMzcgNSA5LjAyMjQyVjRDNSAzLjQ0NzcyIDUuNDQ3NzIgMyA2IDNIMTBWNi41QzEwIDcuMzI4NDMgMTAuNjcxNiA4IDExLjUgOEgxNVYxNkMxNSAxNi41NTIzIDE0LjU1MjMgMTcgMTQgMTdIMTAuNDAwM0MxMC4yMTc0IDE3LjM1NzggOS45OTY0NyAxNy42OTI5IDkuNzQyODQgMThIMTRDMTUuMTA0NiAxOCAxNiAxNy4xMDQ2IDE2IDE2VjcuNDE0MjFDMTYgNy4wMTYzOSAxNS44NDIgNi42MzQ4NiAxNS41NjA3IDYuMzUzNTVMMTEuNjQ2NCAyLjQzOTM0QzExLjM2NTEgMi4xNTgwNCAxMC45ODM2IDIgMTAuNTg1OCAySDZaTTE0Ljc5MjkgN0gxMS41QzExLjIyMzkgNyAxMSA2Ljc3NjE0IDExIDYuNVYzLjIwNzExTDE0Ljc5MjkgN1pNMSAxNC41QzEgMTYuOTg1MyAzLjAxNDcyIDE5IDUuNSAxOUM3Ljk4NTI4IDE5IDEwIDE2Ljk4NTMgMTAgMTQuNUMxMCAxMi4wMTQ3IDcuOTg1MjggMTAgNS41IDEwQzMuMDE0NzIgMTAgMSAxMi4wMTQ3IDEgMTQuNVpNNy41IDExLjVDNy43NzYxNCAxMS41IDggMTEuNzIzOSA4IDEyVjEzLjVDOCAxMy43NzYxIDcuNzc2MTQgMTQgNy41IDE0SDZDNS43MjM4NiAxNCA1LjUgMTMuNzc2MSA1LjUgMTMuNUM1LjUgMTMuMjIzOSA1LjcyMzg2IDEzIDYgMTNINi40NjgyMUM2LjQxNzg3IDEyLjk3MjIgNi4zNjYyOCAxMi45NDY0IDYuMzEzNTUgMTIuOTIzQzYuMDY4MjQgMTIuODEzNyA1LjgwMzQ0IDEyLjc1NSA1LjUzNDk1IDEyLjc1MDNDNS4yNjY0NiAxMi43NDU2IDQuOTk5NzcgMTIuNzk1IDQuNzUwNzkgMTIuODk1NkM0LjUwMTggMTIuOTk2MiA0LjI3NTYzIDEzLjE0NTkgNC4wODU3NSAxMy4zMzU4QzMuODkwNDggMTMuNTMxIDMuNTczOSAxMy41MzEgMy4zNzg2NCAxMy4zMzU4QzMuMTgzMzggMTMuMTQwNSAzLjE4MzM4IDEyLjgyMzkgMy4zNzg2NCAxMi42Mjg3QzMuNjYzNDYgMTIuMzQzOSA0LjAwMjczIDEyLjExOTMgNC4zNzYyIDExLjk2ODRDNC43NDk2NyAxMS44MTc1IDUuMTQ5NzEgMTEuNzQzNCA1LjU1MjQ1IDExLjc1MDVDNS45NTUxOCAxMS43NTc1IDYuMzUyMzggMTEuODQ1NiA2LjcyMDM0IDEyLjAwOTRDNi44MTYxNyAxMi4wNTIxIDYuOTA5NTEgMTIuMDk5NyA3IDEyLjE1MTlWMTJDNyAxMS43MjM5IDcuMjIzODYgMTEuNSA3LjUgMTEuNVpNNi42MjM4IDE3LjAzMTZDNi4yNTAzMyAxNy4xODI1IDUuODUwMjkgMTcuMjU2NiA1LjQ0NzU1IDE3LjI0OTVDNS4wNDQ4MiAxNy4yNDI1IDQuNjQ3NjIgMTcuMTU0NCA0LjI3OTY2IDE2Ljk5MDZDNC4xODM4MyAxNi45NDc5IDQuMDkwNDkgMTYuOTAwMyA0IDE2Ljg0ODFWMTdDNCAxNy4yNzYxIDMuNzc2MTQgMTcuNSAzLjUgMTcuNUMzLjIyMzg2IDE3LjUgMyAxNy4yNzYxIDMgMTdWMTUuNUMzIDE1LjIyMzkgMy4yMjM4NiAxNSAzLjUgMTVINUM1LjI3NjE0IDE1IDUuNSAxNS4yMjM5IDUuNSAxNS41QzUuNSAxNS43NzYxIDUuMjc2MTQgMTYgNSAxNkg0LjUzMTc5QzQuNTgyMTMgMTYuMDI3OCA0LjYzMzcyIDE2LjA1MzYgNC42ODY0NSAxNi4wNzdDNC45MzE3NiAxNi4xODYzIDUuMTk2NTYgMTYuMjQ1IDUuNDY1MDUgMTYuMjQ5N0M1LjczMzU0IDE2LjI1NDQgNi4wMDAyMyAxNi4yMDUgNi4yNDkyMSAxNi4xMDQ0QzYuNDk4MiAxNi4wMDM4IDYuNzI0MzcgMTUuODU0MSA2LjkxNDI1IDE1LjY2NDJDNy4xMDk1MSAxNS40NjkgNy40MjYxIDE1LjQ2OSA3LjYyMTM2IDE1LjY2NDJDNy44MTY2MiAxNS44NTk1IDcuODE2NjIgMTYuMTc2MSA3LjYyMTM2IDE2LjM3MTNDNy4zMzY1NCAxNi42NTYxIDYuOTk3MjcgMTYuODgwNyA2LjYyMzggMTcuMDMxNloiIGZpbGw9IiMyMTIxMjEiIC8+DQo8L3N2Zz4=";
15
+ export declare const MaliciousFileIcon = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgPHBhdGggZD0iTTQgNEM0IDIuODk1NDMgNC44OTU0MyAyIDYgMkgxMC41ODU4QzEwLjk4MzYgMiAxMS4zNjUxIDIuMTU4MDQgMTEuNjQ2NCAyLjQzOTM0TDE1LjU2MDcgNi4zNTM1NUMxNS44NDIgNi42MzQ4NiAxNiA3LjAxNjM5IDE2IDcuNDE0MjFWMTZDMTYgMTcuMTA0NiAxNS4xMDQ2IDE4IDE0IDE4SDkuNzQyODRDOS45OTY0NyAxNy42OTI5IDEwLjIxNzQgMTcuMzU3OCAxMC40MDAzIDE3SDE0QzE0LjU1MjMgMTcgMTUgMTYuNTUyMyAxNSAxNlY4SDExLjVDMTAuNjcxNiA4IDEwIDcuMzI4NDMgMTAgNi41VjNINkM1LjQ0NzcyIDMgNSAzLjQ0NzcyIDUgNFY5LjAyMjQyQzQuNjU2NTkgOS4wNTMzNyA0LjMyMjI4IDkuMTE1ODggNCA5LjIwNzAzVjRaTTExIDMuMjA3MTFWNi41QzExIDYuNzc2MTQgMTEuMjIzOSA3IDExLjUgN0gxNC43OTI5TDExIDMuMjA3MTFaTTguNjgxOTkgMTcuNjgyQzYuOTI0NjIgMTkuNDM5NCA0LjA3NTM5IDE5LjQzOTQgMi4zMTgwMiAxNy42ODJDMC41NjA2NTkgMTUuOTI0NiAwLjU2MDY1OSAxMy4wNzU0IDIuMzE4MDIgMTEuMzE4QzQuMDc1MzkgOS41NjA2NiA2LjkyNDYyIDkuNTYwNjYgOC42ODE5OSAxMS4zMThDMTAuNDM5NCAxMy4wNzU0IDEwLjQzOTQgMTUuOTI0NiA4LjY4MTk5IDE3LjY4MlpNMy40MDM3NSAxNy4zMDM0QzQuNzc0NjYgMTguMzMxMiA2LjcyODA5IDE4LjIyMTcgNy45NzQ4OCAxNi45NzQ5QzkuMjIxNjcgMTUuNzI4MSA5LjMzMTE2IDEzLjc3NDcgOC4zMDMzNyAxMi40MDM3TDMuNDAzNzUgMTcuMzAzNFpNMi42OTY2NCAxNi41OTYzTDcuNTk2MjYgMTEuNjk2NkM2LjIyNTM1IDEwLjY2ODggNC4yNzE5MiAxMC43NzgzIDMuMDI1MTMgMTIuMDI1MUMxLjc3ODM0IDEzLjI3MTkgMS42Njg4NSAxNS4yMjU0IDIuNjk2NjQgMTYuNTk2M1oiIGZpbGw9IiMyMTIxMjEiIC8+DQo8L3N2Zz4=";
16
+ export declare const CrossIcon = "data:image/svg+xml;base64,PHN2ZyBjbGFzcz0iIiBmaWxsPSJyZWQiIHN0cm9rZS13aWR0aD0iMyIgZm9jdXNhYmxlPSJmYWxzZSIgaGVpZ2h0PSIxNCIgcm9sZT0icHJlc2VudGF0aW9uIiB2aWV3Qm94PSIwIDAgMTQgMTQiIHdpZHRoPSIxNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNy43MTA5NCA3TDEzLjEwMTYgMTIuMzk4NEwxMi4zOTg0IDEzLjEwMTZMNyA3LjcxMDk0TDEuNjAxNTYgMTMuMTAxNkwwLjg5ODQzOCAxMi4zOTg0TDYuMjg5MDYgN0wwLjg5ODQzOCAxLjYwMTU2TDEuNjAxNTYgMC44OTg0MzhMNyA2LjI4OTA2TDEyLjM5ODQgMC44OTg0MzhMMTMuMTAxNiAxLjYwMTU2TDcuNzEwOTQgN1oiPjwvcGF0aD48L3N2Zz4=";
@@ -2,6 +2,10 @@ import { Dispatch } from "react";
2
2
  import { ILiveChatWidgetAction } from "../../../contexts/common/ILiveChatWidgetAction";
3
3
  import { ILiveChatWidgetContext } from "../../../contexts/common/ILiveChatWidgetContext";
4
4
  import { ILiveChatWidgetProps } from "../interfaces/ILiveChatWidgetProps";
5
- declare const prepareEndChat: (props: ILiveChatWidgetProps, chatSDK: any, state: ILiveChatWidgetContext, dispatch: Dispatch<ILiveChatWidgetAction>, setAdapter: any, setWebChatStyles: any, adapter: any, uwid: string) => Promise<void>;
6
- declare const endChat: (props: ILiveChatWidgetProps, chatSDK: any, state: ILiveChatWidgetContext, dispatch: Dispatch<ILiveChatWidgetAction>, setAdapter: any, setWebChatStyles: any, adapter: any, skipEndChatSDK?: boolean | undefined, skipCloseChat?: boolean | undefined, postMessageToOtherTab?: boolean | undefined, uwid?: string) => Promise<void>;
5
+ declare const prepareEndChat: (props: ILiveChatWidgetProps, chatSDK: any, state: ILiveChatWidgetContext, dispatch: Dispatch<ILiveChatWidgetAction>, setAdapter: any, setWebChatStyles: any, adapter: any) => Promise<void>;
6
+ declare const endChat: (props: ILiveChatWidgetProps, chatSDK: any, state: ILiveChatWidgetContext, dispatch: Dispatch<ILiveChatWidgetAction>, setAdapter: any, setWebChatStyles: any, adapter: any, skipEndChatSDK?: boolean | undefined, skipCloseChat?: boolean | undefined, postMessageToOtherTab?: boolean | undefined) => Promise<void>;
7
+ export declare const callingStateCleanUp: (dispatch: Dispatch<ILiveChatWidgetAction>) => Promise<void>;
8
+ export declare const endChatStateCleanUp: (dispatch: Dispatch<ILiveChatWidgetAction>) => Promise<void>;
9
+ export declare const closeChatStateCleanUp: (dispatch: Dispatch<ILiveChatWidgetAction>) => Promise<void>;
10
+ export declare const endVoiceVideoCallIfOngoing: (chatSDK: any, dispatch: Dispatch<ILiveChatWidgetAction>) => Promise<void>;
7
11
  export { prepareEndChat, endChat };
@@ -27,4 +27,5 @@ export declare class MockChatSDK {
27
27
  getChatReconnectContext(): {
28
28
  reconnectId: string;
29
29
  };
30
+ getVoiceVideoCalling(): null;
30
31
  }
@@ -0,0 +1,2 @@
1
+ declare const Attachment: (props: any) => JSX.Element;
2
+ export default Attachment;
@@ -0,0 +1,2 @@
1
+ declare const AttachmentContent: (props: any) => JSX.Element;
2
+ export default AttachmentContent;
@@ -0,0 +1,2 @@
1
+ declare const AttachmentIcon: (props: any) => JSX.Element;
2
+ export default AttachmentIcon;
@@ -0,0 +1,2 @@
1
+ declare const DownloadBlockedAttachment: (props: any) => JSX.Element;
2
+ export default DownloadBlockedAttachment;
@@ -0,0 +1,6 @@
1
+ declare enum FileScanStatus {
2
+ PASSED = "passed",
3
+ MALWARE = "malware",
4
+ INPROGRESS = "in progress"
5
+ }
6
+ export default FileScanStatus;
@@ -0,0 +1,2 @@
1
+ declare const MaliciousAttachment: (props: any) => JSX.Element;
2
+ export default MaliciousAttachment;
@@ -0,0 +1,2 @@
1
+ declare const ScanInProgressAttachment: (props: any) => JSX.Element;
2
+ export default ScanInProgressAttachment;
@@ -0,0 +1,2 @@
1
+ declare const Spinner: (props: any) => JSX.Element;
2
+ export default Spinner;
@@ -3,7 +3,7 @@ import { ConversationState } from "./ConversationState";
3
3
  import { IInternalTelemetryData } from "../../common/telemetry/interfaces/IInternalTelemetryData";
4
4
  import { ILiveChatWidgetLocalizedTexts } from "./ILiveChatWidgetLocalizedTexts";
5
5
  import { IRenderingMiddlewareProps } from "../../components/webchatcontainerstateful/interfaces/IRenderingMiddlewareProps";
6
- import { ConfirmationState, ConversationEndEntity } from "../../common/Constants";
6
+ import { ConfirmationState, ConversationEndEntity, ParticipantType } from "../../common/Constants";
7
7
  export interface ILiveChatWidgetContext {
8
8
  domainStates: {
9
9
  liveChatConfig: ChatConfig | undefined;
@@ -45,6 +45,7 @@ export interface ILiveChatWidgetContext {
45
45
  conversationEndedBy: ConversationEndEntity;
46
46
  chatDisconnectEventReceived: boolean;
47
47
  selectedSurveyMode: string | null;
48
+ postChatParticipantType: undefined | ParticipantType;
48
49
  };
49
50
  uiStates: {
50
51
  showConfirmationPane: boolean;
@@ -21,4 +21,11 @@ export interface ILiveChatWidgetLocalizedTexts {
21
21
  MARKDOWN_EXTERNAL_LINK_ALT?: string;
22
22
  MIDDLEWARE_BANNER_CHAT_DISCONNECT?: string;
23
23
  THIRD_PARTY_COOKIES_BLOCKED_ALERT_MESSAGE?: string;
24
+ /**
25
+ * Error message shown when the file is malicious
26
+ * Variable replacement:
27
+ * {0} - File name
28
+ * e.g. "{0} has been blocked because the file may contain a malware."
29
+ */
30
+ MIDDLEWARE_BANNER_FILE_IS_MALICIOUS?: string;
24
31
  }
@@ -41,5 +41,6 @@ export declare enum LiveChatWidgetActionType {
41
41
  SET_SHOULD_USE_BOT_SURVEY = 39,
42
42
  SET_CHAT_DISCONNECT_EVENT_RECEIVED = 40,
43
43
  SET_SURVEY_MODE = 41,
44
- SET_CONFIRMATION_STATE = 42
44
+ SET_CONFIRMATION_STATE = 42,
45
+ SET_POST_CHAT_PARTICIPANT_TYPE = 43
45
46
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@microsoft/omnichannel-chat-widget",
3
- "version": "1.3.1-main.da9dc59",
3
+ "version": "1.4.1-main.9bf5e75",
4
4
  "description": "Microsoft Omnichannel Chat Widget",
5
5
  "main": "lib/cjs/index.js",
6
6
  "types": "lib/types/index.d.ts",
@@ -74,11 +74,13 @@
74
74
  "webpack-cli": "^4.9.2"
75
75
  },
76
76
  "dependencies": {
77
- "@microsoft/omnichannel-chat-components": "^1.0.7",
78
- "@microsoft/omnichannel-chat-sdk": "1.4.7",
77
+ "@microsoft/omnichannel-chat-components": "^1.0.8",
78
+ "@microsoft/omnichannel-chat-sdk": "1.5.4",
79
79
  "abort-controller-es5": "^2.0.1",
80
80
  "dompurify": "^2.3.4",
81
81
  "markdown-it": "^12.3.2",
82
+ "markdown-it-attrs": "^4.1.6",
83
+ "markdown-it-attrs-es5": "^2.0.2",
82
84
  "markdown-it-for-inline": "^0.1.1",
83
85
  "md5-typescript": "^1.0.5",
84
86
  "p-defer-es5": "^2.0.1",