botframework-webchat-component 4.14.1 → 4.15.0

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 (371) hide show
  1. package/.eslintrc.yml +4 -106
  2. package/.prettierrc.yml +1 -1
  3. package/lib/Activity/CarouselFilmStrip.js +1 -1
  4. package/lib/Activity/CarouselFilmStripAttachment.js +1 -1
  5. package/lib/Activity/Speak.js +1 -1
  6. package/lib/Activity/StackedLayout.d.ts.map +1 -1
  7. package/lib/Activity/StackedLayout.js +2 -2
  8. package/lib/Attachment/FileAttachment.js +2 -2
  9. package/lib/Attachment/FileContent.d.ts.map +1 -1
  10. package/lib/Attachment/FileContent.js +11 -1
  11. package/lib/BasicSendBox.js +1 -1
  12. package/lib/BasicToaster.js +5 -2
  13. package/lib/BasicTranscript.d.ts +7 -0
  14. package/lib/BasicTranscript.d.ts.map +1 -0
  15. package/lib/BasicTranscript.js +368 -725
  16. package/lib/BasicTypingIndicator.d.ts +2 -1
  17. package/lib/BasicTypingIndicator.d.ts.map +1 -1
  18. package/lib/BasicTypingIndicator.js +12 -4
  19. package/lib/Composer.d.ts.map +1 -1
  20. package/lib/Composer.js +34 -29
  21. package/lib/Middleware/Activity/createCoreMiddleware.d.ts.map +1 -1
  22. package/lib/Middleware/Activity/createCoreMiddleware.js +1 -1
  23. package/lib/Middleware/ActivityStatus/SendStatus/SendStatus.js +1 -1
  24. package/lib/Middleware/ActivityStatus/createSendStatusMiddleware.js +18 -15
  25. package/lib/Middleware/Attachment/createCoreMiddleware.js +2 -5
  26. package/lib/Middleware/AttachmentForScreenReader/createCoreMiddleware.d.ts.map +1 -1
  27. package/lib/Middleware/AttachmentForScreenReader/createCoreMiddleware.js +1 -1
  28. package/lib/Middleware/Avatar/createCoreMiddleware.d.ts.map +1 -1
  29. package/lib/Middleware/Avatar/createCoreMiddleware.js +2 -3
  30. package/lib/Middleware/CardAction/createCoreMiddleware.js +10 -3
  31. package/lib/Middleware/ScrollToEndButton/createScrollToEndButtonMiddleware.d.ts.map +1 -1
  32. package/lib/Middleware/ScrollToEndButton/createScrollToEndButtonMiddleware.js +1 -1
  33. package/lib/Middleware/Toast/createCoreMiddleware.d.ts.map +1 -1
  34. package/lib/Middleware/Toast/createCoreMiddleware.js +1 -1
  35. package/lib/Middleware/TypingIndicator/createCoreMiddleware.d.ts.map +1 -1
  36. package/lib/Middleware/TypingIndicator/createCoreMiddleware.js +8 -6
  37. package/lib/ScreenReaderActivity.js +14 -5
  38. package/lib/ScreenReaderText.d.ts +9 -0
  39. package/lib/ScreenReaderText.d.ts.map +1 -0
  40. package/lib/ScreenReaderText.js +22 -8
  41. package/lib/SendBox/DictationInterims.js +1 -1
  42. package/lib/SendBox/IconButton.d.ts +11 -0
  43. package/lib/SendBox/IconButton.d.ts.map +1 -0
  44. package/lib/SendBox/IconButton.js +26 -6
  45. package/lib/SendBox/MicrophoneButton.js +1 -1
  46. package/lib/SendBox/SendButton.js +1 -1
  47. package/lib/SendBox/SuggestedAction.d.ts +17 -0
  48. package/lib/SendBox/SuggestedAction.d.ts.map +1 -0
  49. package/lib/SendBox/SuggestedAction.js +25 -16
  50. package/lib/SendBox/SuggestedActions.d.ts.map +1 -1
  51. package/lib/SendBox/SuggestedActions.js +25 -8
  52. package/lib/SendBox/TextBox.js +1 -1
  53. package/lib/SendBox/UploadButton.js +1 -1
  54. package/lib/Styles/StyleSet/BasicTranscript.d.ts +13 -5
  55. package/lib/Styles/StyleSet/BasicTranscript.d.ts.map +1 -1
  56. package/lib/Styles/StyleSet/BasicTranscript.js +21 -9
  57. package/lib/Styles/StyleSet/Bubble.d.ts.map +1 -1
  58. package/lib/Styles/StyleSet/Bubble.js +1 -1
  59. package/lib/Styles/StyleSet/CarouselFilmStrip.d.ts.map +1 -1
  60. package/lib/Styles/StyleSet/CarouselFilmStrip.js +1 -1
  61. package/lib/Styles/StyleSet/CarouselFilmStripAttachment.d.ts.map +1 -1
  62. package/lib/Styles/StyleSet/CarouselFilmStripAttachment.js +1 -1
  63. package/lib/Styles/StyleSet/KeyboardHelp.d.ts +123 -0
  64. package/lib/Styles/StyleSet/KeyboardHelp.d.ts.map +1 -0
  65. package/lib/Styles/StyleSet/KeyboardHelp.js +145 -0
  66. package/lib/Styles/StyleSet/ScrollToEndButton.d.ts +1 -1
  67. package/lib/Styles/StyleSet/ScrollToEndButton.js +2 -2
  68. package/lib/Styles/StyleSet/SendBoxButton.d.ts +56 -10
  69. package/lib/Styles/StyleSet/SendBoxButton.d.ts.map +1 -1
  70. package/lib/Styles/StyleSet/SendBoxButton.js +76 -12
  71. package/lib/Styles/StyleSet/SendBoxTextBox.d.ts +1 -1
  72. package/lib/Styles/StyleSet/SendBoxTextBox.d.ts.map +1 -1
  73. package/lib/Styles/StyleSet/SendBoxTextBox.js +3 -3
  74. package/lib/Styles/StyleSet/StackedLayout.d.ts.map +1 -1
  75. package/lib/Styles/StyleSet/StackedLayout.js +1 -1
  76. package/lib/Styles/StyleSet/SuggestedAction.d.ts +73 -28
  77. package/lib/Styles/StyleSet/SuggestedAction.d.ts.map +1 -1
  78. package/lib/Styles/StyleSet/SuggestedAction.js +116 -41
  79. package/lib/Styles/StyleSet/SuggestedActions.d.ts +13 -6
  80. package/lib/Styles/StyleSet/SuggestedActions.d.ts.map +1 -1
  81. package/lib/Styles/StyleSet/SuggestedActions.js +13 -6
  82. package/lib/Styles/createStyleSet.d.ts +323 -54
  83. package/lib/Styles/createStyleSet.d.ts.map +1 -1
  84. package/lib/Styles/createStyleSet.js +4 -1
  85. package/lib/Styles/mirrorStyle.js +12 -3
  86. package/lib/Toast/NotificationIcon.js +7 -3
  87. package/lib/Toast/createToastMiddleware.d.ts.map +1 -1
  88. package/lib/Toast/createToastMiddleware.js +1 -1
  89. package/lib/Transcript/ActivityRow.d.ts +9 -0
  90. package/lib/Transcript/ActivityRow.d.ts.map +1 -0
  91. package/lib/Transcript/ActivityRow.js +157 -0
  92. package/lib/Transcript/ActivityTextAlt.js +57 -0
  93. package/lib/Transcript/FocusTrap.d.ts +8 -0
  94. package/lib/Transcript/FocusTrap.d.ts.map +1 -0
  95. package/lib/Transcript/FocusTrap.js +74 -0
  96. package/lib/Transcript/KeyboardHelp.d.ts +4 -0
  97. package/lib/Transcript/KeyboardHelp.d.ts.map +1 -0
  98. package/lib/Transcript/KeyboardHelp.js +550 -0
  99. package/lib/Transcript/LiveRegionTranscript.d.ts +8 -0
  100. package/lib/Transcript/LiveRegionTranscript.d.ts.map +1 -0
  101. package/lib/Transcript/LiveRegionTranscript.js +214 -0
  102. package/lib/Transcript/types.d.ts +2 -0
  103. package/lib/Transcript/types.d.ts.map +1 -0
  104. package/lib/Transcript/types.js +2 -0
  105. package/lib/Transcript/useActivityAccessibleName.d.ts +4 -0
  106. package/lib/Transcript/useActivityAccessibleName.d.ts.map +1 -0
  107. package/lib/Transcript/useActivityAccessibleName.js +97 -0
  108. package/lib/Utils/AccessibleButton.d.ts +11 -0
  109. package/lib/Utils/AccessibleButton.d.ts.map +1 -0
  110. package/lib/Utils/AccessibleButton.js +11 -6
  111. package/lib/Utils/FocusRedirector.d.ts +9 -0
  112. package/lib/Utils/FocusRedirector.d.ts.map +1 -0
  113. package/lib/Utils/FocusRedirector.js +16 -13
  114. package/lib/Utils/InlineMarkdown.js +12 -5
  115. package/lib/Utils/TypeFocusSink/inputtableKey.d.ts +2 -0
  116. package/lib/Utils/TypeFocusSink/inputtableKey.d.ts.map +1 -0
  117. package/lib/Utils/TypeFocusSink/inputtableKey.js +5 -2
  118. package/lib/Utils/activityAltText.d.ts +8 -0
  119. package/lib/Utils/activityAltText.d.ts.map +1 -0
  120. package/lib/Utils/createCustomEvent.js +8 -2
  121. package/lib/Utils/detectBrowser.js +4 -2
  122. package/lib/Utils/downscaleImageToDataURL/downscaleImageToDataURLUsingWorker.js +1 -1
  123. package/lib/Utils/findAncestor.js +17 -0
  124. package/lib/Utils/getActivityUniqueId.js +4 -2
  125. package/lib/Utils/intersectionOf.d.ts +5 -0
  126. package/lib/Utils/intersectionOf.d.ts.map +1 -0
  127. package/lib/Utils/intersectionOf.js +17 -2
  128. package/lib/Utils/isZeroOrPositive.d.ts +5 -0
  129. package/lib/Utils/isZeroOrPositive.d.ts.map +1 -0
  130. package/lib/Utils/isZeroOrPositive.js +4 -1
  131. package/lib/Utils/mapMap.js +9 -2
  132. package/lib/Utils/readDataURIToBlob.js +1 -1
  133. package/lib/Utils/scrollIntoViewWithBlockNearest.d.ts +7 -0
  134. package/lib/Utils/scrollIntoViewWithBlockNearest.d.ts.map +1 -0
  135. package/lib/Utils/scrollIntoViewWithBlockNearest.js +48 -0
  136. package/lib/Utils/shallowEquals.js +7 -3
  137. package/lib/Utils/supportPseudoClass.d.ts +2 -0
  138. package/lib/Utils/supportPseudoClass.d.ts.map +1 -0
  139. package/lib/Utils/supportPseudoClass.js +23 -0
  140. package/lib/Utils/tabbableElements.d.ts +2 -0
  141. package/lib/Utils/tabbableElements.d.ts.map +1 -0
  142. package/lib/Utils/tabbableElements.js +2 -2
  143. package/lib/connectToWebChat.js +13 -5
  144. package/lib/hooks/index.js +24 -24
  145. package/lib/hooks/internal/BypassSpeechSynthesisPonyfill.js +5 -4
  146. package/lib/hooks/internal/useChanged.js +8 -1
  147. package/lib/hooks/internal/useDispatchScrollPosition.js +3 -7
  148. package/lib/hooks/internal/useDispatchTranscriptFocusByActivityKey.d.ts +2 -0
  149. package/lib/hooks/internal/useDispatchTranscriptFocusByActivityKey.d.ts.map +1 -0
  150. package/lib/hooks/internal/useDispatchTranscriptFocusByActivityKey.js +15 -0
  151. package/lib/hooks/internal/useFocusVisible.d.ts +3 -0
  152. package/lib/hooks/internal/useFocusVisible.d.ts.map +1 -0
  153. package/lib/hooks/internal/useFocusVisible.js +48 -0
  154. package/lib/hooks/internal/useMemoWithPrevious.d.ts +3 -0
  155. package/lib/hooks/internal/useMemoWithPrevious.d.ts.map +1 -0
  156. package/lib/hooks/internal/useMemoWithPrevious.js +22 -0
  157. package/lib/hooks/internal/useMemoize.d.ts +14 -0
  158. package/lib/hooks/internal/useMemoize.d.ts.map +1 -0
  159. package/lib/hooks/internal/useMemoize.js +11 -2
  160. package/lib/hooks/internal/useObserveFocusVisible.d.ts +3 -0
  161. package/lib/hooks/internal/useObserveFocusVisible.d.ts.map +1 -0
  162. package/lib/hooks/internal/useObserveFocusVisible.js +208 -0
  163. package/lib/hooks/internal/usePrevious.d.ts +2 -0
  164. package/lib/hooks/internal/usePrevious.d.ts.map +1 -0
  165. package/lib/hooks/internal/usePrevious.js +18 -0
  166. package/lib/hooks/internal/useStateRef.d.ts +3 -0
  167. package/lib/hooks/internal/useStateRef.d.ts.map +1 -0
  168. package/lib/hooks/internal/useStateRef.js +40 -0
  169. package/lib/hooks/internal/useValueRef.d.ts +3 -0
  170. package/lib/hooks/internal/useValueRef.d.ts.map +1 -0
  171. package/lib/hooks/internal/useValueRef.js +25 -0
  172. package/lib/hooks/useFocus.d.ts +1 -1
  173. package/lib/hooks/useFocus.d.ts.map +1 -1
  174. package/lib/hooks/useFocus.js +1 -1
  175. package/lib/hooks/useRenderMarkdownAsHTML.d.ts.map +1 -1
  176. package/lib/hooks/useRenderMarkdownAsHTML.js +1 -1
  177. package/lib/hooks/useScrollTo.d.ts.map +1 -1
  178. package/lib/hooks/useScrollTo.js +1 -1
  179. package/lib/hooks/useScrollToEnd.d.ts.map +1 -1
  180. package/lib/hooks/useScrollToEnd.js +1 -1
  181. package/lib/index.d.ts +10 -0
  182. package/lib/index.d.ts.map +1 -1
  183. package/lib/index.js +17 -15
  184. package/lib/providers/ActivityTree/ActivityTreeComposer.d.ts +5 -0
  185. package/lib/providers/ActivityTree/ActivityTreeComposer.d.ts.map +1 -0
  186. package/lib/providers/ActivityTree/ActivityTreeComposer.js +86 -0
  187. package/lib/providers/ActivityTree/private/Context.d.ts +9 -0
  188. package/lib/providers/ActivityTree/private/Context.d.ts.map +1 -0
  189. package/lib/providers/ActivityTree/private/Context.js +13 -0
  190. package/lib/providers/ActivityTree/private/types.d.ts +10 -0
  191. package/lib/providers/ActivityTree/private/types.d.ts.map +1 -0
  192. package/lib/providers/ActivityTree/private/types.js +2 -0
  193. package/lib/providers/ActivityTree/private/useActivitiesWithRenderer.d.ts +4 -0
  194. package/lib/providers/ActivityTree/private/useActivitiesWithRenderer.d.ts.map +1 -0
  195. package/lib/providers/ActivityTree/private/useActivitiesWithRenderer.js +58 -0
  196. package/lib/providers/ActivityTree/private/useActivityTreeWithRenderer.d.ts +5 -0
  197. package/lib/providers/ActivityTree/private/useActivityTreeWithRenderer.d.ts.map +1 -0
  198. package/lib/providers/ActivityTree/private/useActivityTreeWithRenderer.js +166 -0
  199. package/lib/providers/ActivityTree/private/useContext.d.ts +3 -0
  200. package/lib/providers/ActivityTree/private/useContext.d.ts.map +1 -0
  201. package/lib/providers/ActivityTree/private/useContext.js +24 -0
  202. package/lib/providers/ActivityTree/useActivityTreeWithRenderer.d.ts +8 -0
  203. package/lib/providers/ActivityTree/useActivityTreeWithRenderer.d.ts.map +1 -0
  204. package/lib/providers/ActivityTree/useActivityTreeWithRenderer.js +17 -0
  205. package/lib/providers/LiveRegionTwin/LiveRegionTwinComposer.d.ts +35 -0
  206. package/lib/providers/LiveRegionTwin/LiveRegionTwinComposer.d.ts.map +1 -0
  207. package/lib/providers/LiveRegionTwin/LiveRegionTwinComposer.js +156 -0
  208. package/lib/providers/LiveRegionTwin/private/Context.d.ts +10 -0
  209. package/lib/providers/LiveRegionTwin/private/Context.d.ts.map +1 -0
  210. package/lib/providers/LiveRegionTwin/private/Context.js +13 -0
  211. package/lib/providers/LiveRegionTwin/private/LiveRegionTwinContainer.d.ts +11 -0
  212. package/lib/providers/LiveRegionTwin/private/LiveRegionTwinContainer.d.ts.map +1 -0
  213. package/lib/providers/LiveRegionTwin/private/LiveRegionTwinContainer.js +86 -0
  214. package/lib/providers/LiveRegionTwin/private/types.d.ts +8 -0
  215. package/lib/providers/LiveRegionTwin/private/types.d.ts.map +1 -0
  216. package/lib/providers/LiveRegionTwin/private/types.js +2 -0
  217. package/lib/providers/LiveRegionTwin/private/useContext.d.ts +3 -0
  218. package/lib/providers/LiveRegionTwin/private/useContext.d.ts.map +1 -0
  219. package/lib/providers/LiveRegionTwin/private/useContext.js +24 -0
  220. package/lib/providers/LiveRegionTwin/private/useMarkAllAsRenderedEffect.d.ts +2 -0
  221. package/lib/providers/LiveRegionTwin/private/useMarkAllAsRenderedEffect.d.ts.map +1 -0
  222. package/lib/providers/LiveRegionTwin/private/useMarkAllAsRenderedEffect.js +24 -0
  223. package/lib/providers/LiveRegionTwin/private/useStaticElementEntries.d.ts +3 -0
  224. package/lib/providers/LiveRegionTwin/private/useStaticElementEntries.d.ts.map +1 -0
  225. package/lib/providers/LiveRegionTwin/private/useStaticElementEntries.js +15 -0
  226. package/lib/providers/LiveRegionTwin/useQueueStaticElement.d.ts +8 -0
  227. package/lib/providers/LiveRegionTwin/useQueueStaticElement.d.ts.map +1 -0
  228. package/lib/providers/LiveRegionTwin/useQueueStaticElement.js +20 -0
  229. package/lib/providers/TranscriptFocus/TranscriptFocusComposer.d.ts +7 -0
  230. package/lib/providers/TranscriptFocus/TranscriptFocusComposer.d.ts.map +1 -0
  231. package/lib/providers/TranscriptFocus/TranscriptFocusComposer.js +184 -0
  232. package/lib/providers/TranscriptFocus/private/Context.d.ts +12 -0
  233. package/lib/providers/TranscriptFocus/private/Context.d.ts.map +1 -0
  234. package/lib/providers/TranscriptFocus/private/Context.js +13 -0
  235. package/lib/providers/TranscriptFocus/private/useContext.d.ts +2 -0
  236. package/lib/providers/TranscriptFocus/private/useContext.d.ts.map +1 -0
  237. package/lib/providers/TranscriptFocus/private/useContext.js +24 -0
  238. package/lib/providers/TranscriptFocus/useActiveDescendantId.d.ts +2 -0
  239. package/lib/providers/TranscriptFocus/useActiveDescendantId.d.ts.map +1 -0
  240. package/lib/providers/TranscriptFocus/useActiveDescendantId.js +15 -0
  241. package/lib/providers/TranscriptFocus/useFocusByActivityKey.d.ts +8 -0
  242. package/lib/providers/TranscriptFocus/useFocusByActivityKey.d.ts.map +1 -0
  243. package/lib/providers/TranscriptFocus/useFocusByActivityKey.js +21 -0
  244. package/lib/providers/TranscriptFocus/useFocusRelativeActivity.d.ts +2 -0
  245. package/lib/providers/TranscriptFocus/useFocusRelativeActivity.d.ts.map +1 -0
  246. package/lib/providers/TranscriptFocus/useFocusRelativeActivity.js +15 -0
  247. package/lib/providers/TranscriptFocus/useFocusedActivityKey.d.ts +2 -0
  248. package/lib/providers/TranscriptFocus/useFocusedActivityKey.d.ts.map +1 -0
  249. package/lib/providers/TranscriptFocus/useFocusedActivityKey.js +15 -0
  250. package/lib/providers/TranscriptFocus/useFocusedExplicitly.d.ts +2 -0
  251. package/lib/providers/TranscriptFocus/useFocusedExplicitly.d.ts.map +1 -0
  252. package/lib/providers/TranscriptFocus/useFocusedExplicitly.js +15 -0
  253. package/lib/providers/TranscriptFocus/useGetDescendantIdByActivityKey.d.ts +2 -0
  254. package/lib/providers/TranscriptFocus/useGetDescendantIdByActivityKey.d.ts.map +1 -0
  255. package/lib/providers/TranscriptFocus/useGetDescendantIdByActivityKey.js +15 -0
  256. package/package.json +17 -24
  257. package/src/Activity/CarouselFilmStripAttachment.js +0 -1
  258. package/src/Activity/StackedLayout.tsx +10 -9
  259. package/src/Attachment/FileAttachment.js +1 -1
  260. package/src/Attachment/FileContent.tsx +12 -0
  261. package/src/BasicToaster.js +5 -1
  262. package/src/BasicTranscript.tsx +878 -0
  263. package/src/BasicTypingIndicator.tsx +3 -2
  264. package/src/Composer.tsx +41 -29
  265. package/src/Middleware/Activity/createCoreMiddleware.tsx +50 -44
  266. package/src/Middleware/ActivityStatus/createSendStatusMiddleware.js +2 -0
  267. package/src/Middleware/Attachment/createCoreMiddleware.tsx +28 -28
  268. package/src/Middleware/AttachmentForScreenReader/createCoreMiddleware.tsx +25 -23
  269. package/src/Middleware/Avatar/createCoreMiddleware.tsx +9 -8
  270. package/src/Middleware/CardAction/createCoreMiddleware.js +9 -2
  271. package/src/Middleware/ScrollToEndButton/createScrollToEndButtonMiddleware.ts +11 -9
  272. package/src/Middleware/Toast/createCoreMiddleware.tsx +12 -10
  273. package/src/Middleware/TypingIndicator/createCoreMiddleware.tsx +8 -2
  274. package/src/ScreenReaderActivity.js +18 -3
  275. package/src/{ScreenReaderText.js → ScreenReaderText.tsx} +27 -9
  276. package/src/SendBox/{IconButton.js → IconButton.tsx} +19 -3
  277. package/src/SendBox/{SuggestedAction.js → SuggestedAction.tsx} +72 -35
  278. package/src/SendBox/SuggestedActions.tsx +47 -20
  279. package/src/Styles/StyleSet/BasicTranscript.ts +34 -20
  280. package/src/Styles/StyleSet/Bubble.ts +0 -1
  281. package/src/Styles/StyleSet/CarouselFilmStrip.ts +12 -10
  282. package/src/Styles/StyleSet/CarouselFilmStripAttachment.ts +4 -3
  283. package/src/Styles/StyleSet/KeyboardHelp.ts +157 -0
  284. package/src/Styles/StyleSet/ScrollToEndButton.ts +1 -1
  285. package/src/Styles/StyleSet/SendBoxButton.ts +84 -13
  286. package/src/Styles/StyleSet/SendBoxTextBox.ts +1 -2
  287. package/src/Styles/StyleSet/StackedLayout.ts +13 -11
  288. package/src/Styles/StyleSet/SuggestedAction.ts +129 -42
  289. package/src/Styles/StyleSet/SuggestedActions.ts +13 -5
  290. package/src/Styles/createStyleSet.ts +2 -1
  291. package/src/Styles/mirrorStyle.js +10 -2
  292. package/src/Toast/NotificationIcon.js +4 -1
  293. package/src/Toast/createToastMiddleware.tsx +4 -1
  294. package/src/Transcript/ActivityRow.tsx +124 -0
  295. package/src/Transcript/ActivityTextAlt.tsx +32 -0
  296. package/src/Transcript/FocusTrap.tsx +64 -0
  297. package/src/Transcript/KeyboardHelp.tsx +282 -0
  298. package/src/Transcript/LiveRegionTranscript.tsx +181 -0
  299. package/src/Transcript/types.ts +1 -0
  300. package/src/Transcript/useActivityAccessibleName.ts +85 -0
  301. package/src/Utils/{AccessibleButton.js → AccessibleButton.tsx} +19 -4
  302. package/src/Utils/{FocusRedirector.js → FocusRedirector.tsx} +21 -8
  303. package/src/Utils/InlineMarkdown.js +18 -2
  304. package/src/Utils/TypeFocusSink/inputtableKey.ts +5 -1
  305. package/src/Utils/createCustomEvent.js +7 -1
  306. package/src/Utils/detectBrowser.js +2 -1
  307. package/src/Utils/findAncestor.ts +12 -0
  308. package/src/Utils/getActivityUniqueId.ts +5 -0
  309. package/src/Utils/intersectionOf.ts +14 -0
  310. package/src/Utils/isZeroOrPositive.ts +7 -0
  311. package/src/Utils/mapMap.js +7 -1
  312. package/src/Utils/scrollIntoViewWithBlockNearest.ts +20 -0
  313. package/src/Utils/shallowEquals.js +8 -1
  314. package/src/Utils/supportPseudoClass.ts +17 -0
  315. package/src/Utils/{tabbableElements.js → tabbableElements.ts} +6 -5
  316. package/src/connectToWebChat.js +11 -4
  317. package/src/hooks/internal/BypassSpeechSynthesisPonyfill.js +3 -1
  318. package/src/hooks/internal/useChanged.ts +17 -0
  319. package/src/hooks/internal/useDispatchScrollPosition.js +1 -3
  320. package/src/hooks/internal/useDispatchTranscriptFocusByActivityKey.ts +5 -0
  321. package/src/hooks/internal/useFocusVisible.ts +22 -0
  322. package/src/hooks/internal/useMemoWithPrevious.ts +16 -0
  323. package/src/hooks/internal/useMemoize.spec.js +1 -1
  324. package/src/hooks/internal/useMemoize.ts +53 -0
  325. package/src/hooks/internal/useObserveFocusVisible.ts +252 -0
  326. package/src/hooks/internal/usePrevious.ts +12 -0
  327. package/src/hooks/internal/useStateRef.ts +31 -0
  328. package/src/hooks/internal/useValueRef.ts +22 -0
  329. package/src/hooks/useFocus.ts +1 -1
  330. package/src/hooks/useRenderMarkdownAsHTML.ts +4 -5
  331. package/src/hooks/useScrollTo.ts +4 -3
  332. package/src/hooks/useScrollToEnd.ts +4 -3
  333. package/src/index.ts +0 -1
  334. package/src/providers/ActivityTree/ActivityTreeComposer.tsx +74 -0
  335. package/src/providers/ActivityTree/private/Context.ts +12 -0
  336. package/src/providers/ActivityTree/private/types.ts +12 -0
  337. package/src/providers/ActivityTree/private/useActivitiesWithRenderer.ts +66 -0
  338. package/src/providers/ActivityTree/private/useActivityTreeWithRenderer.ts +140 -0
  339. package/src/providers/ActivityTree/private/useContext.ts +15 -0
  340. package/src/providers/ActivityTree/useActivityTreeWithRenderer.ts +16 -0
  341. package/src/providers/LiveRegionTwin/LiveRegionTwinComposer.tsx +154 -0
  342. package/src/providers/LiveRegionTwin/private/Context.ts +15 -0
  343. package/src/providers/LiveRegionTwin/private/LiveRegionTwinContainer.tsx +64 -0
  344. package/src/providers/LiveRegionTwin/private/types.ts +10 -0
  345. package/src/providers/LiveRegionTwin/private/useContext.ts +15 -0
  346. package/src/providers/LiveRegionTwin/private/useMarkAllAsRenderedEffect.ts +13 -0
  347. package/src/providers/LiveRegionTwin/private/useStaticElementEntries.ts +7 -0
  348. package/src/providers/LiveRegionTwin/useQueueStaticElement.ts +12 -0
  349. package/src/providers/TranscriptFocus/TranscriptFocusComposer.tsx +180 -0
  350. package/src/providers/TranscriptFocus/private/Context.ts +16 -0
  351. package/src/providers/TranscriptFocus/private/useContext.ts +13 -0
  352. package/src/providers/TranscriptFocus/useActiveDescendantId.ts +5 -0
  353. package/src/providers/TranscriptFocus/useFocusByActivityKey.ts +14 -0
  354. package/src/providers/TranscriptFocus/useFocusRelativeActivity.ts +5 -0
  355. package/src/providers/TranscriptFocus/useFocusedActivityKey.ts +5 -0
  356. package/src/providers/TranscriptFocus/useFocusedExplicitly.ts +5 -0
  357. package/src/providers/TranscriptFocus/useGetDescendantIdByActivityKey.ts +5 -0
  358. package/.eslintignore +0 -1
  359. package/lib/Utils/findLastIndex.js +0 -32
  360. package/lib/hooks/internal/useAcknowledgedActivity.js +0 -90
  361. package/lib/hooks/internal/useDispatchTranscriptFocus.js +0 -19
  362. package/src/BasicTranscript.js +0 -1139
  363. package/src/Utils/findLastIndex.js +0 -11
  364. package/src/Utils/findLastIndex.spec.js +0 -31
  365. package/src/Utils/getActivityUniqueId.js +0 -3
  366. package/src/Utils/intersectionOf.js +0 -11
  367. package/src/Utils/isZeroOrPositive.js +0 -4
  368. package/src/hooks/internal/useAcknowledgedActivity.js +0 -65
  369. package/src/hooks/internal/useChanged.js +0 -10
  370. package/src/hooks/internal/useDispatchTranscriptFocus.js +0 -7
  371. package/src/hooks/internal/useMemoize.js +0 -37
