@microsoft/omnichannel-chat-widget 1.3.0 → 1.3.1-main.57aa509

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 (45) hide show
  1. package/lib/cjs/assets/Icons.js +8 -2
  2. package/lib/cjs/components/livechatwidget/common/createAdapter.js +5 -0
  3. package/lib/cjs/components/livechatwidget/common/endChat.js +53 -4
  4. package/lib/cjs/components/livechatwidget/common/startChat.js +1 -1
  5. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +23 -3
  6. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts.js +4 -3
  7. package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +3 -0
  8. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +40 -101
  9. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/Attachment.js +92 -0
  10. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/AttachmentContent.js +17 -0
  11. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/AttachmentIcon.js +21 -0
  12. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/DownloadBlockedAttachment.js +36 -0
  13. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/FileScanStatus.js +14 -0
  14. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/MaliciousAttachment.js +24 -0
  15. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/ScanInProgressAttachment.js +24 -0
  16. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/Spinner.js +41 -0
  17. package/lib/esm/assets/Icons.js +4 -1
  18. package/lib/esm/components/livechatwidget/common/createAdapter.js +5 -0
  19. package/lib/esm/components/livechatwidget/common/endChat.js +51 -3
  20. package/lib/esm/components/livechatwidget/common/startChat.js +1 -1
  21. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +23 -3
  22. package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts.js +4 -3
  23. package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +3 -0
  24. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +36 -96
  25. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/Attachment.js +84 -0
  26. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/AttachmentContent.js +9 -0
  27. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/AttachmentIcon.js +13 -0
  28. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/DownloadBlockedAttachment.js +28 -0
  29. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/FileScanStatus.js +7 -0
  30. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/MaliciousAttachment.js +16 -0
  31. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/ScanInProgressAttachment.js +16 -0
  32. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/Spinner.js +33 -0
  33. package/lib/types/assets/Icons.d.ts +3 -0
  34. package/lib/types/components/livechatwidget/common/endChat.d.ts +1 -0
  35. package/lib/types/components/webchatcontainerstateful/common/mockchatsdk.d.ts +1 -0
  36. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/Attachment.d.ts +2 -0
  37. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/AttachmentContent.d.ts +2 -0
  38. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/AttachmentIcon.d.ts +2 -0
  39. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/DownloadBlockedAttachment.d.ts +2 -0
  40. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/FileScanStatus.d.ts +6 -0
  41. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/MaliciousAttachment.d.ts +2 -0
  42. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/ScanInProgressAttachment.d.ts +2 -0
  43. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/Spinner.d.ts +2 -0
  44. package/lib/types/contexts/common/ILiveChatWidgetLocalizedTexts.d.ts +7 -0
  45. package/package.json +4 -2
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _DownloadBlockedAttachment = _interopRequireDefault(require("./DownloadBlockedAttachment"));
9
+ var _Icons = require("../../../../../../assets/Icons");
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ 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); }
12
+ const MaliciousAttachment = props => {
13
+ // eslint-disable-line @typescript-eslint/no-explicit-any
14
+ const extraContent = /*#__PURE__*/_react.default.createElement("img", {
15
+ src: _Icons.CrossIcon,
16
+ alt: "download blocked icon"
17
+ });
18
+ return /*#__PURE__*/_react.default.createElement(_DownloadBlockedAttachment.default, _extends({}, props, {
19
+ iconData: _Icons.MaliciousFileIcon,
20
+ extraContent: extraContent
21
+ }));
22
+ };
23
+ var _default = MaliciousAttachment;
24
+ exports.default = _default;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _Spinner = _interopRequireDefault(require("./Spinner"));
9
+ var _DownloadBlockedAttachment = _interopRequireDefault(require("./DownloadBlockedAttachment"));
10
+ var _Icons = require("../../../../../../assets/Icons");
11
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+ 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); }
13
+ const ScanInProgressAttachment = props => {
14
+ // eslint-disable-line @typescript-eslint/no-explicit-any
15
+ const extraContent = /*#__PURE__*/_react.default.createElement(_Spinner.default, {
16
+ size: 16
17
+ });
18
+ return /*#__PURE__*/_react.default.createElement(_DownloadBlockedAttachment.default, _extends({}, props, {
19
+ iconData: _Icons.FileScanInProgressIcon,
20
+ extraContent: extraContent
21
+ }));
22
+ };
23
+ var _default = ScanInProgressAttachment;
24
+ exports.default = _default;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
+ const Spinner = props => {
10
+ // eslint-disable-line @typescript-eslint/no-explicit-any
11
+ const spinnerStyle = {
12
+ // eslint-disable-line @typescript-eslint/no-explicit-any
13
+ boxSizing: "border-box",
14
+ borderRadius: "50%",
15
+ borderWidth: props.borderWidth || 2,
16
+ borderStyle: "solid",
17
+ borderColor: "rgb(0,120,212) rgb(199,224,244) rgb(199,224,244)",
18
+ borderImage: "initial",
19
+ animationName: "spin",
20
+ animationDuration: "1.3s",
21
+ animationIterationCount: "infinite",
22
+ animationTimingFunction: "cubic-bezier(0.53, 0.21, 0.29, 0.67)",
23
+ width: props.size || 20,
24
+ height: props.size || 20
25
+ };
26
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("style", null, `
27
+ @keyframes spin {
28
+ 0% {
29
+ transform: rotate(0deg);
30
+ }
31
+ 100% {
32
+ transform: rotate(360deg);
33
+ }
34
+ }
35
+ `), /*#__PURE__*/_react.default.createElement("div", {
36
+ className: "spinner",
37
+ style: spinnerStyle
38
+ }));
39
+ };
40
+ var _default = Spinner;
41
+ exports.default = _default;
@@ -10,4 +10,7 @@ export const VideoIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3
10
10
  export const VisioIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciDQogICAgdmlld0JveD0iMCAwIDIwNDggMjA0OCINCiAgICB3aWR0aD0iMTJweCINCiAgICBoZWlnaHQ9IjEycHgiPg0KICAgIDxwYXRoIGQ9Ik0yMDQ4IDQ3NXYxNDQ1cTAgMjctMTAgNTB0LTI3IDQwLTQxIDI4LTUwIDEwSDY0MHEtMjcgMC01MC0xMHQtNDAtMjctMjgtNDEtMTAtNTB2LTI1NkgxMTVxLTI0IDAtNDQtOXQtMzctMjUtMjUtMzYtOS00NVY2MjdxMC0yNCA5LTQ0dDI1LTM3IDM2LTI1IDQ1LTloMzk3VjEyOHEwLTI3IDEwLTUwdDI3LTQwIDQxLTI4IDUwLTEwaDkzM3EyNiAwIDQ5IDl0NDIgMjhsMzQ3IDM0N3ExOCAxOCAyNyA0MXQxMCA1MHptLTM4NC0yNTZ2MTY1aDE2NWwtMTY1LTE2NXpNNDkzIDE0MjRoMTYzbDI1NS02NzJINzQ1bC0xNDcgNDI3cS01IDE2LTEwIDMxdC0xMSAzMXEtNDEtMTIzLTgyLTI0NHQtODQtMjQ1SDI0MWwyNDggNjYyIDQgMTB6bTE0NyA0OTZoMTI4MFY1MTJoLTI1NnEtMjcgMC01MC0xMHQtNDAtMjctMjgtNDEtMTAtNTBWMTI4SDY0MHYzODRoMzk3cTI0IDAgNDQgOXQzNyAyNSAyNSAzNiA5IDQ1djkyMnEwIDI0LTkgNDR0LTI1IDM3LTM2IDI1LTQ1IDlINjQwdjI1NnptOTYwLTEyODBsMTkyIDE5Mi0xMjggMTI4djQ0OGgtMjU2djEyOGgtMTI4di0zODRoMTI4djEyOGgxMjhWOTYwbC0xMjgtMTI4IDE5Mi0xOTJ6IiAvPg0KPC9zdmc+";
