botframework-webchat-api 4.18.1 → 4.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (924) hide show
  1. package/LICENSE +21 -0
  2. package/boot/deprecated/decorator.js +7 -0
  3. package/boot/deprecated/decorator.mjs +5 -0
  4. package/boot/deprecated/graph.js +7 -0
  5. package/boot/deprecated/graph.mjs +5 -0
  6. package/boot/deprecated/hook.js +7 -0
  7. package/boot/deprecated/hook.mjs +5 -0
  8. package/boot/deprecated/internal.js +7 -0
  9. package/boot/deprecated/internal.mjs +5 -0
  10. package/boot/deprecated/middleware.js +7 -0
  11. package/boot/deprecated/middleware.mjs +5 -0
  12. package/decorator.js +1 -1
  13. package/dist/StyleOptions-4TkRjGbQ.d.mts +802 -0
  14. package/dist/StyleOptions-4TkRjGbQ.d.ts +802 -0
  15. package/dist/_dtsroll-chunks/B1b7R2eH-avatarMiddleware-CHa011_j.d.ts +109 -0
  16. package/dist/_dtsroll-chunks/CEcj2Npa-botframework-webchat-redux-store.d.ts +16 -0
  17. package/dist/_dtsroll-chunks/DnThgHcF-botframework-webchat-api-middleware.d.ts +231 -0
  18. package/dist/_dtsroll-chunks/Dtb0H_Ee-handler-chain.d.ts +4 -0
  19. package/dist/_dtsroll-chunks/N-ttGLxs-botframework-webchat-base.utils.d.ts +4 -0
  20. package/dist/_dtsroll-chunks/qKTV3q17-avatarMiddleware-CHa011_j.d.ts +93 -0
  21. package/dist/botframework-webchat-api.d.mts +173 -1250
  22. package/dist/botframework-webchat-api.d.ts +387 -0
  23. package/dist/botframework-webchat-api.decorator.d.mts +71 -26
  24. package/dist/botframework-webchat-api.decorator.d.ts +81 -0
  25. package/dist/botframework-webchat-api.decorator.js +2 -0
  26. package/dist/botframework-webchat-api.decorator.js.map +1 -0
  27. package/dist/botframework-webchat-api.decorator.mjs +1 -2
  28. package/dist/botframework-webchat-api.decorator.mjs.map +1 -1
  29. package/dist/botframework-webchat-api.graph.d.mts +5 -0
  30. package/dist/botframework-webchat-api.graph.d.ts +2 -0
  31. package/dist/botframework-webchat-api.graph.js +2 -0
  32. package/dist/botframework-webchat-api.graph.js.map +1 -0
  33. package/dist/botframework-webchat-api.graph.mjs +2 -0
  34. package/dist/botframework-webchat-api.hook.d.mts +9 -0
  35. package/dist/botframework-webchat-api.hook.d.ts +9 -0
  36. package/dist/botframework-webchat-api.hook.js +2 -0
  37. package/dist/botframework-webchat-api.hook.js.map +1 -0
  38. package/dist/botframework-webchat-api.hook.mjs +2 -0
  39. package/dist/botframework-webchat-api.hook.mjs.map +1 -0
  40. package/dist/botframework-webchat-api.internal.d.mts +66 -1
  41. package/dist/botframework-webchat-api.internal.d.ts +68 -0
  42. package/dist/botframework-webchat-api.internal.js +2 -0
  43. package/dist/botframework-webchat-api.internal.js.map +1 -0
  44. package/dist/botframework-webchat-api.internal.mjs +1 -2
  45. package/dist/botframework-webchat-api.internal.mjs.map +1 -1
  46. package/dist/botframework-webchat-api.js +2 -0
  47. package/dist/botframework-webchat-api.js.map +1 -0
  48. package/dist/botframework-webchat-api.middleware.d.mts +45 -0
  49. package/dist/botframework-webchat-api.middleware.d.ts +45 -0
  50. package/dist/botframework-webchat-api.middleware.js +2 -0
  51. package/dist/botframework-webchat-api.middleware.js.map +1 -0
  52. package/dist/botframework-webchat-api.middleware.mjs +2 -0
  53. package/dist/botframework-webchat-api.middleware.mjs.map +1 -0
  54. package/dist/botframework-webchat-api.mjs +1 -139
  55. package/dist/botframework-webchat-api.mjs.LEGAL.txt +2 -27
  56. package/dist/botframework-webchat-api.mjs.map +1 -1
  57. package/dist/chunk-3YCFZWVR.js +2 -0
  58. package/dist/chunk-3YCFZWVR.js.map +1 -0
  59. package/dist/chunk-42OUJPJV.js +2 -0
  60. package/dist/chunk-42OUJPJV.js.map +1 -0
  61. package/dist/chunk-5HALOM2E.mjs +2 -0
  62. package/dist/chunk-5HALOM2E.mjs.map +1 -0
  63. package/dist/chunk-5JETBPYY.mjs +2 -0
  64. package/dist/chunk-5JETBPYY.mjs.map +1 -0
  65. package/dist/chunk-5X4VJZOM.js +2 -0
  66. package/dist/chunk-5X4VJZOM.js.map +1 -0
  67. package/dist/chunk-62M3VAKR.js +2 -0
  68. package/dist/chunk-62M3VAKR.js.map +1 -0
  69. package/dist/chunk-7GV72C4W.js +2 -0
  70. package/dist/chunk-7GV72C4W.js.map +1 -0
  71. package/dist/chunk-A6GQOZT3.js +2 -0
  72. package/dist/chunk-A6GQOZT3.js.map +1 -0
  73. package/dist/chunk-BWPBSJNH.js +2 -0
  74. package/dist/chunk-BWPBSJNH.js.map +1 -0
  75. package/dist/chunk-CIL5QUZ4.js +2 -0
  76. package/dist/chunk-CIL5QUZ4.js.map +1 -0
  77. package/dist/chunk-EVD4K5QH.mjs +2 -0
  78. package/dist/chunk-EVD4K5QH.mjs.map +1 -0
  79. package/dist/chunk-FA2GLWPN.mjs +2 -0
  80. package/dist/chunk-FA2GLWPN.mjs.map +1 -0
  81. package/dist/chunk-FD7QXXVX.js +2 -0
  82. package/dist/chunk-FD7QXXVX.js.map +1 -0
  83. package/dist/chunk-G5ZR6XJL.js +2 -0
  84. package/dist/chunk-G5ZR6XJL.js.map +1 -0
  85. package/dist/chunk-JKWDQH6P.mjs +2 -0
  86. package/dist/chunk-JKWDQH6P.mjs.map +1 -0
  87. package/dist/chunk-L5VFUNB4.js +2 -0
  88. package/dist/chunk-L5VFUNB4.js.map +1 -0
  89. package/dist/chunk-LIZ64UIL.mjs +2 -0
  90. package/dist/chunk-LIZ64UIL.mjs.map +1 -0
  91. package/dist/chunk-LW6LHF6Z.mjs +2 -0
  92. package/dist/chunk-LW6LHF6Z.mjs.map +1 -0
  93. package/dist/chunk-MMNBOGJJ.mjs +2 -0
  94. package/dist/chunk-MMNBOGJJ.mjs.map +1 -0
  95. package/dist/chunk-RLEJOP6E.mjs +2 -0
  96. package/dist/chunk-RLEJOP6E.mjs.map +1 -0
  97. package/dist/chunk-UK6V7R7K.js +2 -0
  98. package/dist/chunk-UK6V7R7K.js.map +1 -0
  99. package/dist/{chunk-J6D5YEY6.mjs → chunk-VAX7AB37.mjs} +1 -2
  100. package/dist/chunk-VAX7AB37.mjs.map +1 -0
  101. package/dist/chunk-VNGDFILB.mjs +2 -0
  102. package/dist/chunk-VNGDFILB.mjs.map +1 -0
  103. package/dist/chunk-XVCIEKX5.mjs +2 -0
  104. package/dist/chunk-XVCIEKX5.mjs.map +1 -0
  105. package/dist/hook-BXcgekzo.d.mts +536 -0
  106. package/dist/hook-C8NHjp6P.d.ts +536 -0
  107. package/dist/metafile-cjs.json +1 -0
  108. package/dist/metafile-esm.json +1 -1
  109. package/dist/templateMiddleware-BEttHPJk.d.mts +20 -0
  110. package/dist/templateMiddleware-BEttHPJk.d.ts +20 -0
  111. package/dist/types-BKuj7f2p.d.ts +228 -0
  112. package/dist/types-BZzd7aAk.d.mts +228 -0
  113. package/graph.js +3 -0
  114. package/hook.js +3 -0
  115. package/internal.js +1 -1
  116. package/middleware.js +3 -0
  117. package/package.json +158 -90
  118. package/src/StyleOptions.ts +400 -285
  119. package/src/__tests__/addMetaTag.spec.js +9 -0
  120. package/src/__tests__/addMetaTag.spec.mjs +9 -0
  121. package/src/boot/decorator.ts +21 -0
  122. package/src/boot/graph.ts +1 -0
  123. package/src/boot/hook.ts +82 -0
  124. package/src/boot/internal.ts +7 -0
  125. package/src/boot/middleware.ts +60 -0
  126. package/src/buildInfo.ts +9 -0
  127. package/src/decorator/ActivityBorder/ActivityBorderDecorator.tsx +57 -0
  128. package/src/decorator/ActivityBorder/private/ActivityBorderDecoratorMiddleware.ts +34 -0
  129. package/src/decorator/ActivityBorder/private/ActivityBorderDecoratorRequestContext.ts +48 -0
  130. package/src/decorator/ActivityGrouping/ActivityGroupingDecorator.tsx +43 -0
  131. package/src/decorator/ActivityGrouping/private/ActivityGroupingDecoratorMiddleware.ts +40 -0
  132. package/src/decorator/DecoratorComposer.tsx +51 -0
  133. package/src/decorator/internal/InternalDecoratorComposer.tsx +33 -0
  134. package/src/decorator/internal/LowPriorityDecoratorComposer.tsx +19 -0
  135. package/src/decorator/private/DecoratorComposerContext.ts +16 -0
  136. package/src/decorator/private/PassthroughFallback.tsx +12 -0
  137. package/src/decorator/private/templateDecorator.tsx +113 -0
  138. package/src/decorator/types.ts +4 -0
  139. package/src/decorator/useDecoratorRequest.ts +15 -0
  140. package/src/defaultStyleOptions.ts +40 -23
  141. package/src/env.d.ts +9 -0
  142. package/src/errorBox/errorBoxTelemetryPolymiddleware.ts +53 -0
  143. package/src/hooks/Composer.tsx +204 -142
  144. package/src/hooks/index.ts +19 -2
  145. package/src/hooks/internal/Tracker.ts +1 -1
  146. package/src/hooks/internal/WebChatAPIContext.ts +7 -12
  147. package/src/hooks/internal/WebChatReduxContext.js +3 -2
  148. package/src/hooks/internal/usePostVoiceActivity.ts +18 -0
  149. package/src/hooks/internal/useRegisterVoiceHandler.ts +23 -0
  150. package/src/hooks/internal/useShouldShowMicrophoneButton.ts +22 -0
  151. package/src/hooks/internal/useVoiceHandlers.ts +11 -0
  152. package/src/hooks/internal/useVoiceStateWritable.ts +18 -0
  153. package/src/hooks/middleware/UserlandBoundary.js +2 -2
  154. package/src/hooks/middleware/activityFallbackPolymiddleware.ts +23 -0
  155. package/src/hooks/middleware/applyMiddleware.js +5 -5
  156. package/src/hooks/middleware/concatMiddleware.spec.js +20 -0
  157. package/src/hooks/middleware/concatMiddleware.ts +7 -6
  158. package/src/hooks/private/reduceIterable.spec.ts +0 -2
  159. package/src/hooks/useActiveTyping.ts +3 -2
  160. package/src/hooks/useActivities.ts +62 -3
  161. package/src/hooks/useCreateActivityRenderer.ts +27 -6
  162. package/src/hooks/useCreateActivityStatusRenderer.tsx +13 -33
  163. package/src/hooks/useCreateAvatarRenderer.ts +19 -33
  164. package/src/hooks/useDebouncedNotifications.spec.js +1 -0
  165. package/src/hooks/useDisabled.ts +8 -2
  166. package/src/hooks/useLocalizer.ts +3 -3
  167. package/src/hooks/useRenderAttachment.ts +2 -2
  168. package/src/hooks/useSendBoxAttachments.ts +2 -0
  169. package/src/hooks/useSendFiles.ts +1 -1
  170. package/src/hooks/useSendTimeoutForActivity.ts +2 -0
  171. package/src/hooks/useStartVoice.ts +9 -0
  172. package/src/hooks/useStopVoice.ts +9 -0
  173. package/src/hooks/useStyleOptions.ts +1 -6
  174. package/src/hooks/useSuggestedActions.ts +9 -23
  175. package/src/hooks/useTrackEvent.ts +3 -3
  176. package/src/hooks/useUIState.ts +18 -0
  177. package/src/hooks/useVoiceRecordingMuted.ts +24 -0
  178. package/src/hooks/useVoiceState.ts +15 -0
  179. package/src/hooks/validation/uiState.parseUIState.spec.ts +21 -0
  180. package/src/hooks/validation/uiState.ts +10 -0
  181. package/src/index.ts +52 -94
  182. package/src/legacy/LegacyActivityBridge.tsx +77 -0
  183. package/src/legacy/LegacyActivityBridgeContext.ts +23 -0
  184. package/src/legacy/createActivityPolymiddlewareFromLegacy.tsx +123 -0
  185. package/src/legacy/createAvatarPolymiddlewareFromLegacy.tsx +102 -0
  186. package/src/localization/ar-SA.json +134 -111
  187. package/src/localization/bg-BG.json +134 -111
  188. package/src/localization/ca-ES.json +134 -111
  189. package/src/localization/cs-CZ.json +134 -111
  190. package/src/localization/da-DK.json +134 -111
  191. package/src/localization/de-DE.json +134 -111
  192. package/src/localization/el-GR.json +134 -111
  193. package/src/localization/en-US.json +45 -19
  194. package/src/localization/es-ES.json +134 -111
  195. package/src/localization/et-EE.json +134 -111
  196. package/src/localization/eu-ES.json +134 -111
  197. package/src/localization/fi-FI.json +134 -111
  198. package/src/localization/fr-FR.json +134 -111
  199. package/src/localization/gl-ES.json +134 -111
  200. package/src/localization/he-IL.json +134 -111
  201. package/src/localization/hi-IN.json +134 -111
  202. package/src/localization/hr-HR.json +134 -111
  203. package/src/localization/hu-HU.json +134 -111
  204. package/src/localization/id-ID.json +134 -111
  205. package/src/localization/it-IT.json +134 -111
  206. package/src/localization/ja-JP.json +134 -111
  207. package/src/localization/kk-KZ.json +134 -111
  208. package/src/localization/ko-KR.json +134 -111
  209. package/src/localization/lt-LT.json +134 -111
  210. package/src/localization/lv-LV.json +134 -111
  211. package/src/localization/ms-MY.json +134 -111
  212. package/src/localization/nb-NO.json +134 -111
  213. package/src/localization/nl-NL.json +134 -111
  214. package/src/localization/pl-PL.json +134 -111
  215. package/src/localization/pt-BR.json +134 -111
  216. package/src/localization/pt-PT.json +134 -111
  217. package/src/localization/ro-RO.json +134 -111
  218. package/src/localization/ru-RU.json +134 -111
  219. package/src/localization/sk-SK.json +134 -111
  220. package/src/localization/sl-SI.json +134 -111
  221. package/src/localization/sr-Cyrl-CS.json +134 -111
  222. package/src/localization/sr-Latn-CS.json +134 -111
  223. package/src/localization/sv-SE.json +134 -111
  224. package/src/localization/th-TH.json +134 -111
  225. package/src/localization/tr-TR.json +134 -111
  226. package/src/localization/uk-UA.json +134 -111
  227. package/src/localization/vi-VN.json +134 -111
  228. package/src/localization/yue.json +5 -16
  229. package/src/localization/zh-CN.json +134 -111
  230. package/src/localization/zh-HK.json +134 -111
  231. package/src/localization/zh-TW.json +134 -111
  232. package/src/middleware/AvatarPolymiddlewareProxy.tsx +46 -0
  233. package/src/middleware/SendBoxMiddleware.ts +28 -0
  234. package/src/middleware/SendBoxToolbarMiddleware.ts +28 -0
  235. package/src/middleware/private/templateMiddleware.check.test.tsx +47 -0
  236. package/src/{decorator → middleware}/private/templateMiddleware.test.tsx +19 -17
  237. package/src/middleware/private/templateMiddleware.tsx +106 -0
  238. package/src/middleware/useBuildRenderAvatarCallback.ts +37 -0
  239. package/src/normalizeStyleOptions.ts +51 -76
  240. package/src/providers/ActivityKeyer/ActivityKeyerComposer.tsx +197 -40
  241. package/src/providers/ActivityKeyer/private/someIterable.spec.ts +0 -2
  242. package/src/providers/ActivityListener/ActivityListenerComposer.tsx +1 -1
  243. package/src/providers/ActivitySendStatus/ActivitySendStatusComposer.tsx +6 -3
  244. package/src/providers/ActivityTyping/ActivityTypingComposer.tsx +145 -59
  245. package/src/providers/ActivityTyping/private/useReduceActivities.spec.tsx +236 -0
  246. package/src/providers/ActivityTyping/private/useReduceActivities.ts +49 -0
  247. package/src/providers/Capabilities/CapabilitiesComposer.tsx +53 -0
  248. package/src/providers/Capabilities/private/Context.ts +13 -0
  249. package/src/providers/Capabilities/private/capabilityRegistry.ts +45 -0
  250. package/src/providers/Capabilities/private/fetchCapabilitiesFromAdapter.ts +59 -0
  251. package/src/providers/Capabilities/private/shallowEqual.ts +18 -0
  252. package/src/providers/Capabilities/private/useContext.ts +12 -0
  253. package/src/providers/Capabilities/types/Capabilities.ts +16 -0
  254. package/src/providers/Capabilities/useCapabilities.ts +25 -0
  255. package/src/providers/GroupActivities/GroupActivitiesComposer.tsx +116 -0
  256. package/src/providers/GroupActivities/private/GroupActivitiesContext.ts +23 -0
  257. package/src/providers/GroupActivities/private/createDefaultGroupActivitiesMiddleware.ts +113 -0
  258. package/src/providers/GroupActivities/private/isGroupingValid.ts +41 -0
  259. package/src/providers/GroupActivities/private/useGroupActivitiesContext.ts +6 -0
  260. package/src/providers/GroupActivities/useGroupActivities.ts +20 -0
  261. package/src/providers/GroupActivities/useGroupActivitiesByName.ts +17 -0
  262. package/src/providers/SpeechToSpeech/SpeechToSpeechComposer.tsx +20 -0
  263. package/src/providers/SpeechToSpeech/private/VoiceHandlerBridge.tsx +23 -0
  264. package/src/providers/SpeechToSpeech/private/VoiceRecorderBridge.tsx +49 -0
  265. package/src/providers/SpeechToSpeech/private/useAudioPlayer.spec.tsx +355 -0
  266. package/src/providers/SpeechToSpeech/private/useAudioPlayer.ts +92 -0
  267. package/src/providers/SpeechToSpeech/private/useRecorder.spec.tsx +344 -0
  268. package/src/providers/SpeechToSpeech/private/useRecorder.ts +220 -0
  269. package/src/providers/StyleOptions/StyleOptionsComposer.tsx +46 -0
  270. package/src/providers/StyleOptions/private/StyleOptionsContext.ts +20 -0
  271. package/src/providers/StyleOptions/private/rectifyStyleOptions.ts +6 -0
  272. package/src/providers/StyleOptions/useStyleOptions.ts +6 -0
  273. package/src/tsconfig.json +5 -14
  274. package/src/types/ActivityStatusMiddleware.ts +1 -9
  275. package/src/types/AttachmentForScreenReaderMiddleware.ts +9 -2
  276. package/src/types/AvatarMiddleware.ts +12 -1
  277. package/src/types/CardActionMiddleware.ts +2 -0
  278. package/src/types/ComponentMiddleware.ts +1 -1
  279. package/src/types/GroupActivitiesMiddleware.ts +7 -11
  280. package/dist/botframework-webchat-api.decorator.mjs.LEGAL.txt +0 -0
  281. package/dist/botframework-webchat-api.internal.mjs.LEGAL.txt +0 -0
  282. package/dist/chunk-2S76JUVM.mjs +0 -3
  283. package/dist/chunk-2S76JUVM.mjs.LEGAL.txt +0 -0
  284. package/dist/chunk-2S76JUVM.mjs.map +0 -1
  285. package/dist/chunk-J6D5YEY6.mjs.LEGAL.txt +0 -0
  286. package/dist/chunk-ZAMHKQQC.mjs +0 -3
  287. package/dist/chunk-ZAMHKQQC.mjs.LEGAL.txt +0 -0
  288. package/dist/chunk-ZAMHKQQC.mjs.map +0 -1
  289. package/lib/StyleOptions.d.ts +0 -697
  290. package/lib/StyleOptions.d.ts.map +0 -1
  291. package/lib/StyleOptions.js +0 -2
  292. package/lib/decorator/index.d.ts +0 -5
  293. package/lib/decorator/index.d.ts.map +0 -1
  294. package/lib/decorator/index.js +0 -28
  295. package/lib/decorator/private/ActivityBorderDecoratorMiddleware.d.ts +0 -27
  296. package/lib/decorator/private/ActivityBorderDecoratorMiddleware.d.ts.map +0 -1
  297. package/lib/decorator/private/ActivityBorderDecoratorMiddleware.js +0 -19
  298. package/lib/decorator/private/ActivityDecorator.d.ts +0 -9
  299. package/lib/decorator/private/ActivityDecorator.d.ts.map +0 -1
  300. package/lib/decorator/private/ActivityDecorator.js +0 -36
  301. package/lib/decorator/private/DecoratorComposer.d.ts +0 -3
  302. package/lib/decorator/private/DecoratorComposer.d.ts.map +0 -1
  303. package/lib/decorator/private/DecoratorComposer.js +0 -13
  304. package/lib/decorator/private/activityDecoratorRequest.d.ts +0 -6
  305. package/lib/decorator/private/activityDecoratorRequest.d.ts.map +0 -1
  306. package/lib/decorator/private/activityDecoratorRequest.js +0 -2
  307. package/lib/decorator/private/createDecoratorComposer.d.ts +0 -11
  308. package/lib/decorator/private/createDecoratorComposer.d.ts.map +0 -1
  309. package/lib/decorator/private/createDecoratorComposer.js +0 -27
  310. package/lib/decorator/private/templateMiddleware.d.ts +0 -30
  311. package/lib/decorator/private/templateMiddleware.d.ts.map +0 -1
  312. package/lib/decorator/private/templateMiddleware.js +0 -53
  313. package/lib/decorator/private/templateMiddleware.test.d.ts +0 -3
  314. package/lib/decorator/private/templateMiddleware.test.d.ts.map +0 -1
  315. package/lib/defaultStyleOptions.d.ts +0 -4
  316. package/lib/defaultStyleOptions.d.ts.map +0 -1
  317. package/lib/defaultStyleOptions.js +0 -277
  318. package/lib/external/PrecompiledGlobalize.js +0 -6361
  319. package/lib/hooks/Composer.d.ts +0 -88
  320. package/lib/hooks/Composer.d.ts.map +0 -1
  321. package/lib/hooks/Composer.js +0 -605
  322. package/lib/hooks/index.d.ts +0 -73
  323. package/lib/hooks/index.d.ts.map +0 -1
  324. package/lib/hooks/index.js +0 -504
  325. package/lib/hooks/internal/ErrorBox.js +0 -47
  326. package/lib/hooks/internal/SendBoxMiddleware.d.ts +0 -37
  327. package/lib/hooks/internal/SendBoxMiddleware.d.ts.map +0 -1
  328. package/lib/hooks/internal/SendBoxMiddleware.js +0 -17
  329. package/lib/hooks/internal/SendBoxToolbarMiddleware.d.ts +0 -37
  330. package/lib/hooks/internal/SendBoxToolbarMiddleware.d.ts.map +0 -1
  331. package/lib/hooks/internal/SendBoxToolbarMiddleware.js +0 -17
  332. package/lib/hooks/internal/Tracker.d.ts +0 -4
  333. package/lib/hooks/internal/Tracker.d.ts.map +0 -1
  334. package/lib/hooks/internal/Tracker.js +0 -15
  335. package/lib/hooks/internal/WebChatAPIContext.d.ts +0 -80
  336. package/lib/hooks/internal/WebChatAPIContext.d.ts.map +0 -1
  337. package/lib/hooks/internal/WebChatAPIContext.js +0 -12
  338. package/lib/hooks/internal/WebChatReduxContext.js +0 -17
  339. package/lib/hooks/internal/defaultSelectVoice.js +0 -28
  340. package/lib/hooks/internal/private/templateMiddleware.d.ts +0 -3
  341. package/lib/hooks/internal/private/templateMiddleware.d.ts.map +0 -1
  342. package/lib/hooks/internal/private/templateMiddleware.js +0 -12
  343. package/lib/hooks/internal/useCreateActivityRendererInternal.d.ts +0 -4
  344. package/lib/hooks/internal/useCreateActivityRendererInternal.d.ts.map +0 -1
  345. package/lib/hooks/internal/useCreateActivityRendererInternal.js +0 -37
  346. package/lib/hooks/internal/useDebugDeps.js +0 -39
  347. package/lib/hooks/internal/useDirFromProps.js +0 -12
  348. package/lib/hooks/internal/useErrorBoxClass.js +0 -14
  349. package/lib/hooks/internal/useForceRender.js +0 -24
  350. package/lib/hooks/internal/useLocalizedGlobalize.js +0 -12
  351. package/lib/hooks/internal/useLocalizedStrings.js +0 -14
  352. package/lib/hooks/internal/useMarkActivity.js +0 -12
  353. package/lib/hooks/internal/usePrevious.d.ts +0 -3
  354. package/lib/hooks/internal/usePrevious.d.ts.map +0 -1
  355. package/lib/hooks/internal/usePrevious.js +0 -15
  356. package/lib/hooks/internal/useReadTelemetryDimensions.js +0 -20
  357. package/lib/hooks/internal/useSetDictateState.d.ts +0 -2
  358. package/lib/hooks/internal/useSetDictateState.d.ts.map +0 -1
  359. package/lib/hooks/internal/useSetDictateState.js +0 -12
  360. package/lib/hooks/internal/useTimer.d.ts +0 -5
  361. package/lib/hooks/internal/useTimer.d.ts.map +0 -1
  362. package/lib/hooks/internal/useTimer.js +0 -43
  363. package/lib/hooks/internal/useTracker.js +0 -42
  364. package/lib/hooks/internal/useValueRef.d.ts +0 -3
  365. package/lib/hooks/internal/useValueRef.d.ts.map +0 -1
  366. package/lib/hooks/internal/useValueRef.js +0 -22
  367. package/lib/hooks/internal/useWebChatAPIContext.d.ts +0 -83
  368. package/lib/hooks/internal/useWebChatAPIContext.d.ts.map +0 -1
  369. package/lib/hooks/internal/useWebChatAPIContext.js +0 -17
  370. package/lib/hooks/middleware/UserlandBoundary.js +0 -48
  371. package/lib/hooks/middleware/applyMiddleware.js +0 -122
  372. package/lib/hooks/middleware/concatMiddleware.d.ts +0 -6
  373. package/lib/hooks/middleware/concatMiddleware.d.ts.map +0 -1
  374. package/lib/hooks/middleware/concatMiddleware.js +0 -33
  375. package/lib/hooks/middleware/createDefaultCardActionMiddleware.d.ts +0 -3
  376. package/lib/hooks/middleware/createDefaultCardActionMiddleware.d.ts.map +0 -1
  377. package/lib/hooks/middleware/createDefaultCardActionMiddleware.js +0 -43
  378. package/lib/hooks/middleware/createDefaultGroupActivitiesMiddleware.d.ts +0 -7
  379. package/lib/hooks/middleware/createDefaultGroupActivitiesMiddleware.d.ts.map +0 -1
  380. package/lib/hooks/middleware/createDefaultGroupActivitiesMiddleware.js +0 -68
  381. package/lib/hooks/private/numberWithInfinity.d.ts +0 -3
  382. package/lib/hooks/private/numberWithInfinity.d.ts.map +0 -1
  383. package/lib/hooks/private/numberWithInfinity.js +0 -17
  384. package/lib/hooks/private/numberWithInfinity.spec.d.ts +0 -2
  385. package/lib/hooks/private/numberWithInfinity.spec.d.ts.map +0 -1
  386. package/lib/hooks/private/reduceIterable.d.ts +0 -2
  387. package/lib/hooks/private/reduceIterable.d.ts.map +0 -1
  388. package/lib/hooks/private/reduceIterable.js +0 -26
  389. package/lib/hooks/private/reduceIterable.spec.d.ts +0 -2
  390. package/lib/hooks/private/reduceIterable.spec.d.ts.map +0 -1
  391. package/lib/hooks/useActiveTyping.d.ts +0 -4
  392. package/lib/hooks/useActiveTyping.d.ts.map +0 -1
  393. package/lib/hooks/useActiveTyping.js +0 -81
  394. package/lib/hooks/useActivities.d.ts +0 -3
  395. package/lib/hooks/useActivities.d.ts.map +0 -1
  396. package/lib/hooks/useActivities.js +0 -14
  397. package/lib/hooks/useActivityKeys.d.ts +0 -3
  398. package/lib/hooks/useActivityKeys.d.ts.map +0 -1
  399. package/lib/hooks/useActivityKeys.js +0 -11
  400. package/lib/hooks/useActivityKeysByRead.d.ts +0 -3
  401. package/lib/hooks/useActivityKeysByRead.d.ts.map +0 -1
  402. package/lib/hooks/useActivityKeysByRead.js +0 -11
  403. package/lib/hooks/useAvatarForBot.d.ts +0 -5
  404. package/lib/hooks/useAvatarForBot.d.ts.map +0 -1
  405. package/lib/hooks/useAvatarForBot.js +0 -26
  406. package/lib/hooks/useAvatarForUser.d.ts +0 -5
  407. package/lib/hooks/useAvatarForUser.d.ts.map +0 -1
  408. package/lib/hooks/useAvatarForUser.js +0 -26
  409. package/lib/hooks/useByteFormatter.d.ts +0 -2
  410. package/lib/hooks/useByteFormatter.d.ts.map +0 -1
  411. package/lib/hooks/useByteFormatter.js +0 -43
  412. package/lib/hooks/useConnectivityStatus.d.ts +0 -2
  413. package/lib/hooks/useConnectivityStatus.d.ts.map +0 -1
  414. package/lib/hooks/useConnectivityStatus.js +0 -14
  415. package/lib/hooks/useCreateActivityRenderer.d.ts +0 -3
  416. package/lib/hooks/useCreateActivityRenderer.d.ts.map +0 -1
  417. package/lib/hooks/useCreateActivityRenderer.js +0 -14
  418. package/lib/hooks/useCreateActivityStatusRenderer.d.ts +0 -10
  419. package/lib/hooks/useCreateActivityStatusRenderer.d.ts.map +0 -1
  420. package/lib/hooks/useCreateActivityStatusRenderer.js +0 -72
  421. package/lib/hooks/useCreateAttachmentForScreenReaderRenderer.d.ts +0 -3
  422. package/lib/hooks/useCreateAttachmentForScreenReaderRenderer.d.ts.map +0 -1
  423. package/lib/hooks/useCreateAttachmentForScreenReaderRenderer.js +0 -12
  424. package/lib/hooks/useCreateAvatarRenderer.d.ts +0 -6
  425. package/lib/hooks/useCreateAvatarRenderer.d.ts.map +0 -1
  426. package/lib/hooks/useCreateAvatarRenderer.js +0 -44
  427. package/lib/hooks/useCreateScrollToEndButtonRenderer.d.ts +0 -3
  428. package/lib/hooks/useCreateScrollToEndButtonRenderer.d.ts.map +0 -1
  429. package/lib/hooks/useCreateScrollToEndButtonRenderer.js +0 -12
  430. package/lib/hooks/useDateFormatter.d.ts +0 -2
  431. package/lib/hooks/useDateFormatter.d.ts.map +0 -1
  432. package/lib/hooks/useDateFormatter.js +0 -35
  433. package/lib/hooks/useDebouncedNotifications.d.ts +0 -13
  434. package/lib/hooks/useDebouncedNotifications.d.ts.map +0 -1
  435. package/lib/hooks/useDebouncedNotifications.js +0 -118
  436. package/lib/hooks/useDictateInterims.d.ts +0 -2
  437. package/lib/hooks/useDictateInterims.d.ts.map +0 -1
  438. package/lib/hooks/useDictateInterims.js +0 -16
  439. package/lib/hooks/useDictateState.d.ts +0 -2
  440. package/lib/hooks/useDictateState.d.ts.map +0 -1
  441. package/lib/hooks/useDictateState.js +0 -15
  442. package/lib/hooks/useDirection.d.ts +0 -2
  443. package/lib/hooks/useDirection.d.ts.map +0 -1
  444. package/lib/hooks/useDirection.js +0 -38
  445. package/lib/hooks/useDisabled.d.ts +0 -2
  446. package/lib/hooks/useDisabled.d.ts.map +0 -1
  447. package/lib/hooks/useDisabled.js +0 -12
  448. package/lib/hooks/useDismissNotification.d.ts +0 -2
  449. package/lib/hooks/useDismissNotification.d.ts.map +0 -1
  450. package/lib/hooks/useDismissNotification.js +0 -12
  451. package/lib/hooks/useEmitTypingIndicator.d.ts +0 -2
  452. package/lib/hooks/useEmitTypingIndicator.d.ts.map +0 -1
  453. package/lib/hooks/useEmitTypingIndicator.js +0 -12
  454. package/lib/hooks/useGetActivitiesByKey.d.ts +0 -3
  455. package/lib/hooks/useGetActivitiesByKey.d.ts.map +0 -1
  456. package/lib/hooks/useGetActivitiesByKey.js +0 -11
  457. package/lib/hooks/useGetActivityByKey.d.ts +0 -3
  458. package/lib/hooks/useGetActivityByKey.d.ts.map +0 -1
  459. package/lib/hooks/useGetActivityByKey.js +0 -11
  460. package/lib/hooks/useGetHasAcknowledgedByActivityKey.d.ts +0 -3
  461. package/lib/hooks/useGetHasAcknowledgedByActivityKey.d.ts.map +0 -1
  462. package/lib/hooks/useGetHasAcknowledgedByActivityKey.js +0 -11
  463. package/lib/hooks/useGetKeyByActivity.d.ts +0 -3
  464. package/lib/hooks/useGetKeyByActivity.d.ts.map +0 -1
  465. package/lib/hooks/useGetKeyByActivity.js +0 -11
  466. package/lib/hooks/useGetKeyByActivityId.d.ts +0 -3
  467. package/lib/hooks/useGetKeyByActivityId.d.ts.map +0 -1
  468. package/lib/hooks/useGetKeyByActivityId.js +0 -11
  469. package/lib/hooks/useGetSendTimeoutForActivity.d.ts +0 -5
  470. package/lib/hooks/useGetSendTimeoutForActivity.d.ts.map +0 -1
  471. package/lib/hooks/useGetSendTimeoutForActivity.js +0 -33
  472. package/lib/hooks/useGrammars.d.ts +0 -2
  473. package/lib/hooks/useGrammars.d.ts.map +0 -1
  474. package/lib/hooks/useGrammars.js +0 -12
  475. package/lib/hooks/useGroupActivities.d.ts +0 -8
  476. package/lib/hooks/useGroupActivities.d.ts.map +0 -1
  477. package/lib/hooks/useGroupActivities.js +0 -12
  478. package/lib/hooks/useGroupTimestamp.d.ts +0 -2
  479. package/lib/hooks/useGroupTimestamp.d.ts.map +0 -1
  480. package/lib/hooks/useGroupTimestamp.js +0 -21
  481. package/lib/hooks/useLanguage.d.ts +0 -2
  482. package/lib/hooks/useLanguage.d.ts.map +0 -1
  483. package/lib/hooks/useLanguage.js +0 -19
  484. package/lib/hooks/useLastAcknowledgedActivityKey.d.ts +0 -3
  485. package/lib/hooks/useLastAcknowledgedActivityKey.d.ts.map +0 -1
  486. package/lib/hooks/useLastAcknowledgedActivityKey.js +0 -11
  487. package/lib/hooks/useLastReadActivityKey.d.ts +0 -3
  488. package/lib/hooks/useLastReadActivityKey.d.ts.map +0 -1
  489. package/lib/hooks/useLastReadActivityKey.js +0 -11
  490. package/lib/hooks/useLocalizer.d.ts +0 -13
  491. package/lib/hooks/useLocalizer.d.ts.map +0 -1
  492. package/lib/hooks/useLocalizer.js +0 -75
  493. package/lib/hooks/useMarkActivityAsSpoken.d.ts +0 -3
  494. package/lib/hooks/useMarkActivityAsSpoken.d.ts.map +0 -1
  495. package/lib/hooks/useMarkActivityAsSpoken.js +0 -16
  496. package/lib/hooks/useMarkActivityKeyAsRead.d.ts +0 -3
  497. package/lib/hooks/useMarkActivityKeyAsRead.d.ts.map +0 -1
  498. package/lib/hooks/useMarkActivityKeyAsRead.js +0 -11
  499. package/lib/hooks/useMarkAllAsAcknowledged.d.ts +0 -3
  500. package/lib/hooks/useMarkAllAsAcknowledged.d.ts.map +0 -1
  501. package/lib/hooks/useMarkAllAsAcknowledged.js +0 -11
  502. package/lib/hooks/useNotifications.d.ts +0 -3
  503. package/lib/hooks/useNotifications.d.ts.map +0 -1
  504. package/lib/hooks/useNotifications.js +0 -14
  505. package/lib/hooks/usePerformCardAction.d.ts +0 -3
  506. package/lib/hooks/usePerformCardAction.d.ts.map +0 -1
  507. package/lib/hooks/usePerformCardAction.js +0 -12
  508. package/lib/hooks/usePonyfill.d.ts +0 -3
  509. package/lib/hooks/usePonyfill.d.ts.map +0 -1
  510. package/lib/hooks/usePonyfill.js +0 -11
  511. package/lib/hooks/usePostActivity.d.ts +0 -3
  512. package/lib/hooks/usePostActivity.d.ts.map +0 -1
  513. package/lib/hooks/usePostActivity.js +0 -12
  514. package/lib/hooks/useReferenceGrammarID.d.ts +0 -2
  515. package/lib/hooks/useReferenceGrammarID.d.ts.map +0 -1
  516. package/lib/hooks/useReferenceGrammarID.js +0 -14
  517. package/lib/hooks/useRelativeTimeFormatter.d.ts +0 -2
  518. package/lib/hooks/useRelativeTimeFormatter.d.ts.map +0 -1
  519. package/lib/hooks/useRelativeTimeFormatter.js +0 -61
  520. package/lib/hooks/useRenderAttachment.d.ts +0 -3
  521. package/lib/hooks/useRenderAttachment.d.ts.map +0 -1
  522. package/lib/hooks/useRenderAttachment.js +0 -14
  523. package/lib/hooks/useRenderToast.d.ts +0 -3
  524. package/lib/hooks/useRenderToast.d.ts.map +0 -1
  525. package/lib/hooks/useRenderToast.js +0 -12
  526. package/lib/hooks/useRenderTypingIndicator.d.ts +0 -3
  527. package/lib/hooks/useRenderTypingIndicator.d.ts.map +0 -1
  528. package/lib/hooks/useRenderTypingIndicator.js +0 -12
  529. package/lib/hooks/useSendBoxAttachments.d.ts +0 -6
  530. package/lib/hooks/useSendBoxAttachments.d.ts.map +0 -1
  531. package/lib/hooks/useSendBoxAttachments.js +0 -23
  532. package/lib/hooks/useSendBoxValue.d.ts +0 -2
  533. package/lib/hooks/useSendBoxValue.d.ts.map +0 -1
  534. package/lib/hooks/useSendBoxValue.js +0 -16
  535. package/lib/hooks/useSendEvent.d.ts +0 -2
  536. package/lib/hooks/useSendEvent.d.ts.map +0 -1
  537. package/lib/hooks/useSendEvent.js +0 -12
  538. package/lib/hooks/useSendFiles.d.ts +0 -10
  539. package/lib/hooks/useSendFiles.d.ts.map +0 -1
  540. package/lib/hooks/useSendFiles.js +0 -35
  541. package/lib/hooks/useSendMessage.d.ts +0 -6
  542. package/lib/hooks/useSendMessage.d.ts.map +0 -1
  543. package/lib/hooks/useSendMessage.js +0 -33
  544. package/lib/hooks/useSendMessageBack.d.ts +0 -2
  545. package/lib/hooks/useSendMessageBack.d.ts.map +0 -1
  546. package/lib/hooks/useSendMessageBack.js +0 -12
  547. package/lib/hooks/useSendPostBack.d.ts +0 -2
  548. package/lib/hooks/useSendPostBack.d.ts.map +0 -1
  549. package/lib/hooks/useSendPostBack.js +0 -12
  550. package/lib/hooks/useSendStatusByActivityKey.d.ts +0 -22
  551. package/lib/hooks/useSendStatusByActivityKey.d.ts.map +0 -1
  552. package/lib/hooks/useSendStatusByActivityKey.js +0 -31
  553. package/lib/hooks/useSendTimeoutForActivity.d.ts +0 -4
  554. package/lib/hooks/useSendTimeoutForActivity.d.ts.map +0 -1
  555. package/lib/hooks/useSendTimeoutForActivity.js +0 -22
  556. package/lib/hooks/useSendTypingIndicator.d.ts +0 -2
  557. package/lib/hooks/useSendTypingIndicator.d.ts.map +0 -1
  558. package/lib/hooks/useSendTypingIndicator.js +0 -14
  559. package/lib/hooks/useSetNotification.d.ts +0 -3
  560. package/lib/hooks/useSetNotification.d.ts.map +0 -1
  561. package/lib/hooks/useSetNotification.js +0 -12
  562. package/lib/hooks/useShouldSpeakIncomingActivity.d.ts +0 -2
  563. package/lib/hooks/useShouldSpeakIncomingActivity.d.ts.map +0 -1
  564. package/lib/hooks/useShouldSpeakIncomingActivity.js +0 -22
  565. package/lib/hooks/useStartDictate.d.ts +0 -2
  566. package/lib/hooks/useStartDictate.d.ts.map +0 -1
  567. package/lib/hooks/useStartDictate.js +0 -12
  568. package/lib/hooks/useStopDictate.d.ts +0 -2
  569. package/lib/hooks/useStopDictate.d.ts.map +0 -1
  570. package/lib/hooks/useStopDictate.js +0 -12
  571. package/lib/hooks/useStyleOptions.d.ts +0 -3
  572. package/lib/hooks/useStyleOptions.d.ts.map +0 -1
  573. package/lib/hooks/useStyleOptions.js +0 -12
  574. package/lib/hooks/useSubmitSendBox.d.ts +0 -4
  575. package/lib/hooks/useSubmitSendBox.d.ts.map +0 -1
  576. package/lib/hooks/useSubmitSendBox.js +0 -49
  577. package/lib/hooks/useSuggestedActions.d.ts +0 -3
  578. package/lib/hooks/useSuggestedActions.d.ts.map +0 -1
  579. package/lib/hooks/useSuggestedActions.js +0 -25
  580. package/lib/hooks/useTimeoutForSend.d.ts +0 -3
  581. package/lib/hooks/useTimeoutForSend.d.ts.map +0 -1
  582. package/lib/hooks/useTimeoutForSend.js +0 -21
  583. package/lib/hooks/useTrackDimension.d.ts +0 -2
  584. package/lib/hooks/useTrackDimension.d.ts.map +0 -1
  585. package/lib/hooks/useTrackDimension.js +0 -14
  586. package/lib/hooks/useTrackEvent.d.ts +0 -10
  587. package/lib/hooks/useTrackEvent.d.ts.map +0 -1
  588. package/lib/hooks/useTrackEvent.js +0 -51
  589. package/lib/hooks/useTrackException.d.ts +0 -2
  590. package/lib/hooks/useTrackException.d.ts.map +0 -1
  591. package/lib/hooks/useTrackException.js +0 -31
  592. package/lib/hooks/useTrackTiming.d.ts +0 -2
  593. package/lib/hooks/useTrackTiming.d.ts.map +0 -1
  594. package/lib/hooks/useTrackTiming.js +0 -93
  595. package/lib/hooks/useUserID.d.ts +0 -2
  596. package/lib/hooks/useUserID.d.ts.map +0 -1
  597. package/lib/hooks/useUserID.js +0 -12
  598. package/lib/hooks/useUsername.d.ts +0 -2
  599. package/lib/hooks/useUsername.d.ts.map +0 -1
  600. package/lib/hooks/useUsername.js +0 -12
  601. package/lib/hooks/useVoiceSelector.d.ts +0 -2
  602. package/lib/hooks/useVoiceSelector.d.ts.map +0 -1
  603. package/lib/hooks/useVoiceSelector.js +0 -16
  604. package/lib/hooks/utils/ErrorBoundary.js +0 -68
  605. package/lib/hooks/utils/observableToPromise.d.ts +0 -3
  606. package/lib/hooks/utils/observableToPromise.d.ts.map +0 -1
  607. package/lib/hooks/utils/observableToPromise.js +0 -28
  608. package/lib/index.d.ts +0 -37
  609. package/lib/index.d.ts.map +0 -1
  610. package/lib/index.js +0 -88
  611. package/lib/internal.d.ts +0 -3
  612. package/lib/internal.d.ts.map +0 -1
  613. package/lib/internal.js +0 -14
  614. package/lib/localization/Localize.d.ts +0 -4
  615. package/lib/localization/Localize.d.ts.map +0 -1
  616. package/lib/localization/Localize.js +0 -50
  617. package/lib/localization/ar-EG.json +0 -42
  618. package/lib/localization/ar-JO.json +0 -45
  619. package/lib/localization/ar-SA.json +0 -112
  620. package/lib/localization/bg-BG.json +0 -112
  621. package/lib/localization/ca-ES.json +0 -112
  622. package/lib/localization/cs-CZ.json +0 -112
  623. package/lib/localization/da-DK.json +0 -112
  624. package/lib/localization/de-DE.json +0 -112
  625. package/lib/localization/el-GR.json +0 -112
  626. package/lib/localization/en-US.json +0 -183
  627. package/lib/localization/es-ES.json +0 -112
  628. package/lib/localization/et-EE.json +0 -112
  629. package/lib/localization/eu-ES.json +0 -112
  630. package/lib/localization/fi-FI.json +0 -112
  631. package/lib/localization/fr-FR.json +0 -112
  632. package/lib/localization/getAllLocalizedStrings.d.ts +0 -6
  633. package/lib/localization/getAllLocalizedStrings.d.ts.map +0 -1
  634. package/lib/localization/getAllLocalizedStrings.js +0 -117
  635. package/lib/localization/getRTLList.d.ts +0 -2
  636. package/lib/localization/getRTLList.d.ts.map +0 -1
  637. package/lib/localization/getRTLList.js +0 -46
  638. package/lib/localization/gl-ES.json +0 -112
  639. package/lib/localization/he-IL.json +0 -112
  640. package/lib/localization/hi-IN.json +0 -112
  641. package/lib/localization/hr-HR.json +0 -112
  642. package/lib/localization/hu-HU.json +0 -112
  643. package/lib/localization/id-ID.json +0 -112
  644. package/lib/localization/it-IT.json +0 -112
  645. package/lib/localization/ja-JP.json +0 -112
  646. package/lib/localization/kk-KZ.json +0 -112
  647. package/lib/localization/ko-KR.json +0 -112
  648. package/lib/localization/lt-LT.json +0 -112
  649. package/lib/localization/lv-LV.json +0 -112
  650. package/lib/localization/mergeLocalizedStrings.d.ts +0 -7
  651. package/lib/localization/mergeLocalizedStrings.d.ts.map +0 -1
  652. package/lib/localization/mergeLocalizedStrings.js +0 -49
  653. package/lib/localization/ms-MY.json +0 -112
  654. package/lib/localization/nb-NO.json +0 -112
  655. package/lib/localization/nl-NL.json +0 -112
  656. package/lib/localization/overrides.json +0 -257
  657. package/lib/localization/pl-PL.json +0 -112
  658. package/lib/localization/pt-BR.json +0 -112
  659. package/lib/localization/pt-PT.json +0 -112
  660. package/lib/localization/ro-RO.json +0 -112
  661. package/lib/localization/ru-RU.json +0 -112
  662. package/lib/localization/sk-SK.json +0 -112
  663. package/lib/localization/sl-SI.json +0 -112
  664. package/lib/localization/sl-SL.json +0 -3
  665. package/lib/localization/sr-Cyrl-CS.json +0 -112
  666. package/lib/localization/sr-Cyrl.json +0 -3
  667. package/lib/localization/sr-Latn-CS.json +0 -112
  668. package/lib/localization/sr-Latn.json +0 -3
  669. package/lib/localization/sv-SE.json +0 -112
  670. package/lib/localization/th-TH.json +0 -112
  671. package/lib/localization/tr-TR.json +0 -112
  672. package/lib/localization/uk-UA.json +0 -112
  673. package/lib/localization/vi-VN.json +0 -112
  674. package/lib/localization/yue.json +0 -115
  675. package/lib/localization/zh-CN.json +0 -112
  676. package/lib/localization/zh-HK.json +0 -112
  677. package/lib/localization/zh-TW.json +0 -112
  678. package/lib/normalizeStyleOptions.d.ts +0 -3
  679. package/lib/normalizeStyleOptions.d.ts.map +0 -1
  680. package/lib/normalizeStyleOptions.js +0 -147
  681. package/lib/patchStyleOptionsFromDeprecatedProps.js +0 -21
  682. package/lib/providers/ActivityAcknowledgement/ActivityAcknowledgementComposer.d.ts +0 -6
  683. package/lib/providers/ActivityAcknowledgement/ActivityAcknowledgementComposer.d.ts.map +0 -1
  684. package/lib/providers/ActivityAcknowledgement/ActivityAcknowledgementComposer.js +0 -153
  685. package/lib/providers/ActivityAcknowledgement/private/Context.d.ts +0 -13
  686. package/lib/providers/ActivityAcknowledgement/private/Context.d.ts.map +0 -1
  687. package/lib/providers/ActivityAcknowledgement/private/Context.js +0 -14
  688. package/lib/providers/ActivityAcknowledgement/private/useContext.d.ts +0 -3
  689. package/lib/providers/ActivityAcknowledgement/private/useContext.d.ts.map +0 -1
  690. package/lib/providers/ActivityAcknowledgement/private/useContext.js +0 -18
  691. package/lib/providers/ActivityAcknowledgement/useActivityKeysByRead.d.ts +0 -5
  692. package/lib/providers/ActivityAcknowledgement/useActivityKeysByRead.d.ts.map +0 -1
  693. package/lib/providers/ActivityAcknowledgement/useActivityKeysByRead.js +0 -15
  694. package/lib/providers/ActivityAcknowledgement/useGetHasAcknowledgedByActivityKey.d.ts +0 -2
  695. package/lib/providers/ActivityAcknowledgement/useGetHasAcknowledgedByActivityKey.d.ts.map +0 -1
  696. package/lib/providers/ActivityAcknowledgement/useGetHasAcknowledgedByActivityKey.js +0 -12
  697. package/lib/providers/ActivityAcknowledgement/useLastAcknowledgedActivityKey.d.ts +0 -2
  698. package/lib/providers/ActivityAcknowledgement/useLastAcknowledgedActivityKey.d.ts.map +0 -1
  699. package/lib/providers/ActivityAcknowledgement/useLastAcknowledgedActivityKey.js +0 -12
  700. package/lib/providers/ActivityAcknowledgement/useLastReadActivityKey.d.ts +0 -2
  701. package/lib/providers/ActivityAcknowledgement/useLastReadActivityKey.d.ts.map +0 -1
  702. package/lib/providers/ActivityAcknowledgement/useLastReadActivityKey.js +0 -12
  703. package/lib/providers/ActivityAcknowledgement/useMarkActivityKeyAsRead.d.ts +0 -2
  704. package/lib/providers/ActivityAcknowledgement/useMarkActivityKeyAsRead.d.ts.map +0 -1
  705. package/lib/providers/ActivityAcknowledgement/useMarkActivityKeyAsRead.js +0 -12
  706. package/lib/providers/ActivityAcknowledgement/useMarkAllAsAcknowledged.d.ts +0 -2
  707. package/lib/providers/ActivityAcknowledgement/useMarkAllAsAcknowledged.d.ts.map +0 -1
  708. package/lib/providers/ActivityAcknowledgement/useMarkAllAsAcknowledged.js +0 -12
  709. package/lib/providers/ActivityKeyer/ActivityKeyerComposer.d.ts +0 -20
  710. package/lib/providers/ActivityKeyer/ActivityKeyerComposer.d.ts.map +0 -1
  711. package/lib/providers/ActivityKeyer/ActivityKeyerComposer.js +0 -149
  712. package/lib/providers/ActivityKeyer/private/Context.d.ts +0 -13
  713. package/lib/providers/ActivityKeyer/private/Context.d.ts.map +0 -1
  714. package/lib/providers/ActivityKeyer/private/Context.js +0 -10
  715. package/lib/providers/ActivityKeyer/private/getActivityId.d.ts +0 -3
  716. package/lib/providers/ActivityKeyer/private/getActivityId.d.ts.map +0 -1
  717. package/lib/providers/ActivityKeyer/private/getActivityId.js +0 -10
  718. package/lib/providers/ActivityKeyer/private/getClientActivityId.d.ts +0 -3
  719. package/lib/providers/ActivityKeyer/private/getClientActivityId.d.ts.map +0 -1
  720. package/lib/providers/ActivityKeyer/private/getClientActivityId.js +0 -11
  721. package/lib/providers/ActivityKeyer/private/lastOf.d.ts +0 -2
  722. package/lib/providers/ActivityKeyer/private/lastOf.d.ts.map +0 -1
  723. package/lib/providers/ActivityKeyer/private/lastOf.js +0 -10
  724. package/lib/providers/ActivityKeyer/private/lastOf.spec.d.ts +0 -2
  725. package/lib/providers/ActivityKeyer/private/lastOf.spec.d.ts.map +0 -1
  726. package/lib/providers/ActivityKeyer/private/someIterable.d.ts +0 -2
  727. package/lib/providers/ActivityKeyer/private/someIterable.d.ts.map +0 -1
  728. package/lib/providers/ActivityKeyer/private/someIterable.js +0 -27
  729. package/lib/providers/ActivityKeyer/private/someIterable.spec.d.ts +0 -2
  730. package/lib/providers/ActivityKeyer/private/someIterable.spec.d.ts.map +0 -1
  731. package/lib/providers/ActivityKeyer/private/uniqueId.d.ts +0 -2
  732. package/lib/providers/ActivityKeyer/private/uniqueId.d.ts.map +0 -1
  733. package/lib/providers/ActivityKeyer/private/uniqueId.js +0 -15
  734. package/lib/providers/ActivityKeyer/private/useContext.d.ts +0 -3
  735. package/lib/providers/ActivityKeyer/private/useContext.d.ts.map +0 -1
  736. package/lib/providers/ActivityKeyer/private/useContext.js +0 -18
  737. package/lib/providers/ActivityKeyer/useActivityKeys.d.ts +0 -2
  738. package/lib/providers/ActivityKeyer/useActivityKeys.d.ts.map +0 -1
  739. package/lib/providers/ActivityKeyer/useActivityKeys.js +0 -12
  740. package/lib/providers/ActivityKeyer/useGetActivitiesByKey.d.ts +0 -3
  741. package/lib/providers/ActivityKeyer/useGetActivitiesByKey.d.ts.map +0 -1
  742. package/lib/providers/ActivityKeyer/useGetActivitiesByKey.js +0 -12
  743. package/lib/providers/ActivityKeyer/useGetActivityByKey.d.ts +0 -3
  744. package/lib/providers/ActivityKeyer/useGetActivityByKey.d.ts.map +0 -1
  745. package/lib/providers/ActivityKeyer/useGetActivityByKey.js +0 -12
  746. package/lib/providers/ActivityKeyer/useGetKeyByActivity.d.ts +0 -3
  747. package/lib/providers/ActivityKeyer/useGetKeyByActivity.d.ts.map +0 -1
  748. package/lib/providers/ActivityKeyer/useGetKeyByActivity.js +0 -12
  749. package/lib/providers/ActivityKeyer/useGetKeyByActivityId.d.ts +0 -2
  750. package/lib/providers/ActivityKeyer/useGetKeyByActivityId.d.ts.map +0 -1
  751. package/lib/providers/ActivityKeyer/useGetKeyByActivityId.js +0 -12
  752. package/lib/providers/ActivityListener/ActivityListenerComposer.d.ts +0 -7
  753. package/lib/providers/ActivityListener/ActivityListenerComposer.d.ts.map +0 -1
  754. package/lib/providers/ActivityListener/ActivityListenerComposer.js +0 -55
  755. package/lib/providers/ActivityListener/private/Context.d.ts +0 -8
  756. package/lib/providers/ActivityListener/private/Context.d.ts.map +0 -1
  757. package/lib/providers/ActivityListener/private/Context.js +0 -15
  758. package/lib/providers/ActivityListener/private/useContext.d.ts +0 -2
  759. package/lib/providers/ActivityListener/private/useContext.d.ts.map +0 -1
  760. package/lib/providers/ActivityListener/private/useContext.js +0 -13
  761. package/lib/providers/ActivityListener/useUpsertedActivities.d.ts +0 -3
  762. package/lib/providers/ActivityListener/useUpsertedActivities.d.ts.map +0 -1
  763. package/lib/providers/ActivityListener/useUpsertedActivities.js +0 -12
  764. package/lib/providers/ActivitySendStatus/ActivitySendStatusComposer.d.ts +0 -4
  765. package/lib/providers/ActivitySendStatus/ActivitySendStatusComposer.d.ts.map +0 -1
  766. package/lib/providers/ActivitySendStatus/ActivitySendStatusComposer.js +0 -149
  767. package/lib/providers/ActivitySendStatus/private/Context.d.ts +0 -9
  768. package/lib/providers/ActivitySendStatus/private/Context.d.ts.map +0 -1
  769. package/lib/providers/ActivitySendStatus/private/Context.js +0 -13
  770. package/lib/providers/ActivitySendStatus/private/isMapEqual.d.ts +0 -7
  771. package/lib/providers/ActivitySendStatus/private/isMapEqual.d.ts.map +0 -1
  772. package/lib/providers/ActivitySendStatus/private/isMapEqual.js +0 -55
  773. package/lib/providers/ActivitySendStatus/private/useContext.d.ts +0 -3
  774. package/lib/providers/ActivitySendStatus/private/useContext.d.ts.map +0 -1
  775. package/lib/providers/ActivitySendStatus/private/useContext.js +0 -18
  776. package/lib/providers/ActivitySendStatus/useSendStatusByActivityKey.d.ts +0 -22
  777. package/lib/providers/ActivitySendStatus/useSendStatusByActivityKey.d.ts.map +0 -1
  778. package/lib/providers/ActivitySendStatus/useSendStatusByActivityKey.js +0 -31
  779. package/lib/providers/ActivitySendStatusTelemetry/ActivitySendStatusTelemetryComposer.d.ts +0 -3
  780. package/lib/providers/ActivitySendStatusTelemetry/ActivitySendStatusTelemetryComposer.d.ts.map +0 -1
  781. package/lib/providers/ActivitySendStatusTelemetry/ActivitySendStatusTelemetryComposer.js +0 -71
  782. package/lib/providers/ActivityTyping/ActivityTypingComposer.d.ts +0 -9
  783. package/lib/providers/ActivityTyping/ActivityTypingComposer.d.ts.map +0 -1
  784. package/lib/providers/ActivityTyping/ActivityTypingComposer.js +0 -98
  785. package/lib/providers/ActivityTyping/private/Context.d.ts +0 -8
  786. package/lib/providers/ActivityTyping/private/Context.d.ts.map +0 -1
  787. package/lib/providers/ActivityTyping/private/Context.js +0 -15
  788. package/lib/providers/ActivityTyping/private/useContext.d.ts +0 -3
  789. package/lib/providers/ActivityTyping/private/useContext.d.ts.map +0 -1
  790. package/lib/providers/ActivityTyping/private/useContext.js +0 -13
  791. package/lib/providers/ActivityTyping/private/useMemoWithPrevious.d.ts +0 -3
  792. package/lib/providers/ActivityTyping/private/useMemoWithPrevious.d.ts.map +0 -1
  793. package/lib/providers/ActivityTyping/private/useMemoWithPrevious.js +0 -22
  794. package/lib/providers/ActivityTyping/types/AllTyping.d.ts +0 -9
  795. package/lib/providers/ActivityTyping/types/AllTyping.d.ts.map +0 -1
  796. package/lib/providers/ActivityTyping/types/AllTyping.js +0 -2
  797. package/lib/providers/ActivityTyping/useAllTyping.d.ts +0 -3
  798. package/lib/providers/ActivityTyping/useAllTyping.d.ts.map +0 -1
  799. package/lib/providers/ActivityTyping/useAllTyping.js +0 -12
  800. package/lib/providers/Ponyfill/PonyfillComposer.d.ts +0 -17
  801. package/lib/providers/Ponyfill/PonyfillComposer.d.ts.map +0 -1
  802. package/lib/providers/Ponyfill/PonyfillComposer.js +0 -87
  803. package/lib/providers/Ponyfill/private/PonyfillContext.d.ts +0 -8
  804. package/lib/providers/Ponyfill/private/PonyfillContext.d.ts.map +0 -1
  805. package/lib/providers/Ponyfill/private/PonyfillContext.js +0 -10
  806. package/lib/providers/Ponyfill/private/useContext.d.ts +0 -6
  807. package/lib/providers/Ponyfill/private/useContext.d.ts.map +0 -1
  808. package/lib/providers/Ponyfill/private/useContext.js +0 -17
  809. package/lib/providers/Ponyfill/usePonyfill.d.ts +0 -3
  810. package/lib/providers/Ponyfill/usePonyfill.d.ts.map +0 -1
  811. package/lib/providers/Ponyfill/usePonyfill.js +0 -12
  812. package/lib/tsconfig.json +0 -18
  813. package/lib/types/ActivityMiddleware.d.ts +0 -24
  814. package/lib/types/ActivityMiddleware.d.ts.map +0 -1
  815. package/lib/types/ActivityMiddleware.js +0 -2
  816. package/lib/types/ActivityStatusMiddleware.d.ts +0 -17
  817. package/lib/types/ActivityStatusMiddleware.d.ts.map +0 -1
  818. package/lib/types/ActivityStatusMiddleware.js +0 -2
  819. package/lib/types/AttachmentForScreenReaderMiddleware.d.ts +0 -14
  820. package/lib/types/AttachmentForScreenReaderMiddleware.d.ts.map +0 -1
  821. package/lib/types/AttachmentForScreenReaderMiddleware.js +0 -2
  822. package/lib/types/AttachmentMiddleware.d.ts +0 -12
  823. package/lib/types/AttachmentMiddleware.d.ts.map +0 -1
  824. package/lib/types/AttachmentMiddleware.js +0 -2
  825. package/lib/types/AvatarMiddleware.d.ts +0 -15
  826. package/lib/types/AvatarMiddleware.d.ts.map +0 -1
  827. package/lib/types/AvatarMiddleware.js +0 -2
  828. package/lib/types/CardActionMiddleware.d.ts +0 -19
  829. package/lib/types/CardActionMiddleware.d.ts.map +0 -1
  830. package/lib/types/CardActionMiddleware.js +0 -2
  831. package/lib/types/ComponentMiddleware.d.ts +0 -31
  832. package/lib/types/ComponentMiddleware.d.ts.map +0 -1
  833. package/lib/types/ComponentMiddleware.js +0 -2
  834. package/lib/types/ContextOf.d.ts +0 -4
  835. package/lib/types/ContextOf.d.ts.map +0 -1
  836. package/lib/types/ContextOf.js +0 -2
  837. package/lib/types/FunctionMiddleware.d.ts +0 -6
  838. package/lib/types/FunctionMiddleware.d.ts.map +0 -1
  839. package/lib/types/FunctionMiddleware.js +0 -2
  840. package/lib/types/GroupActivitiesMiddleware.d.ts +0 -22
  841. package/lib/types/GroupActivitiesMiddleware.d.ts.map +0 -1
  842. package/lib/types/GroupActivitiesMiddleware.js +0 -2
  843. package/lib/types/LocalizedStrings.d.ts +0 -5
  844. package/lib/types/LocalizedStrings.d.ts.map +0 -1
  845. package/lib/types/LocalizedStrings.js +0 -2
  846. package/lib/types/Notification.d.ts +0 -10
  847. package/lib/types/Notification.d.ts.map +0 -1
  848. package/lib/types/Notification.js +0 -2
  849. package/lib/types/PrecompiledGlobalize.d.ts +0 -13
  850. package/lib/types/PrecompiledGlobalize.d.ts.map +0 -1
  851. package/lib/types/PrecompiledGlobalize.js +0 -2
  852. package/lib/types/ScrollToEndButtonMiddleware.d.ts +0 -30
  853. package/lib/types/ScrollToEndButtonMiddleware.d.ts.map +0 -1
  854. package/lib/types/ScrollToEndButtonMiddleware.js +0 -2
  855. package/lib/types/SendStatus.d.ts +0 -3
  856. package/lib/types/SendStatus.d.ts.map +0 -1
  857. package/lib/types/SendStatus.js +0 -2
  858. package/lib/types/TelemetryMeasurementEvent.d.ts +0 -31
  859. package/lib/types/TelemetryMeasurementEvent.d.ts.map +0 -1
  860. package/lib/types/TelemetryMeasurementEvent.js +0 -2
  861. package/lib/types/ToastMiddleware.d.ts +0 -11
  862. package/lib/types/ToastMiddleware.d.ts.map +0 -1
  863. package/lib/types/ToastMiddleware.js +0 -2
  864. package/lib/types/Typing.d.ts +0 -8
  865. package/lib/types/Typing.d.ts.map +0 -1
  866. package/lib/types/Typing.js +0 -2
  867. package/lib/types/TypingIndicatorMiddleware.d.ts +0 -17
  868. package/lib/types/TypingIndicatorMiddleware.d.ts.map +0 -1
  869. package/lib/types/TypingIndicatorMiddleware.js +0 -2
  870. package/lib/types/WebSpeechPonyfill.d.ts +0 -19
  871. package/lib/types/WebSpeechPonyfill.d.ts.map +0 -1
  872. package/lib/types/WebSpeechPonyfill.js +0 -2
  873. package/lib/types/WebSpeechPonyfillFactory.d.ts +0 -6
  874. package/lib/types/WebSpeechPonyfillFactory.d.ts.map +0 -1
  875. package/lib/types/WebSpeechPonyfillFactory.js +0 -2
  876. package/lib/utils/createCustomEvent.d.ts +0 -4
  877. package/lib/utils/createCustomEvent.d.ts.map +0 -1
  878. package/lib/utils/createCustomEvent.js +0 -34
  879. package/lib/utils/findLastIndex.d.ts +0 -2
  880. package/lib/utils/findLastIndex.d.ts.map +0 -1
  881. package/lib/utils/findLastIndex.js +0 -22
  882. package/lib/utils/findMin.d.ts +0 -7
  883. package/lib/utils/findMin.d.ts.map +0 -1
  884. package/lib/utils/findMin.js +0 -46
  885. package/lib/utils/freezeArray.d.ts +0 -8
  886. package/lib/utils/freezeArray.d.ts.map +0 -1
  887. package/lib/utils/freezeArray.js +0 -19
  888. package/lib/utils/isObject.js +0 -12
  889. package/lib/utils/mapMap.d.ts +0 -6
  890. package/lib/utils/mapMap.d.ts.map +0 -1
  891. package/lib/utils/mapMap.js +0 -27
  892. package/lib/utils/normalizeLanguage.d.ts +0 -2
  893. package/lib/utils/normalizeLanguage.d.ts.map +0 -1
  894. package/lib/utils/normalizeLanguage.js +0 -115
  895. package/lib/utils/randomId.d.ts +0 -2
  896. package/lib/utils/randomId.d.ts.map +0 -1
  897. package/lib/utils/randomId.js +0 -15
  898. package/lib/utils/warnOnce.d.ts +0 -2
  899. package/lib/utils/warnOnce.d.ts.map +0 -1
  900. package/lib/utils/warnOnce.js +0 -16
  901. package/src/decorator/index.ts +0 -4
  902. package/src/decorator/private/ActivityBorderDecoratorMiddleware.ts +0 -31
  903. package/src/decorator/private/ActivityDecorator.tsx +0 -31
  904. package/src/decorator/private/DecoratorComposer.tsx +0 -6
  905. package/src/decorator/private/activityDecoratorRequest.ts +0 -6
  906. package/src/decorator/private/createDecoratorComposer.tsx +0 -36
  907. package/src/decorator/private/templateMiddleware.ts +0 -58
  908. package/src/hooks/internal/ErrorBox.js +0 -34
  909. package/src/hooks/internal/SendBoxMiddleware.ts +0 -21
  910. package/src/hooks/internal/SendBoxToolbarMiddleware.ts +0 -21
  911. package/src/hooks/internal/private/templateMiddleware.ts +0 -4
  912. package/src/hooks/internal/useCreateActivityRendererInternal.ts +0 -46
  913. package/src/hooks/internal/useDebugDeps.js +0 -30
  914. package/src/hooks/internal/useErrorBoxClass.js +0 -7
  915. package/src/hooks/middleware/createDefaultGroupActivitiesMiddleware.ts +0 -75
  916. package/src/hooks/useGroupActivities.ts +0 -10
  917. package/src/internal.ts +0 -3
  918. package/src/patchStyleOptionsFromDeprecatedProps.js +0 -14
  919. package/src/providers/ActivityTyping/private/useMemoWithPrevious.ts +0 -17
  920. package/src/types/ActivityMiddleware.ts +0 -36
  921. package/src/types/AttachmentMiddleware.ts +0 -16
  922. package/src/utils/isObject.js +0 -5
  923. package/src/utils/warnOnce.ts +0 -10
  924. /package/dist/{chunk-J6D5YEY6.mjs.map → botframework-webchat-api.graph.mjs.map} +0 -0
