@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
@@ -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
- channelData: {
20
- tags
21
- },
22
- from: {
23
- name,
24
- role
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
- nextVisibleActivity: {
44
- from: {
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
- /* eslint-disable @typescript-eslint/no-explicit-any */
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
- activity,
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 [card] = args;
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
- activity: {
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
- content,
90
- contentType
91
- } = attachment || {
92
- content: "",
93
- contentType: ""
94
- };
95
- let {
96
- type
97
- } = content || {
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 [state] = (0, _.useChatContextStore)();
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("div", {
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 _useChatContextStore = _interopRequireDefault(require("../../../../../../hooks/useChatContextStore"));
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
- iconData,
25
- imageCard,
26
- textCard,
27
- renderer
28
- } = props;
29
- const [state] = (0, _useChatContextStore.default)();
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 [k, v] = _ref;
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(_ref2 => {
54
- let [k, v] = _ref2;
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(_ref3 => {
61
- let [k, v] = _ref3;
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(_ref4 => {
68
- let [k, v] = _ref4;
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 [params] = args;
26
- const {
27
- activity: {
28
- channelData: {
29
- tags
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 [card] = args;
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', 'Apple Color Emoji', 'Noto Color Emoji', 'Segoe UI Emoji', Arial, sans-serif",
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', 'Apple Color Emoji', 'Noto Color Emoji', 'Segoe UI Emoji', Arial, sans-serif",
15
- lineHeight: "16px",
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
- status
41
- } = next({
42
- activities
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-explicit-any, @typescript-eslint/no-unused-vars
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-explicit-any, @typescript-eslint/no-unused-vars
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
  }