botframework-webchat-api 4.13.0 → 4.14.2

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 (544) hide show
  1. package/.eslintignore +1 -9
  2. package/.eslintrc.yml +43 -38
  3. package/lib/StyleOptions.d.ts +28 -3
  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 +7 -3
  8. package/lib/external/PrecompiledGlobalize.js +24 -6
  9. package/lib/hooks/Composer.d.ts +71 -0
  10. package/lib/hooks/Composer.d.ts.map +1 -0
  11. package/lib/hooks/Composer.js +104 -88
  12. package/lib/hooks/index.d.ts +64 -0
  13. package/lib/hooks/index.d.ts.map +1 -0
  14. package/lib/hooks/index.js +9 -1
  15. package/lib/hooks/internal/ErrorBox.js +2 -2
  16. package/lib/hooks/internal/Tracker.d.ts +4 -0
  17. package/lib/hooks/internal/Tracker.d.ts.map +1 -0
  18. package/lib/hooks/internal/WebChatAPIContext.d.ts +81 -0
  19. package/lib/hooks/internal/WebChatAPIContext.d.ts.map +1 -0
  20. package/lib/hooks/internal/WebChatAPIContext.js +2 -4
  21. package/lib/hooks/internal/useCreateActivityRendererInternal.d.ts +4 -0
  22. package/lib/hooks/internal/useCreateActivityRendererInternal.d.ts.map +1 -0
  23. package/lib/hooks/internal/useCreateActivityRendererInternal.js +1 -1
  24. package/lib/hooks/internal/useDebugDeps.js +2 -2
  25. package/lib/hooks/internal/useDownscaleImageToDataURL.js +1 -1
  26. package/lib/hooks/internal/useErrorBoxClass.js +1 -1
  27. package/lib/hooks/internal/useForceRender.js +2 -2
  28. package/lib/hooks/internal/useLocalizedStrings.js +1 -1
  29. package/lib/hooks/internal/useReadTelemetryDimensions.js +2 -2
  30. package/lib/hooks/internal/useTimePassed.js +2 -2
  31. package/lib/hooks/internal/useTracker.js +2 -2
  32. package/lib/hooks/middleware/UserlandBoundary.js +4 -4
  33. package/lib/hooks/middleware/applyMiddleware.js +6 -6
  34. package/lib/hooks/middleware/concatMiddleware.d.ts +6 -0
  35. package/lib/hooks/middleware/concatMiddleware.d.ts.map +1 -0
  36. package/lib/hooks/middleware/concatMiddleware.js +2 -2
  37. package/lib/hooks/middleware/createDefaultCardActionMiddleware.d.ts +3 -0
  38. package/lib/hooks/middleware/createDefaultCardActionMiddleware.d.ts.map +1 -0
  39. package/lib/hooks/middleware/createDefaultCardActionMiddleware.js +6 -8
  40. package/lib/hooks/middleware/createDefaultGroupActivitiesMiddleware.d.ts +5 -0
  41. package/lib/hooks/middleware/createDefaultGroupActivitiesMiddleware.d.ts.map +1 -0
  42. package/lib/hooks/middleware/createDefaultGroupActivitiesMiddleware.js +1 -1
  43. package/lib/hooks/useActiveTyping.d.ts +6 -0
  44. package/lib/hooks/useActiveTyping.d.ts.map +1 -0
  45. package/lib/hooks/useActiveTyping.js +4 -4
  46. package/lib/hooks/useActivities.d.ts +3 -0
  47. package/lib/hooks/useActivities.d.ts.map +1 -0
  48. package/lib/hooks/useActivities.js +1 -1
  49. package/lib/hooks/useAvatarForBot.d.ts +5 -0
  50. package/lib/hooks/useAvatarForBot.d.ts.map +1 -0
  51. package/lib/hooks/useAvatarForBot.js +2 -2
  52. package/lib/hooks/useAvatarForUser.d.ts +5 -0
  53. package/lib/hooks/useAvatarForUser.d.ts.map +1 -0
  54. package/lib/hooks/useAvatarForUser.js +2 -2
  55. package/lib/hooks/useByteFormatter.d.ts +2 -0
  56. package/lib/hooks/useByteFormatter.d.ts.map +1 -0
  57. package/lib/hooks/useByteFormatter.js +2 -2
  58. package/lib/hooks/useConnectivityStatus.d.ts +2 -0
  59. package/lib/hooks/useConnectivityStatus.d.ts.map +1 -0
  60. package/lib/hooks/useConnectivityStatus.js +1 -1
  61. package/lib/hooks/useCreateActivityRenderer.d.ts +3 -0
  62. package/lib/hooks/useCreateActivityRenderer.d.ts.map +1 -0
  63. package/lib/hooks/useCreateActivityRenderer.js +1 -2
  64. package/lib/hooks/useCreateActivityStatusRenderer.d.ts +9 -0
  65. package/lib/hooks/useCreateActivityStatusRenderer.d.ts.map +1 -0
  66. package/lib/hooks/useCreateActivityStatusRenderer.js +6 -4
  67. package/lib/hooks/useCreateAvatarRenderer.d.ts +4 -0
  68. package/lib/hooks/useCreateAvatarRenderer.d.ts.map +1 -0
  69. package/lib/hooks/useCreateAvatarRenderer.js +2 -2
  70. package/lib/hooks/useCreateScrollToEndButtonRenderer.d.ts +3 -0
  71. package/lib/hooks/useCreateScrollToEndButtonRenderer.d.ts.map +1 -0
  72. package/lib/hooks/useCreateScrollToEndButtonRenderer.js +15 -0
  73. package/lib/hooks/useDateFormatter.d.ts +2 -0
  74. package/lib/hooks/useDateFormatter.d.ts.map +1 -0
  75. package/lib/hooks/useDateFormatter.js +2 -2
  76. package/lib/hooks/useDebouncedNotifications.d.ts +13 -0
  77. package/lib/hooks/useDebouncedNotifications.d.ts.map +1 -0
  78. package/lib/hooks/useDebouncedNotifications.js +6 -6
  79. package/lib/hooks/useDictateInterims.d.ts +2 -0
  80. package/lib/hooks/useDictateInterims.d.ts.map +1 -0
  81. package/lib/hooks/useDictateInterims.js +1 -1
  82. package/lib/hooks/useDictateState.d.ts +2 -0
  83. package/lib/hooks/useDictateState.d.ts.map +1 -0
  84. package/lib/hooks/useDictateState.js +1 -1
  85. package/lib/hooks/useDirection.d.ts +2 -0
  86. package/lib/hooks/useDirection.d.ts.map +1 -0
  87. package/lib/hooks/useDirection.js +2 -2
  88. package/lib/hooks/useDisabled.d.ts +2 -0
  89. package/lib/hooks/useDisabled.d.ts.map +1 -0
  90. package/lib/hooks/useDisabled.js +1 -1
  91. package/lib/hooks/useDismissNotification.d.ts +2 -0
  92. package/lib/hooks/useDismissNotification.d.ts.map +1 -0
  93. package/lib/hooks/useDismissNotification.js +1 -1
  94. package/lib/hooks/useEmitTypingIndicator.d.ts +2 -0
  95. package/lib/hooks/useEmitTypingIndicator.d.ts.map +1 -0
  96. package/lib/hooks/useEmitTypingIndicator.js +1 -1
  97. package/lib/hooks/useGetSendTimeoutForActivity.d.ts +5 -0
  98. package/lib/hooks/useGetSendTimeoutForActivity.d.ts.map +1 -0
  99. package/lib/hooks/useGetSendTimeoutForActivity.js +2 -2
  100. package/lib/hooks/useGrammars.d.ts +2 -0
  101. package/lib/hooks/useGrammars.d.ts.map +1 -0
  102. package/lib/hooks/useGrammars.js +1 -1
  103. package/lib/hooks/useGroupActivities.d.ts +8 -0
  104. package/lib/hooks/useGroupActivities.d.ts.map +1 -0
  105. package/lib/hooks/useGroupActivities.js +1 -1
  106. package/lib/hooks/useGroupTimestamp.d.ts +2 -0
  107. package/lib/hooks/useGroupTimestamp.d.ts.map +1 -0
  108. package/lib/hooks/useGroupTimestamp.js +2 -2
  109. package/lib/hooks/useLanguage.d.ts +2 -0
  110. package/lib/hooks/useLanguage.d.ts.map +1 -0
  111. package/lib/hooks/useLanguage.js +1 -1
  112. package/lib/hooks/useLastTypingAt.d.ts +5 -0
  113. package/lib/hooks/useLastTypingAt.d.ts.map +1 -0
  114. package/lib/hooks/useLastTypingAt.js +2 -1
  115. package/lib/hooks/useLocalize.d.ts +3 -0
  116. package/lib/hooks/useLocalize.d.ts.map +1 -0
  117. package/lib/hooks/useLocalize.js +5 -2
  118. package/lib/hooks/useLocalizeDate.d.ts +3 -0
  119. package/lib/hooks/useLocalizeDate.d.ts.map +1 -0
  120. package/lib/hooks/useLocalizeDate.js +3 -2
  121. package/lib/hooks/useLocalizer.d.ts +13 -0
  122. package/lib/hooks/useLocalizer.d.ts.map +1 -0
  123. package/lib/hooks/useLocalizer.js +10 -6
  124. package/lib/hooks/useMarkActivityAsSpoken.d.ts +3 -0
  125. package/lib/hooks/useMarkActivityAsSpoken.d.ts.map +1 -0
  126. package/lib/hooks/useMarkActivityAsSpoken.js +1 -1
  127. package/lib/hooks/useNotifications.d.ts +3 -0
  128. package/lib/hooks/useNotifications.d.ts.map +1 -0
  129. package/lib/hooks/useNotifications.js +1 -1
  130. package/lib/hooks/usePerformCardAction.d.ts +3 -0
  131. package/lib/hooks/usePerformCardAction.d.ts.map +1 -0
  132. package/lib/hooks/usePerformCardAction.js +1 -1
  133. package/lib/hooks/usePostActivity.d.ts +4 -0
  134. package/lib/hooks/usePostActivity.d.ts.map +1 -0
  135. package/lib/hooks/usePostActivity.js +1 -1
  136. package/lib/hooks/useReferenceGrammarID.d.ts +2 -0
  137. package/lib/hooks/useReferenceGrammarID.d.ts.map +1 -0
  138. package/lib/hooks/useReferenceGrammarID.js +1 -1
  139. package/lib/hooks/useRelativeTimeFormatter.d.ts +2 -0
  140. package/lib/hooks/useRelativeTimeFormatter.d.ts.map +1 -0
  141. package/lib/hooks/useRelativeTimeFormatter.js +2 -2
  142. package/lib/hooks/useRenderActivity.js +2 -1
  143. package/lib/hooks/useRenderActivityStatus.js +2 -1
  144. package/lib/hooks/useRenderAttachment.js +1 -1
  145. package/lib/hooks/useRenderAvatar.js +2 -1
  146. package/lib/hooks/useRenderToast.d.ts +3 -0
  147. package/lib/hooks/useRenderToast.d.ts.map +1 -0
  148. package/lib/hooks/useRenderToast.js +1 -1
  149. package/lib/hooks/useRenderTypingIndicator.d.ts +3 -0
  150. package/lib/hooks/useRenderTypingIndicator.d.ts.map +1 -0
  151. package/lib/hooks/useRenderTypingIndicator.js +1 -1
  152. package/lib/hooks/useSendBoxValue.d.ts +2 -0
  153. package/lib/hooks/useSendBoxValue.d.ts.map +1 -0
  154. package/lib/hooks/useSendBoxValue.js +1 -1
  155. package/lib/hooks/useSendEvent.d.ts +2 -0
  156. package/lib/hooks/useSendEvent.d.ts.map +1 -0
  157. package/lib/hooks/useSendEvent.js +1 -1
  158. package/lib/hooks/useSendFiles.d.ts +2 -0
  159. package/lib/hooks/useSendFiles.d.ts.map +1 -0
  160. package/lib/hooks/useSendFiles.js +1 -1
  161. package/lib/hooks/useSendMessage.d.ts +4 -0
  162. package/lib/hooks/useSendMessage.d.ts.map +1 -0
  163. package/lib/hooks/useSendMessage.js +1 -1
  164. package/lib/hooks/useSendMessageBack.d.ts +2 -0
  165. package/lib/hooks/useSendMessageBack.d.ts.map +1 -0
  166. package/lib/hooks/useSendMessageBack.js +1 -1
  167. package/lib/hooks/useSendPostBack.d.ts +2 -0
  168. package/lib/hooks/useSendPostBack.d.ts.map +1 -0
  169. package/lib/hooks/useSendPostBack.js +1 -1
  170. package/lib/hooks/useSendTimeoutForActivity.d.ts +4 -0
  171. package/lib/hooks/useSendTimeoutForActivity.d.ts.map +1 -0
  172. package/lib/hooks/useSendTimeoutForActivity.js +2 -1
  173. package/lib/hooks/useSendTypingIndicator.d.ts +2 -0
  174. package/lib/hooks/useSendTypingIndicator.d.ts.map +1 -0
  175. package/lib/hooks/useSendTypingIndicator.js +1 -1
  176. package/lib/hooks/useSetNotification.d.ts +3 -0
  177. package/lib/hooks/useSetNotification.d.ts.map +1 -0
  178. package/lib/hooks/useSetNotification.js +1 -1
  179. package/lib/hooks/useShouldSpeakIncomingActivity.d.ts +2 -0
  180. package/lib/hooks/useShouldSpeakIncomingActivity.d.ts.map +1 -0
  181. package/lib/hooks/useShouldSpeakIncomingActivity.js +1 -1
  182. package/lib/hooks/useStartDictate.d.ts +2 -0
  183. package/lib/hooks/useStartDictate.d.ts.map +1 -0
  184. package/lib/hooks/useStartDictate.js +1 -1
  185. package/lib/hooks/useStopDictate.d.ts +2 -0
  186. package/lib/hooks/useStopDictate.d.ts.map +1 -0
  187. package/lib/hooks/useStopDictate.js +1 -1
  188. package/lib/hooks/useStyleOptions.d.ts +3 -0
  189. package/lib/hooks/useStyleOptions.d.ts.map +1 -0
  190. package/lib/hooks/useStyleOptions.js +1 -1
  191. package/lib/hooks/useSubmitSendBox.d.ts +4 -0
  192. package/lib/hooks/useSubmitSendBox.d.ts.map +1 -0
  193. package/lib/hooks/useSubmitSendBox.js +1 -1
  194. package/lib/hooks/useSuggestedActions.d.ts +6 -0
  195. package/lib/hooks/useSuggestedActions.d.ts.map +1 -0
  196. package/lib/hooks/useSuggestedActions.js +1 -1
  197. package/lib/hooks/useTimeoutForSend.d.ts +3 -0
  198. package/lib/hooks/useTimeoutForSend.d.ts.map +1 -0
  199. package/lib/hooks/useTimeoutForSend.js +2 -2
  200. package/lib/hooks/useTrackDimension.d.ts +2 -0
  201. package/lib/hooks/useTrackDimension.d.ts.map +1 -0
  202. package/lib/hooks/useTrackDimension.js +1 -1
  203. package/lib/hooks/useTrackEvent.d.ts +10 -0
  204. package/lib/hooks/useTrackEvent.d.ts.map +1 -0
  205. package/lib/hooks/useTrackEvent.js +1 -1
  206. package/lib/hooks/useTrackException.d.ts +2 -0
  207. package/lib/hooks/useTrackException.d.ts.map +1 -0
  208. package/lib/hooks/useTrackException.js +2 -2
  209. package/lib/hooks/useTrackTiming.d.ts +2 -0
  210. package/lib/hooks/useTrackTiming.d.ts.map +1 -0
  211. package/lib/hooks/useTrackTiming.js +1 -1
  212. package/lib/hooks/useUserID.d.ts +2 -0
  213. package/lib/hooks/useUserID.d.ts.map +1 -0
  214. package/lib/hooks/useUserID.js +1 -1
  215. package/lib/hooks/useUsername.d.ts +2 -0
  216. package/lib/hooks/useUsername.d.ts.map +1 -0
  217. package/lib/hooks/useUsername.js +1 -1
  218. package/lib/hooks/useVoiceSelector.d.ts +2 -0
  219. package/lib/hooks/useVoiceSelector.d.ts.map +1 -0
  220. package/lib/hooks/useVoiceSelector.js +1 -1
  221. package/lib/hooks/utils/ErrorBoundary.js +3 -3
  222. package/lib/hooks/utils/observableToPromise.d.ts +3 -0
  223. package/lib/hooks/utils/observableToPromise.d.ts.map +1 -0
  224. package/lib/hooks/utils/observableToPromise.js +1 -1
  225. package/lib/index.d.ts +20 -4
  226. package/lib/index.d.ts.map +1 -1
  227. package/lib/index.js +3 -3
  228. package/lib/localization/Localize.d.ts +10 -0
  229. package/lib/localization/Localize.d.ts.map +1 -0
  230. package/lib/localization/Localize.js +7 -7
  231. package/lib/localization/ar-SA.json +1 -0
  232. package/lib/localization/bg-BG.json +1 -0
  233. package/lib/localization/ca-ES.json +1 -0
  234. package/lib/localization/cs-CZ.json +1 -0
  235. package/lib/localization/da-DK.json +1 -0
  236. package/lib/localization/de-DE.json +1 -0
  237. package/lib/localization/el-GR.json +1 -0
  238. package/lib/localization/en-US.json +1 -0
  239. package/lib/localization/es-ES.json +1 -0
  240. package/lib/localization/et-EE.json +1 -0
  241. package/lib/localization/eu-ES.json +1 -0
  242. package/lib/localization/fi-FI.json +1 -0
  243. package/lib/localization/fr-FR.json +1 -0
  244. package/lib/localization/getAllLocalizedStrings.d.ts +6 -0
  245. package/lib/localization/getAllLocalizedStrings.d.ts.map +1 -0
  246. package/lib/localization/getAllLocalizedStrings.js +1 -1
  247. package/lib/localization/getLocaleString.d.ts +2 -0
  248. package/lib/localization/getLocaleString.d.ts.map +1 -0
  249. package/lib/localization/getLocaleString.js +3 -3
  250. package/lib/localization/getRTLList.d.ts +2 -0
  251. package/lib/localization/getRTLList.d.ts.map +1 -0
  252. package/lib/localization/getRTLList.js +1 -1
  253. package/lib/localization/gl-ES.json +1 -0
  254. package/lib/localization/he-IL.json +1 -0
  255. package/lib/localization/hi-IN.json +1 -0
  256. package/lib/localization/hr-HR.json +1 -0
  257. package/lib/localization/hu-HU.json +1 -0
  258. package/lib/localization/id-ID.json +1 -0
  259. package/lib/localization/it-IT.json +1 -0
  260. package/lib/localization/ja-JP.json +1 -0
  261. package/lib/localization/kk-KZ.json +1 -0
  262. package/lib/localization/ko-KR.json +1 -0
  263. package/lib/localization/lt-LT.json +1 -0
  264. package/lib/localization/lv-LV.json +1 -0
  265. package/lib/localization/mergeLocalizedStrings.d.ts +7 -0
  266. package/lib/localization/mergeLocalizedStrings.d.ts.map +1 -0
  267. package/lib/localization/mergeLocalizedStrings.js +4 -4
  268. package/lib/localization/ms-MY.json +1 -0
  269. package/lib/localization/nb-NO.json +1 -0
  270. package/lib/localization/nl-NL.json +1 -0
  271. package/lib/localization/pl-PL.json +1 -0
  272. package/lib/localization/pt-BR.json +1 -0
  273. package/lib/localization/pt-PT.json +1 -0
  274. package/lib/localization/ro-RO.json +1 -0
  275. package/lib/localization/ru-RU.json +1 -0
  276. package/lib/localization/sk-SK.json +1 -0
  277. package/lib/localization/sl-SI.json +1 -0
  278. package/lib/localization/sr-Cyrl-CS.json +1 -0
  279. package/lib/localization/sr-Latn-CS.json +1 -0
  280. package/lib/localization/sv-SE.json +1 -0
  281. package/lib/localization/th-TH.json +1 -0
  282. package/lib/localization/tr-TR.json +1 -0
  283. package/lib/localization/uk-UA.json +1 -0
  284. package/lib/localization/vi-VN.json +1 -0
  285. package/lib/localization/yue.json +1 -0
  286. package/lib/localization/zh-CN.json +1 -0
  287. package/lib/localization/zh-HK.json +1 -0
  288. package/lib/localization/zh-TW.json +1 -0
  289. package/lib/normalizeStyleOptions.d.ts +3 -0
  290. package/lib/normalizeStyleOptions.d.ts.map +1 -0
  291. package/lib/normalizeStyleOptions.js +40 -5
  292. package/lib/tsconfig.json +3 -1
  293. package/lib/types/ActivityMiddleware.d.ts +25 -0
  294. package/lib/types/ActivityMiddleware.d.ts.map +1 -0
  295. package/lib/types/ActivityMiddleware.js +2 -0
  296. package/lib/types/ActivityStatusMiddleware.d.ts +18 -0
  297. package/lib/types/ActivityStatusMiddleware.d.ts.map +1 -0
  298. package/lib/types/ActivityStatusMiddleware.js +2 -0
  299. package/lib/types/AttachmentForScreenReaderMiddleware.d.ts +14 -0
  300. package/lib/types/AttachmentForScreenReaderMiddleware.d.ts.map +1 -0
  301. package/lib/types/AttachmentForScreenReaderMiddleware.js +2 -0
  302. package/lib/types/AttachmentMiddleware.d.ts +12 -0
  303. package/lib/types/AttachmentMiddleware.d.ts.map +1 -0
  304. package/lib/types/AttachmentMiddleware.js +2 -0
  305. package/lib/types/AvatarMiddleware.d.ts +15 -0
  306. package/lib/types/AvatarMiddleware.d.ts.map +1 -0
  307. package/lib/types/AvatarMiddleware.js +2 -0
  308. package/lib/types/CardActionMiddleware.d.ts +17 -0
  309. package/lib/types/CardActionMiddleware.d.ts.map +1 -0
  310. package/lib/types/CardActionMiddleware.js +2 -0
  311. package/lib/types/ComponentMiddleware.d.ts +31 -0
  312. package/lib/types/ComponentMiddleware.d.ts.map +1 -0
  313. package/lib/types/ComponentMiddleware.js +2 -0
  314. package/lib/types/FunctionMiddleware.d.ts +6 -0
  315. package/lib/types/FunctionMiddleware.d.ts.map +1 -0
  316. package/lib/types/FunctionMiddleware.js +2 -0
  317. package/lib/types/GroupActivitiesMiddleware.d.ts +22 -0
  318. package/lib/types/GroupActivitiesMiddleware.d.ts.map +1 -0
  319. package/lib/types/GroupActivitiesMiddleware.js +2 -0
  320. package/lib/types/LocalizedStrings.d.ts +5 -0
  321. package/lib/types/LocalizedStrings.d.ts.map +1 -0
  322. package/lib/types/LocalizedStrings.js +2 -0
  323. package/lib/types/Notification.d.ts +10 -0
  324. package/lib/types/Notification.d.ts.map +1 -0
  325. package/lib/types/Notification.js +2 -0
  326. package/lib/types/PrecompiledGlobalize.d.ts +13 -0
  327. package/lib/types/PrecompiledGlobalize.d.ts.map +1 -0
  328. package/lib/types/PrecompiledGlobalize.js +2 -0
  329. package/lib/types/ScrollToEndButtonMiddleware.d.ts +30 -0
  330. package/lib/types/ScrollToEndButtonMiddleware.d.ts.map +1 -0
  331. package/lib/types/ScrollToEndButtonMiddleware.js +2 -0
  332. package/lib/types/SendState.d.ts +3 -0
  333. package/lib/types/SendState.d.ts.map +1 -0
  334. package/lib/types/SendState.js +2 -0
  335. package/lib/types/TelemetryMeasurementEvent.d.ts +31 -0
  336. package/lib/types/TelemetryMeasurementEvent.d.ts.map +1 -0
  337. package/lib/types/TelemetryMeasurementEvent.js +2 -0
  338. package/lib/types/ToastMiddleware.d.ts +11 -0
  339. package/lib/types/ToastMiddleware.d.ts.map +1 -0
  340. package/lib/types/ToastMiddleware.js +2 -0
  341. package/lib/types/Typing.d.ts +8 -0
  342. package/lib/types/Typing.d.ts.map +1 -0
  343. package/lib/types/Typing.js +2 -0
  344. package/lib/types/TypingIndicatorMiddleware.d.ts +17 -0
  345. package/lib/types/TypingIndicatorMiddleware.d.ts.map +1 -0
  346. package/lib/types/TypingIndicatorMiddleware.js +2 -0
  347. package/lib/types/WebSpeechPonyfill.d.ts +18 -0
  348. package/lib/types/WebSpeechPonyfill.d.ts.map +1 -0
  349. package/lib/types/WebSpeechPonyfill.js +2 -0
  350. package/lib/types/WebSpeechPonyfillFactory.d.ts +6 -0
  351. package/lib/types/WebSpeechPonyfillFactory.d.ts.map +1 -0
  352. package/lib/types/WebSpeechPonyfillFactory.js +2 -0
  353. package/lib/utils/createCustomEvent.d.ts +4 -0
  354. package/lib/utils/createCustomEvent.d.ts.map +1 -0
  355. package/lib/utils/createCustomEvent.js +2 -2
  356. package/lib/utils/findMin.d.ts +7 -0
  357. package/lib/utils/findMin.d.ts.map +1 -0
  358. package/lib/utils/findMin.js +2 -2
  359. package/lib/utils/isObject.js +1 -1
  360. package/lib/utils/mapMap.d.ts +6 -0
  361. package/lib/utils/mapMap.d.ts.map +1 -0
  362. package/lib/utils/mapMap.js +2 -2
  363. package/lib/utils/normalizeLanguage.d.ts +2 -0
  364. package/lib/utils/normalizeLanguage.d.ts.map +1 -0
  365. package/lib/utils/normalizeLanguage.js +1 -1
  366. package/lib/utils/randomId.d.ts +2 -0
  367. package/lib/utils/randomId.d.ts.map +1 -0
  368. package/lib/utils/randomId.js +1 -1
  369. package/lib/utils/warnOnce.js +17 -0
  370. package/package.json +32 -31
  371. package/scripts/createPrecompiledGlobalize.mjs +44 -0
  372. package/src/StyleOptions.ts +39 -3
  373. package/src/defaultStyleOptions.ts +4 -2
  374. package/src/hooks/Composer.tsx +141 -99
  375. package/src/hooks/{index.js → index.ts} +2 -0
  376. package/src/hooks/internal/WebChatAPIContext.ts +68 -3
  377. package/src/hooks/internal/{useCreateActivityRendererInternal.js → useCreateActivityRendererInternal.ts} +6 -2
  378. package/src/hooks/middleware/applyMiddleware.js +2 -3
  379. package/src/hooks/middleware/concatMiddleware.spec.js +4 -6
  380. package/src/hooks/middleware/{concatMiddleware.js → concatMiddleware.ts} +7 -1
  381. package/src/hooks/middleware/{createDefaultCardActionMiddleware.js → createDefaultCardActionMiddleware.ts} +8 -4
  382. package/src/hooks/middleware/{createDefaultGroupActivitiesMiddleware.js → createDefaultGroupActivitiesMiddleware.ts} +20 -12
  383. package/src/hooks/{useActiveTyping.js → useActiveTyping.ts} +13 -9
  384. package/src/hooks/useActivities.ts +7 -0
  385. package/src/hooks/{useAvatarForBot.js → useAvatarForBot.ts} +1 -1
  386. package/src/hooks/{useAvatarForUser.js → useAvatarForUser.ts} +1 -1
  387. package/src/hooks/{useByteFormatter.js → useByteFormatter.ts} +1 -1
  388. package/src/hooks/{useConnectivityStatus.js → useConnectivityStatus.ts} +1 -1
  389. package/src/hooks/{useCreateActivityRenderer.js → useCreateActivityRenderer.ts} +2 -3
  390. package/src/hooks/{useCreateActivityStatusRenderer.js → useCreateActivityStatusRenderer.tsx} +24 -5
  391. package/src/hooks/{useCreateAvatarRenderer.js → useCreateAvatarRenderer.ts} +6 -3
  392. package/src/hooks/useCreateScrollToEndButtonRenderer.ts +6 -0
  393. package/src/hooks/{useDateFormatter.js → useDateFormatter.ts} +1 -1
  394. package/src/hooks/useDebouncedNotifications.spec.js +2 -0
  395. package/src/hooks/{useDebouncedNotifications.js → useDebouncedNotifications.ts} +10 -2
  396. package/src/hooks/{useDictateInterims.js → useDictateInterims.ts} +1 -1
  397. package/src/hooks/{useDictateState.js → useDictateState.ts} +1 -1
  398. package/src/hooks/{useDirection.js → useDirection.ts} +1 -1
  399. package/src/hooks/{useDisabled.js → useDisabled.ts} +1 -1
  400. package/src/hooks/{useDismissNotification.js → useDismissNotification.ts} +1 -1
  401. package/src/hooks/{useEmitTypingIndicator.js → useEmitTypingIndicator.ts} +1 -1
  402. package/src/hooks/{useGetSendTimeoutForActivity.js → useGetSendTimeoutForActivity.ts} +2 -1
  403. package/src/hooks/{useGrammars.js → useGrammars.ts} +1 -1
  404. package/src/hooks/useGroupActivities.ts +14 -0
  405. package/src/hooks/{useGroupTimestamp.js → useGroupTimestamp.ts} +1 -1
  406. package/src/hooks/{useLanguage.js → useLanguage.ts} +1 -1
  407. package/src/hooks/{useLastTypingAt.js → useLastTypingAt.ts} +2 -1
  408. package/src/hooks/{useLocalize.js → useLocalize.ts} +3 -1
  409. package/src/hooks/{useLocalizeDate.js → useLocalizeDate.ts} +2 -1
  410. package/src/hooks/{useLocalizer.js → useLocalizer.ts} +19 -6
  411. package/src/hooks/{useMarkActivityAsSpoken.js → useMarkActivityAsSpoken.ts} +2 -1
  412. package/src/hooks/{useNotifications.js → useNotifications.ts} +2 -1
  413. package/src/hooks/usePerformCardAction.ts +7 -0
  414. package/src/hooks/usePostActivity.ts +8 -0
  415. package/src/hooks/{useReferenceGrammarID.js → useReferenceGrammarID.ts} +1 -1
  416. package/src/hooks/{useRelativeTimeFormatter.js → useRelativeTimeFormatter.ts} +1 -1
  417. package/src/hooks/useRenderActivity.js +12 -10
  418. package/src/hooks/useRenderActivityStatus.js +1 -0
  419. package/src/hooks/useRenderAvatar.js +1 -0
  420. package/src/hooks/{useRenderToast.js → useRenderToast.ts} +2 -1
  421. package/src/hooks/useRenderTypingIndicator.ts +6 -0
  422. package/src/hooks/{useSendBoxValue.js → useSendBoxValue.ts} +1 -1
  423. package/src/hooks/{useSendEvent.js → useSendEvent.ts} +1 -1
  424. package/src/hooks/{useSendFiles.js → useSendFiles.ts} +1 -1
  425. package/src/hooks/useSendMessage.ts +9 -0
  426. package/src/hooks/{useSendMessageBack.js → useSendMessageBack.ts} +1 -1
  427. package/src/hooks/{useSendPostBack.js → useSendPostBack.ts} +1 -1
  428. package/src/hooks/{useSendTimeoutForActivity.js → useSendTimeoutForActivity.ts} +4 -1
  429. package/src/hooks/{useSendTypingIndicator.js → useSendTypingIndicator.ts} +1 -1
  430. package/src/hooks/useSetNotification.ts +6 -0
  431. package/src/hooks/{useShouldSpeakIncomingActivity.js → useShouldSpeakIncomingActivity.ts} +1 -1
  432. package/src/hooks/{useStartDictate.js → useStartDictate.ts} +1 -1
  433. package/src/hooks/{useStopDictate.js → useStopDictate.ts} +1 -1
  434. package/src/hooks/useStyleOptions.ts +6 -0
  435. package/src/hooks/{useSubmitSendBox.js → useSubmitSendBox.ts} +1 -1
  436. package/src/hooks/{useSuggestedActions.js → useSuggestedActions.ts} +5 -1
  437. package/src/hooks/useTimeoutForSend.ts +9 -0
  438. package/src/hooks/{useTrackDimension.js → useTrackDimension.ts} +1 -1
  439. package/src/hooks/{useTrackEvent.js → useTrackEvent.ts} +10 -2
  440. package/src/hooks/{useTrackException.js → useTrackException.ts} +1 -1
  441. package/src/hooks/{useTrackTiming.js → useTrackTiming.ts} +4 -1
  442. package/src/hooks/{useUserID.js → useUserID.ts} +1 -1
  443. package/src/hooks/{useUsername.js → useUsername.ts} +1 -1
  444. package/src/hooks/{useVoiceSelector.js → useVoiceSelector.ts} +4 -1
  445. package/src/hooks/utils/{observableToPromise.js → observableToPromise.ts} +5 -3
  446. package/src/index.ts +51 -0
  447. package/src/localization/Localize.spec.js +2 -0
  448. package/src/localization/{Localize.js → Localize.ts} +6 -6
  449. package/src/localization/ar-SA.json +1 -0
  450. package/src/localization/bg-BG.json +1 -0
  451. package/src/localization/ca-ES.json +1 -0
  452. package/src/localization/cs-CZ.json +1 -0
  453. package/src/localization/da-DK.json +1 -0
  454. package/src/localization/de-DE.json +1 -0
  455. package/src/localization/el-GR.json +1 -0
  456. package/src/localization/en-US.json +1 -0
  457. package/src/localization/es-ES.json +1 -0
  458. package/src/localization/et-EE.json +1 -0
  459. package/src/localization/eu-ES.json +1 -0
  460. package/src/localization/fi-FI.json +1 -0
  461. package/src/localization/fr-FR.json +1 -0
  462. package/src/localization/getAllLocalizedStrings.spec.js +3 -1
  463. package/src/localization/{getAllLocalizedStrings.js → getAllLocalizedStrings.ts} +2 -1
  464. package/src/localization/getLocaleString.spec.js +4 -2
  465. package/src/localization/{getLocaleString.js → getLocaleString.ts} +2 -2
  466. package/src/localization/{getRTLList.js → getRTLList.ts} +1 -1
  467. package/src/localization/gl-ES.json +1 -0
  468. package/src/localization/he-IL.json +1 -0
  469. package/src/localization/hi-IN.json +1 -0
  470. package/src/localization/hr-HR.json +1 -0
  471. package/src/localization/hu-HU.json +1 -0
  472. package/src/localization/id-ID.json +1 -0
  473. package/src/localization/it-IT.json +1 -0
  474. package/src/localization/ja-JP.json +1 -0
  475. package/src/localization/kk-KZ.json +1 -0
  476. package/src/localization/ko-KR.json +1 -0
  477. package/src/localization/lt-LT.json +1 -0
  478. package/src/localization/lv-LV.json +1 -0
  479. package/src/localization/{mergeLocalizedStrings.js → mergeLocalizedStrings.ts} +5 -1
  480. package/src/localization/ms-MY.json +1 -0
  481. package/src/localization/nb-NO.json +1 -0
  482. package/src/localization/nl-NL.json +1 -0
  483. package/src/localization/pl-PL.json +1 -0
  484. package/src/localization/pt-BR.json +1 -0
  485. package/src/localization/pt-PT.json +1 -0
  486. package/src/localization/ro-RO.json +1 -0
  487. package/src/localization/ru-RU.json +1 -0
  488. package/src/localization/sk-SK.json +1 -0
  489. package/src/localization/sl-SI.json +1 -0
  490. package/src/localization/sr-Cyrl-CS.json +1 -0
  491. package/src/localization/sr-Latn-CS.json +1 -0
  492. package/src/localization/sv-SE.json +1 -0
  493. package/src/localization/th-TH.json +1 -0
  494. package/src/localization/tr-TR.json +1 -0
  495. package/src/localization/uk-UA.json +1 -0
  496. package/src/localization/vi-VN.json +1 -0
  497. package/src/localization/yue.json +1 -0
  498. package/src/localization/zh-CN.json +1 -0
  499. package/src/localization/zh-HK.json +1 -0
  500. package/src/localization/zh-TW.json +1 -0
  501. package/src/normalizeStyleOptions.ts +43 -2
  502. package/src/tsconfig.json +3 -1
  503. package/src/types/ActivityMiddleware.ts +38 -0
  504. package/src/types/ActivityStatusMiddleware.ts +28 -0
  505. package/src/types/AttachmentForScreenReaderMiddleware.ts +24 -0
  506. package/src/types/AttachmentMiddleware.ts +16 -0
  507. package/src/types/AvatarMiddleware.ts +20 -0
  508. package/src/types/CardActionMiddleware.ts +21 -0
  509. package/src/types/ComponentMiddleware.ts +42 -0
  510. package/src/types/FunctionMiddleware.ts +13 -0
  511. package/src/types/GroupActivitiesMiddleware.ts +24 -0
  512. package/src/types/LocalizedStrings.ts +5 -0
  513. package/src/types/Notification.ts +10 -0
  514. package/src/types/PrecompiledGlobalize.ts +9 -0
  515. package/src/types/ScrollToEndButtonMiddleware.ts +34 -0
  516. package/src/types/SendState.ts +3 -0
  517. package/src/types/TelemetryMeasurementEvent.ts +44 -0
  518. package/src/types/ToastMiddleware.ts +16 -0
  519. package/src/types/Typing.ts +8 -0
  520. package/src/types/TypingIndicatorMiddleware.ts +18 -0
  521. package/src/types/WebSpeechPonyfill.ts +24 -0
  522. package/src/types/WebSpeechPonyfillFactory.ts +5 -0
  523. package/src/utils/{createCustomEvent.js → createCustomEvent.ts} +8 -3
  524. package/src/utils/findMin.spec.js +2 -0
  525. package/src/utils/{findMin.js → findMin.ts} +3 -3
  526. package/src/utils/mapMap.spec.js +2 -0
  527. package/src/utils/{mapMap.js → mapMap.ts} +4 -1
  528. package/src/utils/{normalizeLanguage.js → normalizeLanguage.ts} +1 -1
  529. package/src/utils/{randomId.js → randomId.ts} +1 -1
  530. package/src/utils/warnOnce.ts +10 -0
  531. package/lib/hooks/utils/singleToArray.js +0 -11
  532. package/scripts/createPrecompiledGlobalize.js +0 -41
  533. package/src/hooks/useActivities.js +0 -5
  534. package/src/hooks/useGroupActivities.js +0 -5
  535. package/src/hooks/usePerformCardAction.js +0 -5
  536. package/src/hooks/usePostActivity.js +0 -5
  537. package/src/hooks/useRenderTypingIndicator.js +0 -5
  538. package/src/hooks/useSendMessage.js +0 -5
  539. package/src/hooks/useSetNotification.js +0 -5
  540. package/src/hooks/useStyleOptions.js +0 -5
  541. package/src/hooks/useTimeoutForSend.js +0 -7
  542. package/src/hooks/utils/singleToArray.js +0 -3
  543. package/src/index.js +0 -10
  544. package/src/index.tsx +0 -10
