@microsoft/omnichannel-chat-widget 1.1.1-main.45472ff → 1.1.1-main.75135c5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/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/defaultProps/dummyDefaultProps.js +4 -1
- package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +15 -5
- 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/defaultStyles/defaultAdaptiveCardStyles.js +1 -0
- package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +5 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios.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/defaultProps/dummyDefaultProps.js +4 -1
- package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +15 -5
- 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/defaultStyles/defaultAdaptiveCardStyles.js +1 -0
- package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +5 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios.js +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/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
|
@@ -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,
|
|
@@ -1804,7 +1804,10 @@ const dummyDefaultProps = {
|
|
|
1804
1804
|
},
|
|
1805
1805
|
adaptiveCardStyles: {
|
|
1806
1806
|
background: "white",
|
|
1807
|
-
color: "black"
|
|
1807
|
+
color: "black",
|
|
1808
|
+
anchorColor: "blue",
|
|
1809
|
+
textWhiteSpace: "normal",
|
|
1810
|
+
buttonWhiteSpace: "normal"
|
|
1808
1811
|
},
|
|
1809
1812
|
hyperlinkTextOverride: false
|
|
1810
1813
|
},
|
|
@@ -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,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|