@microsoft/omnichannel-chat-widget 1.7.4 → 1.7.5

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 (58) hide show
  1. package/lib/cjs/common/telemetry/TelemetryConstants.js +31 -0
  2. package/lib/cjs/common/telemetry/TelemetryHelper.js +10 -0
  3. package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +15 -1
  4. package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +14 -2
  5. package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +12 -0
  6. package/lib/cjs/components/footerstateful/FooterStateful.js +15 -0
  7. package/lib/cjs/components/headerstateful/HeaderStateful.js +16 -2
  8. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +7 -7
  9. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +35 -2
  10. package/lib/cjs/components/loadingpanestateful/LoadingPaneStateful.js +14 -2
  11. package/lib/cjs/components/notificationpanestateful/NotificationPaneStateful.js +21 -7
  12. package/lib/cjs/components/ooohpanestateful/OOOHPaneStateful.js +12 -1
  13. package/lib/cjs/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +14 -3
  14. package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +13 -0
  15. package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +12 -0
  16. package/lib/cjs/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +12 -1
  17. package/lib/cjs/components/startchaterrorpanestateful/StartChatErrorPaneStateful.js +19 -8
  18. package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +14 -1
  19. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +2 -3
  20. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/index.js +115 -0
  21. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageSequenceIdOverrideMiddleware.js +3 -4
  22. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +3 -4
  23. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/toastMiddleware.js +2 -3
  24. package/lib/cjs/index.js +25 -0
  25. package/lib/esm/common/telemetry/TelemetryConstants.js +31 -0
  26. package/lib/esm/common/telemetry/TelemetryHelper.js +10 -0
  27. package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +15 -1
  28. package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +14 -3
  29. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +13 -1
  30. package/lib/esm/components/footerstateful/FooterStateful.js +14 -0
  31. package/lib/esm/components/headerstateful/HeaderStateful.js +16 -2
  32. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +4 -4
  33. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +35 -2
  34. package/lib/esm/components/loadingpanestateful/LoadingPaneStateful.js +13 -2
  35. package/lib/esm/components/notificationpanestateful/NotificationPaneStateful.js +21 -7
  36. package/lib/esm/components/ooohpanestateful/OOOHPaneStateful.js +12 -1
  37. package/lib/esm/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +14 -3
  38. package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +13 -1
  39. package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +11 -0
  40. package/lib/esm/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +12 -1
  41. package/lib/esm/components/startchaterrorpanestateful/StartChatErrorPaneStateful.js +19 -8
  42. package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +14 -1
  43. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +2 -3
  44. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/index.js +10 -0
  45. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageSequenceIdOverrideMiddleware.js +2 -3
  46. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +2 -3
  47. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/toastMiddleware.js +2 -3
  48. package/lib/esm/index.js +2 -1
  49. package/lib/types/common/telemetry/TelemetryConstants.d.ts +32 -1
  50. package/lib/types/common/telemetry/TelemetryHelper.d.ts +1 -0
  51. package/lib/types/common/telemetry/definitions/Payload.d.ts +13 -0
  52. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.d.ts +1 -2
  53. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/index.d.ts +10 -0
  54. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageSequenceIdOverrideMiddleware.d.ts +1 -2
  55. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.d.ts +1 -2
  56. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/toastMiddleware.d.ts +1 -2
  57. package/lib/types/index.d.ts +1 -0
  58. package/package.json +2 -2
@@ -1,16 +1,24 @@
1
1
  import { LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
2
2
  import React, { useEffect, useRef, useState } from "react";
3
+ import { ConfirmationState } from "../../common/Constants";
3
4
  import { ConversationState } from "../../contexts/common/ConversationState";
5
+ import DraggableEventEmitter from "../draggable/DraggableEventEmitter";
4
6
  import { Header } from "@microsoft/omnichannel-chat-components";
5
7
  import { LiveChatWidgetActionType } from "../../contexts/common/LiveChatWidgetActionType";
6
8
  import { TelemetryHelper } from "../../common/telemetry/TelemetryHelper";
9
+ import { createTimer } from "../../common/utils";
7
10
  import { defaultOutOfOfficeHeaderStyleProps } from "./common/styleProps/defaultOutOfOfficeHeaderStyleProps";
8
11
  import useChatAdapterStore from "../../hooks/useChatAdapterStore";
9
12
  import useChatContextStore from "../../hooks/useChatContextStore";
10
- import { ConfirmationState } from "../../common/Constants";
11
- import DraggableEventEmitter from "../draggable/DraggableEventEmitter";
13
+ let uiTimer;
12
14
  export const HeaderStateful = props => {
13
15
  var _state$domainStates$l, _state$domainStates$l2, _state$domainStates, _headerProps$controlP, _headerProps$controlP2, _headerProps$controlP3, _outOfOfficeHeaderPro, _state$domainStates3;
16
+ useEffect(() => {
17
+ uiTimer = createTimer();
18
+ TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
19
+ Event: TelemetryEvent.UXHeaderStart
20
+ });
21
+ }, []);
14
22
  const [state, dispatch] = useChatContextStore();
15
23
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
24
  const [adapter] = useChatAdapterStore();
@@ -105,6 +113,12 @@ export const HeaderStateful = props => {
105
113
  elementId: outOfOperatingHours || state.appStates.conversationState === ConversationState.OutOfOffice ? outOfOfficeControlProps.id : controlProps.id,
106
114
  targetWindow: props.draggableEventEmitterTargetWindow ?? window
107
115
  };