11
11
  export const WordIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciDQogICAgdmlld0JveD0iMCAwIDIwNDggMjA0OCINCiAgICB3aWR0aD0iMTJweCINCiAgICBoZWlnaHQ9IjEycHgiPg0KICAgIDxwYXRoIGQ9Ik0yMDQ4IDQ3NXYxNDQ1cTAgMjctMTAgNTB0LTI3IDQwLTQxIDI4LTUwIDEwSDY0MHEtMjcgMC01MC0xMHQtNDAtMjctMjgtNDEtMTAtNTB2LTI1NkgxMTVxLTI0IDAtNDQtOXQtMzctMjUtMjUtMzYtOS00NVY2MjdxMC0yNCA5LTQ0dDI1LTM3IDM2LTI1IDQ1LTloMzk3VjEyOHEwLTI3IDEwLTUwdDI3LTQwIDQxLTI4IDUwLTEwaDkzM3EyNiAwIDQ5IDl0NDIgMjhsMzQ3IDM0N3ExOCAxOCAyNyA0MXQxMCA1MHptLTM4NC0yNTZ2MTY1aDE2NWwtMTY1LTE2NXpNMzIwIDE0MjRoMTYxcTItOCA5LTQzdDE4LTgzIDIxLTEwMyAyMi0xMDEgMTYtNzYgOC0zMWw3IDMwcTcgMzAgMTcgNzd0MjMgMTAwIDIzIDEwMyAxOSA4NCAxMCA0M2gxNjBsMTQ4LTY3Mkg4MzRsLTgwIDQzOC0xMDAtNDM4SDUwMmwtOTYgNDQwLTg2LTQ0MEgxNzBsMTUwIDY3MnptMzIwIDQ5NmgxMjgwVjUxMmgtMjU2cS0yNyAwLTUwLTEwdC00MC0yNy0yOC00MS0xMC01MFYxMjhINjQwdjM4NGgzOTdxMjQgMCA0NCA5dDM3IDI1IDI1IDM2IDkgNDV2OTIycTAgMjQtOSA0NHQtMjUgMzctMzYgMjUtNDUgOUg2NDB2MjU2em02NDAtMTAyNFY3NjhoNTEydjEyOGgtNTEyem0wIDI1NnYtMTI4aDUxMnYxMjhoLTUxMnptMCAyNTZ2LTEyOGg1MTJ2MTI4aC01MTJ6IiAvPg0KPC9zdmc+";
12
12
  export const AlertIcon = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjwhRE9DVFlQRSBzdmcgIFBVQkxJQyAnLS8vVzNDLy9EVEQgU1ZHIDEuMC8vRU4nICAnaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMtU1ZHLTIwMDEwOTA0L0RURC9zdmcxMC5kdGQnPjxzdmcgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIGlkPSJMYXllcl8xIiB2ZXJzaW9uPSIxLjAiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PHBhdGggZD0iTTEzLDE3aC0ydi0yaDJWMTd6IE0xMywxM2gtMlY3aDJWMTN6Ii8+PGc+PHBhdGggZD0iTTEyLDRjNC40LDAsOCwzLjYsOCw4cy0zLjYsOC04LDhzLTgtMy42LTgtOFM3LjYsNCwxMiw0IE0xMiwyQzYuNSwyLDIsNi41LDIsMTJjMCw1LjUsNC41LDEwLDEwLDEwczEwLTQuNSwxMC0xMCAgIEMyMiw2LjUsMTcuNSwyLDEyLDJMMTIsMnoiLz48L2c+PC9zdmc+";
