@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.
Files changed (251) hide show
  1. package/README.md +52 -5
  2. package/lib/cjs/common/Constants.js +5 -0
  3. package/lib/cjs/common/facades/FacadeChatSDK.js +234 -9
  4. package/lib/cjs/common/telemetry/TelemetryConstants.js +19 -0
  5. package/lib/cjs/common/telemetry/TelemetryManager.js +6 -1
  6. package/lib/cjs/common/telemetry/loggers/appInsightsLogger.js +2 -3
  7. package/lib/cjs/common/telemetry/sanitizeSasInPayload.js +91 -0
  8. package/lib/cjs/common/utils.js +93 -17
  9. package/lib/cjs/components/callingcontainerstateful/CallingContainerStateful.js +16 -6
  10. package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +20 -10
  11. package/lib/cjs/components/citationpanestateful/CitationDim.js +2 -3
  12. package/lib/cjs/components/citationpanestateful/CitationPaneStateful.js +27 -5
  13. package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +23 -3
  14. package/lib/cjs/components/dimlayer/DimLayer.js +1 -3
  15. package/lib/cjs/components/draggable/DraggableChatWidget.js +35 -15
  16. package/lib/cjs/components/draggable/DraggableEventEmitter.js +10 -1
  17. package/lib/cjs/components/draggable/DraggableEventReceiver.js +1 -3
  18. package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +54 -17
  19. package/lib/cjs/components/errorboundary/ErrorBoundary.js +4 -12
  20. package/lib/cjs/components/footerstateful/FooterStateful.js +18 -9
  21. package/lib/cjs/components/footerstateful/audionotificationstateful/AudioNotificationStateful.js +2 -4
  22. package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +4 -6
  23. package/lib/cjs/components/headerstateful/HeaderStateful.js +24 -12
  24. package/lib/cjs/components/livechatwidget/LiveChatWidget.js +27 -4
  25. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/HiddenAdaptiveCardActivitySubscriber.js +5 -11
  26. package/lib/cjs/components/livechatwidget/common/ChatWidgetEvents.js +1 -0
  27. package/lib/cjs/components/livechatwidget/common/PersistentConversationHandler.js +11 -4
  28. package/lib/cjs/components/livechatwidget/common/authHelper.js +44 -4
  29. package/lib/cjs/components/livechatwidget/common/createMarkdown.js +98 -5
  30. package/lib/cjs/components/livechatwidget/common/endChat.js +12 -9
  31. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +182 -1
  32. package/lib/cjs/components/livechatwidget/common/recoveryEligibilityTelemetry.js +60 -0
  33. package/lib/cjs/components/livechatwidget/common/startChat.js +31 -14
  34. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +160 -21
  35. package/lib/cjs/components/loadingpanestateful/LoadingPaneStateful.js +16 -11
  36. package/lib/cjs/components/notificationpanestateful/NotificationPaneStateful.js +19 -12
  37. package/lib/cjs/components/ooohpanestateful/OOOHPaneStateful.js +13 -6
  38. package/lib/cjs/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +28 -5
  39. package/lib/cjs/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +12 -5
  40. package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +105 -11
  41. package/lib/cjs/components/prechatsurveypanestateful/common/defaultStyles/defaultGeneralPreChatSurveyPaneStyleProps.js +12 -1
  42. package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +17 -7
  43. package/lib/cjs/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +16 -7
  44. package/lib/cjs/components/startchaterrorpanestateful/StartChatErrorPaneStateful.js +10 -2
  45. package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +154 -29
  46. package/lib/cjs/components/webchatcontainerstateful/common/DesignerChatAdapter.js +10 -0
  47. package/lib/cjs/components/webchatcontainerstateful/common/activityConverters/convertPersistentChatHistoryMessageToActivity.js +115 -10
  48. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts.js +3 -0
  49. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +2 -1
  50. package/lib/cjs/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +3 -1
  51. package/lib/cjs/components/webchatcontainerstateful/common/defaultStyles/defaultWebChatStyles.js +2 -2
  52. package/lib/cjs/components/webchatcontainerstateful/common/utils/chatAdapterUtils.js +3 -1
  53. package/lib/cjs/components/webchatcontainerstateful/common/utils/citationA11y.js +195 -0
  54. package/lib/cjs/components/webchatcontainerstateful/interfaces/IWebChatAction.js +17 -1
  55. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/WebChatEventSubscribers.js +27 -4
  56. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsEgressMiddleware.js +1 -3
  57. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsIngressMiddleware.js +1 -3
  58. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activities/LazyLoadActivity.js +180 -190
  59. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activities/LoadInlineBannerActivity.js +3 -5
  60. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +22 -6
  61. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +12 -23
  62. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +27 -35
  63. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/AdaptiveCardAccessibilityWrapper.js +199 -0
  64. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/Attachment.js +29 -15
  65. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.js +5 -12
  66. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +1 -1
  67. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultAvatarTextStyles.js +1 -1
  68. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageStyles.js +8 -3
  69. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampRetryStyles.js +8 -1
  70. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware.js +5 -8
  71. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageSequenceIdOverrideMiddleware.js +6 -4
  72. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +6 -4
  73. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +14 -12
  74. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/HistoryMessageTimestamp.js +16 -14
  75. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +18 -30
  76. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +10 -2
  77. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/toastMiddleware.js +1 -3
  78. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +16 -12
  79. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +6 -6
  80. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentSentAnnouncementMiddleware.js +83 -0
  81. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +36 -8
  82. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/callActionMiddleware.js +5 -1
  83. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +10 -7
  84. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/citationsMiddleware.js +4 -0
  85. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +6 -4
  86. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/customEventMiddleware.js +5 -1
  87. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +7 -7
  88. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.js +10 -14
  89. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.js +6 -4
  90. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.js +13 -10
  91. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/localizedStringsBotInitialsMiddleware.js +57 -11
  92. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.js +6 -4
  93. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.js +25 -30
  94. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/queueOverflowHandlerMiddleware.js +10 -7
  95. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.js +6 -4
  96. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +55 -1
  97. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +2 -4
  98. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +5 -0
  99. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +17 -1
  100. package/lib/cjs/contexts/createReducer.js +15 -0
  101. package/lib/cjs/controller/componentController.js +13 -1
  102. package/lib/cjs/hooks/useWindowDimensions.js +13 -5
  103. package/lib/cjs/package.json +1 -0
  104. package/lib/cjs/plugins/createChatTranscript.js +3 -4
  105. package/lib/cjs/plugins/newMessageEventHandler.js +20 -3
  106. package/lib/esm/common/Constants.js +5 -0
  107. package/lib/esm/common/facades/FacadeChatSDK.js +235 -10
  108. package/lib/esm/common/telemetry/TelemetryConstants.js +19 -0
  109. package/lib/esm/common/telemetry/TelemetryManager.js +6 -1
  110. package/lib/esm/common/telemetry/loggers/appInsightsLogger.js +2 -3
  111. package/lib/esm/common/telemetry/sanitizeSasInPayload.js +84 -0
  112. package/lib/esm/common/utils.js +88 -14
  113. package/lib/esm/components/callingcontainerstateful/CallingContainerStateful.js +15 -5
  114. package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +19 -9
  115. package/lib/esm/components/citationpanestateful/CitationDim.js +2 -3
  116. package/lib/esm/components/citationpanestateful/CitationPaneStateful.js +26 -4
  117. package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +22 -2
  118. package/lib/esm/components/dimlayer/DimLayer.js +1 -3
  119. package/lib/esm/components/draggable/DraggableChatWidget.js +34 -14
  120. package/lib/esm/components/draggable/DraggableEventEmitter.js +10 -1
  121. package/lib/esm/components/draggable/DraggableEventReceiver.js +1 -3
  122. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +54 -17
  123. package/lib/esm/components/errorboundary/ErrorBoundary.js +4 -12
  124. package/lib/esm/components/footerstateful/FooterStateful.js +17 -8
  125. package/lib/esm/components/footerstateful/audionotificationstateful/AudioNotificationStateful.js +2 -4
  126. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +4 -6
  127. package/lib/esm/components/headerstateful/HeaderStateful.js +22 -10
  128. package/lib/esm/components/livechatwidget/LiveChatWidget.js +27 -4
  129. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/HiddenAdaptiveCardActivitySubscriber.js +5 -11
  130. package/lib/esm/components/livechatwidget/common/ChatWidgetEvents.js +1 -0
  131. package/lib/esm/components/livechatwidget/common/PersistentConversationHandler.js +11 -4
  132. package/lib/esm/components/livechatwidget/common/authHelper.js +44 -4
  133. package/lib/esm/components/livechatwidget/common/createMarkdown.js +98 -5
  134. package/lib/esm/components/livechatwidget/common/endChat.js +12 -9
  135. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +182 -1
  136. package/lib/esm/components/livechatwidget/common/recoveryEligibilityTelemetry.js +52 -0
  137. package/lib/esm/components/livechatwidget/common/startChat.js +31 -14
  138. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +159 -20
  139. package/lib/esm/components/loadingpanestateful/LoadingPaneStateful.js +14 -9
  140. package/lib/esm/components/notificationpanestateful/NotificationPaneStateful.js +17 -10
  141. package/lib/esm/components/ooohpanestateful/OOOHPaneStateful.js +12 -5
  142. package/lib/esm/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +28 -5
  143. package/lib/esm/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +11 -4
  144. package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +105 -11
  145. package/lib/esm/components/prechatsurveypanestateful/common/defaultStyles/defaultGeneralPreChatSurveyPaneStyleProps.js +12 -1
  146. package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +16 -6
  147. package/lib/esm/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +15 -6
  148. package/lib/esm/components/startchaterrorpanestateful/StartChatErrorPaneStateful.js +9 -1
  149. package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +154 -29
  150. package/lib/esm/components/webchatcontainerstateful/common/DesignerChatAdapter.js +10 -0
  151. package/lib/esm/components/webchatcontainerstateful/common/activityConverters/convertPersistentChatHistoryMessageToActivity.js +115 -10
  152. package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts.js +3 -0
  153. package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +2 -1
  154. package/lib/esm/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +3 -1
  155. package/lib/esm/components/webchatcontainerstateful/common/defaultStyles/defaultWebChatStyles.js +2 -2
  156. package/lib/esm/components/webchatcontainerstateful/common/utils/chatAdapterUtils.js +3 -1
  157. package/lib/esm/components/webchatcontainerstateful/common/utils/citationA11y.js +188 -0
  158. package/lib/esm/components/webchatcontainerstateful/interfaces/IWebChatAction.js +10 -1
  159. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/WebChatEventSubscribers.js +27 -4
  160. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsEgressMiddleware.js +1 -3
  161. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsIngressMiddleware.js +1 -3
  162. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activities/LazyLoadActivity.js +180 -190
  163. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activities/LoadInlineBannerActivity.js +3 -5
  164. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +19 -4
  165. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +12 -23
  166. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +27 -32
  167. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/AdaptiveCardAccessibilityWrapper.js +193 -0
  168. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/Attachment.js +28 -14
  169. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.js +5 -12
  170. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +1 -1
  171. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultAvatarTextStyles.js +1 -1
  172. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageStyles.js +8 -3
  173. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampRetryStyles.js +8 -1
  174. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware.js +5 -8
  175. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageSequenceIdOverrideMiddleware.js +6 -4
  176. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +6 -4
  177. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +13 -11
  178. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/HistoryMessageTimestamp.js +15 -13
  179. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +17 -27
  180. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +9 -1
  181. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/toastMiddleware.js +1 -3
  182. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +16 -10
  183. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +6 -6
  184. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentSentAnnouncementMiddleware.js +77 -0
  185. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +36 -8
  186. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/callActionMiddleware.js +5 -2
  187. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +10 -7
  188. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/citationsMiddleware.js +4 -0
  189. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +6 -4
  190. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/customEventMiddleware.js +5 -1
  191. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +7 -7
  192. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.js +10 -14
  193. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.js +6 -4
  194. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.js +13 -10
  195. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/localizedStringsBotInitialsMiddleware.js +57 -11
  196. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.js +6 -4
  197. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.js +25 -31
  198. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/queueOverflowHandlerMiddleware.js +10 -7
  199. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.js +6 -4
  200. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +55 -1
  201. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +2 -4
  202. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +5 -0
  203. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +17 -1
  204. package/lib/esm/contexts/createReducer.js +15 -0
  205. package/lib/esm/controller/componentController.js +13 -1
  206. package/lib/esm/hooks/useWindowDimensions.js +13 -5
  207. package/lib/esm/plugins/createChatTranscript.js +3 -4
  208. package/lib/esm/plugins/newMessageEventHandler.js +20 -3
  209. package/lib/types/common/Constants.d.ts +4 -0
  210. package/lib/types/common/facades/FacadeChatSDK.d.ts +29 -0
  211. package/lib/types/common/facades/types/IFacadeChatSDKInput.d.ts +3 -1
  212. package/lib/types/common/telemetry/TelemetryConstants.d.ts +15 -2
  213. package/lib/types/common/telemetry/sanitizeSasInPayload.d.ts +24 -0
  214. package/lib/types/common/utils.d.ts +3 -1
  215. package/lib/types/components/livechatwidget/common/ChatWidgetEvents.d.ts +2 -1
  216. package/lib/types/components/livechatwidget/common/authHelper.d.ts +9 -2
  217. package/lib/types/components/livechatwidget/common/recoveryEligibilityTelemetry.d.ts +17 -0
  218. package/lib/types/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.d.ts +6 -0
  219. package/lib/types/components/webchatcontainerstateful/common/utils/chatAdapterUtils.d.ts +1 -1
  220. package/lib/types/components/webchatcontainerstateful/common/utils/citationA11y.d.ts +1 -0
  221. package/lib/types/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.d.ts +1 -0
  222. package/lib/types/components/webchatcontainerstateful/interfaces/IWebChatAction.d.ts +16 -1
  223. package/lib/types/components/webchatcontainerstateful/interfaces/IWebChatContainerStatefulProps.d.ts +7 -0
  224. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activities/LazyLoadActivity.d.ts +14 -38
  225. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.d.ts +2 -0
  226. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/AdaptiveCardAccessibilityWrapper.d.ts +18 -0
  227. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageStyles.d.ts +3 -0
  228. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageSequenceIdOverrideMiddleware.d.ts +2 -4
  229. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.d.ts +2 -4
  230. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.d.ts +2 -4
  231. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentSentAnnouncementMiddleware.d.ts +10 -0
  232. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.d.ts +2 -4
  233. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/callActionMiddleware.d.ts +2 -2
  234. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.d.ts +2 -4
  235. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/citationsMiddleware.d.ts +2 -2
  236. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.d.ts +2 -4
  237. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/customEventMiddleware.d.ts +2 -2
  238. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.d.ts +2 -4
  239. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.d.ts +2 -4
  240. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.d.ts +2 -4
  241. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.d.ts +2 -4
  242. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/localizedStringsBotInitialsMiddleware.d.ts +2 -4
  243. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.d.ts +2 -4
  244. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.d.ts +2 -4
  245. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/queueOverflowHandlerMiddleware.d.ts +2 -2
  246. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.d.ts +2 -4
  247. package/lib/types/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.d.ts +7 -0
  248. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +1 -0
  249. package/lib/types/contexts/common/ILiveChatWidgetLocalizedTexts.d.ts +17 -0
  250. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +2 -1
  251. package/package.json +71 -57