116
+ useEffect(() => {
117
+ TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
118
+ Event: TelemetryEvent.UXHeaderCompleted,
119
+ ElapsedTimeInMilliseconds: uiTimer.milliSecondsElapsed
120
+ });
121
+ }, []);
108
122
  if (props.draggable === true) {
109
123
  var _generalStyleProps;
110
124
  const styleProps = outOfOperatingHours || state.appStates.conversationState === ConversationState.OutOfOffice ? outOfOfficeStyleProps : headerProps === null || headerProps === void 0 ? void 0 : headerProps.styleProps;
@@ -9,7 +9,7 @@ import { WebChatStoreLoader } from "../../webchatcontainerstateful/webchatcontro
9
9
  import attachmentProcessingMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware";
10
10
  import channelDataMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware";
11
11
  import { createActivityMiddleware } from "../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware";
12
- import createAttachmentMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware";
12
+ import { createAttachmentMiddleware } from "../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware";
13
13
  import createAttachmentUploadValidatorMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware";
14
14
  import { createAvatarMiddleware } from "../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware";
15
15
  import { createCardActionMiddleware } from "../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware";
@@ -17,10 +17,10 @@ import createConversationEndMiddleware from "../../webchatcontainerstateful/webc
17
17
  import createDataMaskingMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware";
18
18
  import { createMarkdown } from "./createMarkdown";
19
19
  import createMaxMessageSizeValidator from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator";
20
- import createMessageSequenceIdOverrideMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageSequenceIdOverrideMiddleware";
21
- import createMessageTimeStampMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware";
20
+ import { createMessageSequenceIdOverrideMiddleware } from "../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageSequenceIdOverrideMiddleware";
21
+ import { createMessageTimeStampMiddleware } from "../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware";
22
22
  import { createStore } from "botframework-webchat";
23
- import createToastMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/toastMiddleware";
23
+ import { createToastMiddleware } from "../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/toastMiddleware";
24
24
  import { createWebChatTelemetry } from "../../webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger";
25
25
  import { defaultAttachmentProps } from "../../webchatcontainerstateful/common/defaultProps/defaultAttachmentProps";
26
26
  import { defaultMiddlewareLocalizedTexts } from "../../webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts";
@@ -54,8 +54,15 @@ import { startProactiveChat } from "../common/startProactiveChat";
54
54
  import useChatAdapterStore from "../../../hooks/useChatAdapterStore";
55
55
  import useChatContextStore from "../../../hooks/useChatContextStore";
56
56
  import useFacadeSDKStore from "../../../hooks/useFacadeChatSDKStore";
57
+ let uiTimer;
57
58
  export const LiveChatWidgetStateful = props => {
58
59
  var _props$webChatContain, _props$styleProps, _props$controlProps, _props$controlProps3, _state$appStates7, _props$webChatContain5, _state$appStates14, _props$webChatContain7, _props$webChatContain8, _props$controlProps12, _props$draggableChatW, _props$draggableChatW2, _props$draggableChatW3, _props$draggableChatW4, _props$draggableChatW5, _livechatProps$webCha, _props$webChatContain9, _props$webChatContain10, _props$webChatContain11, _props$webChatContain12, _livechatProps$styleP, _livechatProps$contro, _livechatProps$contro2, _livechatProps$compon, _livechatProps$contro3, _livechatProps$compon2, _livechatProps$contro4, _livechatProps$compon3, _livechatProps$contro5, _livechatProps$compon4, _livechatProps$contro6, _livechatProps$compon5, _livechatProps$contro7, _livechatProps$compon6, _livechatProps$contro8, _livechatProps$compon7, _livechatProps$contro9, _livechatProps$compon8, _livechatProps$contro10, _livechatProps$contro11, _livechatProps$compon9, _livechatProps$contro12, _livechatProps$compon10, _livechatProps$contro13, _livechatProps$compon11, _livechatProps$compon12, _livechatProps$compon13;
60
+ useEffect(() => {
61
+ uiTimer = createTimer();
62
+ TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
63
+ Event: TelemetryEvent.UXLivechatwidgetStart
64
+ });
65
+ }, []);
59
66
  const [state, dispatch] = useChatContextStore();
60
67
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
61
68
  const [adapter, setAdapter] = useChatAdapterStore();
@@ -574,6 +581,26 @@ export const LiveChatWidgetStateful = props => {
574
581
  eventName: BroadcastEvent.NewMessageNotification
575
582
  });
576
583
  });
584
+ facadeChatSDK === null || facadeChatSDK === void 0 ? void 0 : facadeChatSDK.onAgentEndSession(event => {
585
+ var _inMemoryState$appSta6;
586
+ const inMemoryState = executeReducer(state, {
587
+ type: LiveChatWidgetActionType.GET_IN_MEMORY_STATE,
588
+ payload: null
589
+ });
590
+ if ("participantsRemoved" in event && (inMemoryState === null || inMemoryState === void 0 ? void 0 : (_inMemoryState$appSta6 = inMemoryState.appStates) === null || _inMemoryState$appSta6 === void 0 ? void 0 : _inMemoryState$appSta6.conversationState) === ConversationState.Active) {
591
+ setWebChatStyles(styles => {
592
+ return {
593
+ ...styles,
594
+ hideSendBox: true
595
+ };
596
+ });
597
+ TelemetryHelper.logSDKEvent(LogLevel.INFO, {
598
+ Event: TelemetryEvent.ParticipantsRemovedEvent,
599
+ Description: "Participants removed event received."
600
+ });
601
+ return;
602
+ }
603
+ });
577
604
  }
