@microsoft/omnichannel-chat-widget 0.1.0-main.ce08f21 → 0.1.0-main.ce5063d
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/assets/Icons.js +4 -2
- package/lib/cjs/common/Constants.js +17 -168
- 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 +28 -23
- 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 +24 -105
- package/lib/cjs/components/callingcontainerstateful/CallingContainerStateful.js +8 -46
- package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +2 -24
- package/lib/cjs/components/chatbuttonstateful/common/styleProps/defaultOutOfOfficeChatButtonStyleProps.js +3 -0
- package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +8 -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 +7 -45
- package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.spec.js +6 -8
- package/lib/cjs/components/headerstateful/HeaderStateful.js +15 -30
- package/lib/cjs/components/livechatwidget/LiveChatWidget.js +2 -14
- package/lib/cjs/components/livechatwidget/common/ActivityStreamHandler.js +2 -9
- package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +0 -5
- package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +4 -11
- package/lib/cjs/components/livechatwidget/common/ChatAdapterShim.js +11 -19
- package/lib/cjs/components/livechatwidget/common/Deferred.js +3 -10
- package/lib/cjs/components/livechatwidget/common/authHelper.js +50 -0
- package/lib/cjs/components/livechatwidget/common/createAdapter.js +2 -13
- 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 +16 -24
- package/lib/cjs/components/livechatwidget/common/defaultProps/defaultScrollBarProps.js +14 -0
- package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +62 -38
- package/lib/cjs/components/livechatwidget/common/disposeTelemetryLoggers.js +0 -3
- package/lib/cjs/components/livechatwidget/common/endChat.js +50 -35
- 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 +20 -54
- package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +78 -136
- package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +4 -17
- package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +2 -11
- package/lib/cjs/components/livechatwidget/common/shareObservable.js +4 -8
- package/lib/cjs/components/livechatwidget/common/startChat.js +169 -139
- 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 +226 -243
- package/lib/cjs/components/loadingpanestateful/LoadingPaneStateful.js +19 -19
- package/lib/cjs/components/loadingpanestateful/common/errorUIStyleProps/errorUILoadingPaneStyleProps.js +57 -0
- 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 +9 -37
- package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +2 -32
- package/lib/cjs/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +6 -24
- package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +29 -34
- 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 +2 -17
- 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/webchatcontroller/BotMagicCodeStore.js +0 -4
- 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 +17 -41
- 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 +2 -13
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +0 -16
- 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 +2 -30
- 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 +0 -1
- package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +30 -29
- package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +10 -11
- package/lib/cjs/contexts/createReducer.js +154 -108
- package/lib/cjs/controller/componentController.js +2 -31
- 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/assets/Icons.js +2 -1
- package/lib/esm/common/Constants.js +14 -155
- 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 +32 -20
- 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 +21 -53
- package/lib/esm/components/callingcontainerstateful/CallingContainerStateful.js +8 -17
- package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +2 -7
- package/lib/esm/components/chatbuttonstateful/common/styleProps/defaultOutOfOfficeChatButtonStyleProps.js +3 -0
- package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +10 -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 +7 -35
- package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.spec.js +6 -6
- package/lib/esm/components/headerstateful/HeaderStateful.js +15 -15
- package/lib/esm/components/livechatwidget/LiveChatWidget.js +2 -2
- package/lib/esm/components/livechatwidget/common/ActivityStreamHandler.js +2 -6
- package/lib/esm/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +0 -3
- package/lib/esm/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +4 -8
- package/lib/esm/components/livechatwidget/common/ChatAdapterShim.js +11 -15
- package/lib/esm/components/livechatwidget/common/Deferred.js +3 -8
- package/lib/esm/components/livechatwidget/common/authHelper.js +42 -0
- package/lib/esm/components/livechatwidget/common/createAdapter.js +4 -6
- 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 +18 -18
- package/lib/esm/components/livechatwidget/common/defaultProps/defaultScrollBarProps.js +7 -0
- package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +64 -25
- package/lib/esm/components/livechatwidget/common/endChat.js +52 -20
- 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 +22 -19
- package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +78 -118
- package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +4 -9
- package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +4 -3
- package/lib/esm/components/livechatwidget/common/shareObservable.js +4 -7
- package/lib/esm/components/livechatwidget/common/startChat.js +171 -115
- 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 +230 -179
- package/lib/esm/components/loadingpanestateful/LoadingPaneStateful.js +19 -7
- package/lib/esm/components/loadingpanestateful/common/errorUIStyleProps/errorUILoadingPaneStyleProps.js +50 -0
- 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 +11 -21
- package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +4 -8
- package/lib/esm/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +6 -6
- package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +27 -9
- 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 +2 -13
- 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/webchatcontroller/BotMagicCodeStore.js +0 -2
- 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 +17 -26
- 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 +2 -9
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +0 -14
- 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 +4 -28
- 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 +0 -1
- package/lib/esm/contexts/common/LiveChatWidgetActionType.js +30 -29
- package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +10 -7
- package/lib/esm/contexts/createReducer.js +154 -105
- package/lib/esm/controller/componentController.js +3 -2
- 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/assets/Icons.d.ts +1 -0
- package/lib/types/common/Constants.d.ts +12 -0
- 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 +16 -5
- package/lib/types/common/telemetry/definitions/Contracts.d.ts +2 -4
- package/lib/types/common/utils.d.ts +1 -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/reconnectChatHelper.d.ts +5 -7
- package/lib/types/components/livechatwidget/common/startChat.d.ts +3 -2
- package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetControlProps.d.ts +1 -1
- package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +4 -2
- package/lib/types/components/livechatwidget/interfaces/IScrollBarProps.d.ts +22 -0
- package/lib/types/components/loadingpanestateful/common/errorUIStyleProps/errorUILoadingPaneStyleProps.d.ts +2 -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 -1
- package/lib/types/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.d.ts +2 -0
- package/lib/types/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.d.ts +4 -0
- package/lib/types/components/webchatcontainerstateful/interfaces/IRenderingMiddlewareProps.d.ts +4 -1
- package/lib/types/components/webchatcontainerstateful/interfaces/IWebChatContainerStatefulProps.d.ts +2 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.d.ts +1 -1
- 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/contexts/common/ILiveChatWidgetContext.d.ts +3 -2
- package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +30 -28
- package/lib/types/contexts/common/LiveChatWidgetContextInitialState.d.ts +1 -2
- package/package.json +3 -3
|
@@ -5,25 +5,20 @@ export const consoleLogger = () => {
|
|
|
5
5
|
log: (logLevel, telemetryInput) => {
|
|
6
6
|
const payload = telemetryInput !== null && telemetryInput !== void 0 && telemetryInput.payload && Object.keys(telemetryInput === null || telemetryInput === void 0 ? void 0 : telemetryInput.payload).length > 0 ? telemetryInput === null || telemetryInput === void 0 ? void 0 : telemetryInput.payload : "";
|
|
7
7
|
const telemetryInfo = telemetryInput !== null && telemetryInput !== void 0 && telemetryInput.telemetryInfo && Object.keys(telemetryInput === null || telemetryInput === void 0 ? void 0 : telemetryInput.telemetryInfo).length > 0 ? telemetryInput === null || telemetryInput === void 0 ? void 0 : telemetryInput.telemetryInfo : "";
|
|
8
|
-
|
|
9
8
|
try {
|
|
10
9
|
switch (logLevel) {
|
|
11
10
|
case LogLevel.INFO:
|
|
12
11
|
console.info(Constants.LiveChatWidget, payload, telemetryInfo);
|
|
13
12
|
break;
|
|
14
|
-
|
|
15
13
|
case LogLevel.DEBUG:
|
|
16
14
|
console.debug(Constants.LiveChatWidget, payload, telemetryInfo);
|
|
17
15
|
break;
|
|
18
|
-
|
|
19
16
|
case LogLevel.WARN:
|
|
20
17
|
console.warn(Constants.LiveChatWidget, payload, telemetryInfo);
|
|
21
18
|
break;
|
|
22
|
-
|
|
23
19
|
case LogLevel.ERROR:
|
|
24
20
|
console.error(Constants.LiveChatWidget, payload, telemetryInfo);
|
|
25
21
|
break;
|
|
26
|
-
|
|
27
22
|
default:
|
|
28
23
|
console.debug(Constants.LiveChatWidget, payload, telemetryInfo);
|
|
29
24
|
break;
|
package/lib/esm/common/utils.js
CHANGED
|
@@ -3,24 +3,21 @@ import { DataStoreManager } from "./contextDataStore/DataStoreManager";
|
|
|
3
3
|
import { KeyCodes } from "./KeyCodes";
|
|
4
4
|
import { BroadcastEvent } from "./telemetry/TelemetryConstants";
|
|
5
5
|
import { Md5 } from "md5-typescript";
|
|
6
|
-
|
|
7
6
|
const getElementBySelector = selector => {
|
|
8
7
|
let element;
|
|
9
|
-
|
|
10
8
|
if (typeof selector === "string") {
|
|
11
9
|
element = document.querySelector(selector);
|
|
12
10
|
} else {
|
|
13
11
|
element = selector;
|
|
14
12
|
}
|
|
15
|
-
|
|
16
13
|
return element;
|
|
17
|
-
};
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
// The purpose of this function is:
|
|
18
17
|
// - to make elements not focusable, when confirmation pane or email transcript pane are showing,
|
|
19
18
|
// - to set their initial tab indices back after confirmation pane or email transcript pane are closed
|
|
20
19
|
// Otherwise, the user will be able to click on the screen and tab through different buttons or other elements, even though
|
|
21
20
|
// these dialogs are showing
|
|
22
|
-
|
|
23
|
-
|
|
24
21
|
export const setTabIndices = (elements, tabIndexMap, shouldBeFocusable) => {
|
|
25
22
|
if (elements) {
|
|
26
23
|
if (shouldBeFocusable) {
|
|
@@ -29,7 +26,6 @@ export const setTabIndices = (elements, tabIndexMap, shouldBeFocusable) => {
|
|
|
29
26
|
elements[index].tabIndex = tabIndexMap.get(elements[index].id);
|
|
30
27
|
}
|
|
31
28
|
}
|
|
32
|
-
|
|
33
29
|
tabIndexMap.clear();
|
|
34
30
|
} else {
|
|
35
31
|
for (let index = 0; index < elements.length; index++) {
|
|
@@ -41,64 +37,49 @@ export const setTabIndices = (elements, tabIndexMap, shouldBeFocusable) => {
|
|
|
41
37
|
};
|
|
42
38
|
export const findParentFocusableElementsWithoutChildContainer = elementId => {
|
|
43
39
|
const childContainer = document.getElementById(elementId);
|
|
44
|
-
|
|
45
40
|
if (!childContainer) {
|
|
46
41
|
return null;
|
|
47
42
|
}
|
|
48
|
-
|
|
49
43
|
const parentContainer = childContainer.parentElement;
|
|
50
|
-
|
|
51
44
|
if (!parentContainer) {
|
|
52
45
|
return null;
|
|
53
46
|
}
|
|
54
|
-
|
|
55
47
|
const parentFocusableElements = findAllFocusableElement(parentContainer);
|
|
56
|
-
|
|
57
48
|
if (!parentFocusableElements) {
|
|
58
49
|
return null;
|
|
59
50
|
}
|
|
60
|
-
|
|
61
51
|
for (let index = 0; index < parentFocusableElements.length; index++) {
|
|
62
52
|
if (childContainer.contains(parentFocusableElements[index])) {
|
|
63
53
|
parentFocusableElements.splice(index, 1);
|
|
64
54
|
index--;
|
|
65
55
|
}
|
|
66
56
|
}
|
|
67
|
-
|
|
68
57
|
return parentFocusableElements;
|
|
69
58
|
};
|
|
70
59
|
export const findAllFocusableElement = parent => {
|
|
71
60
|
const container = getElementBySelector(parent);
|
|
72
|
-
|
|
73
61
|
if (container !== null) {
|
|
74
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\"]"));
|
|
75
63
|
}
|
|
76
|
-
|
|
77
64
|
return null;
|
|
78
65
|
};
|
|
79
66
|
export const preventFocusToMoveOutOfElement = elementId => {
|
|
80
67
|
const container = document.getElementById(elementId);
|
|
81
|
-
|
|
82
68
|
if (!container) {
|
|
83
69
|
return;
|
|
84
70
|
}
|
|
85
|
-
|
|
86
71
|
const focusableElements = findAllFocusableElement(container);
|
|
87
|
-
|
|
88
72
|
if (!focusableElements) {
|
|
89
73
|
return;
|
|
90
74
|
}
|
|
91
|
-
|
|
92
75
|
const firstFocusableElement = focusableElements[0];
|
|
93
76
|
const lastFocusableElement = focusableElements[focusableElements.length - 1];
|
|
94
|
-
|
|
95
77
|
firstFocusableElement.onkeydown = e => {
|
|
96
78
|
if (e.shiftKey && e.key === KeyCodes.TAB) {
|
|
97
79
|
e.preventDefault();
|
|
98
80
|
lastFocusableElement === null || lastFocusableElement === void 0 ? void 0 : lastFocusableElement.focus();
|
|
99
81
|
}
|
|
100
82
|
};
|
|
101
|
-
|
|
102
83
|
lastFocusableElement.onkeydown = e => {
|
|
103
84
|
if (!e.shiftKey && e.key === KeyCodes.TAB) {
|
|
104
85
|
e.preventDefault();
|
|
@@ -129,14 +110,12 @@ export const escapeHtml = inputString => {
|
|
|
129
110
|
export const getIconText = text => {
|
|
130
111
|
if (text) {
|
|
131
112
|
const initials = text.split(/\s/).reduce((response, word) => response += word.slice(0, 1), "");
|
|
132
|
-
|
|
133
113
|
if (initials.length > 1) {
|
|
134
114
|
return initials.substring(0, 2).toUpperCase();
|
|
135
115
|
} else {
|
|
136
116
|
return text.substring(0, 2).toUpperCase();
|
|
137
117
|
}
|
|
138
118
|
}
|
|
139
|
-
|
|
140
119
|
return "";
|
|
141
120
|
};
|
|
142
121
|
export const getLocaleDirection = localeLCID => {
|
|
@@ -152,20 +131,16 @@ export const getTimestampHourMinute = timestampStr => {
|
|
|
152
131
|
const minuteFormat = "2-digit";
|
|
153
132
|
const date = new Date(timestampStr);
|
|
154
133
|
const now = new Date();
|
|
155
|
-
|
|
156
134
|
if (isNaN(date.getTime())) {
|
|
157
135
|
return "";
|
|
158
136
|
}
|
|
159
|
-
|
|
160
137
|
if (date.getFullYear() !== now.getFullYear()) {
|
|
161
138
|
yearFormat = "numeric";
|
|
162
139
|
monthDayFormat = "2-digit";
|
|
163
140
|
}
|
|
164
|
-
|
|
165
141
|
if (date.getMonth() !== now.getMonth() || date.getDate() !== now.getDate()) {
|
|
166
142
|
monthDayFormat = "2-digit";
|
|
167
143
|
}
|
|
168
|
-
|
|
169
144
|
return date.toLocaleTimeString(navigator.language, {
|
|
170
145
|
year: yearFormat,
|
|
171
146
|
month: monthDayFormat,
|
|
@@ -179,7 +154,6 @@ export const parseAdaptiveCardPayload = (payload, requiredFieldMissingMessage) =
|
|
|
179
154
|
try {
|
|
180
155
|
const parsedPayload = JSON.parse(payload.replace(/*/g, "*"));
|
|
181
156
|
const body = parsedPayload.body;
|
|
182
|
-
|
|
183
157
|
if (body) {
|
|
184
158
|
//Parse ID field into available options and add required error messages
|
|
185
159
|
for (const fields of body) {
|
|
@@ -187,23 +161,21 @@ export const parseAdaptiveCardPayload = (payload, requiredFieldMissingMessage) =
|
|
|
187
161
|
const parsedId = JSON.parse(fields.id);
|
|
188
162
|
fields.id = parsedId.Id;
|
|
189
163
|
fields.isRequired = parsedId.IsRequired ?? false;
|
|
190
|
-
|
|
191
164
|
if (fields.isRequired) {
|
|
192
165
|
fields.errorMessage = requiredFieldMissingMessage.replace("{0}", parsedId.Name ?? "");
|
|
193
166
|
}
|
|
194
167
|
}
|
|
195
168
|
}
|
|
196
169
|
}
|
|
197
|
-
|
|
198
170
|
return JSON.stringify(parsedPayload);
|
|
199
171
|
} catch (ex) {
|
|
200
172
|
throw new Error(`Adaptive card pase error: ${ex}`);
|
|
201
173
|
}
|
|
202
174
|
}
|
|
203
|
-
|
|
204
175
|
return payload;
|
|
205
|
-
};
|
|
176
|
+
};
|
|
206
177
|
|
|
178
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
207
179
|
export const extractPreChatSurveyResponseValues = (preChatSurvey, values) => {
|
|
208
180
|
if (preChatSurvey && preChatSurvey !== "{}" && values) {
|
|
209
181
|
try {
|
|
@@ -213,14 +185,13 @@ export const extractPreChatSurveyResponseValues = (preChatSurvey, values) => {
|
|
|
213
185
|
"Type": Constants.InputSubmit
|
|
214
186
|
};
|
|
215
187
|
const computedValues = [];
|
|
216
|
-
|
|
217
188
|
for (const val of values) {
|
|
218
189
|
const index = val.index;
|
|
219
190
|
const Id = body[index].id;
|
|
220
191
|
computedValues[Id] = val.value;
|
|
221
192
|
}
|
|
222
|
-
|
|
223
|
-
|
|
193
|
+
const finalPayload = {
|
|
194
|
+
...type,
|
|
224
195
|
...computedValues
|
|
225
196
|
};
|
|
226
197
|
return finalPayload;
|
|
@@ -228,10 +199,10 @@ export const extractPreChatSurveyResponseValues = (preChatSurvey, values) => {
|
|
|
228
199
|
throw new Error(`PreChatSurvey Response parse error: ${ex}`);
|
|
229
200
|
}
|
|
230
201
|
}
|
|
231
|
-
|
|
232
202
|
return {};
|
|
233
|
-
};
|
|
203
|
+
};
|
|
234
204
|
|
|
205
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
235
206
|
export const isNullOrUndefined = obj => {
|
|
236
207
|
return obj === null || obj === undefined;
|
|
237
208
|
};
|
|
@@ -242,26 +213,21 @@ export const newGuid = () => {
|
|
|
242
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
|
|
243
214
|
const guidPattern = Constants.GuidPattern;
|
|
244
215
|
let newGuid = "";
|
|
245
|
-
|
|
246
216
|
for (let i = 0; i < guidPattern.length; i++) {
|
|
247
217
|
const randomString = Math.floor(Math.random() * Date.now());
|
|
248
|
-
|
|
249
218
|
switch (guidPattern[i]) {
|
|
250
219
|
case "x":
|
|
251
220
|
newGuid += randomString.toString(16).substring(0, 4);
|
|
252
221
|
break;
|
|
253
222
|
//get 4 digit
|
|
254
|
-
|
|
255
223
|
case "m":
|
|
256
224
|
newGuid += randomString.toString(16).substring(0, 3);
|
|
257
225
|
break;
|
|
258
226
|
//Get 3 digit
|
|
259
|
-
|
|
260
227
|
case "y":
|
|
261
228
|
newGuid += (randomString & 0x3 | 0x8).toString(16);
|
|
262
229
|
break;
|
|
263
230
|
// To get only one of 8, 9, A, or B
|
|
264
|
-
|
|
265
231
|
default:
|
|
266
232
|
newGuid += guidPattern[i];
|
|
267
233
|
//Default "-" and "4"
|
|
@@ -277,18 +243,17 @@ export const createTimer = () => {
|
|
|
277
243
|
const ms = new Date().getTime() - timeStart;
|
|
278
244
|
return ms;
|
|
279
245
|
}
|
|
280
|
-
|
|
281
246
|
};
|
|
282
|
-
};
|
|
283
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
247
|
+
};
|
|
284
248
|
|
|
249
|
+
// Returns the domain of the org
|
|
250
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
285
251
|
export const getDomain = hostValue => {
|
|
286
252
|
for (let i = 0; i < AriaTelemetryConstants.lcwEUDomainNames.length; i++) {
|
|
287
253
|
if (hostValue.endsWith(AriaTelemetryConstants.lcwEUDomainNames[i])) {
|
|
288
254
|
return AriaTelemetryConstants.EU;
|
|
289
255
|
}
|
|
290
256
|
}
|
|
291
|
-
|
|
292
257
|
return AriaTelemetryConstants.Public;
|
|
293
258
|
};
|
|
294
259
|
export const getWidgetCacheId = (orgId, widgetId, widgetInstanceId) => {
|
|
@@ -299,16 +264,15 @@ export const getWidgetEndChatEventName = (orgId, widgetId, widgetInstanceId) =>
|
|
|
299
264
|
if (!isNullOrEmptyString(widgetInstanceId)) {
|
|
300
265
|
return `${BroadcastEvent.ChatEnded}_${widgetInstanceId}_${orgId}_${widgetId}`;
|
|
301
266
|
}
|
|
302
|
-
|
|
303
267
|
return `${BroadcastEvent.ChatEnded}_${orgId}_${widgetId}`;
|
|
304
|
-
};
|
|
268
|
+
};
|
|
305
269
|
|
|
270
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
306
271
|
export const getStateFromCache = (orgId, widgetId, widgetInstanceId) => {
|
|
307
272
|
// Getting updated state from cache
|
|
308
273
|
try {
|
|
309
274
|
if (DataStoreManager.clientDataStore) {
|
|
310
275
|
var _DataStoreManager$cli;
|
|
311
|
-
|
|
312
276
|
const widgetStateEventName = getWidgetCacheId(orgId, widgetId, widgetInstanceId);
|
|
313
277
|
const widgetStateFromCache = (_DataStoreManager$cli = DataStoreManager.clientDataStore) === null || _DataStoreManager$cli === void 0 ? void 0 : _DataStoreManager$cli.getData(widgetStateEventName, "localStorage");
|
|
314
278
|
const persistedState = widgetStateFromCache ? JSON.parse(widgetStateFromCache) : undefined;
|
|
@@ -320,20 +284,24 @@ export const getStateFromCache = (orgId, widgetId, widgetInstanceId) => {
|
|
|
320
284
|
console.log(error);
|
|
321
285
|
return null;
|
|
322
286
|
}
|
|
323
|
-
};
|
|
287
|
+
};
|
|
324
288
|
|
|
289
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
325
290
|
export const isUndefinedOrEmpty = object => {
|
|
326
291
|
if (object) {
|
|
327
292
|
if (Object.keys(object).length === 0) {
|
|
328
293
|
return true;
|
|
329
294
|
}
|
|
330
|
-
|
|
331
295
|
return false;
|
|
332
296
|
} else {
|
|
333
297
|
return true;
|
|
334
298
|
}
|
|
335
|
-
};
|
|
299
|
+
};
|
|
336
300
|
|
|
301
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
337
302
|
export const addDelayInMs = ms => {
|
|
338
303
|
return new Promise(resolve => setTimeout(resolve, ms));
|
|
304
|
+
};
|
|
305
|
+
export const getBroadcastChannelName = (widgetId, widgetInstanceId) => {
|
|
306
|
+
return widgetInstanceId && !isNullOrEmptyString(widgetInstanceId) ? `${widgetInstanceId}_${widgetId}` : widgetId;
|
|
339
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
|
},
|
|
@@ -11,14 +11,13 @@ import { defaultOutOfOfficeChatButtonStyleProps } from "./common/styleProps/defa
|
|
|
11
11
|
import useChatContextStore from "../../hooks/useChatContextStore";
|
|
12
12
|
export const ChatButtonStateful = props => {
|
|
13
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;
|
|
14
|
-
|
|
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");
|
|
23
22
|
const proactiveChatInNewWindow = useRef(state.appStates.proactiveChatStates.proactiveChatInNewWindow);
|
|
24
23
|
const outOfOfficeStyleProps = Object.assign({}, defaultOutOfOfficeChatButtonStyleProps, outOfOfficeButtonProps === null || outOfOfficeButtonProps === void 0 ? void 0 : outOfOfficeButtonProps.styleProps);
|
|
@@ -33,7 +32,6 @@ export const ChatButtonStateful = props => {
|
|
|
33
32
|
TelemetryHelper.logActionEvent(LogLevel.INFO, {
|
|
34
33
|
Event: TelemetryEvent.LCWChatButtonClicked
|
|
35
34
|
});
|
|
36
|
-
|
|
37
35
|
if (proactiveChatInNewWindow.current) {
|
|
38
36
|
const proactiveChatIsInPopoutModeEvent = {
|
|
39
37
|
eventName: BroadcastEvent.ProactiveChatIsInPopoutMode
|
|
@@ -60,7 +58,6 @@ export const ChatButtonStateful = props => {
|
|
|
60
58
|
TelemetryHelper.logActionEvent(LogLevel.INFO, {
|
|
61
59
|
Event: TelemetryEvent.LCWChatButtonClicked
|
|
62
60
|
});
|
|
63
|
-
|
|
64
61
|
if (state.appStates.isMinimized) {
|
|
65
62
|
dispatch({
|
|
66
63
|
type: LiveChatWidgetActionType.SET_MINIMIZED,
|
|
@@ -80,12 +77,10 @@ export const ChatButtonStateful = props => {
|
|
|
80
77
|
if (state.appStates.outsideOperatingHours) {
|
|
81
78
|
setOutOfOperatingHours(true);
|
|
82
79
|
}
|
|
83
|
-
|
|
84
80
|
TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
|
|
85
81
|
Event: TelemetryEvent.LCWChatButtonShow,
|
|
86
82
|
ElapsedTimeInMilliseconds: TelemetryTimers.LcwLoadToChatButtonTimer.milliSecondsElapsed
|
|
87
83
|
});
|
|
88
|
-
|
|
89
84
|
if (state.uiStates.focusChatButton) {
|
|
90
85
|
setFocusOnElement(document.getElementById((controlProps === null || controlProps === void 0 ? void 0 : controlProps.id) ?? "oc-lcw-chat-button"));
|
|
91
86
|
} else {
|
|
@@ -8,16 +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
|
-
|
|
20
|
+
} = props;
|
|
21
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
21
22
|
const [adapter] = useChatAdapterStore();
|
|
22
23
|
const controlProps = {
|
|
23
24
|
id: "oc-lcw-confirmation-pane",
|
|
@@ -31,7 +32,6 @@ export const ConfirmationPaneStateful = props => {
|
|
|
31
32
|
type: LiveChatWidgetActionType.SET_SHOW_CONFIRMATION,
|
|
32
33
|
payload: false
|
|
33
34
|
});
|
|
34
|
-
|
|
35
35
|
try {
|
|
36
36
|
setTabIndices(elements, initialTabIndexMap, true);
|
|
37
37
|
await prepareEndChat(adapter, state);
|
|
@@ -54,31 +54,28 @@ export const ConfirmationPaneStateful = props => {
|
|
|
54
54
|
type: LiveChatWidgetActionType.SET_SHOW_CONFIRMATION,
|
|
55
55
|
payload: false
|
|
56
56
|
});
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
setFocusOnElement(previousFocused);
|
|
57
|
+
const previousFocusedElementId = state.appStates.previousElementIdOnFocusBeforeModalOpen;
|
|
58
|
+
if (previousFocusedElementId) {
|
|
59
|
+
setFocusOnElement("#" + previousFocusedElementId);
|
|
61
60
|
dispatch({
|
|
62
|
-
type: LiveChatWidgetActionType.
|
|
61
|
+
type: LiveChatWidgetActionType.SET_PREVIOUS_FOCUSED_ELEMENT_ID,
|
|
63
62
|
payload: null
|
|
64
63
|
});
|
|
65
64
|
} else {
|
|
66
65
|
setFocusOnSendBox();
|
|
67
66
|
}
|
|
68
|
-
|
|
69
67
|
setTabIndices(elements, initialTabIndexMap, true);
|
|
70
68
|
},
|
|
71
69
|
...(props === null || props === void 0 ? void 0 : props.controlProps)
|
|
72
|
-
};
|
|
70
|
+
};
|
|
73
71
|
|
|
72
|
+
// Move focus to the first button
|
|
74
73
|
useEffect(() => {
|
|
75
74
|
preventFocusToMoveOutOfElement(controlProps.id);
|
|
76
75
|
const focusableElements = findAllFocusableElement(`#${controlProps.id}`);
|
|
77
|
-
|
|
78
76
|
if (focusableElements) {
|
|
79
77
|
focusableElements[0].focus();
|
|
80
78
|
}
|
|
81
|
-
|
|
82
79
|
elements = findParentFocusableElementsWithoutChildContainer(controlProps.id);
|
|
83
80
|
setTabIndices(elements, initialTabIndexMap, false);
|
|
84
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);
|
|
@@ -19,10 +19,10 @@ describe("EmailTranscriptPaneStateful unit test", () => {
|
|
|
19
19
|
attachmentMessage: "sample",
|
|
20
20
|
locale: "sample"
|
|
21
21
|
};
|
|
22
|
-
|
|
23
22
|
try {
|
|
24
23
|
await chatSDK.emailLiveChatTranscript(chatTranscriptBody);
|
|
25
|
-
expect(chatSDK.emailLiveChatTranscript).toHaveBeenCalledTimes(1);
|
|
24
|
+
expect(chatSDK.emailLiveChatTranscript).toHaveBeenCalledTimes(1);
|
|
25
|
+
// eslint-disable-next-line no-empty
|
|
26
26
|
} catch (ex) {}
|
|
27
27
|
});
|
|
28
28
|
it("Method emailLiveChatTranscript throws exception", async () => {
|
|
@@ -39,9 +39,9 @@ describe("EmailTranscriptPaneStateful unit test", () => {
|
|
|
39
39
|
attachmentMessage: "sample",
|
|
40
40
|
locale: "sample"
|
|
41
41
|
};
|
|
42
|
-
|
|
43
42
|
try {
|
|
44
|
-
await chatSDK.emailLiveChatTranscript(chatTranscriptBody);
|
|
43
|
+
await chatSDK.emailLiveChatTranscript(chatTranscriptBody);
|
|
44
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
45
45
|
} catch (ex) {
|
|
46
46
|
expect(ex.message).toEqual(errorMessage);
|
|
47
47
|
}
|
|
@@ -59,9 +59,9 @@ describe("EmailTranscriptPaneStateful unit test", () => {
|
|
|
59
59
|
attachmentMessage: "sample",
|
|
60
60
|
locale: "sample"
|
|
61
61
|
};
|
|
62
|
-
|
|
63
62
|
try {
|
|
64
|
-
await chatSDK.emailLiveChatTranscript(chatTranscriptBody);
|
|
63
|
+
await chatSDK.emailLiveChatTranscript(chatTranscriptBody);
|
|
64
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
65
65
|
} catch (ex) {
|
|
66
66
|
expect(ex.message).toEqual(errorMessage);
|
|
67
67
|
}
|