@@ -34,6 +34,7 @@ export declare class FacadeChatSDK {
34
34
  private getAuthToken?;
35
35
  private sdkMocked;
36
36
  private disableReauthentication;
37
+ private pendingMidAuthUnauthenticatedState;
37
38
  isSDKMocked(): boolean;
38
39
  getChatSDK(): OmnichannelChatSDK;
39
40
  destroy(): void;
@@ -46,6 +47,34 @@ export declare class FacadeChatSDK {
46
47
  private setToken;
47
48
  private corroborateTokenIsSet;
48
49
  private tokenRing;
50
+ /**
51
+ * Sets unauthenticated state for mid-auth flow.
52
+ * Clears SDK internal state to prevent reconnection to previous authenticated session.
53
+ */
54
+ private setMidAuthUnauthenticatedState;
55
+ /** Clears authentication state in both FacadeChatSDK and underlying SDK */
56
+ private clearAuthState;
57
+ /**
58
+ * Migrates conversation from unauthenticated to authenticated via authenticateChat.
59
+ * Called after startChat() when user has a valid token but the backend conversation
60
+ * was started as unauthenticated.
61
+ */
62
+ private migrateConversationToAuthenticated;
63
+ /**
64
+ * Configures SDK auth state before startChat.
65
+ * CASE 1: Pending unauthenticated (no token) - sets deferInitialAuth=true
66
+ * CASE 2: Authenticated with valid token - sets SDK token and deferInitialAuth based on scenario
67
+ */
68
+ private configureMidAuthState;
69
+ /**
70
+ * CASE 1 handler: Returns true if reconnect params should be cleared (Auth -> Unauth transition)
71
+ */
72
+ private handlePendingUnauthenticatedState;
73
+ /**
74
+ * CASE 2 handler: Sets deferInitialAuth only for reconnects to unauthenticated sessions (need migration).
75
+ * For new chats or reconnects to authenticated sessions, SDK handles auth internally.
76
+ */
77
+ private handleAuthenticatedState;
49
78
  private validateAndExecuteCall;
50
79
  initialize(optionalParams?: InitializeOptionalParams): Promise<ChatConfig>;
51
80
  getChatReconnectContext(optionalParams?: ChatReconnectOptionalParams): Promise<ChatReconnectContext>;
@@ -5,7 +5,9 @@ export interface IFacadeChatSDKInput {
5
5
  chatConfig: ChatConfig;
6
6
  isAuthenticated: boolean;
7
7
  isSDKMocked: boolean;
8
- getAuthToken?: (authClientFunction?: string) => Promise<string | null>;
8
+ getAuthToken?: (authClientFunction?: string, options?: {
9
+ isMidAuthEnabled: boolean;
10
+ }) => Promise<string | null>;
9
11
  }
10
12
  export interface PingResponse {
11
13
  result: boolean;
@@ -57,7 +57,9 @@ export declare enum BroadcastEvent {
57
57
  OnWidgetError = "OnWidgetError",
58
58
  FMLTrackingCompletedAck = "FMLTrackingCompletedAck",
59
59
  FMLTrackingCompleted = "FMLTrackingCompleted",
60
- PersistentConversationReset = "PersistentConversationReset"
60
+ PersistentConversationReset = "PersistentConversationReset",
61
+ MidConversationAuthSucceeded = "MidConversationAuthSucceeded",// Emitted when mid-conversation auth succeeds (for reconnect support)
62
+ MidConversationAuthReset = "MidConversationAuthReset"
61
63
  }
62
64
  export declare enum TelemetryEvent {
63
65
  FetchPersistentChatHistoryFailed = "FetchPersistentChatHistoryFailed",
@@ -90,6 +92,10 @@ export declare enum TelemetryEvent {
90
92
  CallingSDKInitFailed = "CallingSDKInitFailed",
91
93
  CallingSDKLoadSuccess = "CallingSDKLoadSuccess",
92
94
  CallingSDKLoadFailed = "CallingSDKLoadFailed",
95
+ MidConversationAuthSucceeded = "MidConversationAuthSucceeded",
96
+ MidConversationAuthFailed = "MidConversationAuthFailed",
97
+ MidConversationAuthReset = "MidConversationAuthReset",
98
+ RecoveryEligibilityEvaluated = "RecoveryEligibilityEvaluated",
93
99
  GetConversationDetailsCallStarted = "GetConversationDetailsCallStarted",
94
100
  GetConversationDetailsCallFailed = "GetConversationDetailsCallFailed",
95
101
  EndChatSDKCallFailed = "EndChatSDKCallFailed",
@@ -179,6 +185,7 @@ export declare enum TelemetryEvent {
179
185
  QueueOverflowEvent = "QueueOverflowEvent",
180
186
  ProcessingHTMLTextMiddlewareFailed = "ProcessingHTMLTextMiddlewareFailed",
181
187
  ProcessingSanitizationMiddlewareFailed = "ProcessingSanitizationMiddlewareFailed",
188
+ HTMLSanitized = "HTMLSanitized",
182
189
  FormatTagsMiddlewareJSONStringifyFailed = "FormatTagsMiddlewareJSONStringifyFailed",
183
190
  AttachmentUploadValidatorMiddlewareFailed = "AttachmentUploadValidatorMiddlewareFailed",
184
191
  CitationMiddlewareFailed = "CitationMiddlewareFailed",
@@ -300,10 +307,16 @@ export declare enum TelemetryEvent {
300
307
  LCWLazyLoadNoMoreHistory = "LCWLazyLoadNoMoreHistory",
301
308
  LCWLazyLoadHistoryError = "LCWLazyLoadHistoryError",
302
309
  LCWLazyLoadDestroyed = "LCWLazyLoadDestroyed",
310
+ LCWLazyLoadTriggerFired = "LCWLazyLoadTriggerFired",
311
+ LCWLazyLoadBatchReceived = "LCWLazyLoadBatchReceived",
312
+ LCWLazyLoadInitialLoadComplete = "LCWLazyLoadInitialLoadComplete",
313
+ LCWLazyLoadScrollAnchorApplied = "LCWLazyLoadScrollAnchorApplied",
303
314
  SecureEventBusUnauthorizedDispatch = "SecureEventBusUnauthorizedDispatch",
304
315
  SecureEventBusListenerError = "SecureEventBusListenerError",
305
316
  SecureEventBusDispatchError = "SecureEventBusDispatchError",
306
- StartChatComplete = "StartChatComplete"
317
+ StartChatComplete = "StartChatComplete",
318
+ AgentJoinedConversation = "AgentJoinedConversation",
319
+ BrowserTabHidden = "BrowserTabHidden"
307
320
  }
308
321
  export interface TelemetryInput {
309
322
  scenarioType: ScenarioType;
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Redacts the values of Azure Shared Access Signature (SAS) query parameters in any
3
+ * URL embedded in a telemetry payload, so customer-supplied SAS URLs (e.g. blob asset
4
+ * URLs in widget customization props) cannot leak credentials through Aria/AppInsights.
5
+ *
6
+ * Trigger: any URL whose query string contains `sig=`. When detected, every well-known
7
+ * SAS parameter value in that query is replaced with `[REDACTED]`. Other URLs and other
8
+ * substrings of the payload pass through unchanged.
9
+ *
10
+ * Coverage of SAS parameter names:
11
+ * - Service/Blob SAS: sig, sv, se, st, sp, spr, sr, sip
12
+ * - Account SAS: ss, srt
13
+ * - User-delegation key SAS: skoid, sktid, skt, ske, sks, skv, saoid, suoid, sce, sdd
14
+ * - Response header overrides: rscc, rscd, rsce, rscl, rsct
15
+ *
16
+ * Reference: https://learn.microsoft.com/en-us/rest/api/storageservices/create-service-sas
17
+ */
18
+ /**
19
+ * Deep-walk a value and redact SAS credentials in any string it contains.
20
+ * Returns a new object/array (originals are not mutated); non-string leaves are
21
+ * passed through. Tree-shaped, JSON-like values only — not designed for class
22
+ * instances, prototype-bound objects, or cyclic graphs.
23
+ */
24
+ export declare const sanitizeSasInPayload: <T>(value: T) => T;
@@ -4,9 +4,11 @@ import { ITimer } from "./interfaces/ITimer";
4
4
  export declare const setTabIndices: (elements: HTMLElement[] | null, tabIndexMap: Map<string, number>, shouldBeFocusable: boolean) => void;
5
5
  export declare const findParentFocusableElementsWithoutChildContainer: (elementId: string) => HTMLElement[] | null;
6
6
  export declare const findAllFocusableElement: (parent: string | HTMLElement) => any[] | null;
7
- export declare const preventFocusToMoveOutOfElement: (elementId: string) => void;
7
+ export declare const preventFocusToMoveOutOfElement: (elementId: string) => (() => void);
8
+ export declare const setAriaHiddenForSiblings: (elementId: string, shouldHide: boolean, stateMap: Map<Element, string | null>) => void;
8
9
  export declare const setFocusOnSendBox: () => void;
9
10
  export declare const setFocusOnElement: (selector: string | HTMLElement) => void;
11
+ export declare const announceMessageImmediately: (message: string) => void;
10
12
  export declare const escapeHtml: (inputString: string) => string;
11
13
  export declare const getIconText: (text: string) => string;
12
14
  export declare const getLocaleDirection: (localeLCID: string) => string;
@@ -2,6 +2,7 @@ declare enum ChatWidgetEvents {
2
2
  ADD_ACTIVITY = "CHAT_WIDGET/ADD_ACTIVITY",
3
3
  FETCH_PERSISTENT_CHAT_HISTORY = "CHAT_WIDGET/FETCH_PERSISTENT_CHAT_HISTORY",
4
4
  NO_MORE_HISTORY_AVAILABLE = "CHAT_WIDGET/NO_MORE_HISTORY_AVAILABLE",
5
- HISTORY_LOAD_ERROR = "CHAT_WIDGET/HISTORY_LOAD_ERROR"
5
+ HISTORY_LOAD_ERROR = "CHAT_WIDGET/HISTORY_LOAD_ERROR",
6
+ HISTORY_BATCH_LOADED = "CHAT_WIDGET/HISTORY_BATCH_LOADED"
6
7
  }
7
8
  export default ChatWidgetEvents;
@@ -1,7 +1,14 @@
1
1
  import ChatConfig from "@microsoft/omnichannel-chat-sdk/lib/core/ChatConfig";
2
2
  import { OmnichannelChatSDK } from "@microsoft/omnichannel-chat-sdk";
3
+ /**
4
+ * Check if mid-auth is enabled based on chatConfig.
5
+ * Mid-auth flag lives under LiveWSAndLiveChatEngJoin.msdyn_authenticatedsigninoptional.
6
+ */
7
+ declare const isMidAuthEnabled: (chatConfig: ChatConfig | undefined) => boolean;
3
8
  declare const getAuthClientFunction: (chatConfig: ChatConfig | undefined) => string | undefined;
4
- declare const handleAuthentication: (chatSDK: OmnichannelChatSDK, chatConfig: ChatConfig | undefined, getAuthToken: ((authClientFunction?: string) => Promise<string | null>) | undefined) => Promise<{
9
+ declare const handleAuthentication: (chatSDK: OmnichannelChatSDK, chatConfig: ChatConfig | undefined, getAuthToken: ((authClientFunction?: string, options?: {
10
+ isMidAuthEnabled: boolean;
11
+ }) => Promise<string | null>) | undefined) => Promise<{
5
12
  result: boolean;
6
13
  token: string | null;
7
14
  error?: undefined;
@@ -15,4 +22,4 @@ declare const handleAuthentication: (chatSDK: OmnichannelChatSDK, chatConfig: Ch
15
22
  };
16
23
  }>;
17
24
  declare const removeAuthTokenProvider: (chatSDK: any) => void;
18
- export { getAuthClientFunction, handleAuthentication, removeAuthTokenProvider };
25
+ export { getAuthClientFunction, handleAuthentication, removeAuthTokenProvider, isMidAuthEnabled };
@@ -0,0 +1,17 @@
1
+ import { ILiveChatWidgetContext } from "../../../contexts/common/ILiveChatWidgetContext";
2
+ export declare enum RecoveryEligibilityReason {
3
+ ReconnectIdPresent = "ReconnectIdPresent",
4
+ ActiveContextPresent = "ActiveContextPresent",
5
+ MissingContext = "MissingContext",
6
+ CachedContextNonActive = "CachedContextNonActive"
7
+ }
8
+ export interface RecoveryEligibilityTelemetryProperties {
9
+ conversationState: string;
10
+ hasReconnectId: boolean;
11
+ hasLiveChatContext: boolean;
12
+ hasRequestId: boolean;
13
+ eligible: boolean;
14
+ reason: RecoveryEligibilityReason;
15
+ }
16
+ export declare const getRecoveryEligibilityTelemetryProperties: (state: ILiveChatWidgetContext, eligible: boolean) => RecoveryEligibilityTelemetryProperties;
17
+ export declare const logRecoveryEligibilityTelemetry: (state: ILiveChatWidgetContext, eligible: boolean) => void;
@@ -1,4 +1,10 @@
1
1
  import React from "react";
2
2
  import { IPreChatSurveyPaneStatefulParams } from "./interfaces/IPreChatSurveyPaneStatefulParams";
3
+ import MarkdownIt from "markdown-it";
4
+ declare global {
5
+ interface Window {
6
+ markdownit: typeof MarkdownIt;
7
+ }
8
+ }
3
9
  export declare const PreChatSurveyPaneStateful: (props: IPreChatSurveyPaneStatefulParams) => React.JSX.Element;
4
10
  export default PreChatSurveyPaneStateful;
@@ -4,7 +4,7 @@ export declare const customerUser: User;
4
4
  export declare const botUser: User;
5
5
  export declare const agentUser: User;
6
6
  export declare const postEchoActivity: (activityObserver: Subscriber<Activity> | undefined, activity: Message, user: User, delay?: number) => void;
7
- export declare const postBotMessageActivity: (activityObserver: Subscriber<Activity> | undefined, text: string, tags?: string, delay?: number) => void;
7
+ export declare const postBotMessageActivity: (activityObserver: Subscriber<Activity> | undefined, text: string, tags?: string, delay?: number, fromOverride?: Partial<User>) => void;
8
8
  export declare const postAgentMessageActivity: (activityObserver: Subscriber<Activity> | undefined, text: string, tags?: string, delay?: number) => void;
9
9
  export declare const postSystemMessageActivity: (activityObserver: Subscriber<Activity> | undefined, text: string, delay?: number) => void;
10
10
  export declare const postBotTypingActivity: (activityObserver: Subscriber<Activity> | undefined, delay?: number) => void;
@@ -0,0 +1 @@
1
+ export declare const patchCitationAnchorsForA11y: (root: ParentNode) => void;
@@ -7,4 +7,5 @@ export interface IAdaptiveCardStyles {
7
7
  choiceInputPadding?: string;
8
8
  buttonFlexWrap?: string;
9
9
  buttonGap?: string;
10
+ inputFontSize?: string;
10
11
  }
@@ -1,4 +1,19 @@
1
1
  export interface IWebChatAction {
2
2
  type: string;
3
- payload: any;
3
+ payload?: any;
4
4
  }
5
+ /**
6
+ * Type guard narrowing the `unknown` action received by a Redux 5 store middleware
7
+ * down to Web Chat's IWebChatAction shape, so middlewares can safely access `type`/`payload`.
8
+ */
9
+ export declare const isWebChatAction: (action: unknown) => action is IWebChatAction;
10
+ /**
11
+ * Structural middleware type matching the unknown-action contract expected by
12
+ * botframework-webchat's `createStore` without exposing Redux as a public dependency.
13
+ */
14
+ type WebChatDispatch = (action: unknown) => unknown;
15
+ export type WebChatStoreMiddleware = (api: {
16
+ dispatch: WebChatDispatch;
17
+ getState: () => unknown;
18
+ }) => (next: WebChatDispatch) => WebChatDispatch;
19
+ export {};
@@ -25,4 +25,11 @@ export interface IWebChatContainerStatefulProps {
25
25
  adaptiveCardStyles?: IAdaptiveCardStyles;
26
26
  sendBoxTextBox?: ISendBox;
27
27
  webChatHistoryMobileAccessibilityLabel?: string;
28
+ /**
29
+ * Accessible name applied to WebChats notification toaster region
30
+ * (`role="log"`). When omitted, defaults to "Chat notifications" so
31
+ * screen readers don't announce the empty live region as "blank"
32
+ * (internal tracking).
33
+ */
34
+ webChatNotificationRegionAccessibilityLabel?: string;
28
35
  }
@@ -52,7 +52,9 @@ declare class LazyLoadHandler {
52
52
  static initialized: boolean;
53
53
  static paused: boolean;
54
54
  static observer: IntersectionObserver | null;
55
- private static scrollState;
55
+ static preLoadScrollHeight: number;
56
+ private static preLoadScrollTop;
57
+ static initialLoadComplete: boolean;
56
58
  static pendingScrollAction: boolean;
57
59
  private static retryTimeouts;
58
60
  static resetPending: boolean;
@@ -151,40 +153,21 @@ declare class LazyLoadHandler {
151
153
  * It coordinates the entire lazy loading process:
152
154
  *
153
155
  * 1. Sets flags to prevent concurrent operations
154
- * 2. Dispatches event to fetch more chat history
155
- * 3. Waits for content to load
156
- * 4. Executes scroll adjustment to maintain user position
156
+ * 2. Captures scroll state BEFORE content loads (for height-delta anchoring)
157
+ * 3. Dispatches event to fetch more chat history
157
158
  *
158
- * Timing: Uses 300ms delay to allow content loading before scroll adjustment
159
+ * Scroll anchoring is triggered by HISTORY_BATCH_LOADED event (not a blind timeout).
159
160
  */
160
161
  private static handleLazyLoadTrigger;
161
162
  /**
162
- * Executes reliable scroll with validation and retry logic
163
+ * Applies height-delta scroll anchoring after new history content is prepended.
163
164
  *
164
- * This method implements a robust scroll system that:
165
- * 1. Finds and validates the scroll container
166
- * 2. Calculates target scroll position (current + 35px)
167
- * 3. Sets up scroll state for tracking and retries
168
- * 4. Initiates the scroll attempt process
169
- *
170
- * If no suitable container is found, schedules a retry.
165
+ * When content is added above the viewport, the browser keeps scrollTop constant
166
+ * but the content shifts down — making the viewport drift upward.
167
+ * Fix: scrollTop = savedScrollTop + (newScrollHeight - savedScrollHeight)
168
+ * This keeps the user looking at the same content they had before.
171
169
  */
172
- private static executeReliableScroll;
173
- /**
174
- * Attempts to perform scroll with verification and retry logic
175
- *
176
- * This method implements a sophisticated scroll system:
177
- *
178
- * 1. Uses requestAnimationFrame for smooth execution
179
- * 2. Performs the scroll operation
180
- * 3. Verifies scroll actually occurred (5px tolerance)
181
- * 4. Retries with exponential backoff if failed
182
- * 5. Continues operation after max attempts
183
- *
184
- * The two-frame approach ensures scroll is applied and then verified
185
- * after the browser has had time to process the scroll change.
186
- */
187
- private static attemptScroll;
170
+ static applyScrollAnchor(): void;
188
171
  /**
189
172
  * Finishes scroll action and prepares for next cycle
190
173
  *
@@ -192,21 +175,14 @@ declare class LazyLoadHandler {
192
175
  * Uses delays to allow content stabilization before re-enabling
193
176
  * the intersection observer for the next lazy load cycle.
194
177
  */
195
- private static finishScrollAction;
196
- /**
197
- * Schedules retry for failed scroll operations
198
- *
199
- * Used when scroll container is not available or scrollable.
200
- * Provides a longer delay to allow container to become ready.
201
- */
202
- private static scheduleScrollRetry;
178
+ static finishScrollAction(): void;
203
179
  /**
204
180
  * Schedules observer reset for next lazy load cycle
205
181
  *
206
182
  * After a lazy load operation completes, the observer needs to be reset
207
183
  * to detect the next time the user scrolls to the top.
208
184
  */
209
- private static scheduleReset;
185
+ static scheduleReset(): void;
210
186
  /**
211
187
  * Finds the appropriate scroll container using multiple strategies
212
188
  *
@@ -9,3 +9,5 @@
9
9
  import { ILiveChatWidgetLocalizedTexts } from "../../../../../contexts/common/ILiveChatWidgetLocalizedTexts";
10
10
  import React from "react";
11
11
  export declare const createActivityMiddleware: (renderMarkdown: (text: string) => string, systemMessageStyleProps?: React.CSSProperties, userMessageStyleProps?: React.CSSProperties, localizedTexts?: ILiveChatWidgetLocalizedTexts) => () => (next: any) => (...args: any) => any;
12
+ /** Clear module-level caches. Call on conversation end / chat close. */
13
+ export declare const resetActivityMiddlewareCache: () => void;
@@ -0,0 +1,18 @@
1
+ import React from "react";
2
+ /******
3
+ * AdaptiveCardAccessibilityWrapper
4
+ *
5
+ * The `adaptivecards` renderer does not set `aria-setsize` or `aria-posinset`
6
+ * on radio buttons rendered by Input.ChoiceSet (style: "expanded"). Without
7
+ * these attributes, screen readers (TalkBack, VoiceOver, NVDA) cannot announce
8
+ * the correct option count (e.g. "1 of 2") and may say "1 of 1" for every item.
9
+ *
10
+ * This wrapper observes the rendered card via MutationObserver and patches each
11
+ * radio group with the correct ARIA attributes after the card finishes rendering.
12
+ ******/
13
+ declare const AdaptiveCardAccessibilityWrapper: React.FC<{
14
+ id?: string;
15
+ style?: any;
16
+ children: React.ReactNode;
17
+ }>;
18
+ export default AdaptiveCardAccessibilityWrapper;
@@ -8,4 +8,7 @@ export declare const defaultSystemMessageStyles: {
8
8
  fontFamily: string;
9
9
  lineHeight: string;
10
10
  padding: string;
11
+ WebkitTextUnderlinePosition: "under";
12
+ textUnderlinePosition: "under";
13
+ fontVariantNumeric: "lining-nums";
11
14
  };
@@ -1,4 +1,2 @@
1
- import { IWebChatAction } from "../../../interfaces/IWebChatAction";
2
- export declare const createMessageSequenceIdOverrideMiddleware: ({ dispatch }: {
3
- dispatch: any;
4
- }) => (next: any) => (action: IWebChatAction) => any;
1
+ import { WebChatStoreMiddleware } from "../../../interfaces/IWebChatAction";
2
+ export declare const createMessageSequenceIdOverrideMiddleware: WebChatStoreMiddleware;
@@ -1,4 +1,2 @@
1
- import { IWebChatAction } from "../../../interfaces/IWebChatAction";
2
- export declare const createMessageTimeStampMiddleware: ({ dispatch }: {
3
- dispatch: any;
4
- }) => (next: any) => (action: IWebChatAction) => any;
1
+ import { WebChatStoreMiddleware } from "../../../interfaces/IWebChatAction";
2
+ export declare const createMessageTimeStampMiddleware: WebChatStoreMiddleware;
@@ -3,8 +3,6 @@
3
3
  *
4
4
  * Handles attachment sending.
5
5
  ******/
6
- import { IWebChatAction } from "../../../interfaces/IWebChatAction";
7
- declare const attachmentProcessingMiddleware: ({ dispatch }: {
8
- dispatch: any;
9
- }) => (next: any) => (action: IWebChatAction) => Promise<any>;
6
+ import { WebChatStoreMiddleware } from "../../../interfaces/IWebChatAction";
7
+ declare const attachmentProcessingMiddleware: WebChatStoreMiddleware;
10
8
  export default attachmentProcessingMiddleware;
@@ -0,0 +1,10 @@
1
+ /******
2
+ * AttachmentSentAnnouncementMiddleware
3
+ *
4
+ * When a file attachment is successfully sent, announces the result to
5
+ * screen readers via an aria-live region so that assistive technology
6
+ * users receive immediate feedback.
7
+ ******/
8
+ import { WebChatStoreMiddleware } from "../../../interfaces/IWebChatAction";
9
+ declare const attachmentSentAnnouncementMiddleware: WebChatStoreMiddleware;
10
+ export default attachmentSentAnnouncementMiddleware;
@@ -4,8 +4,6 @@
4
4
  * Checks if the attachment being uploaded satisfies Omnichannel's requirement on file extensions and file size.
5
5
  ******/
6
6
  import { ILiveChatWidgetLocalizedTexts } from "../../../../../contexts/common/ILiveChatWidgetLocalizedTexts";
7
- import { IWebChatAction } from "../../../interfaces/IWebChatAction";
8
- declare const createAttachmentUploadValidatorMiddleware: (allowedFileExtensions: string, maxFileSizeSupportedByDynamics: string, localizedTexts: ILiveChatWidgetLocalizedTexts) => ({ dispatch }: {
9
- dispatch: any;
10
- }) => (next: any) => (action: IWebChatAction) => any;
7
+ import { WebChatStoreMiddleware } from "../../../interfaces/IWebChatAction";
8
+ declare const createAttachmentUploadValidatorMiddleware: (allowedFileExtensions: string, maxFileSizeSupportedByDynamics: string, localizedTexts: ILiveChatWidgetLocalizedTexts) => WebChatStoreMiddleware;
11
9
  export default createAttachmentUploadValidatorMiddleware;
@@ -3,6 +3,6 @@
3
3
  *
4
4
  * Intercepts custom call actions and handles tel: URL navigation
5
5
  ******/
6
- import { IWebChatAction } from "../../../interfaces/IWebChatAction";
7
- declare const createCallActionMiddleware: () => () => (next: any) => (action: IWebChatAction) => any;
6
+ import { WebChatStoreMiddleware } from "../../../interfaces/IWebChatAction";
7
+ declare const createCallActionMiddleware: () => WebChatStoreMiddleware;
8
8
  export default createCallActionMiddleware;
@@ -3,8 +3,6 @@
3
3
  *
4
4
  * Adds necessary tags if not present so that the rendering middlewares can process them later.
5
5
  ******/
6
- import { IWebChatAction } from "../../../interfaces/IWebChatAction";
7
- declare const channelDataMiddleware: (addConversationalSurveyTagsCallback: any) => ({ dispatch }: {
8
- dispatch: any;
9
- }) => (next: any) => (action: IWebChatAction) => any;
6
+ import { WebChatStoreMiddleware } from "../../../interfaces/IWebChatAction";
7
+ declare const channelDataMiddleware: (addConversationalSurveyTagsCallback: any) => WebChatStoreMiddleware;
10
8
  export default channelDataMiddleware;
@@ -1,4 +1,4 @@
1
1
  import { ILiveChatWidgetAction } from "../../../../../contexts/common/ILiveChatWidgetAction";
2
2
  import { ILiveChatWidgetContext } from "../../../../../contexts/common/ILiveChatWidgetContext";
3
- import { IWebChatAction } from "../../../interfaces/IWebChatAction";
4
- export declare const createCitationsMiddleware: (state: ILiveChatWidgetContext, dispatch: (action: ILiveChatWidgetAction) => void) => () => (next: (action: IWebChatAction) => void) => (action: IWebChatAction) => void;
3
+ import { WebChatStoreMiddleware } from "../../../interfaces/IWebChatAction";
4
+ export declare const createCitationsMiddleware: (state: ILiveChatWidgetContext, dispatch: (action: ILiveChatWidgetAction) => void) => WebChatStoreMiddleware;
@@ -4,8 +4,6 @@
4
4
  * This middleware is invoked when the conversation is ended by the agent/bot.
5
5
  * The callback is then invoked to hide the send box (by default).
6
6
  ******/
7
- import { IWebChatAction } from "../../../interfaces/IWebChatAction";
8
- declare const createConversationEndMiddleware: (conversationEndCallback: any, startConversationalSurveyCallback: any, endConversationalSurveyCallback: any) => ({ dispatch }: {
9
- dispatch: any;
10
- }) => (next: any) => (action: IWebChatAction) => any;
7
+ import { WebChatStoreMiddleware } from "../../../interfaces/IWebChatAction";
8
+ declare const createConversationEndMiddleware: (conversationEndCallback: any, startConversationalSurveyCallback: any, endConversationalSurveyCallback: any) => WebChatStoreMiddleware;
11
9
  export default createConversationEndMiddleware;
@@ -4,7 +4,7 @@
4
4
  * This middleware is invoked when a custom event is received.
5
5
  * The callback is then invoked to handle the custom event.
6
6
  ******/
7
- import { IWebChatAction } from "../../../interfaces/IWebChatAction";
7
+ import { WebChatStoreMiddleware } from "../../../interfaces/IWebChatAction";
8
8
  import { BroadcastService } from "@microsoft/omnichannel-chat-components";
9
9
  export declare const isValidCustomEvent: (activity: {
10
10
  channelData?: {
@@ -18,5 +18,5 @@ export declare const isValidCustomEvent: (activity: {
18
18
  role: string;
19
19
  };
20
20
  }) => boolean;
21
- declare const createCustomEventMiddleware: (broadcastservice: typeof BroadcastService) => () => (next: (action: IWebChatAction) => void) => (action: IWebChatAction) => void;
21
+ declare const createCustomEventMiddleware: (broadcastservice: typeof BroadcastService) => WebChatStoreMiddleware;
22
22
  export default createCustomEventMiddleware;
@@ -4,8 +4,6 @@
4
4
  * Applies data masking rules that Omnichannel Admin has configured.
5
5
  ******/
6
6
  import { IDataMaskingInfo } from "../../../interfaces/IDataMaskingInfo";
7
- import { IWebChatAction } from "../../../interfaces/IWebChatAction";
8
- declare const createDataMaskingMiddleware: (dataMaskingInfo: IDataMaskingInfo) => ({ dispatch }: {
9
- dispatch: any;
10
- }) => (next: any) => (action: IWebChatAction) => any;
7
+ import { WebChatStoreMiddleware } from "../../../interfaces/IWebChatAction";
8
+ declare const createDataMaskingMiddleware: (dataMaskingInfo: IDataMaskingInfo) => WebChatStoreMiddleware;
11
9
  export default createDataMaskingMiddleware;
@@ -3,8 +3,6 @@
3
3
  *
4
4
  * Ensures that GIF are properly uploaded.
5
5
  ******/
6
- import { IWebChatAction } from "../../../interfaces/IWebChatAction";
7
- declare const gifUploadMiddleware: ({ dispatch }: {
8
- dispatch: any;
9
- }) => (next: any) => (action: IWebChatAction) => any;
6
+ import { WebChatStoreMiddleware } from "../../../interfaces/IWebChatAction";
7
+ declare const gifUploadMiddleware: WebChatStoreMiddleware;
10
8
  export default gifUploadMiddleware;
@@ -3,8 +3,6 @@
3
3
  *
4
4
  * Ensures that video/audio attachment are properly rendered.
5
5
  ******/
6
- import { IWebChatAction } from "../../../interfaces/IWebChatAction";
7
- declare const htmlPlayerMiddleware: ({ dispatch }: {
8
- dispatch: any;
9
- }) => (next: any) => (action: IWebChatAction) => any;
6
+ import { WebChatStoreMiddleware } from "../../../interfaces/IWebChatAction";
7
+ declare const htmlPlayerMiddleware: WebChatStoreMiddleware;
10
8
  export default htmlPlayerMiddleware;
@@ -3,8 +3,6 @@
3
3
  *
4
4
  * Ensures that links within messages are processed so that the caller website cannot be traced.
5
5
  ******/
6
- import { IWebChatAction } from "../../../interfaces/IWebChatAction";
7
- declare const htmlTextMiddleware: (honorsTargetInHTMLLinks?: boolean) => ({ dispatch }: {
8
- dispatch: any;
9
- }) => (next: any) => (action: IWebChatAction) => any;
6
+ import { WebChatStoreMiddleware } from "../../../interfaces/IWebChatAction";
7
+ declare const htmlTextMiddleware: (honorsTargetInHTMLLinks?: boolean) => WebChatStoreMiddleware;
10
8
  export default htmlTextMiddleware;
@@ -1,5 +1,3 @@
1
- import { IWebChatAction } from "../../../interfaces/IWebChatAction";
2
- export declare const localizedStringsBotInitialsMiddleware: (onInitialsChange?: (initials: string) => void) => ({ dispatch }: {
3
- dispatch: any;
4
- }) => (next: any) => (action: IWebChatAction) => any;
1
+ import { WebChatStoreMiddleware } from "../../../interfaces/IWebChatAction";
2
+ export declare const localizedStringsBotInitialsMiddleware: (onInitialsChange?: (initials: string) => void) => WebChatStoreMiddleware;
5
3
  export declare const getOverriddenLocalizedStrings: (existingOverrides?: any) => (strings: any) => any;
@@ -4,8 +4,6 @@
4
4
  * Enforces a max character limit that the sender can send to comply to Omnichannel chat services' limitation.
5
5
  ******/
6
6
  import { ILiveChatWidgetLocalizedTexts } from "../../../../../contexts/common/ILiveChatWidgetLocalizedTexts";
7
- import { IWebChatAction } from "../../../interfaces/IWebChatAction";
8
- declare const createMaxMessageSizeValidator: (localizedTexts: ILiveChatWidgetLocalizedTexts) => ({ dispatch }: {
9
- dispatch: any;
10
- }) => (next: any) => (action: IWebChatAction) => any;
7
+ import { WebChatStoreMiddleware } from "../../../interfaces/IWebChatAction";
8
+ declare const createMaxMessageSizeValidator: (localizedTexts: ILiveChatWidgetLocalizedTexts) => WebChatStoreMiddleware;
11
9
  export default createMaxMessageSizeValidator;
@@ -3,8 +3,6 @@
3
3
  *
4
4
  * Adds necessary fields for the activity for the other middlewares to function as expected.
5
5
  ******/
6
- import { IWebChatAction } from "../../../interfaces/IWebChatAction";
7
- declare const preProcessingMiddleware: ({ dispatch }: {
8
- dispatch: any;
9
- }) => (next: any) => (action: IWebChatAction) => Promise<any>;
6
+ import { WebChatStoreMiddleware } from "../../../interfaces/IWebChatAction";
7
+ declare const preProcessingMiddleware: WebChatStoreMiddleware;
10
8
  export default preProcessingMiddleware;
@@ -1,5 +1,5 @@
1
1
  import { Dispatch } from "react";
2
2
  import { ILiveChatWidgetAction } from "../../../../../contexts/common/ILiveChatWidgetAction";
3
3
  import { ILiveChatWidgetContext } from "../../../../../contexts/common/ILiveChatWidgetContext";
4
- import { IWebChatAction } from "../../../interfaces/IWebChatAction";
5
- export declare const createQueueOverflowMiddleware: (state: ILiveChatWidgetContext, dispatch: Dispatch<ILiveChatWidgetAction>) => () => (next: (action: IWebChatAction) => void) => (action: IWebChatAction) => void;
4
+ import { WebChatStoreMiddleware } from "../../../interfaces/IWebChatAction";
5
+ export declare const createQueueOverflowMiddleware: (state: ILiveChatWidgetContext, dispatch: Dispatch<ILiveChatWidgetAction>) => WebChatStoreMiddleware;
@@ -3,8 +3,6 @@
3
3
  *
4
4
  * Sanitizes the text.
5
5
  ******/
6
- import { IWebChatAction } from "../../../interfaces/IWebChatAction";
7
- declare const sanitizationMiddleware: ({ dispatch }: {
8
- dispatch: any;
9
- }) => (next: any) => (action: IWebChatAction) => any;
6
+ import { WebChatStoreMiddleware } from "../../../interfaces/IWebChatAction";
7
+ declare const sanitizationMiddleware: WebChatStoreMiddleware;
10
8
  export default sanitizationMiddleware;
@@ -1,6 +1,13 @@
1
1
  import { NotificationLevel } from "../enums/NotificationLevel";
2
2
  export declare class NotificationHandler {
3
+ private static clearTimeoutId;
3
4
  private static notify;
5
+ /**
6
+ * Announces a message immediately to screen readers via an aria-live="assertive" region.
7
+ * This ensures notifications interrupt the current screen reader output
8
+ * instead of waiting for it to finish reading other content.
9
+ */
10
+ private static announceToScreenReader;
4
11
  static dismissNotification(id: string): void;
5
12
  static notifyError(id: string, message: string): void;
6
13
  static notifyWarning(id: string, message: string): void;