botframework-webchat-api 4.17.1 → 4.18.1-hotfix.20260127.b53acdf

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 (708) hide show
  1. package/decorator.js +3 -0
  2. package/dist/botframework-webchat-api.d.mts +213 -55
  3. package/dist/botframework-webchat-api.d.ts +1612 -0
  4. package/dist/botframework-webchat-api.decorator.d.mts +30 -0
  5. package/dist/botframework-webchat-api.decorator.d.ts +30 -0
  6. package/dist/botframework-webchat-api.decorator.js +3 -0
  7. package/dist/botframework-webchat-api.decorator.js.map +1 -0
  8. package/dist/botframework-webchat-api.decorator.mjs +3 -0
  9. package/dist/botframework-webchat-api.decorator.mjs.LEGAL.txt +0 -0
  10. package/dist/botframework-webchat-api.decorator.mjs.map +1 -0
  11. package/dist/botframework-webchat-api.internal.d.mts +18 -1
  12. package/dist/botframework-webchat-api.internal.d.ts +20 -0
  13. package/dist/botframework-webchat-api.internal.js +3 -0
  14. package/dist/botframework-webchat-api.internal.js.LEGAL.txt +0 -0
  15. package/dist/botframework-webchat-api.internal.js.map +1 -0
  16. package/dist/botframework-webchat-api.internal.mjs +1 -1
  17. package/dist/botframework-webchat-api.internal.mjs.map +1 -1
  18. package/dist/botframework-webchat-api.js +3 -0
  19. package/dist/botframework-webchat-api.js.LEGAL.txt +0 -0
  20. package/dist/botframework-webchat-api.js.map +1 -0
  21. package/dist/botframework-webchat-api.mjs +1 -1
  22. package/dist/botframework-webchat-api.mjs.map +1 -1
  23. package/dist/chunk-2HABAU7C.mjs +3 -0
  24. package/dist/chunk-2HABAU7C.mjs.LEGAL.txt +0 -0
  25. package/dist/chunk-2HABAU7C.mjs.map +1 -0
  26. package/dist/chunk-45Z2ZE4M.js +3 -0
  27. package/dist/chunk-45Z2ZE4M.js.LEGAL.txt +0 -0
  28. package/dist/chunk-45Z2ZE4M.js.map +1 -0
  29. package/dist/chunk-7K3OK5TS.mjs +3 -0
  30. package/dist/chunk-7K3OK5TS.mjs.LEGAL.txt +0 -0
  31. package/dist/chunk-7K3OK5TS.mjs.map +1 -0
  32. package/dist/chunk-LXPINC7N.js +3 -0
  33. package/dist/chunk-LXPINC7N.js.LEGAL.txt +0 -0
  34. package/dist/chunk-LXPINC7N.js.map +1 -0
  35. package/dist/chunk-PRWGXTDA.mjs +3 -0
  36. package/dist/chunk-PRWGXTDA.mjs.LEGAL.txt +0 -0
  37. package/dist/chunk-PRWGXTDA.mjs.map +1 -0
  38. package/dist/chunk-WH7VSYKK.js +3 -0
  39. package/dist/chunk-WH7VSYKK.js.LEGAL.txt +0 -0
  40. package/dist/chunk-WH7VSYKK.js.map +1 -0
  41. package/dist/metafile-cjs.json +1 -0
  42. package/dist/metafile-esm.json +1 -1
  43. package/dist/types-BXPldIKA.d.mts +86 -0
  44. package/dist/types-BXPldIKA.d.ts +86 -0
  45. package/internal.js +1 -1
  46. package/package.json +68 -70
  47. package/src/StyleOptions.ts +123 -4
  48. package/src/decorator/ActivityBorder/ActivityBorderDecorator.tsx +48 -0
  49. package/src/decorator/ActivityBorder/private/ActivityBorderDecoratorMiddleware.ts +51 -0
  50. package/src/decorator/ActivityBorder/types.ts +1 -0
  51. package/src/decorator/ActivityGrouping/ActivityGroupingDecorator.tsx +31 -0
  52. package/src/decorator/ActivityGrouping/private/ActivityGroupingDecoratorMiddleware.ts +38 -0
  53. package/src/decorator/ActivityGrouping/types.ts +1 -0
  54. package/src/decorator/DecoratorComposer.tsx +22 -0
  55. package/src/decorator/internal/InternalDecoratorComposer.tsx +61 -0
  56. package/src/decorator/internal/LowPriorityDecoratorComposer.tsx +19 -0
  57. package/src/decorator/private/DecoratorComposerContext.ts +16 -0
  58. package/src/decorator/private/PassthroughFallback.tsx +12 -0
  59. package/src/decorator/private/templateMiddleware.test.tsx +100 -0
  60. package/src/decorator/private/templateMiddleware.ts +60 -0
  61. package/src/decorator/types.ts +15 -0
  62. package/src/decorator.ts +16 -0
  63. package/src/defaultStyleOptions.ts +26 -5
  64. package/{lib/external/PrecompiledGlobalize.cjs → src/external/PrecompiledGlobalize.js} +8 -7
  65. package/src/hooks/Composer.tsx +75 -53
  66. package/src/hooks/index.ts +7 -1
  67. package/src/hooks/internal/SendBoxMiddleware.ts +5 -3
  68. package/src/hooks/internal/SendBoxToolbarMiddleware.ts +5 -3
  69. package/src/hooks/internal/Tracker.ts +1 -1
  70. package/src/hooks/internal/WebChatAPIContext.ts +12 -5
  71. package/src/hooks/internal/private/templateMiddleware.ts +3 -43
  72. package/src/hooks/internal/usePrevious.ts +5 -2
  73. package/src/hooks/middleware/concatMiddleware.spec.js +20 -0
  74. package/src/hooks/middleware/concatMiddleware.ts +6 -5
  75. package/src/hooks/private/numberWithInfinity.spec.ts +9 -0
  76. package/src/hooks/private/numberWithInfinity.ts +15 -0
  77. package/src/hooks/private/reduceIterable.spec.ts +29 -0
  78. package/src/hooks/private/reduceIterable.ts +13 -0
  79. package/src/hooks/useActiveTyping.ts +31 -28
  80. package/src/hooks/useDisabled.ts +8 -2
  81. package/src/hooks/useGetActivitiesByKey.ts +3 -0
  82. package/src/hooks/useSuggestedActions.ts +17 -4
  83. package/src/hooks/useUIState.ts +18 -0
  84. package/src/hooks/validation/uiState.parseUIState.spec.ts +21 -0
  85. package/src/hooks/validation/uiState.ts +10 -0
  86. package/src/index.ts +4 -4
  87. package/src/internal.ts +3 -1
  88. package/src/localization/ar-SA.json +19 -0
  89. package/src/localization/bg-BG.json +19 -0
  90. package/src/localization/ca-ES.json +19 -0
  91. package/src/localization/cs-CZ.json +19 -0
  92. package/src/localization/da-DK.json +19 -0
  93. package/src/localization/de-DE.json +19 -0
  94. package/src/localization/el-GR.json +19 -0
  95. package/src/localization/en-US.json +20 -2
  96. package/src/localization/es-ES.json +19 -0
  97. package/src/localization/et-EE.json +19 -0
  98. package/src/localization/eu-ES.json +19 -0
  99. package/src/localization/fi-FI.json +19 -0
  100. package/src/localization/fr-FR.json +19 -0
  101. package/src/localization/gl-ES.json +19 -0
  102. package/src/localization/he-IL.json +20 -1
  103. package/src/localization/hi-IN.json +19 -0
  104. package/src/localization/hr-HR.json +19 -0
  105. package/src/localization/hu-HU.json +19 -0
  106. package/src/localization/id-ID.json +19 -0
  107. package/src/localization/it-IT.json +19 -0
  108. package/src/localization/ja-JP.json +19 -0
  109. package/src/localization/kk-KZ.json +19 -0
  110. package/src/localization/ko-KR.json +19 -0
  111. package/src/localization/lt-LT.json +19 -0
  112. package/src/localization/lv-LV.json +19 -0
  113. package/src/localization/ms-MY.json +19 -0
  114. package/src/localization/nb-NO.json +19 -0
  115. package/src/localization/nl-NL.json +19 -0
  116. package/src/localization/pl-PL.json +19 -0
  117. package/src/localization/pt-BR.json +19 -0
  118. package/src/localization/pt-PT.json +19 -0
  119. package/src/localization/ro-RO.json +19 -0
  120. package/src/localization/ru-RU.json +19 -0
  121. package/src/localization/sk-SK.json +19 -0
  122. package/src/localization/sl-SI.json +19 -0
  123. package/src/localization/sr-Cyrl-CS.json +19 -0
  124. package/src/localization/sr-Latn-CS.json +19 -0
  125. package/src/localization/sv-SE.json +19 -0
  126. package/src/localization/th-TH.json +19 -0
  127. package/src/localization/tr-TR.json +19 -0
  128. package/src/localization/uk-UA.json +19 -0
  129. package/src/localization/vi-VN.json +19 -0
  130. package/src/localization/zh-CN.json +21 -2
  131. package/src/localization/zh-HK.json +19 -0
  132. package/src/localization/zh-TW.json +19 -0
  133. package/src/normalizeStyleOptions.ts +45 -0
  134. package/src/providers/ActivityAcknowledgement/useLastReadActivityKey.ts +1 -1
  135. package/src/providers/ActivityKeyer/ActivityKeyerComposer.tsx +50 -30
  136. package/src/providers/ActivityKeyer/private/Context.ts +2 -1
  137. package/src/providers/ActivityKeyer/private/lastOf.spec.ts +6 -0
  138. package/src/providers/ActivityKeyer/private/lastOf.ts +3 -0
  139. package/src/providers/ActivityKeyer/private/someIterable.spec.ts +44 -0
  140. package/src/providers/ActivityKeyer/private/someIterable.ts +9 -0
  141. package/src/providers/ActivityKeyer/useGetActivitiesByKey.ts +7 -0
  142. package/src/providers/ActivityListener/ActivityListenerComposer.tsx +28 -0
  143. package/src/providers/ActivityListener/private/Context.tsx +16 -0
  144. package/src/providers/ActivityListener/private/useContext.ts +6 -0
  145. package/src/providers/ActivityListener/useUpsertedActivities.ts +6 -0
  146. package/src/providers/ActivitySendStatus/ActivitySendStatusComposer.tsx +2 -2
  147. package/src/providers/ActivityTyping/ActivityTypingComposer.tsx +170 -0
  148. package/src/providers/ActivityTyping/private/Context.ts +16 -0
  149. package/src/providers/ActivityTyping/private/useContext.ts +6 -0
  150. package/src/providers/ActivityTyping/private/useMemoWithPrevious.ts +17 -0
  151. package/src/providers/ActivityTyping/private/useReduceActivities.spec.tsx +231 -0
  152. package/src/providers/ActivityTyping/private/useReduceActivities.ts +48 -0
  153. package/src/providers/ActivityTyping/types/AllTyping.ts +8 -0
  154. package/src/providers/ActivityTyping/useAllTyping.ts +6 -0
  155. package/src/providers/GroupActivities/GroupActivitiesComposer.tsx +115 -0
  156. package/src/providers/GroupActivities/private/GroupActivitiesContext.ts +23 -0
  157. package/src/providers/GroupActivities/private/createDefaultGroupActivitiesMiddleware.ts +93 -0
  158. package/src/providers/GroupActivities/private/isGroupingValid.ts +41 -0
  159. package/src/providers/GroupActivities/private/useGroupActivitiesContext.ts +6 -0
  160. package/src/providers/GroupActivities/useGroupActivities.ts +20 -0
  161. package/src/providers/GroupActivities/useGroupActivitiesByName.ts +17 -0
  162. package/src/tsconfig.json +1 -5
  163. package/src/types/AttachmentForScreenReaderMiddleware.ts +9 -2
  164. package/src/types/AvatarMiddleware.ts +5 -1
  165. package/src/types/CardActionMiddleware.ts +2 -0
  166. package/src/types/ComponentMiddleware.ts +1 -1
  167. package/src/types/GroupActivitiesMiddleware.ts +7 -11
  168. package/src/types/Typing.ts +2 -3
  169. package/src/utils/validateProps.spec.ts +74 -0
  170. package/src/utils/validateProps.ts +56 -0
  171. package/dist/chunk-4ZIUY4G5.mjs +0 -3
  172. package/dist/chunk-4ZIUY4G5.mjs.map +0 -1
  173. package/lib/StyleOptions.d.ts +0 -697
  174. package/lib/StyleOptions.d.ts.map +0 -1
  175. package/lib/StyleOptions.js +0 -2
  176. package/lib/defaultStyleOptions.d.ts +0 -4
  177. package/lib/defaultStyleOptions.d.ts.map +0 -1
  178. package/lib/defaultStyleOptions.js +0 -277
  179. package/lib/hooks/Composer.d.ts +0 -88
  180. package/lib/hooks/Composer.d.ts.map +0 -1
  181. package/lib/hooks/Composer.js +0 -602
  182. package/lib/hooks/index.d.ts +0 -72
  183. package/lib/hooks/index.d.ts.map +0 -1
  184. package/lib/hooks/index.js +0 -497
  185. package/lib/hooks/internal/ErrorBox.js +0 -47
  186. package/lib/hooks/internal/SendBoxMiddleware.d.ts +0 -34
  187. package/lib/hooks/internal/SendBoxMiddleware.d.ts.map +0 -1
  188. package/lib/hooks/internal/SendBoxMiddleware.js +0 -17
  189. package/lib/hooks/internal/SendBoxToolbarMiddleware.d.ts +0 -34
  190. package/lib/hooks/internal/SendBoxToolbarMiddleware.d.ts.map +0 -1
  191. package/lib/hooks/internal/SendBoxToolbarMiddleware.js +0 -17
  192. package/lib/hooks/internal/Tracker.d.ts +0 -4
  193. package/lib/hooks/internal/Tracker.d.ts.map +0 -1
  194. package/lib/hooks/internal/Tracker.js +0 -15
  195. package/lib/hooks/internal/WebChatAPIContext.d.ts +0 -80
  196. package/lib/hooks/internal/WebChatAPIContext.d.ts.map +0 -1
  197. package/lib/hooks/internal/WebChatAPIContext.js +0 -12
  198. package/lib/hooks/internal/WebChatReduxContext.js +0 -17
  199. package/lib/hooks/internal/defaultSelectVoice.js +0 -28
  200. package/lib/hooks/internal/private/templateMiddleware.d.ts +0 -28
  201. package/lib/hooks/internal/private/templateMiddleware.d.ts.map +0 -1
  202. package/lib/hooks/internal/private/templateMiddleware.js +0 -48
  203. package/lib/hooks/internal/useCreateActivityRendererInternal.d.ts +0 -4
  204. package/lib/hooks/internal/useCreateActivityRendererInternal.d.ts.map +0 -1
  205. package/lib/hooks/internal/useCreateActivityRendererInternal.js +0 -37
  206. package/lib/hooks/internal/useDebugDeps.js +0 -39
  207. package/lib/hooks/internal/useDirFromProps.js +0 -12
  208. package/lib/hooks/internal/useErrorBoxClass.js +0 -14
  209. package/lib/hooks/internal/useForceRender.js +0 -24
  210. package/lib/hooks/internal/useLocalizedGlobalize.js +0 -12
  211. package/lib/hooks/internal/useLocalizedStrings.js +0 -14
  212. package/lib/hooks/internal/useMarkActivity.js +0 -12
  213. package/lib/hooks/internal/usePrevious.d.ts +0 -2
  214. package/lib/hooks/internal/usePrevious.d.ts.map +0 -1
  215. package/lib/hooks/internal/usePrevious.js +0 -15
  216. package/lib/hooks/internal/useReadTelemetryDimensions.js +0 -20
  217. package/lib/hooks/internal/useSetDictateState.d.ts +0 -2
  218. package/lib/hooks/internal/useSetDictateState.d.ts.map +0 -1
  219. package/lib/hooks/internal/useSetDictateState.js +0 -12
  220. package/lib/hooks/internal/useTimer.d.ts +0 -5
  221. package/lib/hooks/internal/useTimer.d.ts.map +0 -1
  222. package/lib/hooks/internal/useTimer.js +0 -43
  223. package/lib/hooks/internal/useTracker.js +0 -42
  224. package/lib/hooks/internal/useValueRef.d.ts +0 -3
  225. package/lib/hooks/internal/useValueRef.d.ts.map +0 -1
  226. package/lib/hooks/internal/useValueRef.js +0 -22
  227. package/lib/hooks/internal/useWebChatAPIContext.d.ts +0 -83
  228. package/lib/hooks/internal/useWebChatAPIContext.d.ts.map +0 -1
  229. package/lib/hooks/internal/useWebChatAPIContext.js +0 -17
  230. package/lib/hooks/middleware/UserlandBoundary.js +0 -48
  231. package/lib/hooks/middleware/applyMiddleware.js +0 -122
  232. package/lib/hooks/middleware/concatMiddleware.d.ts +0 -6
  233. package/lib/hooks/middleware/concatMiddleware.d.ts.map +0 -1
  234. package/lib/hooks/middleware/concatMiddleware.js +0 -33
  235. package/lib/hooks/middleware/createDefaultCardActionMiddleware.d.ts +0 -3
  236. package/lib/hooks/middleware/createDefaultCardActionMiddleware.d.ts.map +0 -1
  237. package/lib/hooks/middleware/createDefaultCardActionMiddleware.js +0 -43
  238. package/lib/hooks/middleware/createDefaultGroupActivitiesMiddleware.d.ts +0 -7
  239. package/lib/hooks/middleware/createDefaultGroupActivitiesMiddleware.d.ts.map +0 -1
  240. package/lib/hooks/middleware/createDefaultGroupActivitiesMiddleware.js +0 -68
  241. package/lib/hooks/useActiveTyping.d.ts +0 -6
  242. package/lib/hooks/useActiveTyping.d.ts.map +0 -1
  243. package/lib/hooks/useActiveTyping.js +0 -81
  244. package/lib/hooks/useActivities.d.ts +0 -3
  245. package/lib/hooks/useActivities.d.ts.map +0 -1
  246. package/lib/hooks/useActivities.js +0 -14
  247. package/lib/hooks/useActivityKeys.d.ts +0 -3
  248. package/lib/hooks/useActivityKeys.d.ts.map +0 -1
  249. package/lib/hooks/useActivityKeys.js +0 -11
  250. package/lib/hooks/useActivityKeysByRead.d.ts +0 -3
  251. package/lib/hooks/useActivityKeysByRead.d.ts.map +0 -1
  252. package/lib/hooks/useActivityKeysByRead.js +0 -11
  253. package/lib/hooks/useAvatarForBot.d.ts +0 -5
  254. package/lib/hooks/useAvatarForBot.d.ts.map +0 -1
  255. package/lib/hooks/useAvatarForBot.js +0 -26
  256. package/lib/hooks/useAvatarForUser.d.ts +0 -5
  257. package/lib/hooks/useAvatarForUser.d.ts.map +0 -1
  258. package/lib/hooks/useAvatarForUser.js +0 -26
  259. package/lib/hooks/useByteFormatter.d.ts +0 -2
  260. package/lib/hooks/useByteFormatter.d.ts.map +0 -1
  261. package/lib/hooks/useByteFormatter.js +0 -43
  262. package/lib/hooks/useConnectivityStatus.d.ts +0 -2
  263. package/lib/hooks/useConnectivityStatus.d.ts.map +0 -1
  264. package/lib/hooks/useConnectivityStatus.js +0 -14
  265. package/lib/hooks/useCreateActivityRenderer.d.ts +0 -3
  266. package/lib/hooks/useCreateActivityRenderer.d.ts.map +0 -1
  267. package/lib/hooks/useCreateActivityRenderer.js +0 -14
  268. package/lib/hooks/useCreateActivityStatusRenderer.d.ts +0 -10
  269. package/lib/hooks/useCreateActivityStatusRenderer.d.ts.map +0 -1
  270. package/lib/hooks/useCreateActivityStatusRenderer.js +0 -72
  271. package/lib/hooks/useCreateAttachmentForScreenReaderRenderer.d.ts +0 -3
  272. package/lib/hooks/useCreateAttachmentForScreenReaderRenderer.d.ts.map +0 -1
  273. package/lib/hooks/useCreateAttachmentForScreenReaderRenderer.js +0 -12
  274. package/lib/hooks/useCreateAvatarRenderer.d.ts +0 -6
  275. package/lib/hooks/useCreateAvatarRenderer.d.ts.map +0 -1
  276. package/lib/hooks/useCreateAvatarRenderer.js +0 -44
  277. package/lib/hooks/useCreateScrollToEndButtonRenderer.d.ts +0 -3
  278. package/lib/hooks/useCreateScrollToEndButtonRenderer.d.ts.map +0 -1
  279. package/lib/hooks/useCreateScrollToEndButtonRenderer.js +0 -12
  280. package/lib/hooks/useDateFormatter.d.ts +0 -2
  281. package/lib/hooks/useDateFormatter.d.ts.map +0 -1
  282. package/lib/hooks/useDateFormatter.js +0 -35
  283. package/lib/hooks/useDebouncedNotifications.d.ts +0 -13
  284. package/lib/hooks/useDebouncedNotifications.d.ts.map +0 -1
  285. package/lib/hooks/useDebouncedNotifications.js +0 -118
  286. package/lib/hooks/useDictateInterims.d.ts +0 -2
  287. package/lib/hooks/useDictateInterims.d.ts.map +0 -1
  288. package/lib/hooks/useDictateInterims.js +0 -16
  289. package/lib/hooks/useDictateState.d.ts +0 -2
  290. package/lib/hooks/useDictateState.d.ts.map +0 -1
  291. package/lib/hooks/useDictateState.js +0 -15
  292. package/lib/hooks/useDirection.d.ts +0 -2
  293. package/lib/hooks/useDirection.d.ts.map +0 -1
  294. package/lib/hooks/useDirection.js +0 -38
  295. package/lib/hooks/useDisabled.d.ts +0 -2
  296. package/lib/hooks/useDisabled.d.ts.map +0 -1
  297. package/lib/hooks/useDisabled.js +0 -12
  298. package/lib/hooks/useDismissNotification.d.ts +0 -2
  299. package/lib/hooks/useDismissNotification.d.ts.map +0 -1
  300. package/lib/hooks/useDismissNotification.js +0 -12
  301. package/lib/hooks/useEmitTypingIndicator.d.ts +0 -2
  302. package/lib/hooks/useEmitTypingIndicator.d.ts.map +0 -1
  303. package/lib/hooks/useEmitTypingIndicator.js +0 -12
  304. package/lib/hooks/useGetActivityByKey.d.ts +0 -3
  305. package/lib/hooks/useGetActivityByKey.d.ts.map +0 -1
  306. package/lib/hooks/useGetActivityByKey.js +0 -11
  307. package/lib/hooks/useGetHasAcknowledgedByActivityKey.d.ts +0 -3
  308. package/lib/hooks/useGetHasAcknowledgedByActivityKey.d.ts.map +0 -1
  309. package/lib/hooks/useGetHasAcknowledgedByActivityKey.js +0 -11
  310. package/lib/hooks/useGetKeyByActivity.d.ts +0 -3
  311. package/lib/hooks/useGetKeyByActivity.d.ts.map +0 -1
  312. package/lib/hooks/useGetKeyByActivity.js +0 -11
  313. package/lib/hooks/useGetKeyByActivityId.d.ts +0 -3
  314. package/lib/hooks/useGetKeyByActivityId.d.ts.map +0 -1
  315. package/lib/hooks/useGetKeyByActivityId.js +0 -11
  316. package/lib/hooks/useGetSendTimeoutForActivity.d.ts +0 -5
  317. package/lib/hooks/useGetSendTimeoutForActivity.d.ts.map +0 -1
  318. package/lib/hooks/useGetSendTimeoutForActivity.js +0 -33
  319. package/lib/hooks/useGrammars.d.ts +0 -2
  320. package/lib/hooks/useGrammars.d.ts.map +0 -1
  321. package/lib/hooks/useGrammars.js +0 -12
  322. package/lib/hooks/useGroupActivities.d.ts +0 -8
  323. package/lib/hooks/useGroupActivities.d.ts.map +0 -1
  324. package/lib/hooks/useGroupActivities.js +0 -12
  325. package/lib/hooks/useGroupTimestamp.d.ts +0 -2
  326. package/lib/hooks/useGroupTimestamp.d.ts.map +0 -1
  327. package/lib/hooks/useGroupTimestamp.js +0 -21
  328. package/lib/hooks/useLanguage.d.ts +0 -2
  329. package/lib/hooks/useLanguage.d.ts.map +0 -1
  330. package/lib/hooks/useLanguage.js +0 -19
  331. package/lib/hooks/useLastAcknowledgedActivityKey.d.ts +0 -3
  332. package/lib/hooks/useLastAcknowledgedActivityKey.d.ts.map +0 -1
  333. package/lib/hooks/useLastAcknowledgedActivityKey.js +0 -11
  334. package/lib/hooks/useLastReadActivityKey.d.ts +0 -3
  335. package/lib/hooks/useLastReadActivityKey.d.ts.map +0 -1
  336. package/lib/hooks/useLastReadActivityKey.js +0 -11
  337. package/lib/hooks/useLocalizer.d.ts +0 -13
  338. package/lib/hooks/useLocalizer.d.ts.map +0 -1
  339. package/lib/hooks/useLocalizer.js +0 -75
  340. package/lib/hooks/useMarkActivityAsSpoken.d.ts +0 -3
  341. package/lib/hooks/useMarkActivityAsSpoken.d.ts.map +0 -1
  342. package/lib/hooks/useMarkActivityAsSpoken.js +0 -16
  343. package/lib/hooks/useMarkActivityKeyAsRead.d.ts +0 -3
  344. package/lib/hooks/useMarkActivityKeyAsRead.d.ts.map +0 -1
  345. package/lib/hooks/useMarkActivityKeyAsRead.js +0 -11
  346. package/lib/hooks/useMarkAllAsAcknowledged.d.ts +0 -3
  347. package/lib/hooks/useMarkAllAsAcknowledged.d.ts.map +0 -1
  348. package/lib/hooks/useMarkAllAsAcknowledged.js +0 -11
  349. package/lib/hooks/useNotifications.d.ts +0 -3
  350. package/lib/hooks/useNotifications.d.ts.map +0 -1
  351. package/lib/hooks/useNotifications.js +0 -14
  352. package/lib/hooks/usePerformCardAction.d.ts +0 -3
  353. package/lib/hooks/usePerformCardAction.d.ts.map +0 -1
  354. package/lib/hooks/usePerformCardAction.js +0 -12
  355. package/lib/hooks/usePonyfill.d.ts +0 -3
  356. package/lib/hooks/usePonyfill.d.ts.map +0 -1
  357. package/lib/hooks/usePonyfill.js +0 -11
  358. package/lib/hooks/usePostActivity.d.ts +0 -3
  359. package/lib/hooks/usePostActivity.d.ts.map +0 -1
  360. package/lib/hooks/usePostActivity.js +0 -12
  361. package/lib/hooks/useReferenceGrammarID.d.ts +0 -2
  362. package/lib/hooks/useReferenceGrammarID.d.ts.map +0 -1
  363. package/lib/hooks/useReferenceGrammarID.js +0 -14
  364. package/lib/hooks/useRelativeTimeFormatter.d.ts +0 -2
  365. package/lib/hooks/useRelativeTimeFormatter.d.ts.map +0 -1
  366. package/lib/hooks/useRelativeTimeFormatter.js +0 -61
  367. package/lib/hooks/useRenderAttachment.d.ts +0 -3
  368. package/lib/hooks/useRenderAttachment.d.ts.map +0 -1
  369. package/lib/hooks/useRenderAttachment.js +0 -14
  370. package/lib/hooks/useRenderToast.d.ts +0 -3
  371. package/lib/hooks/useRenderToast.d.ts.map +0 -1
  372. package/lib/hooks/useRenderToast.js +0 -12
  373. package/lib/hooks/useRenderTypingIndicator.d.ts +0 -3
  374. package/lib/hooks/useRenderTypingIndicator.d.ts.map +0 -1
  375. package/lib/hooks/useRenderTypingIndicator.js +0 -12
  376. package/lib/hooks/useSendBoxAttachments.d.ts +0 -6
  377. package/lib/hooks/useSendBoxAttachments.d.ts.map +0 -1
  378. package/lib/hooks/useSendBoxAttachments.js +0 -23
  379. package/lib/hooks/useSendBoxValue.d.ts +0 -2
  380. package/lib/hooks/useSendBoxValue.d.ts.map +0 -1
  381. package/lib/hooks/useSendBoxValue.js +0 -16
  382. package/lib/hooks/useSendEvent.d.ts +0 -2
  383. package/lib/hooks/useSendEvent.d.ts.map +0 -1
  384. package/lib/hooks/useSendEvent.js +0 -12
  385. package/lib/hooks/useSendFiles.d.ts +0 -10
  386. package/lib/hooks/useSendFiles.d.ts.map +0 -1
  387. package/lib/hooks/useSendFiles.js +0 -35
  388. package/lib/hooks/useSendMessage.d.ts +0 -6
  389. package/lib/hooks/useSendMessage.d.ts.map +0 -1
  390. package/lib/hooks/useSendMessage.js +0 -33
  391. package/lib/hooks/useSendMessageBack.d.ts +0 -2
  392. package/lib/hooks/useSendMessageBack.d.ts.map +0 -1
  393. package/lib/hooks/useSendMessageBack.js +0 -12
  394. package/lib/hooks/useSendPostBack.d.ts +0 -2
  395. package/lib/hooks/useSendPostBack.d.ts.map +0 -1
  396. package/lib/hooks/useSendPostBack.js +0 -12
  397. package/lib/hooks/useSendStatusByActivityKey.d.ts +0 -22
  398. package/lib/hooks/useSendStatusByActivityKey.d.ts.map +0 -1
  399. package/lib/hooks/useSendStatusByActivityKey.js +0 -31
  400. package/lib/hooks/useSendTimeoutForActivity.d.ts +0 -4
  401. package/lib/hooks/useSendTimeoutForActivity.d.ts.map +0 -1
  402. package/lib/hooks/useSendTimeoutForActivity.js +0 -22
  403. package/lib/hooks/useSendTypingIndicator.d.ts +0 -2
  404. package/lib/hooks/useSendTypingIndicator.d.ts.map +0 -1
  405. package/lib/hooks/useSendTypingIndicator.js +0 -14
  406. package/lib/hooks/useSetNotification.d.ts +0 -3
  407. package/lib/hooks/useSetNotification.d.ts.map +0 -1
  408. package/lib/hooks/useSetNotification.js +0 -12
  409. package/lib/hooks/useShouldSpeakIncomingActivity.d.ts +0 -2
  410. package/lib/hooks/useShouldSpeakIncomingActivity.d.ts.map +0 -1
  411. package/lib/hooks/useShouldSpeakIncomingActivity.js +0 -22
  412. package/lib/hooks/useStartDictate.d.ts +0 -2
  413. package/lib/hooks/useStartDictate.d.ts.map +0 -1
  414. package/lib/hooks/useStartDictate.js +0 -12
  415. package/lib/hooks/useStopDictate.d.ts +0 -2
  416. package/lib/hooks/useStopDictate.d.ts.map +0 -1
  417. package/lib/hooks/useStopDictate.js +0 -12
  418. package/lib/hooks/useStyleOptions.d.ts +0 -3
  419. package/lib/hooks/useStyleOptions.d.ts.map +0 -1
  420. package/lib/hooks/useStyleOptions.js +0 -12
  421. package/lib/hooks/useSubmitSendBox.d.ts +0 -4
  422. package/lib/hooks/useSubmitSendBox.d.ts.map +0 -1
  423. package/lib/hooks/useSubmitSendBox.js +0 -49
  424. package/lib/hooks/useSuggestedActions.d.ts +0 -3
  425. package/lib/hooks/useSuggestedActions.d.ts.map +0 -1
  426. package/lib/hooks/useSuggestedActions.js +0 -25
  427. package/lib/hooks/useTimeoutForSend.d.ts +0 -3
  428. package/lib/hooks/useTimeoutForSend.d.ts.map +0 -1
  429. package/lib/hooks/useTimeoutForSend.js +0 -21
  430. package/lib/hooks/useTrackDimension.d.ts +0 -2
  431. package/lib/hooks/useTrackDimension.d.ts.map +0 -1
  432. package/lib/hooks/useTrackDimension.js +0 -14
  433. package/lib/hooks/useTrackEvent.d.ts +0 -10
  434. package/lib/hooks/useTrackEvent.d.ts.map +0 -1
  435. package/lib/hooks/useTrackEvent.js +0 -51
  436. package/lib/hooks/useTrackException.d.ts +0 -2
  437. package/lib/hooks/useTrackException.d.ts.map +0 -1
  438. package/lib/hooks/useTrackException.js +0 -31
  439. package/lib/hooks/useTrackTiming.d.ts +0 -2
  440. package/lib/hooks/useTrackTiming.d.ts.map +0 -1
  441. package/lib/hooks/useTrackTiming.js +0 -93
  442. package/lib/hooks/useUserID.d.ts +0 -2
  443. package/lib/hooks/useUserID.d.ts.map +0 -1
  444. package/lib/hooks/useUserID.js +0 -12
  445. package/lib/hooks/useUsername.d.ts +0 -2
  446. package/lib/hooks/useUsername.d.ts.map +0 -1
  447. package/lib/hooks/useUsername.js +0 -12
  448. package/lib/hooks/useVoiceSelector.d.ts +0 -2
  449. package/lib/hooks/useVoiceSelector.d.ts.map +0 -1
  450. package/lib/hooks/useVoiceSelector.js +0 -16
  451. package/lib/hooks/utils/ErrorBoundary.js +0 -68
  452. package/lib/hooks/utils/observableToPromise.d.ts +0 -3
  453. package/lib/hooks/utils/observableToPromise.d.ts.map +0 -1
  454. package/lib/hooks/utils/observableToPromise.js +0 -28
  455. package/lib/index.d.ts +0 -37
  456. package/lib/index.d.ts.map +0 -1
  457. package/lib/index.js +0 -88
  458. package/lib/internal.d.ts +0 -3
  459. package/lib/internal.d.ts.map +0 -1
  460. package/lib/internal.js +0 -14
  461. package/lib/localization/Localize.d.ts +0 -4
  462. package/lib/localization/Localize.d.ts.map +0 -1
  463. package/lib/localization/Localize.js +0 -50
  464. package/lib/localization/ar-EG.json +0 -42
  465. package/lib/localization/ar-JO.json +0 -45
  466. package/lib/localization/ar-SA.json +0 -97
  467. package/lib/localization/bg-BG.json +0 -97
  468. package/lib/localization/ca-ES.json +0 -97
  469. package/lib/localization/cs-CZ.json +0 -97
  470. package/lib/localization/da-DK.json +0 -97
  471. package/lib/localization/de-DE.json +0 -97
  472. package/lib/localization/el-GR.json +0 -97
  473. package/lib/localization/en-US.json +0 -167
  474. package/lib/localization/es-ES.json +0 -97
  475. package/lib/localization/et-EE.json +0 -97
  476. package/lib/localization/eu-ES.json +0 -97
  477. package/lib/localization/fi-FI.json +0 -97
  478. package/lib/localization/fr-FR.json +0 -97
  479. package/lib/localization/getAllLocalizedStrings.d.ts +0 -6
  480. package/lib/localization/getAllLocalizedStrings.d.ts.map +0 -1
  481. package/lib/localization/getAllLocalizedStrings.js +0 -117
  482. package/lib/localization/getRTLList.d.ts +0 -2
  483. package/lib/localization/getRTLList.d.ts.map +0 -1
  484. package/lib/localization/getRTLList.js +0 -46
  485. package/lib/localization/gl-ES.json +0 -97
  486. package/lib/localization/he-IL.json +0 -97
  487. package/lib/localization/hi-IN.json +0 -97
  488. package/lib/localization/hr-HR.json +0 -97
  489. package/lib/localization/hu-HU.json +0 -97
  490. package/lib/localization/id-ID.json +0 -97
  491. package/lib/localization/it-IT.json +0 -97
  492. package/lib/localization/ja-JP.json +0 -97
  493. package/lib/localization/kk-KZ.json +0 -97
  494. package/lib/localization/ko-KR.json +0 -97
  495. package/lib/localization/lt-LT.json +0 -97
  496. package/lib/localization/lv-LV.json +0 -97
  497. package/lib/localization/mergeLocalizedStrings.d.ts +0 -7
  498. package/lib/localization/mergeLocalizedStrings.d.ts.map +0 -1
  499. package/lib/localization/mergeLocalizedStrings.js +0 -49
  500. package/lib/localization/ms-MY.json +0 -97
  501. package/lib/localization/nb-NO.json +0 -97
  502. package/lib/localization/nl-NL.json +0 -97
  503. package/lib/localization/overrides.json +0 -257
  504. package/lib/localization/pl-PL.json +0 -97
  505. package/lib/localization/pt-BR.json +0 -97
  506. package/lib/localization/pt-PT.json +0 -97
  507. package/lib/localization/ro-RO.json +0 -97
  508. package/lib/localization/ru-RU.json +0 -97
  509. package/lib/localization/sk-SK.json +0 -97
  510. package/lib/localization/sl-SI.json +0 -97
  511. package/lib/localization/sl-SL.json +0 -3
  512. package/lib/localization/sr-Cyrl-CS.json +0 -97
  513. package/lib/localization/sr-Cyrl.json +0 -3
  514. package/lib/localization/sr-Latn-CS.json +0 -97
  515. package/lib/localization/sr-Latn.json +0 -3
  516. package/lib/localization/sv-SE.json +0 -97
  517. package/lib/localization/th-TH.json +0 -97
  518. package/lib/localization/tr-TR.json +0 -97
  519. package/lib/localization/uk-UA.json +0 -97
  520. package/lib/localization/vi-VN.json +0 -97
  521. package/lib/localization/yue.json +0 -100
  522. package/lib/localization/zh-CN.json +0 -97
  523. package/lib/localization/zh-HK.json +0 -97
  524. package/lib/localization/zh-TW.json +0 -97
  525. package/lib/normalizeStyleOptions.d.ts +0 -3
  526. package/lib/normalizeStyleOptions.d.ts.map +0 -1
  527. package/lib/normalizeStyleOptions.js +0 -147
  528. package/lib/patchStyleOptionsFromDeprecatedProps.js +0 -21
  529. package/lib/providers/ActivityAcknowledgement/ActivityAcknowledgementComposer.d.ts +0 -6
  530. package/lib/providers/ActivityAcknowledgement/ActivityAcknowledgementComposer.d.ts.map +0 -1
  531. package/lib/providers/ActivityAcknowledgement/ActivityAcknowledgementComposer.js +0 -153
  532. package/lib/providers/ActivityAcknowledgement/private/Context.d.ts +0 -13
  533. package/lib/providers/ActivityAcknowledgement/private/Context.d.ts.map +0 -1
  534. package/lib/providers/ActivityAcknowledgement/private/Context.js +0 -14
  535. package/lib/providers/ActivityAcknowledgement/private/useContext.d.ts +0 -3
  536. package/lib/providers/ActivityAcknowledgement/private/useContext.d.ts.map +0 -1
  537. package/lib/providers/ActivityAcknowledgement/private/useContext.js +0 -18
  538. package/lib/providers/ActivityAcknowledgement/useActivityKeysByRead.d.ts +0 -5
  539. package/lib/providers/ActivityAcknowledgement/useActivityKeysByRead.d.ts.map +0 -1
  540. package/lib/providers/ActivityAcknowledgement/useActivityKeysByRead.js +0 -15
  541. package/lib/providers/ActivityAcknowledgement/useGetHasAcknowledgedByActivityKey.d.ts +0 -2
  542. package/lib/providers/ActivityAcknowledgement/useGetHasAcknowledgedByActivityKey.d.ts.map +0 -1
  543. package/lib/providers/ActivityAcknowledgement/useGetHasAcknowledgedByActivityKey.js +0 -12
  544. package/lib/providers/ActivityAcknowledgement/useLastAcknowledgedActivityKey.d.ts +0 -2
  545. package/lib/providers/ActivityAcknowledgement/useLastAcknowledgedActivityKey.d.ts.map +0 -1
  546. package/lib/providers/ActivityAcknowledgement/useLastAcknowledgedActivityKey.js +0 -12
  547. package/lib/providers/ActivityAcknowledgement/useLastReadActivityKey.d.ts +0 -2
  548. package/lib/providers/ActivityAcknowledgement/useLastReadActivityKey.d.ts.map +0 -1
  549. package/lib/providers/ActivityAcknowledgement/useLastReadActivityKey.js +0 -12
  550. package/lib/providers/ActivityAcknowledgement/useMarkActivityKeyAsRead.d.ts +0 -2
  551. package/lib/providers/ActivityAcknowledgement/useMarkActivityKeyAsRead.d.ts.map +0 -1
  552. package/lib/providers/ActivityAcknowledgement/useMarkActivityKeyAsRead.js +0 -12
  553. package/lib/providers/ActivityAcknowledgement/useMarkAllAsAcknowledged.d.ts +0 -2
  554. package/lib/providers/ActivityAcknowledgement/useMarkAllAsAcknowledged.d.ts.map +0 -1
  555. package/lib/providers/ActivityAcknowledgement/useMarkAllAsAcknowledged.js +0 -12
  556. package/lib/providers/ActivityKeyer/ActivityKeyerComposer.d.ts +0 -20
  557. package/lib/providers/ActivityKeyer/ActivityKeyerComposer.d.ts.map +0 -1
  558. package/lib/providers/ActivityKeyer/ActivityKeyerComposer.js +0 -119
  559. package/lib/providers/ActivityKeyer/private/Context.d.ts +0 -12
  560. package/lib/providers/ActivityKeyer/private/Context.d.ts.map +0 -1
  561. package/lib/providers/ActivityKeyer/private/Context.js +0 -10
  562. package/lib/providers/ActivityKeyer/private/getActivityId.d.ts +0 -3
  563. package/lib/providers/ActivityKeyer/private/getActivityId.d.ts.map +0 -1
  564. package/lib/providers/ActivityKeyer/private/getActivityId.js +0 -10
  565. package/lib/providers/ActivityKeyer/private/getClientActivityId.d.ts +0 -3
  566. package/lib/providers/ActivityKeyer/private/getClientActivityId.d.ts.map +0 -1
  567. package/lib/providers/ActivityKeyer/private/getClientActivityId.js +0 -11
  568. package/lib/providers/ActivityKeyer/private/uniqueId.d.ts +0 -2
  569. package/lib/providers/ActivityKeyer/private/uniqueId.d.ts.map +0 -1
  570. package/lib/providers/ActivityKeyer/private/uniqueId.js +0 -15
  571. package/lib/providers/ActivityKeyer/private/useContext.d.ts +0 -3
  572. package/lib/providers/ActivityKeyer/private/useContext.d.ts.map +0 -1
  573. package/lib/providers/ActivityKeyer/private/useContext.js +0 -18
  574. package/lib/providers/ActivityKeyer/useActivityKeys.d.ts +0 -2
  575. package/lib/providers/ActivityKeyer/useActivityKeys.d.ts.map +0 -1
  576. package/lib/providers/ActivityKeyer/useActivityKeys.js +0 -12
  577. package/lib/providers/ActivityKeyer/useGetActivityByKey.d.ts +0 -3
  578. package/lib/providers/ActivityKeyer/useGetActivityByKey.d.ts.map +0 -1
  579. package/lib/providers/ActivityKeyer/useGetActivityByKey.js +0 -12
  580. package/lib/providers/ActivityKeyer/useGetKeyByActivity.d.ts +0 -3
  581. package/lib/providers/ActivityKeyer/useGetKeyByActivity.d.ts.map +0 -1
  582. package/lib/providers/ActivityKeyer/useGetKeyByActivity.js +0 -12
  583. package/lib/providers/ActivityKeyer/useGetKeyByActivityId.d.ts +0 -2
  584. package/lib/providers/ActivityKeyer/useGetKeyByActivityId.d.ts.map +0 -1
  585. package/lib/providers/ActivityKeyer/useGetKeyByActivityId.js +0 -12
  586. package/lib/providers/ActivitySendStatus/ActivitySendStatusComposer.d.ts +0 -4
  587. package/lib/providers/ActivitySendStatus/ActivitySendStatusComposer.d.ts.map +0 -1
  588. package/lib/providers/ActivitySendStatus/ActivitySendStatusComposer.js +0 -149
  589. package/lib/providers/ActivitySendStatus/private/Context.d.ts +0 -9
  590. package/lib/providers/ActivitySendStatus/private/Context.d.ts.map +0 -1
  591. package/lib/providers/ActivitySendStatus/private/Context.js +0 -13
  592. package/lib/providers/ActivitySendStatus/private/isMapEqual.d.ts +0 -7
  593. package/lib/providers/ActivitySendStatus/private/isMapEqual.d.ts.map +0 -1
  594. package/lib/providers/ActivitySendStatus/private/isMapEqual.js +0 -55
  595. package/lib/providers/ActivitySendStatus/private/useContext.d.ts +0 -3
  596. package/lib/providers/ActivitySendStatus/private/useContext.d.ts.map +0 -1
  597. package/lib/providers/ActivitySendStatus/private/useContext.js +0 -18
  598. package/lib/providers/ActivitySendStatus/useSendStatusByActivityKey.d.ts +0 -22
  599. package/lib/providers/ActivitySendStatus/useSendStatusByActivityKey.d.ts.map +0 -1
  600. package/lib/providers/ActivitySendStatus/useSendStatusByActivityKey.js +0 -31
  601. package/lib/providers/ActivitySendStatusTelemetry/ActivitySendStatusTelemetryComposer.d.ts +0 -3
  602. package/lib/providers/ActivitySendStatusTelemetry/ActivitySendStatusTelemetryComposer.d.ts.map +0 -1
  603. package/lib/providers/ActivitySendStatusTelemetry/ActivitySendStatusTelemetryComposer.js +0 -71
  604. package/lib/providers/Ponyfill/PonyfillComposer.d.ts +0 -17
  605. package/lib/providers/Ponyfill/PonyfillComposer.d.ts.map +0 -1
  606. package/lib/providers/Ponyfill/PonyfillComposer.js +0 -87
  607. package/lib/providers/Ponyfill/private/PonyfillContext.d.ts +0 -8
  608. package/lib/providers/Ponyfill/private/PonyfillContext.d.ts.map +0 -1
  609. package/lib/providers/Ponyfill/private/PonyfillContext.js +0 -10
  610. package/lib/providers/Ponyfill/private/useContext.d.ts +0 -6
  611. package/lib/providers/Ponyfill/private/useContext.d.ts.map +0 -1
  612. package/lib/providers/Ponyfill/private/useContext.js +0 -17
  613. package/lib/providers/Ponyfill/usePonyfill.d.ts +0 -3
  614. package/lib/providers/Ponyfill/usePonyfill.d.ts.map +0 -1
  615. package/lib/providers/Ponyfill/usePonyfill.js +0 -12
  616. package/lib/tsconfig.json +0 -18
  617. package/lib/types/ActivityMiddleware.d.ts +0 -24
  618. package/lib/types/ActivityMiddleware.d.ts.map +0 -1
  619. package/lib/types/ActivityMiddleware.js +0 -2
  620. package/lib/types/ActivityStatusMiddleware.d.ts +0 -17
  621. package/lib/types/ActivityStatusMiddleware.d.ts.map +0 -1
  622. package/lib/types/ActivityStatusMiddleware.js +0 -2
  623. package/lib/types/AttachmentForScreenReaderMiddleware.d.ts +0 -14
  624. package/lib/types/AttachmentForScreenReaderMiddleware.d.ts.map +0 -1
  625. package/lib/types/AttachmentForScreenReaderMiddleware.js +0 -2
  626. package/lib/types/AttachmentMiddleware.d.ts +0 -12
  627. package/lib/types/AttachmentMiddleware.d.ts.map +0 -1
  628. package/lib/types/AttachmentMiddleware.js +0 -2
  629. package/lib/types/AvatarMiddleware.d.ts +0 -15
  630. package/lib/types/AvatarMiddleware.d.ts.map +0 -1
  631. package/lib/types/AvatarMiddleware.js +0 -2
  632. package/lib/types/CardActionMiddleware.d.ts +0 -19
  633. package/lib/types/CardActionMiddleware.d.ts.map +0 -1
  634. package/lib/types/CardActionMiddleware.js +0 -2
  635. package/lib/types/ComponentMiddleware.d.ts +0 -31
  636. package/lib/types/ComponentMiddleware.d.ts.map +0 -1
  637. package/lib/types/ComponentMiddleware.js +0 -2
  638. package/lib/types/ContextOf.d.ts +0 -4
  639. package/lib/types/ContextOf.d.ts.map +0 -1
  640. package/lib/types/ContextOf.js +0 -2
  641. package/lib/types/FunctionMiddleware.d.ts +0 -6
  642. package/lib/types/FunctionMiddleware.d.ts.map +0 -1
  643. package/lib/types/FunctionMiddleware.js +0 -2
  644. package/lib/types/GroupActivitiesMiddleware.d.ts +0 -22
  645. package/lib/types/GroupActivitiesMiddleware.d.ts.map +0 -1
  646. package/lib/types/GroupActivitiesMiddleware.js +0 -2
  647. package/lib/types/LocalizedStrings.d.ts +0 -5
  648. package/lib/types/LocalizedStrings.d.ts.map +0 -1
  649. package/lib/types/LocalizedStrings.js +0 -2
  650. package/lib/types/Notification.d.ts +0 -10
  651. package/lib/types/Notification.d.ts.map +0 -1
  652. package/lib/types/Notification.js +0 -2
  653. package/lib/types/PrecompiledGlobalize.d.ts +0 -13
  654. package/lib/types/PrecompiledGlobalize.d.ts.map +0 -1
  655. package/lib/types/PrecompiledGlobalize.js +0 -2
  656. package/lib/types/ScrollToEndButtonMiddleware.d.ts +0 -30
  657. package/lib/types/ScrollToEndButtonMiddleware.d.ts.map +0 -1
  658. package/lib/types/ScrollToEndButtonMiddleware.js +0 -2
  659. package/lib/types/SendStatus.d.ts +0 -3
  660. package/lib/types/SendStatus.d.ts.map +0 -1
  661. package/lib/types/SendStatus.js +0 -2
  662. package/lib/types/TelemetryMeasurementEvent.d.ts +0 -31
  663. package/lib/types/TelemetryMeasurementEvent.d.ts.map +0 -1
  664. package/lib/types/TelemetryMeasurementEvent.js +0 -2
  665. package/lib/types/ToastMiddleware.d.ts +0 -11
  666. package/lib/types/ToastMiddleware.d.ts.map +0 -1
  667. package/lib/types/ToastMiddleware.js +0 -2
  668. package/lib/types/Typing.d.ts +0 -8
  669. package/lib/types/Typing.d.ts.map +0 -1
  670. package/lib/types/Typing.js +0 -2
  671. package/lib/types/TypingIndicatorMiddleware.d.ts +0 -17
  672. package/lib/types/TypingIndicatorMiddleware.d.ts.map +0 -1
  673. package/lib/types/TypingIndicatorMiddleware.js +0 -2
  674. package/lib/types/WebSpeechPonyfill.d.ts +0 -19
  675. package/lib/types/WebSpeechPonyfill.d.ts.map +0 -1
  676. package/lib/types/WebSpeechPonyfill.js +0 -2
  677. package/lib/types/WebSpeechPonyfillFactory.d.ts +0 -6
  678. package/lib/types/WebSpeechPonyfillFactory.d.ts.map +0 -1
  679. package/lib/types/WebSpeechPonyfillFactory.js +0 -2
  680. package/lib/utils/createCustomEvent.d.ts +0 -4
  681. package/lib/utils/createCustomEvent.d.ts.map +0 -1
  682. package/lib/utils/createCustomEvent.js +0 -34
  683. package/lib/utils/findLastIndex.d.ts +0 -2
  684. package/lib/utils/findLastIndex.d.ts.map +0 -1
  685. package/lib/utils/findLastIndex.js +0 -22
  686. package/lib/utils/findMin.d.ts +0 -7
  687. package/lib/utils/findMin.d.ts.map +0 -1
  688. package/lib/utils/findMin.js +0 -46
  689. package/lib/utils/freezeArray.d.ts +0 -8
  690. package/lib/utils/freezeArray.d.ts.map +0 -1
  691. package/lib/utils/freezeArray.js +0 -19
  692. package/lib/utils/isObject.js +0 -12
  693. package/lib/utils/mapMap.d.ts +0 -6
  694. package/lib/utils/mapMap.d.ts.map +0 -1
  695. package/lib/utils/mapMap.js +0 -27
  696. package/lib/utils/normalizeLanguage.d.ts +0 -2
  697. package/lib/utils/normalizeLanguage.d.ts.map +0 -1
  698. package/lib/utils/normalizeLanguage.js +0 -115
  699. package/lib/utils/randomId.d.ts +0 -2
  700. package/lib/utils/randomId.d.ts.map +0 -1
  701. package/lib/utils/randomId.js +0 -15
  702. package/lib/utils/warnOnce.d.ts +0 -2
  703. package/lib/utils/warnOnce.d.ts.map +0 -1
  704. package/lib/utils/warnOnce.js +0 -16
  705. package/src/external/PrecompiledGlobalize.cjs +0 -8855
  706. package/src/hooks/middleware/createDefaultGroupActivitiesMiddleware.ts +0 -75
  707. package/src/hooks/useGroupActivities.ts +0 -10
  708. /package/dist/{chunk-4ZIUY4G5.mjs.LEGAL.txt → botframework-webchat-api.decorator.js.LEGAL.txt} +0 -0