13
- export const NotificationAlertIcon = "data:image/svg+xml;base64,PHN2ZyBhcmlhLWxhYmVsPSJXYXJuaW5nIiBoZWlnaHQ9IjE5IiB2aWV3Qm94PSIwIDAgMTkgMTkiIHdpZHRoPSIxOSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNOS4zNzUgMEMxMC4yNDA5IDAgMTEuMDcxIDAuMTEwNjc3IDExLjg2NTIgMC4zMzIwMzFDMTIuNjY2IDAuNTUzMzg1IDEzLjQxNDcgMC44NjkxNDEgMTQuMTExMyAxLjI3OTNDMTQuODA3OSAxLjY4Mjk0IDE1LjQzOTUgMi4xNzEyMiAxNi4wMDU5IDIuNzQ0MTRDMTYuNTc4OCAzLjMxMDU1IDE3LjA2NzEgMy45NDIwNiAxNy40NzA3IDQuNjM4NjdDMTcuODgwOSA1LjMzNTI5IDE4LjE5NjYgNi4wODM5OCAxOC40MTggNi44ODQ3N0MxOC42MzkzIDcuNjc5MDQgMTguNzUgOC41MDkxMSAxOC43NSA5LjM3NUMxOC43NSAxMC4yNDA5IDE4LjYzOTMgMTEuMDc0MiAxOC40MTggMTEuODc1QzE4LjE5NjYgMTIuNjY5MyAxNy44ODA5IDEzLjQxNDcgMTcuNDcwNyAxNC4xMTEzQzE3LjA2NzEgMTQuODA3OSAxNi41Nzg4IDE1LjQ0MjcgMTYuMDA1OSAxNi4wMTU2QzE1LjQzOTUgMTYuNTgyIDE0LjgwNzkgMTcuMDcwMyAxNC4xMTEzIDE3LjQ4MDVDMTMuNDE0NyAxNy44ODQxIDEyLjY2NiAxOC4xOTY2IDExLjg2NTIgMTguNDE4QzExLjA3MSAxOC42MzkzIDEwLjI0MDkgMTguNzUgOS4zNzUgMTguNzVDOC41MDkxMSAxOC43NSA3LjY3NTc4IDE4LjYzOTMgNi44NzUgMTguNDE4QzYuMDgwNzMgMTguMTk2NiA1LjMzNTI5IDE3Ljg4NDEgNC42Mzg2NyAxNy40ODA1QzMuOTQyMDYgMTcuMDcwMyAzLjMwNzI5IDE2LjU4MiAyLjczNDM4IDE2LjAxNTZDMi4xNjc5NyAxNS40NDI3IDEuNjc5NjkgMTQuODA3OSAxLjI2OTUzIDE0LjExMTNDMC44NjU4ODUgMTMuNDE0NyAwLjU1MzM4NSAxMi42NjkzIDAuMzMyMDMxIDExLjg3NUMwLjExMDY3NyAxMS4wNzQyIDAgMTAuMjQwOSAwIDkuMzc1QzAgOC41MDkxMSAwLjExMDY3NyA3LjY3OTA0IDAuMzMyMDMxIDYuODg0NzdDMC41NTMzODUgNi4wODM5OCAwLjg2NTg4NSA1LjMzNTI5IDEuMjY5NTMgNC42Mzg2N0MxLjY3OTY5IDMuOTQyMDYgMi4xNjc5NyAzLjMxMDU1IDIuNzM0MzggMi43NDQxNEMzLjMwNzI5IDIuMTcxMjIgMy45NDIwNiAxLjY4Mjk0IDQuNjM4NjcgMS4yNzkzQzUuMzM1MjkgMC44NjkxNDEgNi4wODA3MyAwLjU1MzM4NSA2Ljg3NSAwLjMzMjAzMUM3LjY3NTc4IDAuMTEwNjc3IDguNTA5MTEgMCA5LjM3NSAwWk05LjM3NSAxNy41QzEwLjExNzIgMTcuNSAxMC44MzMzIDE3LjQwMjMgMTEuNTIzNCAxNy4yMDdDMTIuMjIwMSAxNy4wMTE3IDEyLjg2NzggMTYuNzM4MyAxMy40NjY4IDE2LjM4NjdDMTQuMDcyMyAxNi4wMzUyIDE0LjYyMjQgMTUuNjEyIDE1LjExNzIgMTUuMTE3MkMxNS42MTIgMTQuNjIyNCAxNi4wMzUyIDE0LjA3NTUgMTYuMzg2NyAxMy40NzY2QzE2LjczODMgMTIuODcxMSAxNy4wMTE3IDEyLjIyMzMgMTcuMjA3IDExLjUzMzJDMTcuNDAyMyAxMC44NDMxIDE3LjUgMTAuMTIzNyAxNy41IDkuMzc1QzE3LjUgOC42MzI4MSAxNy40MDIzIDcuOTE2NjcgMTcuMjA3IDcuMjI2NTZDMTcuMDExNyA2LjUyOTk1IDE2LjczODMgNS44ODIxNiAxNi4zODY3IDUuMjgzMkMxNi4wMzUyIDQuNjc3NzMgMTUuNjEyIDQuMTI3NiAxNS4xMTcyIDMuNjMyODFDMTQuNjIyNCAzLjEzODAyIDE0LjA3MjMgMi43MTQ4NCAxMy40NjY4IDIuMzYzMjhDMTIuODY3OCAyLjAxMTcyIDEyLjIyMDEgMS43MzgyOCAxMS41MjM0IDEuNTQyOTdDMTAuODMzMyAxLjM0NzY2IDEwLjExNzIgMS4yNSA5LjM3NSAxLjI1QzguNjI2MyAxLjI1IDcuOTA2OSAxLjM0NzY2IDcuMjE2OCAxLjU0Mjk3QzYuNTI2NjkgMS43MzgyOCA1Ljg3ODkxIDIuMDExNzIgNS4yNzM0NCAyLjM2MzI4QzQuNjc0NDggMi43MTQ4NCA0LjEyNzYgMy4xMzgwMiAzLjYzMjgxIDMuNjMyODFDMy4xMzgwMiA0LjEyNzYgMi43MTQ4NCA0LjY3NzczIDIuMzYzMjggNS4yODMyQzIuMDExNzIgNS44ODIxNiAxLjczODI4IDYuNTI5OTUgMS41NDI5NyA3LjIyNjU2QzEuMzQ3NjYgNy45MTY2NyAxLjI1IDguNjMyODEgMS4yNSA5LjM3NUMxLjI1IDEwLjExNzIgMS4zNDc2NiAxMC44MzY2IDEuNTQyOTcgMTEuNTMzMkMxLjczODI4IDEyLjIyMzMgMi4wMTE3MiAxMi44NzExIDIuMzYzMjggMTMuNDc2NkMyLjcxNDg0IDE0LjA3NTUgMy4xMzgwMiAxNC42MjI0IDMuNjMyODEgMTUuMTE3MkM0LjEyNzYgMTUuNjEyIDQuNjc0NDggMTYuMDM1MiA1LjI3MzQ0IDE2LjM4NjdDNS44Nzg5MSAxNi43MzgzIDYuNTI2NjkgMTcuMDExNyA3LjIxNjggMTcuMjA3QzcuOTA2OSAxNy40MDIzIDguNjI2MyAxNy41IDkuMzc1IDE3LjVaTTguNzUgNUgxMFYxMS4yNUg4Ljc1VjVaTTguNzUgMTIuNUgxMFYxMy43NUg4Ljc1VjEyLjVaIj48L3BhdGg+PC9zdmc+";
13
+ export const NotificationAlertIcon = "data:image/svg+xml;base64,PHN2ZyBhcmlhLWxhYmVsPSJXYXJuaW5nIiBoZWlnaHQ9IjE5IiB2aWV3Qm94PSIwIDAgMTkgMTkiIHdpZHRoPSIxOSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNOS4zNzUgMEMxMC4yNDA5IDAgMTEuMDcxIDAuMTEwNjc3IDExLjg2NTIgMC4zMzIwMzFDMTIuNjY2IDAuNTUzMzg1IDEzLjQxNDcgMC44NjkxNDEgMTQuMTExMyAxLjI3OTNDMTQuODA3OSAxLjY4Mjk0IDE1LjQzOTUgMi4xNzEyMiAxNi4wMDU5IDIuNzQ0MTRDMTYuNTc4OCAzLjMxMDU1IDE3LjA2NzEgMy45NDIwNiAxNy40NzA3IDQuNjM4NjdDMTcuODgwOSA1LjMzNTI5IDE4LjE5NjYgNi4wODM5OCAxOC40MTggNi44ODQ3N0MxOC42MzkzIDcuNjc5MDQgMTguNzUgOC41MDkxMSAxOC43NSA5LjM3NUMxOC43NSAxMC4yNDA5IDE4LjYzOTMgMTEuMDc0MiAxOC40MTggMTEuODc1QzE4LjE5NjYgMTIuNjY5MyAxNy44ODA5IDEzLjQxNDcgMTcuNDcwNyAxNC4xMTEzQzE3LjA2NzEgMTQuODA3OSAxNi41Nzg4IDE1LjQ0MjcgMTYuMDA1OSAxNi4wMTU2QzE1LjQzOTUgMTYuNTgyIDE0LjgwNzkgMTcuMDcwMyAxNC4xMTEzIDE3LjQ4MDVDMTMuNDE0NyAxNy44ODQxIDEyLjY2NiAxOC4xOTY2IDExLjg2NTIgMTguNDE4QzExLjA3MSAxOC42MzkzIDEwLjI0MDkgMTguNzUgOS4zNzUgMTguNzVDOC41MDkxMSAxOC43NSA3LjY3NTc4IDE4LjYzOTMgNi44NzUgMTguNDE4QzYuMDgwNzMgMTguMTk2NiA1LjMzNTI5IDE3Ljg4NDEgNC42Mzg2NyAxNy40ODA1QzMuOTQyMDYgMTcuMDcwMyAzLjMwNzI5IDE2LjU4MiAyLjczNDM4IDE2LjAxNTZDMi4xNjc5NyAxNS40NDI3IDEuNjc5NjkgMTQuODA3OSAxLjI2OTUzIDE0LjExMTNDMC44NjU4ODUgMTMuNDE0NyAwLjU1MzM4NSAxMi42NjkzIDAuMzMyMDMxIDExLjg3NUMwLjExMDY3NyAxMS4wNzQyIDAgMTAuMjQwOSAwIDkuMzc1QzAgOC41MDkxMSAwLjExMDY3NyA3LjY3OTA0IDAuMzMyMDMxIDYuODg0NzdDMC41NTMzODUgNi4wODM5OCAwLjg2NTg4NSA1LjMzNTI5IDEuMjY5NTMgNC42Mzg2N0MxLjY3OTY5IDMuOTQyMDYgMi4xNjc5NyAzLjMxMDU1IDIuNzM0MzggMi43NDQxNEMzLjMwNzI5IDIuMTcxMjIgMy45NDIwNiAxLjY4Mjk0IDQuNjM4NjcgMS4yNzkzQzUuMzM1MjkgMC44NjkxNDEgNi4wODA3MyAwLjU1MzM4NSA2Ljg3NSAwLjMzMjAzMUM3LjY3NTc4IDAuMTEwNjc3IDguNTA5MTEgMCA5LjM3NSAwWk05LjM3NSAxNy41QzEwLjExNzIgMTcuNSAxMC44MzMzIDE3LjQwMjMgMTEuNTIzNCAxNy4yMDdDMTIuMjIwMSAxNy4wMTE3IDEyLjg2NzggMTYuNzM4MyAxMy40NjY4IDE2LjM4NjdDMTQuMDcyMyAxNi4wMzUyIDE0LjYyMjQgMTUuNjEyIDE1LjExNzIgMTUuMTE3MkMxNS42MTIgMTQuNjIyNCAxNi4wMzUyIDE0LjA3NTUgMTYuMzg2NyAxMy40NzY2QzE2LjczODMgMTIuODcxMSAxNy4wMTE3IDEyLjIyMzMgMTcuMjA3IDExLjUzMzJDMTcuNDAyMyAxMC44NDMxIDE3LjUgMTAuMTIzNyAxNy41IDkuMzc1QzE3LjUgOC42MzI4MSAxNy40MDIzIDcuOTE2NjcgMTcuMjA3IDcuMjI2NTZDMTcuMDExNyA2LjUyOTk1IDE2LjczODMgNS44ODIxNiAxNi4zODY3IDUuMjgzMkMxNi4wMzUyIDQuNjc3NzMgMTUuNjEyIDQuMTI3NiAxNS4xMTcyIDMuNjMyODFDMTQuNjIyNCAzLjEzODAyIDE0LjA3MjMgMi43MTQ4NCAxMy40NjY4IDIuMzYzMjhDMTIuODY3OCAyLjAxMTcyIDEyLjIyMDEgMS43MzgyOCAxMS41MjM0IDEuNTQyOTdDMTAuODMzMyAxLjM0NzY2IDEwLjExNzIgMS4yNSA5LjM3NSAxLjI1QzguNjI2MyAxLjI1IDcuOTA2OSAxLjM0NzY2IDcuMjE2OCAxLjU0Mjk3QzYuNTI2NjkgMS43MzgyOCA1Ljg3ODkxIDIuMDExNzIgNS4yNzM0NCAyLjM2MzI4QzQuNjc0NDggMi43MTQ4NCA0LjEyNzYgMy4xMzgwMiAzLjYzMjgxIDMuNjMyODFDMy4xMzgwMiA0LjEyNzYgMi43MTQ4NCA0LjY3NzczIDIuMzYzMjggNS4yODMyQzIuMDExNzIgNS44ODIxNiAxLjczODI4IDYuNTI5OTUgMS41NDI5NyA3LjIyNjU2QzEuMzQ3NjYgNy45MTY2NyAxLjI1IDguNjMyODEgMS4yNSA5LjM3NUMxLjI1IDEwLjExNzIgMS4zNDc2NiAxMC44MzY2IDEuNTQyOTcgMTEuNTMzMkMxLjczODI4IDEyLjIyMzMgMi4wMTE3MiAxMi44NzExIDIuMzYzMjggMTMuNDc2NkMyLjcxNDg0IDE0LjA3NTUgMy4xMzgwMiAxNC42MjI0IDMuNjMyODEgMTUuMTE3MkM0LjEyNzYgMTUuNjEyIDQuNjc0NDggMTYuMDM1MiA1LjI3MzQ0IDE2LjM4NjdDNS44Nzg5MSAxNi43MzgzIDYuNTI2NjkgMTcuMDExNyA3LjIxNjggMTcuMjA3QzcuOTA2OSAxNy40MDIzIDguNjI2MyAxNy41IDkuMzc1IDE3LjVaTTguNzUgNUgxMFYxMS4yNUg4Ljc1VjVaTTguNzUgMTIuNUgxMFYxMy43NUg4Ljc1VjEyLjVaIj48L3BhdGg+PC9zdmc+";
14
+ export const FileScanInProgressIcon = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgPHBhdGggZD0iTTYgMkM0Ljg5NTQzIDIgNCAyLjg5NTQzIDQgNFY5LjIwNzAzQzQuMzIyMjggOS4xMTU4OCA0LjY1NjU5IDkuMDUzMzcgNSA5LjAyMjQyVjRDNSAzLjQ0NzcyIDUuNDQ3NzIgMyA2IDNIMTBWNi41QzEwIDcuMzI4NDMgMTAuNjcxNiA4IDExLjUgOEgxNVYxNkMxNSAxNi41NTIzIDE0LjU1MjMgMTcgMTQgMTdIMTAuNDAwM0MxMC4yMTc0IDE3LjM1NzggOS45OTY0NyAxNy42OTI5IDkuNzQyODQgMThIMTRDMTUuMTA0NiAxOCAxNiAxNy4xMDQ2IDE2IDE2VjcuNDE0MjFDMTYgNy4wMTYzOSAxNS44NDIgNi42MzQ4NiAxNS41NjA3IDYuMzUzNTVMMTEuNjQ2NCAyLjQzOTM0QzExLjM2NTEgMi4xNTgwNCAxMC45ODM2IDIgMTAuNTg1OCAySDZaTTE0Ljc5MjkgN0gxMS41QzExLjIyMzkgNyAxMSA2Ljc3NjE0IDExIDYuNVYzLjIwNzExTDE0Ljc5MjkgN1pNMSAxNC41QzEgMTYuOTg1MyAzLjAxNDcyIDE5IDUuNSAxOUM3Ljk4NTI4IDE5IDEwIDE2Ljk4NTMgMTAgMTQuNUMxMCAxMi4wMTQ3IDcuOTg1MjggMTAgNS41IDEwQzMuMDE0NzIgMTAgMSAxMi4wMTQ3IDEgMTQuNVpNNy41IDExLjVDNy43NzYxNCAxMS41IDggMTEuNzIzOSA4IDEyVjEzLjVDOCAxMy43NzYxIDcuNzc2MTQgMTQgNy41IDE0SDZDNS43MjM4NiAxNCA1LjUgMTMuNzc2MSA1LjUgMTMuNUM1LjUgMTMuMjIzOSA1LjcyMzg2IDEzIDYgMTNINi40NjgyMUM2LjQxNzg3IDEyLjk3MjIgNi4zNjYyOCAxMi45NDY0IDYuMzEzNTUgMTIuOTIzQzYuMDY4MjQgMTIuODEzNyA1LjgwMzQ0IDEyLjc1NSA1LjUzNDk1IDEyLjc1MDNDNS4yNjY0NiAxMi43NDU2IDQuOTk5NzcgMTIuNzk1IDQuNzUwNzkgMTIuODk1NkM0LjUwMTggMTIuOTk2MiA0LjI3NTYzIDEzLjE0NTkgNC4wODU3NSAxMy4zMzU4QzMuODkwNDggMTMuNTMxIDMuNTczOSAxMy41MzEgMy4zNzg2NCAxMy4zMzU4QzMuMTgzMzggMTMuMTQwNSAzLjE4MzM4IDEyLjgyMzkgMy4zNzg2NCAxMi42Mjg3QzMuNjYzNDYgMTIuMzQzOSA0LjAwMjczIDEyLjExOTMgNC4zNzYyIDExLjk2ODRDNC43NDk2NyAxMS44MTc1IDUuMTQ5NzEgMTEuNzQzNCA1LjU1MjQ1IDExLjc1MDVDNS45NTUxOCAxMS43NTc1IDYuMzUyMzggMTEuODQ1NiA2LjcyMDM0IDEyLjAwOTRDNi44MTYxNyAxMi4wNTIxIDYuOTA5NTEgMTIuMDk5NyA3IDEyLjE1MTlWMTJDNyAxMS43MjM5IDcuMjIzODYgMTEuNSA3LjUgMTEuNVpNNi42MjM4IDE3LjAzMTZDNi4yNTAzMyAxNy4xODI1IDUuODUwMjkgMTcuMjU2NiA1LjQ0NzU1IDE3LjI0OTVDNS4wNDQ4MiAxNy4yNDI1IDQuNjQ3NjIgMTcuMTU0NCA0LjI3OTY2IDE2Ljk5MDZDNC4xODM4MyAxNi45NDc5IDQuMDkwNDkgMTYuOTAwMyA0IDE2Ljg0ODFWMTdDNCAxNy4yNzYxIDMuNzc2MTQgMTcuNSAzLjUgMTcuNUMzLjIyMzg2IDE3LjUgMyAxNy4yNzYxIDMgMTdWMTUuNUMzIDE1LjIyMzkgMy4yMjM4NiAxNSAzLjUgMTVINUM1LjI3NjE0IDE1IDUuNSAxNS4yMjM5IDUuNSAxNS41QzUuNSAxNS43NzYxIDUuMjc2MTQgMTYgNSAxNkg0LjUzMTc5QzQuNTgyMTMgMTYuMDI3OCA0LjYzMzcyIDE2LjA1MzYgNC42ODY0NSAxNi4wNzdDNC45MzE3NiAxNi4xODYzIDUuMTk2NTYgMTYuMjQ1IDUuNDY1MDUgMTYuMjQ5N0M1LjczMzU0IDE2LjI1NDQgNi4wMDAyMyAxNi4yMDUgNi4yNDkyMSAxNi4xMDQ0QzYuNDk4MiAxNi4wMDM4IDYuNzI0MzcgMTUuODU0MSA2LjkxNDI1IDE1LjY2NDJDNy4xMDk1MSAxNS40NjkgNy40MjYxIDE1LjQ2OSA3LjYyMTM2IDE1LjY2NDJDNy44MTY2MiAxNS44NTk1IDcuODE2NjIgMTYuMTc2MSA3LjYyMTM2IDE2LjM3MTNDNy4zMzY1NCAxNi42NTYxIDYuOTk3MjcgMTYuODgwNyA2LjYyMzggMTcuMDMxNloiIGZpbGw9IiMyMTIxMjEiIC8+DQo8L3N2Zz4=";
15
+ export const MaliciousFileIcon = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgPHBhdGggZD0iTTQgNEM0IDIuODk1NDMgNC44OTU0MyAyIDYgMkgxMC41ODU4QzEwLjk4MzYgMiAxMS4zNjUxIDIuMTU4MDQgMTEuNjQ2NCAyLjQzOTM0TDE1LjU2MDcgNi4zNTM1NUMxNS44NDIgNi42MzQ4NiAxNiA3LjAxNjM5IDE2IDcuNDE0MjFWMTZDMTYgMTcuMTA0NiAxNS4xMDQ2IDE4IDE0IDE4SDkuNzQyODRDOS45OTY0NyAxNy42OTI5IDEwLjIxNzQgMTcuMzU3OCAxMC40MDAzIDE3SDE0QzE0LjU1MjMgMTcgMTUgMTYuNTUyMyAxNSAxNlY4SDExLjVDMTAuNjcxNiA4IDEwIDcuMzI4NDMgMTAgNi41VjNINkM1LjQ0NzcyIDMgNSAzLjQ0NzcyIDUgNFY5LjAyMjQyQzQuNjU2NTkgOS4wNTMzNyA0LjMyMjI4IDkuMTE1ODggNCA5LjIwNzAzVjRaTTExIDMuMjA3MTFWNi41QzExIDYuNzc2MTQgMTEuMjIzOSA3IDExLjUgN0gxNC43OTI5TDExIDMuMjA3MTFaTTguNjgxOTkgMTcuNjgyQzYuOTI0NjIgMTkuNDM5NCA0LjA3NTM5IDE5LjQzOTQgMi4zMTgwMiAxNy42ODJDMC41NjA2NTkgMTUuOTI0NiAwLjU2MDY1OSAxMy4wNzU0IDIuMzE4MDIgMTEuMzE4QzQuMDc1MzkgOS41NjA2NiA2LjkyNDYyIDkuNTYwNjYgOC42ODE5OSAxMS4zMThDMTAuNDM5NCAxMy4wNzU0IDEwLjQzOTQgMTUuOTI0NiA4LjY4MTk5IDE3LjY4MlpNMy40MDM3NSAxNy4zMDM0QzQuNzc0NjYgMTguMzMxMiA2LjcyODA5IDE4LjIyMTcgNy45NzQ4OCAxNi45NzQ5QzkuMjIxNjcgMTUuNzI4MSA5LjMzMTE2IDEzLjc3NDcgOC4zMDMzNyAxMi40MDM3TDMuNDAzNzUgMTcuMzAzNFpNMi42OTY2NCAxNi41OTYzTDcuNTk2MjYgMTEuNjk2NkM2LjIyNTM1IDEwLjY2ODggNC4yNzE5MiAxMC43NzgzIDMuMDI1MTMgMTIuMDI1MUMxLjc3ODM0IDEzLjI3MTkgMS42Njg4NSAxNS4yMjU0IDIuNjk2NjQgMTYuNTk2M1oiIGZpbGw9IiMyMTIxMjEiIC8+DQo8L3N2Zz4=";
16
+ export const CrossIcon = "data:image/svg+xml;base64,PHN2ZyBjbGFzcz0iIiBmaWxsPSJyZWQiIHN0cm9rZS13aWR0aD0iMyIgZm9jdXNhYmxlPSJmYWxzZSIgaGVpZ2h0PSIxNCIgcm9sZT0icHJlc2VudGF0aW9uIiB2aWV3Qm94PSIwIDAgMTQgMTQiIHdpZHRoPSIxNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNy43MTA5NCA3TDEzLjEwMTYgMTIuMzk4NEwxMi4zOTg0IDEzLjEwMTZMNyA3LjcxMDk0TDEuNjAxNTYgMTMuMTAxNkwwLjg5ODQzOCAxMi4zOTg0TDYuMjg5MDYgN0wwLjg5ODQzOCAxLjYwMTU2TDEuNjAxNTYgMC44OTg0MzhMNyA2LjI4OTA2TDEyLjM5ODQgMC44OTg0MzhMMTMuMTAxNiAxLjYwMTU2TDcuNzEwOTQgN1oiPjwvcGF0aD48L3N2Zz4=";
@@ -23,6 +23,11 @@ export const createAdapter = async chatSDK => {
23
23
  }
