@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
|
@@ -18,6 +18,12 @@ var _LazyLoadHandler;
|
|
|
18
18
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
19
19
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
20
20
|
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
21
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
22
|
+
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."); }
|
|
23
|
+
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; } }
|
|
24
|
+
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; }
|
|
25
|
+
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; } }
|
|
26
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
21
27
|
function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
|
|
22
28
|
function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
|
|
23
29
|
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
|
|
@@ -48,10 +54,6 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
|
|
|
48
54
|
* 4. Performs controlled scroll to maintain user position
|
|
49
55
|
* 5. Resets observer for next lazy load cycle
|
|
50
56
|
*/
|
|
51
|
-
/*
|
|
52
|
-
* Interface defining the state of a scroll operation
|
|
53
|
-
* Used to track and verify scroll actions for reliability
|
|
54
|
-
*/
|
|
55
57
|
/**
|
|
56
58
|
* LazyLoadHandler - Static class managing all lazy loading functionality
|
|
57
59
|
*
|
|
@@ -113,6 +115,7 @@ let LazyLoadHandler = exports.LazyLoadHandler = /*#__PURE__*/function () {
|
|
|
113
115
|
key: "directReset",
|
|
114
116
|
value: function directReset() {
|
|
115
117
|
LazyLoadHandler.resetPending = true;
|
|
118
|
+
LazyLoadHandler.initialLoadComplete = false; // New session — next batch is an initial load
|
|
116
119
|
LazyLoadHandler.setHasMoreHistoryAvailable(true);
|
|
117
120
|
LazyLoadHandler.unmount();
|
|
118
121
|
}
|
|
@@ -188,9 +191,8 @@ let LazyLoadHandler = exports.LazyLoadHandler = /*#__PURE__*/function () {
|
|
|
188
191
|
*/
|
|
189
192
|
const setupObserver = () => {
|
|
190
193
|
// Find the scroll container using multiple strategies
|
|
191
|
-
const
|
|
192
|
-
container
|
|
193
|
-
} = LazyLoadHandler.findScrollContainer();
|
|
194
|
+
const _LazyLoadHandler$find = LazyLoadHandler.findScrollContainer(),
|
|
195
|
+
scrollContainer = _LazyLoadHandler$find.container;
|
|
194
196
|
if (!scrollContainer) {
|
|
195
197
|
// Schedule retry with faster timeout for better responsiveness
|
|
196
198
|
const timeoutId = window.setTimeout(() => {
|
|
@@ -312,10 +314,9 @@ let LazyLoadHandler = exports.LazyLoadHandler = /*#__PURE__*/function () {
|
|
|
312
314
|
key: "executeImmediateScrollFeedback",
|
|
313
315
|
value: function executeImmediateScrollFeedback() {
|
|
314
316
|
// Find container and validate scrollability
|
|
315
|
-
const
|
|
316
|
-
container,
|
|
317
|
-
isScrollable
|
|
318
|
-
} = LazyLoadHandler.findScrollContainer();
|
|
317
|
+
const _LazyLoadHandler$find2 = LazyLoadHandler.findScrollContainer(),
|
|
318
|
+
container = _LazyLoadHandler$find2.container,
|
|
319
|
+
isScrollable = _LazyLoadHandler$find2.isScrollable;
|
|
319
320
|
if (container && isScrollable) {
|
|
320
321
|
const currentScrollTop = container.scrollTop;
|
|
321
322
|
const immediateScrollTarget = currentScrollTop + 20; // Small immediate scroll for feedback
|
|
@@ -387,9 +388,8 @@ let LazyLoadHandler = exports.LazyLoadHandler = /*#__PURE__*/function () {
|
|
|
387
388
|
if (!targetElement) {
|
|
388
389
|
return;
|
|
389
390
|
}
|
|
390
|
-
const
|
|
391
|
-
container
|
|
392
|
-
} = LazyLoadHandler.findScrollContainer();
|
|
391
|
+
const _LazyLoadHandler$find3 = LazyLoadHandler.findScrollContainer(),
|
|
392
|
+
container = _LazyLoadHandler$find3.container;
|
|
393
393
|
if (!container) {
|
|
394
394
|
return;
|
|
395
395
|
}
|
|
@@ -406,7 +406,7 @@ let LazyLoadHandler = exports.LazyLoadHandler = /*#__PURE__*/function () {
|
|
|
406
406
|
targetRect.left < containerRect.right &&
|
|
407
407
|
// Target left is before container right
|
|
408
408
|
targetRect.right > containerRect.left // Target right is after container left
|
|
409
|
-
|
|
409
|
+
;
|
|
410
410
|
if (isVisible) {
|
|
411
411
|
LazyLoadHandler.handleImmediateScrollRequest();
|
|
412
412
|
}
|
|
@@ -414,16 +414,15 @@ let LazyLoadHandler = exports.LazyLoadHandler = /*#__PURE__*/function () {
|
|
|
414
414
|
|
|
415
415
|
/**
|
|
416
416
|
* Main lazy load trigger handler
|
|
417
|
-
*
|
|
417
|
+
*
|
|
418
418
|
* This is the core method that executes when the trigger element becomes visible.
|
|
419
419
|
* It coordinates the entire lazy loading process:
|
|
420
|
-
*
|
|
420
|
+
*
|
|
421
421
|
* 1. Sets flags to prevent concurrent operations
|
|
422
|
-
* 2.
|
|
423
|
-
* 3.
|
|
424
|
-
*
|
|
425
|
-
*
|
|
426
|
-
* Timing: Uses 300ms delay to allow content loading before scroll adjustment
|
|
422
|
+
* 2. Captures scroll state BEFORE content loads (for height-delta anchoring)
|
|
423
|
+
* 3. Dispatches event to fetch more chat history
|
|
424
|
+
*
|
|
425
|
+
* Scroll anchoring is triggered by HISTORY_BATCH_LOADED event (not a blind timeout).
|
|
427
426
|
*/
|
|
428
427
|
}, {
|
|
429
428
|
key: "handleLazyLoadTrigger",
|
|
@@ -437,138 +436,58 @@ let LazyLoadHandler = exports.LazyLoadHandler = /*#__PURE__*/function () {
|
|
|
437
436
|
LazyLoadHandler.pendingScrollAction = true; // Block new scroll actions
|
|
438
437
|
LazyLoadHandler.paused = true; // Pause intersection observer
|
|
439
438
|
|
|
439
|
+
// Capture scroll geometry BEFORE new content loads — used for height-delta anchoring
|
|
440
|
+
const _LazyLoadHandler$find4 = LazyLoadHandler.findScrollContainer(),
|
|
441
|
+
container = _LazyLoadHandler$find4.container,
|
|
442
|
+
isScrollable = _LazyLoadHandler$find4.isScrollable;
|
|
443
|
+
if (container && isScrollable) {
|
|
444
|
+
LazyLoadHandler.preLoadScrollHeight = container.scrollHeight;
|
|
445
|
+
LazyLoadHandler.preLoadScrollTop = container.scrollTop;
|
|
446
|
+
}
|
|
447
|
+
LazyLoadHandler.logLifecycleEvent(_TelemetryConstants.TelemetryEvent.LCWLazyLoadTriggerFired, "Lazy load trigger fired — fetching history");
|
|
448
|
+
|
|
440
449
|
// Dispatch custom event to trigger chat history fetching
|
|
441
|
-
// This event is handled by other parts of the chat system
|
|
442
450
|
(0, _dispatchCustomEvent.default)(_ChatWidgetEvents.default.FETCH_PERSISTENT_CHAT_HISTORY);
|
|
443
|
-
|
|
444
|
-
// Wait for content to load before performing scroll adjustment
|
|
445
|
-
// 200ms provides good balance between responsiveness and content loading
|
|
446
|
-
const timeoutId = window.setTimeout(() => {
|
|
447
|
-
LazyLoadHandler.retryTimeouts.delete(timeoutId);
|
|
448
|
-
LazyLoadHandler.executeReliableScroll();
|
|
449
|
-
}, 200); // Reduced from 300ms to 200ms for faster response
|
|
450
|
-
LazyLoadHandler.retryTimeouts.add(timeoutId);
|
|
451
451
|
}
|
|
452
452
|
|
|
453
453
|
/**
|
|
454
|
-
*
|
|
455
|
-
*
|
|
456
|
-
*
|
|
457
|
-
*
|
|
458
|
-
*
|
|
459
|
-
*
|
|
460
|
-
* 4. Initiates the scroll attempt process
|
|
461
|
-
*
|
|
462
|
-
* If no suitable container is found, schedules a retry.
|
|
454
|
+
* Applies height-delta scroll anchoring after new history content is prepended.
|
|
455
|
+
*
|
|
456
|
+
* When content is added above the viewport, the browser keeps scrollTop constant
|
|
457
|
+
* but the content shifts down — making the viewport drift upward.
|
|
458
|
+
* Fix: scrollTop = savedScrollTop + (newScrollHeight - savedScrollHeight)
|
|
459
|
+
* This keeps the user looking at the same content they had before.
|
|
463
460
|
*/
|
|
464
461
|
}, {
|
|
465
|
-
key: "
|
|
466
|
-
value: function
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
return;
|
|
471
|
-
}
|
|
472
|
-
|
|
473
|
-
// Find container using multiple fallback strategies
|
|
474
|
-
const {
|
|
475
|
-
container,
|
|
476
|
-
isScrollable
|
|
477
|
-
} = LazyLoadHandler.findScrollContainer();
|
|
462
|
+
key: "applyScrollAnchor",
|
|
463
|
+
value: function applyScrollAnchor() {
|
|
464
|
+
const _LazyLoadHandler$find5 = LazyLoadHandler.findScrollContainer(),
|
|
465
|
+
container = _LazyLoadHandler$find5.container,
|
|
466
|
+
isScrollable = _LazyLoadHandler$find5.isScrollable;
|
|
478
467
|
if (!container || !isScrollable) {
|
|
479
|
-
LazyLoadHandler.scheduleScrollRetry();
|
|
480
|
-
return;
|
|
481
|
-
}
|
|
482
|
-
|
|
483
|
-
// Calculate scroll positions
|
|
484
|
-
const initialScrollTop = container.scrollTop;
|
|
485
|
-
const targetScrollTop = initialScrollTop + 35; // 35px down to maintain position
|
|
486
|
-
|
|
487
|
-
// Set up scroll state for tracking and retries
|
|
488
|
-
LazyLoadHandler.scrollState = {
|
|
489
|
-
container,
|
|
490
|
-
initialScrollTop,
|
|
491
|
-
targetScrollTop,
|
|
492
|
-
attemptCount: 0,
|
|
493
|
-
maxAttempts: 5 // Allow up to 5 retry attempts
|
|
494
|
-
};
|
|
495
|
-
|
|
496
|
-
// Begin the scroll attempt process
|
|
497
|
-
LazyLoadHandler.attemptScroll();
|
|
498
|
-
}
|
|
499
|
-
|
|
500
|
-
/**
|
|
501
|
-
* Attempts to perform scroll with verification and retry logic
|
|
502
|
-
*
|
|
503
|
-
* This method implements a sophisticated scroll system:
|
|
504
|
-
*
|
|
505
|
-
* 1. Uses requestAnimationFrame for smooth execution
|
|
506
|
-
* 2. Performs the scroll operation
|
|
507
|
-
* 3. Verifies scroll actually occurred (5px tolerance)
|
|
508
|
-
* 4. Retries with exponential backoff if failed
|
|
509
|
-
* 5. Continues operation after max attempts
|
|
510
|
-
*
|
|
511
|
-
* The two-frame approach ensures scroll is applied and then verified
|
|
512
|
-
* after the browser has had time to process the scroll change.
|
|
513
|
-
*/
|
|
514
|
-
}, {
|
|
515
|
-
key: "attemptScroll",
|
|
516
|
-
value: function attemptScroll() {
|
|
517
|
-
// Guard: Don't attempt scroll if no more history is available
|
|
518
|
-
if (!LazyLoadHandler.hasMoreHistoryAvailable) {
|
|
519
468
|
LazyLoadHandler.finishScrollAction();
|
|
520
469
|
return;
|
|
521
470
|
}
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
471
|
+
const newScrollHeight = container.scrollHeight;
|
|
472
|
+
const heightDelta = newScrollHeight - LazyLoadHandler.preLoadScrollHeight;
|
|
473
|
+
if (heightDelta > 0) {
|
|
474
|
+
container.scrollTop = LazyLoadHandler.preLoadScrollTop + heightDelta;
|
|
525
475
|
}
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
// Perform scroll using requestAnimationFrame for smooth execution
|
|
537
|
-
// Frame 1: Apply the scroll
|
|
538
|
-
requestAnimationFrame(() => {
|
|
539
|
-
// Double-check history availability before applying scroll
|
|
540
|
-
if (!LazyLoadHandler.hasMoreHistoryAvailable) {
|
|
541
|
-
LazyLoadHandler.finishScrollAction();
|
|
542
|
-
return;
|
|
543
|
-
}
|
|
544
|
-
if (container) {
|
|
545
|
-
container.scrollTop = targetScrollTop;
|
|
546
|
-
}
|
|
547
|
-
|
|
548
|
-
// Frame 2: Verify scroll occurred after browser has processed the change
|
|
549
|
-
requestAnimationFrame(() => {
|
|
550
|
-
// Triple-check history availability before verification
|
|
551
|
-
if (!LazyLoadHandler.hasMoreHistoryAvailable) {
|
|
552
|
-
LazyLoadHandler.finishScrollAction();
|
|
553
|
-
return;
|
|
554
|
-
}
|
|
555
|
-
const actualScrollTop = container ? container.scrollTop : 0;
|
|
556
|
-
const scrollSucceeded = Math.abs(actualScrollTop - targetScrollTop) < 5; // 5px tolerance for success
|
|
557
|
-
|
|
558
|
-
if (scrollSucceeded) {
|
|
559
|
-
LazyLoadHandler.finishScrollAction();
|
|
560
|
-
} else if (attemptCount < maxAttempts) {
|
|
561
|
-
// Retry with exponential backoff (100ms * attempt number)
|
|
562
|
-
const timeoutId = window.setTimeout(() => {
|
|
563
|
-
LazyLoadHandler.retryTimeouts.delete(timeoutId);
|
|
564
|
-
LazyLoadHandler.attemptScroll();
|
|
565
|
-
}, 100 * attemptCount); // Exponential backoff
|
|
566
|
-
LazyLoadHandler.retryTimeouts.add(timeoutId);
|
|
567
|
-
} else {
|
|
568
|
-
LazyLoadHandler.finishScrollAction();
|
|
476
|
+
try {
|
|
477
|
+
_TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
|
|
478
|
+
Event: _TelemetryConstants.TelemetryEvent.LCWLazyLoadScrollAnchorApplied,
|
|
479
|
+
Description: "Scroll anchor applied after history batch",
|
|
480
|
+
CustomProperties: {
|
|
481
|
+
heightDelta,
|
|
482
|
+
preLoadScrollHeight: LazyLoadHandler.preLoadScrollHeight,
|
|
483
|
+
newScrollHeight,
|
|
484
|
+
newScrollTop: container.scrollTop
|
|
569
485
|
}
|
|
570
486
|
});
|
|
571
|
-
}
|
|
487
|
+
} catch {
|
|
488
|
+
// Silent fail — don't break scroll anchoring for telemetry issues
|
|
489
|
+
}
|
|
490
|
+
LazyLoadHandler.finishScrollAction();
|
|
572
491
|
}
|
|
573
492
|
|
|
574
493
|
/**
|
|
@@ -582,7 +501,6 @@ let LazyLoadHandler = exports.LazyLoadHandler = /*#__PURE__*/function () {
|
|
|
582
501
|
key: "finishScrollAction",
|
|
583
502
|
value: function finishScrollAction() {
|
|
584
503
|
// Clean up scroll tracking state
|
|
585
|
-
LazyLoadHandler.scrollState = null;
|
|
586
504
|
LazyLoadHandler.pendingScrollAction = false;
|
|
587
505
|
|
|
588
506
|
// Schedule unpause and reset with delay for content stabilization
|
|
@@ -594,33 +512,9 @@ let LazyLoadHandler = exports.LazyLoadHandler = /*#__PURE__*/function () {
|
|
|
594
512
|
LazyLoadHandler.retryTimeouts.add(timeoutId);
|
|
595
513
|
}
|
|
596
514
|
|
|
597
|
-
/**
|
|
598
|
-
* Schedules retry for failed scroll operations
|
|
599
|
-
*
|
|
600
|
-
* Used when scroll container is not available or scrollable.
|
|
601
|
-
* Provides a longer delay to allow container to become ready.
|
|
602
|
-
*/
|
|
603
|
-
}, {
|
|
604
|
-
key: "scheduleScrollRetry",
|
|
605
|
-
value: function scheduleScrollRetry() {
|
|
606
|
-
// Don't schedule retry if no more history is available
|
|
607
|
-
if (!LazyLoadHandler.hasMoreHistoryAvailable) {
|
|
608
|
-
LazyLoadHandler.finishScrollAction();
|
|
609
|
-
return;
|
|
610
|
-
}
|
|
611
|
-
const timeoutId = window.setTimeout(() => {
|
|
612
|
-
LazyLoadHandler.retryTimeouts.delete(timeoutId);
|
|
613
|
-
// Only retry if we're still in a pending scroll action state and have more history
|
|
614
|
-
if (LazyLoadHandler.pendingScrollAction && LazyLoadHandler.hasMoreHistoryAvailable) {
|
|
615
|
-
LazyLoadHandler.executeReliableScroll();
|
|
616
|
-
}
|
|
617
|
-
}, 1000); // 1 second delay for container readiness
|
|
618
|
-
LazyLoadHandler.retryTimeouts.add(timeoutId);
|
|
619
|
-
}
|
|
620
|
-
|
|
621
515
|
/**
|
|
622
516
|
* Schedules observer reset for next lazy load cycle
|
|
623
|
-
*
|
|
517
|
+
*
|
|
624
518
|
* After a lazy load operation completes, the observer needs to be reset
|
|
625
519
|
* to detect the next time the user scrolls to the top.
|
|
626
520
|
*/
|
|
@@ -738,7 +632,7 @@ let LazyLoadHandler = exports.LazyLoadHandler = /*#__PURE__*/function () {
|
|
|
738
632
|
}, {
|
|
739
633
|
key: "moveScrollDown",
|
|
740
634
|
value: function moveScrollDown() {
|
|
741
|
-
LazyLoadHandler.
|
|
635
|
+
LazyLoadHandler.applyScrollAnchor();
|
|
742
636
|
}
|
|
743
637
|
|
|
744
638
|
/**
|
|
@@ -778,6 +672,9 @@ let LazyLoadHandler = exports.LazyLoadHandler = /*#__PURE__*/function () {
|
|
|
778
672
|
}, {
|
|
779
673
|
key: "handleNoMoreHistoryAvailable",
|
|
780
674
|
value: function handleNoMoreHistoryAvailable() {
|
|
675
|
+
if (!LazyLoadHandler.initialLoadComplete) {
|
|
676
|
+
LazyLoadHandler.initialLoadComplete = true;
|
|
677
|
+
}
|
|
781
678
|
LazyLoadHandler.setHasMoreHistoryAvailable(false);
|
|
782
679
|
LazyLoadHandler.paused = true;
|
|
783
680
|
LazyLoadHandler.pendingScrollAction = false; // Reset this to prevent stuck states
|
|
@@ -795,9 +692,6 @@ let LazyLoadHandler = exports.LazyLoadHandler = /*#__PURE__*/function () {
|
|
|
795
692
|
LazyLoadHandler.observer.disconnect();
|
|
796
693
|
LazyLoadHandler.observer = null;
|
|
797
694
|
}
|
|
798
|
-
|
|
799
|
-
// Clear scroll state
|
|
800
|
-
LazyLoadHandler.scrollState = null;
|
|
801
695
|
}
|
|
802
696
|
|
|
803
697
|
/**
|
|
@@ -819,6 +713,8 @@ let LazyLoadHandler = exports.LazyLoadHandler = /*#__PURE__*/function () {
|
|
|
819
713
|
LazyLoadHandler.setHasMoreHistoryAvailable(true); // Reset history availability flag
|
|
820
714
|
LazyLoadHandler.initializationQueue = []; // Clear action queue
|
|
821
715
|
LazyLoadHandler.resetPending = false; // Clear pending reset flag
|
|
716
|
+
// Note: initialLoadComplete is NOT reset here — it persists across observer cycles.
|
|
717
|
+
// It's only reset on new chat sessions (directReset / PersistentConversationReset).
|
|
822
718
|
|
|
823
719
|
// Reinitialize with faster timing for better responsiveness
|
|
824
720
|
const timeoutId = window.setTimeout(() => {
|
|
@@ -858,8 +754,9 @@ let LazyLoadHandler = exports.LazyLoadHandler = /*#__PURE__*/function () {
|
|
|
858
754
|
LazyLoadHandler.initialized = false;
|
|
859
755
|
LazyLoadHandler.paused = false;
|
|
860
756
|
LazyLoadHandler.pendingScrollAction = false;
|
|
861
|
-
LazyLoadHandler.scrollState = null;
|
|
862
757
|
LazyLoadHandler.isReady = false;
|
|
758
|
+
LazyLoadHandler.preLoadScrollHeight = 0;
|
|
759
|
+
LazyLoadHandler.preLoadScrollTop = 0;
|
|
863
760
|
LazyLoadHandler.initializationQueue = [];
|
|
864
761
|
// Note: Don't reset resetPending here as it needs to persist across unmount/mount cycles
|
|
865
762
|
}
|
|
@@ -915,9 +812,13 @@ _defineProperty(LazyLoadHandler, "paused", false);
|
|
|
915
812
|
// Temporary disable flag
|
|
916
813
|
_defineProperty(LazyLoadHandler, "observer", null);
|
|
917
814
|
// The intersection observer instance
|
|
918
|
-
// Scroll
|
|
919
|
-
_defineProperty(LazyLoadHandler, "
|
|
920
|
-
//
|
|
815
|
+
// Scroll anchoring state (height-delta approach)
|
|
816
|
+
_defineProperty(LazyLoadHandler, "preLoadScrollHeight", 0);
|
|
817
|
+
// scrollHeight before content loads
|
|
818
|
+
_defineProperty(LazyLoadHandler, "preLoadScrollTop", 0);
|
|
819
|
+
// scrollTop before content loads
|
|
820
|
+
_defineProperty(LazyLoadHandler, "initialLoadComplete", false);
|
|
821
|
+
// Tracks if the first batch has loaded
|
|
921
822
|
_defineProperty(LazyLoadHandler, "pendingScrollAction", false);
|
|
922
823
|
// Prevents concurrent scroll operations (public for event handlers)
|
|
923
824
|
// Timeout and queue management
|
|
@@ -930,6 +831,7 @@ _defineProperty(LazyLoadHandler, "initTimer", (0, _utils.createTimer)());
|
|
|
930
831
|
_defineProperty(LazyLoadHandler, "resetEventListener", _omnichannelChatComponents.BroadcastService.getMessageByEventName(_TelemetryConstants.BroadcastEvent.PersistentConversationReset).subscribe(() => {
|
|
931
832
|
_LazyLoadHandler.logLifecycleEvent(_TelemetryConstants.TelemetryEvent.LCWLazyLoadReset, "LazyLoad reset triggered");
|
|
932
833
|
_LazyLoadHandler.resetPending = true;
|
|
834
|
+
_LazyLoadHandler.initialLoadComplete = false; // New session — next batch is an initial load
|
|
933
835
|
_LazyLoadHandler.setHasMoreHistoryAvailable(true); // Reset this immediately so activityMiddleware doesn't block rendering
|
|
934
836
|
_LazyLoadHandler.unmount(); // Clean up current state immediately
|
|
935
837
|
}));
|
|
@@ -941,7 +843,10 @@ _defineProperty(LazyLoadHandler, "initializationQueue", []);
|
|
|
941
843
|
// History availability state
|
|
942
844
|
_defineProperty(LazyLoadHandler, "hasMoreHistoryAvailable", true);
|
|
943
845
|
const LazyLoadActivity = props => {
|
|
944
|
-
const
|
|
846
|
+
const _useState = (0, _react.useState)(LazyLoadHandler.hasMoreHistoryAvailable),
|
|
847
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
848
|
+
hasMoreHistory = _useState2[0],
|
|
849
|
+
setHasMoreHistory = _useState2[1];
|
|
945
850
|
(0, _react.useEffect)(() => {
|
|
946
851
|
LazyLoadHandler.logLifecycleEvent(_TelemetryConstants.TelemetryEvent.LCWLazyLoadActivityMounted, "LazyLoadActivity component mounted");
|
|
947
852
|
|
|
@@ -953,19 +858,11 @@ const LazyLoadActivity = props => {
|
|
|
953
858
|
setHasMoreHistory(false);
|
|
954
859
|
};
|
|
955
860
|
|
|
956
|
-
// Event listener for HISTORY_LOAD_ERROR
|
|
861
|
+
// Event listener for HISTORY_LOAD_ERROR — dismiss banner on any error
|
|
957
862
|
const handleHistoryLoadError = () => {
|
|
958
|
-
|
|
959
|
-
LazyLoadHandler.
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
// Re-enable after a delay to allow retry on next scroll
|
|
963
|
-
// Note: This timeout is intentionally not tracked as it's scoped to the component lifecycle
|
|
964
|
-
window.setTimeout(() => {
|
|
965
|
-
LazyLoadHandler.paused = false;
|
|
966
|
-
}, 2000); // 2 second delay before allowing retry
|
|
967
|
-
|
|
968
|
-
LazyLoadHandler.logLifecycleEvent(_TelemetryConstants.TelemetryEvent.LCWLazyLoadHistoryError, "History load error - will retry on next scroll");
|
|
863
|
+
LazyLoadHandler.logLifecycleEvent(_TelemetryConstants.TelemetryEvent.LCWLazyLoadHistoryError, `History load error - dismissing banner. initialLoadComplete: ${LazyLoadHandler.initialLoadComplete}`);
|
|
864
|
+
LazyLoadHandler.handleNoMoreHistoryAvailable();
|
|
865
|
+
setHasMoreHistory(false);
|
|
969
866
|
};
|
|
970
867
|
|
|
971
868
|
// Event listener for PersistentConversationReset to sync React state
|
|
@@ -976,6 +873,95 @@ const LazyLoadActivity = props => {
|
|
|
976
873
|
setHasMoreHistory(true);
|
|
977
874
|
};
|
|
978
875
|
|
|
876
|
+
// Event listener for HISTORY_BATCH_LOADED — applies scroll anchoring after batch is processed
|
|
877
|
+
const handleBatchLoaded = () => {
|
|
878
|
+
LazyLoadHandler.logLifecycleEvent(_TelemetryConstants.TelemetryEvent.LCWLazyLoadBatchReceived, `Batch received — initialLoadComplete: ${LazyLoadHandler.initialLoadComplete}`);
|
|
879
|
+
if (!LazyLoadHandler.initialLoadComplete) {
|
|
880
|
+
// Initial load: use the same height-delta scroll anchoring as subsequent loads.
|
|
881
|
+
// This keeps the user at their current position while history is prepended above.
|
|
882
|
+
LazyLoadHandler.initialLoadComplete = true;
|
|
883
|
+
LazyLoadHandler.pendingScrollAction = false;
|
|
884
|
+
try {
|
|
885
|
+
const _LazyLoadHandler$find6 = LazyLoadHandler.findScrollContainer(),
|
|
886
|
+
container = _LazyLoadHandler$find6.container;
|
|
887
|
+
if (container) {
|
|
888
|
+
const savedScrollTop = container.scrollTop;
|
|
889
|
+
const savedScrollHeight = container.scrollHeight;
|
|
890
|
+
|
|
891
|
+
// Freeze viewport while React renders new content above
|
|
892
|
+
container.style.overflow = "hidden";
|
|
893
|
+
let framesRemaining = 6;
|
|
894
|
+
const anchorScroll = () => {
|
|
895
|
+
const newScrollHeight = container.scrollHeight;
|
|
896
|
+
const heightDelta = newScrollHeight - savedScrollHeight;
|
|
897
|
+
if (heightDelta > 0) {
|
|
898
|
+
container.scrollTop = savedScrollTop + heightDelta;
|
|
899
|
+
}
|
|
900
|
+
framesRemaining--;
|
|
901
|
+
if (framesRemaining > 0) {
|
|
902
|
+
requestAnimationFrame(anchorScroll);
|
|
903
|
+
} else {
|
|
904
|
+
container.style.overflow = "";
|
|
905
|
+
LazyLoadHandler.paused = false;
|
|
906
|
+
LazyLoadHandler.scheduleReset();
|
|
907
|
+
}
|
|
908
|
+
};
|
|
909
|
+
requestAnimationFrame(anchorScroll);
|
|
910
|
+
} else {
|
|
911
|
+
LazyLoadHandler.paused = false;
|
|
912
|
+
LazyLoadHandler.scheduleReset();
|
|
913
|
+
}
|
|
914
|
+
} catch {
|
|
915
|
+
LazyLoadHandler.paused = false;
|
|
916
|
+
LazyLoadHandler.scheduleReset();
|
|
917
|
+
}
|
|
918
|
+
LazyLoadHandler.logLifecycleEvent(_TelemetryConstants.TelemetryEvent.LCWLazyLoadInitialLoadComplete, "Initial history load complete — scroll anchored to current position");
|
|
919
|
+
return;
|
|
920
|
+
}
|
|
921
|
+
// Pagination: apply height-delta scroll anchoring repeatedly across frames.
|
|
922
|
+
//
|
|
923
|
+
// react-scroll-to-bottom uses useEffect + rAF to auto-scroll to bottom when new content
|
|
924
|
+
// arrives. This fires at unpredictable timing relative to our callbacks, so a single
|
|
925
|
+
// scrollTop assignment gets overridden intermittently.
|
|
926
|
+
//
|
|
927
|
+
// Fix: re-apply the correct scrollTop across several animation frames. After a few frames,
|
|
928
|
+
// react-scroll-to-bottom detects the user is NOT at the bottom (sticky=false) and stops
|
|
929
|
+
// auto-scrolling. We also temporarily freeze overflow to prevent visible flicker.
|
|
930
|
+
try {
|
|
931
|
+
const _LazyLoadHandler$find7 = LazyLoadHandler.findScrollContainer(),
|
|
932
|
+
container = _LazyLoadHandler$find7.container;
|
|
933
|
+
if (container) {
|
|
934
|
+
// Re-capture scrollTop — user may have scrolled during the API fetch
|
|
935
|
+
const savedScrollTop = container.scrollTop;
|
|
936
|
+
const savedScrollHeight = LazyLoadHandler.preLoadScrollHeight;
|
|
937
|
+
|
|
938
|
+
// Freeze viewport to prevent visible flicker between competing scroll positions
|
|
939
|
+
container.style.overflow = "hidden";
|
|
940
|
+
let framesRemaining = 6; // ~100ms at 60fps — enough for react-scroll-to-bottom to settle
|
|
941
|
+
const anchorScroll = () => {
|
|
942
|
+
const newScrollHeight = container.scrollHeight;
|
|
943
|
+
const heightDelta = newScrollHeight - savedScrollHeight;
|
|
944
|
+
if (heightDelta > 0) {
|
|
945
|
+
container.scrollTop = savedScrollTop + heightDelta;
|
|
946
|
+
}
|
|
947
|
+
framesRemaining--;
|
|
948
|
+
if (framesRemaining > 0) {
|
|
949
|
+
requestAnimationFrame(anchorScroll);
|
|
950
|
+
} else {
|
|
951
|
+
// All frames applied — restore overflow and finish
|
|
952
|
+
container.style.overflow = "";
|
|
953
|
+
LazyLoadHandler.finishScrollAction();
|
|
954
|
+
}
|
|
955
|
+
};
|
|
956
|
+
requestAnimationFrame(anchorScroll);
|
|
957
|
+
} else {
|
|
958
|
+
LazyLoadHandler.finishScrollAction();
|
|
959
|
+
}
|
|
960
|
+
} catch {
|
|
961
|
+
LazyLoadHandler.finishScrollAction();
|
|
962
|
+
}
|
|
963
|
+
};
|
|
964
|
+
|
|
979
965
|
// Add secure event listener for no more history signal
|
|
980
966
|
const eventBus = _SecureEventBus.default.getInstance();
|
|
981
967
|
const unsubscribeNoMoreHistory = eventBus.subscribe(_ChatWidgetEvents.default.NO_MORE_HISTORY_AVAILABLE, handleNoMoreHistory);
|
|
@@ -983,6 +969,9 @@ const LazyLoadActivity = props => {
|
|
|
983
969
|
// Add event listener for history load errors
|
|
984
970
|
const unsubscribeHistoryError = eventBus.subscribe(_ChatWidgetEvents.default.HISTORY_LOAD_ERROR, handleHistoryLoadError);
|
|
985
971
|
|
|
972
|
+
// Add event listener for history batch loaded
|
|
973
|
+
const unsubscribeBatchLoaded = eventBus.subscribe(_ChatWidgetEvents.default.HISTORY_BATCH_LOADED, handleBatchLoaded);
|
|
974
|
+
|
|
986
975
|
// Add event listener for persistent conversation reset
|
|
987
976
|
const resetSubscription = _omnichannelChatComponents.BroadcastService.getMessageByEventName(_TelemetryConstants.BroadcastEvent.PersistentConversationReset).subscribe(handlePersistentConversationReset);
|
|
988
977
|
|
|
@@ -1000,6 +989,7 @@ const LazyLoadActivity = props => {
|
|
|
1000
989
|
return () => {
|
|
1001
990
|
unsubscribeNoMoreHistory();
|
|
1002
991
|
unsubscribeHistoryError();
|
|
992
|
+
unsubscribeBatchLoaded();
|
|
1003
993
|
resetSubscription.unsubscribe();
|
|
1004
994
|
};
|
|
1005
995
|
}
|
|
@@ -1037,9 +1027,8 @@ const LazyLoadActivity = props => {
|
|
|
1037
1027
|
};
|
|
1038
1028
|
|
|
1039
1029
|
// Find container and attach scroll listener
|
|
1040
|
-
const
|
|
1041
|
-
container
|
|
1042
|
-
} = LazyLoadHandler.findScrollContainer();
|
|
1030
|
+
const _LazyLoadHandler$find8 = LazyLoadHandler.findScrollContainer(),
|
|
1031
|
+
container = _LazyLoadHandler$find8.container;
|
|
1043
1032
|
if (container) {
|
|
1044
1033
|
container.addEventListener("scroll", handleScroll, {
|
|
1045
1034
|
passive: true
|
|
@@ -1053,6 +1042,7 @@ const LazyLoadActivity = props => {
|
|
|
1053
1042
|
// Remove event listeners
|
|
1054
1043
|
unsubscribeNoMoreHistory();
|
|
1055
1044
|
unsubscribeHistoryError();
|
|
1045
|
+
unsubscribeBatchLoaded();
|
|
1056
1046
|
resetSubscription.unsubscribe();
|
|
1057
1047
|
if (container) {
|
|
1058
1048
|
container.removeEventListener("scroll", handleScroll);
|
|
@@ -10,11 +10,9 @@ var _defaultMiddlewareLocalizedTexts = require("../../../../common/defaultProps/
|
|
|
10
10
|
var _mergeStyles = require("@fluentui/merge-styles");
|
|
11
11
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
12
12
|
const LoadInlineBannerActivity = _ref => {
|
|
13
|
-
let
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
id
|
|
17
|
-
} = _ref;
|
|
13
|
+
let webChatContainerProps = _ref.webChatContainerProps,
|
|
14
|
+
persistentChatHistory = _ref.persistentChatHistory,
|
|
15
|
+
id = _ref.id;
|
|
18
16
|
const localizedTexts = (0, _react.useMemo)(() => ({
|
|
19
17
|
..._defaultMiddlewareLocalizedTexts.defaultMiddlewareLocalizedTexts,
|
|
20
18
|
...(webChatContainerProps === null || webChatContainerProps === void 0 ? void 0 : webChatContainerProps.localizedTexts)
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.createActivityMiddleware = void 0;
|
|
6
|
+
exports.resetActivityMiddlewareCache = exports.createActivityMiddleware = void 0;
|
|
7
7
|
var _LazyLoadActivity = _interopRequireWildcard(require("./activities/LazyLoadActivity"));
|
|
8
8
|
var _TelemetryConstants = require("../../../../../common/telemetry/TelemetryConstants");
|
|
9
9
|
var _Constants = require("../../../../../common/Constants");
|
|
@@ -55,7 +55,16 @@ const handleSystemMessage = (next, args, card, renderMarkdown, systemMessageStyl
|
|
|
55
55
|
if ((_card$activity5 = card.activity) !== null && _card$activity5 !== void 0 && (_card$activity5 = _card$activity5.channelData) !== null && _card$activity5 !== void 0 && _card$activity5.clientmessageid && ((_card$nextVisibleActi = card.nextVisibleActivity) === null || _card$nextVisibleActi === void 0 || (_card$nextVisibleActi = _card$nextVisibleActi.channelData) === null || _card$nextVisibleActi === void 0 ? void 0 : _card$nextVisibleActi.clientmessageid) === ((_card$activity6 = card.activity) === null || _card$activity6 === void 0 || (_card$activity6 = _card$activity6.channelData) === null || _card$activity6 === void 0 ? void 0 : _card$activity6.clientmessageid) || (_card$activity7 = card.activity) !== null && _card$activity7 !== void 0 && _card$activity7.messageid && ((_card$nextVisibleActi2 = card.nextVisibleActivity) === null || _card$nextVisibleActi2 === void 0 ? void 0 : _card$nextVisibleActi2.messageid) === ((_card$activity8 = card.activity) === null || _card$activity8 === void 0 ? void 0 : _card$activity8.messageid)) {
|
|
56
56
|
return () => false;
|
|
57
57
|
}
|
|
58
|
-
|
|
58
|
+
|
|
59
|
+
// Render latest text on every pass. We deliberately do NOT cache the pre-render text
|
|
60
|
+
// (removed post-PR #895), because:
|
|
61
|
+
// 1. card.activity.text is no longer mutated (renderedHtml is a local variable), so
|
|
62
|
+
// exponential <br> growth from repeated markdown rendering is not possible.
|
|
63
|
+
// 2. Caching the first-seen text prevents edited system messages (same id, updated
|
|
64
|
+
// text/version) from ever re-rendering with the latest content.
|
|
65
|
+
// renderMarkdown sanitizes the HTML using DOMPurify with allowlist-based configuration
|
|
66
|
+
// See initWebChatComposer.ts for sanitization details
|
|
67
|
+
const renderedHtml = renderMarkdown(card.activity.text);
|
|
59
68
|
// eslint-disable-next-line react/display-name
|
|
60
69
|
return () => /*#__PURE__*/_react.default.createElement("div", {
|
|
61
70
|
key: card.activity.id,
|
|
@@ -63,7 +72,7 @@ const handleSystemMessage = (next, args, card, renderMarkdown, systemMessageStyl
|
|
|
63
72
|
"aria-hidden": "false",
|
|
64
73
|
className: _Constants.Constants.markDownSystemMessageClass,
|
|
65
74
|
dangerouslySetInnerHTML: {
|
|
66
|
-
__html:
|
|
75
|
+
__html: renderedHtml
|
|
67
76
|
}
|
|
68
77
|
});
|
|
69
78
|
};
|
|
@@ -83,7 +92,7 @@ const createActivityMiddleware = (renderMarkdown, systemMessageStyleProps, userM
|
|
|
83
92
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
84
93
|
args[_key] = arguments[_key];
|
|
85
94
|
}
|
|
86
|
-
const
|
|
95
|
+
const card = args[0];
|
|
87
96
|
if (card.activity) {
|
|
88
97
|
var _card$activity$from;
|
|
89
98
|
if (((_card$activity$from = card.activity.from) === null || _card$activity$from === void 0 ? void 0 : _card$activity$from.role) === _DirectLineSenderRole.DirectLineSenderRole.Channel) {
|
|
@@ -132,7 +141,7 @@ const createActivityMiddleware = (renderMarkdown, systemMessageStyleProps, userM
|
|
|
132
141
|
if (isTagIncluded(card, _Constants.Constants.conversationDividerTag)) {
|
|
133
142
|
const conversationDividerLabel = (localizedTexts === null || localizedTexts === void 0 ? void 0 : localizedTexts.CONVERSATION_DIVIDER_ARIA_LABEL) || _defaultMiddlewareLocalizedTexts.defaultMiddlewareLocalizedTexts.CONVERSATION_DIVIDER_ARIA_LABEL;
|
|
134
143
|
// Pass the computed localized text to the divider component
|
|
135
|
-
return /*#__PURE__*/_react.default.createElement(_ConversationDividerActivity.default, {
|
|
144
|
+
return () => /*#__PURE__*/_react.default.createElement(_ConversationDividerActivity.default, {
|
|
136
145
|
dividerActivityAriaLabel: conversationDividerLabel
|
|
137
146
|
});
|
|
138
147
|
}
|
|
@@ -156,4 +165,11 @@ const createActivityMiddleware = (renderMarkdown, systemMessageStyleProps, userM
|
|
|
156
165
|
}
|
|
157
166
|
return next(...args);
|
|
158
167
|
};
|
|
159
|
-
|
|
168
|
+
|
|
169
|
+
/** Clear module-level caches. Call on conversation end / chat close. */
|
|
170
|
+
exports.createActivityMiddleware = createActivityMiddleware;
|
|
171
|
+
const resetActivityMiddlewareCache = () => {
|
|
172
|
+
loggedSystemMessages.length = 0;
|
|
173
|
+
lastRenderedAt = 0;
|
|
174
|
+
};
|
|
175
|
+
exports.resetActivityMiddlewareCache = resetActivityMiddlewareCache;
|