@@ -1,18 +1,21 @@
1
- import type { WebChatActivity } from 'botframework-webchat-core';
1
+ import { getActivityLivestreamingMetadata, type WebChatActivity } from 'botframework-webchat-core';
2
2
  import React, { useCallback, useMemo, useRef, type ReactNode } from 'react';
3
3
 
4
+ import reduceIterable from '../../hooks/private/reduceIterable';
4
5
  import useActivities from '../../hooks/useActivities';
5
6
  import type { ActivityKeyerContextType } from './private/Context';
6
7
  import ActivityKeyerContext from './private/Context';
7
8
  import getActivityId from './private/getActivityId';
8
9
  import getClientActivityId from './private/getClientActivityId';
10
+ import lastOf from './private/lastOf';
11
+ import someIterable from './private/someIterable';
9
12
  import uniqueId from './private/uniqueId';
10
13
  import useActivityKeyerContext from './private/useContext';
11
14
 
12
15
  type ActivityIdToKeyMap = Map<string, string>;
13
16
  type ActivityToKeyMap = Map<WebChatActivity, string>;
14
17
  type ClientActivityIdToKeyMap = Map<string, string>;
15
- type KeyToActivityMap = Map<string, WebChatActivity>;
18
+ type KeyToActivitiesMap = Map<string, readonly WebChatActivity[]>;
16
19
 