24
24
  }
25
25
  }
26
+ },
27
+ ACSAdapter: {
28
+ fileScan: {
29
+ disabled: false
30
+ }
26
31
  }
27
32
  };
28
33
  let adapter = await chatSDK.createChatAdapter(chatAdapterOptionalParams);
@@ -14,20 +14,22 @@ import { defaultWebChatContainerStatefulProps } from "../../webchatcontainerstat
14
14
  const prepareEndChat = async (props, chatSDK, state, dispatch, setAdapter, setWebChatStyles, adapter, uwid) => {
15
15
  try {
16
16
  var _conversationDetails$, _state$domainStates, _state$domainStates2;
17
+ // Use Case: If call is ongoing, end the call by simulating end call button click
18
+ endVoiceVideoCallIfOngoing(chatSDK, dispatch);
17
19
  const conversationDetails = await getConversationDetailsCall(chatSDK);
18
20
 
19
- // Use Case : When post chat is not configured
21
+ // Use Case: When post chat is not configured
20
22
  if ((conversationDetails === null || conversationDetails === void 0 ? void 0 : (_conversationDetails$ = conversationDetails.canRenderPostChat) === null || _conversationDetails$ === void 0 ? void 0 : _conversationDetails$.toLowerCase()) === Constants.false) {
21
23
  var _state$appStates;
22
24
  // If ended by customer, just close chat
23
25
  if ((state === null || state === void 0 ? void 0 : (_state$appStates = state.appStates) === null || _state$appStates === void 0 ? void 0 : _state$appStates.conversationEndedBy) === ConversationEndEntity.Customer) {
24
26
  await endChat(props, chatSDK, state, dispatch, setAdapter, setWebChatStyles, adapter, false, false, true, uwid);
25
27
  }
26
- //Use Case: If ended by Agent, stay chat in InActive state
28
+ // Use Case: If ended by Agent, stay chat in InActive state
27
29
  return;
28
30
  }
29
31
 
30
- // Use Case : Can render post chat scenarios
32
+ // Use Case: Can render post chat scenarios
31
33
  await getPostChatContext(chatSDK, state, dispatch);
32
34
 
33
35
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -135,6 +137,28 @@ const endChat = async function (props, chatSDK, state, dispatch, setAdapter, set
135
137
  });
136
138
  }
