@microsoft/omnichannel-chat-widget 1.8.3-main.ec1328d → 1.8.3

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 (85) hide show
  1. package/lib/cjs/common/Constants.js +2 -0
  2. package/lib/cjs/common/telemetry/TelemetryConstants.js +3 -0
  3. package/lib/cjs/components/citationpanestateful/CitationDim.js +29 -0
  4. package/lib/cjs/components/citationpanestateful/CitationPaneStateful.js +199 -0
  5. package/lib/cjs/components/citationpanestateful/common/defaultProps/defaultCitationPaneProps.js +70 -0
  6. package/lib/cjs/components/confirmationpanestateful/interfaces/IConfirmationPaneLocalizedTexts.js +1 -0
  7. package/lib/cjs/components/livechatwidget/LiveChatWidget.js +4 -4
  8. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/BotAuthActivitySubscriber.js +4 -5
  9. package/lib/cjs/components/livechatwidget/common/endChat.js +21 -2
  10. package/lib/cjs/components/livechatwidget/common/getMockChatSDKIfApplicable.js +4 -3
  11. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +1 -1
  12. package/lib/cjs/components/livechatwidget/common/overridePropsOnMockIfApplicable.js +2 -1
  13. package/lib/cjs/components/livechatwidget/common/startChat.js +5 -4
  14. package/lib/cjs/components/livechatwidget/interfaces/IMockProps.js +8 -2
  15. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +29 -5
  16. package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +96 -11
  17. package/lib/cjs/components/webchatcontainerstateful/common/DesignerChatAdapter.js +43 -14
  18. package/lib/cjs/components/webchatcontainerstateful/common/DesignerChatSDK.js +6 -1
  19. package/lib/cjs/components/webchatcontainerstateful/common/defaultStyles/defaultWebChatStyles.js +1 -1
  20. package/lib/cjs/components/webchatcontainerstateful/common/utils/chatAdapterUtils.js +36 -2
  21. package/lib/cjs/components/webchatcontainerstateful/common/utils/fontUtils.js +28 -0
  22. package/lib/cjs/components/webchatcontainerstateful/interfaces/ICitation.js +1 -0
  23. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultAvatarTextStyles.js +1 -1
  24. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageStyles.js +1 -1
  25. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/citationsMiddleware.js +97 -30
  26. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/queueOverflowHandlerMiddleware.js +2 -2
  27. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +46 -45
  28. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +2 -0
  29. package/lib/cjs/contexts/createReducer.js +15 -0
  30. package/lib/cjs/index.js +9 -1
  31. package/lib/esm/common/Constants.js +2 -0
  32. package/lib/esm/common/telemetry/TelemetryConstants.js +3 -0
  33. package/lib/esm/components/citationpanestateful/CitationDim.js +20 -0
  34. package/lib/esm/components/citationpanestateful/CitationPaneStateful.js +188 -0
  35. package/lib/esm/components/citationpanestateful/common/defaultProps/defaultCitationPaneProps.js +61 -0
  36. package/lib/esm/components/confirmationpanestateful/interfaces/IConfirmationPaneLocalizedTexts.js +1 -0
  37. package/lib/esm/components/livechatwidget/LiveChatWidget.js +4 -4
  38. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/BotAuthActivitySubscriber.js +4 -5
  39. package/lib/esm/components/livechatwidget/common/endChat.js +22 -3
  40. package/lib/esm/components/livechatwidget/common/getMockChatSDKIfApplicable.js +4 -3
  41. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +1 -1
  42. package/lib/esm/components/livechatwidget/common/overridePropsOnMockIfApplicable.js +2 -1
  43. package/lib/esm/components/livechatwidget/common/startChat.js +5 -4
  44. package/lib/esm/components/livechatwidget/interfaces/IMockProps.js +3 -3
  45. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +29 -5
  46. package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +96 -12
  47. package/lib/esm/components/webchatcontainerstateful/common/DesignerChatAdapter.js +43 -14
  48. package/lib/esm/components/webchatcontainerstateful/common/DesignerChatSDK.js +6 -1
  49. package/lib/esm/components/webchatcontainerstateful/common/defaultStyles/defaultWebChatStyles.js +1 -1
  50. package/lib/esm/components/webchatcontainerstateful/common/utils/chatAdapterUtils.js +32 -0
  51. package/lib/esm/components/webchatcontainerstateful/common/utils/fontUtils.js +21 -0
  52. package/lib/esm/components/webchatcontainerstateful/interfaces/ICitation.js +1 -0
  53. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultAvatarTextStyles.js +1 -1
  54. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageStyles.js +1 -1
  55. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/citationsMiddleware.js +98 -30
  56. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/queueOverflowHandlerMiddleware.js +2 -2
  57. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +46 -45
  58. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +2 -0
  59. package/lib/esm/contexts/createReducer.js +15 -0
  60. package/lib/esm/index.js +1 -0
  61. package/lib/types/common/Constants.d.ts +2 -0
  62. package/lib/types/common/telemetry/TelemetryConstants.d.ts +3 -0
  63. package/lib/types/components/citationpanestateful/CitationDim.d.ts +5 -0
  64. package/lib/types/components/citationpanestateful/CitationPaneStateful.d.ts +4 -0
  65. package/lib/types/components/citationpanestateful/common/defaultProps/defaultCitationPaneProps.d.ts +11 -0
  66. package/lib/types/components/citationpanestateful/interfaces/ICitationPaneStatefulProps.d.ts +19 -0
  67. package/lib/types/components/confirmationpanestateful/common/defaultProps/defaultConfirmationPaneLocalizedTexts.d.ts +1 -1
  68. package/lib/types/components/confirmationpanestateful/interfaces/IConfirmationPaneStatefulProps.d.ts +1 -1
  69. package/lib/types/components/livechatwidget/common/getMockChatSDKIfApplicable.d.ts +2 -1
  70. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +3 -1
  71. package/lib/types/components/livechatwidget/interfaces/IMockProps.d.ts +5 -3
  72. package/lib/types/components/webchatcontainerstateful/common/DesignerChatAdapter.d.ts +4 -2
  73. package/lib/types/components/webchatcontainerstateful/common/DesignerChatSDK.d.ts +5 -0
  74. package/lib/types/components/webchatcontainerstateful/common/utils/chatAdapterUtils.d.ts +6 -1
  75. package/lib/types/components/webchatcontainerstateful/common/utils/fontUtils.d.ts +10 -0
  76. package/lib/types/components/webchatcontainerstateful/interfaces/ICitation.d.ts +12 -0
  77. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/citationsMiddleware.d.ts +3 -4
  78. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/queueOverflowHandlerMiddleware.d.ts +2 -2
  79. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +1 -0
  80. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +46 -45
  81. package/lib/types/index.d.ts +1 -0
  82. package/package.json +2 -2
  83. /package/lib/cjs/components/{confirmationpanestateful/interfaces/IConfirmationPaneLocalizedText.js → citationpanestateful/interfaces/ICitationPaneStatefulProps.js} +0 -0
  84. /package/lib/esm/components/{confirmationpanestateful/interfaces/IConfirmationPaneLocalizedText.js → citationpanestateful/interfaces/ICitationPaneStatefulProps.js} +0 -0
  85. /package/lib/types/components/confirmationpanestateful/interfaces/{IConfirmationPaneLocalizedText.d.ts → IConfirmationPaneLocalizedTexts.d.ts} +0 -0
