@microsoft/omnichannel-chat-widget 1.8.7 → 2.0.0-main.ba244dd

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 (248) hide show
  1. package/README.md +42 -3
  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 +17 -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/startChat.js +31 -14
  33. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +158 -21
  34. package/lib/cjs/components/loadingpanestateful/LoadingPaneStateful.js +16 -11
  35. package/lib/cjs/components/notificationpanestateful/NotificationPaneStateful.js +19 -12
  36. package/lib/cjs/components/ooohpanestateful/OOOHPaneStateful.js +13 -6
  37. package/lib/cjs/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +28 -5
  38. package/lib/cjs/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +12 -5
  39. package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +105 -11
  40. package/lib/cjs/components/prechatsurveypanestateful/common/defaultStyles/defaultGeneralPreChatSurveyPaneStyleProps.js +12 -1
  41. package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +17 -7
  42. package/lib/cjs/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +16 -7
  43. package/lib/cjs/components/startchaterrorpanestateful/StartChatErrorPaneStateful.js +10 -2
  44. package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +154 -29
  45. package/lib/cjs/components/webchatcontainerstateful/common/DesignerChatAdapter.js +10 -0
  46. package/lib/cjs/components/webchatcontainerstateful/common/activityConverters/convertPersistentChatHistoryMessageToActivity.js +115 -10
  47. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts.js +3 -0
  48. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +2 -1
  49. package/lib/cjs/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +3 -1
  50. package/lib/cjs/components/webchatcontainerstateful/common/defaultStyles/defaultWebChatStyles.js +2 -2
  51. package/lib/cjs/components/webchatcontainerstateful/common/utils/chatAdapterUtils.js +3 -1
  52. package/lib/cjs/components/webchatcontainerstateful/common/utils/citationA11y.js +195 -0
  53. package/lib/cjs/components/webchatcontainerstateful/interfaces/IWebChatAction.js +17 -1
  54. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/WebChatEventSubscribers.js +27 -4
  55. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsEgressMiddleware.js +1 -3
  56. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsIngressMiddleware.js +1 -3
  57. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activities/LazyLoadActivity.js +180 -190
  58. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activities/LoadInlineBannerActivity.js +3 -5
  59. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +22 -6
  60. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +12 -23
  61. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +27 -35
  62. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/AdaptiveCardAccessibilityWrapper.js +199 -0
  63. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/Attachment.js +29 -15
  64. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.js +5 -12
  65. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +1 -1
  66. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultAvatarTextStyles.js +1 -1
  67. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageStyles.js +8 -3
  68. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampRetryStyles.js +8 -1
  69. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware.js +5 -8
  70. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageSequenceIdOverrideMiddleware.js +6 -4
  71. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +6 -4
  72. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +14 -12
  73. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/HistoryMessageTimestamp.js +16 -14
  74. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +18 -30
  75. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +10 -2
  76. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/toastMiddleware.js +1 -3
  77. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +16 -12
  78. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +6 -6
  79. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentSentAnnouncementMiddleware.js +83 -0
  80. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +36 -8
  81. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/callActionMiddleware.js +5 -1
  82. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +10 -7
  83. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/citationsMiddleware.js +4 -0
  84. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +6 -4
  85. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/customEventMiddleware.js +5 -1
  86. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +7 -7
  87. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.js +10 -14
  88. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.js +6 -4
  89. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.js +13 -10
  90. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/localizedStringsBotInitialsMiddleware.js +57 -11
  91. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.js +6 -4
  92. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.js +25 -30
  93. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/queueOverflowHandlerMiddleware.js +10 -7
  94. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.js +6 -4
  95. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +55 -1
  96. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +2 -4
  97. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +5 -0
  98. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +17 -1
  99. package/lib/cjs/contexts/createReducer.js +15 -0
  100. package/lib/cjs/controller/componentController.js +13 -1
  101. package/lib/cjs/hooks/useWindowDimensions.js +13 -5
  102. package/lib/cjs/package.json +1 -0
  103. package/lib/cjs/plugins/createChatTranscript.js +3 -4
  104. package/lib/cjs/plugins/newMessageEventHandler.js +20 -3
  105. package/lib/esm/common/Constants.js +5 -0
  106. package/lib/esm/common/facades/FacadeChatSDK.js +235 -10
  107. package/lib/esm/common/telemetry/TelemetryConstants.js +17 -0
  108. package/lib/esm/common/telemetry/TelemetryManager.js +6 -1
  109. package/lib/esm/common/telemetry/loggers/appInsightsLogger.js +2 -3
  110. package/lib/esm/common/telemetry/sanitizeSasInPayload.js +84 -0
  111. package/lib/esm/common/utils.js +88 -14
  112. package/lib/esm/components/callingcontainerstateful/CallingContainerStateful.js +15 -5
  113. package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +19 -9
  114. package/lib/esm/components/citationpanestateful/CitationDim.js +2 -3
  115. package/lib/esm/components/citationpanestateful/CitationPaneStateful.js +26 -4
  116. package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +22 -2
  117. package/lib/esm/components/dimlayer/DimLayer.js +1 -3
  118. package/lib/esm/components/draggable/DraggableChatWidget.js +34 -14
  119. package/lib/esm/components/draggable/DraggableEventEmitter.js +10 -1
  120. package/lib/esm/components/draggable/DraggableEventReceiver.js +1 -3
  121. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +54 -17
  122. package/lib/esm/components/errorboundary/ErrorBoundary.js +4 -12
  123. package/lib/esm/components/footerstateful/FooterStateful.js +17 -8
  124. package/lib/esm/components/footerstateful/audionotificationstateful/AudioNotificationStateful.js +2 -4
  125. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +4 -6
  126. package/lib/esm/components/headerstateful/HeaderStateful.js +22 -10
  127. package/lib/esm/components/livechatwidget/LiveChatWidget.js +27 -4
  128. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/HiddenAdaptiveCardActivitySubscriber.js +5 -11
  129. package/lib/esm/components/livechatwidget/common/ChatWidgetEvents.js +1 -0
  130. package/lib/esm/components/livechatwidget/common/PersistentConversationHandler.js +11 -4
  131. package/lib/esm/components/livechatwidget/common/authHelper.js +44 -4
  132. package/lib/esm/components/livechatwidget/common/createMarkdown.js +98 -5
  133. package/lib/esm/components/livechatwidget/common/endChat.js +12 -9
  134. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +182 -1
  135. package/lib/esm/components/livechatwidget/common/startChat.js +31 -14
  136. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +157 -20
  137. package/lib/esm/components/loadingpanestateful/LoadingPaneStateful.js +14 -9
  138. package/lib/esm/components/notificationpanestateful/NotificationPaneStateful.js +17 -10
  139. package/lib/esm/components/ooohpanestateful/OOOHPaneStateful.js +12 -5
  140. package/lib/esm/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +28 -5
  141. package/lib/esm/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +11 -4
  142. package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +105 -11
  143. package/lib/esm/components/prechatsurveypanestateful/common/defaultStyles/defaultGeneralPreChatSurveyPaneStyleProps.js +12 -1
  144. package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +16 -6
  145. package/lib/esm/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +15 -6
  146. package/lib/esm/components/startchaterrorpanestateful/StartChatErrorPaneStateful.js +9 -1
  147. package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +154 -29
  148. package/lib/esm/components/webchatcontainerstateful/common/DesignerChatAdapter.js +10 -0
  149. package/lib/esm/components/webchatcontainerstateful/common/activityConverters/convertPersistentChatHistoryMessageToActivity.js +115 -10
  150. package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts.js +3 -0
  151. package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +2 -1
  152. package/lib/esm/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +3 -1
  153. package/lib/esm/components/webchatcontainerstateful/common/defaultStyles/defaultWebChatStyles.js +2 -2
  154. package/lib/esm/components/webchatcontainerstateful/common/utils/chatAdapterUtils.js +3 -1
  155. package/lib/esm/components/webchatcontainerstateful/common/utils/citationA11y.js +188 -0
  156. package/lib/esm/components/webchatcontainerstateful/interfaces/IWebChatAction.js +10 -1
  157. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/WebChatEventSubscribers.js +27 -4
  158. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsEgressMiddleware.js +1 -3
  159. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsIngressMiddleware.js +1 -3
  160. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activities/LazyLoadActivity.js +180 -190
  161. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activities/LoadInlineBannerActivity.js +3 -5
  162. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +19 -4
  163. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +12 -23
  164. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +27 -32
  165. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/AdaptiveCardAccessibilityWrapper.js +193 -0
  166. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/Attachment.js +28 -14
  167. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.js +5 -12
  168. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +1 -1
  169. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultAvatarTextStyles.js +1 -1
  170. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageStyles.js +8 -3
  171. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampRetryStyles.js +8 -1
  172. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware.js +5 -8
  173. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageSequenceIdOverrideMiddleware.js +6 -4
  174. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +6 -4
  175. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +13 -11
  176. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/HistoryMessageTimestamp.js +15 -13
  177. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +17 -27
  178. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +9 -1
  179. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/toastMiddleware.js +1 -3
  180. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +16 -10
  181. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +6 -6
  182. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentSentAnnouncementMiddleware.js +77 -0
  183. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +36 -8
  184. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/callActionMiddleware.js +5 -2
  185. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +10 -7
  186. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/citationsMiddleware.js +4 -0
  187. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +6 -4
  188. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/customEventMiddleware.js +5 -1
  189. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +7 -7
  190. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.js +10 -14
  191. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.js +6 -4
  192. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.js +13 -10
  193. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/localizedStringsBotInitialsMiddleware.js +57 -11
  194. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.js +6 -4
  195. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.js +25 -31
  196. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/queueOverflowHandlerMiddleware.js +10 -7
  197. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.js +6 -4
  198. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +55 -1
  199. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +2 -4
  200. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +5 -0
  201. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +17 -1
  202. package/lib/esm/contexts/createReducer.js +15 -0
  203. package/lib/esm/controller/componentController.js +13 -1
  204. package/lib/esm/hooks/useWindowDimensions.js +13 -5
  205. package/lib/esm/plugins/createChatTranscript.js +3 -4
  206. package/lib/esm/plugins/newMessageEventHandler.js +20 -3
  207. package/lib/types/common/Constants.d.ts +4 -0
  208. package/lib/types/common/facades/FacadeChatSDK.d.ts +29 -0
  209. package/lib/types/common/facades/types/IFacadeChatSDKInput.d.ts +3 -1
  210. package/lib/types/common/telemetry/TelemetryConstants.d.ts +14 -2
  211. package/lib/types/common/telemetry/sanitizeSasInPayload.d.ts +24 -0
  212. package/lib/types/common/utils.d.ts +3 -1
  213. package/lib/types/components/livechatwidget/common/ChatWidgetEvents.d.ts +2 -1
  214. package/lib/types/components/livechatwidget/common/authHelper.d.ts +9 -2
  215. package/lib/types/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.d.ts +6 -0
  216. package/lib/types/components/webchatcontainerstateful/common/utils/chatAdapterUtils.d.ts +1 -1
  217. package/lib/types/components/webchatcontainerstateful/common/utils/citationA11y.d.ts +1 -0
  218. package/lib/types/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.d.ts +1 -0
  219. package/lib/types/components/webchatcontainerstateful/interfaces/IWebChatAction.d.ts +16 -1
  220. package/lib/types/components/webchatcontainerstateful/interfaces/IWebChatContainerStatefulProps.d.ts +7 -0
  221. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activities/LazyLoadActivity.d.ts +14 -38
  222. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.d.ts +2 -0
  223. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/AdaptiveCardAccessibilityWrapper.d.ts +18 -0
  224. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageStyles.d.ts +3 -0
  225. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageSequenceIdOverrideMiddleware.d.ts +2 -4
  226. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.d.ts +2 -4
  227. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.d.ts +2 -4
  228. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentSentAnnouncementMiddleware.d.ts +10 -0
  229. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.d.ts +2 -4
  230. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/callActionMiddleware.d.ts +2 -2
  231. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.d.ts +2 -4
  232. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/citationsMiddleware.d.ts +2 -2
  233. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.d.ts +2 -4
  234. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/customEventMiddleware.d.ts +2 -2
  235. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.d.ts +2 -4
  236. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.d.ts +2 -4
  237. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.d.ts +2 -4
  238. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.d.ts +2 -4
  239. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/localizedStringsBotInitialsMiddleware.d.ts +2 -4
  240. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.d.ts +2 -4
  241. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.d.ts +2 -4
  242. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/queueOverflowHandlerMiddleware.d.ts +2 -2
  243. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.d.ts +2 -4
  244. package/lib/types/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.d.ts +7 -0
  245. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +1 -0
  246. package/lib/types/contexts/common/ILiveChatWidgetLocalizedTexts.d.ts +17 -0
  247. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +2 -1
  248. package/package.json +69 -56
