@microsoft/omnichannel-chat-widget 0.1.0-main.7b290a7 → 0.1.0-main.834a4cd
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -0
- package/lib/cjs/common/Constants.js +26 -161
- package/lib/cjs/common/KeyCodes.js +0 -3
- package/lib/cjs/common/contextDataStore/DataStoreManager.js +0 -4
- package/lib/cjs/common/storage/default/defaultCacheManager.js +24 -0
- package/lib/cjs/common/storage/default/defaultClientDataStoreProvider.js +102 -0
- package/lib/cjs/common/storage/default/defaultInMemoryDataStore.js +78 -0
- package/lib/cjs/common/telemetry/TelemetryConstants.js +49 -26
- package/lib/cjs/common/telemetry/TelemetryHelper.js +16 -57
- package/lib/cjs/common/telemetry/TelemetryManager.js +0 -31
- package/lib/cjs/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +0 -2
- package/lib/cjs/common/telemetry/loggers/ariaTelemetryLogger.js +30 -36
- package/lib/cjs/common/telemetry/loggers/consoleLogger.js +0 -9
- package/lib/cjs/common/utils.js +71 -85
- package/lib/cjs/components/callingcontainerstateful/CallingContainerStateful.js +8 -46
- package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +19 -25
- package/lib/cjs/components/chatbuttonstateful/common/styleProps/defaultOutOfOfficeChatButtonStyleProps.js +3 -0
- package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +7 -32
- package/lib/cjs/components/dimlayer/DimLayer.js +0 -4
- package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +8 -36
- package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.spec.js +6 -8
- package/lib/cjs/components/footerstateful/FooterStateful.js +11 -42
- package/lib/cjs/components/footerstateful/audionotificationstateful/AudioNotificationStateful.js +0 -6
- package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +15 -44
- package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.spec.js +6 -8
- package/lib/cjs/components/headerstateful/HeaderStateful.js +16 -30
- package/lib/cjs/components/livechatwidget/LiveChatWidget.js +2 -14
- package/lib/cjs/components/livechatwidget/common/ActivityStreamHandler.js +37 -0
- package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +18 -0
- package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.js +1 -0
- package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +32 -0
- package/lib/cjs/components/livechatwidget/common/ChatAdapterShim.js +62 -0
- package/lib/cjs/components/livechatwidget/common/Deferred.js +35 -0
- package/lib/cjs/components/livechatwidget/common/authHelper.js +50 -0
- package/lib/cjs/components/livechatwidget/common/createAdapter.js +10 -9
- package/lib/cjs/components/livechatwidget/common/createFooter.js +4 -23
- package/lib/cjs/components/livechatwidget/common/createInternetConnectionChangeHandler.js +10 -10
- package/lib/cjs/components/livechatwidget/common/createMarkdown.js +36 -43
- package/lib/cjs/components/livechatwidget/common/defaultProps/defaultScrollBarProps.js +14 -0
- package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +70 -40
- package/lib/cjs/components/livechatwidget/common/disposeTelemetryLoggers.js +0 -3
- package/lib/cjs/components/livechatwidget/common/endChat.js +103 -42
- package/lib/cjs/components/livechatwidget/common/getGeneralStylesForButton.js +0 -6
- package/lib/cjs/components/livechatwidget/common/initCallingSdk.js +7 -16
- package/lib/cjs/components/livechatwidget/common/initConfirmationPropsComposer.js +4 -8
- package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +32 -53
- package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +78 -128
- package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +4 -17
- package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +2 -15
- package/lib/cjs/components/livechatwidget/common/shareObservable.js +41 -0
- package/lib/cjs/components/livechatwidget/common/startChat.js +226 -102
- package/lib/cjs/components/livechatwidget/common/startProactiveChat.js +0 -8
- package/lib/cjs/components/livechatwidget/common/updateSessionDataForTelemetry.js +2 -11
- package/lib/cjs/components/livechatwidget/interfaces/IScrollBarProps.js +1 -0
- package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +315 -193
- package/lib/cjs/components/loadingpanestateful/LoadingPaneStateful.js +4 -17
- package/lib/cjs/components/ooohpanestateful/OOOHPaneStateful.js +4 -17
- package/lib/cjs/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +4 -17
- package/lib/cjs/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +32 -23
- package/lib/cjs/components/postchatsurveypanestateful/common/defaultStyleProps/defaultgeneralPostChatSurveyPaneStyleProps.js +1 -1
- package/lib/cjs/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.js +13 -0
- package/lib/cjs/components/postchatsurveypanestateful/enums/PostChatSurveyMode.js +0 -1
- package/lib/cjs/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.js +1 -0
- package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +11 -44
- package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +19 -33
- package/lib/cjs/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +6 -24
- package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +94 -19
- package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +3 -7
- package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatStatefulProps.js +2 -6
- package/lib/cjs/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +11 -0
- package/lib/cjs/components/webchatcontainerstateful/common/mockadapter.js +9 -26
- package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +3 -16
- package/lib/cjs/components/webchatcontainerstateful/common/utils/BrowserInfo.js +2 -24
- package/lib/cjs/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +3 -15
- package/lib/cjs/components/webchatcontainerstateful/common/utils/isMaskingFromCustomer.js +5 -8
- package/lib/cjs/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.js +1 -0
- package/lib/cjs/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.js +1 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +10 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/WebChatStoreLoader.js +0 -4
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/BrowserVendor.js +0 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineActivityType.js +0 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineSenderRole.js +0 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/MessageType.js +0 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/NotificationLevel.js +0 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios.js +0 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/SendStatus.js +0 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/WebChatActionType.js +0 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsEgressMiddleware.js +0 -7
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsIngressMiddleware.js +0 -5
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +27 -37
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +9 -19
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +23 -60
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.js +7 -15
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +41 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +82 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +10 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.js +10 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampFailedStyles.js +2 -3
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampRetryStyles.js +2 -3
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.js +10 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware.js +3 -9
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +89 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +2 -12
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +6 -28
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +2 -11
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +13 -30
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +3 -9
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +6 -34
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +1 -10
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +1 -12
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +17 -19
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.js +1 -9
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.js +3 -9
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.js +13 -34
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.js +1 -10
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.js +7 -11
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.js +5 -14
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +1 -21
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +0 -12
- package/lib/cjs/contexts/ChatAdapterStore.js +0 -2
- package/lib/cjs/contexts/ChatContextStore.js +0 -2
- package/lib/cjs/contexts/ChatSDKStore.js +0 -2
- package/lib/cjs/contexts/common/ConversationState.js +3 -3
- package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +6 -3
- package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +12 -13
- package/lib/cjs/contexts/createReducer.js +156 -102
- package/lib/cjs/controller/componentController.js +4 -33
- package/lib/cjs/hooks/useChatAdapterStore.js +0 -6
- package/lib/cjs/hooks/useChatContextStore.js +0 -6
- package/lib/cjs/hooks/useChatSDKStore.js +0 -6
- package/lib/cjs/index.js +0 -5
- package/lib/cjs/plugins/newMessageEventHandler.js +15 -36
- package/lib/esm/common/Constants.js +23 -148
- package/lib/esm/common/KeyCodes.js +0 -2
- package/lib/esm/common/contextDataStore/DataStoreManager.js +0 -2
- package/lib/esm/common/storage/default/defaultCacheManager.js +16 -0
- package/lib/esm/common/storage/default/defaultClientDataStoreProvider.js +95 -0
- package/lib/esm/common/storage/default/defaultInMemoryDataStore.js +70 -0
- package/lib/esm/common/telemetry/TelemetryConstants.js +53 -23
- package/lib/esm/common/telemetry/TelemetryHelper.js +16 -45
- package/lib/esm/common/telemetry/TelemetryManager.js +0 -18
- package/lib/esm/common/telemetry/loggers/ariaTelemetryLogger.js +28 -24
- package/lib/esm/common/telemetry/loggers/consoleLogger.js +0 -5
- package/lib/esm/common/utils.js +64 -47
- package/lib/esm/components/callingcontainerstateful/CallingContainerStateful.js +8 -17
- package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +22 -12
- package/lib/esm/components/chatbuttonstateful/common/styleProps/defaultOutOfOfficeChatButtonStyleProps.js +3 -0
- package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +9 -13
- package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +8 -15
- package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.spec.js +6 -6
- package/lib/esm/components/footerstateful/FooterStateful.js +13 -23
- package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +15 -37
- package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.spec.js +6 -6
- package/lib/esm/components/headerstateful/HeaderStateful.js +16 -15
- package/lib/esm/components/livechatwidget/LiveChatWidget.js +2 -2
- package/lib/esm/components/livechatwidget/common/ActivityStreamHandler.js +30 -0
- package/lib/esm/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +11 -0
- package/lib/esm/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.js +1 -0
- package/lib/esm/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +25 -0
- package/lib/esm/components/livechatwidget/common/ChatAdapterShim.js +55 -0
- package/lib/esm/components/livechatwidget/common/Deferred.js +28 -0
- package/lib/esm/components/livechatwidget/common/authHelper.js +42 -0
- package/lib/esm/components/livechatwidget/common/createAdapter.js +12 -4
- package/lib/esm/components/livechatwidget/common/createFooter.js +4 -16
- package/lib/esm/components/livechatwidget/common/createInternetConnectionChangeHandler.js +10 -5
- package/lib/esm/components/livechatwidget/common/createMarkdown.js +38 -37
- package/lib/esm/components/livechatwidget/common/defaultProps/defaultScrollBarProps.js +7 -0
- package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +72 -27
- package/lib/esm/components/livechatwidget/common/endChat.js +103 -28
- package/lib/esm/components/livechatwidget/common/getGeneralStylesForButton.js +0 -2
- package/lib/esm/components/livechatwidget/common/initCallingSdk.js +9 -11
- package/lib/esm/components/livechatwidget/common/initConfirmationPropsComposer.js +4 -5
- package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +35 -22
- package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +78 -110
- package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +4 -9
- package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +4 -7
- package/lib/esm/components/livechatwidget/common/shareObservable.js +35 -0
- package/lib/esm/components/livechatwidget/common/startChat.js +228 -84
- package/lib/esm/components/livechatwidget/common/updateSessionDataForTelemetry.js +4 -2
- package/lib/esm/components/livechatwidget/interfaces/IScrollBarProps.js +1 -0
- package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +319 -140
- package/lib/esm/components/loadingpanestateful/LoadingPaneStateful.js +4 -5
- package/lib/esm/components/ooohpanestateful/OOOHPaneStateful.js +4 -5
- package/lib/esm/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +4 -5
- package/lib/esm/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +32 -11
- package/lib/esm/components/postchatsurveypanestateful/common/defaultStyleProps/defaultgeneralPostChatSurveyPaneStyleProps.js +1 -1
- package/lib/esm/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.js +6 -0
- package/lib/esm/components/postchatsurveypanestateful/enums/PostChatSurveyMode.js +0 -1
- package/lib/esm/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.js +1 -0
- package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +15 -29
- package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +21 -9
- package/lib/esm/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +6 -6
- package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +94 -4
- package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +3 -1
- package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultWebChatStatefulProps.js +2 -2
- package/lib/esm/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +4 -0
- package/lib/esm/components/webchatcontainerstateful/common/mockadapter.js +9 -18
- package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +3 -12
- package/lib/esm/components/webchatcontainerstateful/common/utils/BrowserInfo.js +2 -16
- package/lib/esm/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +3 -5
- package/lib/esm/components/webchatcontainerstateful/common/utils/isMaskingFromCustomer.js +5 -6
- package/lib/esm/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.js +1 -0
- package/lib/esm/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.js +1 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +3 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/WebChatStoreLoader.js +0 -2
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/BrowserVendor.js +0 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineActivityType.js +0 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineSenderRole.js +0 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/MessageType.js +0 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/NotificationLevel.js +0 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios.js +0 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/SendStatus.js +0 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/WebChatActionType.js +0 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsEgressMiddleware.js +2 -5
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsIngressMiddleware.js +0 -4
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +27 -22
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +11 -11
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +23 -38
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.js +9 -8
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +34 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +80 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +3 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.js +3 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampFailedStyles.js +2 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampRetryStyles.js +2 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.js +3 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware.js +3 -7
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +83 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +3 -3
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +7 -14
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +3 -3
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +15 -19
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +5 -8
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +6 -29
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +3 -7
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +3 -8
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +17 -14
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.js +3 -7
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.js +3 -7
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.js +15 -27
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.js +3 -5
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.js +9 -9
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.js +7 -9
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +1 -13
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +0 -5
- package/lib/esm/contexts/ChatAdapterStore.js +2 -1
- package/lib/esm/contexts/ChatContextStore.js +2 -1
- package/lib/esm/contexts/ChatSDKStore.js +2 -1
- package/lib/esm/contexts/common/ConversationState.js +3 -3
- package/lib/esm/contexts/common/LiveChatWidgetActionType.js +6 -3
- package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +12 -9
- package/lib/esm/contexts/createReducer.js +156 -99
- package/lib/esm/controller/componentController.js +5 -4
- package/lib/esm/hooks/useChatAdapterStore.js +0 -4
- package/lib/esm/hooks/useChatContextStore.js +0 -4
- package/lib/esm/hooks/useChatSDKStore.js +0 -4
- package/lib/esm/plugins/newMessageEventHandler.js +15 -26
- package/lib/types/common/Constants.d.ts +21 -1
- package/lib/types/common/interfaces/IContextDataStore.d.ts +1 -1
- package/lib/types/common/storage/default/defaultCacheManager.d.ts +4 -0
- package/lib/types/common/storage/default/defaultClientDataStoreProvider.d.ts +2 -0
- package/lib/types/common/storage/default/defaultInMemoryDataStore.d.ts +6 -0
- package/lib/types/common/telemetry/TelemetryConstants.d.ts +36 -8
- package/lib/types/common/telemetry/definitions/Contracts.d.ts +2 -4
- package/lib/types/common/utils.d.ts +7 -1
- package/lib/types/components/headerstateful/interfaces/IHeaderStatefulParams.d.ts +2 -1
- package/lib/types/components/livechatwidget/common/ActivityStreamHandler.d.ts +14 -0
- package/lib/types/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.d.ts +5 -0
- package/lib/types/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.d.ts +6 -0
- package/lib/types/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.d.ts +7 -0
- package/lib/types/components/livechatwidget/common/ChatAdapterShim.d.ts +7 -0
- package/lib/types/components/livechatwidget/common/Deferred.d.ts +9 -0
- package/lib/types/components/livechatwidget/common/authHelper.d.ts +5 -0
- package/lib/types/components/livechatwidget/common/defaultProps/defaultScrollBarProps.d.ts +2 -0
- package/lib/types/components/livechatwidget/common/endChat.d.ts +1 -1
- package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +6 -7
- package/lib/types/components/livechatwidget/common/shareObservable.d.ts +1 -0
- package/lib/types/components/livechatwidget/common/startChat.d.ts +5 -2
- package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetControlProps.d.ts +2 -1
- package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +5 -2
- package/lib/types/components/livechatwidget/interfaces/IScrollBarProps.d.ts +22 -0
- package/lib/types/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.d.ts +2 -2
- package/lib/types/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.d.ts +5 -0
- package/lib/types/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.d.ts +4 -0
- package/lib/types/components/reconnectchatpanestateful/interfaces/IReconnectChatPaneStatefulProps.d.ts +0 -2
- package/lib/types/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.d.ts +2 -0
- package/lib/types/components/webchatcontainerstateful/common/mockchatsdk.d.ts +1 -0
- package/lib/types/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.d.ts +4 -0
- package/lib/types/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.d.ts +4 -0
- package/lib/types/components/webchatcontainerstateful/interfaces/IRenderingMiddlewareProps.d.ts +4 -1
- package/lib/types/components/webchatcontainerstateful/interfaces/IWebChatContainerStatefulProps.d.ts +4 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.d.ts +3 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.d.ts +1 -1
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.d.ts +2 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.d.ts +1 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.d.ts +2 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.d.ts +3 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.d.ts +3 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.d.ts +5 -0
- package/lib/types/contexts/common/ConversationState.d.ts +3 -2
- package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +4 -3
- package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +7 -3
- package/lib/types/contexts/common/LiveChatWidgetContextInitialState.d.ts +1 -2
- package/package.json +5 -4
package/lib/esm/common/utils.js
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
import { AriaTelemetryConstants, Constants, LocaleConstants } from "./Constants";
|
|
2
|
+
import { DataStoreManager } from "./contextDataStore/DataStoreManager";
|
|
2
3
|
import { KeyCodes } from "./KeyCodes";
|
|
3
|
-
|
|
4
|
+
import { BroadcastEvent } from "./telemetry/TelemetryConstants";
|
|
5
|
+
import { Md5 } from "md5-typescript";
|
|
4
6
|
const getElementBySelector = selector => {
|
|
5
7
|
let element;
|
|
6
|
-
|
|
7
8
|
if (typeof selector === "string") {
|
|
8
9
|
element = document.querySelector(selector);
|
|
9
10
|
} else {
|
|
10
11
|
element = selector;
|
|
11
12
|
}
|
|
12
|
-
|
|
13
13
|
return element;
|
|
14
|
-
};
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
// The purpose of this function is:
|
|
15
17
|
// - to make elements not focusable, when confirmation pane or email transcript pane are showing,
|
|
16
18
|
// - to set their initial tab indices back after confirmation pane or email transcript pane are closed
|
|
17
19
|
// Otherwise, the user will be able to click on the screen and tab through different buttons or other elements, even though
|
|
18
20
|
// these dialogs are showing
|
|
19
|
-
|
|
20
|
-
|
|
21
21
|
export const setTabIndices = (elements, tabIndexMap, shouldBeFocusable) => {
|
|
22
22
|
if (elements) {
|
|
23
23
|
if (shouldBeFocusable) {
|
|
@@ -26,7 +26,6 @@ export const setTabIndices = (elements, tabIndexMap, shouldBeFocusable) => {
|
|
|
26
26
|
elements[index].tabIndex = tabIndexMap.get(elements[index].id);
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
|
|
30
29
|
tabIndexMap.clear();
|
|
31
30
|
} else {
|
|
32
31
|
for (let index = 0; index < elements.length; index++) {
|
|
@@ -38,64 +37,49 @@ export const setTabIndices = (elements, tabIndexMap, shouldBeFocusable) => {
|
|
|
38
37
|
};
|
|
39
38
|
export const findParentFocusableElementsWithoutChildContainer = elementId => {
|
|
40
39
|
const childContainer = document.getElementById(elementId);
|
|
41
|
-
|
|
42
40
|
if (!childContainer) {
|
|
43
41
|
return null;
|
|
44
42
|
}
|
|
45
|
-
|
|
46
43
|
const parentContainer = childContainer.parentElement;
|
|
47
|
-
|
|
48
44
|
if (!parentContainer) {
|
|
49
45
|
return null;
|
|
50
46
|
}
|
|
51
|
-
|
|
52
47
|
const parentFocusableElements = findAllFocusableElement(parentContainer);
|
|
53
|
-
|
|
54
48
|
if (!parentFocusableElements) {
|
|
55
49
|
return null;
|
|
56
50
|
}
|
|
57
|
-
|
|
58
51
|
for (let index = 0; index < parentFocusableElements.length; index++) {
|
|
59
52
|
if (childContainer.contains(parentFocusableElements[index])) {
|
|
60
53
|
parentFocusableElements.splice(index, 1);
|
|
61
54
|
index--;
|
|
62
55
|
}
|
|
63
56
|
}
|
|
64
|
-
|
|
65
57
|
return parentFocusableElements;
|
|
66
58
|
};
|
|
67
59
|
export const findAllFocusableElement = parent => {
|
|
68
60
|
const container = getElementBySelector(parent);
|
|
69
|
-
|
|
70
61
|
if (container !== null) {
|
|
71
62
|
return Array.prototype.slice.call(container.querySelectorAll("a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), [tabindex=\"0\"]"));
|
|
72
63
|
}
|
|
73
|
-
|
|
74
64
|
return null;
|
|
75
65
|
};
|
|
76
66
|
export const preventFocusToMoveOutOfElement = elementId => {
|
|
77
67
|
const container = document.getElementById(elementId);
|
|
78
|
-
|
|
79
68
|
if (!container) {
|
|
80
69
|
return;
|
|
81
70
|
}
|
|
82
|
-
|
|
83
71
|
const focusableElements = findAllFocusableElement(container);
|
|
84
|
-
|
|
85
72
|
if (!focusableElements) {
|
|
86
73
|
return;
|
|
87
74
|
}
|
|
88
|
-
|
|
89
75
|
const firstFocusableElement = focusableElements[0];
|
|
90
76
|
const lastFocusableElement = focusableElements[focusableElements.length - 1];
|
|
91
|
-
|
|
92
77
|
firstFocusableElement.onkeydown = e => {
|
|
93
78
|
if (e.shiftKey && e.key === KeyCodes.TAB) {
|
|
94
79
|
e.preventDefault();
|
|
95
80
|
lastFocusableElement === null || lastFocusableElement === void 0 ? void 0 : lastFocusableElement.focus();
|
|
96
81
|
}
|
|
97
82
|
};
|
|
98
|
-
|
|
99
83
|
lastFocusableElement.onkeydown = e => {
|
|
100
84
|
if (!e.shiftKey && e.key === KeyCodes.TAB) {
|
|
101
85
|
e.preventDefault();
|
|
@@ -126,14 +110,12 @@ export const escapeHtml = inputString => {
|
|
|
126
110
|
export const getIconText = text => {
|
|
127
111
|
if (text) {
|
|
128
112
|
const initials = text.split(/\s/).reduce((response, word) => response += word.slice(0, 1), "");
|
|
129
|
-
|
|
130
113
|
if (initials.length > 1) {
|
|
131
114
|
return initials.substring(0, 2).toUpperCase();
|
|
132
115
|
} else {
|
|
133
116
|
return text.substring(0, 2).toUpperCase();
|
|
134
117
|
}
|
|
135
118
|
}
|
|
136
|
-
|
|
137
119
|
return "";
|
|
138
120
|
};
|
|
139
121
|
export const getLocaleDirection = localeLCID => {
|
|
@@ -149,20 +131,16 @@ export const getTimestampHourMinute = timestampStr => {
|
|
|
149
131
|
const minuteFormat = "2-digit";
|
|
150
132
|
const date = new Date(timestampStr);
|
|
151
133
|
const now = new Date();
|
|
152
|
-
|
|
153
134
|
if (isNaN(date.getTime())) {
|
|
154
135
|
return "";
|
|
155
136
|
}
|
|
156
|
-
|
|
157
137
|
if (date.getFullYear() !== now.getFullYear()) {
|
|
158
138
|
yearFormat = "numeric";
|
|
159
139
|
monthDayFormat = "2-digit";
|
|
160
140
|
}
|
|
161
|
-
|
|
162
141
|
if (date.getMonth() !== now.getMonth() || date.getDate() !== now.getDate()) {
|
|
163
142
|
monthDayFormat = "2-digit";
|
|
164
143
|
}
|
|
165
|
-
|
|
166
144
|
return date.toLocaleTimeString(navigator.language, {
|
|
167
145
|
year: yearFormat,
|
|
168
146
|
month: monthDayFormat,
|
|
@@ -176,7 +154,6 @@ export const parseAdaptiveCardPayload = (payload, requiredFieldMissingMessage) =
|
|
|
176
154
|
try {
|
|
177
155
|
const parsedPayload = JSON.parse(payload.replace(/*/g, "*"));
|
|
178
156
|
const body = parsedPayload.body;
|
|
179
|
-
|
|
180
157
|
if (body) {
|
|
181
158
|
//Parse ID field into available options and add required error messages
|
|
182
159
|
for (const fields of body) {
|
|
@@ -184,23 +161,21 @@ export const parseAdaptiveCardPayload = (payload, requiredFieldMissingMessage) =
|
|
|
184
161
|
const parsedId = JSON.parse(fields.id);
|
|
185
162
|
fields.id = parsedId.Id;
|
|
186
163
|
fields.isRequired = parsedId.IsRequired ?? false;
|
|
187
|
-
|
|
188
164
|
if (fields.isRequired) {
|
|
189
165
|
fields.errorMessage = requiredFieldMissingMessage.replace("{0}", parsedId.Name ?? "");
|
|
190
166
|
}
|
|
191
167
|
}
|
|
192
168
|
}
|
|
193
169
|
}
|
|
194
|
-
|
|
195
170
|
return JSON.stringify(parsedPayload);
|
|
196
171
|
} catch (ex) {
|
|
197
172
|
throw new Error(`Adaptive card pase error: ${ex}`);
|
|
198
173
|
}
|
|
199
174
|
}
|
|
200
|
-
|
|
201
175
|
return payload;
|
|
202
|
-
};
|
|
176
|
+
};
|
|
203
177
|
|
|
178
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
204
179
|
export const extractPreChatSurveyResponseValues = (preChatSurvey, values) => {
|
|
205
180
|
if (preChatSurvey && preChatSurvey !== "{}" && values) {
|
|
206
181
|
try {
|
|
@@ -210,14 +185,13 @@ export const extractPreChatSurveyResponseValues = (preChatSurvey, values) => {
|
|
|
210
185
|
"Type": Constants.InputSubmit
|
|
211
186
|
};
|
|
212
187
|
const computedValues = [];
|
|
213
|
-
|
|
214
188
|
for (const val of values) {
|
|
215
189
|
const index = val.index;
|
|
216
190
|
const Id = body[index].id;
|
|
217
191
|
computedValues[Id] = val.value;
|
|
218
192
|
}
|
|
219
|
-
|
|
220
|
-
|
|
193
|
+
const finalPayload = {
|
|
194
|
+
...type,
|
|
221
195
|
...computedValues
|
|
222
196
|
};
|
|
223
197
|
return finalPayload;
|
|
@@ -225,10 +199,10 @@ export const extractPreChatSurveyResponseValues = (preChatSurvey, values) => {
|
|
|
225
199
|
throw new Error(`PreChatSurvey Response parse error: ${ex}`);
|
|
226
200
|
}
|
|
227
201
|
}
|
|
228
|
-
|
|
229
202
|
return {};
|
|
230
|
-
};
|
|
203
|
+
};
|
|
231
204
|
|
|
205
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
232
206
|
export const isNullOrUndefined = obj => {
|
|
233
207
|
return obj === null || obj === undefined;
|
|
234
208
|
};
|
|
@@ -239,26 +213,21 @@ export const newGuid = () => {
|
|
|
239
213
|
//RFC 4122 canonical representation Version-4 xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx where x is any hexadecimal digit and y is one of 8, 9, A, or B
|
|
240
214
|
const guidPattern = Constants.GuidPattern;
|
|
241
215
|
let newGuid = "";
|
|
242
|
-
|
|
243
216
|
for (let i = 0; i < guidPattern.length; i++) {
|
|
244
217
|
const randomString = Math.floor(Math.random() * Date.now());
|
|
245
|
-
|
|
246
218
|
switch (guidPattern[i]) {
|
|
247
219
|
case "x":
|
|
248
220
|
newGuid += randomString.toString(16).substring(0, 4);
|
|
249
221
|
break;
|
|
250
222
|
//get 4 digit
|
|
251
|
-
|
|
252
223
|
case "m":
|
|
253
224
|
newGuid += randomString.toString(16).substring(0, 3);
|
|
254
225
|
break;
|
|
255
226
|
//Get 3 digit
|
|
256
|
-
|
|
257
227
|
case "y":
|
|
258
228
|
newGuid += (randomString & 0x3 | 0x8).toString(16);
|
|
259
229
|
break;
|
|
260
230
|
// To get only one of 8, 9, A, or B
|
|
261
|
-
|
|
262
231
|
default:
|
|
263
232
|
newGuid += guidPattern[i];
|
|
264
233
|
//Default "-" and "4"
|
|
@@ -274,17 +243,65 @@ export const createTimer = () => {
|
|
|
274
243
|
const ms = new Date().getTime() - timeStart;
|
|
275
244
|
return ms;
|
|
276
245
|
}
|
|
277
|
-
|
|
278
246
|
};
|
|
279
|
-
};
|
|
280
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
247
|
+
};
|
|
281
248
|
|
|
249
|
+
// Returns the domain of the org
|
|
250
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
282
251
|
export const getDomain = hostValue => {
|
|
283
252
|
for (let i = 0; i < AriaTelemetryConstants.lcwEUDomainNames.length; i++) {
|
|
284
253
|
if (hostValue.endsWith(AriaTelemetryConstants.lcwEUDomainNames[i])) {
|
|
285
254
|
return AriaTelemetryConstants.EU;
|
|
286
255
|
}
|
|
287
256
|
}
|
|
288
|
-
|
|
289
257
|
return AriaTelemetryConstants.Public;
|
|
258
|
+
};
|
|
259
|
+
export const getWidgetCacheId = (orgId, widgetId, widgetInstanceId) => {
|
|
260
|
+
const widgetCacheId = `${widgetInstanceId}_${orgId}_${widgetId}`;
|
|
261
|
+
return Md5.init(widgetCacheId);
|
|
262
|
+
};
|
|
263
|
+
export const getWidgetEndChatEventName = (orgId, widgetId, widgetInstanceId) => {
|
|
264
|
+
if (!isNullOrEmptyString(widgetInstanceId)) {
|
|
265
|
+
return `${BroadcastEvent.ChatEnded}_${widgetInstanceId}_${orgId}_${widgetId}`;
|
|
266
|
+
}
|
|
267
|
+
return `${BroadcastEvent.ChatEnded}_${orgId}_${widgetId}`;
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
271
|
+
export const getStateFromCache = (orgId, widgetId, widgetInstanceId) => {
|
|
272
|
+
// Getting updated state from cache
|
|
273
|
+
try {
|
|
274
|
+
if (DataStoreManager.clientDataStore) {
|
|
275
|
+
var _DataStoreManager$cli;
|
|
276
|
+
const widgetStateEventName = getWidgetCacheId(orgId, widgetId, widgetInstanceId);
|
|
277
|
+
const widgetStateFromCache = (_DataStoreManager$cli = DataStoreManager.clientDataStore) === null || _DataStoreManager$cli === void 0 ? void 0 : _DataStoreManager$cli.getData(widgetStateEventName, "localStorage");
|
|
278
|
+
const persistedState = widgetStateFromCache ? JSON.parse(widgetStateFromCache) : undefined;
|
|
279
|
+
return persistedState;
|
|
280
|
+
} else {
|
|
281
|
+
return null;
|
|
282
|
+
}
|
|
283
|
+
} catch (error) {
|
|
284
|
+
console.log(error);
|
|
285
|
+
return null;
|
|
286
|
+
}
|
|
287
|
+
};
|
|
288
|
+
|
|
289
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
290
|
+
export const isUndefinedOrEmpty = object => {
|
|
291
|
+
if (object) {
|
|
292
|
+
if (Object.keys(object).length === 0) {
|
|
293
|
+
return true;
|
|
294
|
+
}
|
|
295
|
+
return false;
|
|
296
|
+
} else {
|
|
297
|
+
return true;
|
|
298
|
+
}
|
|
299
|
+
};
|
|
300
|
+
|
|
301
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
302
|
+
export const addDelayInMs = ms => {
|
|
303
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
304
|
+
};
|
|
305
|
+
export const getBroadcastChannelName = (widgetId, widgetInstanceId) => {
|
|
306
|
+
return widgetInstanceId && !isNullOrEmptyString(widgetInstanceId) ? `${widgetInstanceId}_${widgetId}` : widgetId;
|
|
290
307
|
};
|
|
@@ -7,17 +7,17 @@ import useChatContextStore from "../../hooks/useChatContextStore";
|
|
|
7
7
|
import useChatSDKStore from "../../hooks/useChatSDKStore";
|
|
8
8
|
export const CallingContainerStateful = props => {
|
|
9
9
|
var _props$controlProps, _props$controlProps2, _props$controlProps2$, _props$controlProps3, _props$controlProps3$, _props$controlProps3$2, _props$controlProps4, _props$controlProps4$, _props$controlProps4$2, _props$controlProps5;
|
|
10
|
-
|
|
11
10
|
//TODO : Close button confirmation implmentation is pending
|
|
12
|
-
const [state, dispatch] = useChatContextStore(); // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
13
11
|
|
|
14
|
-
const
|
|
12
|
+
const [state, dispatch] = useChatContextStore();
|
|
13
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
14
|
+
const chatSDK = useChatSDKStore();
|
|
15
15
|
|
|
16
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
16
17
|
const {
|
|
17
18
|
voiceVideoCallingSdk
|
|
18
19
|
} = props;
|
|
19
20
|
let callId;
|
|
20
|
-
|
|
21
21
|
const resetCallingStates = reset => {
|
|
22
22
|
if (reset) {
|
|
23
23
|
dispatch({
|
|
@@ -42,12 +42,10 @@ export const CallingContainerStateful = props => {
|
|
|
42
42
|
});
|
|
43
43
|
}
|
|
44
44
|
};
|
|
45
|
-
|
|
46
45
|
useEffect(() => {
|
|
47
46
|
const init = async () => {
|
|
48
47
|
try {
|
|
49
48
|
var _controlProps$current, _controlProps$current2, _controlProps$current3, _controlProps$current4;
|
|
50
|
-
|
|
51
49
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
52
50
|
TelemetryHelper.callId = callId;
|
|
53
51
|
await voiceVideoCallingSdk.initialize({
|
|
@@ -60,16 +58,15 @@ export const CallingContainerStateful = props => {
|
|
|
60
58
|
});
|
|
61
59
|
} catch (e) {
|
|
62
60
|
TelemetryHelper.logCallingEvent(LogLevel.ERROR, {
|
|
63
|
-
Event: TelemetryEvent.
|
|
61
|
+
Event: TelemetryEvent.VoiceVideoSdkInitializeException,
|
|
64
62
|
Description: `Failed to initialize VideoVoiceCalling Sdk: ${e}`
|
|
65
63
|
});
|
|
66
64
|
}
|
|
67
65
|
};
|
|
68
|
-
|
|
69
66
|
init().then(() => {
|
|
70
67
|
if (voiceVideoCallingSdk) {
|
|
71
68
|
TelemetryHelper.logCallingEvent(LogLevel.INFO, {
|
|
72
|
-
Event: TelemetryEvent.
|
|
69
|
+
Event: TelemetryEvent.VoiceVideoSdkInitialize,
|
|
73
70
|
Description: "Initialize VideoVoiceCalling Sdk Success"
|
|
74
71
|
}, callId);
|
|
75
72
|
voiceVideoCallingSdk.onCallAdded(() => {
|
|
@@ -131,14 +128,12 @@ export const CallingContainerStateful = props => {
|
|
|
131
128
|
}, callId);
|
|
132
129
|
const isRemoteVideoDisabled = !voiceVideoCallingSdk.isRemoteVideoEnabled();
|
|
133
130
|
const isLocalVideoDisabled = !voiceVideoCallingSdk.isLocalVideoEnabled();
|
|
134
|
-
|
|
135
131
|
if (isRemoteVideoDisabled && isLocalVideoDisabled) {
|
|
136
132
|
dispatch({
|
|
137
133
|
type: LiveChatWidgetActionType.DISABLE_VIDEO_CALL,
|
|
138
134
|
payload: true
|
|
139
135
|
});
|
|
140
136
|
}
|
|
141
|
-
|
|
142
137
|
dispatch({
|
|
143
138
|
type: LiveChatWidgetActionType.DISABLE_REMOTE_VIDEO,
|
|
144
139
|
payload: isRemoteVideoDisabled
|
|
@@ -150,14 +145,12 @@ export const CallingContainerStateful = props => {
|
|
|
150
145
|
}, callId);
|
|
151
146
|
const isLocalVideoDisabled = !voiceVideoCallingSdk.isLocalVideoEnabled();
|
|
152
147
|
const isRemoteVideoDisabled = !voiceVideoCallingSdk.isRemoteVideoEnabled();
|
|
153
|
-
|
|
154
148
|
if (isRemoteVideoDisabled && isLocalVideoDisabled) {
|
|
155
149
|
dispatch({
|
|
156
150
|
type: LiveChatWidgetActionType.DISABLE_VIDEO_CALL,
|
|
157
151
|
payload: true
|
|
158
152
|
});
|
|
159
153
|
}
|
|
160
|
-
|
|
161
154
|
dispatch({
|
|
162
155
|
type: LiveChatWidgetActionType.DISABLE_LOCAL_VIDEO,
|
|
163
156
|
payload: isLocalVideoDisabled
|
|
@@ -183,7 +176,6 @@ export const CallingContainerStateful = props => {
|
|
|
183
176
|
} else {
|
|
184
177
|
voiceVideoCallingSdk === null || voiceVideoCallingSdk === void 0 ? void 0 : voiceVideoCallingSdk.stopCall();
|
|
185
178
|
}
|
|
186
|
-
|
|
187
179
|
voiceVideoCallingSdk === null || voiceVideoCallingSdk === void 0 ? void 0 : voiceVideoCallingSdk.close();
|
|
188
180
|
dispatch({
|
|
189
181
|
type: LiveChatWidgetActionType.SET_E2VV_ENABLED,
|
|
@@ -231,7 +223,6 @@ export const CallingContainerStateful = props => {
|
|
|
231
223
|
}
|
|
232
224
|
}, callId);
|
|
233
225
|
}
|
|
234
|
-
|
|
235
226
|
dispatch({
|
|
236
227
|
type: LiveChatWidgetActionType.SET_INCOMING_CALL,
|
|
237
228
|
payload: false
|
|
@@ -257,7 +248,6 @@ export const CallingContainerStateful = props => {
|
|
|
257
248
|
}
|
|
258
249
|
}, callId);
|
|
259
250
|
}
|
|
260
|
-
|
|
261
251
|
dispatch({
|
|
262
252
|
type: LiveChatWidgetActionType.SET_INCOMING_CALL,
|
|
263
253
|
payload: false
|
|
@@ -317,7 +307,8 @@ export const CallingContainerStateful = props => {
|
|
|
317
307
|
}, callId);
|
|
318
308
|
}
|
|
319
309
|
}, []),
|
|
320
|
-
nonActionIds: {
|
|
310
|
+
nonActionIds: {
|
|
311
|
+
...(props === null || props === void 0 ? void 0 : (_props$controlProps2 = props.controlProps) === null || _props$controlProps2 === void 0 ? void 0 : (_props$controlProps2$ = _props$controlProps2.currentCallControlProps) === null || _props$controlProps2$ === void 0 ? void 0 : _props$controlProps2$.nonActionIds),
|
|
321
312
|
selfVideoTileId: (props === null || props === void 0 ? void 0 : (_props$controlProps3 = props.controlProps) === null || _props$controlProps3 === void 0 ? void 0 : (_props$controlProps3$ = _props$controlProps3.currentCallControlProps) === null || _props$controlProps3$ === void 0 ? void 0 : (_props$controlProps3$2 = _props$controlProps3$.nonActionIds) === null || _props$controlProps3$2 === void 0 ? void 0 : _props$controlProps3$2.selfVideoTileId) ?? "selfVideo",
|
|
322
313
|
remoteVideoTileId: (props === null || props === void 0 ? void 0 : (_props$controlProps4 = props.controlProps) === null || _props$controlProps4 === void 0 ? void 0 : (_props$controlProps4$ = _props$controlProps4.currentCallControlProps) === null || _props$controlProps4$ === void 0 ? void 0 : (_props$controlProps4$2 = _props$controlProps4$.nonActionIds) === null || _props$controlProps4$2 === void 0 ? void 0 : _props$controlProps4$2.remoteVideoTileId) ?? "remoteVideo"
|
|
323
314
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
|
|
2
|
-
import React, { useEffect, useState } from "react";
|
|
3
|
-
import { ChatButton } from "@microsoft/omnichannel-chat-components";
|
|
1
|
+
import { BroadcastEvent, LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
|
|
2
|
+
import React, { useEffect, useRef, useState } from "react";
|
|
3
|
+
import { BroadcastService, ChatButton } from "@microsoft/omnichannel-chat-components";
|
|
4
4
|
import { Constants } from "../../common/Constants";
|
|
5
5
|
import { setFocusOnElement } from "../../common/utils";
|
|
6
6
|
import { ConversationState } from "../../contexts/common/ConversationState";
|
|
@@ -10,16 +10,16 @@ import { TelemetryTimers } from "../../common/telemetry/TelemetryManager";
|
|
|
10
10
|
import { defaultOutOfOfficeChatButtonStyleProps } from "./common/styleProps/defaultOutOfOfficeChatButtonStyleProps";
|
|
11
11
|
import useChatContextStore from "../../hooks/useChatContextStore";
|
|
12
12
|
export const ChatButtonStateful = props => {
|
|
13
|
-
var _state$domainStates$l, _state$domainStates$l2, _buttonProps$controlP;
|
|
14
|
-
|
|
13
|
+
var _state$domainStates$l, _state$domainStates$l2, _buttonProps$controlP, _props$buttonProps, _props$buttonProps$co, _props$buttonProps2, _props$buttonProps2$c, _props$buttonProps3, _props$buttonProps3$c;
|
|
15
14
|
const [state, dispatch] = useChatContextStore();
|
|
16
15
|
const {
|
|
17
16
|
buttonProps,
|
|
18
17
|
outOfOfficeButtonProps,
|
|
19
18
|
startChat
|
|
20
|
-
} = props;
|
|
21
|
-
|
|
19
|
+
} = props;
|
|
20
|
+
//Setting OutOfOperatingHours Flag
|
|
22
21
|
const [outOfOperatingHours, setOutOfOperatingHours] = useState(((_state$domainStates$l = state.domainStates.liveChatConfig) === null || _state$domainStates$l === void 0 ? void 0 : (_state$domainStates$l2 = _state$domainStates$l.LiveWSAndLiveChatEngJoin) === null || _state$domainStates$l2 === void 0 ? void 0 : _state$domainStates$l2.OutOfOperatingHours) === "True");
|
|
22
|
+
const proactiveChatInNewWindow = useRef(state.appStates.proactiveChatStates.proactiveChatInNewWindow);
|
|
23
23
|
const outOfOfficeStyleProps = Object.assign({}, defaultOutOfOfficeChatButtonStyleProps, outOfOfficeButtonProps === null || outOfOfficeButtonProps === void 0 ? void 0 : outOfOfficeButtonProps.styleProps);
|
|
24
24
|
const controlProps = {
|
|
25
25
|
id: "oc-lcw-chat-button",
|
|
@@ -27,13 +27,17 @@ export const ChatButtonStateful = props => {
|
|
|
27
27
|
titleText: "Let's Chat!",
|
|
28
28
|
subtitleText: "We're online.",
|
|
29
29
|
hideNotificationBubble: (buttonProps === null || buttonProps === void 0 ? void 0 : (_buttonProps$controlP = buttonProps.controlProps) === null || _buttonProps$controlP === void 0 ? void 0 : _buttonProps$controlP.hideNotificationBubble) === true || state.appStates.isMinimized === false,
|
|
30
|
-
unreadMessageCount: state.appStates.unreadMessageCount ? state.appStates.unreadMessageCount > Constants.maximumUnreadMessageCount ?
|
|
30
|
+
unreadMessageCount: state.appStates.unreadMessageCount ? state.appStates.unreadMessageCount > Constants.maximumUnreadMessageCount ? (_props$buttonProps = props.buttonProps) === null || _props$buttonProps === void 0 ? void 0 : (_props$buttonProps$co = _props$buttonProps.controlProps) === null || _props$buttonProps$co === void 0 ? void 0 : _props$buttonProps$co.largeUnreadMessageString : state.appStates.unreadMessageCount.toString() : "0",
|
|
31
31
|
onClick: async () => {
|
|
32
32
|
TelemetryHelper.logActionEvent(LogLevel.INFO, {
|
|
33
33
|
Event: TelemetryEvent.LCWChatButtonClicked
|
|
34
34
|
});
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
if (proactiveChatInNewWindow.current) {
|
|
36
|
+
const proactiveChatIsInPopoutModeEvent = {
|
|
37
|
+
eventName: BroadcastEvent.ProactiveChatIsInPopoutMode
|
|
38
|
+
};
|
|
39
|
+
BroadcastService.postMessage(proactiveChatIsInPopoutModeEvent);
|
|
40
|
+
} else if (state.appStates.isMinimized) {
|
|
37
41
|
dispatch({
|
|
38
42
|
type: LiveChatWidgetActionType.SET_MINIMIZED,
|
|
39
43
|
payload: false
|
|
@@ -42,6 +46,7 @@ export const ChatButtonStateful = props => {
|
|
|
42
46
|
await startChat();
|
|
43
47
|
}
|
|
44
48
|
},
|
|
49
|
+
unreadMessageString: (_props$buttonProps2 = props.buttonProps) === null || _props$buttonProps2 === void 0 ? void 0 : (_props$buttonProps2$c = _props$buttonProps2.controlProps) === null || _props$buttonProps2$c === void 0 ? void 0 : _props$buttonProps2$c.unreadMessageString,
|
|
45
50
|
...(buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.controlProps)
|
|
46
51
|
};
|
|
47
52
|
const outOfOfficeControlProps = {
|
|
@@ -50,6 +55,9 @@ export const ChatButtonStateful = props => {
|
|
|
50
55
|
titleText: "We're Offline",
|
|
51
56
|
subtitleText: "No agents available",
|
|
52
57
|
onClick: async () => {
|
|
58
|
+
TelemetryHelper.logActionEvent(LogLevel.INFO, {
|
|
59
|
+
Event: TelemetryEvent.LCWChatButtonClicked
|
|
60
|
+
});
|
|
53
61
|
if (state.appStates.isMinimized) {
|
|
54
62
|
dispatch({
|
|
55
63
|
type: LiveChatWidgetActionType.SET_MINIMIZED,
|
|
@@ -62,18 +70,17 @@ export const ChatButtonStateful = props => {
|
|
|
62
70
|
});
|
|
63
71
|
}
|
|
64
72
|
},
|
|
73
|
+
unreadMessageString: (_props$buttonProps3 = props.buttonProps) === null || _props$buttonProps3 === void 0 ? void 0 : (_props$buttonProps3$c = _props$buttonProps3.controlProps) === null || _props$buttonProps3$c === void 0 ? void 0 : _props$buttonProps3$c.unreadMessageString,
|
|
65
74
|
...(outOfOfficeButtonProps === null || outOfOfficeButtonProps === void 0 ? void 0 : outOfOfficeButtonProps.controlProps)
|
|
66
75
|
};
|
|
67
76
|
useEffect(() => {
|
|
68
77
|
if (state.appStates.outsideOperatingHours) {
|
|
69
78
|
setOutOfOperatingHours(true);
|
|
70
79
|
}
|
|
71
|
-
|
|
72
80
|
TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
|
|
73
81
|
Event: TelemetryEvent.LCWChatButtonShow,
|
|
74
82
|
ElapsedTimeInMilliseconds: TelemetryTimers.LcwLoadToChatButtonTimer.milliSecondsElapsed
|
|
75
83
|
});
|
|
76
|
-
|
|
77
84
|
if (state.uiStates.focusChatButton) {
|
|
78
85
|
setFocusOnElement(document.getElementById((controlProps === null || controlProps === void 0 ? void 0 : controlProps.id) ?? "oc-lcw-chat-button"));
|
|
79
86
|
} else {
|
|
@@ -83,6 +90,9 @@ export const ChatButtonStateful = props => {
|
|
|
83
90
|
});
|
|
84
91
|
}
|
|
85
92
|
}, []);
|
|
93
|
+
useEffect(() => {
|
|
94
|
+
proactiveChatInNewWindow.current = state.appStates.proactiveChatStates.proactiveChatInNewWindow;
|
|
95
|
+
}, [state.appStates.proactiveChatStates.proactiveChatInNewWindow]);
|
|
86
96
|
return /*#__PURE__*/React.createElement(ChatButton, {
|
|
87
97
|
componentOverrides: buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.componentOverrides,
|
|
88
98
|
controlProps: outOfOperatingHours ? outOfOfficeControlProps : controlProps,
|
|
@@ -8,17 +8,17 @@ import { NotificationHandler } from "../webchatcontainerstateful/webchatcontroll
|
|
|
8
8
|
import { NotificationScenarios } from "../webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios";
|
|
9
9
|
import { TelemetryHelper } from "../../common/telemetry/TelemetryHelper";
|
|
10
10
|
import useChatAdapterStore from "../../hooks/useChatAdapterStore";
|
|
11
|
-
import useChatContextStore from "../../hooks/useChatContextStore";
|
|
11
|
+
import useChatContextStore from "../../hooks/useChatContextStore";
|
|
12
12
|
|
|
13
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
13
14
|
export const ConfirmationPaneStateful = props => {
|
|
14
15
|
const initialTabIndexMap = new Map();
|
|
15
16
|
let elements = [];
|
|
16
17
|
const [state, dispatch] = useChatContextStore();
|
|
17
18
|
const {
|
|
18
19
|
prepareEndChat
|
|
19
|
-
} = props;
|
|
20
|
+
} = props;
|
|
20
21
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
21
|
-
|
|
22
22
|
const [adapter] = useChatAdapterStore();
|
|
23
23
|
const controlProps = {
|
|
24
24
|
id: "oc-lcw-confirmation-pane",
|
|
@@ -32,7 +32,6 @@ export const ConfirmationPaneStateful = props => {
|
|
|
32
32
|
type: LiveChatWidgetActionType.SET_SHOW_CONFIRMATION,
|
|
33
33
|
payload: false
|
|
34
34
|
});
|
|
35
|
-
|
|
36
35
|
try {
|
|
37
36
|
setTabIndices(elements, initialTabIndexMap, true);
|
|
38
37
|
await prepareEndChat(adapter, state);
|
|
@@ -55,31 +54,28 @@ export const ConfirmationPaneStateful = props => {
|
|
|
55
54
|
type: LiveChatWidgetActionType.SET_SHOW_CONFIRMATION,
|
|
56
55
|
payload: false
|
|
57
56
|
});
|
|
58
|
-
const
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
setFocusOnElement(previousFocused);
|
|
57
|
+
const previousFocusedElementId = state.appStates.previousElementIdOnFocusBeforeModalOpen;
|
|
58
|
+
if (previousFocusedElementId) {
|
|
59
|
+
setFocusOnElement("#" + previousFocusedElementId);
|
|
62
60
|
dispatch({
|
|
63
|
-
type: LiveChatWidgetActionType.
|
|
61
|
+
type: LiveChatWidgetActionType.SET_PREVIOUS_FOCUSED_ELEMENT_ID,
|
|
64
62
|
payload: null
|
|
65
63
|
});
|
|
66
64
|
} else {
|
|
67
65
|
setFocusOnSendBox();
|
|
68
66
|
}
|
|
69
|
-
|
|
70
67
|
setTabIndices(elements, initialTabIndexMap, true);
|
|
71
68
|
},
|
|
72
69
|
...(props === null || props === void 0 ? void 0 : props.controlProps)
|
|
73
|
-
};
|
|
70
|
+
};
|
|
74
71
|
|
|
72
|
+
// Move focus to the first button
|
|
75
73
|
useEffect(() => {
|
|
76
74
|
preventFocusToMoveOutOfElement(controlProps.id);
|
|
77
75
|
const focusableElements = findAllFocusableElement(`#${controlProps.id}`);
|
|
78
|
-
|
|
79
76
|
if (focusableElements) {
|
|
80
77
|
focusableElements[0].focus();
|
|
81
78
|
}
|
|
82
|
-
|
|
83
79
|
elements = findParentFocusableElementsWithoutChildContainer(controlProps.id);
|
|
84
80
|
setTabIndices(elements, initialTabIndexMap, false);
|
|
85
81
|
TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
|
|
@@ -12,34 +12,29 @@ import useChatContextStore from "../../hooks/useChatContextStore";
|
|
|
12
12
|
import useChatSDKStore from "../../hooks/useChatSDKStore";
|
|
13
13
|
export const EmailTranscriptPaneStateful = props => {
|
|
14
14
|
var _props$controlProps;
|
|
15
|
-
|
|
16
15
|
const initialTabIndexMap = new Map();
|
|
17
16
|
let elements = [];
|
|
18
|
-
const [state, dispatch] = useChatContextStore();
|
|
19
|
-
|
|
17
|
+
const [state, dispatch] = useChatContextStore();
|
|
18
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
20
19
|
const chatSDK = useChatSDKStore();
|
|
21
20
|
const [initialEmail, setInitialEmail] = useState("");
|
|
22
|
-
|
|
23
21
|
const closeEmailTranscriptPane = () => {
|
|
24
22
|
dispatch({
|
|
25
23
|
type: LiveChatWidgetActionType.SET_SHOW_EMAIL_TRANSCRIPT_PANE,
|
|
26
24
|
payload: false
|
|
27
25
|
});
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
setFocusOnElement(previousFocused);
|
|
26
|
+
const previousFocusedElementId = state.appStates.previousElementIdOnFocusBeforeModalOpen;
|
|
27
|
+
if (previousFocusedElementId) {
|
|
28
|
+
setFocusOnElement("#" + previousFocusedElementId);
|
|
32
29
|
} else {
|
|
33
30
|
setFocusOnSendBox();
|
|
34
31
|
}
|
|
35
|
-
|
|
36
32
|
dispatch({
|
|
37
|
-
type: LiveChatWidgetActionType.
|
|
33
|
+
type: LiveChatWidgetActionType.SET_PREVIOUS_FOCUSED_ELEMENT_ID,
|
|
38
34
|
payload: null
|
|
39
35
|
});
|
|
40
36
|
setTabIndices(elements, initialTabIndexMap, true);
|
|
41
37
|
};
|
|
42
|
-
|
|
43
38
|
const controlProps = {
|
|
44
39
|
id: "oclcw-emailTranscriptDialogContainer",
|
|
45
40
|
dir: state.domainStates.globalDir,
|
|
@@ -49,7 +44,6 @@ export const EmailTranscriptPaneStateful = props => {
|
|
|
49
44
|
emailAddress: email,
|
|
50
45
|
attachmentMessage: (props === null || props === void 0 ? void 0 : props.attachmentMessage) ?? "The following attachment was uploaded during the conversation:"
|
|
51
46
|
};
|
|
52
|
-
|
|
53
47
|
try {
|
|
54
48
|
await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.emailLiveChatTranscript(chatTranscriptBody));
|
|
55
49
|
TelemetryHelper.logActionEvent(LogLevel.INFO, {
|
|
@@ -78,16 +72,15 @@ export const EmailTranscriptPaneStateful = props => {
|
|
|
78
72
|
},
|
|
79
73
|
...props.controlProps,
|
|
80
74
|
inputInitialText: ((_props$controlProps = props.controlProps) === null || _props$controlProps === void 0 ? void 0 : _props$controlProps.inputInitialText) ?? initialEmail
|
|
81
|
-
};
|
|
75
|
+
};
|
|
82
76
|
|
|
77
|
+
// Move focus to the first button
|
|
83
78
|
useEffect(() => {
|
|
84
79
|
preventFocusToMoveOutOfElement(controlProps.id);
|
|
85
80
|
const focusableElements = findAllFocusableElement(`#${controlProps.id}`);
|
|
86
|
-
|
|
87
81
|
if (focusableElements) {
|
|
88
82
|
focusableElements[0].focus();
|
|
89
83
|
}
|
|
90
|
-
|
|
91
84
|
elements = findParentFocusableElementsWithoutChildContainer(controlProps.id);
|
|
92
85
|
setTabIndices(elements, initialTabIndexMap, false);
|
|
93
86
|
setInitialEmail(state.appStates.preChatResponseEmail);
|