botframework-webchat-api 4.13.0 → 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 (689) hide show
  1. package/.eslintrc.yml +4 -100
  2. package/.prettierrc.yml +1 -1
  3. package/lib/StyleOptions.d.ts +270 -15
  4. package/lib/StyleOptions.d.ts.map +1 -1
  5. package/lib/defaultStyleOptions.d.ts +4 -0
  6. package/lib/defaultStyleOptions.d.ts.map +1 -0
  7. package/lib/defaultStyleOptions.js +73 -16
  8. package/lib/hooks/Composer.d.ts +71 -0
  9. package/lib/hooks/Composer.d.ts.map +1 -0
  10. package/lib/hooks/Composer.js +122 -90
  11. package/lib/hooks/index.d.ts +74 -0
  12. package/lib/hooks/index.d.ts.map +1 -0
  13. package/lib/hooks/index.js +89 -1
  14. package/lib/hooks/internal/ErrorBox.js +2 -2
  15. package/lib/hooks/internal/Tracker.d.ts +4 -0
  16. package/lib/hooks/internal/Tracker.d.ts.map +1 -0
  17. package/lib/hooks/internal/WebChatAPIContext.d.ts +81 -0
  18. package/lib/hooks/internal/WebChatAPIContext.d.ts.map +1 -0
  19. package/lib/hooks/internal/WebChatAPIContext.js +2 -4
  20. package/lib/hooks/internal/useCreateActivityRendererInternal.d.ts +4 -0
  21. package/lib/hooks/internal/useCreateActivityRendererInternal.d.ts.map +1 -0
  22. package/lib/hooks/internal/useCreateActivityRendererInternal.js +1 -1
  23. package/lib/hooks/internal/useDebugDeps.js +11 -5
  24. package/lib/hooks/internal/useDownscaleImageToDataURL.js +1 -1
  25. package/lib/hooks/internal/useErrorBoxClass.js +1 -1
  26. package/lib/hooks/internal/useForceRender.js +2 -2
  27. package/lib/hooks/internal/useLocalizedStrings.js +1 -1
  28. package/lib/hooks/internal/usePrevious.d.ts +2 -0
  29. package/lib/hooks/internal/usePrevious.d.ts.map +1 -0
  30. package/lib/hooks/internal/usePrevious.js +17 -0
  31. package/lib/hooks/internal/useReadTelemetryDimensions.js +2 -2
  32. package/lib/hooks/internal/useTimePassed.js +2 -2
  33. package/lib/hooks/internal/useTracker.js +2 -2
  34. package/lib/hooks/internal/useValueRef.d.ts +3 -0
  35. package/lib/hooks/internal/useValueRef.d.ts.map +1 -0
  36. package/lib/hooks/internal/useValueRef.js +24 -0
  37. package/lib/hooks/middleware/UserlandBoundary.js +4 -4
  38. package/lib/hooks/middleware/applyMiddleware.js +6 -6
  39. package/lib/hooks/middleware/concatMiddleware.d.ts +6 -0
  40. package/lib/hooks/middleware/concatMiddleware.d.ts.map +1 -0
  41. package/lib/hooks/middleware/concatMiddleware.js +3 -3
  42. package/lib/hooks/middleware/createDefaultCardActionMiddleware.d.ts +3 -0
  43. package/lib/hooks/middleware/createDefaultCardActionMiddleware.d.ts.map +1 -0
  44. package/lib/hooks/middleware/createDefaultCardActionMiddleware.js +6 -8
  45. package/lib/hooks/middleware/createDefaultGroupActivitiesMiddleware.d.ts +5 -0
  46. package/lib/hooks/middleware/createDefaultGroupActivitiesMiddleware.d.ts.map +1 -0
  47. package/lib/hooks/middleware/createDefaultGroupActivitiesMiddleware.js +1 -1
  48. package/lib/hooks/useActiveTyping.d.ts +6 -0
  49. package/lib/hooks/useActiveTyping.d.ts.map +1 -0
  50. package/lib/hooks/useActiveTyping.js +4 -4
  51. package/lib/hooks/useActivities.d.ts +3 -0
  52. package/lib/hooks/useActivities.d.ts.map +1 -0
  53. package/lib/hooks/useActivities.js +1 -1
  54. package/lib/hooks/useActivityKeys.d.ts +3 -0
  55. package/lib/hooks/useActivityKeys.d.ts.map +1 -0
  56. package/lib/hooks/useActivityKeys.js +14 -0
  57. package/lib/hooks/useActivityKeysByRead.d.ts +3 -0
  58. package/lib/hooks/useActivityKeysByRead.d.ts.map +1 -0
  59. package/lib/hooks/useActivityKeysByRead.js +14 -0
  60. package/lib/hooks/useAvatarForBot.d.ts +5 -0
  61. package/lib/hooks/useAvatarForBot.d.ts.map +1 -0
  62. package/lib/hooks/useAvatarForBot.js +2 -2
  63. package/lib/hooks/useAvatarForUser.d.ts +5 -0
  64. package/lib/hooks/useAvatarForUser.d.ts.map +1 -0
  65. package/lib/hooks/useAvatarForUser.js +2 -2
  66. package/lib/hooks/useByteFormatter.d.ts +2 -0
  67. package/lib/hooks/useByteFormatter.d.ts.map +1 -0
  68. package/lib/hooks/useByteFormatter.js +2 -2
  69. package/lib/hooks/useConnectivityStatus.d.ts +2 -0
  70. package/lib/hooks/useConnectivityStatus.d.ts.map +1 -0
  71. package/lib/hooks/useConnectivityStatus.js +1 -1
  72. package/lib/hooks/useCreateActivityRenderer.d.ts +3 -0
  73. package/lib/hooks/useCreateActivityRenderer.d.ts.map +1 -0
  74. package/lib/hooks/useCreateActivityRenderer.js +1 -2
  75. package/lib/hooks/useCreateActivityStatusRenderer.d.ts +9 -0
  76. package/lib/hooks/useCreateActivityStatusRenderer.d.ts.map +1 -0
  77. package/lib/hooks/useCreateActivityStatusRenderer.js +6 -4
  78. package/lib/hooks/useCreateAvatarRenderer.d.ts +6 -0
  79. package/lib/hooks/useCreateAvatarRenderer.d.ts.map +1 -0
  80. package/lib/hooks/useCreateAvatarRenderer.js +2 -2
  81. package/lib/hooks/useCreateScrollToEndButtonRenderer.d.ts +3 -0
  82. package/lib/hooks/useCreateScrollToEndButtonRenderer.d.ts.map +1 -0
  83. package/lib/hooks/useCreateScrollToEndButtonRenderer.js +15 -0
  84. package/lib/hooks/useDateFormatter.d.ts +2 -0
  85. package/lib/hooks/useDateFormatter.d.ts.map +1 -0
  86. package/lib/hooks/useDateFormatter.js +2 -2
  87. package/lib/hooks/useDebouncedNotifications.d.ts +13 -0
  88. package/lib/hooks/useDebouncedNotifications.d.ts.map +1 -0
  89. package/lib/hooks/useDebouncedNotifications.js +7 -7
  90. package/lib/hooks/useDictateInterims.d.ts +2 -0
  91. package/lib/hooks/useDictateInterims.d.ts.map +1 -0
  92. package/lib/hooks/useDictateInterims.js +1 -1
  93. package/lib/hooks/useDictateState.d.ts +2 -0
  94. package/lib/hooks/useDictateState.d.ts.map +1 -0
  95. package/lib/hooks/useDictateState.js +1 -1
  96. package/lib/hooks/useDirection.d.ts +2 -0
  97. package/lib/hooks/useDirection.d.ts.map +1 -0
  98. package/lib/hooks/useDirection.js +2 -2
  99. package/lib/hooks/useDisabled.d.ts +2 -0
  100. package/lib/hooks/useDisabled.d.ts.map +1 -0
  101. package/lib/hooks/useDisabled.js +1 -1
  102. package/lib/hooks/useDismissNotification.d.ts +2 -0
  103. package/lib/hooks/useDismissNotification.d.ts.map +1 -0
  104. package/lib/hooks/useDismissNotification.js +1 -1
  105. package/lib/hooks/useEmitTypingIndicator.d.ts +2 -0
  106. package/lib/hooks/useEmitTypingIndicator.d.ts.map +1 -0
  107. package/lib/hooks/useEmitTypingIndicator.js +1 -1
  108. package/lib/hooks/useGetActivityByKey.d.ts +3 -0
  109. package/lib/hooks/useGetActivityByKey.d.ts.map +1 -0
  110. package/lib/hooks/useGetActivityByKey.js +14 -0
  111. package/lib/hooks/useGetHasAcknowledgedByActivityKey.d.ts +3 -0
  112. package/lib/hooks/useGetHasAcknowledgedByActivityKey.d.ts.map +1 -0
  113. package/lib/hooks/useGetHasAcknowledgedByActivityKey.js +14 -0
  114. package/lib/hooks/useGetKeyByActivity.d.ts +3 -0
  115. package/lib/hooks/useGetKeyByActivity.d.ts.map +1 -0
  116. package/lib/hooks/useGetKeyByActivity.js +14 -0
  117. package/lib/hooks/useGetKeyByActivityId.d.ts +3 -0
  118. package/lib/hooks/useGetKeyByActivityId.d.ts.map +1 -0
  119. package/lib/hooks/useGetKeyByActivityId.js +14 -0
  120. package/lib/hooks/useGetSendTimeoutForActivity.d.ts +5 -0
  121. package/lib/hooks/useGetSendTimeoutForActivity.d.ts.map +1 -0
  122. package/lib/hooks/useGetSendTimeoutForActivity.js +2 -2
  123. package/lib/hooks/useGrammars.d.ts +2 -0
  124. package/lib/hooks/useGrammars.d.ts.map +1 -0
  125. package/lib/hooks/useGrammars.js +1 -1
  126. package/lib/hooks/useGroupActivities.d.ts +8 -0
  127. package/lib/hooks/useGroupActivities.d.ts.map +1 -0
  128. package/lib/hooks/useGroupActivities.js +1 -1
  129. package/lib/hooks/useGroupTimestamp.d.ts +2 -0
  130. package/lib/hooks/useGroupTimestamp.d.ts.map +1 -0
  131. package/lib/hooks/useGroupTimestamp.js +2 -2
  132. package/lib/hooks/useLanguage.d.ts +2 -0
  133. package/lib/hooks/useLanguage.d.ts.map +1 -0
  134. package/lib/hooks/useLanguage.js +1 -1
  135. package/lib/hooks/useLastAcknowledgedActivityKey.d.ts +3 -0
  136. package/lib/hooks/useLastAcknowledgedActivityKey.d.ts.map +1 -0
  137. package/lib/hooks/useLastAcknowledgedActivityKey.js +14 -0
  138. package/lib/hooks/useLastReadActivityKey.d.ts +3 -0
  139. package/lib/hooks/useLastReadActivityKey.d.ts.map +1 -0
  140. package/lib/hooks/useLastReadActivityKey.js +14 -0
  141. package/lib/hooks/useLastTypingAt.d.ts +5 -0
  142. package/lib/hooks/useLastTypingAt.d.ts.map +1 -0
  143. package/lib/hooks/useLastTypingAt.js +2 -1
  144. package/lib/hooks/useLocalize.d.ts +3 -0
  145. package/lib/hooks/useLocalize.d.ts.map +1 -0
  146. package/lib/hooks/useLocalize.js +5 -2
  147. package/lib/hooks/useLocalizeDate.d.ts +3 -0
  148. package/lib/hooks/useLocalizeDate.d.ts.map +1 -0
  149. package/lib/hooks/useLocalizeDate.js +3 -2
  150. package/lib/hooks/useLocalizer.d.ts +13 -0
  151. package/lib/hooks/useLocalizer.d.ts.map +1 -0
  152. package/lib/hooks/useLocalizer.js +16 -6
  153. package/lib/hooks/useMarkActivityAsSpoken.d.ts +3 -0
  154. package/lib/hooks/useMarkActivityAsSpoken.d.ts.map +1 -0
  155. package/lib/hooks/useMarkActivityAsSpoken.js +1 -1
  156. package/lib/hooks/useMarkActivityKeyAsRead.d.ts +3 -0
  157. package/lib/hooks/useMarkActivityKeyAsRead.d.ts.map +1 -0
  158. package/lib/hooks/useMarkActivityKeyAsRead.js +14 -0
  159. package/lib/hooks/useMarkAllAsAcknowledged.d.ts +3 -0
  160. package/lib/hooks/useMarkAllAsAcknowledged.d.ts.map +1 -0
  161. package/lib/hooks/useMarkAllAsAcknowledged.js +14 -0
  162. package/lib/hooks/useNotifications.d.ts +3 -0
  163. package/lib/hooks/useNotifications.d.ts.map +1 -0
  164. package/lib/hooks/useNotifications.js +1 -1
  165. package/lib/hooks/usePerformCardAction.d.ts +3 -0
  166. package/lib/hooks/usePerformCardAction.d.ts.map +1 -0
  167. package/lib/hooks/usePerformCardAction.js +1 -1
  168. package/lib/hooks/usePostActivity.d.ts +4 -0
  169. package/lib/hooks/usePostActivity.d.ts.map +1 -0
  170. package/lib/hooks/usePostActivity.js +1 -1
  171. package/lib/hooks/useReferenceGrammarID.d.ts +2 -0
  172. package/lib/hooks/useReferenceGrammarID.d.ts.map +1 -0
  173. package/lib/hooks/useReferenceGrammarID.js +1 -1
  174. package/lib/hooks/useRelativeTimeFormatter.d.ts +2 -0
  175. package/lib/hooks/useRelativeTimeFormatter.d.ts.map +1 -0
  176. package/lib/hooks/useRelativeTimeFormatter.js +2 -2
  177. package/lib/hooks/useRenderActivity.js +2 -1
  178. package/lib/hooks/useRenderActivityStatus.js +2 -1
  179. package/lib/hooks/useRenderAttachment.js +1 -1
  180. package/lib/hooks/useRenderAvatar.js +2 -1
  181. package/lib/hooks/useRenderToast.d.ts +3 -0
  182. package/lib/hooks/useRenderToast.d.ts.map +1 -0
  183. package/lib/hooks/useRenderToast.js +1 -1
  184. package/lib/hooks/useRenderTypingIndicator.d.ts +3 -0
  185. package/lib/hooks/useRenderTypingIndicator.d.ts.map +1 -0
  186. package/lib/hooks/useRenderTypingIndicator.js +1 -1
  187. package/lib/hooks/useSendBoxValue.d.ts +2 -0
  188. package/lib/hooks/useSendBoxValue.d.ts.map +1 -0
  189. package/lib/hooks/useSendBoxValue.js +1 -1
  190. package/lib/hooks/useSendEvent.d.ts +2 -0
  191. package/lib/hooks/useSendEvent.d.ts.map +1 -0
  192. package/lib/hooks/useSendEvent.js +1 -1
  193. package/lib/hooks/useSendFiles.d.ts +2 -0
  194. package/lib/hooks/useSendFiles.d.ts.map +1 -0
  195. package/lib/hooks/useSendFiles.js +1 -1
  196. package/lib/hooks/useSendMessage.d.ts +4 -0
  197. package/lib/hooks/useSendMessage.d.ts.map +1 -0
  198. package/lib/hooks/useSendMessage.js +1 -1
  199. package/lib/hooks/useSendMessageBack.d.ts +2 -0
  200. package/lib/hooks/useSendMessageBack.d.ts.map +1 -0
  201. package/lib/hooks/useSendMessageBack.js +1 -1
  202. package/lib/hooks/useSendPostBack.d.ts +2 -0
  203. package/lib/hooks/useSendPostBack.d.ts.map +1 -0
  204. package/lib/hooks/useSendPostBack.js +1 -1
  205. package/lib/hooks/useSendTimeoutForActivity.d.ts +4 -0
  206. package/lib/hooks/useSendTimeoutForActivity.d.ts.map +1 -0
  207. package/lib/hooks/useSendTimeoutForActivity.js +2 -1
  208. package/lib/hooks/useSendTypingIndicator.d.ts +2 -0
  209. package/lib/hooks/useSendTypingIndicator.d.ts.map +1 -0
  210. package/lib/hooks/useSendTypingIndicator.js +1 -1
  211. package/lib/hooks/useSetNotification.d.ts +3 -0
  212. package/lib/hooks/useSetNotification.d.ts.map +1 -0
  213. package/lib/hooks/useSetNotification.js +1 -1
  214. package/lib/hooks/useShouldSpeakIncomingActivity.d.ts +2 -0
  215. package/lib/hooks/useShouldSpeakIncomingActivity.d.ts.map +1 -0
  216. package/lib/hooks/useShouldSpeakIncomingActivity.js +1 -1
  217. package/lib/hooks/useStartDictate.d.ts +2 -0
  218. package/lib/hooks/useStartDictate.d.ts.map +1 -0
  219. package/lib/hooks/useStartDictate.js +1 -1
  220. package/lib/hooks/useStopDictate.d.ts +2 -0
  221. package/lib/hooks/useStopDictate.d.ts.map +1 -0
  222. package/lib/hooks/useStopDictate.js +1 -1
  223. package/lib/hooks/useStyleOptions.d.ts +3 -0
  224. package/lib/hooks/useStyleOptions.d.ts.map +1 -0
  225. package/lib/hooks/useStyleOptions.js +1 -1
  226. package/lib/hooks/useSubmitSendBox.d.ts +4 -0
  227. package/lib/hooks/useSubmitSendBox.d.ts.map +1 -0
  228. package/lib/hooks/useSubmitSendBox.js +8 -5
  229. package/lib/hooks/useSuggestedActions.d.ts +6 -0
  230. package/lib/hooks/useSuggestedActions.d.ts.map +1 -0
  231. package/lib/hooks/useSuggestedActions.js +1 -1
  232. package/lib/hooks/useTimeoutForSend.d.ts +3 -0
  233. package/lib/hooks/useTimeoutForSend.d.ts.map +1 -0
  234. package/lib/hooks/useTimeoutForSend.js +2 -2
  235. package/lib/hooks/useTrackDimension.d.ts +2 -0
  236. package/lib/hooks/useTrackDimension.d.ts.map +1 -0
  237. package/lib/hooks/useTrackDimension.js +1 -1
  238. package/lib/hooks/useTrackEvent.d.ts +10 -0
  239. package/lib/hooks/useTrackEvent.d.ts.map +1 -0
  240. package/lib/hooks/useTrackEvent.js +1 -1
  241. package/lib/hooks/useTrackException.d.ts +2 -0
  242. package/lib/hooks/useTrackException.d.ts.map +1 -0
  243. package/lib/hooks/useTrackException.js +2 -2
  244. package/lib/hooks/useTrackTiming.d.ts +2 -0
  245. package/lib/hooks/useTrackTiming.d.ts.map +1 -0
  246. package/lib/hooks/useTrackTiming.js +1 -1
  247. package/lib/hooks/useUserID.d.ts +2 -0
  248. package/lib/hooks/useUserID.d.ts.map +1 -0
  249. package/lib/hooks/useUserID.js +1 -1
  250. package/lib/hooks/useUsername.d.ts +2 -0
  251. package/lib/hooks/useUsername.d.ts.map +1 -0
  252. package/lib/hooks/useUsername.js +1 -1
  253. package/lib/hooks/useVoiceSelector.d.ts +2 -0
  254. package/lib/hooks/useVoiceSelector.d.ts.map +1 -0
  255. package/lib/hooks/useVoiceSelector.js +1 -1
  256. package/lib/hooks/utils/ErrorBoundary.js +4 -4
  257. package/lib/hooks/utils/observableToPromise.d.ts +3 -0
  258. package/lib/hooks/utils/observableToPromise.d.ts.map +1 -0
  259. package/lib/hooks/utils/observableToPromise.js +1 -1
  260. package/lib/index.d.ts +20 -4
  261. package/lib/index.d.ts.map +1 -1
  262. package/lib/index.js +10 -10
  263. package/lib/localization/Localize.d.ts +10 -0
  264. package/lib/localization/Localize.d.ts.map +1 -0
  265. package/lib/localization/Localize.js +18 -12
  266. package/lib/localization/ar-SA.json +24 -4
  267. package/lib/localization/bg-BG.json +24 -4
  268. package/lib/localization/ca-ES.json +24 -4
  269. package/lib/localization/cs-CZ.json +24 -4
  270. package/lib/localization/da-DK.json +24 -4
  271. package/lib/localization/de-DE.json +24 -4
  272. package/lib/localization/el-GR.json +24 -4
  273. package/lib/localization/en-US.json +30 -7
  274. package/lib/localization/es-ES.json +24 -4
  275. package/lib/localization/et-EE.json +24 -4
  276. package/lib/localization/eu-ES.json +24 -4
  277. package/lib/localization/fi-FI.json +24 -4
  278. package/lib/localization/fr-FR.json +24 -4
  279. package/lib/localization/getAllLocalizedStrings.d.ts +6 -0
  280. package/lib/localization/getAllLocalizedStrings.d.ts.map +1 -0
  281. package/lib/localization/getAllLocalizedStrings.js +1 -1
  282. package/lib/localization/getLocaleString.d.ts +2 -0
  283. package/lib/localization/getLocaleString.d.ts.map +1 -0
  284. package/lib/localization/getLocaleString.js +3 -3
  285. package/lib/localization/getRTLList.d.ts +2 -0
  286. package/lib/localization/getRTLList.d.ts.map +1 -0
  287. package/lib/localization/getRTLList.js +1 -1
  288. package/lib/localization/gl-ES.json +24 -4
  289. package/lib/localization/he-IL.json +24 -4
  290. package/lib/localization/hi-IN.json +24 -4
  291. package/lib/localization/hr-HR.json +24 -4
  292. package/lib/localization/hu-HU.json +24 -4
  293. package/lib/localization/id-ID.json +24 -4
  294. package/lib/localization/it-IT.json +24 -4
  295. package/lib/localization/ja-JP.json +24 -4
  296. package/lib/localization/kk-KZ.json +24 -4
  297. package/lib/localization/ko-KR.json +24 -4
  298. package/lib/localization/lt-LT.json +24 -4
  299. package/lib/localization/lv-LV.json +24 -4
  300. package/lib/localization/mergeLocalizedStrings.d.ts +7 -0
  301. package/lib/localization/mergeLocalizedStrings.d.ts.map +1 -0
  302. package/lib/localization/mergeLocalizedStrings.js +14 -7
  303. package/lib/localization/ms-MY.json +24 -4
  304. package/lib/localization/nb-NO.json +24 -4
  305. package/lib/localization/nl-NL.json +24 -4
  306. package/lib/localization/pl-PL.json +24 -4
  307. package/lib/localization/pt-BR.json +24 -4
  308. package/lib/localization/pt-PT.json +24 -4
  309. package/lib/localization/ro-RO.json +24 -4
  310. package/lib/localization/ru-RU.json +24 -4
  311. package/lib/localization/sk-SK.json +24 -4
  312. package/lib/localization/sl-SI.json +24 -4
  313. package/lib/localization/sr-Cyrl-CS.json +24 -4
  314. package/lib/localization/sr-Latn-CS.json +24 -4
  315. package/lib/localization/sv-SE.json +24 -4
  316. package/lib/localization/th-TH.json +24 -4
  317. package/lib/localization/tr-TR.json +24 -4
  318. package/lib/localization/uk-UA.json +24 -4
  319. package/lib/localization/vi-VN.json +24 -4
  320. package/lib/localization/yue.json +27 -7
  321. package/lib/localization/zh-CN.json +24 -4
  322. package/lib/localization/zh-HK.json +24 -4
  323. package/lib/localization/zh-TW.json +24 -4
  324. package/lib/normalizeStyleOptions.d.ts +3 -0
  325. package/lib/normalizeStyleOptions.d.ts.map +1 -0
  326. package/lib/normalizeStyleOptions.js +85 -5
  327. package/lib/patchStyleOptionsFromDeprecatedProps.js +1 -2
  328. package/lib/providers/ActivityAcknowledgement/ActivityAcknowledgementComposer.d.ts +5 -0
  329. package/lib/providers/ActivityAcknowledgement/ActivityAcknowledgementComposer.d.ts.map +1 -0
  330. package/lib/providers/ActivityAcknowledgement/ActivityAcknowledgementComposer.js +184 -0
  331. package/lib/providers/ActivityAcknowledgement/private/Context.d.ts +13 -0
  332. package/lib/providers/ActivityAcknowledgement/private/Context.d.ts.map +1 -0
  333. package/lib/providers/ActivityAcknowledgement/private/Context.js +13 -0
  334. package/lib/providers/ActivityAcknowledgement/private/types.d.ts +6 -0
  335. package/lib/providers/ActivityAcknowledgement/private/types.d.ts.map +1 -0
  336. package/lib/providers/ActivityAcknowledgement/private/types.js +2 -0
  337. package/lib/providers/ActivityAcknowledgement/private/useContext.d.ts +3 -0
  338. package/lib/providers/ActivityAcknowledgement/private/useContext.d.ts.map +1 -0
  339. package/lib/providers/ActivityAcknowledgement/private/useContext.js +24 -0
  340. package/lib/providers/ActivityAcknowledgement/useActivityKeysByRead.d.ts +5 -0
  341. package/lib/providers/ActivityAcknowledgement/useActivityKeysByRead.d.ts.map +1 -0
  342. package/lib/providers/ActivityAcknowledgement/useActivityKeysByRead.js +18 -0
  343. package/lib/providers/ActivityAcknowledgement/useGetHasAcknowledgedByActivityKey.d.ts +2 -0
  344. package/lib/providers/ActivityAcknowledgement/useGetHasAcknowledgedByActivityKey.d.ts.map +1 -0
  345. package/lib/providers/ActivityAcknowledgement/useGetHasAcknowledgedByActivityKey.js +15 -0
  346. package/lib/providers/ActivityAcknowledgement/useLastAcknowledgedActivityKey.d.ts +2 -0
  347. package/lib/providers/ActivityAcknowledgement/useLastAcknowledgedActivityKey.d.ts.map +1 -0
  348. package/lib/providers/ActivityAcknowledgement/useLastAcknowledgedActivityKey.js +15 -0
  349. package/lib/providers/ActivityAcknowledgement/useLastReadActivityKey.d.ts +2 -0
  350. package/lib/providers/ActivityAcknowledgement/useLastReadActivityKey.d.ts.map +1 -0
  351. package/lib/providers/ActivityAcknowledgement/useLastReadActivityKey.js +15 -0
  352. package/lib/providers/ActivityAcknowledgement/useMarkActivityKeyAsRead.d.ts +2 -0
  353. package/lib/providers/ActivityAcknowledgement/useMarkActivityKeyAsRead.d.ts.map +1 -0
  354. package/lib/providers/ActivityAcknowledgement/useMarkActivityKeyAsRead.js +15 -0
  355. package/lib/providers/ActivityAcknowledgement/useMarkAllAsAcknowledged.d.ts +2 -0
  356. package/lib/providers/ActivityAcknowledgement/useMarkAllAsAcknowledged.d.ts.map +1 -0
  357. package/lib/providers/ActivityAcknowledgement/useMarkAllAsAcknowledged.js +15 -0
  358. package/lib/providers/ActivityKeyer/ActivityKeyerComposer.d.ts +18 -0
  359. package/lib/providers/ActivityKeyer/ActivityKeyerComposer.d.ts.map +1 -0
  360. package/lib/providers/ActivityKeyer/ActivityKeyerComposer.js +153 -0
  361. package/lib/providers/ActivityKeyer/private/Context.d.ts +12 -0
  362. package/lib/providers/ActivityKeyer/private/Context.d.ts.map +1 -0
  363. package/lib/providers/ActivityKeyer/private/Context.js +13 -0
  364. package/lib/providers/ActivityKeyer/private/getActivityId.d.ts +3 -0
  365. package/lib/providers/ActivityKeyer/private/getActivityId.d.ts.map +1 -0
  366. package/lib/providers/ActivityKeyer/private/getActivityId.js +11 -0
  367. package/lib/providers/ActivityKeyer/private/getClientActivityId.d.ts +3 -0
  368. package/lib/providers/ActivityKeyer/private/getClientActivityId.d.ts.map +1 -0
  369. package/lib/providers/ActivityKeyer/private/getClientActivityId.js +13 -0
  370. package/lib/providers/ActivityKeyer/private/uniqueId.d.ts +2 -0
  371. package/lib/providers/ActivityKeyer/private/uniqueId.d.ts.map +1 -0
  372. package/lib/providers/ActivityKeyer/private/uniqueId.js +18 -0
  373. package/lib/providers/ActivityKeyer/private/useContext.d.ts +3 -0
  374. package/lib/providers/ActivityKeyer/private/useContext.d.ts.map +1 -0
  375. package/lib/providers/ActivityKeyer/private/useContext.js +24 -0
  376. package/lib/providers/ActivityKeyer/useActivityKeys.d.ts +2 -0
  377. package/lib/providers/ActivityKeyer/useActivityKeys.d.ts.map +1 -0
  378. package/lib/providers/ActivityKeyer/useActivityKeys.js +15 -0
  379. package/lib/providers/ActivityKeyer/useGetActivityByKey.d.ts +3 -0
  380. package/lib/providers/ActivityKeyer/useGetActivityByKey.d.ts.map +1 -0
  381. package/lib/providers/ActivityKeyer/useGetActivityByKey.js +15 -0
  382. package/lib/providers/ActivityKeyer/useGetKeyByActivity.d.ts +3 -0
  383. package/lib/providers/ActivityKeyer/useGetKeyByActivity.d.ts.map +1 -0
  384. package/lib/providers/ActivityKeyer/useGetKeyByActivity.js +15 -0
  385. package/lib/providers/ActivityKeyer/useGetKeyByActivityId.d.ts +2 -0
  386. package/lib/providers/ActivityKeyer/useGetKeyByActivityId.d.ts.map +1 -0
  387. package/lib/providers/ActivityKeyer/useGetKeyByActivityId.js +15 -0
  388. package/lib/tsconfig.json +3 -1
  389. package/lib/types/ActivityMiddleware.d.ts +25 -0
  390. package/lib/types/ActivityMiddleware.d.ts.map +1 -0
  391. package/lib/types/ActivityMiddleware.js +2 -0
  392. package/lib/types/ActivityStatusMiddleware.d.ts +18 -0
  393. package/lib/types/ActivityStatusMiddleware.d.ts.map +1 -0
  394. package/lib/types/ActivityStatusMiddleware.js +2 -0
  395. package/lib/types/AttachmentForScreenReaderMiddleware.d.ts +14 -0
  396. package/lib/types/AttachmentForScreenReaderMiddleware.d.ts.map +1 -0
  397. package/lib/types/AttachmentForScreenReaderMiddleware.js +2 -0
  398. package/lib/types/AttachmentMiddleware.d.ts +12 -0
  399. package/lib/types/AttachmentMiddleware.d.ts.map +1 -0
  400. package/lib/types/AttachmentMiddleware.js +2 -0
  401. package/lib/types/AvatarMiddleware.d.ts +15 -0
  402. package/lib/types/AvatarMiddleware.d.ts.map +1 -0
  403. package/lib/types/AvatarMiddleware.js +2 -0
  404. package/lib/types/CardActionMiddleware.d.ts +19 -0
  405. package/lib/types/CardActionMiddleware.d.ts.map +1 -0
  406. package/lib/types/CardActionMiddleware.js +2 -0
  407. package/lib/types/ComponentMiddleware.d.ts +31 -0
  408. package/lib/types/ComponentMiddleware.d.ts.map +1 -0
  409. package/lib/types/ComponentMiddleware.js +2 -0
  410. package/lib/types/FunctionMiddleware.d.ts +6 -0
  411. package/lib/types/FunctionMiddleware.d.ts.map +1 -0
  412. package/lib/types/FunctionMiddleware.js +2 -0
  413. package/lib/types/GroupActivitiesMiddleware.d.ts +22 -0
  414. package/lib/types/GroupActivitiesMiddleware.d.ts.map +1 -0
  415. package/lib/types/GroupActivitiesMiddleware.js +2 -0
  416. package/lib/types/LocalizedStrings.d.ts +5 -0
  417. package/lib/types/LocalizedStrings.d.ts.map +1 -0
  418. package/lib/types/LocalizedStrings.js +2 -0
  419. package/lib/types/Notification.d.ts +10 -0
  420. package/lib/types/Notification.d.ts.map +1 -0
  421. package/lib/types/Notification.js +2 -0
  422. package/lib/types/PrecompiledGlobalize.d.ts +13 -0
  423. package/lib/types/PrecompiledGlobalize.d.ts.map +1 -0
  424. package/lib/types/PrecompiledGlobalize.js +2 -0
  425. package/lib/types/ScrollToEndButtonMiddleware.d.ts +30 -0
  426. package/lib/types/ScrollToEndButtonMiddleware.d.ts.map +1 -0
  427. package/lib/types/ScrollToEndButtonMiddleware.js +2 -0
  428. package/lib/types/SendState.d.ts +3 -0
  429. package/lib/types/SendState.d.ts.map +1 -0
  430. package/lib/types/SendState.js +2 -0
  431. package/lib/types/TelemetryMeasurementEvent.d.ts +31 -0
  432. package/lib/types/TelemetryMeasurementEvent.d.ts.map +1 -0
  433. package/lib/types/TelemetryMeasurementEvent.js +2 -0
  434. package/lib/types/ToastMiddleware.d.ts +11 -0
  435. package/lib/types/ToastMiddleware.d.ts.map +1 -0
  436. package/lib/types/ToastMiddleware.js +2 -0
  437. package/lib/types/Typing.d.ts +8 -0
  438. package/lib/types/Typing.d.ts.map +1 -0
  439. package/lib/types/Typing.js +2 -0
  440. package/lib/types/TypingIndicatorMiddleware.d.ts +17 -0
  441. package/lib/types/TypingIndicatorMiddleware.d.ts.map +1 -0
  442. package/lib/types/TypingIndicatorMiddleware.js +2 -0
  443. package/lib/types/WebSpeechPonyfill.d.ts +18 -0
  444. package/lib/types/WebSpeechPonyfill.d.ts.map +1 -0
  445. package/lib/types/WebSpeechPonyfill.js +2 -0
  446. package/lib/types/WebSpeechPonyfillFactory.d.ts +6 -0
  447. package/lib/types/WebSpeechPonyfillFactory.d.ts.map +1 -0
  448. package/lib/types/WebSpeechPonyfillFactory.js +2 -0
  449. package/lib/utils/createCustomEvent.d.ts +4 -0
  450. package/lib/utils/createCustomEvent.d.ts.map +1 -0
  451. package/lib/utils/createCustomEvent.js +9 -3
  452. package/lib/utils/findLastIndex.d.ts +2 -0
  453. package/lib/utils/findLastIndex.d.ts.map +1 -0
  454. package/lib/utils/findLastIndex.js +32 -0
  455. package/lib/utils/findMin.d.ts +7 -0
  456. package/lib/utils/findMin.d.ts.map +1 -0
  457. package/lib/utils/findMin.js +3 -3
  458. package/lib/utils/isObject.js +1 -1
  459. package/lib/utils/mapMap.d.ts +6 -0
  460. package/lib/utils/mapMap.d.ts.map +1 -0
  461. package/lib/utils/mapMap.js +10 -3
  462. package/lib/utils/normalizeLanguage.d.ts +2 -0
  463. package/lib/utils/normalizeLanguage.d.ts.map +1 -0
  464. package/lib/utils/normalizeLanguage.js +1 -1
  465. package/lib/utils/randomId.d.ts +2 -0
  466. package/lib/utils/randomId.d.ts.map +1 -0
  467. package/lib/utils/randomId.js +1 -1
  468. package/lib/utils/warnOnce.js +17 -0
  469. package/package.json +25 -32
  470. package/scripts/createPrecompiledGlobalize.mjs +44 -0
  471. package/src/StyleOptions.ts +332 -15
  472. package/src/defaultStyleOptions.ts +75 -15
  473. package/src/hooks/Composer.tsx +224 -145
  474. package/src/hooks/{index.js → index.ts} +22 -0
  475. package/src/hooks/internal/WebChatAPIContext.ts +68 -3
  476. package/src/hooks/internal/useCreateActivityRendererInternal.ts +46 -0
  477. package/src/hooks/internal/useDebugDeps.js +9 -2
  478. package/src/hooks/internal/usePrevious.ts +11 -0
  479. package/src/hooks/internal/useValueRef.ts +21 -0
  480. package/src/hooks/middleware/applyMiddleware.js +2 -3
  481. package/src/hooks/middleware/concatMiddleware.spec.js +4 -6
  482. package/src/hooks/middleware/concatMiddleware.ts +27 -0
  483. package/src/hooks/middleware/createDefaultCardActionMiddleware.ts +42 -0
  484. package/src/hooks/middleware/{createDefaultGroupActivitiesMiddleware.js → createDefaultGroupActivitiesMiddleware.ts} +20 -12
  485. package/src/hooks/{useActiveTyping.js → useActiveTyping.ts} +13 -9
  486. package/src/hooks/useActivities.ts +7 -0
  487. package/src/hooks/useActivityKeys.ts +3 -0
  488. package/src/hooks/useActivityKeysByRead.ts +3 -0
  489. package/src/hooks/{useAvatarForBot.js → useAvatarForBot.ts} +1 -1
  490. package/src/hooks/{useAvatarForUser.js → useAvatarForUser.ts} +1 -1
  491. package/src/hooks/{useByteFormatter.js → useByteFormatter.ts} +1 -1
  492. package/src/hooks/{useConnectivityStatus.js → useConnectivityStatus.ts} +1 -1
  493. package/src/hooks/{useCreateActivityRenderer.js → useCreateActivityRenderer.ts} +2 -3
  494. package/src/hooks/{useCreateActivityStatusRenderer.js → useCreateActivityStatusRenderer.tsx} +27 -11
  495. package/src/hooks/useCreateAvatarRenderer.ts +39 -0
  496. package/src/hooks/useCreateScrollToEndButtonRenderer.ts +6 -0
  497. package/src/hooks/useDateFormatter.ts +14 -0
  498. package/src/hooks/useDebouncedNotifications.spec.js +2 -0
  499. package/src/hooks/{useDebouncedNotifications.js → useDebouncedNotifications.ts} +10 -2
  500. package/src/hooks/{useDictateInterims.js → useDictateInterims.ts} +1 -1
  501. package/src/hooks/{useDictateState.js → useDictateState.ts} +1 -1
  502. package/src/hooks/{useDirection.js → useDirection.ts} +1 -1
  503. package/src/hooks/{useDisabled.js → useDisabled.ts} +1 -1
  504. package/src/hooks/{useDismissNotification.js → useDismissNotification.ts} +1 -1
  505. package/src/hooks/{useEmitTypingIndicator.js → useEmitTypingIndicator.ts} +1 -1
  506. package/src/hooks/useGetActivityByKey.ts +3 -0
  507. package/src/hooks/useGetHasAcknowledgedByActivityKey.ts +3 -0
  508. package/src/hooks/useGetKeyByActivity.ts +3 -0
  509. package/src/hooks/useGetKeyByActivityId.ts +3 -0
  510. package/src/hooks/useGetSendTimeoutForActivity.ts +20 -0
  511. package/src/hooks/{useGrammars.js → useGrammars.ts} +1 -1
  512. package/src/hooks/useGroupActivities.ts +10 -0
  513. package/src/hooks/{useGroupTimestamp.js → useGroupTimestamp.ts} +1 -1
  514. package/src/hooks/{useLanguage.js → useLanguage.ts} +1 -1
  515. package/src/hooks/useLastAcknowledgedActivityKey.ts +3 -0
  516. package/src/hooks/useLastReadActivityKey.ts +3 -0
  517. package/src/hooks/{useLastTypingAt.js → useLastTypingAt.ts} +2 -1
  518. package/src/hooks/{useLocalize.js → useLocalize.ts} +3 -1
  519. package/src/hooks/{useLocalizeDate.js → useLocalizeDate.ts} +2 -1
  520. package/src/hooks/{useLocalizer.js → useLocalizer.ts} +24 -6
  521. package/src/hooks/{useMarkActivityAsSpoken.js → useMarkActivityAsSpoken.ts} +2 -1
  522. package/src/hooks/useMarkActivityKeyAsRead.ts +3 -0
  523. package/src/hooks/useMarkAllAsAcknowledged.ts +3 -0
  524. package/src/hooks/{useNotifications.js → useNotifications.ts} +2 -1
  525. package/src/hooks/usePerformCardAction.ts +6 -0
  526. package/src/hooks/usePostActivity.ts +8 -0
  527. package/src/hooks/{useReferenceGrammarID.js → useReferenceGrammarID.ts} +1 -1
  528. package/src/hooks/{useRelativeTimeFormatter.js → useRelativeTimeFormatter.ts} +1 -1
  529. package/src/hooks/useRenderActivity.js +12 -10
  530. package/src/hooks/useRenderActivityStatus.js +1 -0
  531. package/src/hooks/useRenderAvatar.js +1 -0
  532. package/src/hooks/{useRenderToast.js → useRenderToast.ts} +2 -1
  533. package/src/hooks/useRenderTypingIndicator.ts +6 -0
  534. package/src/hooks/{useSendBoxValue.js → useSendBoxValue.ts} +1 -1
  535. package/src/hooks/{useSendEvent.js → useSendEvent.ts} +1 -1
  536. package/src/hooks/{useSendFiles.js → useSendFiles.ts} +1 -1
  537. package/src/hooks/useSendMessage.ts +9 -0
  538. package/src/hooks/{useSendMessageBack.js → useSendMessageBack.ts} +1 -1
  539. package/src/hooks/{useSendPostBack.js → useSendPostBack.ts} +1 -1
  540. package/src/hooks/{useSendTimeoutForActivity.js → useSendTimeoutForActivity.ts} +4 -1
  541. package/src/hooks/{useSendTypingIndicator.js → useSendTypingIndicator.ts} +1 -1
  542. package/src/hooks/useSetNotification.ts +6 -0
  543. package/src/hooks/{useShouldSpeakIncomingActivity.js → useShouldSpeakIncomingActivity.ts} +1 -1
  544. package/src/hooks/{useStartDictate.js → useStartDictate.ts} +1 -1
  545. package/src/hooks/{useStopDictate.js → useStopDictate.ts} +1 -1
  546. package/src/hooks/useStyleOptions.ts +6 -0
  547. package/src/hooks/{useSubmitSendBox.js → useSubmitSendBox.ts} +3 -6
  548. package/src/hooks/{useSuggestedActions.js → useSuggestedActions.ts} +5 -1
  549. package/src/hooks/useTimeoutForSend.ts +9 -0
  550. package/src/hooks/{useTrackDimension.js → useTrackDimension.ts} +1 -1
  551. package/src/hooks/{useTrackEvent.js → useTrackEvent.ts} +10 -2
  552. package/src/hooks/{useTrackException.js → useTrackException.ts} +1 -1
  553. package/src/hooks/{useTrackTiming.js → useTrackTiming.ts} +4 -1
  554. package/src/hooks/{useUserID.js → useUserID.ts} +1 -1
  555. package/src/hooks/{useUsername.js → useUsername.ts} +1 -1
  556. package/src/hooks/{useVoiceSelector.js → useVoiceSelector.ts} +4 -1
  557. package/src/hooks/utils/{observableToPromise.js → observableToPromise.ts} +5 -3
  558. package/src/index.ts +51 -0
  559. package/src/localization/Localize.spec.js +2 -0
  560. package/src/localization/{Localize.js → Localize.ts} +15 -8
  561. package/src/localization/ar-SA.json +24 -4
  562. package/src/localization/bg-BG.json +24 -4
  563. package/src/localization/ca-ES.json +24 -4
  564. package/src/localization/cs-CZ.json +24 -4
  565. package/src/localization/da-DK.json +24 -4
  566. package/src/localization/de-DE.json +24 -4
  567. package/src/localization/el-GR.json +24 -4
  568. package/src/localization/en-US.json +30 -7
  569. package/src/localization/es-ES.json +24 -4
  570. package/src/localization/et-EE.json +24 -4
  571. package/src/localization/eu-ES.json +24 -4
  572. package/src/localization/fi-FI.json +24 -4
  573. package/src/localization/fr-FR.json +24 -4
  574. package/src/localization/getAllLocalizedStrings.spec.js +3 -1
  575. package/src/localization/{getAllLocalizedStrings.js → getAllLocalizedStrings.ts} +2 -1
  576. package/src/localization/getLocaleString.spec.js +4 -2
  577. package/src/localization/{getLocaleString.js → getLocaleString.ts} +2 -2
  578. package/src/localization/{getRTLList.js → getRTLList.ts} +1 -1
  579. package/src/localization/gl-ES.json +24 -4
  580. package/src/localization/he-IL.json +24 -4
  581. package/src/localization/hi-IN.json +24 -4
  582. package/src/localization/hr-HR.json +24 -4
  583. package/src/localization/hu-HU.json +24 -4
  584. package/src/localization/id-ID.json +24 -4
  585. package/src/localization/it-IT.json +24 -4
  586. package/src/localization/ja-JP.json +24 -4
  587. package/src/localization/kk-KZ.json +24 -4
  588. package/src/localization/ko-KR.json +24 -4
  589. package/src/localization/lt-LT.json +24 -4
  590. package/src/localization/lv-LV.json +24 -4
  591. package/src/localization/mergeLocalizedStrings.ts +20 -0
  592. package/src/localization/ms-MY.json +24 -4
  593. package/src/localization/nb-NO.json +24 -4
  594. package/src/localization/nl-NL.json +24 -4
  595. package/src/localization/pl-PL.json +24 -4
  596. package/src/localization/pt-BR.json +24 -4
  597. package/src/localization/pt-PT.json +24 -4
  598. package/src/localization/ro-RO.json +24 -4
  599. package/src/localization/ru-RU.json +24 -4
  600. package/src/localization/sk-SK.json +24 -4
  601. package/src/localization/sl-SI.json +24 -4
  602. package/src/localization/sr-Cyrl-CS.json +24 -4
  603. package/src/localization/sr-Latn-CS.json +24 -4
  604. package/src/localization/sv-SE.json +24 -4
  605. package/src/localization/th-TH.json +24 -4
  606. package/src/localization/tr-TR.json +24 -4
  607. package/src/localization/uk-UA.json +24 -4
  608. package/src/localization/vi-VN.json +24 -4
  609. package/src/localization/yue.json +27 -7
  610. package/src/localization/zh-CN.json +24 -4
  611. package/src/localization/zh-HK.json +24 -4
  612. package/src/localization/zh-TW.json +24 -4
  613. package/src/normalizeStyleOptions.ts +113 -2
  614. package/src/patchStyleOptionsFromDeprecatedProps.js +0 -2
  615. package/src/providers/ActivityAcknowledgement/ActivityAcknowledgementComposer.tsx +180 -0
  616. package/src/providers/ActivityAcknowledgement/private/Context.ts +18 -0
  617. package/src/providers/ActivityAcknowledgement/private/types.ts +6 -0
  618. package/src/providers/ActivityAcknowledgement/private/useContext.ts +19 -0
  619. package/src/providers/ActivityAcknowledgement/useActivityKeysByRead.tsx +8 -0
  620. package/src/providers/ActivityAcknowledgement/useGetHasAcknowledgedByActivityKey.ts +5 -0
  621. package/src/providers/ActivityAcknowledgement/useLastAcknowledgedActivityKey.ts +5 -0
  622. package/src/providers/ActivityAcknowledgement/useLastReadActivityKey.ts +5 -0
  623. package/src/providers/ActivityAcknowledgement/useMarkActivityKeyAsRead.ts +5 -0
  624. package/src/providers/ActivityAcknowledgement/useMarkAllAsAcknowledged.ts +5 -0
  625. package/src/providers/ActivityKeyer/ActivityKeyerComposer.tsx +151 -0
  626. package/src/providers/ActivityKeyer/private/Context.ts +14 -0
  627. package/src/providers/ActivityKeyer/private/getActivityId.ts +5 -0
  628. package/src/providers/ActivityKeyer/private/getClientActivityId.ts +5 -0
  629. package/src/providers/ActivityKeyer/private/uniqueId.ts +8 -0
  630. package/src/providers/ActivityKeyer/private/useContext.ts +15 -0
  631. package/src/providers/ActivityKeyer/useActivityKeys.ts +5 -0
  632. package/src/providers/ActivityKeyer/useGetActivityByKey.ts +7 -0
  633. package/src/providers/ActivityKeyer/useGetKeyByActivity.ts +7 -0
  634. package/src/providers/ActivityKeyer/useGetKeyByActivityId.ts +5 -0
  635. package/src/tsconfig.json +3 -1
  636. package/src/types/ActivityMiddleware.ts +38 -0
  637. package/src/types/ActivityStatusMiddleware.ts +28 -0
  638. package/src/types/AttachmentForScreenReaderMiddleware.ts +24 -0
  639. package/src/types/AttachmentMiddleware.ts +16 -0
  640. package/src/types/AvatarMiddleware.ts +20 -0
  641. package/src/types/CardActionMiddleware.ts +21 -0
  642. package/src/types/ComponentMiddleware.ts +42 -0
  643. package/src/types/FunctionMiddleware.ts +13 -0
  644. package/src/types/GroupActivitiesMiddleware.ts +24 -0
  645. package/src/types/LocalizedStrings.ts +5 -0
  646. package/src/types/Notification.ts +10 -0
  647. package/src/types/PrecompiledGlobalize.ts +9 -0
  648. package/src/types/ScrollToEndButtonMiddleware.ts +34 -0
  649. package/src/types/SendState.ts +3 -0
  650. package/src/types/TelemetryMeasurementEvent.ts +44 -0
  651. package/src/types/ToastMiddleware.ts +16 -0
  652. package/src/types/Typing.ts +8 -0
  653. package/src/types/TypingIndicatorMiddleware.ts +18 -0
  654. package/src/types/WebSpeechPonyfill.ts +24 -0
  655. package/src/types/WebSpeechPonyfillFactory.ts +5 -0
  656. package/src/utils/createCustomEvent.ts +28 -0
  657. package/src/utils/findLastIndex.spec.js +31 -0
  658. package/src/utils/findLastIndex.ts +11 -0
  659. package/src/utils/findMin.spec.js +2 -0
  660. package/src/utils/{findMin.js → findMin.ts} +3 -3
  661. package/src/utils/mapMap.spec.js +2 -0
  662. package/src/utils/mapMap.ts +16 -0
  663. package/src/utils/{normalizeLanguage.js → normalizeLanguage.ts} +1 -1
  664. package/src/utils/{randomId.js → randomId.ts} +1 -1
  665. package/src/utils/warnOnce.ts +10 -0
  666. package/.eslintignore +0 -9
  667. package/lib/hooks/utils/singleToArray.js +0 -11
  668. package/scripts/createPrecompiledGlobalize.js +0 -41
  669. package/src/hooks/internal/useCreateActivityRendererInternal.js +0 -41
  670. package/src/hooks/middleware/concatMiddleware.js +0 -19
  671. package/src/hooks/middleware/createDefaultCardActionMiddleware.js +0 -36
  672. package/src/hooks/useActivities.js +0 -5
  673. package/src/hooks/useCreateAvatarRenderer.js +0 -32
  674. package/src/hooks/useDateFormatter.js +0 -13
  675. package/src/hooks/useGetSendTimeoutForActivity.js +0 -18
  676. package/src/hooks/useGroupActivities.js +0 -5
  677. package/src/hooks/usePerformCardAction.js +0 -5
  678. package/src/hooks/usePostActivity.js +0 -5
  679. package/src/hooks/useRenderTypingIndicator.js +0 -5
  680. package/src/hooks/useSendMessage.js +0 -5
  681. package/src/hooks/useSetNotification.js +0 -5
  682. package/src/hooks/useStyleOptions.js +0 -5
  683. package/src/hooks/useTimeoutForSend.js +0 -7
  684. package/src/hooks/utils/singleToArray.js +0 -3
  685. package/src/index.js +0 -10
  686. package/src/index.tsx +0 -10
  687. package/src/localization/mergeLocalizedStrings.js +0 -10
  688. package/src/utils/createCustomEvent.js +0 -17
  689. package/src/utils/mapMap.js +0 -7