@@ -1,29 +1,33 @@
1
1
  import { useEffect } from 'react';
2
2
 
3
3
  import { useSelector } from './internal/WebChatReduxContext';
4
+ import Typing from '../types/Typing';
4
5
  import useForceRender from './internal/useForceRender';
5
6
  import useStyleOptions from './useStyleOptions';
6
7
 
7
- function useActiveTyping(expireAfter) {
8
+ function useActiveTyping(expireAfter?: number): [{ [userId: string]: Typing }] {
8
9
  const now = Date.now();
9
10
 
10
11
  const [{ typingAnimationDuration }] = useStyleOptions();
11
12
  const forceRender = useForceRender();
12
- const typing = useSelector(({ typing }) => typing);
13
+ const typing: { [userId: string]: { at: number; name: string; role: string } } = useSelector(({ typing }) => typing);
13
14
 
14
15
  if (typeof expireAfter !== 'number') {
15
16
  expireAfter = typingAnimationDuration;
16
17
  }
17
18
 
18
- const activeTyping = Object.entries(typing).reduce((activeTyping, [id, { at, name, role }]) => {
19
- const until = at + expireAfter;
19
+ const activeTyping: { [userId: string]: Typing } = Object.entries(typing).reduce(
20
+ (activeTyping, [id, { at, name, role }]) => {
21
+ const until = at + expireAfter;
20
22
 
21
- if (until > now) {
22
- return { ...activeTyping, [id]: { at, expireAt: until, name, role } };
23
- }
23
+ if (until > now) {
24
+ return { ...activeTyping, [id]: { at, expireAt: until, name, role } };
25
+ }
24
26
 
25
- return activeTyping;
26
- }, {});
27
+ return activeTyping;
28
+ },
29
+ {}
30
+ );
27
31
 
28
32
  const earliestExpireAt = Math.min(...Object.values(activeTyping).map(({ expireAt }) => expireAt));
29
33
  const timeToRender = earliestExpireAt && earliestExpireAt - now;
@@ -0,0 +1,7 @@
1
+ import { DirectLineActivity } from 'botframework-webchat-core';
2
+
3
+ import { useSelector } from './internal/WebChatReduxContext';
4
+
5
+ export default function useActivities(): [DirectLineActivity[]] {
6
+ return [useSelector(({ activities }) => activities)];
7
+ }
@@ -1,6 +1,6 @@
1
1
  import useStyleOptions from './useStyleOptions';
2
2
 
3
- export default function useAvatarForBot() {
3
+ export default function useAvatarForBot(): [{ image: string; initials: string }] {
4
4
  const [{ botAvatarImage: image, botAvatarInitials: initials }] = useStyleOptions();
5
5
 
6
6
  return [
@@ -1,6 +1,6 @@
1
1
  import useStyleOptions from './useStyleOptions';
2
2
 
3
- export default function useAvatarForUser() {
3
+ export default function useAvatarForUser(): [{ image: string; initials: string }] {
4
4
  const [{ userAvatarImage: image, userAvatarInitials: initials }] = useStyleOptions();
5
5
 
6
6
  return [
@@ -15,7 +15,7 @@ const SHORT_FORM = {
15
15
  form: 'short'
16
16
  };
17
17
 
18
- export default function useByteFormatter() {
18
+ export default function useByteFormatter(): (bytes: number) => string {
19
19
  const [globalize] = useLocalizedGlobalize();
20
20
 
21
21
  return useMemo(() => {
@@ -1,5 +1,5 @@
1
1
  import { useSelector } from './internal/WebChatReduxContext';
2
2
 
3
- export default function useConnectivityStatus() {
3
+ export default function useConnectivityStatus(): [string] {
4
4
  return [useSelector(({ connectivityStatus }) => connectivityStatus)];
5
5
  }
@@ -1,9 +1,8 @@
1
- /* eslint react/prop-types: "off"*/
2
-
1
+ import { ActivityComponentFactory } from '../types/ActivityMiddleware';
3
2
  import useCreateActivityRendererInternal from './internal/useCreateActivityRendererInternal';
4
3
 
5
4
  // The newer useCreateActivityRenderer() hook does not support override renderAttachment().
6
5
  // Only the deprecated useRenderActivity() hook support overriding renderAttachment().
7
- export default function useCreateActivityRenderer() {
6
+ export default function useCreateActivityRenderer(): ActivityComponentFactory {
8
7
  return useCreateActivityRendererInternal();
9
8
  }
@@ -1,8 +1,10 @@
1
- /* eslint react/prop-types: "off"*/
1
+ /* eslint react/prop-types: "off" */
2
+ /* eslint react/require-default-props: "off" */
2
3
 
3
- import { Constants } from 'botframework-webchat-core';
4
- import React, { useMemo } from 'react';
4
+ import { Constants, DirectLineActivity } from 'botframework-webchat-core';
5
+ import React, { ReactNode, useMemo } from 'react';
5
6
 
7
+ import SendState from '../types/SendState';
6
8
  import useGetSendTimeoutForActivity from './useGetSendTimeoutForActivity';
7
9
  import useTimePassed from './internal/useTimePassed';
8
10
  import useWebChatAPIContext from './internal/useWebChatAPIContext';
@@ -20,6 +22,14 @@ const ActivityStatusContainer = ({ activity, hideTimestamp, nextVisibleActivity
20
22
  const {
21
23
  channelData: { clientTimestamp = 0, state } = {},
22
24
  from: { role }
25
+ }: {
26
+ channelData: {
27
+ clientTimestamp?: number;
28
+ state?: SendState;
29
+ };
30
+ from: {
31
+ role: string;
32
+ };
23
33
  } = activity;
24
34
 
25
35
  const activitySent = state !== SENDING && state !== SEND_FAILED;
@@ -43,9 +53,18 @@ const ActivityStatusContainer = ({ activity, hideTimestamp, nextVisibleActivity
43
53
  );
44
54
  };
45
55
 
46
- export default function useCreateActivityStatusRenderer() {
56
+ export default function useCreateActivityStatusRenderer(): (renderOptions: {
57
+ activity: DirectLineActivity;
58
+ nextVisibleActivity: DirectLineActivity;
59
+ }) => (props: { hideTimestamp?: boolean }) => ReactNode {
47
60
  return useMemo(
48
- () => ({ activity, nextVisibleActivity }) => ({ hideTimestamp } = {}) => (
61
+ () => ({
62
+ activity,
63
+ nextVisibleActivity
64
+ }: {
65
+ activity: DirectLineActivity;
66
+ nextVisibleActivity: DirectLineActivity;
67
+ }) => ({ hideTimestamp }: { hideTimestamp?: boolean } = {}) => (
49
68
  <ActivityStatusContainer
50
69
  activity={activity}
51
70
  hideTimestamp={hideTimestamp}
@@ -1,15 +1,18 @@
1
- import { useMemo } from 'react';
1
+ import { DirectLineActivity } from 'botframework-webchat-core';
2
+ import { ReactNode, useMemo } from 'react';
2
3
 
3
4
  import useStyleOptions from './useStyleOptions';
4
5
  import useWebChatAPIContext from './internal/useWebChatAPIContext';
5
6
 
6
- export default function useCreateAvatarRenderer() {
7
+ export default function useCreateAvatarRenderer(): (
8
+ activity: DirectLineActivity
9
+ ) => (() => Exclude<ReactNode, boolean | null | undefined>) | false {
7
10
  const [styleOptions] = useStyleOptions();
8
11
  const { avatarRenderer } = useWebChatAPIContext();
9
12
 
10
13
  return useMemo(
11
14
  () => ({ activity }) => {
12
- const { from: { role } = {} } = activity;
15
+ const { from: { role } = {} }: { from?: { role?: string } } = activity;
13
16
 
14
17
  const result = avatarRenderer({
15
18
  activity,
@@ -0,0 +1,6 @@
1
+ import { ScrollToEndButtonComponentFactory } from '../types/ScrollToEndButtonMiddleware';
2
+ import useWebChatAPIContext from './internal/useWebChatAPIContext';
3
+
4
+ export default function useCreateScrollToEndButtonRenderer(): ScrollToEndButtonComponentFactory {
5
+ return useWebChatAPIContext().scrollToEndButtonRenderer;
6
+ }
@@ -2,7 +2,7 @@ import { useMemo } from 'react';
2
2
 
3
3
  import useLocalizedGlobalize from './internal/useLocalizedGlobalize';
4
4
 
5
- export default function useDateFormatter() {
5
+ export default function useDateFormatter(): (date: number | Date) => string {
6
6
  const [globalize] = useLocalizedGlobalize();
7
7
 
8
8
  const formatDate = useMemo(() => date => globalize.dateFormatter({ skeleton: 'MMMMdhm' })(new Date(date)), [
@@ -1,3 +1,5 @@
1
+ /* eslint no-magic-numbers: "off" */
2
+
1
3
  import { getEarliestUpdateNotBefore } from './useDebouncedNotifications';
2
4
 
3
5
  describe('getEarliestUpdateNotBefore', () => {
@@ -2,12 +2,20 @@ import { useRef } from 'react';
2
2
  import updateIn from 'simple-update-in';
3
3
 
4
4
  import findMin from '../utils/findMin';
5
+ import Notification from '../types/Notification';
5
6
  import useForceRender from './internal/useForceRender';
6
7
  import useNotifications from './useNotifications';
7
8
  import useStyleOptions from './useStyleOptions';
8
9
  import useTimer from './internal/useTimer';
9
10
 
10
- function getEarliestUpdateNotBefore(notificationMap) {
11
+ type DebouncedNotification = Notification & {
12
+ outOfDate: boolean;
13
+ updateNotBefore: number;
14
+ };
15
+
16
+ type DebouncedNotifications = { [id: string]: DebouncedNotification };
17
+
18
+ function getEarliestUpdateNotBefore(notificationMap: DebouncedNotifications) {
11
19
  return findMin(
12
20
  Object.values(notificationMap)
13
21
  .filter(({ outOfDate }) => outOfDate)
@@ -15,7 +23,7 @@ function getEarliestUpdateNotBefore(notificationMap) {
15
23
  );
16
24
  }
17
25
 
18
- function useDebouncedNotifications() {
26
+ function useDebouncedNotifications(): [DebouncedNotifications] {
19
27
  const now = Date.now();
20
28
 
21
29
  const [{ notificationDebounceTimeout }] = useStyleOptions();
@@ -1,6 +1,6 @@
1
1
  import { useSelector } from './internal/WebChatReduxContext';
2
2
  import useWebChatAPIContext from './internal/useWebChatAPIContext';
3
3
 
4
- export default function useDictateInterims() {
4
+ export default function useDictateInterims(): [string[], (interims: string[]) => void] {
5
5
  return [useSelector(({ dictateInterims }) => dictateInterims) || [], useWebChatAPIContext().setDictateInterims];
6
6
  }
@@ -1,6 +1,6 @@
1
1
  import { useSelector } from './internal/WebChatReduxContext';
2
2
 
3
3
  // TODO: [P3] We should update this code to use core/src/selectors/dictateState.js
4
- export default function useDictateState() {
4
+ export default function useDictateState(): [number] {
5
5
  return [useSelector(({ dictateState }) => dictateState)];
6
6
  }
@@ -14,7 +14,7 @@ function determineDirection(dir, language) {
14
14
  return 'ltr';
15
15
  }
16
16
 
17
- export default function useDirection() {
17
+ export default function useDirection(): ['auto' | 'ltr' | 'rtl'] {
18
18
  const [dir] = useDirFromProps();
19
19
  const [language] = useLanguage();
20
20
  const determinedDirection = useMemo(() => determineDirection(dir, language), [dir, language]);
@@ -1,5 +1,5 @@
1
1
  import useWebChatAPIContext from './internal/useWebChatAPIContext';
2
2
 
3
- export default function useDisabled() {
3
+ export default function useDisabled(): [boolean] {
4
4
  return [useWebChatAPIContext().disabled];
5
5
  }
@@ -1,5 +1,5 @@
1
1
  import useWebChatAPIContext from './internal/useWebChatAPIContext';
2
2
 
3
- export default function useDismissNotification() {
3
+ export default function useDismissNotification(): (id: string) => void {
4
4
  return useWebChatAPIContext().dismissNotification;
5
5
  }
@@ -1,5 +1,5 @@
1
1
  import useWebChatAPIContext from './internal/useWebChatAPIContext';
2
2
 
3
- export default function useEmitTypingIndicator() {
3
+ export default function useEmitTypingIndicator(): () => void {
4
4
  return useWebChatAPIContext().emitTypingIndicator;
5
5
  }
@@ -1,8 +1,9 @@
1
+ import { DirectLineActivity } from 'botframework-webchat-core';
1
2
  import { useMemo } from 'react';
2
3
 
3
4
  import useStyleOptions from './useStyleOptions';
4
5
 
5
- export default function useGetSendTimeoutForActivity() {
6
+ export default function useGetSendTimeoutForActivity(): ({ activity }: { activity: DirectLineActivity }) => number {
6
7
  const [{ sendTimeout, sendTimeoutForAttachments }] = useStyleOptions();
7
8
 
8
9
  return useMemo(
@@ -1,5 +1,5 @@
1
1
  import useWebChatAPIContext from './internal/useWebChatAPIContext';
2
2
 
3
- export default function useGrammars() {
3
+ export default function useGrammars(): [any] {
4
4
  return [useWebChatAPIContext().grammars];
5
5
  }
@@ -0,0 +1,14 @@
1
+ import { DirectLineActivity } from 'botframework-webchat-core';
2
+
3
+ import useWebChatAPIContext from './internal/useWebChatAPIContext';
4
+
5
+ export default function useGroupActivities(): ({
6
+ activities
7
+ }: {
8
+ activities: DirectLineActivity[];
9
+ }) => {
10
+ sender: DirectLineActivity[][];
11
+ status: DirectLineActivity[][];
12
+ } {
13
+ return useWebChatAPIContext().groupActivities;
14
+ }
@@ -1,6 +1,6 @@
1
1
  import useStyleOptions from './useStyleOptions';
2
2
 
3
- export default function useGroupTimestamp() {
3
+ export default function useGroupTimestamp(): [boolean | number] {
4
4
  const [{ groupTimestamp }] = useStyleOptions();
5
5
 
6
6
  return [groupTimestamp];
@@ -1,7 +1,7 @@
1
1
  import useLocalizedStrings from './internal/useLocalizedStrings';
2
2
  import useWebChatAPIContext from './internal/useWebChatAPIContext';
3
3
 
4
- export default function useLanguage(options) {
4
+ export default function useLanguage(options?: 'speech'): [string] {
5
5
  const { language } = useWebChatAPIContext();
6
6
  const localizedStrings = useLocalizedStrings();
7
7
 
@@ -2,7 +2,8 @@ import { useSelector } from './internal/WebChatReduxContext';
2
2
 
3
3
  let showDeprecationNotes = true;
4
4
 
5
- export default function useLastTypingAt() {
5
+ /** @deprecated Please use "useActiveTyping" instead. */
6
+ export default function useLastTypingAt(): [{ [userId: string]: number }] {
6
7
  if (showDeprecationNotes) {
7
8
  console.warn(
8
9
  'botframework-webchat: "useLastTypingAt" is deprecated. Please use "useActiveTyping" instead. This hook will be removed on or after 2022-02-16.'
@@ -2,7 +2,9 @@ import useLanguage from './useLanguage';
2
2
 
3
3
  import { localize } from '../localization/Localize';
4
4
 
5
- export default function useLocalize(text, ...args) {
5
+ // TODO: Remove on or after 2022-02-12.
6
+ /** @deprecated Please use "useLocalizer" instead. */
7
+ export default function useLocalize(text: string, ...args: string[]): boolean | string {
6
8
  const [language] = useLanguage();
7
9
 
8
10
  // TODO: [P3] Use useMemo to cache the result.
@@ -4,7 +4,8 @@ import getLocaleString from '../localization/getLocaleString';
4
4
 
5
5
  let deprecationNotesShown;
6
6
 
7
- export default function useLocalizeDate(date) {
7
+ /** @deprecated Please use useDateFormatter() instead. */
8
+ export default function useLocalizeDate(date: Date | number | string): string {
8
9
  if (!deprecationNotesShown) {
9
10
  console.warn(
10
11
  'botframework-webchat: useLocalizeDate() is deprecated. Please use the useDateFormatter() hooks instead. This hook will be removed on or after 2022-02-12.'
@@ -7,16 +7,29 @@ import isObject from '../utils/isObject';
7
7
 
8
8
  const DEFAULT_STRINGS = getAllLocalizedStrings()['en-US'];
9
9
 
10
- export default function useLocalizer({ plural } = {}) {
10
+ type Plural = {
11
+ zero?: string;
12
+ one?: string;
13
+ two?: string;
14
+ few?: string;
15
+ many?: string;
16
+ other: string;
17
+ };
18
+
19
+ export default function useLocalizer({ plural }: { plural?: keyof Plural } = {}) {
11
20
  const [globalize] = useLocalizedGlobalize();
12
21
  const localizedStrings = useLocalizedStrings();
13
22
 
14
23
  return useCallback(
15
- (id, ...args) => {
24
+ (id: string | Plural, ...args: [(number | string)?, ...string[]]) => {
25
+ let stringId = id as string;
26
+
16
27
  if (plural) {
17
- if (!isObject(id)) {
28
+ const pluralId = id as Plural;
29
+
30
+ if (!isObject(pluralId)) {
18
31
  throw new Error('useLocalizer: Plural string must pass "id" as a map instead of string.');
19
- } else if (typeof id.other !== 'string') {
32
+ } else if (typeof pluralId.other !== 'string') {
20
33
  throw new Error('useLocalizer: Plural string must have "id.other" of string.');
21
34
  } else if (typeof args[0] !== 'number') {
22
35
  throw new Error('useLocalizer: Plural string must have first argument as a number.');
@@ -42,14 +55,14 @@ export default function useLocalizer({ plural } = {}) {
42
55
  );
43
56
  }
44
57
 
45
- id = id[globalize.plural(args[0])] || id.other;
58
+ stringId = pluralId[globalize.plural(args[0])] || pluralId.other;
46
59
  } else if (typeof id !== 'string') {
47
60
  throw new Error('useLocalizer: "id" must be a string.');
48
61
  }
49
62
 
50
63
  return Object.entries(args).reduce(
51
64
  (str, [index, arg]) => str.replace(`$${+index + 1}`, arg),
52
- localizedStrings[id] || DEFAULT_STRINGS[id] || ''
65
+ localizedStrings[stringId] || DEFAULT_STRINGS[stringId] || ''
53
66
  );
54
67
  },
55
68
  [globalize, localizedStrings, plural]
@@ -1,8 +1,9 @@
1
+ import { DirectLineActivity } from 'botframework-webchat-core';
1
2
  import { useCallback } from 'react';
2
3
 
3
4
  import useMarkActivity from './internal/useMarkActivity';
4
5
 
5
- export default function useMarkActivityAsSpoken() {
6
+ export default function useMarkActivityAsSpoken(): (activity: DirectLineActivity) => void {
6
7
  const markActivity = useMarkActivity();
7
8
 
8
9
  return useCallback(activity => markActivity(activity, 'speak', false), [markActivity]);
@@ -1,5 +1,6 @@
1
1
  import { useSelector } from './internal/WebChatReduxContext';
2
+ import Notification from '../types/Notification';
2
3
 
3
- export default function useNotifications() {
4
+ export default function useNotifications(): [Notification[]] {
4
5
  return [useSelector(({ notifications }) => notifications)];
5
6
  }
@@ -0,0 +1,7 @@
1
+ import { DirectLineCardAction } from 'botframework-webchat-core';
2
+
3
+ import useWebChatAPIContext from './internal/useWebChatAPIContext';
4
+
5
+ export default function usePerformCardAction(): (cardAction: DirectLineCardAction) => void {
6
+ return useWebChatAPIContext().onCardAction;
7
+ }
@@ -0,0 +1,8 @@
1
+ import { DirectLineActivity } from 'botframework-webchat-core';
2
+ import Observable from 'core-js/features/observable';
3
+
4
+ import useWebChatAPIContext from './internal/useWebChatAPIContext';
5
+
6
+ export default function usePostActivity(): (activity: DirectLineActivity) => Observable<string> {
7
+ return useWebChatAPIContext().postActivity;
8
+ }
@@ -1,5 +1,5 @@
1
1
  import { useSelector } from './internal/WebChatReduxContext';
2
2
 
3
- export default function useReferenceGrammarID() {
3
+ export default function useReferenceGrammarID(): [string] {
4
4
  return [useSelector(({ referenceGrammarID }) => referenceGrammarID)];
5
5
  }
@@ -6,7 +6,7 @@ import useDateFormatter from './useDateFormatter';
6
6
  import useLocalizedGlobalize from './internal/useLocalizedGlobalize';
7
7
  import useLocalizer from './useLocalizer';
8
8
 
9
- export default function useRelativeTimeFormatter() {
9
+ export default function useRelativeTimeFormatter(): (dateOrString: Date | string) => string {
10
10
  const formatDate = useDateFormatter();
11
11
  const localize = useLocalizer();
12
12
  const [globalize] = useLocalizedGlobalize();
@@ -17,6 +17,7 @@ import useCreateActivityRendererInternal from './internal/useCreateActivityRende
17
17
 
18
18
  let showDeprecationNotes = true;
19
19
 
20
+ /** @deprecated Please use `useCreateActivityRenderer()` instead. */
20
21
  export default function useRenderActivity(renderAttachment) {
21
22
  if (showDeprecationNotes) {
22
23
  console.warn(
@@ -33,19 +34,20 @@ export default function useRenderActivity(renderAttachment) {
33
34
  const createActivityRenderer = useCreateActivityRendererInternal(renderAttachment);
34
35
 
35
36
  return useMemo(
36
- () => (renderActivityArg, renderOptions = {}) => {
37
- const { activity } = renderActivityArg || {};
37
+ () =>
38
+ (renderActivityArg, renderOptions = {}) => {
39
+ const { activity } = renderActivityArg || {};
38
40
 
39
- if (!activity) {
40
- throw new Error(
41
- 'botframework-webchat: First argument passed to the callback of useRenderActivity() must contain an "activity" property.'
42
- );
43
- }
41
+ if (!activity) {
42
+ throw new Error(
43
+ 'botframework-webchat: First argument passed to the callback of useRenderActivity() must contain an "activity" property.'
44
+ );
45
+ }
44
46
 
45
- const renderActivity = createActivityRenderer(renderActivityArg);
47
+ const renderActivity = createActivityRenderer(renderActivityArg);
46
48
 
47
- return !!renderActivity && renderActivity(renderOptions);
48
- },
49
+ return !!renderActivity && renderActivity(renderOptions);
50
+ },
49
51
  [createActivityRenderer]
50
52
  );
51
53
  }
@@ -16,6 +16,7 @@ import useCreateActivityStatusRenderer from './useCreateActivityStatusRenderer';
16
16
 
17
17
  let showDeprecationNotes = true;
18
18
 
19
+ /** @deprecated Please use `useCreateActivityStatusRenderer()` instead. */
19
20
  export default function useRenderActivityStatus({ activity, nextVisibleActivity }) {
20
21
  if (showDeprecationNotes) {
21
22
  console.warn(
@@ -2,6 +2,7 @@ import useCreateAvatarRenderer from './useCreateAvatarRenderer';
2
2
 
3
3
  let showDeprecationNotes = true;
4
4
 
5
+ /** @deprecated Please use "useRenderAvatar()" instead. */
5
6
  export default function useRenderAvatar({ activity }) {
6
7
  if (showDeprecationNotes) {
7
8
  console.warn(
@@ -1,5 +1,6 @@
1
+ import { RenderToast } from '../types/ToastMiddleware';
1
2
  import useWebChatAPIContext from './internal/useWebChatAPIContext';
2
3
 
3
- export default function useRenderToast() {
4
+ export default function useRenderToast(): RenderToast {
4
5
  return useWebChatAPIContext().toastRenderer;
5
6
  }
@@ -0,0 +1,6 @@
1
+ import { RenderTypingIndicator } from '../types/TypingIndicatorMiddleware';
2
+ import useWebChatAPIContext from './internal/useWebChatAPIContext';
3
+
4
+ export default function useRenderTypingIndicator(): RenderTypingIndicator {
5
+ return useWebChatAPIContext().typingIndicatorRenderer;
6
+ }
@@ -1,6 +1,6 @@
1
1
  import { useSelector } from './internal/WebChatReduxContext';
2
2
  import useWebChatAPIContext from './internal/useWebChatAPIContext';
3
3
 
4
- export default function useSendBoxValue() {
4
+ export default function useSendBoxValue(): [string, (value: string) => void] {
5
5
  return [useSelector(({ sendBoxValue }) => sendBoxValue), useWebChatAPIContext().setSendBox];
6
6
  }
@@ -1,5 +1,5 @@
1
1
  import useWebChatAPIContext from './internal/useWebChatAPIContext';
2
2
 
3
- export default function useSendEvent() {
3
+ export default function useSendEvent(): (name: string, value: any) => void {
4
4
  return useWebChatAPIContext().sendEvent;
5
5
  }
@@ -5,7 +5,7 @@ import { useCallback } from 'react';
5
5
  import useTrackEvent from './useTrackEvent';
6
6
  import useWebChatAPIContext from './internal/useWebChatAPIContext';
7
7
 
8
- export default function useSendFiles() {
8
+ export default function useSendFiles(): (files: File[]) => void {
9
9
  const { sendFiles } = useWebChatAPIContext();
10
10
  const trackEvent = useTrackEvent();
11
11
 
@@ -0,0 +1,9 @@
1
+ import useWebChatAPIContext from './internal/useWebChatAPIContext';
2
+
3
+ export default function useSendMessage(): (
4
+ text: string,
5
+ method?: string,
6
+ { channelData }?: { channelData?: any }
7
+ ) => void {
8
+ return useWebChatAPIContext().sendMessage;
9
+ }
@@ -1,5 +1,5 @@
1
1
  import useWebChatAPIContext from './internal/useWebChatAPIContext';
2
2
 
3
- export default function useSendMessageBack() {
3
+ export default function useSendMessageBack(): (value: any, text?: string, displayText?: string) => void {
4
4
  return useWebChatAPIContext().sendMessageBack;
5
5
  }
@@ -1,5 +1,5 @@
1
1
  import useWebChatAPIContext from './internal/useWebChatAPIContext';
2
2
 
3
- export default function useSendPostBack() {
3
+ export default function useSendPostBack(): (value?: any) => void {
4
4
  return useWebChatAPIContext().sendPostBack;
5
5
  }
@@ -1,8 +1,11 @@
1
+ import { DirectLineActivity } from 'botframework-webchat-core';
2
+
1
3
  import useGetSendTimeoutForActivity from './useGetSendTimeoutForActivity';
2
4
 
3
5
  let showDeprecationNotes = true;
4
6
 
5
- export default function useSendTimeoutForActivity(activity) {
7
+ /** @deprecated Please use "useGetSendTimeoutForActivity()" instead. */
8
+ export default function useSendTimeoutForActivity(activity: DirectLineActivity) {
6
9
  if (showDeprecationNotes) {
7
10
  console.warn(
8
11
  'botframework-webchat: "useSendTimeoutForActivity" is deprecated and will be removed on or after 2022-07-28. Please use "useGetSendTimeoutForActivity()" instead.'