@@ -196,6 +196,8 @@ _defineProperty(HtmlAttributeNames, "adaptiveCardClassName", "ac-adaptiveCard");
196
196
  _defineProperty(HtmlAttributeNames, "adaptiveCardTextBlockClassName", "ac-textBlock");
197
197
  _defineProperty(HtmlAttributeNames, "adaptiveCardToggleInputClassName", "ac-toggleInput");
198
198
  _defineProperty(HtmlAttributeNames, "adaptiveCardActionSetClassName", "ac-actionSet");
199
+ _defineProperty(HtmlAttributeNames, "ocwCitationPaneClassName", "ocw-citation-pane");
200
+ _defineProperty(HtmlAttributeNames, "ocwCitationPaneTitle", "Citation");
199
201
  let WebChatMiddlewareConstants = /*#__PURE__*/_createClass(function WebChatMiddlewareConstants() {
200
202
  _classCallCheck(this, WebChatMiddlewareConstants);
201
203
  });
@@ -154,6 +154,7 @@ exports.TelemetryEvent = TelemetryEvent;
154
154
  TelemetryEvent["EmailTranscriptLoaded"] = "EmailTranscriptLoaded";
155
155
  TelemetryEvent["OutOfOfficePaneLoaded"] = "OutOfOfficePaneLoaded";
156
156
  TelemetryEvent["ConfirmationPaneLoaded"] = "ConfirmationPaneLoaded";
157
+ TelemetryEvent["CitationPaneLoaded"] = "CitationPaneLoaded";
157
158
  TelemetryEvent["ProactiveChatPaneLoaded"] = "ProactiveChatPaneLoaded";
158
159
  TelemetryEvent["ReconnectChatPaneLoaded"] = "ReconnectChatPaneLoaded";
159
160
  TelemetryEvent["HeaderCloseButtonClicked"] = "HeaderCloseButtonClicked";
@@ -280,7 +281,9 @@ exports.TelemetryEvent = TelemetryEvent;
280
281
  TelemetryEvent["UXLCWChatButtonLoadingStart"] = "UXLCWChatButtonLoadingStart";
281
282
  TelemetryEvent["UXLCWChatButtonLoadingCompleted"] = "UXLCWChatButtonLoadingCompleted";
282
283
  TelemetryEvent["UXConfirmationPaneStart"] = "UXConfirmationPaneStart";
284
+ TelemetryEvent["UXCitationPaneStart"] = "UXCitationPaneStart";
283
285
  TelemetryEvent["UXConfirmationPaneCompleted"] = "UXConfirmationPaneCompleted";
286
+ TelemetryEvent["UXCitationPaneCompleted"] = "UXCitationPaneCompleted";
284
287
  TelemetryEvent["UXLiveChatWidgetStart"] = "UXLiveChatWidgetStart";
285
288
  TelemetryEvent["UXLiveChatWidgetCompleted"] = "UXLiveChatWidgetCompleted";