@@ -0,0 +1,236 @@
1
+ /** @jest-environment @happy-dom/jest-environment */
2
+ /// <reference types="jest" />
3
+ /// <reference types="node" />
4
+
5
+ import { render, type RenderResult } from '@testing-library/react';
6
+ import type { WebChatActivity } from 'botframework-webchat-core';
7
+ import type { LocalId } from 'botframework-webchat-core/activity.js';
8
+ import React, { type ComponentType } from 'react';
9
+ import { type useActivities as UseActivitiesType } from '../../../hooks';
10
+ import type UseReduceActivitiesType from './useReduceActivities';
11
+
12
+ type UseReduceActivitiesFn = Parameters<typeof UseReduceActivitiesType>[0];
13
+
14
+ const ACTIVITY_TEMPLATE = {
15
+ channelData: {
16
+ 'webchat:internal:local-id': '_:a-00001' as LocalId,
17
+ 'webchat:internal:position': 0,
18
+ 'webchat:sequence-id': 0,
19
+ 'webchat:send-status': undefined
20
+ },
21
+ from: { id: 'bot', role: 'bot' },
22
+ id: 'a-00001',
23
+ text: '',
24
+ timestamp: '2025-03-10T12:34:56.789Z',
25
+ type: 'message'
26
+ } satisfies WebChatActivity & { type: 'message' };
27
+
28
+ describe('setup', () => {
29
+ let HookApp: ComponentType<{ fn: UseReduceActivitiesFn }>;
30
+ let useActivities: jest.Mock<ReturnType<typeof UseActivitiesType>, Parameters<typeof UseActivitiesType>>;
31
+ let useReduceActivities: jest.Mock<
32
+ ReturnType<typeof UseReduceActivitiesType>,
33
+ Parameters<typeof UseReduceActivitiesType>
34
+ >;
35
+ let fn: jest.Mock<ReturnType<UseReduceActivitiesFn>, Parameters<UseReduceActivitiesFn>>;
36
+ let renderResult: RenderResult;
37
+
38
+ beforeEach(() => {
39
+ jest.mock('../../../hooks', () => ({ __esModule: true, useActivities: jest.fn(() => [[]]) }));
40
+
41
+ ({ useActivities } = require('../../../hooks'));
42
+
43
+ useReduceActivities = jest.fn(require('./useReduceActivities').default);
44
+
45
+ fn = jest.fn().mockImplementation((prevResult, activity) => ({
46
+ maxText: prevResult?.maxText > activity['text'] ? prevResult?.maxText : activity['text']
47
+ }));
48
+
49
+ HookApp = ({ fn }) => {
50
+ useReduceActivities(fn);
51
+
52
+ return null;
53
+ };
54
+ });
55
+
56
+ test('reduce nothing', () => {
57
+ render(<HookApp fn={fn} />);
58
+
59
+ expect(fn).toHaveBeenCalledTimes(0);
60
+ });
61
+
62
+ describe('when the first activity is received', () => {
63
+ let firstActivity: WebChatActivity;
64
+
65
+ beforeEach(() => {
66
+ firstActivity = { ...ACTIVITY_TEMPLATE, id: 'a-00001', text: 'Aloha!' };
67
+
68
+ useActivities.mockImplementationOnce(() => [[firstActivity]]);
69
+
70
+ renderResult = render(<HookApp fn={fn} />);
71
+ });
72
+
73
+ describe('fn() should have been called', () => {
74
+ test('once', () => expect(fn).toHaveBeenCalledTimes(1));
75
+ test('with the activity', () =>
76
+ expect(fn).toHaveBeenLastCalledWith(undefined, firstActivity, 0, expect.arrayContaining([])));
77
+ });
78
+
79
+ test('return value should be derived from the first activity', () =>
80
+ expect(useReduceActivities).toHaveLastReturnedWith({ maxText: 'Aloha!' }));
81
+
82
+ describe('when the second activity is received', () => {
83
+ let secondActivity: WebChatActivity;
84
+
85
+ beforeEach(() => {
86
+ secondActivity = { ...ACTIVITY_TEMPLATE, id: 'a-00002', text: 'Hello, World!' };
87
+
88
+ useActivities.mockImplementationOnce(() => [[firstActivity, secondActivity]]);
89
+
90
+ renderResult.rerender(<HookApp fn={fn} />);
91
+ });
92
+
93
+ describe('fn() should have been called', () => {
94
+ test('twice in total', () => expect(fn).toHaveBeenCalledTimes(2));
95
+ test('with the second activity', () =>
96
+ expect(fn).toHaveBeenLastCalledWith({ maxText: 'Aloha!' }, secondActivity, 1, expect.arrayContaining([])));
97
+
98
+ test('return value should be derived from the second activity', () =>
99
+ expect(useReduceActivities).toHaveLastReturnedWith({ maxText: 'Hello, World!' }));
100
+ });
101
+
102
+ describe('when the third activity is inserted between the first and second activity', () => {
103
+ let thirdActivity: WebChatActivity;
104
+
105
+ beforeEach(() => {
106
+ thirdActivity = { ...ACTIVITY_TEMPLATE, id: 'a-00003', text: 'Morning!' };
107
+
108
+ useActivities.mockImplementationOnce(() => [[firstActivity, thirdActivity, secondActivity]]);
109
+
110
+ renderResult.rerender(<HookApp fn={fn} />);
111
+ });
112
+
113
+ describe('fn() should have been called', () => {
114
+ // It should call 2 more times because the first one should be from cache.
115
+ test('4 times in total', () => expect(fn).toHaveBeenCalledTimes(4));
116
+
117
+ test('with the third activity on 3rd call', () =>
118
+ expect(fn).toHaveBeenNthCalledWith(3, { maxText: 'Aloha!' }, thirdActivity, 1, expect.arrayContaining([])));
119
+ test('with the second activity on 4th call', () =>
120
+ expect(fn).toHaveBeenNthCalledWith(
121
+ 4,
122
+ { maxText: 'Morning!' },
123
+ secondActivity,
124
+ 2,
125
+ expect.arrayContaining([])
126
+ ));
127
+ });
128
+
129
+ test('return value should be derived from the third activity', () =>
130
+ expect(useReduceActivities).toHaveLastReturnedWith({ maxText: 'Morning!' }));
131
+
132
+ describe('when all activities are removed', () => {
133
+ beforeEach(() => {
134
+ useActivities.mockImplementationOnce(() => [[]]);
135
+
136
+ renderResult.rerender(<HookApp fn={fn} />);
137
+ });
138
+
139
+ test('should not call fn()', () => expect(fn).toHaveBeenCalledTimes(4));
140
+ test('return value should be undefined', () => expect(useReduceActivities).toHaveLastReturnedWith(undefined));
141
+ });
142
+
143
+ describe('when the third activity is being replaced', () => {
144
+ let fourthActivity: WebChatActivity;
145
+
146
+ beforeEach(() => {
147
+ fourthActivity = { ...ACTIVITY_TEMPLATE, id: 'a-00004', text: 'Good morning!' };
148
+
149
+ useActivities.mockImplementationOnce(() => [[firstActivity, fourthActivity, secondActivity]]);
150
+
151
+ renderResult.rerender(<HookApp fn={fn} />);
152
+ });
153
+
154
+ describe('fn() should have been called', () => {
155
+ // It should call 2 more times because the first one should be from cache.
156
+ test('6 times in total', () => expect(fn).toHaveBeenCalledTimes(6));
157
+
158
+ test('with the fourth activity on 5rd call', () =>
159
+ expect(fn).toHaveBeenNthCalledWith(
160
+ 5,
161
+ { maxText: 'Aloha!' },
162
+ fourthActivity,
163
+ 1,
164
+ expect.arrayContaining([])
165
+ ));
166
+
167
+ test('with the second activity on 6th call', () =>
168
+ expect(fn).toHaveBeenNthCalledWith(
169
+ 6,
170
+ { maxText: 'Good morning!' },
171
+ secondActivity,
172
+ 2,
173
+ expect.arrayContaining([])
174
+ ));
175
+
176
+ test('return value should be derived from the second activity', () =>
177
+ expect(useReduceActivities).toHaveLastReturnedWith({ maxText: 'Hello, World!' }));
178
+ });
179
+ });
180
+ });
181
+
182
+ describe('when the first activity is removed', () => {
183
+ beforeEach(() => {
184
+ useActivities.mockImplementationOnce(() => [[secondActivity]]);
185
+
186
+ renderResult.rerender(<HookApp fn={fn} />);
187
+ });
188
+
189
+ describe('should call fn', () => {
190
+ test('3 times in total', () => expect(fn).toHaveBeenCalledTimes(3));
191
+ test('with the second activity only', () =>
192
+ expect(fn).toHaveBeenLastCalledWith(undefined, secondActivity, 0, expect.arrayContaining([])));
193
+ });
194
+
195
+ test('return value should be derived from the second activity', () =>
196
+ expect(useReduceActivities).toHaveLastReturnedWith({ maxText: 'Hello, World!' }));
197
+ });
198
+
199
+ describe('when the second activity is removed', () => {
200
+ beforeEach(() => {
201
+ useActivities.mockImplementationOnce(() => [[firstActivity]]);
202
+
203
+ renderResult.rerender(<HookApp fn={fn} />);
204
+ });
205
+
206
+ describe('should not call fn()', () => test('once', () => expect(fn).toHaveBeenCalledTimes(2)));
207
+
208
+ test('return value should be derived from the first activity', () =>
209
+ expect(useReduceActivities).toHaveLastReturnedWith({ maxText: 'Aloha!' }));
210
+ });
211
+ });
212
+
213
+ describe('when all activities are removed', () => {
214
+ beforeEach(() => {
215
+ useActivities.mockImplementationOnce(() => [[]]);
216
+
217
+ renderResult.rerender(<HookApp fn={fn} />);
218
+ });
219
+
220
+ test('should not call fn()', () => expect(fn).toHaveBeenCalledTimes(1));
221
+ test('return value should be undefined', () => expect(useReduceActivities).toHaveLastReturnedWith(undefined));
222
+ });
223
+
224
+ describe('when activities are unchanged', () => {
225
+ beforeEach(() => {
226
+ useActivities.mockImplementationOnce(() => [[firstActivity]]);
227
+
228
+ renderResult.rerender(<HookApp fn={fn} />);
229
+ });
230
+
231
+ test('should not call fn()', () => expect(fn).toHaveBeenCalledTimes(1));
232
+ test('return value should be derived from the first activity', () =>
233
+ expect(useReduceActivities).toHaveLastReturnedWith({ maxText: 'Aloha!' }));
234
+ });
235
+ });
236
+ });
@@ -0,0 +1,49 @@
1
+ import { useMemoWithPrevious } from '@msinternal/botframework-webchat-react-hooks';
2
+ import { type WebChatActivity } from 'botframework-webchat-core';
3
+
4
+ import { useActivities } from '../../../hooks';
5
+
6
+ type Entry<T> = Readonly<{
7
+ activity: WebChatActivity;
8
+ value: T | undefined;
9
+ }>;
10
+
11
+ export default function useReduceActivities<T>(
12
+ fn: (prevValue: T, activity: WebChatActivity, index: number, activities: Readonly<WebChatActivity[]>) => T
13
+ ): T {
14
+ const [activities] = useActivities();
15
+
16
+ const state = useMemoWithPrevious<readonly Entry<T>[]>(
17
+ (state = Object.freeze([])) => {
18
+ let changed = activities.length !== state.length;
19
+ let prevValue: T | undefined;
20
+ let shouldRecompute = false;
21
+
22
+ const nextState = activities.map<Entry<T>>((activity, index) => {
23
+ const entry = state[+index];
24
+
25
+ if (!shouldRecompute && Object.is(entry?.activity, activity)) {
26
+ prevValue = entry?.value;
27
+
28
+ // Skips the activity if it has been reduced in the past render loop.
29
+ return entry;
30
+ }
31
+
32
+ changed = true;
33
+ shouldRecompute = true;
34
+
35
+ return Object.freeze({
36
+ activity,
37
+ value: (prevValue = fn(prevValue, activity, index, activities))
38
+ });
39
+ });
40
+
41
+ // Returns the original array if nothing changed.
42
+ return changed ? nextState : state;
43
+ },
44
+ [activities, fn]
45
+ );
46
+
47
+ // eslint-disable-next-line no-magic-numbers
48
+ return state.at(-1)?.value;
49
+ }
@@ -0,0 +1,53 @@
1
+ import React, { memo, useCallback, useEffect, useMemo, useState, type ReactNode } from 'react';
2
+
3
+ import useWebChatAPIContext from '../../hooks/internal/useWebChatAPIContext';
4
+ import CapabilitiesContext from './private/Context';
5
+ import fetchCapabilitiesFromAdapter from './private/fetchCapabilitiesFromAdapter';
6
+ import type { Capabilities } from './types/Capabilities';
7
+
8
+ type Props = Readonly<{ children?: ReactNode | undefined }>;
9
+
10
+ const EMPTY_CAPABILITIES: Capabilities = Object.freeze({});
11
+
12
+ /**
13
+ * Composer that provides capabilities from the adapter via EventTarget pattern.
14
+ *
15
+ * Design principles:
16
+ * 1. Initial fetch: Pulls capabilities from adapter on mount
17
+ * 2. Event-driven updates: Re-fetches when adapter dispatches 'capabilitieschanged' event
18
+ * 3. Stable references: Individual capability objects maintain reference equality if unchanged
19
+ * - This ensures consumers using selectors only re-render when their capability changes
20
+ */
21
+ const CapabilitiesComposer = memo(({ children }: Props) => {
22
+ const { directLine } = useWebChatAPIContext();
23
+
24
+ const getAllCapabilities = useCallback(
25
+ () => fetchCapabilitiesFromAdapter(directLine, EMPTY_CAPABILITIES).capabilities,
26
+ [directLine]
27
+ );
28
+
29
+ const [capabilities, setCapabilities] = useState<Capabilities>(() => getAllCapabilities());
30
+
31
+ useEffect(() => {
32
+ const handleCapabilitiesChange = () => {
33
+ setCapabilities(prevCapabilities => {
34
+ const { capabilities, hasChanged } = fetchCapabilitiesFromAdapter(directLine, prevCapabilities);
35
+ return hasChanged ? capabilities : prevCapabilities;
36
+ });
37
+ };
38
+
39
+ if (typeof directLine?.addEventListener === 'function') {
40
+ directLine.addEventListener('capabilitieschanged', handleCapabilitiesChange);
41
+
42
+ return () => directLine.removeEventListener('capabilitieschanged', handleCapabilitiesChange);
43
+ }
44
+ }, [directLine]);
45
+
46
+ const contextValue = useMemo(() => Object.freeze({ capabilities }), [capabilities]);
47
+
48
+ return <CapabilitiesContext.Provider value={contextValue}>{children}</CapabilitiesContext.Provider>;
49
+ });
50
+
51
+ CapabilitiesComposer.displayName = 'CapabilitiesComposer';
52
+
53
+ export default CapabilitiesComposer;
@@ -0,0 +1,13 @@
1
+ import { createContext } from 'react';
2
+ import type { Capabilities } from '../types/Capabilities';
3
+
4
+ type CapabilitiesContextType = Readonly<{
5
+ capabilities: Capabilities;
6
+ }>;
7
+
8
+ const CapabilitiesContext = createContext<CapabilitiesContextType | undefined>(undefined);
9
+
10
+ CapabilitiesContext.displayName = 'CapabilitiesContext';
11
+
12
+ export default CapabilitiesContext;
13
+ export type { CapabilitiesContextType };
@@ -0,0 +1,45 @@
1
+ import type { Capabilities } from '../types/Capabilities';
2
+
3
+ /**
4
+ * Descriptor for a capability that can be fetched from the adapter.
5
+ */
6
+ export type CapabilityDescriptor<K extends keyof Capabilities> = {
7
+ /** The key in the Capabilities object */
8
+ readonly key: K;
9
+ /** The getter function name on the adapter (e.g., 'getVoiceConfiguration') */
10
+ readonly getterName: string;
11
+ /**
12
+ * Custom equality comparator for this capability.
13
+ * If not provided, uses shallow object comparison.
14
+ * Return true if values are equal (should reuse previous reference).
15
+ */
16
+ readonly isEqual?: (a: Capabilities[K], b: Capabilities[K]) => boolean;
17
+ };
18
+
19
+ /**
20
+ * Registry of all capabilities.
21
+ *
22
+ * To add a new capability:
23
+ * 1. Add type to Capabilities interface in types/Capabilities.ts
24
+ * 2. Add entry here with key, getterName, and optional custom isEqual
25
+ *
26
+ * @example
27
+ * // Simple capability (uses default shallowEqual)
28
+ * { key: 'voiceConfiguration', getterName: 'getVoiceConfiguration' }
29
+ *
30
+ * @example
31
+ * // Capability with custom equality check
32
+ * {
33
+ * key: 'complexConfig',
34
+ * getterName: 'getComplexConfig',
35
+ * isEqual: (a, b) => a?.nested?.value === b?.nested?.value
36
+ * }
37
+ */
38
+ const CAPABILITY_REGISTRY: readonly CapabilityDescriptor<keyof Capabilities>[] = Object.freeze([
39
+ {
40
+ key: 'voiceConfiguration',
41
+ getterName: 'getVoiceConfiguration'
42
+ }
43
+ ]);
44
+
45
+ export default CAPABILITY_REGISTRY;
@@ -0,0 +1,59 @@
1
+ import { DirectLineJSBotConnection, isForbiddenPropertyName } from 'botframework-webchat-core';
2
+ import type { Capabilities } from '../types/Capabilities';
3
+ import CAPABILITY_REGISTRY from './capabilityRegistry';
4
+ import shallowEqual from './shallowEqual';
5
+
6
+ type FetchResult = {
7
+ capabilities: Capabilities;
8
+ hasChanged: boolean;
9
+ };
10
+
11
+ /**
12
+ * Fetches all capabilities from the adapter based on the registry.
13
+ * Returns a new capabilities object with values fetched from the adapter.
14
+ */
15
+ export default function fetchCapabilitiesFromAdapter(
16
+ directLine: DirectLineJSBotConnection,
17
+ prevCapabilities: Capabilities
18
+ ): FetchResult {
19
+ let hasChanged = false;
20
+
21
+ const entries: [string, unknown][] = [];
22
+
23
+ for (const descriptor of CAPABILITY_REGISTRY) {
24
+ const { key, getterName, isEqual = shallowEqual } = descriptor;
25
+
26
+ if (isForbiddenPropertyName(key) || isForbiddenPropertyName(getterName)) {
27
+ continue;
28
+ }
29
+
30
+ // eslint-disable-next-line security/detect-object-injection
31
+ const getter = directLine?.[getterName];
32
+
33
+ if (typeof getter === 'function') {
34
+ try {
35
+ const fetchedValue = getter.call(directLine);
36
+ // eslint-disable-next-line security/detect-object-injection
37
+ const prevValue = prevCapabilities[key];
38
+
39
+ if (fetchedValue) {
40
+ if (typeof prevValue !== 'undefined' && isEqual(prevValue, fetchedValue)) {
41
+ entries.push([key, prevValue]);
42
+ } else {
43
+ entries.push([key, Object.freeze({ ...fetchedValue })]);
44
+ hasChanged = true;
45
+ }
46
+ } else if (typeof prevValue !== 'undefined') {
47
+ hasChanged = true;
48
+ }
49
+ } catch (error) {
50
+ console.warn(`botframework-webchat: Error calling capability ${getterName}:`, error);
51
+ }
52
+ }
53
+ }
54
+
55
+ return {
56
+ capabilities: Object.freeze(Object.fromEntries(entries)) as Capabilities,
57
+ hasChanged
58
+ };
59
+ }
@@ -0,0 +1,18 @@
1
+ import { isForbiddenPropertyName } from 'botframework-webchat-core';
2
+
3
+ // TODO: [P2] Move this file to `base` package.
4
+ export default function shallowEqual(x, y) {
5
+ if (x === y) {
6
+ return true;
7
+ }
8
+
9
+ const xKeys = Object.keys(x);
10
+ const yKeys = Object.keys(y);
11
+
12
+ return (
13
+ xKeys.length === yKeys.length &&
14
+ // Mitigated through denylisting.
15
+ // eslint-disable-next-line security/detect-object-injection
16
+ xKeys.every(key => !isForbiddenPropertyName(key) && yKeys.includes(key) && x[key] === y[key])
17
+ );
18
+ }
@@ -0,0 +1,12 @@
1
+ import { useContext } from 'react';
2
+ import CapabilitiesContext, { type CapabilitiesContextType } from './Context';
3
+
4
+ export default function useCapabilitiesContext(): CapabilitiesContextType {
5
+ const context = useContext(CapabilitiesContext);
6
+
7
+ if (!context) {
8
+ throw new Error('botframework-webchat internal: This hook can only be used under <CapabilitiesComposer>.');
9
+ }
10
+
11
+ return context;
12
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * All capabilities are optional as they depend on adapter/server support.
3
+ */
4
+ type Capabilities = Readonly<{
5
+ voiceConfiguration?: VoiceConfiguration | undefined;
6
+ }>;
7
+
8
+ /**
9
+ * Optional for adapter/server to provide these configs for speech-to-speech.
10
+ */
11
+ type VoiceConfiguration = Readonly<{
12
+ chunkIntervalMs: number;
13
+ sampleRate: number;
14
+ }>;
15
+
16
+ export type { Capabilities, VoiceConfiguration };
@@ -0,0 +1,25 @@
1
+ import { useMemo, useRef } from 'react';
2
+ import useCapabilitiesContext from './private/useContext';
3
+ import type { Capabilities } from './types/Capabilities';
4
+
5
+ /**
6
+ * Hook to access adapter capabilities with a selector function.
7
+ * Only triggers re-render when the selected value changes (shallow comparison).
8
+ *
9
+ * @example
10
+ * // Get voice configuration only
11
+ * const voiceConfig = useCapabilities(caps => caps.voiceConfiguration);
12
+ */
13
+ export default function useCapabilities<T>(selector: (capabilities: Capabilities) => T): T {
14
+ const { capabilities } = useCapabilitiesContext();
15
+ const selectedValue = selector(capabilities);
16
+ const prevSelectedValueRef = useRef<T>(selectedValue);
17
+
18
+ return useMemo(() => {
19
+ if (Object.is(prevSelectedValueRef.current, selectedValue)) {
20
+ return prevSelectedValueRef.current;
21
+ }
22
+ prevSelectedValueRef.current = selectedValue;
23
+ return selectedValue;
24
+ }, [selectedValue]);
25
+ }
@@ -0,0 +1,116 @@
1
+ import { type WebChatActivity } from 'botframework-webchat-core';
2
+ import React, { memo, useCallback, useMemo, type ReactNode } from 'react';
3
+ import { useRefFrom } from 'use-ref-from';
4
+
5
+ import applyMiddleware from '../../hooks/middleware/applyMiddleware';
6
+ import useStyleOptions from '../../hooks/useStyleOptions';
7
+ import type GroupActivitiesMiddleware from '../../types/GroupActivitiesMiddleware';
8
+ import { type GroupActivities } from '../../types/GroupActivitiesMiddleware';
9
+ import usePonyfill from '../Ponyfill/usePonyfill';
10
+ import createDefaultGroupActivitiesMiddleware from './private/createDefaultGroupActivitiesMiddleware';
11
+ import GroupActivitiesContext, { type GroupActivitiesContextType } from './private/GroupActivitiesContext';
12
+ import isGroupingValid from './private/isGroupingValid';
13
+
14
+ type GroupActivitiesComposerProps = Readonly<{
15
+ children?: ReactNode | undefined;
16
+ groupActivitiesMiddleware: readonly GroupActivitiesMiddleware[] | undefined;
17
+ }>;
18
+
19
+ function GroupActivitiesComposer({ children, groupActivitiesMiddleware }: GroupActivitiesComposerProps) {
20
+ const [ponyfill] = usePonyfill();
21
+ const [{ groupActivitiesBy, groupTimestamp }] = useStyleOptions();
22
+
23
+ const runMiddleware = useMemo<(type?: string | undefined) => GroupActivities>(
24
+ () =>
25
+ applyMiddleware(
26
+ 'group activities',
27
+ ...(groupActivitiesMiddleware ?? []),
28
+ ...createDefaultGroupActivitiesMiddleware({ groupTimestamp, ponyfill }),
29
+ () => () => () => ({})
30
+ ),
31
+ [groupActivitiesMiddleware, groupTimestamp, ponyfill]
32
+ );
33
+
34
+ const runAllMiddleware = useMemo(() => runMiddleware(), [runMiddleware]);
35
+
36
+ const groupActivities: GroupActivities = useCallback(
37
+ ({ activities }: { activities: readonly WebChatActivity[] }) => {
38
+ const results: Readonly<{
39
+ [key: string]: readonly (readonly WebChatActivity[])[];
40
+ }> = runAllMiddleware({ activities }) || Object.freeze({});
41
+ const validatedResults = new Map<string, readonly (readonly WebChatActivity[])[]>();
42
+
43
+ for (const [name, result] of Object.entries(results)) {
44
+ if (isGroupingValid(activities, result)) {
45
+ validatedResults.set(name, result);
46
+ } else {
47
+ validatedResults.set(
48
+ name,
49
+ activities.map(activity => Object.freeze([activity]))
50
+ );
51
+ }
52
+ }
53
+
54
+ return Object.fromEntries(validatedResults);
55
+ },
56
+ [runAllMiddleware]
57
+ );
58
+
59
+ const groupActivitiesByGroup: Map<string, GroupActivities> = useMemo(
60
+ () =>
61
+ new Map<string, GroupActivities>(
62
+ groupActivitiesBy.map(groupingName => [groupingName, runMiddleware(groupingName)])
63
+ ),
64
+ [groupActivitiesBy, runMiddleware]
65
+ );
66
+
67
+ const groupActivitiesByRef = useRefFrom(groupActivitiesBy);
68
+
69
+ // When `groupActivitiesMiddleware` or `styleOptions.groupActivities` changed, the callback should be invalidated.
70
+ // The invalidation will help hook callers to re-render.
71
+ const groupActivitiesByName = useCallback<
72
+ (activities: readonly WebChatActivity[], groupingName: string) => readonly (readonly WebChatActivity[])[]
73
+ >(
74
+ (activities, groupingName) => {
75
+ const group = groupActivitiesByGroup.get(groupingName);
76
+
77
+ if (group) {
78
+ const result: ReadonlyMap<string, readonly (readonly WebChatActivity[])[]> = new Map(
79
+ Object.entries(group({ activities }) || {})
80
+ );
81
+
82
+ if (result.has(groupingName)) {
83
+ const groupingResult = result.get(groupingName);
84
+
85
+ if (isGroupingValid(activities, groupingResult)) {
86
+ return groupingResult;
87
+ }
88
+ } else {
89
+ console.warn(
90
+ `botframework-webchat: groupActivitiesMiddleware('${groupingName}') does not return any results`
91
+ );
92
+ }
93
+ } else {
94
+ console.warn(
95
+ `botframework-webchat: useGroupActivitiesBy can only be called with one of ${groupActivitiesByRef.current}, however "${groupingName}" was passed instead`
96
+ );
97
+ }
98
+
99
+ return Object.freeze(activities.map(activity => Object.freeze([activity])));
100
+ },
101
+ [groupActivitiesByGroup, groupActivitiesByRef]
102
+ );
103
+
104
+ const context = useMemo<GroupActivitiesContextType>(
105
+ () => ({
106
+ groupActivities,
107
+ groupActivitiesByName
108
+ }),
109
+ [groupActivities, groupActivitiesByName]
110
+ );
111
+
112
+ return <GroupActivitiesContext.Provider value={context}>{children}</GroupActivitiesContext.Provider>;
113
+ }
114
+
115
+ export default memo(GroupActivitiesComposer);
116
+ export { type GroupActivitiesComposerProps };
@@ -0,0 +1,23 @@
1
+ import { type WebChatActivity } from 'botframework-webchat-core';
2
+ import { createContext } from 'react';
3
+
4
+ type GroupActivitiesContextType = {
5
+ groupActivities: (options: { activities: readonly WebChatActivity[] }) => Readonly<{
6
+ [key: string]: readonly (readonly WebChatActivity[])[];
7
+ }>;
8
+ groupActivitiesByName: (
9
+ activities: readonly WebChatActivity[],
10
+ groupingName: string
11
+ ) => readonly (readonly WebChatActivity[])[];
12
+ };
13
+
14
+ const GroupActivitiesContext = createContext<GroupActivitiesContextType>(
15
+ new Proxy({} as GroupActivitiesContextType, {
16
+ get() {
17
+ throw new Error('botframework-webchat: This hook can only be used under <GroupActivitiesContext>');
18
+ }
19
+ })
20
+ );
21
+
22
+ export default GroupActivitiesContext;
23
+ export { type GroupActivitiesContextType };