@@ -1,3 +1,9 @@
1
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
2
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
4
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
5
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
1
7
  import { LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
2
8
  import React, { useEffect } from "react";
3
9
  import { createTimer, findAllFocusableElement } from "../../common/utils";
@@ -18,11 +24,11 @@ export const LoadingPaneStateful = props => {
18
24
  Event: TelemetryEvent.UXLoadingPaneStart
19
25
  });
20
26
  }, []);
21
- const [state] = useChatContextStore();
22
- const {
23
- loadingPaneProps,
24
- startChatErrorPaneProps
25
- } = props;
27
+ const _useChatContextStore = useChatContextStore(),
28
+ _useChatContextStore2 = _slicedToArray(_useChatContextStore, 1),
29
+ state = _useChatContextStore2[0];
30
+ const loadingPaneProps = props.loadingPaneProps,
31
+ startChatErrorPaneProps = props.startChatErrorPaneProps;
26
32
  const generalLoadingPaneStyleProps = Object.assign({}, defaultGeneralLoadingPaneStyleProps, loadingPaneProps === null || loadingPaneProps === void 0 || (_loadingPaneProps$sty = loadingPaneProps.styleProps) === null || _loadingPaneProps$sty === void 0 ? void 0 : _loadingPaneProps$sty.generalStyleProps);