578
605
  if (state.appStates.conversationState === ConversationState.InActive) {
579
606
  var _props$webChatContain2, _props$webChatContain3;
@@ -703,13 +730,13 @@ export const LiveChatWidgetStateful = props => {
703
730
 
704
731
  // Handle Chat disconnect cases
705
732
  useEffect(() => {
706
- var _inMemoryState$appSta6;
733
+ var _inMemoryState$appSta7;
707
734
  const inMemoryState = executeReducer(state, {
708
735
  type: LiveChatWidgetActionType.GET_IN_MEMORY_STATE,
709
736
  payload: null
710
737
  });
711
738
  handleChatDisconnect(props, inMemoryState, setWebChatStyles);
712
- const chatDisconnectState = inMemoryState === null || inMemoryState === void 0 ? void 0 : (_inMemoryState$appSta6 = inMemoryState.appStates) === null || _inMemoryState$appSta6 === void 0 ? void 0 : _inMemoryState$appSta6.chatDisconnectEventReceived;
739
+ const chatDisconnectState = inMemoryState === null || inMemoryState === void 0 ? void 0 : (_inMemoryState$appSta7 = inMemoryState.appStates) === null || _inMemoryState$appSta7 === void 0 ? void 0 : _inMemoryState$appSta7.chatDisconnectEventReceived;
713
740
  if (chatDisconnectState && adapter) {
714
741
  try {
715
742
  adapter.end();
@@ -731,6 +758,12 @@ export const LiveChatWidgetStateful = props => {
731
758
  payload: (_props$webChatContain6 = props.webChatContainerProps) === null || _props$webChatContain6 === void 0 ? void 0 : _props$webChatContain6.renderingMiddlewareProps
732
759
  });
733
760
  }, [(_props$webChatContain7 = props.webChatContainerProps) === null || _props$webChatContain7 === void 0 ? void 0 : _props$webChatContain7.renderingMiddlewareProps]);
761
+ useEffect(() => {
762
+ TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
763
+ Event: TelemetryEvent.UXLivechatwidgetCompleted,
764
+ ElapsedTimeInMilliseconds: uiTimer.milliSecondsElapsed
765
+ });
766
+ }, []);
734
767
  const initiateEndChatOnBrowserUnload = () => {
735
768
  var _DataStoreManager$cli;
736
769
  TelemetryHelper.logActionEvent(LogLevel.INFO, {
@@ -1,16 +1,23 @@
1
1
  import { LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
2
2
  import React, { useEffect } from "react";
3
+ import { createTimer, findAllFocusableElement } from "../../common/utils";
3
4
  import { LoadingPane } from "@microsoft/omnichannel-chat-components";
4
5
  import { TelemetryHelper } from "../../common/telemetry/TelemetryHelper";
5
6
  import { defaultGeneralLoadingPaneStyleProps } from "./common/defaultStyleProps/defaultgeneralLoadingPaneStyleProps";
6
- import { findAllFocusableElement } from "../../common/utils";
7
+ import { errorUILoadingPaneStyleProps } from "./common/errorUIStyleProps/errorUILoadingPaneStyleProps";
7
8
  import useChatContextStore from "../../hooks/useChatContextStore";
8
9
  import useWindowDimensions from "../../hooks/useWindowDimensions";
9
- import { errorUILoadingPaneStyleProps } from "./common/errorUIStyleProps/errorUILoadingPaneStyleProps";
10
+ let uiTimer;
10
11
 
11
12
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
12
13
  export const LoadingPaneStateful = props => {
13
14
  var _loadingPaneProps$sty, _startChatErrorPanePr, _startChatErrorPanePr2;
15
+ useEffect(() => {
16
+ uiTimer = createTimer();
17
+ TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
18
+ Event: TelemetryEvent.UXLoadingPaneStart
19
+ });
20
+ }, []);
14
21
  const [state] = useChatContextStore();
15
22
  const {
16
23
  loadingPaneProps,
@@ -53,6 +60,10 @@ export const LoadingPaneStateful = props => {
53
60
  Event: TelemetryEvent.LoadingPaneLoaded,
54
61
  Description: "Loading pane loaded."
55
62
  });
63
+ TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
64
+ Event: TelemetryEvent.UXLoadingPaneCompleted,
65
+ ElapsedTimeInMilliseconds: uiTimer.milliSecondsElapsed
66
+ });
56
67
  }, []);
