@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.
Files changed (76) hide show
  1. package/README.md +9 -8
  2. package/lib/cjs/common/Constants.js +1 -0
  3. package/lib/cjs/common/storage/default/defaultClientDataStoreProvider.js +20 -15
  4. package/lib/cjs/common/telemetry/TelemetryConstants.js +2 -0
  5. package/lib/cjs/common/telemetry/TelemetryHelper.js +9 -0
  6. package/lib/cjs/components/draggable/DraggableChatWidget.js +168 -0
  7. package/lib/cjs/components/draggable/DraggableEventEmitter.js +74 -0
  8. package/lib/cjs/components/draggable/DraggableEventNames.js +14 -0
  9. package/lib/cjs/components/draggable/DraggableEventReceiver.js +34 -0
  10. package/lib/cjs/components/draggable/IDraggableElementPosition.js +1 -0
  11. package/lib/cjs/components/draggable/IDraggableElementPositionDelta.js +1 -0
  12. package/lib/cjs/components/draggable/IDraggableEvent.js +1 -0
  13. package/lib/cjs/components/headerstateful/HeaderStateful.js +27 -0
  14. package/lib/cjs/components/livechatwidget/common/createMarkdown.js +3 -3
  15. package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +15 -5
  16. package/lib/cjs/components/livechatwidget/common/startChat.js +1 -1
  17. package/lib/cjs/components/livechatwidget/interfaces/IDraggableChatWidgetProps.js +1 -0
  18. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +28 -8
  19. package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +41 -14
  20. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts.js +2 -1
  21. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +2 -2
  22. package/lib/cjs/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +1 -0
  23. package/lib/cjs/components/webchatcontainerstateful/common/defaultStyles/{defaultWebChatContainerStatefulStyles.js → defaultWebChatStyles.js} +3 -3
  24. package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +5 -0
  25. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios.js +1 -0
  26. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +2 -1
  27. package/lib/esm/common/Constants.js +1 -0
  28. package/lib/esm/common/storage/default/defaultClientDataStoreProvider.js +18 -14
  29. package/lib/esm/common/telemetry/TelemetryConstants.js +2 -0
  30. package/lib/esm/common/telemetry/TelemetryHelper.js +9 -0
  31. package/lib/esm/components/draggable/DraggableChatWidget.js +158 -0
  32. package/lib/esm/components/draggable/DraggableEventEmitter.js +64 -0
  33. package/lib/esm/components/draggable/DraggableEventNames.js +7 -0
  34. package/lib/esm/components/draggable/DraggableEventReceiver.js +25 -0
  35. package/lib/esm/components/draggable/IDraggableElementPosition.js +1 -0
  36. package/lib/esm/components/draggable/IDraggableElementPositionDelta.js +1 -0
  37. package/lib/esm/components/draggable/IDraggableEvent.js +1 -0
  38. package/lib/esm/components/headerstateful/HeaderStateful.js +27 -0
  39. package/lib/esm/components/livechatwidget/common/createMarkdown.js +3 -3
  40. package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +15 -5
  41. package/lib/esm/components/livechatwidget/common/startChat.js +1 -1
  42. package/lib/esm/components/livechatwidget/interfaces/IDraggableChatWidgetProps.js +1 -0
  43. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +28 -8
  44. package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +41 -14
  45. package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts.js +2 -1
  46. package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +2 -2
  47. package/lib/esm/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +1 -0
  48. package/lib/esm/components/webchatcontainerstateful/common/defaultStyles/{defaultWebChatContainerStatefulStyles.js → defaultWebChatStyles.js} +1 -1
  49. package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +5 -0
  50. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios.js +1 -0
  51. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +2 -1
  52. package/lib/types/common/Constants.d.ts +1 -0
  53. package/lib/types/common/storage/default/defaultClientDataStoreProvider.d.ts +1 -0
  54. package/lib/types/common/telemetry/TelemetryConstants.d.ts +1 -0
  55. package/lib/types/components/draggable/DraggableChatWidget.d.ts +9 -0
  56. package/lib/types/components/draggable/DraggableEventEmitter.d.ts +27 -0
  57. package/lib/types/components/draggable/DraggableEventNames.d.ts +6 -0
  58. package/lib/types/components/draggable/DraggableEventReceiver.d.ts +27 -0
  59. package/lib/types/components/draggable/IDraggableElementPosition.d.ts +5 -0
  60. package/lib/types/components/draggable/IDraggableElementPositionDelta.d.ts +5 -0
  61. package/lib/types/components/draggable/IDraggableEvent.d.ts +12 -0
  62. package/lib/types/components/headerstateful/interfaces/IHeaderStatefulParams.d.ts +12 -0
  63. package/lib/types/components/livechatwidget/interfaces/IDraggableChatWidgetProps.d.ts +10 -0
  64. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +2 -0
  65. package/lib/types/components/webchatcontainerstateful/WebChatContainerStateful.d.ts +2 -2
  66. package/lib/types/components/webchatcontainerstateful/common/defaultStyles/defaultWebChatStyles.d.ts +2 -0
  67. package/lib/types/components/webchatcontainerstateful/common/mockchatsdk.d.ts +5 -0
  68. package/lib/types/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.d.ts +1 -0
  69. package/lib/types/components/webchatcontainerstateful/interfaces/IRenderingMiddlewareProps.d.ts +2 -1
  70. package/lib/types/components/webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios.d.ts +2 -1
  71. package/lib/types/contexts/common/ILiveChatWidgetLocalizedTexts.d.ts +1 -0
  72. package/package.json +3 -3
  73. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +0 -1815
  74. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +0 -1808
  75. package/lib/types/components/livechatwidget/common/defaultProps/dummyDefaultProps.d.ts +0 -2
  76. 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 "../package.json";
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 LCW widget with Webpack5 and TypeScript](https://github.com/microsoft/omnichannel-chat-widget/blob/main/docs/BuildingUsingWebpack5.md)\
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";
@@ -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
- // ToDo: Commenting below usage of plugin until deferred bug is resolved: https://github.com/mayashavin/markdown-it-slack/issues/1
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
- telemetryData = _TelemetryHelper.TelemetryHelper.addWidgetDataToTelemetry(telemetryConfig, telemetryData);
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$chatSDK = props.chatSDK) === null || _props$chatSDK === void 0 ? void 0 : (_props$chatSDK$omnich = _props$chatSDK.omnichannelConfig) === null || _props$chatSDK$omnich === void 0 ? void 0 : _props$chatSDK$omnich.orgId;
37
- telemetryData.widgetId = (_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.widgetId;
38
- telemetryData.orgUrl = (_props$chatSDK3 = props.chatSDK) === null || _props$chatSDK3 === void 0 ? void 0 : (_props$chatSDK3$omnic = _props$chatSDK3.omnichannelConfig) === null || _props$chatSDK3$omnic === void 0 ? void 0 : _props$chatSDK3$omnic.orgUrl;
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.InitContextParamsResponse
420
+ messageName: _Constants.Constants.InitContextParamsRequest
421
421
  }, "*");
422
422
  await waitPromise;
423
423
  window.removeEventListener("message", getInitContextParamsFromParent, false);