27
33
  const loadingPaneStyleProps = {
28
34
  ...(loadingPaneProps === null || loadingPaneProps === void 0 ? void 0 : loadingPaneProps.styleProps),
@@ -45,10 +51,9 @@ export const LoadingPaneStateful = props => {
45
51
  hideSpinner: true,
46
52
  hideSpinnerText: true
47
53
  };
48
- const {
49
- height,
50
- width
51
- } = useWindowDimensions();
54
+ const _useWindowDimensions = useWindowDimensions(),
55
+ height = _useWindowDimensions.height,
56
+ width = _useWindowDimensions.width;
52
57
 
53
58
  // Move focus to the first button
54
59
  useEffect(() => {
@@ -1,3 +1,9 @@
1
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
2
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
4
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
5
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
1
7
  import { ConfirmationState, NotificationPaneConstants } from "../../common/Constants";
2
8
  import { LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
3
9
  import React, { useEffect, useRef } from "react";
@@ -21,14 +27,17 @@ export const NotificationPaneStateful = props => {
21
27
  Event: TelemetryEvent.UXNotificationPaneStart
22
28
  });
23
29
  }, []);
24
- const {
25
- notificationPaneProps,
26
- notificationScenarioType,
27
- endChat
28
- } = props;
29
- const [state, dispatch] = useChatContextStore();
30
+ const notificationPaneProps = props.notificationPaneProps,
31
+ notificationScenarioType = props.notificationScenarioType,
32
+ endChat = props.endChat;
33
+ const _useChatContextStore = useChatContextStore(),
34
+ _useChatContextStore2 = _slicedToArray(_useChatContextStore, 2),
35
+ state = _useChatContextStore2[0],
36
+ dispatch = _useChatContextStore2[1];
30
37
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
31
- const [adapter] = useChatAdapterStore();
38
+ const _useChatAdapterStore = useChatAdapterStore(),
39
+ _useChatAdapterStore2 = _slicedToArray(_useChatAdapterStore, 1),
40
+ adapter = _useChatAdapterStore2[0];
32
41
  const localConfirmationPaneState = useRef(state === null || state === void 0 || (_state$domainStates = state.domainStates) === null || _state$domainStates === void 0 ? void 0 : _state$domainStates.confirmationState);
33
42
  const onCloseChatClick = async () => {
34
43
  TelemetryHelper.logActionEvent(LogLevel.INFO, {
@@ -51,9 +60,7 @@ export const NotificationPaneStateful = props => {
51
60
  var _state$domainStates2;
52
61
  localConfirmationPaneState.current = state === null || state === void 0 || (_state$domainStates2 = state.domainStates) === null || _state$domainStates2 === void 0 ? void 0 : _state$domainStates2.confirmationState;
53
62
  }, [state === null || state === void 0 || (_state$domainStates3 = state.domainStates) === null || _state$domainStates3 === void 0 ? void 0 : _state$domainStates3.confirmationState]);
54
- const {
55
- useDismissNotification
56
- } = hooks;
63
+ const useDismissNotification = hooks.useDismissNotification;
57
64
  const dismissNotification = useDismissNotification();
58
65
  const handleDismissNotification = useCallback(() => {
59
66
  TelemetryHelper.logActionEvent(LogLevel.INFO, {
@@ -1,3 +1,9 @@
1
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
2
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
4
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
5
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
1
7
  import { LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
2
8
  import React, { useEffect } from "react";
3
9
  import { createTimer, findAllFocusableElement } from "../../common/utils";
@@ -17,7 +23,9 @@ export const OutOfOfficeHoursPaneStateful = props => {
17
23
  Description: "Out of office hours pane loading started."
18
24
  });
19
25
  }, []);
20
- const [state] = useChatContextStore();
26
+ const _useChatContextStore = useChatContextStore(),
27
+ _useChatContextStore2 = _slicedToArray(_useChatContextStore, 1),
28
+ state = _useChatContextStore2[0];
21
29
  const generalStyleProps = Object.assign({}, defaultGeneralStyleProps, (_props$styleProps = props.styleProps) === null || _props$styleProps === void 0 ? void 0 : _props$styleProps.generalStyleProps);
22
30
  const styleProps = {
23
31
  ...props.styleProps,
@@ -49,10 +57,9 @@ export const OutOfOfficeHoursPaneStateful = props => {
49
57
 
50
58
  // Enhanced titleText sanitization
51
59
  if (controlProps !== null && controlProps !== void 0 && controlProps.titleText) {
52
- const {
53
- cleanText,
54
- isXSSDetected
55
- } = detectAndCleanXSS(controlProps.titleText);
60
+ const _detectAndCleanXSS = detectAndCleanXSS(controlProps.titleText),
61
+ cleanText = _detectAndCleanXSS.cleanText,
62
+ isXSSDetected = _detectAndCleanXSS.isXSSDetected;
56
63
  if (!isXSSDetected) {
57
64
  // replace with the sanitized text
58
65
  controlProps.titleText = cleanText;
@@ -1,5 +1,11 @@
1
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
2
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
4
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
5
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
1
7
  import { LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
2
- import React, { useEffect } from "react";
8
+ import React, { useEffect, useState } from "react";
3
9
  import { createTimer, findAllFocusableElement } from "../../common/utils";
4
10
  import { LoadingPane } from "@microsoft/omnichannel-chat-components";
5
11
  import { TelemetryHelper } from "../../common/telemetry/TelemetryHelper";
@@ -7,14 +13,28 @@ import { defaultGeneralPostChatLoadingPaneStyleProps } from "./common/defaultgen
7
13
  import useChatContextStore from "../../hooks/useChatContextStore";
8
14
  let uiTimer;
9
15
  export const PostChatLoadingPaneStateful = props => {
10
- var _props$styleProps;
16
+ var _props$controlProps, _props$styleProps;
17
+ const defaultSubtitleText = "Please take a moment to give us feedback about your chat experience. We are loading the survey for you now.";
18
+ const subtitleText = ((_props$controlProps = props.controlProps) === null || _props$controlProps === void 0 ? void 0 : _props$controlProps.subtitleText) ?? defaultSubtitleText;
19
+ const _useState = useState(""),
20
+ _useState2 = _slicedToArray(_useState, 2),
21
+ announcedSubtitleText = _useState2[0],
22
+ setAnnouncedSubtitleText = _useState2[1];
11
23
  useEffect(() => {
12
24
  uiTimer = createTimer();
13
25
  TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
14
26
  Event: TelemetryEvent.UXPostChatLoadingPaneStart
15
27
  });
16
28
  }, []);
17
- const [state] = useChatContextStore();
29
+ useEffect(() => {
30
+ const timeout = window.setTimeout(() => {
31
+ setAnnouncedSubtitleText(subtitleText);
32
+ }, 0);
33
+ return () => window.clearTimeout(timeout);
34
+ }, [subtitleText]);
35
+ const _useChatContextStore = useChatContextStore(),
36
+ _useChatContextStore2 = _slicedToArray(_useChatContextStore, 1),
37
+ state = _useChatContextStore2[0];
18
38
  const generalStyleProps = Object.assign({}, defaultGeneralPostChatLoadingPaneStyleProps, (_props$styleProps = props.styleProps) === null || _props$styleProps === void 0 ? void 0 : _props$styleProps.generalStyleProps);
19
39
  const styleProps = {
20
40
  ...props.styleProps,
@@ -27,8 +47,11 @@ export const PostChatLoadingPaneStateful = props => {
27
47
  hideTitle: true,
28
48
  hideSpinner: true,
29
49
  hideSpinnerText: true,
30
- subtitleText: "Please take a moment to give us feedback about your chat experience. We are loading the survey for you now.",
31
- ...props.controlProps
50
+ ...props.controlProps,
51
+ role: "status",
52
+ "aria-live": "polite",
53
+ "aria-atomic": "true",
54
+ subtitleText: announcedSubtitleText
32
55
  };
33
56
 
34
57
  // Move focus to the first button
@@ -1,3 +1,9 @@
1
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
2
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
4
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
5
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
1
7
  import { ConversationStage, LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
2
8
  import React, { useEffect } from "react";
3
9
  import { ParticipantType } from "../../common/Constants";
@@ -33,7 +39,9 @@ export const PostChatSurveyPaneStateful = props => {
33
39
  }
34
40
  });
35
41
  }, []);
36
- const [state] = useChatContextStore();
42
+ const _useChatContextStore = useChatContextStore(),
43
+ _useChatContextStore2 = _slicedToArray(_useChatContextStore, 1),
44
+ state = _useChatContextStore2[0];
37
45
  const generalStyleProps = Object.assign({}, defaultGeneralPostChatSurveyPaneStyleProps, (_props$styleProps = props.styleProps) === null || _props$styleProps === void 0 ? void 0 : _props$styleProps.generalStyleProps, {
38
46
  display: state.appStates.isMinimized ? "none" : "contents"
39
47
  });
@@ -58,6 +66,7 @@ export const PostChatSurveyPaneStateful = props => {
58
66
  };
59
67
  const controlProps = {
60
68
  id: "oc-lcw-postchatsurvey-pane",
69
+ title: "Post-chat survey",
61
70
  surveyURL: ((_props$controlProps = props.controlProps) === null || _props$controlProps === void 0 ? void 0 : _props$controlProps.surveyURL) ?? surveyInviteLink,
62
71
  ...props.controlProps
63
72
  };
@@ -96,9 +105,7 @@ export const PostChatSurveyPaneStateful = props => {
96
105
  //Customer Voice Telemetry Events
97
106
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
98
107
  window.addEventListener("message", message => {
99
- const {
100
- data
101
- } = message;
108
+ const data = message.data;
102
109
  if (!data) return;
103
110
  if (data === CustomerVoiceEvents.ResponsePageLoaded) {
104
111
  TelemetryHelper.logActionEvent(LogLevel.INFO, {
@@ -1,6 +1,12 @@
1
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
2
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
4
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
5
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
1
7
  import { HtmlAttributeNames, Regex } from "../../common/Constants";
2
8
  import { ConversationStage, LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
3
- import React, { useEffect } from "react";
9
+ import React, { useEffect, useRef, useState } from "react";
4
10
  import { createTimer, extractPreChatSurveyResponseValues, findAllFocusableElement, getStateFromCache, getWidgetCacheId, isUndefinedOrEmpty, parseAdaptiveCardPayload } from "../../common/utils";
5
11
  import { ConversationState } from "../../contexts/common/ConversationState";
6
12
  import { LiveChatWidgetActionType } from "../../contexts/common/LiveChatWidgetActionType";
@@ -11,6 +17,34 @@ import { defaultGeneralPreChatSurveyPaneStyleProps } from "./common/defaultStyle
11
17
  import { defaultPreChatSurveyLocalizedTexts } from "./common/defaultProps/defaultPreChatSurveyLocalizedTexts";
12
18
  import useChatContextStore from "../../hooks/useChatContextStore";
13
19
  let uiTimer;
20
+ const getFocusedElementAnnouncement = element => {
21
+ var _element$textContent;
22
+ const ariaLabel = element.getAttribute(HtmlAttributeNames.ariaLabel);
23
+ if (ariaLabel) {
24
+ return ariaLabel.trim();
25
+ }
26
+ const ariaLabelledBy = element.getAttribute(HtmlAttributeNames.ariaLabelledby);
27
+ if (ariaLabelledBy) {
28
+ const labelledByText = ariaLabelledBy.split(/\s+/).map(id => {
29
+ var _document$getElementB;
30
+ return (_document$getElementB = document.getElementById(id)) === null || _document$getElementB === void 0 || (_document$getElementB = _document$getElementB.textContent) === null || _document$getElementB === void 0 ? void 0 : _document$getElementB.trim();
31
+ }).filter(Boolean).join(" ");
32
+ if (labelledByText) {
33
+ return labelledByText;
34
+ }
35
+ }
36
+ if (element.id) {
37
+ const label = Array.from(document.querySelectorAll("label")).find(candidate => candidate.htmlFor === element.id || candidate.getAttribute("for") === element.id);
38
+ if (label !== null && label !== void 0 && label.textContent) {
39
+ return label.textContent.trim();
40
+ }
41
+ }
42
+ const parentLabel = element.closest("label");
43
+ if (parentLabel !== null && parentLabel !== void 0 && parentLabel.textContent) {
44
+ return parentLabel.textContent.trim();
45
+ }
46
+ return ((_element$textContent = element.textContent) === null || _element$textContent === void 0 ? void 0 : _element$textContent.trim()) ?? "";
47
+ };
14
48
 
15
49
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
50
  export const PreChatSurveyPaneStateful = props => {
@@ -27,12 +61,18 @@ export const PreChatSurveyPaneStateful = props => {
27
61
  }, []);
28
62
 
29
63
  // Set MarkDown global variable to be used for prechat adaptive cards
30
- window["markdownit"] = MarkdownIt;
31
- const [state, dispatch] = useChatContextStore();
32
- const {
33
- surveyProps,
34
- initStartChat
35
- } = props;
64
+ window.markdownit = MarkdownIt;
65
+ const _useChatContextStore = useChatContextStore(),
66
+ _useChatContextStore2 = _slicedToArray(_useChatContextStore, 2),
67
+ state = _useChatContextStore2[0],
68
+ dispatch = _useChatContextStore2[1];
69
+ const surveyProps = props.surveyProps,
70
+ initStartChat = props.initStartChat;
71
+ const _useState = useState(""),
72
+ _useState2 = _slicedToArray(_useState, 2),
73
+ preChatFocusAnnouncement = _useState2[0],
74
+ setPreChatFocusAnnouncement = _useState2[1];
75
+ const liveRegionUpdateTimeout = useRef();
36
76
  const generalStyleProps = Object.assign({}, defaultGeneralPreChatSurveyPaneStyleProps, surveyProps === null || surveyProps === void 0 || (_surveyProps$stylePro = surveyProps.styleProps) === null || _surveyProps$stylePro === void 0 ? void 0 : _surveyProps$stylePro.generalStyleProps, {
37
77
  display: state.appStates.isMinimized ? "none" : ""
38
78
  });
@@ -119,6 +159,16 @@ export const PreChatSurveyPaneStateful = props => {
119
159
  ...(surveyProps === null || surveyProps === void 0 ? void 0 : surveyProps.styleProps),
120
160
  generalStyleProps: generalStyleProps
121
161
  };
162
+ const announceFocusedElement = event => {
163
+ if (liveRegionUpdateTimeout.current) {
164
+ window.clearTimeout(liveRegionUpdateTimeout.current);
165
+ }
166
+ const announcement = getFocusedElementAnnouncement(event.target);
167
+ setPreChatFocusAnnouncement("");
168
+ liveRegionUpdateTimeout.current = window.setTimeout(() => {
169
+ setPreChatFocusAnnouncement(announcement);
170
+ }, 0);
171
+ };
122
172
  useEffect(() => {
123
173
  // Set Aria-Label Attribute for Inputs
124
174
  const adaptiveCardElements = document.getElementsByClassName(HtmlAttributeNames.adaptiveCardClassName);
@@ -166,9 +216,53 @@ export const PreChatSurveyPaneStateful = props => {
166
216
  }
167
217
  }
168
218
  }, [state.appStates.isMinimized]);
169
- return /*#__PURE__*/React.createElement(PreChatSurveyPane, {
170
- controlProps: controlProps,
171
- styleProps: styleProps
172
- });
219
+ useEffect(() => () => {
220
+ if (liveRegionUpdateTimeout.current) {
221
+ window.clearTimeout(liveRegionUpdateTimeout.current);
222
+ }
223
+ }, []);
224
+ return (
225
+ /*#__PURE__*/
226
+ // Bug 6525143 / Bug 6423684: the LiveChatWidget container is a centered
227
+ // flex column (HeaderStateful first, this pane second) with
228
+ // justifyContent: center and clipped overflow. Sizing this focus-capture
229
+ // wrapper to height: 100% makes it 100% of the ENTIRE container rather than
230
+ // the space remaining below the header, so header + pane overflow the
231
+ // container and the centered column splits the overflow top & bottom -
232
+ // clipping the header's top edge. Instead, fill only the remaining space
233
+ // with flex (flex: 1 1 auto + minHeight: 0) and lay out as a column so the
234
+ // header stays fully visible while the inner pane (a flex child that grows
235
+ // via flexGrow/flexBasis - see defaultGeneralPreChatSurveyPaneStyleProps)
236
+ // fills the leftover area and scrolls, instead of collapsing to its
237
+ // intrinsic content size.
238
+ React.createElement("div", {
239
+ onFocusCapture: announceFocusedElement,
240
+ style: {
241
+ width: "100%",
242
+ flex: "1 1 auto",
243
+ minHeight: 0,
244
+ display: "flex",
245
+ flexDirection: "column"
246
+ }
247
+ }, /*#__PURE__*/React.createElement("div", {
248
+ role: "status",
249
+ "aria-live": "polite",
250
+ "aria-atomic": "true",
251
+ style: {
252
+ position: "absolute",
253
+ width: "1px",
254
+ height: "1px",
255
+ margin: "-1px",
256
+ padding: 0,
257
+ border: 0,
258
+ clip: "rect(0, 0, 0, 0)",
259
+ overflow: "hidden",
260
+ whiteSpace: "nowrap"
261
+ }
262
+ }, preChatFocusAnnouncement), /*#__PURE__*/React.createElement(PreChatSurveyPane, {
263
+ controlProps: controlProps,
264
+ styleProps: styleProps
265
+ }))
266
+ );
173
267
  };
174
268
  export default PreChatSurveyPaneStateful;
@@ -5,6 +5,17 @@ export const defaultGeneralPreChatSurveyPaneStyleProps = {
5
5
  backgroundColor: "#FFFFFF",
6
6
  borderColor: "#F1F1F1",
7
7
  overflowY: "auto",
8
- height: "inherit",
8
+ // Bug 6525143 / Bug 6423684: the focus-capture wrapper is a flex column sized to
9
+ // the space remaining below the header (flex: 1 1 auto). Fill that space via flex
10
+ // (flexGrow: 1 / flexBasis: 0 / minHeight: 0) instead of height: 100%, which
11
+ // resolved against the whole centered #oc-lcw container and pushed the header out
12
+ // (the clip). minHeight: 0 keeps the pane shrinkable so its overflowY scroll
13
+ // engages for tall surveys rather than growing the column and clipping the header.
14
+ // Note: the shared PreChatSurveyPane default (chat-components) still merges
15
+ // height: "inherit" underneath these props; under this flex parent that resolves
16
+ // to auto and is overridden by the flex main-size, so the pane still fills via flex.
17
+ flexGrow: 1,
18
+ flexBasis: 0,
19
+ minHeight: 0,
9
20
  width: "inherit"
10
21
  };
@@ -1,3 +1,9 @@
1
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
2
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
4
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
5
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
1
7
  import { BroadcastEvent, LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
2
8
  import React, { useEffect, useState } from "react";
3
9
  import { createTimer } from "../../common/utils";
@@ -21,13 +27,17 @@ export const ProactiveChatPaneStateful = props => {
21
27
  Description: "Proactive chat pane loading started."
22
28
  });
23
29
  }, []);
24
- const [state, dispatch] = useChatContextStore();
25
- const {
26
- proactiveChatProps,
27
- startChat
28
- } = props;
30
+ const _useChatContextStore = useChatContextStore(),
31
+ _useChatContextStore2 = _slicedToArray(_useChatContextStore, 2),
32
+ state = _useChatContextStore2[0],
33
+ dispatch = _useChatContextStore2[1];
34
+ const proactiveChatProps = props.proactiveChatProps,
35
+ startChat = props.startChat;
29
36
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
30
- const [timeoutRemoved, setTimeoutRemoved] = useState(false);
37
+ const _useState = useState(false),
38
+ _useState2 = _slicedToArray(_useState, 2),
39
+ timeoutRemoved = _useState2[0],
40
+ setTimeoutRemoved = _useState2[1];
31
41
  const handleProactiveChatInviteTimeout = () => {
32
42
  if (!timeoutRemoved) {
33
43
  setTimeoutRemoved(true);
@@ -1,3 +1,9 @@
1
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
2
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
4
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
5
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
1
7
  import { LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
2
8
  import React, { useEffect } from "react";
3
9
  import { createTimer, setFocusOnElement } from "../../common/utils";
@@ -16,15 +22,18 @@ export const ReconnectChatPaneStateful = props => {
16
22
  ElapsedTimeInMilliseconds: uiTimer.milliSecondsElapsed
17
23
  });
18
24
  }, []);
19
- const [state, dispatch] = useChatContextStore();
25
+ const _useChatContextStore = useChatContextStore(),
26
+ _useChatContextStore2 = _slicedToArray(_useChatContextStore, 2),
27
+ state = _useChatContextStore2[0],
28
+ dispatch = _useChatContextStore2[1];
20
29
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
21
30
  //const chatSDK: any = useChatSDKStore();
22
- const [facadeChatSDK] = useFacadeChatSDKStore();
31
+ const _useFacadeChatSDKStor = useFacadeChatSDKStore(),
32
+ _useFacadeChatSDKStor2 = _slicedToArray(_useFacadeChatSDKStor, 1),
33
+ facadeChatSDK = _useFacadeChatSDKStor2[0];
23
34
  const chatSDK = facadeChatSDK.getChatSDK();
24
- const {
25
- reconnectChatProps,
26
- initStartChat
27
- } = props;
35
+ const reconnectChatProps = props.reconnectChatProps,
36
+ initStartChat = props.initStartChat;
28
37
  const startChat = async continueChat => {
29
38
  dispatch({
30
39
  type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
@@ -1,3 +1,9 @@
1
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
2
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
4
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
5
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
1
7
  import { LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
2
8
  import React, { useEffect } from "react";
3
9
  import { createTimer, findAllFocusableElement } from "../../common/utils";
@@ -20,7 +26,9 @@ export const StartChatErrorPaneStateful = startChatErrorPaneProps => {
20
26
  Event: TelemetryEvent.UXStartChatErrorPaneStart
21
27
  });
22
28
  }, []);
23
- const [state] = useChatContextStore();
29
+ const _useChatContextStore = useChatContextStore(),
30
+ _useChatContextStore2 = _slicedToArray(_useChatContextStore, 1),
31
+ state = _useChatContextStore2[0];
24
32
  const generalStyleProps = Object.assign({}, defaultStartChatErrorPaneGeneralStyleProps, startChatErrorPaneProps === null || startChatErrorPaneProps === void 0 || (_startChatErrorPanePr = startChatErrorPaneProps.styleProps) === null || _startChatErrorPanePr === void 0 ? void 0 : _startChatErrorPanePr.generalStyleProps);
25
33
  const titleStyleProps = Object.assign({}, defaultStartChatErrorPaneTitleStyleProps, startChatErrorPaneProps === null || startChatErrorPaneProps === void 0 || (_startChatErrorPanePr2 = startChatErrorPaneProps.styleProps) === null || _startChatErrorPanePr2 === void 0 ? void 0 : _startChatErrorPanePr2.titleStyleProps);
26
34
  const subtitleStyleProps = Object.assign({}, defaultStartChatErrorPaneSubtitleStyleProps, startChatErrorPaneProps === null || startChatErrorPaneProps === void 0 || (_startChatErrorPanePr3 = startChatErrorPaneProps.styleProps) === null || _startChatErrorPanePr3 === void 0 ? void 0 : _startChatErrorPanePr3.subtitleStyleProps);