57
68
  return /*#__PURE__*/React.createElement(LoadingPane, {
58
69
  componentOverrides: loadingPaneProps === null || loadingPaneProps === void 0 ? void 0 : loadingPaneProps.componentOverrides,
@@ -1,18 +1,26 @@
1
+ import { ConfirmationState, NotificationPaneConstants } from "../../common/Constants";
2
+ import { LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
1
3
  import React, { useEffect, useRef } from "react";
4
+ import { LiveChatWidgetActionType } from "../../contexts/common/LiveChatWidgetActionType";
2
5
  import { NotificationPane } from "@microsoft/omnichannel-chat-components";
6
+ import { NotificationScenarios } from "../webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios";
7
+ import { TelemetryHelper } from "../../common/telemetry/TelemetryHelper";
8
+ import { createTimer } from "../../common/utils";
9
+ import { defaultChatDisconnectControlProps } from "./defaultProps/defaultChatDisconnectControlProps";
10
+ import { defaultChatDisconnectStyleProps } from "./defaultProps/defaultChatDisconnectStyleProps";
3
11
  import { hooks } from "botframework-webchat";
4
12
  import { useCallback } from "react";
5
- import { NotificationScenarios } from "../webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios";
6
13
  import useChatAdapterStore from "../../hooks/useChatAdapterStore";
7
14
  import useChatContextStore from "../../hooks/useChatContextStore";
8
- import { TelemetryHelper } from "../../common/telemetry/TelemetryHelper";
9
- import { LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
10
- import { LiveChatWidgetActionType } from "../../contexts/common/LiveChatWidgetActionType";
11
- import { ConfirmationState, NotificationPaneConstants } from "../../common/Constants";
12
- import { defaultChatDisconnectStyleProps } from "./defaultProps/defaultChatDisconnectStyleProps";
13
- import { defaultChatDisconnectControlProps } from "./defaultProps/defaultChatDisconnectControlProps";
15
+ let uiTimer;
14
16
  export const NotificationPaneStateful = props => {
15
17
  var _state$domainStates, _state$domainStates3;
18
+ useEffect(() => {
19
+ uiTimer = createTimer();
20
+ TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
21
+ Event: TelemetryEvent.UXNotificationPaneStart
22
+ });
23
+ }, []);
16
24
  const {
17
25
  notificationPaneProps,
18
26
  notificationScenarioType,
@@ -162,6 +170,12 @@ export const NotificationPaneStateful = props => {
162
170
  // TODO additional scenarios to be added...
163
171
  }
164
172
 
173
+ useEffect(() => {
174
+ TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
175
+ Event: TelemetryEvent.UXNotificationPaneCompleted,
176
+ ElapsedTimeInMilliseconds: uiTimer.milliSecondsElapsed
177
+ });
178
+ }, []);
165
179
  return /*#__PURE__*/React.createElement(NotificationPane, genericPropsObj);
166
180
  };
167
181
  export default NotificationPaneStateful;
@@ -1,12 +1,19 @@
1
1
  import { LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
2
2
  import React, { useEffect } from "react";
3
+ import { createTimer, findAllFocusableElement } from "../../common/utils";
3
4
  import { OutOfOfficeHoursPane } from "@microsoft/omnichannel-chat-components";
4
5
  import { TelemetryHelper } from "../../common/telemetry/TelemetryHelper";
5
6
  import { defaultGeneralStyleProps } from "./common/defaultStyleProps/defaultgeneralOOOHPaneStyleProps";
6
- import { findAllFocusableElement } from "../../common/utils";
7
7
  import useChatContextStore from "../../hooks/useChatContextStore";
8
+ let uiTimer;
8
9
  export const OutOfOfficeHoursPaneStateful = props => {
9
10
  var _props$styleProps;
11
+ useEffect(() => {
12
+ uiTimer = createTimer();
13
+ TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
14
+ Event: TelemetryEvent.UXOOHPaneStart
15
+ });
16
+ }, []);
10
17
  const [state] = useChatContextStore();
11
18
  const generalStyleProps = Object.assign({}, defaultGeneralStyleProps, (_props$styleProps = props.styleProps) === null || _props$styleProps === void 0 ? void 0 : _props$styleProps.generalStyleProps);
12
19
  const styleProps = {
@@ -28,6 +35,10 @@ export const OutOfOfficeHoursPaneStateful = props => {
28
35
  TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
29
36
  Event: TelemetryEvent.OutOfOfficePaneLoaded
30
37
  });
38
+ TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
39
+ Event: TelemetryEvent.UXOOHPaneCompleted,
40
+ ElapsedTimeInMilliseconds: uiTimer.milliSecondsElapsed
41
+ });
31
42
  }, []);
32
43
  return /*#__PURE__*/React.createElement(OutOfOfficeHoursPane, {
33
44
  componentOverrides: props.componentOverrides,
@@ -1,12 +1,19 @@
1
+ import { LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
1
2
  import React, { useEffect } from "react";
3
+ import { createTimer, findAllFocusableElement } from "../../common/utils";
2
4
  import { LoadingPane } from "@microsoft/omnichannel-chat-components";
5
+ import { TelemetryHelper } from "../../common/telemetry/TelemetryHelper";
3
6
  import { defaultGeneralPostChatLoadingPaneStyleProps } from "./common/defaultgeneralPostChatLoadingPaneStyleProps";
4
- import { findAllFocusableElement } from "../../common/utils";
5
7
  import useChatContextStore from "../../hooks/useChatContextStore";
6
- import { TelemetryHelper } from "../../common/telemetry/TelemetryHelper";
7
- import { LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
8
+ let uiTimer;
8
9
  export const PostChatLoadingPaneStateful = props => {
9
10
  var _props$styleProps;
11
+ useEffect(() => {
12
+ uiTimer = createTimer();
13
+ TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
14
+ Event: TelemetryEvent.UXPostChatLoadingPaneStart
15
+ });
16
+ }, []);
10
17
  const [state] = useChatContextStore();
11
18
  const generalStyleProps = Object.assign({}, defaultGeneralPostChatLoadingPaneStyleProps, (_props$styleProps = props.styleProps) === null || _props$styleProps === void 0 ? void 0 : _props$styleProps.generalStyleProps);
12
19
  const styleProps = {
@@ -33,6 +40,10 @@ export const PostChatLoadingPaneStateful = props => {
33
40
  TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
34
41
  Event: TelemetryEvent.PostChatSurveyLoadingPaneLoaded
35
42
  });
43
+ TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
44
+ Event: TelemetryEvent.UXPostChatLoadingPaneCompleted,
45
+ ElapsedTimeInMilliseconds: uiTimer.milliSecondsElapsed
46
+ });
36
47
  }, []);