@@ -3,23 +3,17 @@ import PropTypes from 'prop-types';
3
3
  import React, { FC, ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react';
4
4
  import updateIn from 'simple-update-in';
5
5
 
6
- import createCustomEvent from '../utils/createCustomEvent';
7
- import ErrorBoundary from './utils/ErrorBoundary';
8
- import getAllLocalizedStrings from '../localization/getAllLocalizedStrings';
9
- import isObject from '../utils/isObject';
10
- import normalizeLanguage from '../utils/normalizeLanguage';
11
- // @ts-ignore
12
- import PrecompiledGlobalize from '../external/PrecompiledGlobalize';
13
- import StyleOptions from '../StyleOptions';
14
-
15
6
  import {
16
7
  clearSuggestedActions,
17
8
  connect as createConnectAction,
18
9
  createStore,
10
+ DirectLineActivity,
11
+ DirectLineJSBotConnection,
19
12
  disconnect,
20
13
  dismissNotification,
21
14
  emitTypingIndicator,
22
15
  markActivity,
16
+ OneOrMany,
23
17
  postActivity,
24
18
  sendEvent,
25
19
  sendFiles,
@@ -33,6 +27,7 @@ import {
33
27
  setSendBox,
34
28
  setSendTimeout,
35
29
  setSendTypingIndicator,
30
+ singleToArray,
36
31
  startDictate,
37
32
  startSpeakingActivity,
38
33
  stopDictate,
@@ -40,23 +35,47 @@ import {
40
35
  submitSendBox
41
36
  } from 'botframework-webchat-core';
42
37
 
38
+ import { default as WebChatAPIContext } from './internal/WebChatAPIContext';
39
+ import ActivityAcknowledgementComposer from '../providers/ActivityAcknowledgement/ActivityAcknowledgementComposer';
40
+ import ActivityKeyerComposer from '../providers/ActivityKeyer/ActivityKeyerComposer';
41
+ import ActivityMiddleware from '../types/ActivityMiddleware';
42
+ import ActivityStatusMiddleware from '../types/ActivityStatusMiddleware';
43
+ import AttachmentForScreenReaderMiddleware from '../types/AttachmentForScreenReaderMiddleware';
44
+ import AttachmentMiddleware from '../types/AttachmentMiddleware';
45
+ import AvatarMiddleware from '../types/AvatarMiddleware';
46
+ import CardActionMiddleware from '../types/CardActionMiddleware';
47
+ import createCustomEvent from '../utils/createCustomEvent';
43
48
  import createDefaultCardActionMiddleware from './middleware/createDefaultCardActionMiddleware';
44
49
  import createDefaultGroupActivitiesMiddleware from './middleware/createDefaultGroupActivitiesMiddleware';
45
50
  import defaultSelectVoice from './internal/defaultSelectVoice';
51
+ import ErrorBoundary from './utils/ErrorBoundary';
52
+ import getAllLocalizedStrings from '../localization/getAllLocalizedStrings';
53
+ import GroupActivitiesMiddleware from '../types/GroupActivitiesMiddleware';
54
+ import isObject from '../utils/isObject';
55
+ import LocalizedStrings from '../types/LocalizedStrings';
46
56
  import mapMap from '../utils/mapMap';
57
+ import normalizeLanguage from '../utils/normalizeLanguage';
58
+ import normalizeStyleOptions from '../normalizeStyleOptions';
47
59
  import observableToPromise from './utils/observableToPromise';
60
+ import patchStyleOptionsFromDeprecatedProps from '../patchStyleOptionsFromDeprecatedProps';
61
+ import PrecompiledGlobalizeType from '../types/PrecompiledGlobalize';
62
+ import ScrollToEndButtonMiddleware, { ScrollToEndButtonComponentFactory } from '../types/ScrollToEndButtonMiddleware';
63
+ import StyleOptions from '../StyleOptions';
64
+ import TelemetryMeasurementEvent, { TelemetryExceptionMeasurementEvent } from '../types/TelemetryMeasurementEvent';
65
+ import ToastMiddleware from '../types/ToastMiddleware';
48
66
  import Tracker from './internal/Tracker';
67
+ import TypingIndicatorMiddleware from '../types/TypingIndicatorMiddleware';
68
+ import useMarkAllAsAcknowledged from './useMarkAllAsAcknowledged';
49
69
  import WebChatReduxContext, { useDispatch } from './internal/WebChatReduxContext';
50
- import { default as WebChatAPIContext } from './internal/WebChatAPIContext';
51
70
 
52
71
  import applyMiddleware, {
53
72
  forLegacyRenderer as applyMiddlewareForLegacyRenderer,
54
73
  forRenderer as applyMiddlewareForRenderer
55
74
  } from './middleware/applyMiddleware';
56
75
 
57
- import normalizeStyleOptions from '../normalizeStyleOptions';
58
- import patchStyleOptionsFromDeprecatedProps from '../patchStyleOptionsFromDeprecatedProps';
59
- import singleToArray from './utils/singleToArray';
76
+ // PrecompileGlobalize is a generated file and is not ES module. TypeScript don't work with UMD.
77
+ // @ts-ignore
78
+ import PrecompiledGlobalize from '../external/PrecompiledGlobalize';
60
79
 
61
80
  // List of Redux actions factory we are hoisting as Web Chat functions
62
81
  const DISPATCHERS = {
@@ -82,7 +101,7 @@ const DISPATCHERS = {
82
101
  submitSendBox
83
102
  };
84
103
 
85
- function createCardActionContext({ cardActionMiddleware, directLine, dispatch }) {
104
+ function createCardActionContext({ cardActionMiddleware, directLine, dispatch, markAllAsAcknowledged }) {
86
105
  const runMiddleware = applyMiddleware(
87
106
  'card action',
88
107
  ...singleToArray(cardActionMiddleware),
@@ -90,8 +109,10 @@ function createCardActionContext({ cardActionMiddleware, directLine, dispatch })
90
109
  )({ dispatch });
91
110
 
92
111
  return {
93
- onCardAction: (cardAction, { target }: { target?: any } = {}) =>
94
- runMiddleware({
112
+ onCardAction: (cardAction, { target }: { target?: any } = {}) => {
113
+ markAllAsAcknowledged();
114
+
115
+ return runMiddleware({
95
116
  cardAction,
96
117
  getSignInUrl:
97
118
  cardAction.type === 'signin'
@@ -115,7 +136,8 @@ function createCardActionContext({ cardActionMiddleware, directLine, dispatch })
115
136
  }
116
137
  : null,
117
138
  target
118
- })
139
+ });
140
+ }
119
141
  };
120
142
  }
121
143
 
@@ -151,44 +173,60 @@ function mergeStringsOverrides(localizedStrings, language, overrideLocalizedStri
151
173
  return { ...localizedStrings, ...overrideLocalizedStrings };
152
174
  }
153
175
 
154
- type ComposerProps = {
155
- activityMiddleware: any;
156
- activityRenderer: any;
157
- activityStatusMiddleware: any;
158
- activityStatusRenderer: any;
159
- attachmentForScreenReaderMiddleware: any;
160
- attachmentMiddleware: any;
161
- attachmentRenderer: any;
162
- avatarMiddleware: any;
163
- avatarRenderer: any;
164
- cardActionMiddleware: any;
165
- children: ReactNode;
166
- dir: string;
167
- directLine: any;
168
- disabled: boolean;
169
- downscaleImageToDataURL: any;
170
- grammars: any;
171
- groupActivitiesMiddleware: any;
172
- groupTimestamp: boolean | number;
173
- internalErrorBoxClass: any;
174
- internalRenderErrorBox: any;
175
- locale: string;
176
- onTelemetry: any;
177
- overrideLocalizedStrings: any;
178
- renderMarkdown: any;
179
- selectVoice: any;
180
- sendTimeout: number;
181
- sendTypingIndicator: any;
182
- styleOptions: StyleOptions;
183
- toastMiddleware: any;
184
- toastRenderer: any;
185
- typingIndicatorMiddleware: any;
186
- typingIndicatorRenderer: any;
187
- userID: string;
188
- username: string;
176
+ // It seems "react/require-default-props" did not pick up `ComposerCore.defaultProps`.
177
+ // And it falsely complaint `optional?: string` must have a corresponding `ComposerCore.defaultProps.optional = undefined`, even we already set it below.
178
+ // Since we set both TypeScript `Props` class and `ComposerCore.propTypes`, this check will be done there as well.
179
+ // Ignoring it in TypeScript version should be safe, as we have `propTypes` version to protect us.
180
+
181
+ /* eslint-disable react/require-default-props */
182
+ type ComposerCoreProps = {
183
+ activityMiddleware?: OneOrMany<ActivityMiddleware>;
184
+ activityStatusMiddleware?: OneOrMany<ActivityStatusMiddleware>;
185
+ attachmentForScreenReaderMiddleware?: OneOrMany<AttachmentForScreenReaderMiddleware>;
186
+ attachmentMiddleware?: OneOrMany<AttachmentMiddleware>;
187
+ avatarMiddleware?: OneOrMany<AvatarMiddleware>;
188
+ cardActionMiddleware?: OneOrMany<CardActionMiddleware>;
189
+ children?: ReactNode;
190
+ dir?: string;
191
+ directLine: DirectLineJSBotConnection;
192
+ disabled?: boolean;
193
+ downscaleImageToDataURL?: (blob: Blob, maxWidth: number, maxHeight: number, type: string, quality: number) => string;
194
+ grammars?: any;
195
+ groupActivitiesMiddleware?: OneOrMany<GroupActivitiesMiddleware>;
196
+ internalErrorBoxClass?: React.Component | Function;
197
+ locale?: string;
198
+ onTelemetry?: (event: TelemetryMeasurementEvent) => void;
199
+ overrideLocalizedStrings?: LocalizedStrings | ((strings: LocalizedStrings, language: string) => LocalizedStrings);
200
+ renderMarkdown?: (markdown: string, { markdownRespectCRLF: boolean }, { externalLinkAlt: string }) => string;
201
+ scrollToEndButtonMiddleware?: OneOrMany<ScrollToEndButtonMiddleware>;
202
+ selectVoice?: (voices: typeof window.SpeechSynthesisVoice[], activity: DirectLineActivity) => void;
203
+ sendTypingIndicator?: boolean;
204
+ styleOptions?: StyleOptions;
205
+ toastMiddleware?: OneOrMany<ToastMiddleware>;
206
+ typingIndicatorMiddleware?: OneOrMany<TypingIndicatorMiddleware>;
207
+ userID?: string;
208
+ username?: string;
209
+
210
+ /** @deprecated Please use "activityMiddleware" instead. */
211
+ activityRenderer?: any; // TODO: [P4] Remove on or after 2022-06-15.
212
+ /** @deprecated Please use "activityStatusMiddleware" instead. */
213
+ activityStatusRenderer?: any; // TODO: [P4] Remove on or after 2022-06-15.
214
+ /** @deprecated Please use "attachmentMiddleware" instead. */
215
+ attachmentRenderer?: any; // TODO: [P4] Remove on or after 2022-06-15.
216
+ /** @deprecated Please use "avatarMiddleware" instead. */
217
+ avatarRenderer?: any; // TODO: [P4] Remove on or after 2022-06-15.
218
+ /** @deprecated Please use "styleOptions.groupTimestamp" instead. */
219
+ groupTimestamp?: boolean | number; // TODO: [P4] Remove on or after 2022-01-01
220
+ /** @deprecated Please use "styleOptions.sendTimeout" instead. */
221
+ sendTimeout?: number; // TODO: [P4] Remove on or after 2022-01-01.
222
+ /** @deprecated Please use "toastMiddleware" instead. */
223
+ toastRenderer?: any; // TODO: [P4] Remove on or after 2022-06-15.
224
+ /** @deprecated Please use "typingIndicatorRenderer" instead. */
225
+ typingIndicatorRenderer?: any; // TODO: [P4] Remove on or after 2022-06-15.
189
226
  };
227
+ /* eslint-enable react/require-default-props */
190
228
 
191
- const Composer: FC<ComposerProps> = ({
229
+ const ComposerCore: FC<ComposerCoreProps> = ({
192
230
  activityMiddleware,
193
231
  activityRenderer,
194
232
  activityStatusMiddleware,
@@ -212,6 +250,7 @@ const Composer: FC<ComposerProps> = ({
212
250
  onTelemetry,
213
251
  overrideLocalizedStrings,
214
252
  renderMarkdown,
253
+ scrollToEndButtonMiddleware,
215
254
  selectVoice,
216
255
  sendTimeout,
217
256
  sendTypingIndicator,
@@ -262,16 +301,17 @@ const Composer: FC<ComposerProps> = ({
262
301
  };
263
302
  }, [dispatch, directLine, userID, username]);
264
303
 
265
- const cardActionContext = useMemo(() => createCardActionContext({ cardActionMiddleware, directLine, dispatch }), [
266
- cardActionMiddleware,
267
- directLine,
268
- dispatch
269
- ]);
304
+ const markAllAsAcknowledged = useMarkAllAsAcknowledged();
305
+
306
+ const cardActionContext = useMemo(
307
+ () => createCardActionContext({ cardActionMiddleware, directLine, dispatch, markAllAsAcknowledged }),
308
+ [cardActionMiddleware, directLine, dispatch, markAllAsAcknowledged]
309
+ );
270
310
 
271
- const patchedSelectVoice = useMemo(() => selectVoice || defaultSelectVoice.bind(null, { language: locale }), [
272
- locale,
273
- selectVoice
274
- ]);
311
+ const patchedSelectVoice = useMemo(
312
+ () => selectVoice || defaultSelectVoice.bind(null, { language: locale }),
313
+ [locale, selectVoice]
314
+ );
275
315
 
276
316
  const groupActivitiesContext = useMemo(
277
317
  () =>
@@ -283,7 +323,13 @@ const Composer: FC<ComposerProps> = ({
283
323
  );
284
324
 
285
325
  const hoistedDispatchers = useMemo(
286
- () => mapMap(DISPATCHERS, dispatcher => (...args) => dispatch(dispatcher(...args))),
326
+ () =>
327
+ mapMap(
328
+ DISPATCHERS,
329
+ dispatcher =>
330
+ (...args) =>
331
+ dispatch(dispatcher(...args))
332
+ ),
287
333
  [dispatch]
288
334
  );
289
335
 
@@ -292,14 +338,14 @@ const Composer: FC<ComposerProps> = ({
292
338
  [locale, overrideLocalizedStrings]
293
339
  );
294
340
 
295
- const localizedGlobalize = useMemo(() => {
341
+ const localizedGlobalize = useMemo<PrecompiledGlobalizeType>(() => {
296
342
  const { GLOBALIZE, GLOBALIZE_LANGUAGE } = patchedLocalizedStrings || {};
297
343
 
298
344
  return GLOBALIZE || (GLOBALIZE_LANGUAGE && PrecompiledGlobalize(GLOBALIZE_LANGUAGE)) || PrecompiledGlobalize('en');
299
345
  }, [patchedLocalizedStrings]);
300
346
 
301
347
  const trackDimension = useCallback(
302
- (name, data) => {
348
+ (name: string, data: any) => {
303
349
  if (!name || typeof name !== 'string') {
304
350
  return console.warn('botframework-webchat: Telemetry dimension name must be a string.');
305
351
  }
@@ -331,13 +377,15 @@ const Composer: FC<ComposerProps> = ({
331
377
  'activity',
332
378
  { strict: false },
333
379
  ...singleToArray(activityMiddleware),
334
- () => () => ({ activity }) => {
335
- if (activity) {
336
- throw new Error(`No renderer for activity of type "${activity.type}"`);
337
- } else {
338
- throw new Error('No activity to render');
380
+ () =>
381
+ () =>
382
+ ({ activity }) => {
383
+ if (activity) {
384
+ throw new Error(`No renderer for activity of type "${activity.type}"`);
385
+ } else {
386
+ throw new Error('No activity to render');
387
+ }
339
388
  }
340
- }
341
389
  )({})
342
390
  );
343
391
  }, [activityMiddleware, activityRenderer]);
@@ -365,19 +413,21 @@ const Composer: FC<ComposerProps> = ({
365
413
  'attachment for screen reader',
366
414
  { strict: true },
367
415
  ...singleToArray(attachmentForScreenReaderMiddleware),
368
- () => () => ({ attachment }) => {
369
- if (attachment) {
370
- console.warn(`No renderer for attachment for screen reader of type "${attachment.contentType}"`);
371
- return false;
416
+ () =>
417
+ () =>
418
+ ({ attachment }) => {
419
+ if (attachment) {
420
+ console.warn(`No renderer for attachment for screen reader of type "${attachment.contentType}"`);
421
+ return false;
422
+ }
423
+
424
+ return () => {
425
+ /**
426
+ * @todo TODO: [P4] Might be able to throw without returning a function -- investigate and possibly fix
427
+ */
428
+ throw new Error('No attachment to render');
429
+ };
372
430
  }
373
-
374
- return () => {
375
- /**
376
- * @todo TODO: [P4] Might be able to throw without returning a function -- investigate and possibly fix
377
- */
378
- throw new Error('No attachment to render');
379
- };
380
- }
381
431
  )({}),
382
432
  [attachmentForScreenReaderMiddleware]
383
433
  );
@@ -395,13 +445,15 @@ const Composer: FC<ComposerProps> = ({
395
445
  return applyMiddlewareForLegacyRenderer(
396
446
  'attachment',
397
447
  ...singleToArray(attachmentMiddleware),
398
- () => () => ({ attachment }) => {
399
- if (attachment) {
400
- throw new Error(`No renderer for attachment of type "${attachment.contentType}"`);
401
- } else {
402
- throw new Error('No attachment to render');
448
+ () =>
449
+ () =>
450
+ ({ attachment }) => {
451
+ if (attachment) {
452
+ throw new Error(`No renderer for attachment of type "${attachment.contentType}"`);
453
+ } else {
454
+ throw new Error('No attachment to render');
455
+ }
403
456
  }
404
- }
405
457
  )({});
406
458
  }, [attachmentMiddleware, attachmentRenderer]);
407
459
 
@@ -413,8 +465,11 @@ const Composer: FC<ComposerProps> = ({
413
465
 
414
466
  return (
415
467
  avatarRenderer ||
416
- applyMiddlewareForRenderer('avatar', { strict: false }, ...singleToArray(avatarMiddleware), () => () => () =>
417
- false
468
+ applyMiddlewareForRenderer(
469
+ 'avatar',
470
+ { strict: false },
471
+ ...singleToArray(avatarMiddleware),
472
+ () => () => () => false
418
473
  )({})
419
474
  );
420
475
  }, [avatarMiddleware, avatarRenderer]);
@@ -431,13 +486,15 @@ const Composer: FC<ComposerProps> = ({
431
486
  'toast',
432
487
  { strict: false },
433
488
  ...singleToArray(toastMiddleware),
434
- () => () => ({ notification }) => {
435
- if (notification) {
436
- throw new Error(`No renderer for notification of type "${notification.contentType}"`);
437
- } else {
438
- throw new Error('No notification to render');
489
+ () =>
490
+ () =>
491
+ ({ notification }) => {
492
+ if (notification) {
493
+ throw new Error(`No renderer for notification of type "${notification.contentType}"`);
494
+ } else {
495
+ throw new Error('No notification to render');
496
+ }
439
497
  }
440
- }
441
498
  )({})
442
499
  );
443
500
  }, [toastMiddleware, toastRenderer]);
@@ -459,6 +516,17 @@ const Composer: FC<ComposerProps> = ({
459
516
  );
460
517
  }, [typingIndicatorMiddleware, typingIndicatorRenderer]);
461
518
 
519
+ const scrollToEndButtonRenderer: ScrollToEndButtonComponentFactory = useMemo(
520
+ () =>
521
+ applyMiddlewareForRenderer(
522
+ 'scroll to end button',
523
+ { strict: true },
524
+ ...singleToArray(scrollToEndButtonMiddleware),
525
+ () => () => () => false
526
+ )() as any,
527
+ [scrollToEndButtonMiddleware]
528
+ );
529
+
462
530
  /**
463
531
  * This is a heavy function, and it is expected to be only called when there is a need to recreate business logic, e.g.
464
532
  * - User ID changed, causing all send* functions to be updated
@@ -491,6 +559,7 @@ const Composer: FC<ComposerProps> = ({
491
559
  localizedStrings: patchedLocalizedStrings,
492
560
  onTelemetry,
493
561
  renderMarkdown,
562
+ scrollToEndButtonRenderer,
494
563
  selectVoice: patchedSelectVoice,
495
564
  sendTypingIndicator,
496
565
  styleOptions: patchedStyleOptions,
@@ -525,6 +594,7 @@ const Composer: FC<ComposerProps> = ({
525
594
  patchedToastRenderer,
526
595
  patchedTypingIndicatorRenderer,
527
596
  renderMarkdown,
597
+ scrollToEndButtonRenderer,
528
598
  sendTypingIndicator,
529
599
  telemetryDimensionsRef,
530
600
  trackDimension,
@@ -541,59 +611,13 @@ const Composer: FC<ComposerProps> = ({
541
611
  );
542
612
  };
543
613
 
544
- // We will create a Redux store if it was not passed in
545
- const ComposeWithStore: FC<ComposerProps & { store: any }> = ({
546
- internalRenderErrorBox,
547
- onTelemetry,
548
- store,
549
- ...props
550
- }) => {
551
- const [error, setError] = useState();
552
-
553
- const handleError = useCallback(
554
- error => {
555
- console.error('botframework-webchat: Uncaught exception', { error });
556
-
557
- onTelemetry && onTelemetry(createCustomEvent('exception', { error, fatal: true }));
558
- setError(error);
559
- },
560
- [onTelemetry, setError]
561
- );
562
-
563
- const memoizedStore = useMemo(() => store || createStore(), [store]);
564
-
565
- return error ? (
566
- !!internalRenderErrorBox && internalRenderErrorBox({ error, type: 'uncaught exception' })
567
- ) : (
568
- <ErrorBoundary onError={handleError}>
569
- <Provider context={WebChatReduxContext} store={memoizedStore}>
570
- <Composer internalRenderErrorBox={internalRenderErrorBox} onTelemetry={onTelemetry} {...props} />
571
- </Provider>
572
- </ErrorBoundary>
573
- );
574
- };
575
-
576
- ComposeWithStore.defaultProps = {
577
- internalRenderErrorBox: undefined,
578
- onTelemetry: undefined,
579
- store: undefined
580
- };
581
-
582
- ComposeWithStore.propTypes = {
583
- internalRenderErrorBox: PropTypes.any,
584
- onTelemetry: PropTypes.func,
585
- store: PropTypes.any
586
- };
587
-
588
- export default ComposeWithStore;
589
-
590
614
  /**
591
615
  * @todo TODO: [P3] We should consider moving some data from Redux store to props
592
616
  * Although we use `connectToWebChat` to hide the details of accessor of Redux store,
593
617
  * we should clean up the responsibility between Context and Redux store
594
618
  * We should decide which data is needed for React but not in other environment such as CLI/VSCode
595
619
  */
596
- Composer.defaultProps = {
620
+ ComposerCore.defaultProps = {
597
621
  activityMiddleware: undefined,
598
622
  activityRenderer: undefined,
599
623
  activityStatusMiddleware: undefined,
@@ -616,6 +640,7 @@ Composer.defaultProps = {
616
640
  onTelemetry: undefined,
617
641
  overrideLocalizedStrings: undefined,
618
642
  renderMarkdown: undefined,
643
+ scrollToEndButtonMiddleware: undefined,
619
644
  selectVoice: undefined,
620
645
  sendTimeout: undefined,
621
646
  sendTypingIndicator: false,
@@ -628,7 +653,7 @@ Composer.defaultProps = {
628
653
  username: ''
629
654
  };
630
655
 
631
- Composer.propTypes = {
656
+ ComposerCore.propTypes = {
632
657
  activityMiddleware: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.func), PropTypes.func]),
633
658
  activityRenderer: PropTypes.func,
634
659
  activityStatusMiddleware: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.func), PropTypes.func]),
@@ -664,6 +689,7 @@ Composer.propTypes = {
664
689
  onTelemetry: PropTypes.func,
665
690
  overrideLocalizedStrings: PropTypes.oneOfType([PropTypes.any, PropTypes.func]),
666
691
  renderMarkdown: PropTypes.func,
692
+ scrollToEndButtonMiddleware: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.func), PropTypes.func]),
667
693
  selectVoice: PropTypes.func,
668
694
  sendTimeout: PropTypes.number,
669
695
  sendTypingIndicator: PropTypes.bool,
@@ -675,3 +701,56 @@ Composer.propTypes = {
675
701
  userID: PropTypes.string,
676
702
  username: PropTypes.string
677
703
  };
704
+
705
+ type ComposerProps = ComposerCoreProps & {
706
+ internalRenderErrorBox?: any;
707
+ store?: any;
708
+ };
709
+
710
+ // We will create a Redux store if it was not passed in
711
+ const Composer: FC<ComposerProps> = ({ internalRenderErrorBox, onTelemetry, store, ...props }) => {
712
+ const [error, setError] = useState();
713
+
714
+ const handleError = useCallback(
715
+ error => {
716
+ console.error('botframework-webchat: Uncaught exception', { error });
717
+
718
+ onTelemetry &&
719
+ onTelemetry(createCustomEvent('exception', { error, fatal: true }) as TelemetryExceptionMeasurementEvent);
720
+ setError(error);
721
+ },
722
+ [onTelemetry, setError]
723
+ );
724
+
725
+ const memoizedStore = useMemo(() => store || createStore(), [store]);
726
+
727
+ return error ? (
728
+ !!internalRenderErrorBox && internalRenderErrorBox({ error, type: 'uncaught exception' })
729
+ ) : (
730
+ <ErrorBoundary onError={handleError}>
731
+ <Provider context={WebChatReduxContext} store={memoizedStore}>
732
+ <ActivityKeyerComposer>
733
+ <ActivityAcknowledgementComposer>
734
+ <ComposerCore onTelemetry={onTelemetry} {...props} />
735
+ </ActivityAcknowledgementComposer>
736
+ </ActivityKeyerComposer>
737
+ </Provider>
738
+ </ErrorBoundary>
739
+ );
740
+ };
741
+
742
+ Composer.defaultProps = {
743
+ internalRenderErrorBox: undefined,
744
+ onTelemetry: undefined,
745
+ store: undefined
746
+ };
747
+
748
+ Composer.propTypes = {
749
+ internalRenderErrorBox: PropTypes.any,
750
+ onTelemetry: PropTypes.func,
751
+ store: PropTypes.any
752
+ };
753
+
754
+ export default Composer;
755
+
756
+ export type { ComposerProps };
@@ -1,5 +1,7 @@
1
1
  import useActiveTyping from './useActiveTyping';
2
2
  import useActivities from './useActivities';
3
+ import useActivityKeys from './useActivityKeys';
4
+ import useActivityKeysByRead from './useActivityKeysByRead';
3
5
  import useAvatarForBot from './useAvatarForBot';
4
6
  import useAvatarForUser from './useAvatarForUser';
5
7
  import useByteFormatter from './useByteFormatter';
@@ -8,6 +10,7 @@ import useCreateActivityRenderer from './useCreateActivityRenderer';
8
10
  import useCreateActivityStatusRenderer from './useCreateActivityStatusRenderer';
9
11
  import useCreateAttachmentForScreenReaderRenderer from './useCreateAttachmentForScreenReaderRenderer';
10
12
  import useCreateAvatarRenderer from './useCreateAvatarRenderer';
13
+ import useCreateScrollToEndButtonRenderer from './useCreateScrollToEndButtonRenderer';
11
14
  import useDateFormatter from './useDateFormatter';
12
15
  import useDebouncedNotifications from './useDebouncedNotifications';
13
16
  import useDictateInterims from './useDictateInterims';
@@ -16,16 +19,24 @@ import useDirection from './useDirection';
16
19
  import useDisabled from './useDisabled';
17
20
  import useDismissNotification from './useDismissNotification';
18
21
  import useEmitTypingIndicator from './useEmitTypingIndicator';
22
+ import useGetActivityByKey from './useGetActivityByKey';
23
+ import useGetHasAcknowledgedByActivityKey from './useGetHasAcknowledgedByActivityKey';
24
+ import useGetKeyByActivity from './useGetKeyByActivity';
25
+ import useGetKeyByActivityId from './useGetKeyByActivityId';
19
26
  import useGetSendTimeoutForActivity from './useGetSendTimeoutForActivity';
20
27
  import useGrammars from './useGrammars';
21
28
  import useGroupActivities from './useGroupActivities';
22
29
  import useGroupTimestamp from './useGroupTimestamp';
23
30
  import useLanguage from './useLanguage';
31
+ import useLastAcknowledgedActivityKey from './useLastAcknowledgedActivityKey';
32
+ import useLastReadActivityKey from './useLastReadActivityKey';
24
33
  import useLastTypingAt from './useLastTypingAt';
25
34
  import useLocalize from './useLocalize'; // Deprecated on or after 2022-02-12
26
35
  import useLocalizeDate from './useLocalizeDate'; // Deprecated on or after 2022-02-12
27
36
  import useLocalizer from './useLocalizer';
28
37
  import useMarkActivityAsSpoken from './useMarkActivityAsSpoken';
38
+ import useMarkActivityKeyAsRead from './useMarkActivityKeyAsRead';
39
+ import useMarkAllAsAcknowledged from './useMarkAllAsAcknowledged';
29
40
  import usePerformCardAction from './usePerformCardAction';
30
41
  import usePostActivity from './usePostActivity';
31
42
  import useReferenceGrammarID from './useReferenceGrammarID';
@@ -63,6 +74,8 @@ import useVoiceSelector from './useVoiceSelector';
63
74
  export {
64
75
  useActiveTyping,
65
76
  useActivities,
77
+ useActivityKeys,
78
+ useActivityKeysByRead,
66
79
  useAvatarForBot,
67
80
  useAvatarForUser,
68
81
  useByteFormatter,
@@ -71,6 +84,7 @@ export {
71
84
  useCreateActivityStatusRenderer,
72
85
  useCreateAttachmentForScreenReaderRenderer,
73
86
  useCreateAvatarRenderer,
87
+ useCreateScrollToEndButtonRenderer,
74
88
  useDateFormatter,
75
89
  useDebouncedNotifications,
76
90
  useDictateInterims,
@@ -79,16 +93,24 @@ export {
79
93
  useDisabled,
80
94
  useDismissNotification,
81
95
  useEmitTypingIndicator,
96
+ useGetActivityByKey,
97
+ useGetHasAcknowledgedByActivityKey,
98
+ useGetKeyByActivity,
99
+ useGetKeyByActivityId,
82
100
  useGetSendTimeoutForActivity,
83
101
  useGrammars,
84
102
  useGroupActivities,
85
103
  useGroupTimestamp,
86
104
  useLanguage,
105
+ useLastAcknowledgedActivityKey,
106
+ useLastReadActivityKey,
87
107
  useLastTypingAt,
88
108
  useLocalize,
89
109
  useLocalizeDate,
90
110
  useLocalizer,
91
111
  useMarkActivityAsSpoken,
112
+ useMarkActivityKeyAsRead,
113
+ useMarkAllAsAcknowledged,
92
114
  usePerformCardAction,
93
115
  usePostActivity,
94
116
  useReferenceGrammarID,