137
139
  };
140
+ const callingStateCleanUp = async dispatch => {
141
+ dispatch({
142
+ type: LiveChatWidgetActionType.SHOW_CALLING_CONTAINER,
143
+ payload: false
144
+ });
145
+ dispatch({
146
+ type: LiveChatWidgetActionType.SET_INCOMING_CALL,
147
+ payload: true
148
+ });
149
+ dispatch({
150
+ type: LiveChatWidgetActionType.DISABLE_VIDEO_CALL,
151
+ payload: true
152
+ });
153
+ dispatch({
154
+ type: LiveChatWidgetActionType.DISABLE_LOCAL_VIDEO,
155
+ payload: true
156
+ });
157
+ dispatch({
158
+ type: LiveChatWidgetActionType.DISABLE_REMOTE_VIDEO,
159
+ payload: true
160
+ });
161
+ };
138
162
  const endChatStateCleanUp = async dispatch => {
139
163
  // Need to clear these states immediately when chat ended from OC.
140
164
  dispatch({
@@ -185,6 +209,30 @@ const closeChatStateCleanUp = async dispatch => {
185
209
  }
186
210
  });
187
211
  };
212
+
213
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
214
+ export const endVoiceVideoCallIfOngoing = async (chatSDK, dispatch) => {
215
+ let callId = "";
216
+ try {
217
+ const voiceVideoCallingSdk = await chatSDK.getVoiceVideoCalling();
218
+ if (voiceVideoCallingSdk && voiceVideoCallingSdk.isInACall()) {
219
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
220
+ callId = voiceVideoCallingSdk.callId;
221
+ voiceVideoCallingSdk.stopCall();
222
+ TelemetryHelper.logCallingEvent(LogLevel.INFO, {
223
+ Event: TelemetryEvent.EndCallButtonClick
224
+ }, callId);
225
+ callingStateCleanUp(dispatch);
226
+ }
227
+ } catch (error) {
228
+ TelemetryHelper.logCallingEvent(LogLevel.ERROR, {
229
+ Event: TelemetryEvent.EndCallButtonClickException,
230
+ ExceptionDetails: {
231
+ exception: `Failed to End Call: ${error}`
232
+ }
233
+ }, callId);
234
+ }
235
+ };
188
236
  const closeChatWidget = (dispatch, props, state) => {
189
237
  var _state$appStates3;
190
238
  if (state !== null && state !== void 0 && (_state$appStates3 = state.appStates) !== null && _state$appStates3 !== void 0 && _state$appStates3.hideStartChatButton) {
@@ -50,7 +50,7 @@ const prepareStartChat = async (props, chatSDK, state, dispatch, setAdapter) =>
50
50
  const isPreChatEnabledInProactiveChat = state.appStates.proactiveChatStates.proactiveChatEnablePrechat;
51
51
 
52
52
  //Setting PreChat and intiate chat
53
- await setPreChatAndInitiateChat(chatSDK, dispatch, setAdapter, isProactiveChat, isPreChatEnabledInProactiveChat, undefined, props);
53
+ await setPreChatAndInitiateChat(chatSDK, dispatch, setAdapter, isProactiveChat, isPreChatEnabledInProactiveChat, state, props);
54
54
  };
55
55
 
56
56
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -318,7 +318,27 @@ export const LiveChatWidgetStateful = props => {
318
318
  });