37
48
  return /*#__PURE__*/React.createElement(LoadingPane, {
38
49
  componentOverrides: props.componentOverrides,
@@ -1,7 +1,7 @@
1
1
  import { HtmlAttributeNames, Regex } from "../../common/Constants";
2
2
  import { LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
3
3
  import React, { useEffect } from "react";
4
- import { extractPreChatSurveyResponseValues, findAllFocusableElement, getStateFromCache, getWidgetCacheId, isUndefinedOrEmpty, parseAdaptiveCardPayload } from "../../common/utils";
4
+ import { createTimer, extractPreChatSurveyResponseValues, findAllFocusableElement, getStateFromCache, getWidgetCacheId, isUndefinedOrEmpty, parseAdaptiveCardPayload } from "../../common/utils";
5
5
  import { ConversationState } from "../../contexts/common/ConversationState";
6
6
  import { LiveChatWidgetActionType } from "../../contexts/common/LiveChatWidgetActionType";
7
7
  import MarkdownIt from "markdown-it";
@@ -10,10 +10,18 @@ import { TelemetryHelper } from "../../common/telemetry/TelemetryHelper";
10
10
  import { defaultGeneralPreChatSurveyPaneStyleProps } from "./common/defaultStyles/defaultGeneralPreChatSurveyPaneStyleProps";
11
11
  import { defaultPreChatSurveyLocalizedTexts } from "./common/defaultProps/defaultPreChatSurveyLocalizedTexts";
12
12
  import useChatContextStore from "../../hooks/useChatContextStore";
13
+ let uiTimer;
13
14
 
14
15
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
15
16
  export const PreChatSurveyPaneStateful = props => {
16
17
  var _surveyProps$stylePro, _props$surveyProps, _props$surveyProps$co;
18
+ useEffect(() => {
19
+ uiTimer = createTimer();
20
+ TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
21
+ Event: TelemetryEvent.UXPrechatPaneStart
22
+ });
23
+ }, []);
24
+
17
25
  // Set MarkDown global variable to be used for prechat adaptive cards
18
26
  window["markdownit"] = MarkdownIt;
19
27
  const [state, dispatch] = useChatContextStore();
@@ -136,6 +144,10 @@ export const PreChatSurveyPaneStateful = props => {
136
144
  TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
137
145
  Event: TelemetryEvent.PrechatSurveyLoaded
138
146
  });
147
+ TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
148
+ Event: TelemetryEvent.UXPrechatPaneCompleted,
149
+ ElapsedTimeInMilliseconds: uiTimer.milliSecondsElapsed
150
+ });
139
151
  }, []);
140
152
  return /*#__PURE__*/React.createElement(PreChatSurveyPane, {
141
153
  controlProps: controlProps,
@@ -9,10 +9,17 @@ import { ProactiveChatPane } from "@microsoft/omnichannel-chat-components";
9
9
  import { TelemetryHelper } from "../../common/telemetry/TelemetryHelper";
10
10
  import { TelemetryTimers } from "../../common/telemetry/TelemetryManager";
11
11
  import useChatContextStore from "../../hooks/useChatContextStore";
12
+ let uiTimer;
12
13
 
13
14
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
14
15
  export const ProactiveChatPaneStateful = props => {
15
16
  var _proactiveChatProps$c;
17
+ useEffect(() => {
18
+ uiTimer = createTimer();
19
+ TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
20
+ Event: TelemetryEvent.UXProactiveChatPaneStart
21
+ });
22
+ }, []);
16
23
  const [state, dispatch] = useChatContextStore();
17
24
  const {
18
25
  proactiveChatProps,
@@ -114,6 +121,10 @@ export const ProactiveChatPaneStateful = props => {
114
121
  TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
115
122
  Event: TelemetryEvent.ProactiveChatPaneLoaded
116
123
  });
124
+ TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
125
+ Event: TelemetryEvent.UXProactiveChatCompleted,
126
+ ElapsedTimeInMilliseconds: uiTimer.milliSecondsElapsed
127
+ });
117
128
  return () => {
118
129
  clearTimeout(timeoutEvent);
119
130
  };
@@ -1,13 +1,21 @@
1
1
  import { LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
2
2
  import React, { useEffect } from "react";
3
+ import { createTimer, setFocusOnElement } from "../../common/utils";
3
4
  import { ConversationState } from "../../contexts/common/ConversationState";
4
5
  import { LiveChatWidgetActionType } from "../../contexts/common/LiveChatWidgetActionType";
5
6
  import { ReconnectChatPane } from "@microsoft/omnichannel-chat-components";
6
7
  import { TelemetryHelper } from "../../common/telemetry/TelemetryHelper";
7
- import { setFocusOnElement } from "../../common/utils";
8
8
  import useChatContextStore from "../../hooks/useChatContextStore";
9
9
  import useFacadeChatSDKStore from "../../hooks/useFacadeChatSDKStore";
10
+ let uiTimer;
10
11
  export const ReconnectChatPaneStateful = props => {
12
+ useEffect(() => {
13
+ uiTimer = createTimer();
14
+ TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
15
+ Event: TelemetryEvent.UXReconnectChatPaneStart,
16
+ ElapsedTimeInMilliseconds: uiTimer.milliSecondsElapsed
17
+ });
18
+ }, []);
11
19
  const [state, dispatch] = useChatContextStore();
12
20
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
13
21
  //const chatSDK: any = useChatSDKStore();
@@ -91,6 +99,9 @@ export const ReconnectChatPaneStateful = props => {
91
99
  TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
92
100
  Event: TelemetryEvent.ReconnectChatPaneLoaded
93
101
  });
102
+ TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
103
+ Event: TelemetryEvent.UXReconnectChatCompleted
104
+ });
94
105
  }, []);
