@microsoft/omnichannel-chat-widget 1.8.7 → 2.0.0-main.5ebd4eb
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 +52 -5
- package/lib/cjs/common/Constants.js +5 -0
- package/lib/cjs/common/facades/FacadeChatSDK.js +234 -9
- package/lib/cjs/common/telemetry/TelemetryConstants.js +19 -0
- package/lib/cjs/common/telemetry/TelemetryManager.js +6 -1
- package/lib/cjs/common/telemetry/loggers/appInsightsLogger.js +2 -3
- package/lib/cjs/common/telemetry/sanitizeSasInPayload.js +91 -0
- package/lib/cjs/common/utils.js +93 -17
- package/lib/cjs/components/callingcontainerstateful/CallingContainerStateful.js +16 -6
- package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +20 -10
- package/lib/cjs/components/citationpanestateful/CitationDim.js +2 -3
- package/lib/cjs/components/citationpanestateful/CitationPaneStateful.js +27 -5
- package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +23 -3
- package/lib/cjs/components/dimlayer/DimLayer.js +1 -3
- package/lib/cjs/components/draggable/DraggableChatWidget.js +35 -15
- package/lib/cjs/components/draggable/DraggableEventEmitter.js +10 -1
- package/lib/cjs/components/draggable/DraggableEventReceiver.js +1 -3
- package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +54 -17
- package/lib/cjs/components/errorboundary/ErrorBoundary.js +4 -12
- package/lib/cjs/components/footerstateful/FooterStateful.js +18 -9
- package/lib/cjs/components/footerstateful/audionotificationstateful/AudioNotificationStateful.js +2 -4
- package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +4 -6
- package/lib/cjs/components/headerstateful/HeaderStateful.js +24 -12
- package/lib/cjs/components/livechatwidget/LiveChatWidget.js +27 -4
- package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/HiddenAdaptiveCardActivitySubscriber.js +5 -11
- package/lib/cjs/components/livechatwidget/common/ChatWidgetEvents.js +1 -0
- package/lib/cjs/components/livechatwidget/common/PersistentConversationHandler.js +11 -4
- package/lib/cjs/components/livechatwidget/common/authHelper.js +44 -4
- package/lib/cjs/components/livechatwidget/common/createMarkdown.js +98 -5
- package/lib/cjs/components/livechatwidget/common/endChat.js +12 -9
- package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +182 -1
- package/lib/cjs/components/livechatwidget/common/recoveryEligibilityTelemetry.js +60 -0
- package/lib/cjs/components/livechatwidget/common/startChat.js +31 -14
- package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +160 -21
- package/lib/cjs/components/loadingpanestateful/LoadingPaneStateful.js +16 -11
- package/lib/cjs/components/notificationpanestateful/NotificationPaneStateful.js +19 -12
- package/lib/cjs/components/ooohpanestateful/OOOHPaneStateful.js +13 -6
- package/lib/cjs/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +28 -5
- package/lib/cjs/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +12 -5
- package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +105 -11
- package/lib/cjs/components/prechatsurveypanestateful/common/defaultStyles/defaultGeneralPreChatSurveyPaneStyleProps.js +12 -1
- package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +17 -7
- package/lib/cjs/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +16 -7
- package/lib/cjs/components/startchaterrorpanestateful/StartChatErrorPaneStateful.js +10 -2
- package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +154 -29
- package/lib/cjs/components/webchatcontainerstateful/common/DesignerChatAdapter.js +10 -0
- package/lib/cjs/components/webchatcontainerstateful/common/activityConverters/convertPersistentChatHistoryMessageToActivity.js +115 -10
- package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts.js +3 -0
- package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +2 -1
- package/lib/cjs/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +3 -1
- package/lib/cjs/components/webchatcontainerstateful/common/defaultStyles/defaultWebChatStyles.js +2 -2
- package/lib/cjs/components/webchatcontainerstateful/common/utils/chatAdapterUtils.js +3 -1
- package/lib/cjs/components/webchatcontainerstateful/common/utils/citationA11y.js +195 -0
- package/lib/cjs/components/webchatcontainerstateful/interfaces/IWebChatAction.js +17 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/WebChatEventSubscribers.js +27 -4
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsEgressMiddleware.js +1 -3
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsIngressMiddleware.js +1 -3
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activities/LazyLoadActivity.js +180 -190
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activities/LoadInlineBannerActivity.js +3 -5
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +22 -6
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +12 -23
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +27 -35
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/AdaptiveCardAccessibilityWrapper.js +199 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/Attachment.js +29 -15
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.js +5 -12
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +1 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultAvatarTextStyles.js +1 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageStyles.js +8 -3
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampRetryStyles.js +8 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware.js +5 -8
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageSequenceIdOverrideMiddleware.js +6 -4
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +6 -4
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +14 -12
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/HistoryMessageTimestamp.js +16 -14
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +18 -30
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +10 -2
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/toastMiddleware.js +1 -3
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +16 -12
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +6 -6
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentSentAnnouncementMiddleware.js +83 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +36 -8
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/callActionMiddleware.js +5 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +10 -7
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/citationsMiddleware.js +4 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +6 -4
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/customEventMiddleware.js +5 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +7 -7
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.js +10 -14
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.js +6 -4
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.js +13 -10
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/localizedStringsBotInitialsMiddleware.js +57 -11
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.js +6 -4
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.js +25 -30
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/queueOverflowHandlerMiddleware.js +10 -7
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.js +6 -4
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +55 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +2 -4
- package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +5 -0
- package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +17 -1
- package/lib/cjs/contexts/createReducer.js +15 -0
- package/lib/cjs/controller/componentController.js +13 -1
- package/lib/cjs/hooks/useWindowDimensions.js +13 -5
- package/lib/cjs/package.json +1 -0
- package/lib/cjs/plugins/createChatTranscript.js +3 -4
- package/lib/cjs/plugins/newMessageEventHandler.js +20 -3
- package/lib/esm/common/Constants.js +5 -0
- package/lib/esm/common/facades/FacadeChatSDK.js +235 -10
- package/lib/esm/common/telemetry/TelemetryConstants.js +19 -0
- package/lib/esm/common/telemetry/TelemetryManager.js +6 -1
- package/lib/esm/common/telemetry/loggers/appInsightsLogger.js +2 -3
- package/lib/esm/common/telemetry/sanitizeSasInPayload.js +84 -0
- package/lib/esm/common/utils.js +88 -14
- package/lib/esm/components/callingcontainerstateful/CallingContainerStateful.js +15 -5
- package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +19 -9
- package/lib/esm/components/citationpanestateful/CitationDim.js +2 -3
- package/lib/esm/components/citationpanestateful/CitationPaneStateful.js +26 -4
- package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +22 -2
- package/lib/esm/components/dimlayer/DimLayer.js +1 -3
- package/lib/esm/components/draggable/DraggableChatWidget.js +34 -14
- package/lib/esm/components/draggable/DraggableEventEmitter.js +10 -1
- package/lib/esm/components/draggable/DraggableEventReceiver.js +1 -3
- package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +54 -17
- package/lib/esm/components/errorboundary/ErrorBoundary.js +4 -12
- package/lib/esm/components/footerstateful/FooterStateful.js +17 -8
- package/lib/esm/components/footerstateful/audionotificationstateful/AudioNotificationStateful.js +2 -4
- package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +4 -6
- package/lib/esm/components/headerstateful/HeaderStateful.js +22 -10
- package/lib/esm/components/livechatwidget/LiveChatWidget.js +27 -4
- package/lib/esm/components/livechatwidget/common/ActivitySubscriber/HiddenAdaptiveCardActivitySubscriber.js +5 -11
- package/lib/esm/components/livechatwidget/common/ChatWidgetEvents.js +1 -0
- package/lib/esm/components/livechatwidget/common/PersistentConversationHandler.js +11 -4
- package/lib/esm/components/livechatwidget/common/authHelper.js +44 -4
- package/lib/esm/components/livechatwidget/common/createMarkdown.js +98 -5
- package/lib/esm/components/livechatwidget/common/endChat.js +12 -9
- package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +182 -1
- package/lib/esm/components/livechatwidget/common/recoveryEligibilityTelemetry.js +52 -0
- package/lib/esm/components/livechatwidget/common/startChat.js +31 -14
- package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +159 -20
- package/lib/esm/components/loadingpanestateful/LoadingPaneStateful.js +14 -9
- package/lib/esm/components/notificationpanestateful/NotificationPaneStateful.js +17 -10
- package/lib/esm/components/ooohpanestateful/OOOHPaneStateful.js +12 -5
- package/lib/esm/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +28 -5
- package/lib/esm/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +11 -4
- package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +105 -11
- package/lib/esm/components/prechatsurveypanestateful/common/defaultStyles/defaultGeneralPreChatSurveyPaneStyleProps.js +12 -1
- package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +16 -6
- package/lib/esm/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +15 -6
- package/lib/esm/components/startchaterrorpanestateful/StartChatErrorPaneStateful.js +9 -1
- package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +154 -29
- package/lib/esm/components/webchatcontainerstateful/common/DesignerChatAdapter.js +10 -0
- package/lib/esm/components/webchatcontainerstateful/common/activityConverters/convertPersistentChatHistoryMessageToActivity.js +115 -10
- package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts.js +3 -0
- package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +2 -1
- package/lib/esm/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +3 -1
- package/lib/esm/components/webchatcontainerstateful/common/defaultStyles/defaultWebChatStyles.js +2 -2
- package/lib/esm/components/webchatcontainerstateful/common/utils/chatAdapterUtils.js +3 -1
- package/lib/esm/components/webchatcontainerstateful/common/utils/citationA11y.js +188 -0
- package/lib/esm/components/webchatcontainerstateful/interfaces/IWebChatAction.js +10 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/WebChatEventSubscribers.js +27 -4
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsEgressMiddleware.js +1 -3
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsIngressMiddleware.js +1 -3
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activities/LazyLoadActivity.js +180 -190
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activities/LoadInlineBannerActivity.js +3 -5
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +19 -4
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +12 -23
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +27 -32
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/AdaptiveCardAccessibilityWrapper.js +193 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/Attachment.js +28 -14
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.js +5 -12
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +1 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultAvatarTextStyles.js +1 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageStyles.js +8 -3
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampRetryStyles.js +8 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware.js +5 -8
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageSequenceIdOverrideMiddleware.js +6 -4
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +6 -4
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +13 -11
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/HistoryMessageTimestamp.js +15 -13
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +17 -27
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +9 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/toastMiddleware.js +1 -3
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +16 -10
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +6 -6
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentSentAnnouncementMiddleware.js +77 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +36 -8
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/callActionMiddleware.js +5 -2
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +10 -7
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/citationsMiddleware.js +4 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +6 -4
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/customEventMiddleware.js +5 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +7 -7
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.js +10 -14
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.js +6 -4
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.js +13 -10
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/localizedStringsBotInitialsMiddleware.js +57 -11
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.js +6 -4
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.js +25 -31
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/queueOverflowHandlerMiddleware.js +10 -7
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.js +6 -4
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +55 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +2 -4
- package/lib/esm/contexts/common/LiveChatWidgetActionType.js +5 -0
- package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +17 -1
- package/lib/esm/contexts/createReducer.js +15 -0
- package/lib/esm/controller/componentController.js +13 -1
- package/lib/esm/hooks/useWindowDimensions.js +13 -5
- package/lib/esm/plugins/createChatTranscript.js +3 -4
- package/lib/esm/plugins/newMessageEventHandler.js +20 -3
- package/lib/types/common/Constants.d.ts +4 -0
- package/lib/types/common/facades/FacadeChatSDK.d.ts +29 -0
- package/lib/types/common/facades/types/IFacadeChatSDKInput.d.ts +3 -1
- package/lib/types/common/telemetry/TelemetryConstants.d.ts +15 -2
- package/lib/types/common/telemetry/sanitizeSasInPayload.d.ts +24 -0
- package/lib/types/common/utils.d.ts +3 -1
- package/lib/types/components/livechatwidget/common/ChatWidgetEvents.d.ts +2 -1
- package/lib/types/components/livechatwidget/common/authHelper.d.ts +9 -2
- package/lib/types/components/livechatwidget/common/recoveryEligibilityTelemetry.d.ts +17 -0
- package/lib/types/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.d.ts +6 -0
- package/lib/types/components/webchatcontainerstateful/common/utils/chatAdapterUtils.d.ts +1 -1
- package/lib/types/components/webchatcontainerstateful/common/utils/citationA11y.d.ts +1 -0
- package/lib/types/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.d.ts +1 -0
- package/lib/types/components/webchatcontainerstateful/interfaces/IWebChatAction.d.ts +16 -1
- package/lib/types/components/webchatcontainerstateful/interfaces/IWebChatContainerStatefulProps.d.ts +7 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activities/LazyLoadActivity.d.ts +14 -38
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.d.ts +2 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/AdaptiveCardAccessibilityWrapper.d.ts +18 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageStyles.d.ts +3 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageSequenceIdOverrideMiddleware.d.ts +2 -4
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.d.ts +2 -4
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.d.ts +2 -4
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentSentAnnouncementMiddleware.d.ts +10 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.d.ts +2 -4
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/callActionMiddleware.d.ts +2 -2
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.d.ts +2 -4
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/citationsMiddleware.d.ts +2 -2
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.d.ts +2 -4
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/customEventMiddleware.d.ts +2 -2
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.d.ts +2 -4
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.d.ts +2 -4
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.d.ts +2 -4
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.d.ts +2 -4
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/localizedStringsBotInitialsMiddleware.d.ts +2 -4
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.d.ts +2 -4
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.d.ts +2 -4
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/queueOverflowHandlerMiddleware.d.ts +2 -2
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.d.ts +2 -4
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.d.ts +7 -0
- package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +1 -0
- package/lib/types/contexts/common/ILiveChatWidgetLocalizedTexts.d.ts +17 -0
- package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +2 -1
- package/package.json +71 -57
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
2
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
4
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
5
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
6
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
1
7
|
import { LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
|
|
2
8
|
import React, { useEffect } from "react";
|
|
3
9
|
import AudioNotificationStateful from "./audionotificationstateful/AudioNotificationStateful";
|
|
@@ -24,17 +30,20 @@ export const FooterStateful = props => {
|
|
|
24
30
|
Event: TelemetryEvent.UXFooterStart
|
|
25
31
|
});
|
|
26
32
|
}, []);
|
|
27
|
-
const
|
|
33
|
+
const _useChatContextStore = useChatContextStore(),
|
|
34
|
+
_useChatContextStore2 = _slicedToArray(_useChatContextStore, 2),
|
|
35
|
+
state = _useChatContextStore2[0],
|
|
36
|
+
dispatch = _useChatContextStore2[1];
|
|
28
37
|
// hideFooterDisplay - the purpose of this is to keep the footer always "active",
|
|
29
38
|
// but hide it visually in certain states (e.g., loading state) and show in some other states (e.g. active state).
|
|
30
39
|
// The reason for this approach is to make sure that state variables for audio notification work correctly after minimizing
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
40
|
+
const footerProps = props.footerProps,
|
|
41
|
+
downloadTranscriptProps = props.downloadTranscriptProps,
|
|
42
|
+
audioNotificationProps = props.audioNotificationProps,
|
|
43
|
+
hideFooterDisplay = props.hideFooterDisplay;
|
|
44
|
+
const _useFacadeSDKStore = useFacadeSDKStore(),
|
|
45
|
+
_useFacadeSDKStore2 = _slicedToArray(_useFacadeSDKStore, 1),
|
|
46
|
+
facadeChatSDK = _useFacadeSDKStore2[0];
|
|
38
47
|
const controlProps = {
|
|
39
48
|
id: "oc-lcw-footer",
|
|
40
49
|
dir: state.domainStates.globalDir,
|
package/lib/esm/components/footerstateful/audionotificationstateful/AudioNotificationStateful.js
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import React, { useEffect, useRef } from "react";
|
|
2
2
|
import { BroadcastService } from "@microsoft/omnichannel-chat-components";
|
|
3
3
|
export const AudioNotificationStateful = props => {
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
isAudioMuted
|
|
7
|
-
} = props;
|
|
4
|
+
const audioSrc = props.audioSrc,
|
|
5
|
+
isAudioMuted = props.isAudioMuted;
|
|
8
6
|
const audioRef = useRef(new Audio(audioSrc));
|
|
9
7
|
useEffect(() => {
|
|
10
8
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
|
package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js
CHANGED
|
@@ -188,12 +188,10 @@ export const downloadTranscript = async (facadeChatSDK, downloadTranscriptProps,
|
|
|
188
188
|
if (typeof data === Constants.String) {
|
|
189
189
|
data = JSON.parse(data);
|
|
190
190
|
}
|
|
191
|
-
const
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
webChatTranscript
|
|
196
|
-
} = downloadTranscriptProps;
|
|
191
|
+
const bannerMessageOnError = downloadTranscriptProps.bannerMessageOnError,
|
|
192
|
+
renderMarkDown = downloadTranscriptProps.renderMarkDown,
|
|
193
|
+
attachmentMessage = downloadTranscriptProps.attachmentMessage,
|
|
194
|
+
webChatTranscript = downloadTranscriptProps.webChatTranscript;
|
|
197
195
|
if (data[Constants.ChatMessagesJson] !== null && data[Constants.ChatMessagesJson] !== undefined) {
|
|
198
196
|
const useWebChatTranscript = isNullOrUndefined(webChatTranscript === null || webChatTranscript === void 0 ? void 0 : webChatTranscript.disabled) || (webChatTranscript === null || webChatTranscript === void 0 ? void 0 : webChatTranscript.disabled) === false;
|
|
199
197
|
if (useWebChatTranscript) {
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
2
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
4
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
5
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
6
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
1
7
|
import { ConversationStage, LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
|
|
2
8
|
import React, { useEffect, useRef, useState } from "react";
|
|
3
9
|
import { ConfirmationState } from "../../common/Constants";
|
|
@@ -19,19 +25,25 @@ export const HeaderStateful = props => {
|
|
|
19
25
|
Event: TelemetryEvent.UXHeaderStart
|
|
20
26
|
});
|
|
21
27
|
}, []);
|
|
22
|
-
const
|
|
28
|
+
const _useChatContextStore = useChatContextStore(),
|
|
29
|
+
_useChatContextStore2 = _slicedToArray(_useChatContextStore, 2),
|
|
30
|
+
state = _useChatContextStore2[0],
|
|
31
|
+
dispatch = _useChatContextStore2[1];
|
|
23
32
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
33
|
+
const _useChatAdapterStore = useChatAdapterStore(),
|
|
34
|
+
_useChatAdapterStore2 = _slicedToArray(_useChatAdapterStore, 1),
|
|
35
|
+
adapter = _useChatAdapterStore2[0];
|
|
36
|
+
const headerProps = props.headerProps,
|
|
37
|
+
outOfOfficeHeaderProps = props.outOfOfficeHeaderProps,
|
|
38
|
+
endChat = props.endChat;
|
|
30
39
|
//Setting OutOfOperatingHours Flag
|
|
31
40
|
// Initialize with the current state value to prevent visual flicker
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
41
|
+
const _useState = useState(() => {
|
|
42
|
+
return state.appStates.conversationState === ConversationState.Closed && state.appStates.outsideOperatingHours;
|
|
43
|
+
}),
|
|
44
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
45
|
+
outOfOperatingHours = _useState2[0],
|
|
46
|
+
setOutOfOperatingHours = _useState2[1];
|
|
35
47
|
const outOfOfficeStyleProps = Object.assign({}, defaultOutOfOfficeHeaderStyleProps, outOfOfficeHeaderProps === null || outOfOfficeHeaderProps === void 0 ? void 0 : outOfOfficeHeaderProps.styleProps);
|
|
36
48
|
|
|
37
49
|
// For some reason state object is not getting updated values in this component
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
2
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
4
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
5
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
6
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
1
7
|
import React, { useEffect, useReducer, useState } from "react";
|
|
2
8
|
import { ChatAdapterStore } from "../../contexts/ChatAdapterStore";
|
|
3
9
|
import { ChatContextStore } from "../../contexts/ChatContextStore";
|
|
@@ -15,10 +21,19 @@ import { registerTelemetryLoggers } from "./common/registerTelemetryLoggers";
|
|
|
15
21
|
export const LiveChatWidget = props => {
|
|
16
22
|
var _props$featureConfigP, _props$chatConfig, _props$chatConfig2;
|
|
17
23
|
const reducer = createReducer();
|
|
18
|
-
const
|
|
24
|
+
const _useReducer = useReducer(reducer, getLiveChatWidgetContextInitialState(props)),
|
|
25
|
+
_useReducer2 = _slicedToArray(_useReducer, 2),
|
|
26
|
+
state = _useReducer2[0],
|
|
27
|
+
dispatch = _useReducer2[1];
|
|
19
28
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
20
|
-
const
|
|
21
|
-
|
|
29
|
+
const _useState = useState(undefined),
|
|
30
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
31
|
+
adapter = _useState2[0],
|
|
32
|
+
setAdapter = _useState2[1];
|
|
33
|
+
const _useState3 = useState(undefined),
|
|
34
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
35
|
+
facadeChatSDK = _useState4[0],
|
|
36
|
+
setFacadeChatSDK = _useState4[1];
|
|
22
37
|
const chatSDK = getMockChatSDKIfApplicable(props.chatSDK, props === null || props === void 0 ? void 0 : props.mock);
|
|
23
38
|
const disableReauthentication = ((_props$featureConfigP = props.featureConfigProps) === null || _props$featureConfigP === void 0 ? void 0 : _props$featureConfigP.disableReauthentication) === true;
|
|
24
39
|
overridePropsOnMockIfApplicable(props);
|
|
@@ -26,8 +41,16 @@ export const LiveChatWidget = props => {
|
|
|
26
41
|
throw new Error("chatConfig is required");
|
|
27
42
|
}
|
|
28
43
|
|
|
44
|
+
// Check configuration flags
|
|
29
45
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
30
|
-
const
|
|
46
|
+
const hasAuthClientFn = !!((_props$chatConfig = props.chatConfig) !== null && _props$chatConfig !== void 0 && (_props$chatConfig = _props$chatConfig.LiveChatConfigAuthSettings) !== null && _props$chatConfig !== void 0 && _props$chatConfig.msdyn_javascriptclientfunction);
|
|
47
|
+
const persistentChatEnabled = isPersistentChatEnabled((_props$chatConfig2 = props.chatConfig) === null || _props$chatConfig2 === void 0 || (_props$chatConfig2 = _props$chatConfig2.LiveWSAndLiveChatEngJoin) === null || _props$chatConfig2 === void 0 ? void 0 : _props$chatConfig2.msdyn_conversationmode);
|
|
48
|
+
|
|
49
|
+
// isAuthenticatedChat determines if FacadeChatSDK should require authentication:
|
|
50
|
+
// REGULAR AUTH FLOW (config-based):
|
|
51
|
+
// - Persistent chat enabled ? always authenticated
|
|
52
|
+
// - Auth settings exist ? authenticated from start
|
|
53
|
+
const isAuthenticatedChat = persistentChatEnabled || hasAuthClientFn;
|
|
31
54
|
if (!facadeChatSDK) {
|
|
32
55
|
var _props$mock;
|
|
33
56
|
setFacadeChatSDK(new FacadeChatSDK({
|
|
@@ -19,10 +19,8 @@ export let HiddenAdaptiveCardActivitySubscriber = /*#__PURE__*/function () {
|
|
|
19
19
|
value:
|
|
20
20
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
21
21
|
async function apply(activity) {
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
attachment
|
|
25
|
-
} = activity;
|
|
22
|
+
const attachments = activity.attachments,
|
|
23
|
+
attachment = activity.attachment;
|
|
26
24
|
this.observer.next(false);
|
|
27
25
|
BroadcastService.postMessage({
|
|
28
26
|
eventName: BroadcastEvent.NewMessageReceived,
|
|
@@ -38,10 +36,8 @@ export let HiddenAdaptiveCardActivitySubscriber = /*#__PURE__*/function () {
|
|
|
38
36
|
}, {
|
|
39
37
|
key: "applicable",
|
|
40
38
|
value: function applicable(activity) {
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
attachment
|
|
44
|
-
} = activity;
|
|
39
|
+
const attachments = activity.attachments,
|
|
40
|
+
attachment = activity.attachment;
|
|
45
41
|
|
|
46
42
|
// Use `attachments` or `attachment` (whichever exists)
|
|
47
43
|
const cards = attachments || [attachment];
|
|
@@ -51,9 +47,7 @@ export let HiddenAdaptiveCardActivitySubscriber = /*#__PURE__*/function () {
|
|
|
51
47
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
52
48
|
item => Constants.supportedAdaptiveCardContentTypes.indexOf(item === null || item === void 0 ? void 0 : item.contentType) >= 0);
|
|
53
49
|
if (adaptiveCard && adaptiveCard.content) {
|
|
54
|
-
const
|
|
55
|
-
body
|
|
56
|
-
} = adaptiveCard.content;
|
|
50
|
+
const body = adaptiveCard.content.body;
|
|
57
51
|
if (Array.isArray(body)) {
|
|
58
52
|
// Check if all elements in `body` have `isVisible: false`
|
|
59
53
|
const allInvisible = body.every(item => item.isVisible === false);
|
|
@@ -3,6 +3,7 @@ var ChatWidgetEvents = /*#__PURE__*/function (ChatWidgetEvents) {
|
|
|
3
3
|
ChatWidgetEvents["FETCH_PERSISTENT_CHAT_HISTORY"] = "CHAT_WIDGET/FETCH_PERSISTENT_CHAT_HISTORY";
|
|
4
4
|
ChatWidgetEvents["NO_MORE_HISTORY_AVAILABLE"] = "CHAT_WIDGET/NO_MORE_HISTORY_AVAILABLE";
|
|
5
5
|
ChatWidgetEvents["HISTORY_LOAD_ERROR"] = "CHAT_WIDGET/HISTORY_LOAD_ERROR";
|
|
6
|
+
ChatWidgetEvents["HISTORY_BATCH_LOADED"] = "CHAT_WIDGET/HISTORY_BATCH_LOADED";
|
|
6
7
|
return ChatWidgetEvents;
|
|
7
8
|
}(ChatWidgetEvents || {});
|
|
8
9
|
export default ChatWidgetEvents;
|
|
@@ -126,6 +126,12 @@ let PersistentConversationHandler = /*#__PURE__*/function () {
|
|
|
126
126
|
}
|
|
127
127
|
const messagesDescOrder = (_ref = [...messages]) === null || _ref === void 0 ? void 0 : _ref.reverse();
|
|
128
128
|
this.processHistoryMessages(messagesDescOrder);
|
|
129
|
+
|
|
130
|
+
// Signal that a batch of history messages has been added to the store.
|
|
131
|
+
// LazyLoadActivity subscribes to this to apply scroll anchoring after render.
|
|
132
|
+
dispatchCustomEvent(ChatWidgetEvents.HISTORY_BATCH_LOADED, {
|
|
133
|
+
messageCount: messages.length
|
|
134
|
+
});
|
|
129
135
|
TelemetryHelper.logActionEvent(LogLevel.INFO, {
|
|
130
136
|
Event: TelemetryEvent.LCWPersistentHistoryPullCompleted,
|
|
131
137
|
Description: "History pull completed successfully",
|
|
@@ -190,10 +196,8 @@ let PersistentConversationHandler = /*#__PURE__*/function () {
|
|
|
190
196
|
try {
|
|
191
197
|
var _this$facadeChatSDK;
|
|
192
198
|
const response = await ((_this$facadeChatSDK = this.facadeChatSDK) === null || _this$facadeChatSDK === void 0 ? void 0 : _this$facadeChatSDK.fetchPersistentConversationHistory(options));
|
|
193
|
-
const
|
|
194
|
-
|
|
195
|
-
nextPageToken: pageToken
|
|
196
|
-
} = response;
|
|
199
|
+
const messages = response.chatMessages,
|
|
200
|
+
pageToken = response.nextPageToken;
|
|
197
201
|
this.pageToken = pageToken || null;
|
|
198
202
|
if (pageToken === null) {
|
|
199
203
|
this.isLastPull = true;
|
|
@@ -234,6 +238,9 @@ let PersistentConversationHandler = /*#__PURE__*/function () {
|
|
|
234
238
|
value: function processMessageToActivity(message) {
|
|
235
239
|
try {
|
|
236
240
|
const activity = convertPersistentChatHistoryMessageToActivity(message);
|
|
241
|
+
if (!activity) {
|
|
242
|
+
return null;
|
|
243
|
+
}
|
|
237
244
|
activity.id = activity.id || `activity-${this.count}`;
|
|
238
245
|
activity.channelData = {
|
|
239
246
|
...activity.channelData,
|
|
@@ -2,6 +2,17 @@ import { LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryCon
|
|
|
2
2
|
import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
|
|
3
3
|
import { WidgetLoadCustomErrorString } from "../../../common/Constants";
|
|
4
4
|
import { isNullOrEmptyString } from "../../../common/utils";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Check if mid-auth is enabled based on chatConfig.
|
|
8
|
+
* Mid-auth flag lives under LiveWSAndLiveChatEngJoin.msdyn_authenticatedsigninoptional.
|
|
9
|
+
*/
|
|
10
|
+
const isMidAuthEnabled = chatConfig => {
|
|
11
|
+
var _chatConfig$LiveWSAnd, _value$toString, _value$toString$call$, _value$toString$call;
|
|
12
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
13
|
+
const value = chatConfig === null || chatConfig === void 0 || (_chatConfig$LiveWSAnd = chatConfig.LiveWSAndLiveChatEngJoin) === null || _chatConfig$LiveWSAnd === void 0 ? void 0 : _chatConfig$LiveWSAnd.msdyn_authenticatedsigninoptional;
|
|
14
|
+
return (value === null || value === void 0 || (_value$toString = value.toString) === null || _value$toString === void 0 || (_value$toString$call$ = (_value$toString$call = _value$toString.call(value)).toLowerCase) === null || _value$toString$call$ === void 0 ? void 0 : _value$toString$call$.call(_value$toString$call)) === "true";
|
|
15
|
+
};
|
|
5
16
|
const getAuthClientFunction = chatConfig => {
|
|
6
17
|
let authClientFunction = undefined;
|
|
7
18
|
if (chatConfig !== null && chatConfig !== void 0 && chatConfig.LiveChatConfigAuthSettings) {
|
|
@@ -12,12 +23,17 @@ const getAuthClientFunction = chatConfig => {
|
|
|
12
23
|
};
|
|
13
24
|
const handleAuthentication = async (chatSDK, chatConfig, getAuthToken) => {
|
|
14
25
|
var _chatSDK$chatSDKConfi;
|
|
26
|
+
const midAuthEnabled = isMidAuthEnabled(chatConfig);
|
|
15
27
|
const authClientFunction = getAuthClientFunction(chatConfig);
|
|
16
28
|
if (getAuthToken && authClientFunction) {
|
|
17
29
|
TelemetryHelper.logActionEvent(LogLevel.INFO, {
|
|
18
30
|
Event: TelemetryEvent.GetAuthTokenCalled
|
|
19
31
|
});
|
|
20
|
-
|
|
32
|
+
|
|
33
|
+
// Only pass isMidAuthEnabled option when mid-auth is enabled.
|
|
34
|
+
const token = midAuthEnabled ? await getAuthToken(authClientFunction, {
|
|
35
|
+
isMidAuthEnabled: midAuthEnabled
|
|
36
|
+
}) : await getAuthToken(authClientFunction);
|
|
21
37
|
if (!isNullOrEmptyString(token)) {
|
|
22
38
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
23
39
|
chatSDK.setAuthTokenProvider(async () => {
|
|
@@ -28,8 +44,21 @@ const handleAuthentication = async (chatSDK, chatConfig, getAuthToken) => {
|
|
|
28
44
|
"token": token
|
|
29
45
|
};
|
|
30
46
|
} else {
|
|
31
|
-
//
|
|
32
|
-
//
|
|
47
|
+
// For mid-auth scenarios, empty token means "user not signed in" - this is expected behavior.
|
|
48
|
+
// Return result: true with empty token so caller can decide to proceed unauthenticated.
|
|
49
|
+
if (midAuthEnabled) {
|
|
50
|
+
// Expected behavior for mid-auth: user not signed in
|
|
51
|
+
TelemetryHelper.logActionEvent(LogLevel.INFO, {
|
|
52
|
+
Event: TelemetryEvent.GetAuthTokenCalled,
|
|
53
|
+
Description: "Mid-auth: token provider returned empty; user not signed in"
|
|
54
|
+
});
|
|
55
|
+
return {
|
|
56
|
+
"result": true,
|
|
57
|
+
"token": null
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// For non-mid-auth scenarios, empty token is an error
|
|
33
62
|
TelemetryHelper.logActionEvent(LogLevel.ERROR, {
|
|
34
63
|
Event: TelemetryEvent.ReceivedNullOrEmptyToken
|
|
35
64
|
});
|
|
@@ -39,6 +68,17 @@ const handleAuthentication = async (chatSDK, chatConfig, getAuthToken) => {
|
|
|
39
68
|
var _chatSDK$chatSDKConfi2;
|
|
40
69
|
const token = await ((_chatSDK$chatSDKConfi2 = chatSDK.chatSDKConfig) === null || _chatSDK$chatSDKConfi2 === void 0 ? void 0 : _chatSDK$chatSDKConfi2.getAuthToken());
|
|
41
70
|
if (isNullOrEmptyString(token)) {
|
|
71
|
+
// For mid-auth scenarios, empty token from SDK's getAuthToken is also expected
|
|
72
|
+
if (midAuthEnabled) {
|
|
73
|
+
TelemetryHelper.logActionEvent(LogLevel.INFO, {
|
|
74
|
+
Event: TelemetryEvent.GetAuthTokenCalled,
|
|
75
|
+
Description: "Mid-auth: SDK getAuthToken returned empty; user not signed in"
|
|
76
|
+
});
|
|
77
|
+
return {
|
|
78
|
+
"result": true,
|
|
79
|
+
"token": null
|
|
80
|
+
};
|
|
81
|
+
}
|
|
42
82
|
TelemetryHelper.logActionEvent(LogLevel.ERROR, {
|
|
43
83
|
Event: TelemetryEvent.ReceivedNullOrEmptyToken,
|
|
44
84
|
Description: "getAuthToken in chat SDK returns empty string"
|
|
@@ -66,4 +106,4 @@ const removeAuthTokenProvider = chatSDK => {
|
|
|
66
106
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
67
107
|
chatSDK.authenticatedUserToken = null;
|
|
68
108
|
};
|
|
69
|
-
export { getAuthClientFunction, handleAuthentication, removeAuthTokenProvider };
|
|
109
|
+
export { getAuthClientFunction, handleAuthentication, removeAuthTokenProvider, isMidAuthEnabled };
|
|
@@ -35,10 +35,8 @@ export const createMarkdown = (disableMarkdownMessageFormatting, disableNewLineM
|
|
|
35
35
|
}
|
|
36
36
|
markdown.disable(["strikethrough"]);
|
|
37
37
|
|
|
38
|
-
// Custom plugin to fix numbered list continuity
|
|
38
|
+
// Custom plugin to fix numbered list continuity and merge adjacent markdown links with the same href.
|
|
39
39
|
markdown.use(function (md) {
|
|
40
|
-
const originalRender = md.render.bind(md);
|
|
41
|
-
const originalRenderInline = md.renderInline.bind(md);
|
|
42
40
|
function preprocessText(text) {
|
|
43
41
|
// Handle numbered lists that come with double line breaks (knowledge article format)
|
|
44
42
|
// This ensures proper continuous numbering instead of separate lists
|
|
@@ -73,16 +71,111 @@ export const createMarkdown = (disableMarkdownMessageFormatting, disableNewLineM
|
|
|
73
71
|
return result;
|
|
74
72
|
}
|
|
75
73
|
|
|
74
|
+
// Accessibility fix: when a bot emits content like "[1.](url) [View details](url)",
|
|
75
|
+
// markdown-it renders two sibling links that screen readers announce as two separate
|
|
76
|
+
// focusable links. Merge consecutive markdown link tokens with identical attributes so
|
|
77
|
+
// the number and label form one combined focusable link without discarding metadata.
|
|
78
|
+
md.core.ruler.after("inline", "merge_adjacent_same_href_links", function (state) {
|
|
79
|
+
const sortedAttrs = token => (token.attrs || []).map(attr => `${attr[0]}=${attr[1]}`).sort();
|
|
80
|
+
const hasSameAttributes = (first, second) => {
|
|
81
|
+
const firstAttrs = sortedAttrs(first);
|
|
82
|
+
const secondAttrs = sortedAttrs(second);
|
|
83
|
+
return firstAttrs.length === secondAttrs.length && firstAttrs.every((attr, index) => attr === secondAttrs[index]);
|
|
84
|
+
};
|
|
85
|
+
const collectLink = (children, index) => {
|
|
86
|
+
var _open$attrGet;
|
|
87
|
+
const open = children[index];
|
|
88
|
+
if (!open || open.type !== "link_open") {
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
91
|
+
const href = (_open$attrGet = open.attrGet) === null || _open$attrGet === void 0 ? void 0 : _open$attrGet.call(open, "href");
|
|
92
|
+
if (!href) {
|
|
93
|
+
return undefined;
|
|
94
|
+
}
|
|
95
|
+
let depth = 0;
|
|
96
|
+
for (let currentIndex = index; currentIndex < children.length; currentIndex++) {
|
|
97
|
+
const token = children[currentIndex];
|
|
98
|
+
if (token.type === "link_open") {
|
|
99
|
+
depth++;
|
|
100
|
+
} else if (token.type === "link_close") {
|
|
101
|
+
depth--;
|
|
102
|
+
if (depth === 0) {
|
|
103
|
+
return {
|
|
104
|
+
closeIndex: currentIndex,
|
|
105
|
+
href,
|
|
106
|
+
open
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return undefined;
|
|
112
|
+
};
|
|
113
|
+
const getNextAdjacentLink = (children, startIndex) => {
|
|
114
|
+
const separatorTokens = [];
|
|
115
|
+
let index = startIndex;
|
|
116
|
+
while (index < children.length && children[index].type === "text" && /^\s*$/.test(children[index].content || "")) {
|
|
117
|
+
separatorTokens.push(children[index]);
|
|
118
|
+
index++;
|
|
119
|
+
}
|
|
120
|
+
const link = collectLink(children, index);
|
|
121
|
+
if (!link) {
|
|
122
|
+
return undefined;
|
|
123
|
+
}
|
|
124
|
+
return {
|
|
125
|
+
...link,
|
|
126
|
+
openIndex: index,
|
|
127
|
+
separatorTokens
|
|
128
|
+
};
|
|
129
|
+
};
|
|
130
|
+
state.tokens.forEach(blockToken => {
|
|
131
|
+
if (blockToken.type !== "inline" || !blockToken.children) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
const mergedChildren = [];
|
|
135
|
+
const children = blockToken.children;
|
|
136
|
+
let index = 0;
|
|
137
|
+
while (index < children.length) {
|
|
138
|
+
const firstLink = collectLink(children, index);
|
|
139
|
+
if (!firstLink) {
|
|
140
|
+
mergedChildren.push(children[index]);
|
|
141
|
+
index++;
|
|
142
|
+
continue;
|
|
143
|
+
}
|
|
144
|
+
const linkTokens = [firstLink.open, ...children.slice(index + 1, firstLink.closeIndex)];
|
|
145
|
+
let nextIndex = firstLink.closeIndex + 1;
|
|
146
|
+
let mergedAnyLink = false;
|
|
147
|
+
let nextLink = getNextAdjacentLink(children, nextIndex);
|
|
148
|
+
while (nextLink && nextLink.href === firstLink.href && hasSameAttributes(firstLink.open, nextLink.open)) {
|
|
149
|
+
linkTokens.push(...nextLink.separatorTokens);
|
|
150
|
+
linkTokens.push(...children.slice(nextLink.openIndex + 1, nextLink.closeIndex));
|
|
151
|
+
nextIndex = nextLink.closeIndex + 1;
|
|
152
|
+
mergedAnyLink = true;
|
|
153
|
+
nextLink = getNextAdjacentLink(children, nextIndex);
|
|
154
|
+
}
|
|
155
|
+
if (mergedAnyLink) {
|
|
156
|
+
mergedChildren.push(...linkTokens, children[firstLink.closeIndex]);
|
|
157
|
+
index = nextIndex;
|
|
158
|
+
} else {
|
|
159
|
+
mergedChildren.push(children[index]);
|
|
160
|
+
index++;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
blockToken.children = mergedChildren;
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
|
|
76
167
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
77
168
|
md.render = function (text, env) {
|
|
169
|
+
const safeEnv = env ?? {};
|
|
78
170
|
const processedText = preprocessText(text);
|
|
79
|
-
return
|
|
171
|
+
return md.renderer.render(md.parse(processedText, safeEnv), md.options, safeEnv);
|
|
80
172
|
};
|
|
81
173
|
|
|
82
174
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
83
175
|
md.renderInline = function (text, env) {
|
|
176
|
+
const safeEnv = env ?? {};
|
|
84
177
|
const processedText = preprocessText(text);
|
|
85
|
-
return
|
|
178
|
+
return md.renderer.render(md.parseInline(processedText, safeEnv), md.options, safeEnv);
|
|
86
179
|
};
|
|
87
180
|
});
|
|
88
181
|
|
|
@@ -5,6 +5,7 @@ import { getPostChatContext, initiatePostChat } from "./renderSurveyHelpers";
|
|
|
5
5
|
import { BroadcastService } from "@microsoft/omnichannel-chat-components";
|
|
6
6
|
import { ConversationState } from "../../../contexts/common/ConversationState";
|
|
7
7
|
import { LazyLoadHandler } from "../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activities/LazyLoadActivity";
|
|
8
|
+
import { resetActivityMiddlewareCache } from "../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware";
|
|
8
9
|
import { LiveChatWidgetActionType } from "../../../contexts/common/LiveChatWidgetActionType";
|
|
9
10
|
import { NotificationHandler } from "../../webchatcontainerstateful/webchatcontroller/notification/NotificationHandler";
|
|
10
11
|
import { NotificationScenarios } from "../../webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios";
|
|
@@ -20,9 +21,7 @@ import { uuidv4 } from "@microsoft/omnichannel-chat-sdk";
|
|
|
20
21
|
const prepareEndChat = async (props, facadeChatSDK, state, dispatch, setAdapter, setWebChatStyles, adapter) => {
|
|
21
22
|
try {
|
|
22
23
|
var _conversationDetails$, _state$domainStates, _state$appStates5;
|
|
23
|
-
const
|
|
24
|
-
chatConfig
|
|
25
|
-
} = props;
|
|
24
|
+
const chatConfig = props.chatConfig;
|
|
26
25
|
|
|
27
26
|
// Use Case: If call is ongoing, end the call by simulating end call button click
|
|
28
27
|
endVoiceVideoCallIfOngoing(facadeChatSDK, dispatch);
|
|
@@ -99,12 +98,11 @@ const prepareEndChat = async (props, facadeChatSDK, state, dispatch, setAdapter,
|
|
|
99
98
|
});
|
|
100
99
|
}
|
|
101
100
|
const persistentEnabled = isPersistentEnabled(chatConfig);
|
|
102
|
-
const {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
});
|
|
101
|
+
const _executeReducer = executeReducer(state, {
|
|
102
|
+
type: LiveChatWidgetActionType.GET_IN_MEMORY_STATE,
|
|
103
|
+
payload: undefined
|
|
104
|
+
}),
|
|
105
|
+
appStates = _executeReducer.appStates;
|
|
108
106
|
const endedByCustomer = (appStates === null || appStates === void 0 ? void 0 : appStates.conversationEndedBy) === "Customer";
|
|
109
107
|
|
|
110
108
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -243,6 +241,7 @@ const endChat = async (props, facadeChatSDK, state, dispatch, setAdapter, setWeb
|
|
|
243
241
|
|
|
244
242
|
// Call direct reset to ensure LazyLoadHandler gets reset regardless of broadcast timing
|
|
245
243
|
LazyLoadHandler.directReset();
|
|
244
|
+
resetActivityMiddlewareCache();
|
|
246
245
|
BroadcastService.postMessage({
|
|
247
246
|
eventName: BroadcastEvent.PersistentConversationReset
|
|
248
247
|
});
|
|
@@ -335,6 +334,10 @@ export const closeChatStateCleanUp = dispatch => {
|
|
|
335
334
|
type: LiveChatWidgetActionType.SET_CITATIONS,
|
|
336
335
|
payload: {}
|
|
337
336
|
});
|
|
337
|
+
dispatch({
|
|
338
|
+
type: LiveChatWidgetActionType.SET_SHOW_EMAIL_TRANSCRIPT_PANE,
|
|
339
|
+
payload: false
|
|
340
|
+
});
|
|
338
341
|
|
|
339
342
|
// Dismiss the chat disconnect notification banner if it was shown
|
|
340
343
|
NotificationHandler.dismissNotification(NotificationScenarios.ChatDisconnect);
|