@microsoft/omnichannel-chat-widget 1.1.1-main.d37310c → 1.1.1-main.fb181a2
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/README.md +9 -8
- package/lib/cjs/common/Constants.js +1 -0
- package/lib/cjs/common/storage/default/defaultClientDataStoreProvider.js +20 -15
- package/lib/cjs/common/telemetry/TelemetryConstants.js +2 -0
- package/lib/cjs/common/telemetry/TelemetryHelper.js +9 -0
- package/lib/cjs/components/draggable/DraggableChatWidget.js +168 -0
- package/lib/cjs/components/draggable/DraggableEventEmitter.js +74 -0
- package/lib/cjs/components/draggable/DraggableEventNames.js +14 -0
- package/lib/cjs/components/draggable/DraggableEventReceiver.js +34 -0
- package/lib/cjs/components/draggable/IDraggableElementPosition.js +1 -0
- package/lib/cjs/components/draggable/IDraggableElementPositionDelta.js +1 -0
- package/lib/cjs/components/draggable/IDraggableEvent.js +1 -0
- package/lib/cjs/components/headerstateful/HeaderStateful.js +27 -0
- package/lib/cjs/components/livechatwidget/common/createMarkdown.js +3 -3
- package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +15 -5
- package/lib/cjs/components/livechatwidget/common/startChat.js +1 -1
- package/lib/cjs/components/livechatwidget/interfaces/IDraggableChatWidgetProps.js +1 -0
- package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +28 -8
- package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +41 -14
- package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts.js +2 -1
- package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +2 -2
- package/lib/cjs/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +1 -0
- package/lib/cjs/components/webchatcontainerstateful/common/defaultStyles/{defaultWebChatContainerStatefulStyles.js → defaultWebChatStyles.js} +3 -3
- package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +5 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios.js +1 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +2 -1
- package/lib/esm/common/Constants.js +1 -0
- package/lib/esm/common/storage/default/defaultClientDataStoreProvider.js +18 -14
- package/lib/esm/common/telemetry/TelemetryConstants.js +2 -0
- package/lib/esm/common/telemetry/TelemetryHelper.js +9 -0
- package/lib/esm/components/draggable/DraggableChatWidget.js +158 -0
- package/lib/esm/components/draggable/DraggableEventEmitter.js +64 -0
- package/lib/esm/components/draggable/DraggableEventNames.js +7 -0
- package/lib/esm/components/draggable/DraggableEventReceiver.js +25 -0
- package/lib/esm/components/draggable/IDraggableElementPosition.js +1 -0
- package/lib/esm/components/draggable/IDraggableElementPositionDelta.js +1 -0
- package/lib/esm/components/draggable/IDraggableEvent.js +1 -0
- package/lib/esm/components/headerstateful/HeaderStateful.js +27 -0
- package/lib/esm/components/livechatwidget/common/createMarkdown.js +3 -3
- package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +15 -5
- package/lib/esm/components/livechatwidget/common/startChat.js +1 -1
- package/lib/esm/components/livechatwidget/interfaces/IDraggableChatWidgetProps.js +1 -0
- package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +28 -8
- package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +41 -14
- package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts.js +2 -1
- package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +2 -2
- package/lib/esm/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +1 -0
- package/lib/esm/components/webchatcontainerstateful/common/defaultStyles/{defaultWebChatContainerStatefulStyles.js → defaultWebChatStyles.js} +1 -1
- package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +5 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios.js +1 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +2 -1
- package/lib/types/common/Constants.d.ts +1 -0
- package/lib/types/common/storage/default/defaultClientDataStoreProvider.d.ts +1 -0
- package/lib/types/common/telemetry/TelemetryConstants.d.ts +1 -0
- package/lib/types/components/draggable/DraggableChatWidget.d.ts +9 -0
- package/lib/types/components/draggable/DraggableEventEmitter.d.ts +27 -0
- package/lib/types/components/draggable/DraggableEventNames.d.ts +6 -0
- package/lib/types/components/draggable/DraggableEventReceiver.d.ts +27 -0
- package/lib/types/components/draggable/IDraggableElementPosition.d.ts +5 -0
- package/lib/types/components/draggable/IDraggableElementPositionDelta.d.ts +5 -0
- package/lib/types/components/draggable/IDraggableEvent.d.ts +12 -0
- package/lib/types/components/headerstateful/interfaces/IHeaderStatefulParams.d.ts +12 -0
- package/lib/types/components/livechatwidget/interfaces/IDraggableChatWidgetProps.d.ts +10 -0
- package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +2 -0
- package/lib/types/components/webchatcontainerstateful/WebChatContainerStateful.d.ts +2 -2
- package/lib/types/components/webchatcontainerstateful/common/defaultStyles/defaultWebChatStyles.d.ts +2 -0
- package/lib/types/components/webchatcontainerstateful/common/mockchatsdk.d.ts +5 -0
- package/lib/types/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.d.ts +1 -0
- package/lib/types/components/webchatcontainerstateful/interfaces/IRenderingMiddlewareProps.d.ts +2 -1
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios.d.ts +2 -1
- package/lib/types/contexts/common/ILiveChatWidgetLocalizedTexts.d.ts +1 -0
- package/package.json +3 -3
- package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +0 -1815
- package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +0 -1808
- package/lib/types/components/livechatwidget/common/defaultProps/dummyDefaultProps.d.ts +0 -2
- package/lib/types/components/webchatcontainerstateful/common/defaultStyles/defaultWebChatContainerStatefulStyles.d.ts +0 -2
package/README.md
CHANGED
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
|
|
6
6
|
[@microsoft/omnichannel-chat-widget](https://www.npmjs.com/package/@microsoft/omnichannel-chat-widget) is a React-based UI component library which allows you to build your own live chat widget experience using [@microsoft/omnichannel-chat-sdk](https://www.npmjs.com/package/@microsoft/omnichannel-chat-sdk).
|
|
7
7
|
|
|
8
|
+
> NEW! Check out our new [Developer Guide](https://github.com/microsoft/omnichannel-chat-widget/blob/main/docs/customizations/getstarted.md), which has detailed explanations of all component interfaces accompanied with sample code.
|
|
9
|
+
|
|
8
10
|
## Table of Contents
|
|
9
11
|
|
|
10
12
|
1. [Introduction](#introduction)
|
|
@@ -58,7 +60,7 @@ import { OmnichannelChatSDK } from "@microsoft/omnichannel-chat-sdk";
|
|
|
58
60
|
import ReactDOM from "react-dom";
|
|
59
61
|
//Below version numbers will help us to troubleshoot issues with specific package
|
|
60
62
|
import { version as chatSdkVersion } from "@microsoft/omnichannel-chat-sdk/package.json";
|
|
61
|
-
import { version as chatWidgetVersion } from "
|
|
63
|
+
import { version as chatWidgetVersion } from "@microsoft/omnichannel-chat-widget/package.json";
|
|
62
64
|
import { version as chatComponentVersion } from "@microsoft/omnichannel-chat-components/package.json";
|
|
63
65
|
|
|
64
66
|
const render = async () => {
|
|
@@ -95,12 +97,14 @@ const render = async () => {
|
|
|
95
97
|
render();
|
|
96
98
|
```
|
|
97
99
|
|
|
98
|
-
A javascript sample widget can be found in this repo [here](https://github.com/microsoft/omnichannel-chat-widget/tree/main/chat-widget/samples/javascript-sample). To build it, do ```yarn build-sample``` or ```yarn build-sample:dev``` from project root.
|
|
100
|
+
A javascript sample widget can be found in this repo [here](https://github.com/microsoft/omnichannel-chat-widget/tree/main/chat-widget/samples/javascript-sample). To build it, do ```yarn build-sample``` or ```yarn build-sample:dev``` from chat-widget project root.
|
|
99
101
|
|
|
100
|
-
A typescript sample widget can be found [here](https://github.com/microsoft/omnichannel-chat-widget/tree/main/chat-widget/samples/typescript-sample)
|
|
102
|
+
A typescript sample widget can be found [here](https://github.com/microsoft/omnichannel-chat-widget/tree/main/chat-widget/samples/typescript-sample). To build it, do ```yarn install``` then ```yarn build``` then ```yarn start``` from typescript sample project root. See [Create LiveChatWidget with Webpack5 and TypeScript](https://github.com/microsoft/omnichannel-chat-widget/blob/main/docs/BuildingUsingWebpack5.md) for additional typescript sample project resources.
|
|
101
103
|
|
|
102
104
|
## Components
|
|
103
105
|
|
|
106
|
+
For a detailed guide on how to customize each component with sample usages, please see our new [Developer Guide](https://github.com/microsoft/omnichannel-chat-widget/blob/main/docs/customizations/getstarted.md).
|
|
107
|
+
|
|
104
108
|
### Stateless UI Components
|
|
105
109
|
|
|
106
110
|
These are components that are included in the ```@microsoft/omnichannel-chat-components``` package.
|
|
@@ -133,10 +137,6 @@ These are components that are included in the ```@microsoft/omnichannel-chat-com
|
|
|
133
137
|
|
|
134
138
|
Some of the interfaces listed in the Stateless table have Stateful counterparts defined in the ```@microsoft/omnichannel-chat-widget``` package. For example, [IConfirmationPaneStatefulProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-widget/src/components/confirmationpanestateful/interfaces/IConfirmationPaneStatefulProps.ts) extends [IConfirmationPaneProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-components/src/components/confirmationpane/interfaces/IConfirmationPaneProps.ts) with additional attributes that only makes sense in the stateful context.
|
|
135
139
|
|
|
136
|
-
### Default Props
|
|
137
|
-
|
|
138
|
-
For a list of all default props used in the default stateful widget, please see [here](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-widget/src/components/livechatwidget/common/defaultProps/dummyDefaultProps.ts). If you want to change a default prop, you need to explicitly set it and parse the object as the argument to ```<LiveChatWidget/>```
|
|
139
|
-
|
|
140
140
|
### Custom Components
|
|
141
141
|
|
|
142
142
|
There are two ways to custom the components provided in the library - 1) Replacing components using ComponentOverrides, and 2) Adding custom components in header and footer.
|
|
@@ -223,8 +223,9 @@ const customizedFooterProp: IFooterProps = {
|
|
|
223
223
|
|
|
224
224
|
## See Also
|
|
225
225
|
|
|
226
|
+
[Customizations Dev Guide](https://github.com/microsoft/omnichannel-chat-widget/blob/main/docs/customizations/getstarted.md)\
|
|
226
227
|
[Telemetry](https://github.com/microsoft/omnichannel-chat-widget/blob/main/docs/Telemetry.md)\
|
|
227
|
-
[Create
|
|
228
|
+
[Create LiveChatWidget with Webpack5 and TypeScript](https://github.com/microsoft/omnichannel-chat-widget/blob/main/docs/BuildingUsingWebpack5.md)\
|
|
228
229
|
[Omnichannel Features](https://github.com/microsoft/omnichannel-chat-widget/blob/main/docs/Features.md)\
|
|
229
230
|
[How to Add Visual Regression Tests](https://github.com/microsoft/omnichannel-chat-widget/blob/main/docs/VisualRegressionTestingGuide.md)\
|
|
230
231
|
[Security](https://github.com/microsoft/omnichannel-chat-widget/blob/main/SECURITY.md)\
|
|
@@ -114,6 +114,7 @@ _defineProperty(Constants, "PopoutCacheSuffix", "popout");
|
|
|
114
114
|
_defineProperty(Constants, "LWICheckOnVisibilityTimeout", 3 * 60 * 1000);
|
|
115
115
|
// 3 minute
|
|
116
116
|
// Popup mode custom context response event message name
|
|
117
|
+
_defineProperty(Constants, "InitContextParamsRequest", "initContextParamsRequest");
|
|
117
118
|
_defineProperty(Constants, "InitContextParamsResponse", "initContextParamsResponse");
|
|
118
119
|
const Regex = (_class = class Regex {}, _defineProperty(_class, "EmailRegex", "(?:[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-zA-Z0-9-]*[a-zA-Z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])"), _class);
|
|
119
120
|
exports.Regex = Regex;
|
|
@@ -3,30 +3,35 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.defaultClientDataStoreProvider = void 0;
|
|
6
|
+
exports.isCookieAllowed = exports.defaultClientDataStoreProvider = void 0;
|
|
7
7
|
var _TelemetryConstants = require("../../telemetry/TelemetryConstants");
|
|
8
|
+
var _Constants = require("../../Constants");
|
|
8
9
|
var _TelemetryHelper = require("../../telemetry/TelemetryHelper");
|
|
9
10
|
var _defaultInMemoryDataStore = require("./defaultInMemoryDataStore");
|
|
10
|
-
var _Constants = require("../../Constants");
|
|
11
11
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
12
12
|
|
|
13
|
+
const isCookieAllowed = () => {
|
|
14
|
+
try {
|
|
15
|
+
localStorage;
|
|
16
|
+
sessionStorage;
|
|
17
|
+
return true;
|
|
18
|
+
} catch (error) {
|
|
19
|
+
if (!window.TPCWarningLogged) {
|
|
20
|
+
console.warn("Third party cookies blocked.");
|
|
21
|
+
_TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.WARN, {
|
|
22
|
+
Event: _TelemetryConstants.TelemetryEvent.ThirdPartyCookiesBlocked,
|
|
23
|
+
Description: "Third party cookies are blocked. Cannot access local storage or session storage."
|
|
24
|
+
});
|
|
25
|
+
window.TPCWarningLogged = true;
|
|
26
|
+
}
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
exports.isCookieAllowed = isCookieAllowed;
|
|
13
31
|
const defaultClientDataStoreProvider = function () {
|
|
14
32
|
let cacheTtlinMins = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
15
33
|
let storageType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _Constants.StorageType.localStorage;
|
|
16
34
|
let ttlInMs = 0;
|
|
17
|
-
const isCookieAllowed = () => {
|
|
18
|
-
try {
|
|
19
|
-
localStorage;
|
|
20
|
-
sessionStorage;
|
|
21
|
-
return true;
|
|
22
|
-
} catch (error) {
|
|
23
|
-
if (!window.TPCWarningShown) {
|
|
24
|
-
console.warn("Third party cookies blocked.");
|
|
25
|
-
window.TPCWarningShown = true;
|
|
26
|
-
}
|
|
27
|
-
return false;
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
35
|
if (ttlInMs == 0) {
|
|
31
36
|
ttlInMs = cacheTtlinMins * 60 * 1000;
|
|
32
37
|
}
|
|
@@ -164,6 +164,7 @@ exports.TelemetryEvent = TelemetryEvent;
|
|
|
164
164
|
TelemetryEvent["SetBotAuthProviderHideCard"] = "SetBotAuthProviderHideCard";
|
|
165
165
|
TelemetryEvent["SetBotAuthProviderDisplayCard"] = "SetBotAuthProviderDisplayCard";
|
|
166
166
|
TelemetryEvent["SetBotAuthProviderNotFound"] = "SetBotAuthProviderNotFound";
|
|
167
|
+
TelemetryEvent["ThirdPartyCookiesBlocked"] = "ThirdPartyCookiesBlocked";
|
|
167
168
|
TelemetryEvent["ProcessingHTMLTextMiddlewareFailed"] = "ProcessingHTMLTextMiddlewareFailed";
|
|
168
169
|
TelemetryEvent["ProcessingSanitizationMiddlewareFailed"] = "ProcessingSanitizationMiddlewareFailed";
|
|
169
170
|
TelemetryEvent["FormatTagsMiddlewareJSONStringifyFailed"] = "FormatTagsMiddlewareJSONStringifyFailed";
|
|
@@ -231,6 +232,7 @@ class TelemetryConstants {
|
|
|
231
232
|
case TelemetryEvent.OutOfOfficePaneLoaded:
|
|
232
233
|
case TelemetryEvent.ConfirmationPaneLoaded:
|
|
233
234
|
case TelemetryEvent.ProactiveChatPaneLoaded:
|
|
235
|
+
case TelemetryEvent.ThirdPartyCookiesBlocked:
|
|
234
236
|
return ScenarioType.LOAD;
|
|
235
237
|
case TelemetryEvent.PrechatSubmitted:
|
|
236
238
|
case TelemetryEvent.LCWChatButtonClicked:
|
|
@@ -167,6 +167,15 @@ class TelemetryHelper {
|
|
|
167
167
|
}
|
|
168
168
|
static addWidgetDataToTelemetry(telemetryConfig, telemetryInternalData) {
|
|
169
169
|
const telemetryDataLocal = telemetryInternalData;
|
|
170
|
+
if (!(telemetryConfig !== null && telemetryConfig !== void 0 && telemetryConfig.appId) || (telemetryConfig === null || telemetryConfig === void 0 ? void 0 : telemetryConfig.appId.trim()) === "") {
|
|
171
|
+
throw new Error("TelemetryConfig.appId is not set");
|
|
172
|
+
}
|
|
173
|
+
if (!(telemetryConfig !== null && telemetryConfig !== void 0 && telemetryConfig.orgId) || (telemetryConfig === null || telemetryConfig === void 0 ? void 0 : telemetryConfig.orgId.trim()) === "") {
|
|
174
|
+
throw new Error("TelemetryConfig.orgId is not set");
|
|
175
|
+
}
|
|
176
|
+
if (!(telemetryConfig !== null && telemetryConfig !== void 0 && telemetryConfig.orgUrl) || (telemetryConfig === null || telemetryConfig === void 0 ? void 0 : telemetryConfig.orgUrl.trim()) === "") {
|
|
177
|
+
throw new Error("TelemetryConfig.orgUrl is not set");
|
|
178
|
+
}
|
|
170
179
|
telemetryDataLocal.widgetId = telemetryConfig === null || telemetryConfig === void 0 ? void 0 : telemetryConfig.appId;
|
|
171
180
|
telemetryDataLocal.orgId = telemetryConfig === null || telemetryConfig === void 0 ? void 0 : telemetryConfig.orgId;
|
|
172
181
|
telemetryDataLocal.orgUrl = telemetryConfig === null || telemetryConfig === void 0 ? void 0 : telemetryConfig.orgUrl;
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _DraggableEventReceiver = _interopRequireDefault(require("./DraggableEventReceiver"));
|
|
9
|
+
var _DraggableEventNames = _interopRequireDefault(require("./DraggableEventNames"));
|
|
10
|
+
var _useChatContextStore = _interopRequireDefault(require("../../hooks/useChatContextStore"));
|
|
11
|
+
var _ConversationState = require("../../contexts/common/ConversationState");
|
|
12
|
+
var _utils = require("../../common/utils");
|
|
13
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
15
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
16
|
+
const DraggableChatWidget = props => {
|
|
17
|
+
const [state] = (0, _useChatContextStore.default)();
|
|
18
|
+
const [initialPosition, setInitialPosition] = (0, _react.useState)({
|
|
19
|
+
offsetLeft: 0,
|
|
20
|
+
offsetTop: 0
|
|
21
|
+
});
|
|
22
|
+
const [cachedPosition, setCachedPosition] = (0, _react.useState)(undefined);
|
|
23
|
+
const [position, setPosition] = (0, _react.useState)({
|
|
24
|
+
offsetLeft: 0,
|
|
25
|
+
offsetTop: 0
|
|
26
|
+
});
|
|
27
|
+
const [delta, setDelta] = (0, _react.useState)({
|
|
28
|
+
left: 0,
|
|
29
|
+
top: 0
|
|
30
|
+
});
|
|
31
|
+
const repositionElement = (draggableElement, offsetLeft, offsetTop) => {
|
|
32
|
+
draggableElement.style.left = `${offsetLeft}px`;
|
|
33
|
+
draggableElement.style.top = `${offsetTop}px`;
|
|
34
|
+
};
|
|
35
|
+
const calculateOffsetsWithinViewport = (0, _react.useCallback)((id, offset, delta) => {
|
|
36
|
+
const draggableElement = document.getElementById(id);
|
|
37
|
+
const positionRelativeToViewport = draggableElement.getBoundingClientRect();
|
|
38
|
+
if ((0, _utils.isNullOrUndefined)(draggableElement) || (0, _utils.isNullOrUndefined)(positionRelativeToViewport) || (0, _utils.isNullOrUndefined)(offset.offsetLeft) || (0, _utils.isNullOrUndefined)(offset.offsetTop)) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
let offsetLeft = offset.offsetLeft;
|
|
42
|
+
let offsetTop = offset.offsetTop;
|
|
43
|
+
|
|
44
|
+
// Widget size larger than viewport would not have any restriction
|
|
45
|
+
if (positionRelativeToViewport.width > window.innerWidth) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
if (positionRelativeToViewport.height > window.innerHeight) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Ensures widget is within viewport
|
|
53
|
+
if (positionRelativeToViewport.x < 0) {
|
|
54
|
+
offsetLeft = 0 - delta.left;
|
|
55
|
+
}
|
|
56
|
+
if (positionRelativeToViewport.y < 0) {
|
|
57
|
+
offsetTop = 0 - delta.top;
|
|
58
|
+
}
|
|
59
|
+
if (positionRelativeToViewport.x + positionRelativeToViewport.width > window.innerWidth) {
|
|
60
|
+
offsetLeft = window.innerWidth - positionRelativeToViewport.width - delta.left;
|
|
61
|
+
}
|
|
62
|
+
if (positionRelativeToViewport.y + positionRelativeToViewport.height > window.innerHeight) {
|
|
63
|
+
offsetTop = window.innerHeight - positionRelativeToViewport.height - delta.top;
|
|
64
|
+
}
|
|
65
|
+
repositionElement(draggableElement, offsetLeft, offsetTop);
|
|
66
|
+
setPosition({
|
|
67
|
+
offsetLeft,
|
|
68
|
+
offsetTop
|
|
69
|
+
});
|
|
70
|
+
}, []);
|
|
71
|
+
const resetPosition = (0, _react.useCallback)(targetPosition => {
|
|
72
|
+
calculateOffsetsWithinViewport(props.elementId, targetPosition, delta); // Ensure viewport restriction
|
|
73
|
+
}, [delta]);
|
|
74
|
+
(0, _react.useEffect)(() => {
|
|
75
|
+
if (props.disabled === true) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
const cacheInitialPosition = () => {
|
|
79
|
+
const draggableElement = document.getElementById(props.elementId);
|
|
80
|
+
const offsetLeft = draggableElement.offsetLeft;
|
|
81
|
+
const offsetTop = draggableElement.offsetTop;
|
|
82
|
+
setInitialPosition({
|
|
83
|
+
offsetLeft,
|
|
84
|
+
offsetTop
|
|
85
|
+
});
|
|
86
|
+
};
|
|
87
|
+
const calculateOffsets = () => {
|
|
88
|
+
const draggableElement = document.getElementById(props.elementId);
|
|
89
|
+
const offsetLeft = draggableElement.offsetLeft;
|
|
90
|
+
const offsetTop = draggableElement.offsetTop;
|
|
91
|
+
|
|
92
|
+
// Calculates the delta between the position of the widget and the position of the widget relative to the viewport which will be used for repositioning
|
|
93
|
+
const positionRelativeToViewport = draggableElement.getBoundingClientRect();
|
|
94
|
+
const left = positionRelativeToViewport.left - offsetLeft;
|
|
95
|
+
const top = positionRelativeToViewport.top - offsetTop;
|
|
96
|
+
setDelta({
|
|
97
|
+
left,
|
|
98
|
+
top
|
|
99
|
+
});
|
|
100
|
+
calculateOffsetsWithinViewport(props.elementId, {
|
|
101
|
+
offsetLeft,
|
|
102
|
+
offsetTop
|
|
103
|
+
}, {
|
|
104
|
+
left,
|
|
105
|
+
top
|
|
106
|
+
});
|
|
107
|
+
};
|
|
108
|
+
calculateOffsets();
|
|
109
|
+
cacheInitialPosition();
|
|
110
|
+
window.addEventListener("resize", calculateOffsets);
|
|
111
|
+
return () => {
|
|
112
|
+
window.removeEventListener("resize", calculateOffsets);
|
|
113
|
+
};
|
|
114
|
+
}, [props.disabled]);
|
|
115
|
+
(0, _react.useEffect)(() => {
|
|
116
|
+
if (props.disabled === true) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
if (state.appStates.conversationState == _ConversationState.ConversationState.Closed) {
|
|
120
|
+
resetPosition(initialPosition);
|
|
121
|
+
} else if (state.appStates.isMinimized) {
|
|
122
|
+
const draggableElement = document.getElementById(props.elementId);
|
|
123
|
+
const offsetLeft = draggableElement.offsetLeft;
|
|
124
|
+
const offsetTop = draggableElement.offsetTop;
|
|
125
|
+
if (!cachedPosition) {
|
|
126
|
+
setCachedPosition({
|
|
127
|
+
offsetLeft,
|
|
128
|
+
offsetTop
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
resetPosition(initialPosition);
|
|
132
|
+
} else if (!(0, _utils.isNullOrUndefined)(state.appStates.isMinimized) && !state.appStates.isMinimized) {
|
|
133
|
+
if (cachedPosition) {
|
|
134
|
+
resetPosition(cachedPosition);
|
|
135
|
+
setCachedPosition(undefined);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}, [props.disabled, state.appStates.isMinimized, state.appStates.conversationState, initialPosition, cachedPosition]);
|
|
139
|
+
const onEvent = (0, _react.useCallback)(event => {
|
|
140
|
+
if (event.eventName === _DraggableEventNames.default.Dragging) {
|
|
141
|
+
if (event.offset) {
|
|
142
|
+
const offsetLeft = position.offsetLeft + event.offset.x;
|
|
143
|
+
const offsetTop = position.offsetTop + event.offset.y;
|
|
144
|
+
|
|
145
|
+
// Update position via DOM manipulation to prevent <Stack/> continuously rendering on style change causing high CPU spike
|
|
146
|
+
const draggableElement = document.getElementById(props.elementId);
|
|
147
|
+
repositionElement(draggableElement, offsetLeft, offsetTop);
|
|
148
|
+
setPosition({
|
|
149
|
+
offsetLeft,
|
|
150
|
+
offsetTop
|
|
151
|
+
});
|
|
152
|
+
calculateOffsetsWithinViewport(props.elementId, {
|
|
153
|
+
offsetLeft,
|
|
154
|
+
offsetTop
|
|
155
|
+
}, delta);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}, [position, delta]);
|
|
159
|
+
if (props.disabled === true) {
|
|
160
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, props.children);
|
|
161
|
+
}
|
|
162
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_DraggableEventReceiver.default, {
|
|
163
|
+
channel: props.channel ?? "lcw",
|
|
164
|
+
onEvent: onEvent
|
|
165
|
+
}, props.children));
|
|
166
|
+
};
|
|
167
|
+
var _default = DraggableChatWidget;
|
|
168
|
+
exports.default = _default;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _DraggableEventNames = _interopRequireDefault(require("./DraggableEventNames"));
|
|
9
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
11
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
12
|
+
/**
|
|
13
|
+
* Trigger component which would send IDraggableEvent to the receiver to update the draggable component position
|
|
14
|
+
*
|
|
15
|
+
* @param props IDraggableEventEmitterProps
|
|
16
|
+
* @returns
|
|
17
|
+
*/
|
|
18
|
+
const DraggableEventEmitter = props => {
|
|
19
|
+
const [initialized, setInitialized] = (0, _react.useState)(false);
|
|
20
|
+
const postMessage = (0, _react.useCallback)(data => {
|
|
21
|
+
const targetWindow = props.targetWindow ?? window;
|
|
22
|
+
targetWindow.postMessage(data, "*");
|
|
23
|
+
}, [props.targetWindow]);
|
|
24
|
+
const dragStart = (0, _react.useCallback)(event => {
|
|
25
|
+
postMessage({
|
|
26
|
+
channel: props.channel,
|
|
27
|
+
eventName: _DraggableEventNames.default.DragStart
|
|
28
|
+
});
|
|
29
|
+
let cursor = {
|
|
30
|
+
x: event.screenX,
|
|
31
|
+
y: event.screenY
|
|
32
|
+
}; // Cursor init position
|
|
33
|
+
const dragging = event => {
|
|
34
|
+
event.preventDefault();
|
|
35
|
+
const newX = event.screenX;
|
|
36
|
+
const newY = event.screenY;
|
|
37
|
+
const offset = {
|
|
38
|
+
x: newX - cursor.x,
|
|
39
|
+
y: newY - cursor.y
|
|
40
|
+
}; // Calculate cursor position diff
|
|
41
|
+
cursor = {
|
|
42
|
+
...cursor,
|
|
43
|
+
x: newX,
|
|
44
|
+
y: newY
|
|
45
|
+
}; // Update cursor new position
|
|
46
|
+
|
|
47
|
+
postMessage({
|
|
48
|
+
channel: props.channel,
|
|
49
|
+
eventName: _DraggableEventNames.default.Dragging,
|
|
50
|
+
offset
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
const dragEnd = () => {
|
|
54
|
+
postMessage({
|
|
55
|
+
channel: props.channel,
|
|
56
|
+
eventName: _DraggableEventNames.default.DragEnd
|
|
57
|
+
});
|
|
58
|
+
document.removeEventListener("mousemove", dragging);
|
|
59
|
+
document.removeEventListener("mouseup", dragEnd);
|
|
60
|
+
};
|
|
61
|
+
document.addEventListener("mousemove", dragging);
|
|
62
|
+
document.addEventListener("mouseup", dragEnd);
|
|
63
|
+
}, [props.channel]);
|
|
64
|
+
(0, _react.useEffect)(() => {
|
|
65
|
+
if (!initialized && props.elementId) {
|
|
66
|
+
const element = document.getElementById(props.elementId);
|
|
67
|
+
element === null || element === void 0 ? void 0 : element.addEventListener("mousedown", dragStart);
|
|
68
|
+
setInitialized(true);
|
|
69
|
+
}
|
|
70
|
+
}, [dragStart, props.elementId, initialized]);
|
|
71
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, " ", props.children, " ");
|
|
72
|
+
};
|
|
73
|
+
var _default = DraggableEventEmitter;
|
|
74
|
+
exports.default = _default;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var DraggableEventNames;
|
|
8
|
+
(function (DraggableEventNames) {
|
|
9
|
+
DraggableEventNames["DragStart"] = "DragStart";
|
|
10
|
+
DraggableEventNames["Dragging"] = "Dragging";
|
|
11
|
+
DraggableEventNames["DragEnd"] = "DragEnd";
|
|
12
|
+
})(DraggableEventNames || (DraggableEventNames = {}));
|
|
13
|
+
var _default = DraggableEventNames;
|
|
14
|
+
exports.default = _default;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
9
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
10
|
+
/**
|
|
11
|
+
* Component which would listen to DraggableEvent, update the component position or react accordingly.
|
|
12
|
+
*
|
|
13
|
+
* @param props IDraggableEventReceiverProps
|
|
14
|
+
* @returns
|
|
15
|
+
*/
|
|
16
|
+
const DraggableEventReceiver = props => {
|
|
17
|
+
(0, _react.useEffect)(() => {
|
|
18
|
+
const listener = event => {
|
|
19
|
+
const {
|
|
20
|
+
data
|
|
21
|
+
} = event;
|
|
22
|
+
if (data.channel && props.channel && data.channel === props.channel) {
|
|
23
|
+
props.onEvent(data);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
window.addEventListener("message", listener);
|
|
27
|
+
return () => {
|
|
28
|
+
window.removeEventListener("message", listener);
|
|
29
|
+
};
|
|
30
|
+
}, [props]);
|
|
31
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, " ", props.children, " ");
|
|
32
|
+
};
|
|
33
|
+
var _default = DraggableEventReceiver;
|
|
34
|
+
exports.default = _default;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -14,6 +14,7 @@ var _defaultOutOfOfficeHeaderStyleProps = require("./common/styleProps/defaultOu
|
|
|
14
14
|
var _useChatAdapterStore = _interopRequireDefault(require("../../hooks/useChatAdapterStore"));
|
|
15
15
|
var _useChatContextStore = _interopRequireDefault(require("../../hooks/useChatContextStore"));
|
|
16
16
|
var _Constants = require("../../common/Constants");
|
|
17
|
+
var _DraggableEventEmitter = _interopRequireDefault(require("../draggable/DraggableEventEmitter"));
|
|
17
18
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
18
19
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
19
20
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
@@ -100,6 +101,32 @@ const HeaderStateful = props => {
|
|
|
100
101
|
var _state$domainStates2;
|
|
101
102
|
localConfirmationPaneState.current = state === null || state === void 0 ? void 0 : (_state$domainStates2 = state.domainStates) === null || _state$domainStates2 === void 0 ? void 0 : _state$domainStates2.confirmationState;
|
|
102
103
|
}, [state === null || state === void 0 ? void 0 : (_state$domainStates3 = state.domainStates) === null || _state$domainStates3 === void 0 ? void 0 : _state$domainStates3.confirmationState]);
|
|
104
|
+
const draggableEventEmitterProps = {
|
|
105
|
+
channel: props.draggableEventChannel ?? "lcw",
|
|
106
|
+
elementId: outOfOperatingHours || state.appStates.conversationState === _ConversationState.ConversationState.OutOfOffice ? outOfOfficeControlProps.id : controlProps.id,
|
|
107
|
+
targetWindow: props.draggableEventEmitterTargetWindow ?? window
|
|
108
|
+
};
|
|
109
|
+
if (props.draggable === true) {
|
|
110
|
+
var _generalStyleProps;
|
|
111
|
+
const styleProps = outOfOperatingHours || state.appStates.conversationState === _ConversationState.ConversationState.OutOfOffice ? outOfOfficeStyleProps : headerProps === null || headerProps === void 0 ? void 0 : headerProps.styleProps;
|
|
112
|
+
const draggableSelectors = {
|
|
113
|
+
"&:hover": {
|
|
114
|
+
cursor: "move"
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
const selectors = Object.assign({}, (styleProps === null || styleProps === void 0 ? void 0 : (_generalStyleProps = styleProps.generalStyleProps) === null || _generalStyleProps === void 0 ? void 0 : _generalStyleProps.selectors) || {}, draggableSelectors); // eslint-disable-line @typescript-eslint/no-explicit-any
|
|
118
|
+
const generalStyleProps = Object.assign({}, styleProps === null || styleProps === void 0 ? void 0 : styleProps.generalStyleProps, {
|
|
119
|
+
selectors
|
|
120
|
+
});
|
|
121
|
+
const draggableStyleProps = Object.assign({}, styleProps, {
|
|
122
|
+
generalStyleProps
|
|
123
|
+
});
|
|
124
|
+
return /*#__PURE__*/_react.default.createElement(_DraggableEventEmitter.default, draggableEventEmitterProps, /*#__PURE__*/_react.default.createElement(_omnichannelChatComponents.Header, {
|
|
125
|
+
componentOverrides: headerProps === null || headerProps === void 0 ? void 0 : headerProps.componentOverrides,
|
|
126
|
+
controlProps: outOfOperatingHours || state.appStates.conversationState === _ConversationState.ConversationState.OutOfOffice ? outOfOfficeControlProps : controlProps,
|
|
127
|
+
styleProps: draggableStyleProps
|
|
128
|
+
}));
|
|
129
|
+
}
|
|
103
130
|
return /*#__PURE__*/_react.default.createElement(_omnichannelChatComponents.Header, {
|
|
104
131
|
componentOverrides: headerProps === null || headerProps === void 0 ? void 0 : headerProps.componentOverrides,
|
|
105
132
|
controlProps: outOfOperatingHours || state.appStates.conversationState === _ConversationState.ConversationState.OutOfOffice ? outOfOfficeControlProps : controlProps,
|
|
@@ -4,10 +4,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.createMarkdown = void 0;
|
|
7
|
+
var _Constants = require("../../../common/Constants");
|
|
7
8
|
var _markdownIt = _interopRequireDefault(require("markdown-it"));
|
|
8
9
|
var _markdownItForInline = _interopRequireDefault(require("markdown-it-for-inline"));
|
|
10
|
+
var _slackMarkdownIt = _interopRequireDefault(require("slack-markdown-it"));
|
|
9
11
|
var _defaultMarkdownLocalizedTexts = require("../../webchatcontainerstateful/common/defaultProps/defaultMarkdownLocalizedTexts");
|
|
10
|
-
var _Constants = require("../../../common/Constants");
|
|
11
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
13
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
13
14
|
const createMarkdown = (disableMarkdownMessageFormatting, disableNewLineMarkdownSupport) => {
|
|
@@ -18,8 +19,7 @@ const createMarkdown = (disableMarkdownMessageFormatting, disableNewLineMarkdown
|
|
|
18
19
|
linkify: true,
|
|
19
20
|
breaks: !disableNewLineMarkdownSupport
|
|
20
21
|
});
|
|
21
|
-
|
|
22
|
-
// markdown.use(MarkdownSlack);
|
|
22
|
+
markdown.use(_slackMarkdownIt.default);
|
|
23
23
|
} else {
|
|
24
24
|
markdown = new _markdownIt.default(_Constants.Constants.Zero, {
|
|
25
25
|
html: true,
|
|
@@ -10,6 +10,7 @@ var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
|
|
|
10
10
|
var _defaultAriaConfig = require("../../../common/telemetry/defaultConfigs/defaultAriaConfig");
|
|
11
11
|
var _defaultTelemetryInternalData = require("../../../common/telemetry/defaultConfigs/defaultTelemetryInternalData");
|
|
12
12
|
var _defaultTelemetryConfiguration = require("../../../common/telemetry/defaultConfigs/defaultTelemetryConfiguration");
|
|
13
|
+
var _utils = require("../../../common/utils");
|
|
13
14
|
const registerTelemetryLoggers = (props, dispatch) => {
|
|
14
15
|
var _props$liveChatContex, _props$liveChatContex2;
|
|
15
16
|
const telemetryConfig = {
|
|
@@ -20,7 +21,7 @@ const registerTelemetryLoggers = (props, dispatch) => {
|
|
|
20
21
|
var _props$liveChatContex3, _props$liveChatContex4;
|
|
21
22
|
_TelemetryManager.TelemetryManager.InternalTelemetryData = (_props$liveChatContex3 = props.liveChatContextFromCache) === null || _props$liveChatContex3 === void 0 ? void 0 : (_props$liveChatContex4 = _props$liveChatContex3.domainStates) === null || _props$liveChatContex4 === void 0 ? void 0 : _props$liveChatContex4.telemetryInternalData;
|
|
22
23
|
} else {
|
|
23
|
-
var _props$chatSDK, _props$chatSDK$omnich, _props$chatSDK2, _props$chatSDK2$omnic, _props$chatSDK3, _props$chatSDK3$omnic;
|
|
24
|
+
var _props$chatSDK, _props$chatSDK$omnich, _props$chatSDK2, _props$chatSDK2$omnic, _props$chatSDK3, _props$chatSDK3$omnic, _props$chatSDK4, _props$chatSDK4$omnic, _props$chatSDK5, _props$chatSDK5$omnic, _props$chatSDK6, _props$chatSDK6$omnic, _props$chatSDK7, _props$chatSDK7$omnic, _props$chatSDK8, _props$chatSDK8$omnic, _props$chatSDK9, _props$chatSDK9$omnic;
|
|
24
25
|
let telemetryData = {
|
|
25
26
|
..._defaultTelemetryInternalData.defaultInternalTelemetryData,
|
|
26
27
|
telemetryConfig: Object.assign({}, _defaultTelemetryConfiguration.defaultTelemetryConfiguration, telemetryConfig),
|
|
@@ -29,13 +30,22 @@ const registerTelemetryLoggers = (props, dispatch) => {
|
|
|
29
30
|
if (props.chatConfig) {
|
|
30
31
|
telemetryData = _TelemetryHelper.TelemetryHelper.addChatConfigDataToTelemetry(props === null || props === void 0 ? void 0 : props.chatConfig, telemetryData);
|
|
31
32
|
}
|
|
32
|
-
|
|
33
|
+
if (!((_props$chatSDK = props.chatSDK) !== null && _props$chatSDK !== void 0 && (_props$chatSDK$omnich = _props$chatSDK.omnichannelConfig) !== null && _props$chatSDK$omnich !== void 0 && _props$chatSDK$omnich.orgId) || ((_props$chatSDK2 = props.chatSDK) === null || _props$chatSDK2 === void 0 ? void 0 : (_props$chatSDK2$omnic = _props$chatSDK2.omnichannelConfig) === null || _props$chatSDK2$omnic === void 0 ? void 0 : _props$chatSDK2$omnic.orgId.trim().length) === 0) {
|
|
34
|
+
throw new Error("orgId is undefined in ChatSDK");
|
|
35
|
+
}
|
|
36
|
+
if (!((_props$chatSDK3 = props.chatSDK) !== null && _props$chatSDK3 !== void 0 && (_props$chatSDK3$omnic = _props$chatSDK3.omnichannelConfig) !== null && _props$chatSDK3$omnic !== void 0 && _props$chatSDK3$omnic.widgetId) || ((_props$chatSDK4 = props.chatSDK) === null || _props$chatSDK4 === void 0 ? void 0 : (_props$chatSDK4$omnic = _props$chatSDK4.omnichannelConfig) === null || _props$chatSDK4$omnic === void 0 ? void 0 : _props$chatSDK4$omnic.widgetId.trim().length) === 0) {
|
|
37
|
+
throw new Error("widgetId is undefined in ChatSDK");
|
|
38
|
+
}
|
|
39
|
+
if (!((_props$chatSDK5 = props.chatSDK) !== null && _props$chatSDK5 !== void 0 && (_props$chatSDK5$omnic = _props$chatSDK5.omnichannelConfig) !== null && _props$chatSDK5$omnic !== void 0 && _props$chatSDK5$omnic.orgUrl) || ((_props$chatSDK6 = props.chatSDK) === null || _props$chatSDK6 === void 0 ? void 0 : (_props$chatSDK6$omnic = _props$chatSDK6.omnichannelConfig) === null || _props$chatSDK6$omnic === void 0 ? void 0 : _props$chatSDK6$omnic.orgUrl.trim().length) === 0) {
|
|
40
|
+
throw new Error("orgUrl is undefined in ChatSDK");
|
|
41
|
+
}
|
|
33
42
|
telemetryData.OCChatSDKVersion = telemetryConfig.OCChatSDKVersion ?? "0.0.0-0";
|
|
34
43
|
telemetryData.chatComponentVersion = telemetryConfig.chatComponentVersion ?? "0.0.0-0";
|
|
35
44
|
telemetryData.chatWidgetVersion = telemetryConfig.chatWidgetVersion ?? "0.0.0-0";
|
|
36
|
-
telemetryData.orgId = (_props$
|
|
37
|
-
telemetryData.widgetId = (_props$
|
|
38
|
-
telemetryData.orgUrl = (_props$
|
|
45
|
+
telemetryData.orgId = (_props$chatSDK7 = props.chatSDK) === null || _props$chatSDK7 === void 0 ? void 0 : (_props$chatSDK7$omnic = _props$chatSDK7.omnichannelConfig) === null || _props$chatSDK7$omnic === void 0 ? void 0 : _props$chatSDK7$omnic.orgId;
|
|
46
|
+
telemetryData.widgetId = (_props$chatSDK8 = props.chatSDK) === null || _props$chatSDK8 === void 0 ? void 0 : (_props$chatSDK8$omnic = _props$chatSDK8.omnichannelConfig) === null || _props$chatSDK8$omnic === void 0 ? void 0 : _props$chatSDK8$omnic.widgetId;
|
|
47
|
+
telemetryData.orgUrl = (_props$chatSDK9 = props.chatSDK) === null || _props$chatSDK9 === void 0 ? void 0 : (_props$chatSDK9$omnic = _props$chatSDK9.omnichannelConfig) === null || _props$chatSDK9$omnic === void 0 ? void 0 : _props$chatSDK9$omnic.orgUrl;
|
|
48
|
+
telemetryData.lcwRuntimeId = telemetryConfig.LCWRuntimeId ?? (0, _utils.newGuid)();
|
|
39
49
|
_TelemetryManager.TelemetryManager.InternalTelemetryData = telemetryData;
|
|
40
50
|
dispatch({
|
|
41
51
|
type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_TELEMETRY_DATA,
|
|
@@ -417,7 +417,7 @@ const getInitContextParamForPopoutFromOuterScope = async scope => {
|
|
|
417
417
|
};
|
|
418
418
|
window.addEventListener("message", getInitContextParamsFromParent, false);
|
|
419
419
|
scope.postMessage({
|
|
420
|
-
messageName: _Constants.Constants.
|
|
420
|
+
messageName: _Constants.Constants.InitContextParamsRequest
|
|
421
421
|
}, "*");
|
|
422
422
|
await waitPromise;
|
|
423
423
|
window.removeEventListener("message", getInitContextParamsFromParent, false);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|