286
289
  TelemetryEvent["AppInsightsInitialized"] = "AppInsightsInitialized";
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.CitationDim = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _reactDom = _interopRequireDefault(require("react-dom"));
9
+ var _DimLayer = require("../dimlayer/DimLayer");
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ const CONTAINER_SELECTOR = ".webchat__stacked-layout_container";
12
+ const CitationDim = _ref => {
13
+ let {
14
+ brightness = "0.2"
15
+ } = _ref;
16
+ const container = document.querySelector(CONTAINER_SELECTOR);
17
+ if (!container) return null;
18
+ return /*#__PURE__*/_reactDom.default.createPortal( /*#__PURE__*/_react.default.createElement("div", {
19
+ style: {
20
+ position: "absolute",
21
+ inset: 0
22
+ }
23
+ }, /*#__PURE__*/_react.default.createElement(_DimLayer.DimLayer, {
24
+ brightness: brightness
25
+ })), container);
26
+ };
27
+ exports.CitationDim = CitationDim;
28
+ var _default = CitationDim;
29
+ exports.default = _default;
@@ -0,0 +1,199 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.CitationPaneStateful = void 0;
7
+ var _TelemetryConstants = require("../../common/telemetry/TelemetryConstants");
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _utils = require("../../common/utils");
10
+ var _CitationDim = _interopRequireDefault(require("./CitationDim"));
11
+ var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
12
+ var _Constants = require("../../common/Constants");
13
+ var _LiveChatWidgetActionType = require("../../contexts/common/LiveChatWidgetActionType");
14
+ var _TelemetryHelper = require("../../common/telemetry/TelemetryHelper");
15
+ var _defaultCitationPaneProps = require("./common/defaultProps/defaultCitationPaneProps");
16
+ var _useChatContextStore = _interopRequireDefault(require("../../hooks/useChatContextStore"));
17
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
+ 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
+ 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; }
20
+ let uiTimer;
21
+ const CitationPaneStateful = props => {
22
+ var _props$styleProps3;
23
+ (0, _react.useEffect)(() => {
24
+ uiTimer = (0, _utils.createTimer)();
25
+ _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
26
+ Event: _TelemetryConstants.TelemetryEvent.UXCitationPaneStart
27
+ });
28
+ }, []);
29
+ const initialTabIndexMap = new Map();
30
+ let elements = [];
31
+
32
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
33
+ const [state, dispatch] = (0, _useChatContextStore.default)();
34
+
35
+ // Use props.id if provided, otherwise fall back to default
36
+ const controlId = props.id || _Constants.HtmlAttributeNames.ocwCitationPaneClassName;
37
+
38
+ // Pane style computed to match the webchat widget container bounds so the pane
39
+ // stays within the widget and scrolls only vertically. We also track an
40
+ // "isReady" flag so we don't render the pane contents until the style is
41
+ // computed — this prevents a transient render that can appear as a flicker.
42
+ const [paneStyle, setPaneStyle] = (0, _react.useState)(null);
43
+ const [isReady, setIsReady] = (0, _react.useState)(false);
44
+
45
+ // Move focus to the container
46
+ (0, _react.useEffect)(() => {
47
+ (0, _utils.preventFocusToMoveOutOfElement)(controlId);
48
+ const focusableElements = (0, _utils.findAllFocusableElement)(`#${controlId}`);
49
+ requestAnimationFrame(() => {
50
+ if (focusableElements && focusableElements.length > 0 && focusableElements[0]) {
51
+ focusableElements[0].focus({
52
+ preventScroll: true
53
+ });
54
+ }
55
+ });
56
+ elements = (0, _utils.findParentFocusableElementsWithoutChildContainer)(controlId);
57
+ (0, _utils.setTabIndices)(elements, initialTabIndexMap, false);
58
+ _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
59
+ Event: _TelemetryConstants.TelemetryEvent.CitationPaneLoaded
60
+ });
61
+ _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
62
+ Event: _TelemetryConstants.TelemetryEvent.UXCitationPaneCompleted,
63
+ ElapsedTimeInMilliseconds: uiTimer.milliSecondsElapsed
64
+ });
65
+ }, []);
66
+
67
+ // Compute the widget bounds and set pane style accordingly (95% of widget size
68
+ // and centered inside the widget). If the widget container can't be found,
69
+ // fall back to the default pane styles from defaultCitationPaneProps.
70
+ (0, _react.useEffect)(() => {
71
+ const compute = () => {
72
+ var _props$styleProps2;
73
+ try {
74
+ const container = document.querySelector(".webchat__stacked-layout_container");
75
+ if (container) {
76
+ var _props$styleProps;
77
+ const rect = container.getBoundingClientRect();
78
+ const widthPx = Math.round(rect.width * 0.95);
79
+ const heightPx = Math.round(rect.height * 0.95);
80
+ const leftPx = Math.round(rect.left + (rect.width - widthPx) / 2);
81
+ const topPx = Math.round(rect.top + (rect.height - heightPx) / 2);
82
+ // Clone defaults and remove transform so explicit left/top pixel
83
+ // coordinates are respected and the pane stays within the
84
+ // widget bounds.
85
+ const base = Object.assign({}, _defaultCitationPaneProps.defaultCitationPaneStyles.pane);
86
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
87
+ if (base && base.transform) {
88
+ // remove centering transform when we compute exact pixel coords
89
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
90
+ delete base.transform;
91
+ }
92
+
93
+ // Merge user styles first, then computed positioning to ensure proper positioning
94
+ const computedStyle = {
95
+ left: `${leftPx}px`,
96
+ top: `${topPx}px`,
97
+ width: `${widthPx}px`,
98
+ height: `${heightPx}px`
99
+ };
100
+
101
+ // Apply user styles first, then override with computed positioning
102
+ const generalProps = (_props$styleProps = props.styleProps) === null || _props$styleProps === void 0 ? void 0 : _props$styleProps.generalStyleProps;
103
+ const userStyles = generalProps && typeof generalProps === "object" ? Object.assign({}, generalProps) : {};
104
+ // Remove positioning properties from user styles that would interfere
105
+ delete userStyles.position;
106
+ delete userStyles.left;
107
+ delete userStyles.top;
108
+ delete userStyles.width;
109
+ delete userStyles.height;
110
+ setPaneStyle(Object.assign({}, base, userStyles, computedStyle));
111
+ // Make the pane visible after the next paint to avoid layout
112
+ // flashes on initial mount.
113
+ requestAnimationFrame(() => setIsReady(true));
114
+ return;
115
+ }
116
+ } catch (e) {
117
+ // ignore
118
+ }
119
+
120
+ // fallback - merge defaults with user-provided styles but preserve positioning
121
+ const generalProps = (_props$styleProps2 = props.styleProps) === null || _props$styleProps2 === void 0 ? void 0 : _props$styleProps2.generalStyleProps;
122
+ const userStyles = generalProps && typeof generalProps === "object" ? Object.assign({}, generalProps) : {};
123
+ // Remove positioning properties from user styles for fallback
124
+ delete userStyles.position;
125
+ delete userStyles.left;
126
+ delete userStyles.top;
127
+ delete userStyles.width;
128
+ delete userStyles.height;
129
+ const fallbackStyle = Object.assign({}, _defaultCitationPaneProps.defaultCitationPaneStyles.pane, userStyles);
130
+ setPaneStyle(fallbackStyle);
131
+ requestAnimationFrame(() => setIsReady(true));
132
+ };
133
+ compute();
134
+ window.addEventListener("resize", compute);
135
+ return () => window.removeEventListener("resize", compute);
136
+ }, [(_props$styleProps3 = props.styleProps) === null || _props$styleProps3 === void 0 ? void 0 : _props$styleProps3.generalStyleProps]);
137
+ const handleClose = () => {
138
+ if (props.onClose) props.onClose();
139
+ dispatch({
140
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_PREVIOUS_FOCUSED_ELEMENT_ID,
141
+ payload: null
142
+ });
143
+ (0, _utils.setTabIndices)(elements, initialTabIndexMap, true);
144
+ };
145
+
146
+ // Merge a safe style object for the container and cast to CSSProperties to satisfy TS
147
+ const baseStyle = Object.assign({
148
+ position: "relative"
149
+ }, paneStyle ?? {
150
+ position: "fixed"
151
+ });
152
+
153
+ // If paneStyle hasn't been computed yet, render the DimLayer so clicks
154
+ // still close overlays but hide the pane itself to avoid flashes.
155
+ const hiddenStyle = {
156
+ visibility: isReady ? "visible" : "hidden",
157
+ pointerEvents: isReady ? "auto" : "none"
158
+ };
159
+
160
+ // Default wrapper styles - these control the positioning container
161
+ const defaultWrapperStyles = {
162
+ display: "flex",
163
+ flexDirection: "column",
164
+ zIndex: 10001
165
+ };
166
+
167
+ // Wrapper styles for the positioning container
168
+ const wrapperStyles = Object.assign({}, baseStyle, hiddenStyle, defaultWrapperStyles);
169
+
170
+ // Merge the computed positioning styles with user's generalStyleProps for the CitationPane
171
+ const mergedStyleProps = props.styleProps ? {
172
+ ...props.styleProps,
173
+ generalStyleProps: Object.assign({}, props.styleProps.generalStyleProps)
174
+ } : undefined;
175
+ const controlProps = {
176
+ id: controlId,
177
+ dir: state.domainStates.globalDir,
178
+ titleText: props.title,
179
+ contentHtml: props.contentHtml,
180
+ brightnessValueOnDim: "0.2",
181
+ // Default brightness
182
+ onClose: handleClose,
183
+ ...(props === null || props === void 0 ? void 0 : props.controlProps) // User props override defaults
184
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
185
+ };
186
+
187
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_CitationDim.default, {
188
+ brightness: controlProps.brightnessValueOnDim
189
+ }), /*#__PURE__*/_react.default.createElement("div", {
190
+ style: wrapperStyles
191
+ }, /*#__PURE__*/_react.default.createElement(_omnichannelChatComponents.CitationPane, {
192
+ componentOverrides: props === null || props === void 0 ? void 0 : props.componentOverrides,
193
+ controlProps: controlProps,
194
+ styleProps: mergedStyleProps
195
+ })));
196
+ };
197
+ exports.CitationPaneStateful = CitationPaneStateful;
198
+ var _default = CitationPaneStateful;
199
+ exports.default = _default;
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.defaultCitationPaneStyles = exports.defaultCitationContentCSS = exports.default = void 0;
7
+ const defaultCitationPaneStyles = {
8
+ pane: {
9
+ position: "fixed",
10
+ left: "50%",
11
+ top: "18%",
12
+ transform: "translateX(-50%)",
13
+ background: "#fff",
14
+ width: "85%",
15
+ height: "85%",
16
+ overflowY: "auto",
17
+ overflowX: "hidden",
18
+ padding: 16,
19
+ borderRadius: 6,
20
+ zIndex: 10001,
21
+ boxSizing: "border-box"
22
+ }
23
+ };
24
+ exports.defaultCitationPaneStyles = defaultCitationPaneStyles;
25
+ const defaultCitationContentCSS = controlId => `
26
+ #${controlId} .citation-content {
27
+ flex: 1;
28
+ min-height: 0; /* allow flex child to scroll */
29
+ overflow-y: auto;
30
+ overflow-x: auto;
31
+ margin-bottom: 12px;
32
+ white-space: normal; /* wrap normal text */
33
+ word-break: break-word;
34
+ -webkit-overflow-scrolling: touch;
35
+ }
36
+
37
+ #${controlId} .citation-content pre,
38
+ #${controlId} .citation-content code {
39
+ white-space: pre; /* preserve formatting */
40
+ }
41
+
42
+ #${controlId} .citation-content table {
43
+ width: 100%;
44
+ border-collapse: collapse;
45
+ margin-bottom: 12px;
46
+ table-layout: auto;
47
+ overflow-x: auto;
48
+ display: block;
49
+ }
50
+
51
+ #${controlId} .citation-content table th,
52
+ #${controlId} .citation-content table td {
53
+ padding: 8px 12px;
54
+ border: 1px solid rgba(0,0,0,0.08);
55
+ text-align: left;
56
+ vertical-align: top;
57
+ word-break: break-word;
58
+ }
59
+
60
+ #${controlId} .citation-content img {
61
+ max-width: 100%;
62
+ height: auto;
63
+ }
64
+ `;
65
+ exports.defaultCitationContentCSS = defaultCitationContentCSS;
66
+ var _default = {
67
+ defaultCitationPaneStyles,
68
+ defaultCitationContentCSS
69
+ };
70
+ exports.default = _default;
@@ -22,13 +22,13 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
22
22
  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); }