17
20
  /**
18
21
  * React context composer component to assign a perma-key to every activity.
@@ -39,7 +42,7 @@ const ActivityKeyerComposer = ({ children }: Readonly<{ children?: ReactNode | u
39
42
  const activityIdToKeyMapRef = useRef<Readonly<ActivityIdToKeyMap>>(Object.freeze(new Map()));
40
43
  const activityToKeyMapRef = useRef<Readonly<ActivityToKeyMap>>(Object.freeze(new Map()));
41
44
  const clientActivityIdToKeyMapRef = useRef<Readonly<ClientActivityIdToKeyMap>>(Object.freeze(new Map()));
42
- const keyToActivityMapRef = useRef<Readonly<KeyToActivityMap>>(Object.freeze(new Map()));
45
+ const keyToActivitiesMapRef = useRef<Readonly<KeyToActivitiesMap>>(Object.freeze(new Map()));
43
46
 
44
47
  // TODO: [P1] `useMemoWithPrevious` to check and cache the resulting array if it hasn't changed.
45
48
  const activityKeysState = useMemo<readonly [readonly string[]]>(() => {
@@ -47,60 +50,69 @@ const ActivityKeyerComposer = ({ children }: Readonly<{ children?: ReactNode | u
47
50
  const { current: activityToKeyMap } = activityToKeyMapRef;
48
51
  const { current: clientActivityIdToKeyMap } = clientActivityIdToKeyMapRef;
49
52
  const nextActivityIdToKeyMap: ActivityIdToKeyMap = new Map();
50
- const nextActivityKeys: string[] = [];
53
+ const nextActivityKeys: Set<string> = new Set();
51
54
  const nextActivityToKeyMap: ActivityToKeyMap = new Map();
52
55
  const nextClientActivityIdToKeyMap: ClientActivityIdToKeyMap = new Map();
53
- const nextKeyToActivityMap: KeyToActivityMap = new Map();
56
+ const nextKeyToActivitiesMap: KeyToActivitiesMap = new Map();
54
57
 
55
58
  activities.forEach(activity => {
56
59
  const activityId = getActivityId(activity);
57
60
  const clientActivityId = getClientActivityId(activity);
61
+ const typingActivityId = getActivityLivestreamingMetadata(activity)?.sessionId;
58
62
 
59
63
  const key =
60
- (clientActivityId && clientActivityIdToKeyMap.get(clientActivityId)) ||
61
- (activityId && activityIdToKeyMap.get(activityId)) ||
64
+ (clientActivityId &&
65
+ (clientActivityIdToKeyMap.get(clientActivityId) || nextClientActivityIdToKeyMap.get(clientActivityId))) ||
66
+ (typingActivityId &&
67
+ (activityIdToKeyMap.get(typingActivityId) || nextActivityIdToKeyMap.get(typingActivityId))) ||
68
+ (activityId && (activityIdToKeyMap.get(activityId) || nextActivityIdToKeyMap.get(activityId))) ||
62
69
  activityToKeyMap.get(activity) ||
70
+ nextActivityToKeyMap.get(activity) ||
63
71
  uniqueId();
64
72
 
65
73
  activityId && nextActivityIdToKeyMap.set(activityId, key);
66
74
  clientActivityId && nextClientActivityIdToKeyMap.set(clientActivityId, key);
67
75
  nextActivityToKeyMap.set(activity, key);
68
- nextKeyToActivityMap.set(key, activity);
69
- nextActivityKeys.push(key);
76
+ nextActivityKeys.add(key);
77
+
78
+ const activities = nextKeyToActivitiesMap.has(key) ? [...nextKeyToActivitiesMap.get(key)] : [];
79
+
80
+ activities.push(activity);
81
+ nextKeyToActivitiesMap.set(key, Object.freeze(activities));
70
82
  });
71
83
 
72
84
  activityIdToKeyMapRef.current = Object.freeze(nextActivityIdToKeyMap);
73
85
  activityToKeyMapRef.current = Object.freeze(nextActivityToKeyMap);
74
86
  clientActivityIdToKeyMapRef.current = Object.freeze(nextClientActivityIdToKeyMap);
75
- keyToActivityMapRef.current = Object.freeze(nextKeyToActivityMap);
87
+ keyToActivitiesMapRef.current = Object.freeze(nextKeyToActivitiesMap);
76
88
 
77
89
  // `nextActivityKeys` could potentially same as `prevActivityKeys` despite reference differences, we should memoize it.
78
- return Object.freeze([Object.freeze(nextActivityKeys)]) as readonly [readonly string[]];
79
- }, [activities, activityIdToKeyMapRef, activityToKeyMapRef, clientActivityIdToKeyMapRef, keyToActivityMapRef]);
90
+ return Object.freeze([Object.freeze([...nextActivityKeys.values()])]) as readonly [readonly string[]];
91
+ }, [activities, activityIdToKeyMapRef, activityToKeyMapRef, clientActivityIdToKeyMapRef, keyToActivitiesMapRef]);
92
+
93
+ const getActivitiesByKey: (key?: string | undefined) => readonly WebChatActivity[] | undefined = useCallback(
94
+ (key?: string | undefined): readonly WebChatActivity[] | undefined => key && keyToActivitiesMapRef.current.get(key),
95
+ [keyToActivitiesMapRef]
96
+ );
80
97
 
81
- const getActivityByKey: (key?: string) => undefined | WebChatActivity = useCallback(
82
- (key?: string): undefined | WebChatActivity => key && keyToActivityMapRef.current.get(key),
83
- [keyToActivityMapRef]
98
+ const getActivityByKey: (key?: string | undefined) => undefined | WebChatActivity = useCallback(
99
+ (key?: string | undefined): undefined | WebChatActivity => lastOf(getActivitiesByKey(key)),
100
+ [getActivitiesByKey]
84
101
  );
85
102
 
86
- const getKeyByActivity: (activity?: WebChatActivity) => string | undefined = useCallback(
87
- (activity?: WebChatActivity) => activity && activityToKeyMapRef.current.get(activity),
103
+ const getKeyByActivity: (activity?: WebChatActivity | undefined) => string | undefined = useCallback(
104
+ (activity?: WebChatActivity | undefined) => activity && activityToKeyMapRef.current.get(activity),
88
105
  [activityToKeyMapRef]
89
106
  );
90
107
 
91
- const getKeyByActivityId: (activityId?: string) => string | undefined = useCallback(
92
- (activityId?: string) => activityId && activityIdToKeyMapRef.current.get(activityId),
108
+ const getKeyByActivityId: (activityId?: string | undefined) => string | undefined = useCallback(
109
+ (activityId?: string | undefined) => activityId && activityIdToKeyMapRef.current.get(activityId),
93
110
  [activityIdToKeyMapRef]
94
111
  );
95
112
 
96
113
  const contextValue = useMemo<ActivityKeyerContextType>(
97
- () => ({
98
- activityKeysState,
99
- getActivityByKey,
100
- getKeyByActivity,
101
- getKeyByActivityId
102
- }),
103
- [activityKeysState, getActivityByKey, getKeyByActivity, getKeyByActivityId]
114
+ () => ({ activityKeysState, getActivityByKey, getActivitiesByKey, getKeyByActivity, getKeyByActivityId }),
115
+ [activityKeysState, getActivitiesByKey, getActivityByKey, getKeyByActivity, getKeyByActivityId]
104
116
  );
105
117
 
106
118
  const { length: numActivities } = activities;
@@ -123,15 +135,23 @@ const ActivityKeyerComposer = ({ children }: Readonly<{ children?: ReactNode | u
123
135
  );
124
136
  }
125
137
 
126
- if (keyToActivityMapRef.current.size !== numActivities) {
138
+ if (someIterable(keyToActivitiesMapRef.current.values(), ({ length }) => !length)) {
139
+ console.warn(
140
+ 'botframework-webchat internal assertion: all values in "keyToActivitiesMap" should have at least one item.'
141
+ );
142
+ }
143
+
144
+ if (
145
+ reduceIterable(keyToActivitiesMapRef.current.values(), (total, { length }) => total + length, 0) !== numActivities
146
+ ) {
127
147
  console.warn(
128
- 'botframework-webchat internal assertion: "keyToActivityMap.size" should be same as "activities.length".'
148
+ 'botframework-webchat internal assertion: "keyToActivitiesMap.size" should be same as "activities.length".'
129
149
  );
130
150
  }
131
151
 
132
- if (activityKeysState[0].length !== numActivities) {
152
+ if (activityKeysState[0].length !== keyToActivitiesMapRef.current.size) {
133
153
  console.warn(
134
- 'botframework-webchat internal assertion: "activityKeys.length" should be same as "activities.length".'
154
+ 'botframework-webchat internal assertion: "activityKeys.length" should be same as "keyToActivitiesMap.size".'
135
155
  );
136
156
  }
137
157
 
@@ -1,8 +1,9 @@
1
- import { createContext } from 'react';
2
1
  import type { WebChatActivity } from 'botframework-webchat-core';
2
+ import { createContext } from 'react';
3
3
 
4
4
  type ActivityKeyerContextType = {
5
5
  activityKeysState: readonly [readonly string[]];
6
+ getActivitiesByKey: (key?: string) => readonly WebChatActivity[] | undefined;
6
7
  getActivityByKey: (key?: string) => undefined | WebChatActivity;
7
8
  getKeyByActivity: (activity?: WebChatActivity) => string | undefined;
8
9
  getKeyByActivityId: (activityKey?: string) => string | undefined;
@@ -0,0 +1,6 @@
1
+ import lastOf from './lastOf';
2
+
3
+ test('should return last element', () => expect(lastOf(Object.freeze(['1', '2', '3']))).toBe('3'));
4
+ test('when passed empty array should return undefined', () => expect(lastOf([])).toBeUndefined());
5
+ test('when passed undefined should return undefined', () => expect(lastOf(undefined)).toBeUndefined());
6
+ test('when passed null should return undefined', () => expect(lastOf(null as any)).toBeUndefined());
@@ -0,0 +1,3 @@
1
+ export default function lastOf<T>(array: readonly T[] | undefined): T | undefined {
2
+ return array?.[array.length - 1];
3
+ }
@@ -0,0 +1,44 @@
1
+ import someIterable from './someIterable';
2
+
3
+ describe('when predicate return true should return true', () => {
4
+ let predicate: jest.Mock<boolean, []>;
5
+ let actual: boolean;
6
+
7
+ beforeEach(() => {
8
+ predicate = jest.fn(() => true);
9
+ actual = someIterable(['1', '2', '3'], predicate);
10
+ });
11
+
12
+ test('should return true', () => expect(actual).toBe(true));
13
+ test('should have called predicate once', () => expect(predicate).toHaveBeenCalledTimes(1));
14
+ test("should have called predicate with '1'", () => expect(predicate).toHaveBeenNthCalledWith(1, '1'));
15
+ });
16
+
17
+ describe('when predicate return false should return false', () => {
18
+ let predicate: jest.Mock<boolean, []>;
19
+ let actual: boolean;
20
+
21
+ beforeEach(() => {
22
+ predicate = jest.fn(() => false);
23
+ actual = someIterable(['1', '2', '3'], predicate);
24
+ });
25
+
26
+ test('should return false', () => expect(actual).toBe(false));
27
+ test('should have called predicate 3 times', () => expect(predicate).toHaveBeenCalledTimes(3));
28
+ test("should have called predicate with '1'", () => expect(predicate).toHaveBeenNthCalledWith(1, '1'));
29
+ test("should have called predicate with '2'", () => expect(predicate).toHaveBeenNthCalledWith(2, '2'));
30
+ test("should have called predicate with '3'", () => expect(predicate).toHaveBeenNthCalledWith(3, '3'));
31
+ });
32
+
33
+ describe('when passed an empty array', () => {
34
+ let predicate: jest.Mock<boolean, []>;
35
+ let actual: boolean;
36
+
37
+ beforeEach(() => {
38
+ predicate = jest.fn();
39
+ actual = someIterable([], predicate);
40
+ });
41
+
42
+ test('should return false', () => expect(actual).toBe(false));
43
+ test('should not call predicate', () => expect(predicate).toHaveBeenCalledTimes(0));
44
+ });
@@ -0,0 +1,9 @@
1
+ export default function someIterable<T>(iterable: Iterable<T>, predicate: (item: T) => boolean): boolean {
2
+ for (const item of iterable) {
3
+ if (predicate(item)) {
4
+ return true;
5
+ }
6
+ }
7
+
8
+ return false;
9
+ }
@@ -0,0 +1,7 @@
1
+ import type { WebChatActivity } from 'botframework-webchat-core';
2
+
3
+ import useActivityKeyerContext from './private/useContext';
4
+
5
+ export default function useGetActivitiesByKey(): (key?: string) => readonly WebChatActivity[] | undefined {
6
+ return useActivityKeyerContext().getActivitiesByKey;
7
+ }
@@ -0,0 +1,28 @@
1
+ import type { WebChatActivity } from 'botframework-webchat-core';
2
+ import React, { memo, useMemo, type ReactNode } from 'react';
3
+ import usePrevious from '../../hooks/internal/usePrevious';
4
+ import useActivities from '../../hooks/useActivities';
5
+ import ActivityListenerContext, { type ActivityListenerContextType } from './private/Context';
6
+
7
+ type Props = Readonly<{ children?: ReactNode | undefined }>;
8
+
9
+ const ActivityListenerComposer = memo(({ children }: Props) => {
10
+ const [activities] = useActivities();
11
+ const prevActivities = usePrevious<WebChatActivity[]>(activities, []);
12
+
13
+ const upsertedActivitiesState = useMemo<readonly [readonly WebChatActivity[]]>(() => {
14
+ const upserts: WebChatActivity[] = [];
15
+
16
+ for (const activity of activities) {
17
+ prevActivities.includes(activity) || upserts.push(activity);
18
+ }
19
+
20
+ return Object.freeze([Object.freeze(upserts)]);
21
+ }, [activities, prevActivities]);
22
+
23
+ const context = useMemo<ActivityListenerContextType>(() => ({ upsertedActivitiesState }), [upsertedActivitiesState]);
24
+
25
+ return <ActivityListenerContext.Provider value={context}>{children}</ActivityListenerContext.Provider>;
26
+ });
27
+
28
+ export default ActivityListenerComposer;
@@ -0,0 +1,16 @@
1
+ import { type WebChatActivity } from 'botframework-webchat-core';
2
+ import { createContext } from 'react';
3
+
4
+ export type ActivityListenerContextType = {
5
+ upsertedActivitiesState: readonly [readonly WebChatActivity[]];
6
+ };
7
+
8
+ const ActivityListenerContext = createContext<ActivityListenerContextType>(
9
+ new Proxy({} as ActivityListenerContextType, {
10
+ get() {
11
+ throw new Error('botframework-webchat internal: This hook can only used under <ActivityListenerComposer>.');
12
+ }
13
+ })
14
+ );
15
+
16
+ export default ActivityListenerContext;
@@ -0,0 +1,6 @@
1
+ import { useContext } from 'react';
2
+ import ActivityListenerContext from './Context';
3
+
4
+ export default function useActivityListenerContext() {
5
+ return useContext(ActivityListenerContext);
6
+ }
@@ -0,0 +1,6 @@
1
+ import type { WebChatActivity } from 'botframework-webchat-core';
2
+ import useActivityListenerContext from './private/useContext';
3
+
4
+ export default function useUpsertedActivities(): readonly [readonly WebChatActivity[]] {
5
+ return useActivityListenerContext().upsertedActivitiesState;
6
+ }
@@ -1,4 +1,4 @@
1
- import React, { useEffect, useMemo, useRef, type FC, type PropsWithChildren } from 'react';
1
+ import React, { useEffect, useMemo, useRef, type ReactNode } from 'react';
2
2
 
3
3
  import { useActivities, usePonyfill } from '../../hooks/index';
4
4
  import useForceRender from '../../hooks/internal/useForceRender';
@@ -14,7 +14,7 @@ import isMapEqual from './private/isMapEqual';
14
14
  const EXPIRY_SEND_FAILED = -Infinity;
15
15
  const EXPIRY_SENT = Infinity;
16
16
 
17
- const ActivitySendStatusComposer: FC<PropsWithChildren<{}>> = ({ children }) => {
17
+ const ActivitySendStatusComposer = ({ children }: Readonly<{ children?: ReactNode | undefined }>) => {
18
18
  const [activities] = useActivities();
19
19
  const [{ clearTimeout, Date, setTimeout }] = usePonyfill();
20
20
  const forceRender = useForceRender();
@@ -0,0 +1,170 @@
1
+ import { getActivityLivestreamingMetadata, type WebChatActivity } from 'botframework-webchat-core';
2
+ import { iteratorFind } from 'iter-fest';
3
+ import React, { memo, useCallback, useMemo, type ReactNode } from 'react';
4
+
5
+ import numberWithInfinity from '../../hooks/private/numberWithInfinity';
6
+ import usePonyfill from '../../hooks/usePonyfill';
7
+ import ActivityTypingContext, { ActivityTypingContextType } from './private/Context';
8
+ import useReduceActivities from './private/useReduceActivities';
9
+ import { type AllTyping } from './types/AllTyping';
10
+
11
+ type Entry = {
12
+ livestreamActivities: Map<
13
+ string,
14
+ {
15
+ activity: WebChatActivity;
16
+ contentful: boolean;
17
+ firstReceivedAt: number;
18
+ lastReceivedAt: number;
19
+ }
20
+ >;
21
+ name: string | undefined;
22
+ role: 'bot' | 'user';
23
+ typingIndicator:
24
+ | {
25
+ activity: WebChatActivity;
26
+ duration: number;
27
+ firstReceivedAt: number;
28
+ lastReceivedAt: number;
29
+ }
30
+ | undefined;
31
+ };
32
+
33
+ type Props = Readonly<{ children?: ReactNode | undefined }>;
34
+
35
+ const ActivityTypingComposer = ({ children }: Props) => {
36
+ const [{ Date }] = usePonyfill();
37
+
38
+ const reducer = useCallback(
39
+ (
40
+ prevTypingState: ReadonlyMap<string, Readonly<Entry>> | undefined,
41
+ activity: WebChatActivity
42
+ ): ReadonlyMap<string, Readonly<Entry>> | undefined => {
43
+ const {
44
+ from: { id, name, role },
45
+ type
46
+ } = activity;
47
+
48
+ if (role === 'channel') {
49
+ return prevTypingState;
50
+ }
51
+
52
+ // A normal message activity, or final activity (which could be "message" or "typing"), will remove the typing indicator.
53
+ const receivedAt = activity.channelData?.webChat?.receivedAt || Date.now();
54
+
55
+ const livestreamingMetadata = getActivityLivestreamingMetadata(activity);
56
+ const typingState = new Map(prevTypingState);
57
+ const existingEntry = typingState.get(id);
58
+ const mutableEntry: Entry = {
59
+ typingIndicator: undefined,
60
+ ...existingEntry,
61
+ livestreamActivities: new Map(existingEntry?.livestreamActivities),
62
+ name,
63
+ role
64
+ };
65
+
66
+ if (livestreamingMetadata) {
67
+ mutableEntry.typingIndicator = undefined;
68
+
69
+ const { sessionId } = livestreamingMetadata;
70
+
71
+ if (livestreamingMetadata.type === 'final activity') {
72
+ mutableEntry.livestreamActivities.delete(sessionId);
73
+ } else {
74
+ mutableEntry.livestreamActivities.set(
75
+ sessionId,
76
+ Object.freeze({
77
+ firstReceivedAt: Date.now(),
78
+ ...mutableEntry.livestreamActivities.get(sessionId),
79
+ activity,
80
+ contentful: livestreamingMetadata.type !== 'contentless',
81
+ lastReceivedAt: receivedAt
82
+ })
83
+ );
84
+ }
85
+ } else if (type === 'message') {
86
+ mutableEntry.typingIndicator = undefined;
87
+ } else if (type === 'typing') {
88
+ mutableEntry.typingIndicator = Object.freeze({
89
+ activity,
90
+ duration: numberWithInfinity(activity.channelData.webChat?.styleOptions?.typingAnimationDuration),
91
+ firstReceivedAt: mutableEntry.typingIndicator?.firstReceivedAt || Date.now(),
92
+ lastReceivedAt: receivedAt
93
+ });
94
+ }
95
+
96
+ typingState.set(id, Object.freeze(mutableEntry));
97
+
98
+ return Object.freeze(typingState);
99
+ },
100
+ [Date]
101
+ );
102
+
103
+ const state: ReadonlyMap<string, Entry> = useReduceActivities(reducer) || Object.freeze(new Map());
104
+
105
+ const allTyping = useMemo(() => {
106
+ const map = new Map<string, AllTyping>();
107
+
108
+ for (const [id, entry] of state.entries()) {
109
+ const firstContentfulLivestream = iteratorFind(
110
+ entry.livestreamActivities.values(),
111
+ ({ contentful }) => contentful
112
+ );
113
+
114
+ const firstContentlessLivestream = iteratorFind(
115
+ entry.livestreamActivities.values(),
116
+ ({ contentful }) => !contentful
117
+ );
118
+
119
+ if (firstContentfulLivestream) {
120
+ map.set(
121
+ id,
122
+ Object.freeze({
123
+ firstReceivedAt: firstContentfulLivestream.firstReceivedAt,
124
+ lastActivityDuration: Infinity,
125
+ lastReceivedAt: firstContentfulLivestream.lastReceivedAt,
126
+ name: entry.name,
127
+ role: entry.role,
128
+ type: 'livestream'
129
+ } satisfies AllTyping)
130
+ );
131
+ } else if (firstContentlessLivestream) {
132
+ map.set(
133
+ id,
134
+ Object.freeze({
135
+ firstReceivedAt: firstContentlessLivestream.firstReceivedAt,
136
+ lastActivityDuration: Infinity,
137
+ lastReceivedAt: firstContentlessLivestream.lastReceivedAt,
138
+ name: entry.name,
139
+ role: entry.role,
140
+ type: 'busy'
141
+ } satisfies AllTyping)
142
+ );
143
+ } else if (entry.typingIndicator) {
144
+ map.set(
145
+ id,
146
+ Object.freeze({
147
+ firstReceivedAt: entry.typingIndicator.firstReceivedAt,
148
+ lastActivityDuration: entry.typingIndicator.duration,
149
+ lastReceivedAt: entry.typingIndicator.lastReceivedAt,
150
+ name: entry.name,
151
+ role: entry.role,
152
+ type: 'busy'
153
+ } satisfies AllTyping)
154
+ );
155
+ }
156
+ }
157
+
158
+ return map;
159
+ }, [state]);
160
+
161
+ const allTypingState = useMemo(() => Object.freeze([allTyping] as const), [allTyping]);
162
+
163
+ const context = useMemo<ActivityTypingContextType>(() => ({ allTypingState }), [allTypingState]);
164
+
165
+ return <ActivityTypingContext.Provider value={context}>{children}</ActivityTypingContext.Provider>;
166
+ };
167
+
168
+ ActivityTypingComposer.displayName = 'ActivityTypingComposer';
169
+
170
+ export default memo(ActivityTypingComposer);
@@ -0,0 +1,16 @@
1
+ import { createContext } from 'react';
2
+ import { type AllTyping } from '../types/AllTyping';
3
+
4
+ export type ActivityTypingContextType = {
5
+ allTypingState: readonly [ReadonlyMap<string, AllTyping>];
6
+ };
7
+
8
+ const ActivityTypingContext = createContext<ActivityTypingContextType>(
9
+ new Proxy({} as ActivityTypingContextType, {
10
+ get() {
11
+ throw new Error('botframework-webchat internal: This hook can only be used under <ActivityTypingProvider>.');
12
+ }
13
+ })
14
+ );
15
+
16
+ export default ActivityTypingContext;
@@ -0,0 +1,6 @@
1
+ import { useContext } from 'react';
2
+ import ActivityTypingContext, { type ActivityTypingContextType } from './Context';
3
+
4
+ export default function useActivityTypingContext(): ActivityTypingContextType {
5
+ return useContext(ActivityTypingContext);
6
+ }
@@ -0,0 +1,17 @@
1
+ // TODO: [P1] Dedupe.
2
+ import { useEffect, useMemo, useRef } from 'react';
3
+
4
+ import type { DependencyList } from 'react';
5
+
6
+ export default function useMemoWithPrevious<T>(factory: (prevValue: T | undefined) => T, deps: DependencyList): T {
7
+ const prevValueRef = useRef<T | undefined>(undefined);
8
+ // We are building a `useMemo`-like hook, `deps` is passed as-is and `factory` is not one fo the dependencies.
9
+ // eslint-disable-next-line react-hooks/exhaustive-deps
10
+ const value = useMemo<T>(() => factory(prevValueRef.current), deps);
11
+
12
+ useEffect(() => {
13
+ prevValueRef.current = value;
14
+ });
15
+
16
+ return value;
17
+ }