95
106
  return /*#__PURE__*/React.createElement(ReconnectChatPane, {
96
107
  componentOverrides: reconnectChatProps === null || reconnectChatProps === void 0 ? void 0 : reconnectChatProps.componentOverrides,
@@ -1,18 +1,25 @@
1
+ import { LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
1
2
  import React, { useEffect } from "react";
3
+ import { createTimer, findAllFocusableElement } from "../../common/utils";
2
4
  import { LoadingPane } from "@microsoft/omnichannel-chat-components";
3
- import { findAllFocusableElement } from "../../common/utils";
4
- import useChatContextStore from "../../hooks/useChatContextStore";
5
+ import { StartChatErrorPaneConstants } from "../../common/Constants";
6
+ import { StartChatFailureType } from "../../contexts/common/StartChatFailureType";
5
7
  import { TelemetryHelper } from "../../common/telemetry/TelemetryHelper";
6
- import { LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
7
8
  import { defaultStartChatErrorPaneGeneralStyleProps } from "./common/defaultStartChatErrorPaneGeneralStyleProps";
8
- import { defaultStartChatErrorPaneTitleStyleProps } from "./common/defaultStartChatErrorPaneTitleStyleProps";
9
- import { defaultStartChatErrorPaneSubtitleStyleProps } from "./common/defaultStartChatErrorPaneSubtitleStyleProps";
10
- import { defaultStartChatErrorPaneIconStyleProps } from "./common/defaultStartChatErrorPaneIconStyleProps";
11
9
  import { defaultStartChatErrorPaneIconImageStyleProps } from "./common/defaultStartChatErrorPaneIconImageProps";
12
- import { StartChatErrorPaneConstants } from "../../common/Constants";
13
- import { StartChatFailureType } from "../../contexts/common/StartChatFailureType";
10
+ import { defaultStartChatErrorPaneIconStyleProps } from "./common/defaultStartChatErrorPaneIconStyleProps";
11
+ import { defaultStartChatErrorPaneSubtitleStyleProps } from "./common/defaultStartChatErrorPaneSubtitleStyleProps";
12
+ import { defaultStartChatErrorPaneTitleStyleProps } from "./common/defaultStartChatErrorPaneTitleStyleProps";
13
+ import useChatContextStore from "../../hooks/useChatContextStore";
14
+ let uiTimer;
14
15
  export const StartChatErrorPaneStateful = startChatErrorPaneProps => {
15
16
  var _startChatErrorPanePr, _startChatErrorPanePr2, _startChatErrorPanePr3, _startChatErrorPanePr4, _startChatErrorPanePr5, _startChatErrorPanePr6, _startChatErrorPanePr7, _startChatErrorPanePr8, _startChatErrorPanePr9, _startChatErrorPanePr10, _startChatErrorPanePr11;
17
+ useEffect(() => {
18
+ uiTimer = createTimer();
19
+ TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
20
+ Event: TelemetryEvent.UXStartChatErrorPaneStart
21
+ });
22
+ }, []);
16
23
  const [state] = useChatContextStore();
17
24
  const generalStyleProps = Object.assign({}, defaultStartChatErrorPaneGeneralStyleProps, startChatErrorPaneProps === null || startChatErrorPaneProps === void 0 ? void 0 : (_startChatErrorPanePr = startChatErrorPaneProps.styleProps) === null || _startChatErrorPanePr === void 0 ? void 0 : _startChatErrorPanePr.generalStyleProps);
18
25
  const titleStyleProps = Object.assign({}, defaultStartChatErrorPaneTitleStyleProps, startChatErrorPaneProps === null || startChatErrorPaneProps === void 0 ? void 0 : (_startChatErrorPanePr2 = startChatErrorPaneProps.styleProps) === null || _startChatErrorPanePr2 === void 0 ? void 0 : _startChatErrorPanePr2.titleStyleProps);
@@ -61,6 +68,10 @@ export const StartChatErrorPaneStateful = startChatErrorPaneProps => {
61
68
  Event: TelemetryEvent.StartChatErrorPaneLoaded,
62
69
  Description: "Start chat error pane loaded."
63
70
  });
71
+ TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
72
+ Event: TelemetryEvent.UXStartChatErrorCompleted,
73
+ ElapsedTimeInMilliseconds: uiTimer.milliSecondsElapsed
74
+ });
64
75
  }, []);