23
23
  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; }
24
24
  const LiveChatWidget = props => {
25
- var _props$mock, _props$featureConfigP, _props$chatConfig, _props$chatConfig$Liv, _props$chatConfig2, _props$chatConfig2$Li;
25
+ var _props$featureConfigP, _props$chatConfig, _props$chatConfig$Liv, _props$chatConfig2, _props$chatConfig2$Li;
26
26
  const reducer = (0, _createReducer.createReducer)();
27
27
  const [state, dispatch] = (0, _react.useReducer)(reducer, (0, _LiveChatWidgetContextInitialState.getLiveChatWidgetContextInitialState)(props));
28
28
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
29
29
  const [adapter, setAdapter] = (0, _react.useState)(undefined);
30
30
  const [facadeChatSDK, setFacadeChatSDK] = (0, _react.useState)(undefined);
31
- const chatSDK = (0, _getMockChatSDKIfApplicable.getMockChatSDKIfApplicable)(props.chatSDK, props === null || props === void 0 ? void 0 : (_props$mock = props.mock) === null || _props$mock === void 0 ? void 0 : _props$mock.type);
31
+ const chatSDK = (0, _getMockChatSDKIfApplicable.getMockChatSDKIfApplicable)(props.chatSDK, props === null || props === void 0 ? void 0 : props.mock);
32
32
  const disableReauthentication = ((_props$featureConfigP = props.featureConfigProps) === null || _props$featureConfigP === void 0 ? void 0 : _props$featureConfigP.disableReauthentication) === true;
33
33
  (0, _overridePropsOnMockIfApplicable.default)(props);
34
34
  if (!props.chatConfig) {
@@ -38,14 +38,14 @@ const LiveChatWidget = props => {
38
38
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
39
39
  const isAuthenticatedChat = !!((_props$chatConfig = props.chatConfig) !== null && _props$chatConfig !== void 0 && (_props$chatConfig$Liv = _props$chatConfig.LiveChatConfigAuthSettings) !== null && _props$chatConfig$Liv !== void 0 && _props$chatConfig$Liv.msdyn_javascriptclientfunction) || (0, _liveChatConfigUtils.isPersistentChatEnabled)((_props$chatConfig2 = props.chatConfig) === null || _props$chatConfig2 === void 0 ? void 0 : (_props$chatConfig2$Li = _props$chatConfig2.LiveWSAndLiveChatEngJoin) === null || _props$chatConfig2$Li === void 0 ? void 0 : _props$chatConfig2$Li.msdyn_conversationmode);
40
40
  if (!facadeChatSDK) {
41
- var _props$mock2;
41
+ var _props$mock;
42
42
  setFacadeChatSDK(new _FacadeChatSDK.FacadeChatSDK({
43
43
  "chatSDK": chatSDK,
44
44
  "chatConfig": props.chatConfig,
45
45
  "isAuthenticated": isAuthenticatedChat,
46
46
  "getAuthToken": props === null || props === void 0 ? void 0 : props.getAuthToken,
47
47
  //when type is not undefined, it means the SDK is mocked
48
- "isSDKMocked": !(0, _utils.isNullOrUndefined)(props === null || props === void 0 ? void 0 : (_props$mock2 = props.mock) === null || _props$mock2 === void 0 ? void 0 : _props$mock2.type)
48
+ "isSDKMocked": !(0, _utils.isNullOrUndefined)(props === null || props === void 0 ? void 0 : (_props$mock = props.mock) === null || _props$mock === void 0 ? void 0 : _props$mock.type)
49
49
  }, disableReauthentication));
50
50
  }
51
51
  (0, _react.useEffect)(() => {
@@ -17,7 +17,6 @@ function _toPrimitive(input, hint) { if (typeof input !== "object" || input ===
17
17
  const supportedSignInCardContentTypes = ["application/vnd.microsoft.card.signin", "application/vnd.microsoft.card.oauth"];
18
18
  const botOauthUrlRegex = /[\S]+.botframework.com\/api\/oauth\/signin\?signin=([\S]+)/;
19
19
  const delay = t => new Promise(resolve => setTimeout(resolve, t));
20
- let response;
21
20
  const extractSignInId = signInUrl => {
22
21
  const result = botOauthUrlRegex.exec(signInUrl);
23
22
  if (result && result[1]) {
@@ -53,20 +52,20 @@ const fetchBotAuthConfig = async (retries, interval) => {
53
52
  eventName: _TelemetryConstants.BroadcastEvent.BotAuthConfigRequest
54
53
  };
55
54
  _omnichannelChatComponents.BroadcastService.postMessage(botAuthConfigRequestEvent);
55
+ let response;
56
56
  const listener = _omnichannelChatComponents.BroadcastService.getMessageByEventName(_TelemetryConstants.BroadcastEvent.BotAuthConfigResponse).subscribe(data => {
57
57
  var _data$payload, _data$payload2;
58
58
  response = ((_data$payload = data.payload) === null || _data$payload === void 0 ? void 0 : _data$payload.response) !== undefined ? (_data$payload2 = data.payload) === null || _data$payload2 === void 0 ? void 0 : _data$payload2.response : response;
59
59
  listener.unsubscribe();
60
60
  });
61
- if (response !== undefined) {
62
- //return response;
63
- return response;
64
- }
65
61
  if (retries === 1) {
66
62
  // Base Case
67
63
  throw new Error();
68
64
  }
69
65
  await delay(interval);
66
+ if (response !== undefined) {
67
+ return response;
68
+ }
70
69
  return await fetchBotAuthConfig(--retries, interval);
71
70
  };
72
71
  let BotAuthActivitySubscriber = /*#__PURE__*/function () {
@@ -44,7 +44,7 @@ const prepareEndChat = async (props, facadeChatSDK, state, dispatch, setAdapter,
44
44
  }
45
45
 
46
46
  // Use Case: If ended by Agent, stay chat in InActive state
47
- let isConversationalSurveyEnabled = state.appStates.isConversationalSurveyEnabled;
47
+ const isConversationalSurveyEnabled = state.appStates.isConversationalSurveyEnabled;
48
48
  if (isConversationalSurveyEnabled && ((state === null || state === void 0 ? void 0 : (_state$appStates2 = state.appStates) === null || _state$appStates2 === void 0 ? void 0 : _state$appStates2.conversationEndedBy) === _Constants.ConversationEndEntity.Agent || (state === null || state === void 0 ? void 0 : (_state$appStates3 = state.appStates) === null || _state$appStates3 === void 0 ? void 0 : _state$appStates3.conversationEndedBy) === _Constants.ConversationEndEntity.Bot)) {
49
49
  dispatch({
50
50
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
@@ -153,8 +153,23 @@ const endChat = async (props, facadeChatSDK, state, dispatch, setAdapter, setWeb
153
153
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.GET_IN_MEMORY_STATE,
154
154
  payload: null
155
155
  });
156
+ let isSessionEnded = inMemoryState === null || inMemoryState === void 0 ? void 0 : (_inMemoryState$appSta = inMemoryState.appStates) === null || _inMemoryState$appSta === void 0 ? void 0 : _inMemoryState$appSta.chatDisconnectEventReceived;
157
+ if (!isSessionEnded) {
158
+ // double check by fetching the latest conversation details
159
+ const conversationDetails = await (0, _utils.getConversationDetailsCall)(facadeChatSDK);
160
+ if ((conversationDetails === null || conversationDetails === void 0 ? void 0 : conversationDetails.state) === _Constants.LiveWorkItemState.WrapUp || (conversationDetails === null || conversationDetails === void 0 ? void 0 : conversationDetails.state) === _Constants.LiveWorkItemState.Closed) {
161
+ _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
162
+ Event: _TelemetryConstants.TelemetryEvent.ChatDisconnectThreadEventReceived,
163
+ Description: "Checking conversation details upon endChat. Chat disconnected.",
164
+ CustomProperties: {
165
+ conversationDetails
166
+ }
167
+ });
168
+ isSessionEnded = true;
169
+ }
170
+ }
156
171
  const endChatOptionalParameters = {
157
- isSessionEnded: inMemoryState === null || inMemoryState === void 0 ? void 0 : (_inMemoryState$appSta = inMemoryState.appStates) === null || _inMemoryState$appSta === void 0 ? void 0 : _inMemoryState$appSta.chatDisconnectEventReceived
172
+ isSessionEnded
158
173
  };
159
174
  try {
160
175
  _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.INFO, {
@@ -305,6 +320,10 @@ const closeChatStateCleanUp = dispatch => {
305
320
  proactiveChatInNewWindow: false
306
321
  }
307
322
  });
323
+ dispatch({
324
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CITATIONS,
325
+ payload: {}
326
+ });
308
327
 
309
328
  // Clear live chat context only if chat widget is fully closed to support transcript calls after sessionclose is called
310
329
  dispatch({
@@ -8,14 +8,15 @@ var _DemoChatSDK = require("../../webchatcontainerstateful/common/DemoChatSDK");
8
8
  var _DesignerChatSDK = require("../../webchatcontainerstateful/common/DesignerChatSDK");
9
9
  var _mockchatsdk = require("../../webchatcontainerstateful/common/mockchatsdk");
10
10
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
11
- const getMockChatSDKIfApplicable = (chatSDK, type) => {
12
- if (type) {
13
- switch (type.toLowerCase()) {
11
+ const getMockChatSDKIfApplicable = (chatSDK, mockProps) => {
12
+ if (mockProps !== null && mockProps !== void 0 && mockProps.type) {
13
+ switch (mockProps.type.toLowerCase()) {
14
14
  case "demo":
15
15
  chatSDK = new _DemoChatSDK.DemoChatSDK();
16
16
  break;
17
17
  case "designer":
18
18
  chatSDK = new _DesignerChatSDK.DesignerChatSDK();
19
+ chatSDK.mockMessages = mockProps === null || mockProps === void 0 ? void 0 : mockProps.mockMessages;
19
20
  break;
20
21
  default:
21
22
  chatSDK = new _mockchatsdk.MockChatSDK();
@@ -123,7 +123,7 @@ const initWebChatComposer = (props, state, dispatch, facadeChatSDK, endChat) =>
123
123
  };
124
124
  webChatStore = (0, _botframeworkWebchat.createStore)({},
125
125
  //initial state
126
- _preProcessingMiddleware.default, _attachmentProcessingMiddleware.default, (0, _attachmentUploadValidatorMiddleware.default)((_state$domainStates$l = state.domainStates.liveChatConfig) === null || _state$domainStates$l === void 0 ? void 0 : _state$domainStates$l.allowedFileExtensions, (_state$domainStates$l2 = state.domainStates.liveChatConfig) === null || _state$domainStates$l2 === void 0 ? void 0 : _state$domainStates$l2.maxUploadFileSize, localizedTexts), (0, _customEventMiddleware.default)(_omnichannelChatComponents.BroadcastService), (0, _queueOverflowHandlerMiddleware.createQueueOverflowMiddleware)(state, dispatch), (0, _channelDataMiddleware.default)(addConversationalSurveyTagsCallback), (0, _conversationEndMiddleware.default)(conversationEndCallback, startConversationalSurveyCallback, endConversationalSurveyCallback), (0, _dataMaskingMiddleware.default)((_state$domainStates$l3 = state.domainStates.liveChatConfig) === null || _state$domainStates$l3 === void 0 ? void 0 : _state$domainStates$l3.DataMaskingInfo), _messageTimestampMiddleware.createMessageTimeStampMiddleware, _messageSequenceIdOverrideMiddleware.createMessageSequenceIdOverrideMiddleware, _citationsMiddleware.createCitationsMiddleware, _gifUploadMiddleware.default, _htmlPlayerMiddleware.default, (0, _htmlTextMiddleware.default)(honorsTargetInHTMLLinks), (0, _maxMessageSizeValidator.default)(localizedTexts), _sanitizationMiddleware.default, (0, _callActionMiddleware.default)(), (0, _localizedStringsBotInitialsMiddleware.localizedStringsBotInitialsMiddleware)(),
126
+ _preProcessingMiddleware.default, _attachmentProcessingMiddleware.default, (0, _attachmentUploadValidatorMiddleware.default)((_state$domainStates$l = state.domainStates.liveChatConfig) === null || _state$domainStates$l === void 0 ? void 0 : _state$domainStates$l.allowedFileExtensions, (_state$domainStates$l2 = state.domainStates.liveChatConfig) === null || _state$domainStates$l2 === void 0 ? void 0 : _state$domainStates$l2.maxUploadFileSize, localizedTexts), (0, _customEventMiddleware.default)(_omnichannelChatComponents.BroadcastService), (0, _queueOverflowHandlerMiddleware.createQueueOverflowMiddleware)(state, dispatch), (0, _channelDataMiddleware.default)(addConversationalSurveyTagsCallback), (0, _conversationEndMiddleware.default)(conversationEndCallback, startConversationalSurveyCallback, endConversationalSurveyCallback), (0, _dataMaskingMiddleware.default)((_state$domainStates$l3 = state.domainStates.liveChatConfig) === null || _state$domainStates$l3 === void 0 ? void 0 : _state$domainStates$l3.DataMaskingInfo), _messageTimestampMiddleware.createMessageTimeStampMiddleware, _messageSequenceIdOverrideMiddleware.createMessageSequenceIdOverrideMiddleware, (0, _citationsMiddleware.createCitationsMiddleware)(state, dispatch), _gifUploadMiddleware.default, _htmlPlayerMiddleware.default, (0, _htmlTextMiddleware.default)(honorsTargetInHTMLLinks), (0, _maxMessageSizeValidator.default)(localizedTexts), _sanitizationMiddleware.default, (0, _callActionMiddleware.default)(), (0, _localizedStringsBotInitialsMiddleware.localizedStringsBotInitialsMiddleware)(),
127
127
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
128
128
  ...(((_props$webChatContain7 = props.webChatContainerProps) === null || _props$webChatContain7 === void 0 ? void 0 : _props$webChatContain7.storeMiddlewares) ?? []));
129
129
  _WebChatStoreLoader.WebChatStoreLoader.store = webChatStore;
@@ -7,6 +7,7 @@ exports.default = void 0;
7
7
  const overridePropsOnMockIfApplicable = props => {
8
8
  var _props$mock, _props$mock2;
9
9
  if (props !== null && props !== void 0 && (_props$mock = props.mock) !== null && _props$mock !== void 0 && _props$mock.type && (props === null || props === void 0 ? void 0 : (_props$mock2 = props.mock) === null || _props$mock2 === void 0 ? void 0 : _props$mock2.type.toLowerCase()) === "designer") {
10
+ var _props$mock3, _props$mock3$mockMess;
10
11
  if (!props.webChatContainerProps) {
11
12
  props.webChatContainerProps = {};
12
13
  }
@@ -22,7 +23,7 @@ const overridePropsOnMockIfApplicable = props => {
22
23
  props.webChatContainerProps = {
23
24
  ...props.webChatContainerProps,
24
25
  webChatProps: {
25
- disabled: true,
26
+ disabled: !(props !== null && props !== void 0 && (_props$mock3 = props.mock) !== null && _props$mock3 !== void 0 && (_props$mock3$mockMess = _props$mock3.mockMessages) !== null && _props$mock3$mockMess !== void 0 && _props$mock3$mockMess.length),
26
27
  ...props.webChatContainerProps.webChatProps,
27
28
  overrideLocalizedStrings: {
28
29
  TEXT_INPUT_PLACEHOLDER: "Send a message . . .",
@@ -105,7 +105,7 @@ const setPreChatAndInitiateChat = async (facadeChatSDK, dispatch, setAdapter, is
105
105
 
106
106
  // If minimized, maximize the chat, if the state is missing, consider it as minimized
107
107
  if ((state === null || state === void 0 ? void 0 : state.appStates.isMinimized) === undefined || (state === null || state === void 0 ? void 0 : (_state$appStates = state.appStates) === null || _state$appStates === void 0 ? void 0 : _state$appStates.isMinimized) === true) {
108
- var _state$domainStates3, _state$domainStates3$, _state$domainStates4, _state$domainStates4$;
108
+ var _state$domainStates3, _state$domainStates3$, _state$domainStates4, _state$domainStates4$, _TelemetryManager$Int;
109
109
  dispatch({
110
110
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_MINIMIZED,
111
111
  payload: false
@@ -116,7 +116,8 @@ const setPreChatAndInitiateChat = async (facadeChatSDK, dispatch, setAdapter, is
116
116
  eventName: _TelemetryConstants.BroadcastEvent.MaximizeChat,
117
117
  payload: {
118
118
  height: state === null || state === void 0 ? void 0 : (_state$domainStates3 = state.domainStates) === null || _state$domainStates3 === void 0 ? void 0 : (_state$domainStates3$ = _state$domainStates3.widgetSize) === null || _state$domainStates3$ === void 0 ? void 0 : _state$domainStates3$.height,
119
- width: state === null || state === void 0 ? void 0 : (_state$domainStates4 = state.domainStates) === null || _state$domainStates4 === void 0 ? void 0 : (_state$domainStates4$ = _state$domainStates4.widgetSize) === null || _state$domainStates4$ === void 0 ? void 0 : _state$domainStates4$.width
119
+ width: state === null || state === void 0 ? void 0 : (_state$domainStates4 = state.domainStates) === null || _state$domainStates4 === void 0 ? void 0 : (_state$domainStates4$ = _state$domainStates4.widgetSize) === null || _state$domainStates4$ === void 0 ? void 0 : _state$domainStates4$.width,
120
+ runtimeId: _TelemetryManager.TelemetryManager === null || _TelemetryManager.TelemetryManager === void 0 ? void 0 : (_TelemetryManager$Int = _TelemetryManager.TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int === void 0 ? void 0 : _TelemetryManager$Int.lcwRuntimeId
120
121
  }
121
122
  });
122
123
  }
@@ -137,7 +138,7 @@ const setPreChatAndInitiateChat = async (facadeChatSDK, dispatch, setAdapter, is
137
138
  * This is because a new change to control OOH as closed event when a widget is coming from chat.
138
139
  */
139
140
  if ((state === null || state === void 0 ? void 0 : state.appStates.isMinimized) === undefined || (state === null || state === void 0 ? void 0 : (_state$appStates2 = state.appStates) === null || _state$appStates2 === void 0 ? void 0 : _state$appStates2.isMinimized) === true) {
140
- var _state$domainStates5, _state$domainStates5$, _state$domainStates6, _state$domainStates6$, _TelemetryManager$Int;
141
+ var _state$domainStates5, _state$domainStates5$, _state$domainStates6, _state$domainStates6$, _TelemetryManager$Int2;
141
142
  dispatch({
142
143
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_MINIMIZED,
143
144
  payload: false
@@ -148,7 +149,7 @@ const setPreChatAndInitiateChat = async (facadeChatSDK, dispatch, setAdapter, is
148
149
  payload: {
149
150
  height: state === null || state === void 0 ? void 0 : (_state$domainStates5 = state.domainStates) === null || _state$domainStates5 === void 0 ? void 0 : (_state$domainStates5$ = _state$domainStates5.widgetSize) === null || _state$domainStates5$ === void 0 ? void 0 : _state$domainStates5$.height,
150
151
  width: state === null || state === void 0 ? void 0 : (_state$domainStates6 = state.domainStates) === null || _state$domainStates6 === void 0 ? void 0 : (_state$domainStates6$ = _state$domainStates6.widgetSize) === null || _state$domainStates6$ === void 0 ? void 0 : _state$domainStates6$.width,
151
- runtimeId: _TelemetryManager.TelemetryManager === null || _TelemetryManager.TelemetryManager === void 0 ? void 0 : (_TelemetryManager$Int = _TelemetryManager.TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int === void 0 ? void 0 : _TelemetryManager$Int.lcwRuntimeId
152
+ runtimeId: _TelemetryManager.TelemetryManager === null || _TelemetryManager.TelemetryManager === void 0 ? void 0 : (_TelemetryManager$Int2 = _TelemetryManager.TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int2 === void 0 ? void 0 : _TelemetryManager$Int2.lcwRuntimeId
152
153
  }
153
154
  });
154
155
  }
@@ -1,7 +1,13 @@
1
1
  "use strict";
2
2
 
3
- var LiveChatWidgetMockType;
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.LiveChatWidgetMockType = void 0;
7
+ let LiveChatWidgetMockType;
8
+ exports.LiveChatWidgetMockType = LiveChatWidgetMockType;
4
9
  (function (LiveChatWidgetMockType) {
5
10
  LiveChatWidgetMockType["Test"] = "Test";
6
11
  LiveChatWidgetMockType["Demo"] = "Demo";
7
- })(LiveChatWidgetMockType || (LiveChatWidgetMockType = {}));
12
+ LiveChatWidgetMockType["Designer"] = "Designer";
13
+ })(LiveChatWidgetMockType || (exports.LiveChatWidgetMockType = LiveChatWidgetMockType = {}));
@@ -488,7 +488,8 @@ const LiveChatWidgetStateful = props => {
488
488
  eventName: _TelemetryConstants.BroadcastEvent.MaximizeChat,
489
489
  payload: {
490
490
  height: inMemoryState === null || inMemoryState === void 0 ? void 0 : (_inMemoryState$domain = inMemoryState.domainStates) === null || _inMemoryState$domain === void 0 ? void 0 : (_inMemoryState$domain2 = _inMemoryState$domain.widgetSize) === null || _inMemoryState$domain2 === void 0 ? void 0 : _inMemoryState$domain2.height,
491
- width: inMemoryState === null || inMemoryState === void 0 ? void 0 : (_inMemoryState$domain3 = inMemoryState.domainStates) === null || _inMemoryState$domain3 === void 0 ? void 0 : (_inMemoryState$domain4 = _inMemoryState$domain3.widgetSize) === null || _inMemoryState$domain4 === void 0 ? void 0 : _inMemoryState$domain4.width
491
+ width: inMemoryState === null || inMemoryState === void 0 ? void 0 : (_inMemoryState$domain3 = inMemoryState.domainStates) === null || _inMemoryState$domain3 === void 0 ? void 0 : (_inMemoryState$domain4 = _inMemoryState$domain3.widgetSize) === null || _inMemoryState$domain4 === void 0 ? void 0 : _inMemoryState$domain4.width,
492
+ lcwRuntimeId: _TelemetryManager.TelemetryManager.InternalTelemetryData.lcwRuntimeId
492
493
  }
493
494
  });
494
495
  return;
@@ -876,23 +877,46 @@ const LiveChatWidgetStateful = props => {
876
877
 
877
878
  // WebChat's Composer can only be rendered if a directLine object is defined
878
879
  return directLine && /*#__PURE__*/_react2.default.createElement(_react2.default.Fragment, null, /*#__PURE__*/_react2.default.createElement("style", null, `
879
- ::-webkit-scrollbar {
880
+ #oc-lcw .webchat__basic-transcript__scrollable::-webkit-scrollbar {
880
881
  width: ${scrollbarProps.width};
881
882
  }
882
883
 
883
- ::-webkit-scrollbar-track {
884
+ #oc-lcw .webchat__basic-transcript__scrollable::-webkit-scrollbar-track {
884
885
  background: ${scrollbarProps.trackBackgroundColor};
885
886
  }
886
887
 
887
- ::-webkit-scrollbar-thumb {
888
+ #oc-lcw .webchat__basic-transcript__scrollable::-webkit-scrollbar-thumb {
888
889
  background: ${scrollbarProps.thumbBackgroundColor};
889
890
  border-radius: ${scrollbarProps.thumbBorderRadius};
890
891
  }
891
892
 
892
- ::-webkit-scrollbar-thumb:hover {
893
+ #oc-lcw .webchat__basic-transcript__scrollable::-webkit-scrollbar-thumb:hover {
893
894
  background: ${scrollbarProps.thumbHoverColor};
894
895
  }
895
896
 
897
+ /* High Contrast mode support - optimized for all variants */
898
+ @media (prefers-contrast: high), (-ms-high-contrast: active), (forced-colors: active) {
899
+ #oc-lcw .webchat__basic-transcript__scrollable::-webkit-scrollbar-track {
900
+ background: Canvas !important;
901
+ border: 1px solid CanvasText !important;
902
+ }
903
+
904
+ #oc-lcw .webchat__basic-transcript__scrollable::-webkit-scrollbar-thumb {
905
+ background: CanvasText !important;
906
+ border: 1px solid Canvas !important;
907
+ min-height: 20px !important;
908
+ }
909
+
910
+ #oc-lcw .webchat__basic-transcript__scrollable::-webkit-scrollbar-thumb:hover {
911
+ background: Highlight !important;
912
+ border: 1px solid CanvasText !important;
913
+ }
914
+
915
+ #oc-lcw .webchat__basic-transcript__scrollable::-webkit-scrollbar-corner {
916
+ background: Canvas !important;
917
+ }
918
+ }
919
+
896
920
  .webchat__basic-transcript__activity-markdown-body > :last-child {
897
921
  margin-bottom: 0px;
898
922
  }