319
319
 
320
320
  // Start chat from SDK Event
321
- BroadcastService.getMessageByEventName(BroadcastEvent.StartChat).subscribe(() => {
321
+ BroadcastService.getMessageByEventName(BroadcastEvent.StartChat).subscribe(msg => {
322
+ var _msg$payload4;
323
+ let stateWithUpdatedContext = state;
324
+ if (msg !== null && msg !== void 0 && (_msg$payload4 = msg.payload) !== null && _msg$payload4 !== void 0 && _msg$payload4.customContext) {
325
+ var _msg$payload5, _msg$payload6;
326
+ TelemetryHelper.logActionEvent(LogLevel.INFO, {
327
+ Event: TelemetryEvent.CustomContextReceived,
328
+ Description: "CustomContext received through startChat event."
329
+ });
330
+ dispatch({
331
+ type: LiveChatWidgetActionType.SET_CUSTOM_CONTEXT,
332
+ payload: msg === null || msg === void 0 ? void 0 : (_msg$payload5 = msg.payload) === null || _msg$payload5 === void 0 ? void 0 : _msg$payload5.customContext
333
+ });
334
+ stateWithUpdatedContext = {
335
+ ...state,
336
+ domainStates: {
337
+ ...state.domainStates,
338
+ customContext: msg === null || msg === void 0 ? void 0 : (_msg$payload6 = msg.payload) === null || _msg$payload6 === void 0 ? void 0 : _msg$payload6.customContext
339
+ }
340
+ };
341
+ }
322
342
  TelemetryHelper.logActionEvent(LogLevel.INFO, {
323
343
  Event: TelemetryEvent.StartChatEventRecevied,
324
344
  Description: "Start chat event received."
@@ -332,7 +352,7 @@ export const LiveChatWidgetStateful = props => {
332
352
  BroadcastService.postMessage({
333
353
  eventName: BroadcastEvent.ChatInitiated
334
354
  });
335
- prepareStartChat(props, chatSDK, state, dispatch, setAdapter);
355
+ prepareStartChat(props, chatSDK, stateWithUpdatedContext, dispatch, setAdapter);
336
356
  return;
337
357
  }
338
358
 
@@ -344,7 +364,7 @@ export const LiveChatWidgetStateful = props => {
344
364
  BroadcastService.postMessage({
345
365
  eventName: BroadcastEvent.ChatInitiated
346
366
  });
347
- prepareStartChat(props, chatSDK, state, dispatch, setAdapter);
367
+ prepareStartChat(props, chatSDK, stateWithUpdatedContext, dispatch, setAdapter);
348
368
  return;
349
369
  }
350
370
 
@@ -1,8 +1,8 @@
1
- /*
1
+ /*
2
2
  MIDDLEWARE_BANNER_FILE parameters:
3
3
  {0} = File limit size
4
4
  {1} = File extension
5
- {2} = File name
5
+ {2} = File name
6
6
  */
7
7
 
8
8
  export const defaultMiddlewareLocalizedTexts = {
@@ -25,5 +25,6 @@ export const defaultMiddlewareLocalizedTexts = {
25
25
  MIDDLEWARE_MESSAGE_NOT_DELIVERED: "Not Delivered",
26
26
  MIDDLEWARE_MESSAGE_RETRY: "Retry",
27
27
  MIDDLEWARE_BANNER_CHAT_DISCONNECT: "Your conversation has been disconnected. For additional assistance, please start a new chat.",
28
- THIRD_PARTY_COOKIES_BLOCKED_ALERT_MESSAGE: "Third party cookies are blocked. Reloading this page will start a new conversation."
28
+ THIRD_PARTY_COOKIES_BLOCKED_ALERT_MESSAGE: "Third party cookies are blocked. Reloading this page will start a new conversation.",
29
+ MIDDLEWARE_BANNER_FILE_IS_MALICIOUS: "{0} has been blocked because the file may contain a malware."
29
30
  };
@@ -53,4 +53,7 @@ export class MockChatSDK {
53
53
  reconnectId: "123"
54
54
  };
55
55
  }
56
+ getVoiceVideoCalling() {
57
+ return null;
58
+ }
56
59
  }
@@ -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;