65
76
  return /*#__PURE__*/React.createElement(LoadingPane, {
66
77
  componentOverrides: startChatErrorPaneProps === null || startChatErrorPaneProps === void 0 ? void 0 : startChatErrorPaneProps.componentOverrides,
@@ -3,6 +3,7 @@
3
3
  import { Stack } from "@fluentui/react";
4
4
  import { LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
5
5
  import React, { useEffect } from "react";
6
+ import { createTimer, setFocusOnSendBox } from "../../common/utils";
6
7
  import { BotMagicCodeStore } from "./webchatcontroller/BotMagicCodeStore";
7
8
  import { Components } from "botframework-webchat";
8
9
  import { Constants } from "../../common/Constants";
@@ -19,8 +20,8 @@ import { defaultSentMessageAnchorStyles } from "./webchatcontroller/middlewares/
19
20
  import { defaultSystemMessageBoxStyles } from "./webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles";
20
21
  import { defaultUserMessageBoxStyles } from "./webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles";
21
22
  import { defaultWebChatContainerStatefulProps } from "./common/defaultProps/defaultWebChatContainerStatefulProps";
22
- import { setFocusOnSendBox } from "../../common/utils";
23
23
  import { useChatContextStore } from "../..";
24
+ let uiTimer;
24
25
  const broadcastChannelMessageEvent = "message";
25
26
  const postActivity = activity => {
26
27
  // eslint-disable-line @typescript-eslint/no-explicit-any
@@ -48,6 +49,12 @@ const createMagicCodeSuccessResponse = signin => {
48
49
  };
49
50
  export const WebChatContainerStateful = props => {
50
51
  var _webChatContainerProp, _webChatContainerProp2, _webChatContainerProp3, _webChatContainerProp4, _webChatContainerProp5, _webChatContainerProp6, _webChatContainerProp7, _props$webChatContain5, _props$webChatContain6, _defaultWebChatContai, _props$webChatContain7, _props$webChatContain8, _defaultWebChatContai2, _webChatContainerProp8, _webChatContainerProp9, _webChatContainerProp10, _webChatContainerProp11, _webChatContainerProp12, _webChatContainerProp13, _webChatContainerProp14, _webChatContainerProp15, _props$webChatContain9, _props$webChatContain10;
52
+ useEffect(() => {
53
+ uiTimer = createTimer();
54
+ TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
55
+ Event: TelemetryEvent.UXWebchatContainerCompleted
56
+ });
57
+ }, []);
51
58
  const {
52
59
  BasicWebChat
53
60
  } = Components;
@@ -143,6 +150,12 @@ export const WebChatContainerStateful = props => {
143
150
  };
144
151
  magicCodeBroadcastChannel.addEventListener(broadcastChannelMessageEvent, eventListener);
145
152
  }, []);
153
+ useEffect(() => {
154
+ TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
155
+ Event: TelemetryEvent.UXWebchatContainerCompleted,
156
+ ElapsedTimeInMilliseconds: uiTimer.milliSecondsElapsed
157
+ });
158
+ }, []);
146
159
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("style", null, `
147
160
  .webchat__stacked-layout__content .ac-pushButton {
148
161
  cursor: pointer;
@@ -55,7 +55,7 @@ const genPreviewCardWithAttachment = (card, iconData, next) => {
55
55
  renderer: next
56
56
  });
57
57
  };
58
- const createAttachmentMiddleware = enableInlinePlaying => {
58
+ export const createAttachmentMiddleware = enableInlinePlaying => {
59
59
  // eslint-disable-next-line react/display-name
60
60
  const attachmentMiddleware = () => next => function () {
61
61
  var _state$domainStates$r, _state$domainStates$r2, _state$domainStates$r3, _card$activity$channe;
@@ -192,5 +192,4 @@ const createAttachmentMiddleware = enableInlinePlaying => {
192
192
  });
193
193
  };
194
194
  return attachmentMiddleware;
195
- };
196
- export default createAttachmentMiddleware;
195
+ };
@@ -0,0 +1,10 @@
1
+ export * from "./activityMiddleware";
2
+ export * from "./activityStatusMiddleware";
3
+ export * from "./attachmentMiddleware";
4
+ export * from "./avatarMiddleware";
5
+ export * from "./cardActionMiddleware";
6
+ export * from "./groupActivitiesMiddleware";
7
+ export * from "./messageSequenceIdOverrideMiddleware";
8
+ export * from "./messageTimestampMiddleware";
9
+ export * from "./toastMiddleware";
10
+ export * from "./typingIndicatorMiddleware";
@@ -1,7 +1,7 @@
1
1
  import { WebChatActionType } from "../../enums/WebChatActionType";
2
2
  import { Constants } from "../../../../../common/Constants";
3
3
  // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars
4
- const createMessageSequenceIdOverrideMiddleware = _ref => {
4
+ export const createMessageSequenceIdOverrideMiddleware = _ref => {
5
5
  let {
6
6
  dispatch
7
7
  } = _ref;
@@ -54,5 +54,4 @@ const extractOriginalMessageId = action => {
54
54
  const lookupOriginalMessageId = action => {
55
55
  var _action$payload4, _action$payload4$acti, _action$payload4$acti2, _action$payload4$acti3;
56
56
  return action === null || action === void 0 ? void 0 : (_action$payload4 = action.payload) === null || _action$payload4 === void 0 ? void 0 : (_action$payload4$acti = _action$payload4.activity) === null || _action$payload4$acti === void 0 ? void 0 : (_action$payload4$acti2 = _action$payload4$acti.channelData) === null || _action$payload4$acti2 === void 0 ? void 0 : (_action$payload4$acti3 = _action$payload4$acti2.metadata) === null || _action$payload4$acti3 === void 0 ? void 0 : _action$payload4$acti3.OriginalMessageId;
57
- };
58
- export default createMessageSequenceIdOverrideMiddleware;
57
+ };
@@ -2,7 +2,7 @@ import { WebChatActionType } from "../../enums/WebChatActionType";
2
2
  import { Constants } from "../../../../../common/Constants";
3
3
 
4
4
  // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars
5
- const createMessageTimeStampMiddleware = _ref => {
5
+ export const createMessageTimeStampMiddleware = _ref => {
6
6
  let {
7
7
  dispatch
8
8
  } = _ref;
@@ -79,5 +79,4 @@ const tagLookup = (action, tag) => {
79
79
  }
80
80
  }
81
81
  return null;
82
- };
83
- export default createMessageTimeStampMiddleware;
82
+ };
@@ -3,7 +3,7 @@ import { NotificationScenarios } from "../../enums/NotificationScenarios";
3
3
  import NotificationPaneStateful from "../../../../notificationpanestateful/NotificationPaneStateful";
4
4
 
5
5
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
6
- const createToastMiddleware = (notificationPaneProps, endChat) => {
6
+ export const createToastMiddleware = (notificationPaneProps, endChat) => {
7
7
  // eslint-disable-next-line @typescript-eslint/no-explicit-any, react/display-name
8
8
  const toastMiddleware = () => next => card => {
9
9
  const {
@@ -24,5 +24,4 @@ const createToastMiddleware = (notificationPaneProps, endChat) => {
24
24
  return next(card);
25
25
  };
26
26
  return toastMiddleware;
27
- };
28
- export default createToastMiddleware;
27
+ };
package/lib/esm/index.js CHANGED
@@ -7,4 +7,5 @@ import useFacadeChatSDKStore from "./hooks/useFacadeChatSDKStore";
7
7
  export { default as LiveChatWidget } from "./components/livechatwidget/LiveChatWidget";
8
8
  export { getMockChatSDKIfApplicable } from "./components/livechatwidget/common/getMockChatSDKIfApplicable";
9
9
  export { getWidgetCacheId, getWidgetEndChatEventName, ConversationState };
10
- export { encodeComponentString, decodeComponentString, BroadcastService, useChatSDKStore, useChatContextStore, useFacadeChatSDKStore };
10
+ export { encodeComponentString, decodeComponentString, BroadcastService, useChatSDKStore, useChatContextStore, useFacadeChatSDKStore };
11
+ export * from "./components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares";
@@ -160,6 +160,7 @@ export declare enum TelemetryEvent {
160
160
  SetBotAuthProviderNotFound = "SetBotAuthProviderNotFound",
161
161
  BotAuthActivityUndefinedSignInId = "BotAuthActivityUndefinedSignInId",
162
162
  ThirdPartyCookiesBlocked = "ThirdPartyCookiesBlocked",
163
+ ParticipantsRemovedEvent = "ParticipantsRemovedEvent",
163
164
  ProcessingHTMLTextMiddlewareFailed = "ProcessingHTMLTextMiddlewareFailed",
164
165
  ProcessingSanitizationMiddlewareFailed = "ProcessingSanitizationMiddlewareFailed",
165
166
  FormatTagsMiddlewareJSONStringifyFailed = "FormatTagsMiddlewareJSONStringifyFailed",
@@ -210,7 +211,37 @@ export declare enum TelemetryEvent {
210
211
  NewTokenSuccess = "NewTokenSuccess",
211
212
  NewTokenFailed = "NewTokenFailed",
212
213
  NewTokenExpired = "NewTokenExpired",
213
- TokenEmptyOrSame = "TokenEmptyOrSame"
214
+ TokenEmptyOrSame = "TokenEmptyOrSame",
215
+ UXFooterStart = "UXFooterStart",
216
+ UXFooterCompleted = "UXFooterCompleted",
217
+ UXHeaderStart = "UXHeaderStart",
218
+ UXHeaderCompleted = "UXHeaderCompleted",
219
+ UXLoadingPaneStart = "UXLoadingPaneStart",
220
+ UXLoadingPaneCompleted = "UXLoadingPaneCompleted",
221
+ UXNotificationPaneStart = "UXNotificationPaneStart",
222
+ UXNotificationPaneCompleted = "UXNotificationPaneCompleted",
223
+ UXOOHPaneStart = "UXOOHPaneStart",
224
+ UXOOHPaneCompleted = "UXOOHPaneCompleted",
225
+ UXPostChatLoadingPaneStart = "UXPostChatLoadingPaneStart",
226
+ UXPostChatLoadingPaneCompleted = "UXPostChatLoadingPaneCompleted",
227
+ UXPrechatPaneStart = "UXPrechatPaneStart",
228
+ UXPrechatPaneCompleted = "UXPrechatPaneCompleted",
229
+ UXProactiveChatPaneStart = "UXProactiveChatPaneStart",
230
+ UXProactiveChatCompleted = "UXProactiveChatCompleted",
231
+ UXReconnectChatPaneStart = "UXReconnectChatPaneStart",
232
+ UXReconnectChatCompleted = "UXReconnectChatCompleted",
233
+ UXStartChatErrorPaneStart = "UXStartChatErrorPaneStart",
234
+ UXStartChatErrorCompleted = "UXStartChatErrorCompleted",
235
+ UXEmailTranscriptPaneStart = "UXEmailTranscriptPaneStart",
236
+ UXEmailTranscriptPaneCompleted = "UXEmailTranscriptPaneCompleted",
237
+ UXWebchatContainerStart = "UXWebchatContainerStart",
238
+ UXWebchatContainerCompleted = "UXWebchatContainerCompleted",
239
+ UXLCWChatButtonStart = "UXLCWChatButtonStart",
240
+ UXLCWChatButtonCompleted = "UXLCWChatButtonCompleted",
241
+ UXConfirmationPaneStart = "UXConfirmationPaneStart",
242
+ UXConfirmationPaneCompleted = "UXConfirmationPaneCompleted",
243
+ UXLivechatwidgetStart = "UXLivechatwidgetStart",
244
+ UXLivechatwidgetCompleted = "UXLivechatwidgetCompleted"
214
245
  }
215
246
  export interface TelemetryInput {
216
247
  scenarioType: ScenarioType;
@@ -33,6 +33,7 @@ export declare class TelemetryHelper {
33
33
  static addConversationDataToTelemetry(liveWorkItem: LiveWorkItemDetails, telemetryInternalData: IInternalTelemetryData): IInternalTelemetryData;
34
34
  static logCallingEvent: (logLevel: LogLevel, payload: TelemetryEventWrapper, callId?: string | undefined) => void;
35
35
  static logLoadingEvent: (logLevel: LogLevel, payload: TelemetryEventWrapper) => void;
36
+ static logUIEvent: (logLevel: LogLevel, payload: TelemetryEventWrapper) => void;
36
37
  static logActionEvent: (logLevel: LogLevel, payload: TelemetryEventWrapper) => void;
37
38
  static logSDKEvent: (logLevel: LogLevel, payload: TelemetryEventWrapper) => void;
38
39
  static logConfigDataEvent: (logLevel: LogLevel, payload: TelemetryEventWrapper) => void;