@@ -1,11 +0,0 @@
1
- export default function findLastIndex(array, predicate) {
2
- const index = [...array].reverse().findIndex(predicate);
3
-
4
- if (~index) {
5
- const { length } = array || [];
6
-
7
- return length - index - 1;
8
- }
9
-
10
- return index;
11
- }
@@ -1,31 +0,0 @@
1
- /* eslint no-magic-numbers: "off" */
2
-
3
- import findLastIndex from './findLastIndex';
4
-
5
- describe('find last index', () => {
6
- test('of an existing element should return the index of last occurrence', () => {
7
- const actual = findLastIndex([1, 2, 3, 2, 1], value => value === 2);
8
-
9
- expect(actual).toBe(3);
10
- });
11
-
12
- test('of a non-existing element should return -1', () => {
13
- const actual = findLastIndex([1, 2, 3, 2, 1], value => value === 4);
14
-
15
- expect(actual).toBe(-1);
16
- });
17
-
18
- test('of an empty array should return -1', () => {
19
- const actual = findLastIndex([], value => value === 1);
20
-
21
- expect(actual).toBe(-1);
22
- });
23
-
24
- test('without a predicate should throw', () => {
25
- expect(() => findLastIndex([])).toThrowError('not a function');
26
- });
27
-
28
- test('without an array should throw', () => {
29
- expect(() => findLastIndex(undefined, value => value === 1)).toThrowError();
30
- });
31
- });
@@ -1,3 +0,0 @@
1
- export default function getActivityUniqueId(activity) {
2
- return activity && ((activity.channelData && activity.channelData.clientActivityID) || activity.id);
3
- }
@@ -1,11 +0,0 @@
1
- export default function intersectionOf(arg0, ...args) {
2
- return args.reduce(
3
- (interim, arg) =>
4
- interim.reduce((intersection, item) => {
5
- arg.includes(item) && intersection.push(item);
6
-
7
- return intersection;
8
- }, []),
9
- arg0
10
- );
11
- }
@@ -1,4 +0,0 @@
1
- export default function isZeroOrPositive(value) {
2
- // This will handle minus-zero.
3
- return 1 / value >= 0;
4
- }
@@ -1,65 +0,0 @@
1
- import { hooks } from 'botframework-webchat-api';
2
- import { useMemo, useRef } from 'react';
3
- import { useSticky } from 'react-scroll-to-bottom';
4
-
5
- import findLastIndex from '../../Utils/findLastIndex';
6
- import getActivityUniqueId from '../../Utils/getActivityUniqueId';
7
- import useChanged from './useChanged';
8
-
9
- const { useActivities } = hooks;
10
-
11
- // Acknowledged means either:
12
- // 1. The user sent a message
13
- // - We don't need a condition here. When Web Chat sends the user's message, it will scroll to bottom, and it will trigger condition 2 below.
14
- // 2. The user scroll to the bottom of the transcript, from a non-bottom scroll position
15
- // - If the transcript is already at the bottom, the user needs to scroll up and then go back down
16
- // - What happens if we are relaxing "scrolled from a non-bottom scroll position":
17
- // 1. The condition will become solely "at the bottom of the transcript"
18
- // 2. Auto-scroll will always scroll the transcript to the bottom
19
- // 3. Web Chat will always acknowledge all activities as it is at the bottom
20
- // 4. Acknowledge flag become useless
21
- // 5. Therefore, even the developer set "pause after 3 activities", if activities are coming in at a slow pace (not batched in a single render)
22
- // Web Chat will keep scrolling and not snapped/paused
23
-
24
- // Note: When Web Chat is loaded, there are no activities acknowledged. We need to assume all arriving activities are acknowledged until end-user sends their first activity.
25
- // Activities loaded initially could be from conversation history. Without assuming acknowledgement, Web Chat will not scroll initially (as everything is not acknowledged).
26
- // It would be better if the chat adapter should let Web Chat know if the activity is loaded from history or not.
27
-
28
- // TODO: [P2] #3670 Move the "conversation history acknowledgement" logic mentioned above to polyfill of chat adapters.
29
- // 1. Chat adapter should send "acknowledged" as part of "channelData"
30
- // 2. If "acknowledged" is "undefined", we set it to:
31
- // a. true, if there are no egress activities yet
32
- // b. Otherwise, false
33
- export default function useAcknowledgedActivity() {
34
- const [activities] = useActivities();
35
- const [sticky] = useSticky();
36
- const lastStickyActivityIDRef = useRef();
37
-
38
- const stickyChanged = useChanged(sticky);
39
- const stickyChangedToSticky = stickyChanged && sticky;
40
-
41
- const lastStickyActivityID = useMemo(() => {
42
- if (stickyChangedToSticky) {
43
- lastStickyActivityIDRef.current = getActivityUniqueId(activities[activities.length - 1] || {});
44
- }
45
-
46
- return lastStickyActivityIDRef.current;
47
- }, [activities, lastStickyActivityIDRef, stickyChangedToSticky]);
48
-
49
- return useMemo(() => {
50
- const lastStickyActivityIndex = activities.findIndex(
51
- activity => getActivityUniqueId(activity) === lastStickyActivityID
52
- );
53
-
54
- const lastEgressActivityIndex = findLastIndex(activities, ({ from: { role } = {} }) => role === 'user');
55
-
56
- // As described above, if no activities were acknowledged through egress activity, we will assume everything is acknowledged.
57
- const lastAcknowledgedActivityIndex = !~lastEgressActivityIndex
58
- ? activities.length - 1
59
- : Math.max(lastStickyActivityIndex, lastEgressActivityIndex);
60
-
61
- const lastAcknowledgedActivity = activities[lastAcknowledgedActivityIndex];
62
-
63
- return [lastAcknowledgedActivity];
64
- }, [activities, lastStickyActivityID]);
65
- }
@@ -1,10 +0,0 @@
1
- import { useRef } from 'react';
2
-
3
- export default function useChanged(value) {
4
- const prevValueRef = useRef(value);
5
- const changed = value !== prevValueRef.current;
6
-
7
- prevValueRef.current = value;
8
-
9
- return changed;
10
- }
@@ -1,7 +0,0 @@
1
- import useWebChatUIContext from './useWebChatUIContext';
2
-
3
- export default function useDispatchTranscriptFocus() {
4
- const { dispatchTranscriptFocus, numTranscriptFocusObservers } = useWebChatUIContext();
5
-
6
- return numTranscriptFocusObservers ? dispatchTranscriptFocus : undefined;
7
- }
@@ -1,37 +0,0 @@
1
- import { useMemo } from 'react';
2
-
3
- export default function useMemoize(fn, callback, deps) {
4
- if (typeof fn !== 'function') {
5
- throw new Error('The first argument must be a function.');
6
- } else if (typeof callback !== 'function') {
7
- throw new Error('The second argument must be a function.');
8
- } else if (!Array.isArray(deps)) {
9
- throw new Error('The third argument must be an array.');
10
- }
11
-
12
- const memoizedFn = useMemo(() => {
13
- let cache = [];
14
-
15
- return run => {
16
- const nextCache = [];
17
- const result = run((...args) => {
18
- const { result } = [...cache, ...nextCache].find(
19
- ({ args: cachedArgs }) =>
20
- args.length === cachedArgs.length && args.every((arg, index) => Object.is(arg, cachedArgs[index]))
21
- ) || { result: fn(...args) };
22
-
23
- nextCache.push({ args, result });
24
-
25
- return result;
26
- });
27
-
28
- cache = nextCache;
29
-
30
- return result;
31
- };
32
- // We are manually creating the deps here. The "callback" arg is also designed not to be impact deps, similar to useEffect(fn), where "fn" is not in deps.
33
- /* eslint-disable-next-line react-hooks/exhaustive-deps */
34
- }, [fn, ...deps]);
35
-
36
- return memoizedFn(callback);
37
- }