@microsoft/omnichannel-chat-widget 1.2.4-main.9847fc4 → 1.3.1-main.2c329a2
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.
- package/lib/cjs/assets/Icons.js +10 -2
- package/lib/cjs/common/Constants.js +15 -1
- package/lib/cjs/common/telemetry/TelemetryConstants.js +4 -0
- package/lib/cjs/components/livechatwidget/common/createAdapter.js +5 -0
- package/lib/cjs/components/livechatwidget/common/endChat.js +53 -4
- package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +9 -7
- package/lib/cjs/components/livechatwidget/common/startChat.js +1 -1
- package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +24 -4
- package/lib/cjs/components/notificationpanestateful/NotificationPaneStateful.js +177 -0
- package/lib/cjs/components/notificationpanestateful/defaultProps/defaultChatDisconnectControlProps.js +41 -0
- package/lib/cjs/components/notificationpanestateful/defaultProps/defaultChatDisconnectStyleProps.js +98 -0
- package/lib/cjs/components/notificationpanestateful/interfaces/INotificationPaneStatefulProps.js +1 -0
- package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts.js +4 -3
- package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +3 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +40 -101
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/Attachment.js +92 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/AttachmentContent.js +17 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/AttachmentIcon.js +21 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/DownloadBlockedAttachment.js +36 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/FileScanStatus.js +14 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/MaliciousAttachment.js +24 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/ScanInProgressAttachment.js +24 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/Spinner.js +41 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/toastMiddleware.js +35 -0
- package/lib/esm/assets/Icons.js +5 -1
- package/lib/esm/common/Constants.js +13 -0
- package/lib/esm/common/telemetry/TelemetryConstants.js +4 -0
- package/lib/esm/components/livechatwidget/common/createAdapter.js +5 -0
- package/lib/esm/components/livechatwidget/common/endChat.js +51 -3
- package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +9 -7
- package/lib/esm/components/livechatwidget/common/startChat.js +1 -1
- package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +24 -4
- package/lib/esm/components/notificationpanestateful/NotificationPaneStateful.js +167 -0
- package/lib/esm/components/notificationpanestateful/defaultProps/defaultChatDisconnectControlProps.js +34 -0
- package/lib/esm/components/notificationpanestateful/defaultProps/defaultChatDisconnectStyleProps.js +91 -0
- package/lib/esm/components/notificationpanestateful/interfaces/INotificationPaneStatefulProps.js +1 -0
- package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts.js +4 -3
- package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +3 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +36 -96
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/Attachment.js +84 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/AttachmentContent.js +9 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/AttachmentIcon.js +13 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/DownloadBlockedAttachment.js +28 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/FileScanStatus.js +7 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/MaliciousAttachment.js +16 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/ScanInProgressAttachment.js +16 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/Spinner.js +33 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/toastMiddleware.js +28 -0
- package/lib/types/assets/Icons.d.ts +4 -0
- package/lib/types/common/Constants.d.ts +14 -0
- package/lib/types/common/telemetry/TelemetryConstants.d.ts +2 -0
- package/lib/types/components/livechatwidget/common/endChat.d.ts +1 -0
- package/lib/types/components/livechatwidget/common/initWebChatComposer.d.ts +1 -1
- package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +2 -0
- package/lib/types/components/notificationpanestateful/NotificationPaneStateful.d.ts +3 -0
- package/lib/types/components/notificationpanestateful/defaultProps/defaultChatDisconnectControlProps.d.ts +2 -0
- package/lib/types/components/notificationpanestateful/defaultProps/defaultChatDisconnectStyleProps.d.ts +2 -0
- package/lib/types/components/notificationpanestateful/interfaces/INotificationPaneStatefulProps.d.ts +13 -0
- package/lib/types/components/webchatcontainerstateful/common/mockchatsdk.d.ts +1 -0
- package/lib/types/components/webchatcontainerstateful/interfaces/IRenderingMiddlewareProps.d.ts +1 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/Attachment.d.ts +2 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/AttachmentContent.d.ts +2 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/AttachmentIcon.d.ts +2 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/DownloadBlockedAttachment.d.ts +2 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/FileScanStatus.d.ts +6 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/MaliciousAttachment.d.ts +2 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/ScanInProgressAttachment.d.ts +2 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/Spinner.d.ts +2 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/toastMiddleware.d.ts +3 -0
- package/lib/types/contexts/common/ILiveChatWidgetLocalizedTexts.d.ts +7 -0
- 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
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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$
|
|
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$
|
|
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$
|
|
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,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;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { NotificationScenarios } from "../../enums/NotificationScenarios";
|
|
3
|
+
import NotificationPaneStateful from "../../../../notificationpanestateful/NotificationPaneStateful";
|
|
4
|
+
|
|
5
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6
|
+
const createToastMiddleware = (notificationPaneProps, endChat) => {
|
|
7
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any, react/display-name
|
|
8
|
+
const toastMiddleware = () => next => card => {
|
|
9
|
+
const {
|
|
10
|
+
notification
|
|
11
|
+
} = card;
|
|
12
|
+
if (notificationPaneProps) {
|
|
13
|
+
if (notification.id === NotificationScenarios.ChatDisconnect) {
|
|
14
|
+
return /*#__PURE__*/React.createElement(NotificationPaneStateful, {
|
|
15
|
+
notificationPaneProps: notificationPaneProps,
|
|
16
|
+
notificationScenarioType: NotificationScenarios.ChatDisconnect,
|
|
17
|
+
endChat: endChat
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// TODO: additional notification scenarios to be added...
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return next(card);
|
|
25
|
+
};
|
|
26
|
+
return toastMiddleware;
|
|
27
|
+
};
|
|
28
|
+
export default createToastMiddleware;
|
|
@@ -10,3 +10,7 @@ export declare const VideoIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0
|
|
|
10
10
|
export declare const VisioIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciDQogICAgdmlld0JveD0iMCAwIDIwNDggMjA0OCINCiAgICB3aWR0aD0iMTJweCINCiAgICBoZWlnaHQ9IjEycHgiPg0KICAgIDxwYXRoIGQ9Ik0yMDQ4IDQ3NXYxNDQ1cTAgMjctMTAgNTB0LTI3IDQwLTQxIDI4LTUwIDEwSDY0MHEtMjcgMC01MC0xMHQtNDAtMjctMjgtNDEtMTAtNTB2LTI1NkgxMTVxLTI0IDAtNDQtOXQtMzctMjUtMjUtMzYtOS00NVY2MjdxMC0yNCA5LTQ0dDI1LTM3IDM2LTI1IDQ1LTloMzk3VjEyOHEwLTI3IDEwLTUwdDI3LTQwIDQxLTI4IDUwLTEwaDkzM3EyNiAwIDQ5IDl0NDIgMjhsMzQ3IDM0N3ExOCAxOCAyNyA0MXQxMCA1MHptLTM4NC0yNTZ2MTY1aDE2NWwtMTY1LTE2NXpNNDkzIDE0MjRoMTYzbDI1NS02NzJINzQ1bC0xNDcgNDI3cS01IDE2LTEwIDMxdC0xMSAzMXEtNDEtMTIzLTgyLTI0NHQtODQtMjQ1SDI0MWwyNDggNjYyIDQgMTB6bTE0NyA0OTZoMTI4MFY1MTJoLTI1NnEtMjcgMC01MC0xMHQtNDAtMjctMjgtNDEtMTAtNTBWMTI4SDY0MHYzODRoMzk3cTI0IDAgNDQgOXQzNyAyNSAyNSAzNiA5IDQ1djkyMnEwIDI0LTkgNDR0LTI1IDM3LTM2IDI1LTQ1IDlINjQwdjI1NnptOTYwLTEyODBsMTkyIDE5Mi0xMjggMTI4djQ0OGgtMjU2djEyOGgtMTI4di0zODRoMTI4djEyOGgxMjhWOTYwbC0xMjgtMTI4IDE5Mi0xOTJ6IiAvPg0KPC9zdmc+";
|
|
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
|
+
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=";
|
|
@@ -217,6 +217,20 @@ export declare class TranscriptConstants {
|
|
|
217
217
|
static readonly AgentDialogColor = "#2266E3";
|
|
218
218
|
static readonly AgentFontColor = "white";
|
|
219
219
|
}
|
|
220
|
+
export declare class NotificationPaneConstants {
|
|
221
|
+
static readonly DefaultNotificationPaneId = "lcw-notification-pane";
|
|
222
|
+
static readonly DismissId = "lcw-notification-pane-dismiss-button";
|
|
223
|
+
static readonly DismissText = "Dismiss";
|
|
224
|
+
static readonly DismissAriaLabel = "Notification dismiss";
|
|
225
|
+
static readonly CloseChatId = "lcw-notification-pane-close-chat-button";
|
|
226
|
+
static readonly CloseChatText = "Close Chat";
|
|
227
|
+
static readonly CloseChatAriaLabel = "Close chat";
|
|
228
|
+
static readonly IconId = "lcw-notification-pane-icon";
|
|
229
|
+
static readonly IconText = "Notification Icon";
|
|
230
|
+
static readonly ChatDisconnectTitleText = "Chat disconnected";
|
|
231
|
+
static readonly ChatDisconnectSubtitleText = "For additional assistance, please close the chat and try again.";
|
|
232
|
+
static readonly ChromeCloseIconName = "ChromeClose";
|
|
233
|
+
}
|
|
220
234
|
export declare class AriaTelemetryConstants {
|
|
221
235
|
static readonly GERMANY_ENDPOINT: string;
|
|
222
236
|
static readonly GCCH_ENDPOINT: string;
|
|
@@ -131,6 +131,8 @@ export declare enum TelemetryEvent {
|
|
|
131
131
|
ReconnectChatPaneLoaded = "ReconnectChatPaneLoaded",
|
|
132
132
|
HeaderCloseButtonClicked = "HeaderCloseButtonClicked",
|
|
133
133
|
HeaderMinimizeButtonClicked = "HeaderMinimizeButtonClicked",
|
|
134
|
+
NotificationCloseChatButtonClicked = "NotificationCloseChatButtonClicked",
|
|
135
|
+
NotificationDismissButtonClicked = "NotificationDismissButtonClicked",
|
|
134
136
|
DownloadTranscriptButtonClicked = "DownloadTranscriptButtonClicked",
|
|
135
137
|
EmailTranscriptButtonClicked = "EmailTranscriptButtonClicked",
|
|
136
138
|
EmailTranscriptCancelButtonClicked = "EmailTranscriptCancelButtonClicked",
|
|
@@ -4,4 +4,5 @@ import { ILiveChatWidgetContext } from "../../../contexts/common/ILiveChatWidget
|
|
|
4
4
|
import { ILiveChatWidgetProps } from "../interfaces/ILiveChatWidgetProps";
|
|
5
5
|
declare const prepareEndChat: (props: ILiveChatWidgetProps, chatSDK: any, state: ILiveChatWidgetContext, dispatch: Dispatch<ILiveChatWidgetAction>, setAdapter: any, setWebChatStyles: any, adapter: any, uwid: string) => Promise<void>;
|
|
6
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>;
|
|
7
|
+
export declare const endVoiceVideoCallIfOngoing: (chatSDK: any, dispatch: Dispatch<ILiveChatWidgetAction>) => Promise<void>;
|
|
7
8
|
export { prepareEndChat, endChat };
|
|
@@ -3,4 +3,4 @@ import { ILiveChatWidgetAction } from "../../../contexts/common/ILiveChatWidgetA
|
|
|
3
3
|
import { ILiveChatWidgetContext } from "../../../contexts/common/ILiveChatWidgetContext";
|
|
4
4
|
import { ILiveChatWidgetProps } from "../interfaces/ILiveChatWidgetProps";
|
|
5
5
|
import { IWebChatProps } from "../../webchatcontainerstateful/interfaces/IWebChatProps";
|
|
6
|
-
export declare const initWebChatComposer: (props: ILiveChatWidgetProps, state: ILiveChatWidgetContext, dispatch: Dispatch<ILiveChatWidgetAction>, chatSDK: any) => IWebChatProps;
|
|
6
|
+
export declare const initWebChatComposer: (props: ILiveChatWidgetProps, state: ILiveChatWidgetContext, dispatch: Dispatch<ILiveChatWidgetAction>, chatSDK: any, endChat: any) => IWebChatProps;
|
|
@@ -24,6 +24,7 @@ import { IContextDataStore } from "../../../common/interfaces/IContextDataStore"
|
|
|
24
24
|
import { IPostChatSurveyPaneStatefulProps } from "../../postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps";
|
|
25
25
|
import { IScrollBarProps } from "./IScrollBarProps";
|
|
26
26
|
import { IDraggableChatWidgetProps } from "./IDraggableChatWidgetProps";
|
|
27
|
+
import { INotificationPaneProps } from "@microsoft/omnichannel-chat-components/lib/types/components/notificationpane/interfaces/INotificationPaneProps";
|
|
27
28
|
export interface ILiveChatWidgetProps {
|
|
28
29
|
audioNotificationProps?: IAudioNotificationProps;
|
|
29
30
|
callingContainerProps?: ICallingContainerProps;
|
|
@@ -50,6 +51,7 @@ export interface ILiveChatWidgetProps {
|
|
|
50
51
|
startChatErrorPaneProps?: IStartChatErrorPaneProps;
|
|
51
52
|
styleProps?: ILiveChatWidgetStyleProps;
|
|
52
53
|
telemetryConfig: ITelemetryConfig;
|
|
54
|
+
notificationPaneProps?: INotificationPaneProps;
|
|
53
55
|
webChatContainerProps?: IWebChatContainerStatefulProps;
|
|
54
56
|
liveChatContextFromCache?: ILiveChatWidgetContext;
|
|
55
57
|
contextDataStore?: IContextDataStore;
|
package/lib/types/components/notificationpanestateful/interfaces/INotificationPaneStatefulProps.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { INotificationPaneProps } from "@microsoft/omnichannel-chat-components/lib/types/components/notificationpane/interfaces/INotificationPaneProps";
|
|
2
|
+
export interface INotificationPaneStatefulProps extends INotificationPaneProps {
|
|
3
|
+
notificationPaneProps?: INotificationPaneProps;
|
|
4
|
+
notificationScenarioType?: string;
|
|
5
|
+
/**
|
|
6
|
+
* endChat: Internal Prop injected for triggering end of a chat using chatSDK
|
|
7
|
+
* @param adapter : The chat adapter for the live chat session
|
|
8
|
+
* @param skipEndChatSDK : If set to true endchat will skip chatSDK endChat call
|
|
9
|
+
* @param skipCloseChat : If set to true endchat will skip closing the live chat instance
|
|
10
|
+
* @param postMessageToOtherTab : If set to true endchat will send a message to other tabs(multi-tabs)
|
|
11
|
+
*/
|
|
12
|
+
endChat: (adapter: any, skipEndChatSDK?: boolean, skipCloseChat?: boolean, postMessageToOtherTab?: boolean) => Promise<void>;
|
|
13
|
+
}
|
package/lib/types/components/webchatcontainerstateful/interfaces/IRenderingMiddlewareProps.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ export interface IRenderingMiddlewareProps {
|
|
|
9
9
|
disableGroupActivitiesMiddleware?: boolean;
|
|
10
10
|
disableTypingIndicatorMiddleware?: boolean;
|
|
11
11
|
disableThirdPartyCookiesAlert?: boolean;
|
|
12
|
+
disableToastMiddleware?: boolean;
|
|
12
13
|
hideSendboxOnConversationEnd?: boolean;
|
|
13
14
|
userMessageStyleProps?: React.CSSProperties;
|
|
14
15
|
systemMessageStyleProps?: React.CSSProperties;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { INotificationPaneProps } from "@microsoft/omnichannel-chat-components/lib/types/components/notificationpane/interfaces/INotificationPaneProps";
|
|
2
|
+
declare const createToastMiddleware: (notificationPaneProps: INotificationPaneProps | undefined, endChat: any) => () => (next: any) => (card: any) => any;
|
|
3
|
+
export default createToastMiddleware;
|
|
@@ -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
|
}
|