@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
|
@@ -14,20 +14,14 @@ var _SendingTimestamp = require("./timestamps/SendingTimestamp");
|
|
|
14
14
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
15
15
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any, react/display-name, @typescript-eslint/no-unused-vars
|
|
16
16
|
const activityStatusMiddleware = () => next => args => {
|
|
17
|
-
const
|
|
18
|
-
activity
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
},
|
|
26
|
-
timestamp
|
|
27
|
-
},
|
|
28
|
-
sendState,
|
|
29
|
-
sameTimestampGroup
|
|
30
|
-
} = args;
|
|
17
|
+
const _args$activity = args.activity,
|
|
18
|
+
tags = _args$activity.channelData.tags,
|
|
19
|
+
_args$activity$from = _args$activity.from,
|
|
20
|
+
name = _args$activity$from.name,
|
|
21
|
+
role = _args$activity$from.role,
|
|
22
|
+
timestamp = _args$activity.timestamp,
|
|
23
|
+
sendState = args.sendState,
|
|
24
|
+
sameTimestampGroup = args.sameTimestampGroup;
|
|
31
25
|
const current_tags = tags,
|
|
32
26
|
current_name = name,
|
|
33
27
|
current_role = role,
|
|
@@ -39,14 +33,9 @@ const activityStatusMiddleware = () => next => args => {
|
|
|
39
33
|
});
|
|
40
34
|
}
|
|
41
35
|
if (args[_Constants.WebChatMiddlewareConstants.nextVisibleActivity]) {
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
name
|
|
46
|
-
},
|
|
47
|
-
timestamp
|
|
48
|
-
}
|
|
49
|
-
} = args;
|
|
36
|
+
const _args$nextVisibleActi = args.nextVisibleActivity,
|
|
37
|
+
name = _args$nextVisibleActi.from.name,
|
|
38
|
+
timestamp = _args$nextVisibleActi.timestamp;
|
|
50
39
|
|
|
51
40
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
52
41
|
const next_name = name,
|
|
@@ -72,7 +61,7 @@ const activityStatusMiddleware = () => next => args => {
|
|
|
72
61
|
name: current_name
|
|
73
62
|
}))
|
|
74
63
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
75
|
-
|
|
64
|
+
;
|
|
76
65
|
}
|
|
77
66
|
};
|
|
78
67
|
|
|
@@ -7,6 +7,7 @@ exports.createAttachmentMiddleware = void 0;
|
|
|
7
7
|
var _Constants = require("../../../../../common/Constants");
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
9
|
var _FileAttachmentIconManager = require("../../../common/utils/FileAttachmentIconManager");
|
|
10
|
+
var _AdaptiveCardAccessibilityWrapper = _interopRequireDefault(require("./attachments/AdaptiveCardAccessibilityWrapper"));
|
|
10
11
|
var _Attachment = _interopRequireDefault(require("./attachments/Attachment"));
|
|
11
12
|
var _TelemetryConstants = require("../../../../../common/telemetry/TelemetryConstants");
|
|
12
13
|
var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
|
|
@@ -21,23 +22,24 @@ var _defaultAttachmentProps = require("../../../common/defaultProps/defaultAttac
|
|
|
21
22
|
var _defaultMiddlewareLocalizedTexts = require("../../../common/defaultProps/defaultMiddlewareLocalizedTexts");
|
|
22
23
|
var _ = require("../../../../..");
|
|
23
24
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
24
|
-
|
|
25
|
-
|
|
25
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
26
|
+
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."); }
|
|
27
|
+
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; } }
|
|
28
|
+
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; }
|
|
29
|
+
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; } }
|
|
30
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } /* eslint-disable @typescript-eslint/no-explicit-any */ /******
|
|
26
31
|
* AttachmentMiddleware
|
|
27
32
|
*
|
|
28
33
|
* Handles attachment downloading.
|
|
29
34
|
******/
|
|
30
|
-
|
|
31
35
|
/**
|
|
32
36
|
* Patch card with different attachment data.
|
|
33
37
|
* @param card
|
|
34
38
|
* @param newAttachment
|
|
35
39
|
*/
|
|
36
40
|
const patchAttachment = (card, newAttachment) => {
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
attachment
|
|
40
|
-
} = card;
|
|
41
|
+
const activity = card.activity,
|
|
42
|
+
attachment = card.attachment;
|
|
41
43
|
const patchedAttachment = Object.assign({}, attachment);
|
|
42
44
|
patchedAttachment.contentType = newAttachment.contentType;
|
|
43
45
|
patchedAttachment.thumbnailUrl = newAttachment.thumbnailUrl;
|
|
@@ -68,16 +70,12 @@ const createAttachmentMiddleware = enableInlinePlaying => {
|
|
|
68
70
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
69
71
|
args[_key] = arguments[_key];
|
|
70
72
|
}
|
|
71
|
-
const
|
|
73
|
+
const card = args[0];
|
|
72
74
|
if (!(card !== null && card !== void 0 && card.activity)) {
|
|
73
75
|
return next(...args);
|
|
74
76
|
}
|
|
75
|
-
const
|
|
76
|
-
|
|
77
|
-
attachments
|
|
78
|
-
},
|
|
79
|
-
attachment
|
|
80
|
-
} = card;
|
|
77
|
+
const attachments = card.activity.attachments,
|
|
78
|
+
attachment = card.attachment;
|
|
81
79
|
// No attachment
|
|
82
80
|
if (!attachments || !attachments.length || !attachment) {
|
|
83
81
|
return next(...args);
|
|
@@ -85,18 +83,16 @@ const createAttachmentMiddleware = enableInlinePlaying => {
|
|
|
85
83
|
|
|
86
84
|
// Check for Adaptive cards
|
|
87
85
|
// eslint-disable-next-line prefer-const
|
|
88
|
-
let {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
content
|
|
93
|
-
contentType
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
type: ""
|
|
99
|
-
};
|
|
86
|
+
let _ref = attachment || {
|
|
87
|
+
content: "",
|
|
88
|
+
contentType: ""
|
|
89
|
+
},
|
|
90
|
+
content = _ref.content,
|
|
91
|
+
contentType = _ref.contentType;
|
|
92
|
+
let _ref2 = content || {
|
|
93
|
+
type: ""
|
|
94
|
+
},
|
|
95
|
+
type = _ref2.type;
|
|
100
96
|
if (!type && content && _Constants.Constants.supportedAdaptiveCardContentTypes.indexOf(contentType) >= 0) {
|
|
101
97
|
try {
|
|
102
98
|
content = JSON.parse(content);
|
|
@@ -113,14 +109,16 @@ const createAttachmentMiddleware = enableInlinePlaying => {
|
|
|
113
109
|
});
|
|
114
110
|
}
|
|
115
111
|
}
|
|
116
|
-
const
|
|
112
|
+
const _useChatContextStore = (0, _.useChatContextStore)(),
|
|
113
|
+
_useChatContextStore2 = _slicedToArray(_useChatContextStore, 1),
|
|
114
|
+
state = _useChatContextStore2[0];
|
|
117
115
|
const attachmentId = ((_state$domainStates$r = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r === void 0 || (_state$domainStates$r = _state$domainStates$r.attachmentProps) === null || _state$domainStates$r === void 0 ? void 0 : _state$domainStates$r.adaptiveCardAttachmentId) ?? _defaultAttachmentProps.defaultAttachmentProps.adaptiveCardAttachmentId;
|
|
118
116
|
const atttachmentAdaptiveCardStyles = {
|
|
119
117
|
..._defaultAtttachmentAdaptiveCardStyles.defaultAttachmentAdaptiveCardStyles,
|
|
120
118
|
...((_state$domainStates$r2 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r2 === void 0 ? void 0 : _state$domainStates$r2.attachmentAdaptiveCardStyles)
|
|
121
119
|
};
|
|
122
120
|
if (type === _Constants.WebChatMiddlewareConstants.adaptiveCard || _Constants.Constants.supportedAdaptiveCardContentTypes.indexOf(contentType) >= 0) {
|
|
123
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
121
|
+
return /*#__PURE__*/_react.default.createElement(_AdaptiveCardAccessibilityWrapper.default, {
|
|
124
122
|
id: attachmentId,
|
|
125
123
|
style: atttachmentAdaptiveCardStyles
|
|
126
124
|
}, next(...args));
|
|
@@ -137,13 +135,7 @@ const createAttachmentMiddleware = enableInlinePlaying => {
|
|
|
137
135
|
}
|
|
138
136
|
if (card.activity.channelData && card.activity.channelData.fileScan) {
|
|
139
137
|
const index = attachments.findIndex(attachment => attachment.name === card.attachment.name);
|
|
140
|
-
const
|
|
141
|
-
activity: {
|
|
142
|
-
channelData: {
|
|
143
|
-
fileScan
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
} = card;
|
|
138
|
+
const fileScan = card.activity.channelData.fileScan;
|
|
147
139
|
const scanResult = fileScan[index];
|
|
148
140
|
if ((scanResult === null || scanResult === void 0 ? void 0 : scanResult.status) === _FileScanStatus.default.INPROGRESS) {
|
|
149
141
|
return /*#__PURE__*/_react.default.createElement(_ScanInProgressAttachment.default, {
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
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); }
|
|
9
|
+
/******
|
|
10
|
+
* AdaptiveCardAccessibilityWrapper
|
|
11
|
+
*
|
|
12
|
+
* The `adaptivecards` renderer does not set `aria-setsize` or `aria-posinset`
|
|
13
|
+
* on radio buttons rendered by Input.ChoiceSet (style: "expanded"). Without
|
|
14
|
+
* these attributes, screen readers (TalkBack, VoiceOver, NVDA) cannot announce
|
|
15
|
+
* the correct option count (e.g. "1 of 2") and may say "1 of 1" for every item.
|
|
16
|
+
*
|
|
17
|
+
* This wrapper observes the rendered card via MutationObserver and patches each
|
|
18
|
+
* radio group with the correct ARIA attributes after the card finishes rendering.
|
|
19
|
+
******/
|
|
20
|
+
|
|
21
|
+
const AdaptiveCardAccessibilityWrapper = _ref => {
|
|
22
|
+
let id = _ref.id,
|
|
23
|
+
style = _ref.style,
|
|
24
|
+
children = _ref.children;
|
|
25
|
+
const containerRef = (0, _react.useRef)(null);
|
|
26
|
+
(0, _react.useEffect)(() => {
|
|
27
|
+
if (!containerRef.current) return;
|
|
28
|
+
const patchRadioGroups = () => {
|
|
29
|
+
const container = containerRef.current;
|
|
30
|
+
if (!container) return;
|
|
31
|
+
|
|
32
|
+
// dropdown-double-label: compact Input.ChoiceSet renders as a native
|
|
33
|
+
// <select> with both aria-labelledby and a sibling visible <label for>.
|
|
34
|
+
// Only remove aria-labelledby when it points solely at that same visible
|
|
35
|
+
// label; preserve composite labels that include required/error/context text.
|
|
36
|
+
const compactSelects = container.querySelectorAll(".ac-input-container select.ac-input.ac-multichoiceInput[aria-labelledby]");
|
|
37
|
+
compactSelects.forEach(select => {
|
|
38
|
+
const id = select.id;
|
|
39
|
+
if (!id) return;
|
|
40
|
+
const visibleLabel = container.querySelector(`label[for="${CSS.escape(id)}"]:not([aria-hidden='true'])`);
|
|
41
|
+
const labelledBy = (select.getAttribute("aria-labelledby") || "").trim().split(/\s+/);
|
|
42
|
+
if (visibleLabel !== null && visibleLabel !== void 0 && visibleLabel.id && labelledBy.length === 1 && labelledBy[0] === visibleLabel.id) {
|
|
43
|
+
select.removeAttribute("aria-labelledby");
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
// internal tracking: non-radio inputs (Input.Text including
|
|
48
|
+
// isMultiline=true which renders as <textarea>, Input.Date,
|
|
49
|
+
// Input.Number, Input.Toggle, Input.ChoiceSet multi-select
|
|
50
|
+
// checkbox) rendered by adaptivecards can have THREE accessible-
|
|
51
|
+
// name sources resolving to the same string: a visible
|
|
52
|
+
// <label for>, aria-label, AND aria-labelledby. TalkBack walks
|
|
53
|
+
// each accessibility node independently and reads the duplicated
|
|
54
|
+
// name. When a visible <label for> exists and names the control,
|
|
55
|
+
// strip the redundant aria-label / aria-labelledby on the input
|
|
56
|
+
// so only one announceable source remains.
|
|
57
|
+
const labelledInputs = container.querySelectorAll(".ac-input-container input.ac-input[id]:not([type='radio']), .ac-input-container textarea.ac-input[id]");
|
|
58
|
+
labelledInputs.forEach(input => {
|
|
59
|
+
const id = input.id;
|
|
60
|
+
if (!id) return;
|
|
61
|
+
const visibleLabel = container.querySelector(`label[for="${CSS.escape(id)}"]:not([aria-hidden='true'])`);
|
|
62
|
+
if (!visibleLabel) return;
|
|
63
|
+
const labelText = (visibleLabel.textContent || "").trim();
|
|
64
|
+
if (!labelText) return;
|
|
65
|
+
const ariaLabel = input.getAttribute("aria-label");
|
|
66
|
+
if (ariaLabel && ariaLabel.trim() === labelText) {
|
|
67
|
+
input.removeAttribute("aria-label");
|
|
68
|
+
}
|
|
69
|
+
const labelledBy = (input.getAttribute("aria-labelledby") || "").trim();
|
|
70
|
+
if (labelledBy) {
|
|
71
|
+
const ids = labelledBy.split(/\s+/);
|
|
72
|
+
const resolved = ids.map(rid => {
|
|
73
|
+
var _document$getElementB;
|
|
74
|
+
return (((_document$getElementB = document.getElementById(rid)) === null || _document$getElementB === void 0 ? void 0 : _document$getElementB.textContent) || "").trim();
|
|
75
|
+
}).filter(Boolean).join(" ");
|
|
76
|
+
if (resolved === labelText) {
|
|
77
|
+
input.removeAttribute("aria-labelledby");
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
// action-button-toggle / login-button-toggle: submit/login action buttons can be
|
|
83
|
+
// rendered with toggle-only ARIA that causes screen readers to announce them as
|
|
84
|
+
// switches instead of plain push buttons. Preserve Action.ToggleVisibility buttons,
|
|
85
|
+
// which own aria-controls and legitimately expose a pressed state.
|
|
86
|
+
const actionButtons = container.querySelectorAll(".ac-actionSet button.ac-pushButton:not([aria-controls])");
|
|
87
|
+
actionButtons.forEach(btn => {
|
|
88
|
+
if (btn.hasAttribute("aria-pressed")) {
|
|
89
|
+
btn.removeAttribute("aria-pressed");
|
|
90
|
+
}
|
|
91
|
+
const role = btn.getAttribute("role");
|
|
92
|
+
if (role === "switch") {
|
|
93
|
+
btn.removeAttribute("role");
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
// Find all radio inputs inside the adaptive card
|
|
98
|
+
const radios = container.querySelectorAll("input[type='radio']");
|
|
99
|
+
if (radios.length === 0) return;
|
|
100
|
+
|
|
101
|
+
// Group radios by their name attribute (each ChoiceSet has a unique name)
|
|
102
|
+
const groups = new Map();
|
|
103
|
+
radios.forEach(radio => {
|
|
104
|
+
var _groups$get;
|
|
105
|
+
const name = radio.getAttribute("name") || "__default";
|
|
106
|
+
if (!groups.has(name)) {
|
|
107
|
+
groups.set(name, []);
|
|
108
|
+
}
|
|
109
|
+
(_groups$get = groups.get(name)) === null || _groups$get === void 0 || _groups$get.push(radio);
|
|
110
|
+
});
|
|
111
|
+
groups.forEach(radioInputs => {
|
|
112
|
+
const groupSize = radioInputs.length;
|
|
113
|
+
radioInputs.forEach((radio, index) => {
|
|
114
|
+
radio.setAttribute("aria-setsize", String(groupSize));
|
|
115
|
+
radio.setAttribute("aria-posinset", String(index + 1));
|
|
116
|
+
|
|
117
|
+
// Ensure the parent container has radiogroup role
|
|
118
|
+
const parent = radio.closest("[role='radiogroup']") || radio.closest(".ac-input-container");
|
|
119
|
+
if (parent && !parent.getAttribute("role")) {
|
|
120
|
+
parent.setAttribute("role", "radiogroup");
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// The adaptive card renders each choice as:
|
|
124
|
+
// <div style="display:flex"> ← flex wrapper
|
|
125
|
+
// <input type="radio">
|
|
126
|
+
// <div style="width:6px"></div> ← spacer
|
|
127
|
+
// <label><div><p>Text</p></div></label>
|
|
128
|
+
// </div>
|
|
129
|
+
//
|
|
130
|
+
// TalkBack focuses on the <label> text node (just "Standard")
|
|
131
|
+
// instead of the <input>, so it never announces "radio button" or count.
|
|
132
|
+
//
|
|
133
|
+
// Fix: hide the label and spacer from the accessibility tree so TalkBack
|
|
134
|
+
// lands directly on the <input> which already has aria-label,
|
|
135
|
+
// aria-setsize and aria-posinset. The input's aria-labelledby still
|
|
136
|
+
// resolves the accessible name from the hidden label per ARIA spec.
|
|
137
|
+
const flexWrapper = radio.parentElement;
|
|
138
|
+
if (flexWrapper) {
|
|
139
|
+
var _label$textContent;
|
|
140
|
+
// Hide label sibling — only set if not already applied to
|
|
141
|
+
// avoid re-triggering the attributeFilter observer in a loop
|
|
142
|
+
const label = flexWrapper.querySelector("label");
|
|
143
|
+
if (label && label.getAttribute("aria-hidden") !== "true") {
|
|
144
|
+
label.setAttribute("aria-hidden", "true");
|
|
145
|
+
}
|
|
146
|
+
// Hide spacer siblings (any non-input, non-label divs)
|
|
147
|
+
Array.from(flexWrapper.children).forEach(child => {
|
|
148
|
+
const tag = child.tagName.toLowerCase();
|
|
149
|
+
if (tag !== "input" && tag !== "label" && child.getAttribute("aria-hidden") !== "true") {
|
|
150
|
+
child.setAttribute("aria-hidden", "true");
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
// TalkBack reads content-desc from the Android accessibility node,
|
|
155
|
+
// which Chrome populates from aria-label. However, aria-labelledby
|
|
156
|
+
// (set by the adaptive card renderer) takes precedence over aria-label.
|
|
157
|
+
// Since we hide the label (aria-hidden=true), Chrome can no longer
|
|
158
|
+
// resolve aria-labelledby and returns empty content-desc.
|
|
159
|
+
//
|
|
160
|
+
// Fix: remove aria-labelledby so Chrome falls back to aria-label,
|
|
161
|
+
// then encode the position count into aria-label so TalkBack announces
|
|
162
|
+
// e.g. "Standard, 1 of 2, radio button, not checked".
|
|
163
|
+
if (radio.hasAttribute("aria-labelledby")) {
|
|
164
|
+
radio.removeAttribute("aria-labelledby");
|
|
165
|
+
}
|
|
166
|
+
const labelText = (label === null || label === void 0 || (_label$textContent = label.textContent) === null || _label$textContent === void 0 ? void 0 : _label$textContent.trim()) || radio.getAttribute("aria-label") || "";
|
|
167
|
+
const expectedLabel = `${labelText}, ${index + 1} of ${groupSize}`;
|
|
168
|
+
if (radio.getAttribute("aria-label") !== expectedLabel) {
|
|
169
|
+
radio.setAttribute("aria-label", expectedLabel);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
});
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
// Use MutationObserver to patch after WebChat finishes rendering the card.
|
|
177
|
+
// Also watch attribute changes on aria-hidden so we can re-apply if React
|
|
178
|
+
// reconciliation removes it from labels.
|
|
179
|
+
const observer = new MutationObserver(() => {
|
|
180
|
+
patchRadioGroups();
|
|
181
|
+
});
|
|
182
|
+
observer.observe(containerRef.current, {
|
|
183
|
+
childList: true,
|
|
184
|
+
subtree: true,
|
|
185
|
+
attributes: true,
|
|
186
|
+
attributeFilter: ["aria-hidden"]
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
// Also run immediately in case the card is already rendered
|
|
190
|
+
patchRadioGroups();
|
|
191
|
+
return () => observer.disconnect();
|
|
192
|
+
}, []);
|
|
193
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
194
|
+
id: id,
|
|
195
|
+
style: style,
|
|
196
|
+
ref: containerRef
|
|
197
|
+
}, children);
|
|
198
|
+
};
|
|
199
|
+
var _default = exports.default = AdaptiveCardAccessibilityWrapper;
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _react = _interopRequireDefault(require("react"));
|
|
8
|
-
var
|
|
8
|
+
var _useChatContextStore3 = _interopRequireDefault(require("../../../../../../hooks/useChatContextStore"));
|
|
9
9
|
var _defaultAttachmentProps = require("../../../../common/defaultProps/defaultAttachmentProps");
|
|
10
10
|
var _defaultAttachmentContentStyles = require("../defaultStyles/defaultAttachmentContentStyles");
|
|
11
11
|
var _defaultAttachmentDividerStyles = require("../defaultStyles/defaultAttachmentDividerStyles");
|
|
@@ -17,16 +17,22 @@ var _defaultAtttachmentStyles = require("../defaultStyles/defaultAtttachmentStyl
|
|
|
17
17
|
var _AttachmentContent = _interopRequireDefault(require("./AttachmentContent"));
|
|
18
18
|
var _AttachmentIcon = _interopRequireDefault(require("./AttachmentIcon"));
|
|
19
19
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
20
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
21
|
+
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."); }
|
|
22
|
+
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; } }
|
|
23
|
+
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; }
|
|
24
|
+
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; } }
|
|
25
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
20
26
|
const Attachment = props => {
|
|
21
27
|
var _state$domainStates$r, _state$domainStates$r2, _state$domainStates$r3, _state$domainStates$r4, _state$domainStates$r5, _state$domainStates$r6, _state$domainStates$r7, _state$domainStates$r8;
|
|
22
28
|
// eslint-disable-line @typescript-eslint/no-explicit-any
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
const iconData = props.iconData,
|
|
30
|
+
imageCard = props.imageCard,
|
|
31
|
+
textCard = props.textCard,
|
|
32
|
+
renderer = props.renderer;
|
|
33
|
+
const _useChatContextStore = (0, _useChatContextStore3.default)(),
|
|
34
|
+
_useChatContextStore2 = _slicedToArray(_useChatContextStore, 1),
|
|
35
|
+
state = _useChatContextStore2[0];
|
|
30
36
|
const attachmentId = ((_state$domainStates$r = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r === void 0 || (_state$domainStates$r = _state$domainStates$r.attachmentProps) === null || _state$domainStates$r === void 0 ? void 0 : _state$domainStates$r.webChatAttachmentId) ?? _defaultAttachmentProps.defaultAttachmentProps.webChatAttachmentId;
|
|
31
37
|
const attachmentDividerStyles = {
|
|
32
38
|
..._defaultAttachmentDividerStyles.defaultAttachmentDividerStyles,
|
|
@@ -44,28 +50,36 @@ const Attachment = props => {
|
|
|
44
50
|
..._defaultAttachmentSizeStyles.defaultAttachmentSizeStyles,
|
|
45
51
|
...((_state$domainStates$r5 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r5 === void 0 ? void 0 : _state$domainStates$r5.attachmentSizeStyles)
|
|
46
52
|
}).map(_ref => {
|
|
47
|
-
let
|
|
53
|
+
let _ref2 = _slicedToArray(_ref, 2),
|
|
54
|
+
k = _ref2[0],
|
|
55
|
+
v = _ref2[1];
|
|
48
56
|
return `${k.replace(/[A-Z]/g, match => `-${match.toLowerCase()}`)}:${v}`;
|
|
49
57
|
}).join(";");
|
|
50
58
|
const attachmentContentStylesString = Object.entries({
|
|
51
59
|
..._defaultAttachmentContentStyles.defaultAttachmentContentStyles,
|
|
52
60
|
...((_state$domainStates$r6 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r6 === void 0 ? void 0 : _state$domainStates$r6.attachmentContentStyles)
|
|
53
|
-
}).map(
|
|
54
|
-
let
|
|
61
|
+
}).map(_ref3 => {
|
|
62
|
+
let _ref4 = _slicedToArray(_ref3, 2),
|
|
63
|
+
k = _ref4[0],
|
|
64
|
+
v = _ref4[1];
|
|
55
65
|
return `${k.replace(/[A-Z]/g, match => `-${match.toLowerCase()}`)}:${v}`;
|
|
56
66
|
}).join(";");
|
|
57
67
|
const attachmentFileNameStylesString = Object.entries({
|
|
58
68
|
..._defaultAttachmentFileNameStyles.defaultAttachmentFileNameStyles,
|
|
59
69
|
...((_state$domainStates$r7 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r7 === void 0 ? void 0 : _state$domainStates$r7.attachmentFileNameStyles)
|
|
60
|
-
}).map(
|
|
61
|
-
let
|
|
70
|
+
}).map(_ref5 => {
|
|
71
|
+
let _ref6 = _slicedToArray(_ref5, 2),
|
|
72
|
+
k = _ref6[0],
|
|
73
|
+
v = _ref6[1];
|
|
62
74
|
return `${k.replace(/[A-Z]/g, match => `-${match.toLowerCase()}`)}:${v}`;
|
|
63
75
|
}).join(";");
|
|
64
76
|
const attachmentDownloadIconStylesString = Object.entries({
|
|
65
77
|
..._defaultAttachmentDownloadIconStyles.defaultAttachmentDownloadIconStyles,
|
|
66
78
|
...((_state$domainStates$r8 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r8 === void 0 ? void 0 : _state$domainStates$r8.attachmentDownloadIconStyles)
|
|
67
|
-
}).map(
|
|
68
|
-
let
|
|
79
|
+
}).map(_ref7 => {
|
|
80
|
+
let _ref8 = _slicedToArray(_ref7, 2),
|
|
81
|
+
k = _ref8[0],
|
|
82
|
+
v = _ref8[1];
|
|
69
83
|
return `${k.replace(/[A-Z]/g, match => `-${match.toLowerCase()}`)}:${v}`;
|
|
70
84
|
}).join(";");
|
|
71
85
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("style", null, `
|
|
@@ -22,18 +22,11 @@ const createAvatarMiddleware = (avatarStyleProps, avatarTextStyleProps) => () =>
|
|
|
22
22
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
23
23
|
args[_key] = arguments[_key];
|
|
24
24
|
}
|
|
25
|
-
const
|
|
26
|
-
const
|
|
27
|
-
activity
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
},
|
|
31
|
-
from: {
|
|
32
|
-
name
|
|
33
|
-
}
|
|
34
|
-
},
|
|
35
|
-
fromUser
|
|
36
|
-
} = params;
|
|
25
|
+
const params = args[0];
|
|
26
|
+
const _params$activity = params.activity,
|
|
27
|
+
tags = _params$activity.channelData.tags,
|
|
28
|
+
name = _params$activity.from.name,
|
|
29
|
+
fromUser = params.fromUser;
|
|
37
30
|
if (fromUser !== false || tags && tags.includes(_Constants.Constants.systemMessageTag)) {
|
|
38
31
|
return false;
|
|
39
32
|
}
|
|
@@ -18,7 +18,7 @@ const createCardActionMiddleware = botMagicCodeConfig => {
|
|
|
18
18
|
args[_key] = arguments[_key];
|
|
19
19
|
}
|
|
20
20
|
// eslint-disable-line @typescript-eslint/no-explicit-any
|
|
21
|
-
const
|
|
21
|
+
const card = args[0];
|
|
22
22
|
if (card.cardAction && validCardActionTypes.indexOf(card.cardAction.type) >= 0 && card.cardAction.value) {
|
|
23
23
|
// Override signin url only if fwdUrl is valid & feature is enabled
|
|
24
24
|
if ((botMagicCodeConfig === null || botMagicCodeConfig === void 0 ? void 0 : botMagicCodeConfig.disabled) === true && botMagicCodeConfig !== null && botMagicCodeConfig !== void 0 && botMagicCodeConfig.fwdUrl) {
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.defaultAvatarTextStyles = void 0;
|
|
7
7
|
const defaultAvatarTextStyles = exports.defaultAvatarTextStyles = {
|
|
8
8
|
margin: "0",
|
|
9
|
-
fontFamily: "'Segoe UI',
|
|
9
|
+
fontFamily: "'Segoe UI', Arial, sans-serif",
|
|
10
10
|
fontWeight: 600,
|
|
11
11
|
fontSize: "13px",
|
|
12
12
|
lineHeight: "18px",
|
|
@@ -11,7 +11,12 @@ const defaultSystemMessageStyles = exports.defaultSystemMessageStyles = {
|
|
|
11
11
|
fontSize: "12px",
|
|
12
12
|
borderRadius: 0,
|
|
13
13
|
minHeight: "auto",
|
|
14
|
-
fontFamily: "'Segoe UI',
|
|
15
|
-
lineHeight: "
|
|
16
|
-
padding: "0px 10px 0 10px"
|
|
14
|
+
fontFamily: "'Segoe UI', Arial, sans-serif",
|
|
15
|
+
lineHeight: "1.4",
|
|
16
|
+
padding: "0px 10px 0 10px",
|
|
17
|
+
// iOS Safari: position underlines below all glyphs so they do not
|
|
18
|
+
// intersect numbers. Also enforce lining figures for consistent baselines.
|
|
19
|
+
WebkitTextUnderlinePosition: "under",
|
|
20
|
+
textUnderlinePosition: "under",
|
|
21
|
+
fontVariantNumeric: "lining-nums"
|
|
17
22
|
};
|
|
@@ -8,5 +8,12 @@ var _defaultTimestampContentStyles = require("./defaultTimestampContentStyles");
|
|
|
8
8
|
const defaultTimestampRetryStyles = exports.defaultTimestampRetryStyles = {
|
|
9
9
|
..._defaultTimestampContentStyles.defaultTimestampContentStyles,
|
|
10
10
|
color: "#0063B1",
|
|
11
|
-
cursor: "pointer"
|
|
11
|
+
cursor: "pointer",
|
|
12
|
+
border: "none",
|
|
13
|
+
padding: 0,
|
|
14
|
+
margin: 0,
|
|
15
|
+
textDecoration: "none",
|
|
16
|
+
display: "inline",
|
|
17
|
+
fontWeight: "inherit",
|
|
18
|
+
textAlign: "inherit"
|
|
12
19
|
};
|
|
@@ -32,15 +32,12 @@ function bin(items, grouping) {
|
|
|
32
32
|
|
|
33
33
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
|
|
34
34
|
const groupActivitiesMiddleware = () => next => args => {
|
|
35
|
-
const
|
|
36
|
-
activities
|
|
37
|
-
} = args;
|
|
35
|
+
const activities = args.activities;
|
|
38
36
|
if (activities != null && activities.length > 0) {
|
|
39
|
-
const {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
});
|
|
37
|
+
const _next = next({
|
|
38
|
+
activities
|
|
39
|
+
}),
|
|
40
|
+
status = _next.status;
|
|
44
41
|
return {
|
|
45
42
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
46
43
|
sender: bin(activities, (x, y) => {
|
|
@@ -4,14 +4,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.createMessageSequenceIdOverrideMiddleware = void 0;
|
|
7
|
+
var _IWebChatAction = require("../../../interfaces/IWebChatAction");
|
|
7
8
|
var _WebChatActionType = require("../../enums/WebChatActionType");
|
|
8
9
|
var _Constants = require("../../../../../common/Constants");
|
|
9
|
-
// eslint-disable-next-line @typescript-eslint/no-
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
10
11
|
const createMessageSequenceIdOverrideMiddleware = _ref => {
|
|
11
|
-
let
|
|
12
|
-
dispatch
|
|
13
|
-
} = _ref;
|
|
12
|
+
let dispatch = _ref.dispatch;
|
|
14
13
|
return next => action => {
|
|
14
|
+
if (!(0, _IWebChatAction.isWebChatAction)(action)) {
|
|
15
|
+
return next(action);
|
|
16
|
+
}
|
|
15
17
|
if (isApplicable(action)) {
|
|
16
18
|
return next(overrideSequenceIdWithOriginalMessageId(action));
|
|
17
19
|
}
|
|
@@ -4,14 +4,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.createMessageTimeStampMiddleware = void 0;
|
|
7
|
+
var _IWebChatAction = require("../../../interfaces/IWebChatAction");
|
|
7
8
|
var _WebChatActionType = require("../../enums/WebChatActionType");
|
|
8
9
|
var _Constants = require("../../../../../common/Constants");
|
|
9
|
-
// eslint-disable-next-line @typescript-eslint/no-
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
10
11
|
const createMessageTimeStampMiddleware = _ref => {
|
|
11
|
-
let
|
|
12
|
-
dispatch
|
|
13
|
-
} = _ref;
|
|
12
|
+
let dispatch = _ref.dispatch;
|
|
14
13
|
return next => action => {
|
|
14
|
+
if (!(0, _IWebChatAction.isWebChatAction)(action)) {
|
|
15
|
+
return next(action);
|
|
16
|
+
}
|
|
15
17
|
if (isApplicable(action)) {
|
|
16
18
|
return next(evaluateTagsAndOverrideTimeStamp(action));
|
|
17
19
|
}
|