botframework-webchat-api 4.18.2 → 4.19.1-main.20260526.b9ad8fa

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,113 @@
1
+ import { getOrgSchemaMessage, type GlobalScopePonyfill, type WebChatActivity } from 'botframework-webchat-core';
2
+ import { IdentifierSchema } from 'botframework-webchat-core/graph.js';
3
+ import { safeParse } from 'valibot';
4
+
5
+ import { querySendStatusFromOutgoingActivity } from 'botframework-webchat-core/activity.js';
6
+ import type GroupActivitiesMiddleware from '../../../types/GroupActivitiesMiddleware';
7
+ import { type SendStatus } from '../../../types/SendStatus';
8
+
9
+ function bin<T>(items: readonly T[], grouping: (last: T, current: T) => boolean): readonly (readonly T[])[] {
10
+ let lastBin: T[];
11
+ const bins: T[][] = [];
12
+ let lastItem: T;
13
+
14
+ for (const item of items) {
15
+ if (lastItem && grouping(lastItem, item)) {
16
+ lastBin.push(item);
17
+ } else {
18
+ lastBin = [item];
19
+ bins.push(lastBin);
20
+ }
21
+
22
+ lastItem = item;
23
+ }
24
+
25
+ for (const bin in bins) {
26
+ Object.freeze(bin);
27
+ }
28
+
29
+ return Object.freeze(bins);
30
+ }
31
+
32
+ function isSending(activity: WebChatActivity): SendStatus | undefined {
33
+ if (activity.from.role === 'user') {
34
+ return querySendStatusFromOutgoingActivity(activity);
35
+ }
36
+ }
37
+
38
+ function createShouldGroupTimestamp(groupTimestamp: boolean | number, { Date }: GlobalScopePonyfill) {
39
+ return (activityX: WebChatActivity, activityY: WebChatActivity): boolean => {
40
+ if (groupTimestamp === false) {
41
+ // Hide timestamp for all activities.
42
+ return true;
43
+ } else if (activityX && activityY) {
44
+ if (isSending(activityX) !== isSending(activityY)) {
45
+ return false;
46
+ }
47
+
48
+ groupTimestamp = typeof groupTimestamp === 'number' ? groupTimestamp : Infinity;
49
+
50
+ const timeX = new Date(activityX.timestamp).getTime();
51
+ const timeY = new Date(activityY.timestamp).getTime();
52
+
53
+ return Math.abs(timeX - timeY) <= groupTimestamp;
54
+ }
55
+
56
+ return false;
57
+ };
58
+ }
59
+
60
+ function shouldGroupSender(x: WebChatActivity, y: WebChatActivity): boolean {
61
+ const {
62
+ from: { role: roleX, id: idX }
63
+ } = x;
64
+ const {
65
+ from: { role: roleY, id: idY }
66
+ } = y;
67
+ return roleX === roleY && idX === idY;
68
+ }
69
+
70
+ export default function createDefaultGroupActivitiesMiddleware({
71
+ groupTimestamp,
72
+ ponyfill
73
+ }: Readonly<{
74
+ groupTimestamp: boolean | number;
75
+ ponyfill: GlobalScopePonyfill;
76
+ }>): readonly GroupActivitiesMiddleware[] {
77
+ return Object.freeze([
78
+ type =>
79
+ type === 'sender' || typeof type === 'undefined'
80
+ ? next =>
81
+ ({ activities }) => ({ ...next({ activities }), sender: bin(activities, shouldGroupSender) })
82
+ : undefined,
83
+ type =>
84
+ type === 'status' || typeof type === 'undefined'
85
+ ? next =>
86
+ ({ activities }) => ({
87
+ ...next({ activities }),
88
+ status: bin(activities, createShouldGroupTimestamp(groupTimestamp, ponyfill))
89
+ })
90
+ : undefined,
91
+ type =>
92
+ type === 'part'
93
+ ? next =>
94
+ ({ activities }) => {
95
+ const messages = activities.map(activity => [getOrgSchemaMessage(activity.entities), activity] as const);
96
+
97
+ return {
98
+ ...next({ activities }),
99
+ part: bin(messages, ([last], [current]) => {
100
+ const lastPartIdResult = safeParse(IdentifierSchema, last?.isPartOf[0]?.['@id']);
101
+ const currentPartIdResult = safeParse(IdentifierSchema, current?.isPartOf[0]?.['@id']);
102
+
103
+ return (
104
+ lastPartIdResult.success &&
105
+ currentPartIdResult.success &&
106
+ lastPartIdResult.output === currentPartIdResult.output
107
+ );
108
+ }).map(bin => bin.map(([, activity]) => activity))
109
+ };
110
+ }
111
+ : undefined
112
+ ]);
113
+ }
@@ -0,0 +1,41 @@
1
+ import { type WebChatActivity } from 'botframework-webchat-core';
2
+
3
+ export default function isGroupingValid(
4
+ source: readonly WebChatActivity[],
5
+ bins: readonly (readonly WebChatActivity[])[]
6
+ ): boolean {
7
+ const set = new Set(source);
8
+
9
+ if (source.length !== set.size) {
10
+ console.warn('botframework-webchat: Cannot validate activity grouping because some activities are duplicated');
11
+
12
+ return false;
13
+ }
14
+
15
+ for (const bin of bins) {
16
+ for (const activityInBin of bin) {
17
+ if (!set.has(activityInBin)) {
18
+ console.warn(
19
+ 'botframework-webchat: All binned items must be originate from the source list, check groupingActivityMiddleware to make sure it bin from the source list',
20
+ {
21
+ activityInBin
22
+ }
23
+ );
24
+
25
+ return false;
26
+ }
27
+
28
+ set.delete(activityInBin);
29
+ }
30
+ }
31
+
32
+ if (set.size) {
33
+ console.warn(
34
+ 'botframework-webchat: Not every activity is binned, check groupingActivityMiddleware to make sure it is binning every activity passed'
35
+ );
36
+
37
+ return false;
38
+ }
39
+
40
+ return true;
41
+ }
@@ -0,0 +1,6 @@
1
+ import { useContext } from 'react';
2
+ import GroupActivitiesContext, { type GroupActivitiesContextType } from './GroupActivitiesContext';
3
+
4
+ export default function useGroupActivitiesContext(): GroupActivitiesContextType {
5
+ return useContext(GroupActivitiesContext);
6
+ }
@@ -0,0 +1,20 @@
1
+ import { type WebChatActivity } from 'botframework-webchat-core';
2
+
3
+ import useGroupActivitiesContext from './private/useGroupActivitiesContext';
4
+
5
+ type GroupedActivities = readonly (readonly WebChatActivity[])[];
6
+
7
+ /**
8
+ * This hook will return a callback function. When called with `activities`, the callback function will run the `groupActivitiesMiddleware` and will return all groupings.
9
+ *
10
+ * @deprecated This function is deprecated and will be removed on or after 2027-05-04. Developers should migrate to [`useGroupActivitiesByName`](#usegroupactivitiesbyname) for performance reason.
11
+ */
12
+ export default function useGroupActivities(): ({
13
+ activities
14
+ }: Readonly<{
15
+ activities: readonly WebChatActivity[];
16
+ }>) => Readonly<{
17
+ [key: string]: GroupedActivities;
18
+ }> {
19
+ return useGroupActivitiesContext().groupActivities;
20
+ }
@@ -0,0 +1,17 @@
1
+ import { type WebChatActivity } from 'botframework-webchat-core';
2
+
3
+ import useGroupActivitiesContext from './private/useGroupActivitiesContext';
4
+
5
+ /**
6
+ * This hook will return a callback function. When called with `activities`, the callback function will run the `groupActivitiesMiddleware` for the specified grouping name.
7
+ *
8
+ * Unlike the [`useGroupActivities`](#usegroupactivities) hook which provide result for all groupings, this hook only provide result for the specified grouping name and the grouping name must be one of the name specified in `styleOptions.groupActivitiesBy`.
9
+ *
10
+ * @returns Result of `groupActivitiesMiddleware` for the specified grouping name
11
+ */
12
+ export default function useGroupActivitiesBy(): (
13
+ activities: readonly WebChatActivity[],
14
+ name: string
15
+ ) => readonly (readonly WebChatActivity[])[] {
16
+ return useGroupActivitiesContext().groupActivitiesByName;
17
+ }
@@ -0,0 +1,20 @@
1
+ import React, { type ReactNode } from 'react';
2
+ import { VoiceHandlerBridge } from './private/VoiceHandlerBridge';
3
+ import { VoiceRecorderBridge } from './private/VoiceRecorderBridge';
4
+
5
+ /**
6
+ * SpeechToSpeechComposer sets up the speech-to-speech infrastructure.
7
+ *
8
+ * This component renders invisible bridge components that:
9
+ * 1. VoiceHandlerBridge - registers audio player functions with Redux
10
+ * 2. VoiceRecorderBridge - reacts to recording state and manages microphone
11
+ *
12
+ * Use the `useVoiceState`, `useStartVoice`, and `useStopVoice` hooks to access state and controls.
13
+ */
14
+ export const SpeechToSpeechComposer: React.FC<{ readonly children: ReactNode }> = ({ children }) => (
15
+ <React.Fragment>
16
+ <VoiceHandlerBridge />
17
+ <VoiceRecorderBridge />
18
+ {children}
19
+ </React.Fragment>
20
+ );
@@ -0,0 +1,23 @@
1
+ import { useEffect } from 'react';
2
+ import { useAudioPlayer } from './useAudioPlayer';
3
+ import useRegisterVoiceHandler from '../../../hooks/internal/useRegisterVoiceHandler';
4
+ import useShouldShowMicrophoneButton from '../../../hooks/internal/useShouldShowMicrophoneButton';
5
+
6
+ /**
7
+ * VoiceHandlerBridge is an invisible component that registers the audio player
8
+ * functions (queueAudio, stopAllAudio) with Redux
9
+ */
10
+ export const VoiceHandlerBridge = () => {
11
+ const { queueAudio, stopAllAudio } = useAudioPlayer();
12
+ const registerVoiceHandler = useRegisterVoiceHandler();
13
+ const shouldShowMicrophoneButton = useShouldShowMicrophoneButton();
14
+
15
+ useEffect(() => {
16
+ if (!shouldShowMicrophoneButton) {
17
+ return;
18
+ }
19
+ return registerVoiceHandler({ queueAudio, stopAllAudio });
20
+ }, [queueAudio, registerVoiceHandler, shouldShowMicrophoneButton, stopAllAudio]);
21
+
22
+ return null;
23
+ };
@@ -0,0 +1,49 @@
1
+ import { useEffect, useCallback } from 'react';
2
+ import { useRecorder } from './useRecorder';
3
+ import usePostVoiceActivity from '../../../hooks/internal/usePostVoiceActivity';
4
+ import useVoiceRecordingMuted from '../../../hooks/useVoiceRecordingMuted';
5
+ import useVoiceState from '../../../hooks/useVoiceState';
6
+
7
+ /**
8
+ * VoiceRecorderBridge is an invisible component that bridges the Redux recording state
9
+ * with the actual microphone recording functionality.
10
+ */
11
+ export function VoiceRecorderBridge(): null {
12
+ const [muted] = useVoiceRecordingMuted();
13
+ const [voiceState] = useVoiceState();
14
+ const postVoiceActivity = usePostVoiceActivity();
15
+
16
+ // Derive recording state from voiceState - recording is active when not idle
17
+ const recording = voiceState !== 'idle';
18
+
19
+ const handleAudioChunk = useCallback(
20
+ (base64: string, timestamp: string) => {
21
+ postVoiceActivity({
22
+ name: 'media.chunk',
23
+ type: 'event',
24
+ value: {
25
+ contentType: 'audio/webm',
26
+ content: base64,
27
+ timestamp
28
+ }
29
+ } as any);
30
+ },
31
+ [postVoiceActivity]
32
+ );
33
+
34
+ const { mute, record } = useRecorder(handleAudioChunk);
35
+
36
+ useEffect(() => {
37
+ if (recording) {
38
+ return record();
39
+ }
40
+ }, [record, recording]);
41
+
42
+ useEffect(() => {
43
+ if (muted) {
44
+ return mute();
45
+ }
46
+ }, [muted, mute]);
47
+
48
+ return null;
49
+ }
@@ -0,0 +1,355 @@
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 React, { type ComponentType } from 'react';
7
+ import { useAudioPlayer } from './useAudioPlayer';
8
+
9
+ // Mock setVoiceState function
10
+ const mockSetVoiceState = jest.fn();
11
+
12
+ // Mock useVoiceStateWritable hook - returns [state, setVoiceState] array
13
+ jest.mock('../../../hooks/internal/useVoiceStateWritable', () => ({
14
+ __esModule: true,
15
+ default: jest.fn(() => [undefined, mockSetVoiceState])
16
+ }));
17
+
18
+ jest.mock('../../Capabilities/useCapabilities', () => ({
19
+ __esModule: true,
20
+ default: jest.fn((selector: (caps: { voiceConfiguration?: { sampleRate: number } }) => unknown) =>
21
+ selector({ voiceConfiguration: { sampleRate: 24000 } })
22
+ )
23
+ }));
24
+
25
+ // Mock AudioContext and related APIs
26
+ const mockAudioContext = {
27
+ close: jest.fn().mockResolvedValue(undefined),
28
+ createBuffer: jest.fn(),
29
+ createBufferSource: jest.fn(),
30
+ currentTime: 0,
31
+ destination: {},
32
+ resume: jest.fn().mockResolvedValue(undefined),
33
+ sampleRate: 24000,
34
+ state: 'running'
35
+ };
36
+
37
+ const mockAudioBuffer = {
38
+ duration: 0.1, // 100ms
39
+ getChannelData: jest.fn().mockReturnValue(new Float32Array(2400))
40
+ };
41
+
42
+ // Factory to create unique buffer source mocks
43
+ const createMockBufferSource = () => ({
44
+ buffer: null as typeof mockAudioBuffer | null,
45
+ connect: jest.fn(),
46
+ disconnect: jest.fn(),
47
+ onended: null as (() => void) | null,
48
+ start: jest.fn(),
49
+ stop: jest.fn()
50
+ });
51
+
52
+ // Track all created buffer sources for assertions
53
+ let createdBufferSources: ReturnType<typeof createMockBufferSource>[] = [];
54
+
55
+ // Mock global AudioContext
56
+ global.AudioContext = jest.fn(() => mockAudioContext) as unknown as typeof AudioContext;
57
+ global.atob = jest.fn(str => str); // Simple mock for base64 decode
58
+
59
+ type UseAudioPlayerReturn = ReturnType<typeof useAudioPlayer>;
60
+
61
+ describe('useAudioPlayer', () => {
62
+ let HookApp: ComponentType;
63
+ let hookData: UseAudioPlayerReturn | undefined;
64
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
65
+ let renderResult: RenderResult;
66
+ const originalAudioContext = global.AudioContext;
67
+
68
+ beforeEach(() => {
69
+ jest.clearAllMocks();
70
+ createdBufferSources = [];
71
+ mockAudioContext.currentTime = 0;
72
+ mockAudioContext.createBuffer.mockReturnValue(mockAudioBuffer);
73
+ mockAudioContext.createBufferSource.mockImplementation(() => {
74
+ const source = createMockBufferSource();
75
+ createdBufferSources.push(source);
76
+ return source;
77
+ });
78
+
79
+ HookApp = () => {
80
+ hookData = useAudioPlayer();
81
+ return null;
82
+ };
83
+ });
84
+
85
+ afterEach(() => {
86
+ global.AudioContext = originalAudioContext;
87
+ });
88
+
89
+ describe('Initialization', () => {
90
+ test('should return queueAudio and stopAllAudio functions', () => {
91
+ render(<HookApp />);
92
+
93
+ expect(typeof hookData?.queueAudio).toBe('function');
94
+ expect(typeof hookData?.stopAllAudio).toBe('function');
95
+ });
96
+
97
+ test('should create AudioContext on first queueAudio call', async () => {
98
+ render(<HookApp />);
99
+
100
+ await hookData?.queueAudio('dGVzdA=='); // base64 for 'test'
101
+
102
+ expect(AudioContext).toHaveBeenCalledWith({ sampleRate: 24000 });
103
+ });
104
+
105
+ test('should reuse existing AudioContext on subsequent calls', async () => {
106
+ render(<HookApp />);
107
+
108
+ await hookData?.queueAudio('dGVzdA==');
109
+ await hookData?.queueAudio('dGVzdDI=');
110
+
111
+ expect(AudioContext).toHaveBeenCalledTimes(1);
112
+ });
113
+ });
114
+
115
+ describe('Audio playback', () => {
116
+ beforeEach(() => {
117
+ renderResult = render(<HookApp />);
118
+ });
119
+
120
+ test('should process base64 audio data correctly', async () => {
121
+ await hookData?.queueAudio('dGVzdA==');
122
+
123
+ expect(global.atob).toHaveBeenCalledWith('dGVzdA==');
124
+ expect(mockAudioContext.createBuffer).toHaveBeenCalledWith(1, expect.any(Number), 24000);
125
+ expect(mockAudioContext.createBufferSource).toHaveBeenCalled();
126
+ });
127
+
128
+ test('should set up audio buffer source correctly', async () => {
129
+ await hookData?.queueAudio('dGVzdA==');
130
+
131
+ const [source] = createdBufferSources;
132
+ expect(source.connect).toHaveBeenCalledWith(mockAudioContext.destination);
133
+ expect(source.start).toHaveBeenCalled();
134
+ expect(source.buffer).toBe(mockAudioBuffer);
135
+ });
136
+
137
+ test('should resume AudioContext if needed', async () => {
138
+ await hookData?.queueAudio('dGVzdA==');
139
+
140
+ expect(mockAudioContext.resume).toHaveBeenCalled();
141
+ });
142
+
143
+ test('should queue multiple audio chunks correctly', async () => {
144
+ mockAudioBuffer.duration = 0.1; // 100ms
145
+
146
+ await hookData?.queueAudio('dGVzdA==');
147
+ await hookData?.queueAudio('dGVzdDI=');
148
+
149
+ expect(createdBufferSources).toHaveLength(2);
150
+ // First chunk starts at currentTime (0), second at 0.1
151
+ expect(createdBufferSources[0].start).toHaveBeenCalledWith(0);
152
+ expect(createdBufferSources[1].start).toHaveBeenCalledWith(0.1);
153
+ });
154
+ });
155
+
156
+ describe('Voice state management', () => {
157
+ beforeEach(() => {
158
+ renderResult = render(<HookApp />);
159
+ });
160
+
161
+ test('should set voice state to bot_speaking on first chunk', async () => {
162
+ mockAudioContext.currentTime = 0;
163
+
164
+ await hookData?.queueAudio('dGVzdA==');
165
+
166
+ expect(mockSetVoiceState).toHaveBeenCalledWith('bot_speaking');
167
+ });
168
+
169
+ test('should not set bot_speaking on subsequent chunks while playing', async () => {
170
+ mockAudioContext.currentTime = 0;
171
+ mockAudioBuffer.duration = 0.1;
172
+
173
+ await hookData?.queueAudio('dGVzdA=='); // First chunk
174
+ mockSetVoiceState.mockClear();
175
+
176
+ await hookData?.queueAudio('dGVzdDI='); // Second chunk (while first is still playing)
177
+
178
+ expect(mockSetVoiceState).not.toHaveBeenCalledWith('bot_speaking');
179
+ });
180
+
181
+ test('should set voice state to listening when last audio ends', async () => {
182
+ await hookData?.queueAudio('dGVzdA==');
183
+ mockSetVoiceState.mockClear();
184
+
185
+ // Simulate audio ended
186
+ const [source] = createdBufferSources;
187
+ if (source.onended) {
188
+ source.onended();
189
+ }
190
+
191
+ expect(mockSetVoiceState).toHaveBeenCalledWith('listening');
192
+ });
193
+
194
+ test('should only trigger listening on the last source ended', async () => {
195
+ mockAudioBuffer.duration = 0.1;
196
+
197
+ await hookData?.queueAudio('dGVzdA==');
198
+ await hookData?.queueAudio('dGVzdDI=');
199
+ mockSetVoiceState.mockClear();
200
+
201
+ const [firstSource, lastSource] = createdBufferSources;
202
+
203
+ // Simulate first chunk ended (should not trigger listening)
204
+ if (firstSource.onended) {
205
+ firstSource.onended();
206
+ }
207
+
208
+ expect(mockSetVoiceState).not.toHaveBeenCalledWith('listening');
209
+
210
+ // Simulate last chunk ended (should trigger listening)
211
+ if (lastSource.onended) {
212
+ lastSource.onended();
213
+ }
214
+
215
+ expect(mockSetVoiceState).toHaveBeenCalledWith('listening');
216
+ });
217
+ });
218
+
219
+ describe('Audio cleanup', () => {
220
+ beforeEach(() => {
221
+ renderResult = render(<HookApp />);
222
+ });
223
+
224
+ test('should clean up buffer source on ended', async () => {
225
+ await hookData?.queueAudio('dGVzdA==');
226
+
227
+ const [source] = createdBufferSources;
228
+ // Simulate audio ended
229
+ if (source.onended) {
230
+ source.onended();
231
+ }
232
+
233
+ expect(source.disconnect).toHaveBeenCalled();
234
+ expect(source.buffer).toBeNull();
235
+ });
236
+
237
+ test('should stop all audio and close context', async () => {
238
+ await hookData?.queueAudio('dGVzdA==');
239
+
240
+ hookData?.stopAllAudio();
241
+
242
+ expect(mockAudioContext.close).toHaveBeenCalled();
243
+ });
244
+
245
+ test('should clear lastSourceRef onended callback on stop', async () => {
246
+ await hookData?.queueAudio('dGVzdA==');
247
+ const [source] = createdBufferSources;
248
+ const onEndedBefore = source.onended;
249
+
250
+ expect(onEndedBefore).not.toBeNull();
251
+
252
+ hookData?.stopAllAudio();
253
+
254
+ // After stopAllAudio, the onended should be cleared
255
+ expect(source.onended).toBeNull();
256
+ });
257
+ });
258
+
259
+ describe('Error handling', () => {
260
+ beforeEach(() => {
261
+ renderResult = render(<HookApp />);
262
+ });
263
+
264
+ test('should handle invalid base64 data gracefully', async () => {
265
+ await expect(async () => {
266
+ await hookData?.queueAudio('invalid-base64!@#');
267
+ }).not.toThrow();
268
+ });
269
+
270
+ test('should handle AudioContext creation failure', async () => {
271
+ global.AudioContext = jest.fn(() => {
272
+ throw new Error('AudioContext not supported');
273
+ }) as unknown as typeof AudioContext;
274
+
275
+ await expect(async () => {
276
+ await hookData?.queueAudio('dGVzdA==');
277
+ }).rejects.toThrow('AudioContext not supported');
278
+ });
279
+ });
280
+
281
+ describe('Real-world scenarios', () => {
282
+ beforeEach(() => {
283
+ renderResult = render(<HookApp />);
284
+ });
285
+
286
+ test('should handle streaming audio chunks', async () => {
287
+ mockAudioBuffer.duration = 0.05; // 50ms chunks
288
+
289
+ // Simulate streaming 5 chunks
290
+ await Promise.all(Array.from({ length: 5 }, (_, i) => hookData?.queueAudio(`chunk${i}`)));
291
+
292
+ expect(createdBufferSources).toHaveLength(5);
293
+ createdBufferSources.forEach(source => {
294
+ expect(source.start).toHaveBeenCalled();
295
+ });
296
+ // Should only call bot_speaking once (first chunk)
297
+ expect(mockSetVoiceState).toHaveBeenCalledWith('bot_speaking');
298
+ expect(mockSetVoiceState).toHaveBeenCalledTimes(1);
299
+ });
300
+
301
+ test('should handle playback interruption', async () => {
302
+ await hookData?.queueAudio('dGVzdA==');
303
+
304
+ hookData?.stopAllAudio();
305
+
306
+ expect(mockAudioContext.close).toHaveBeenCalled();
307
+ });
308
+
309
+ test('should handle resume after stop', async () => {
310
+ // Play, stop, then play again
311
+ await hookData?.queueAudio('dGVzdA==');
312
+ hookData?.stopAllAudio();
313
+ await hookData?.queueAudio('dGVzdDI=');
314
+
315
+ expect(AudioContext).toHaveBeenCalledTimes(2); // New context after stop
316
+ });
317
+
318
+ test('should reset nextPlayTime after stop allowing immediate playback', async () => {
319
+ mockAudioBuffer.duration = 0.1;
320
+
321
+ await hookData?.queueAudio('dGVzdA==');
322
+ hookData?.stopAllAudio();
323
+ mockSetVoiceState.mockClear();
324
+
325
+ await hookData?.queueAudio('dGVzdDI=');
326
+
327
+ // Should trigger bot_speaking again since it's a fresh start
328
+ expect(mockSetVoiceState).toHaveBeenCalledWith('bot_speaking');
329
+ });
330
+ });
331
+
332
+ describe('Performance considerations', () => {
333
+ beforeEach(() => {
334
+ renderResult = render(<HookApp />);
335
+ });
336
+
337
+ test('should handle large audio data', async () => {
338
+ const largeBase64 = 'A'.repeat(10000);
339
+
340
+ await expect(async () => {
341
+ await hookData?.queueAudio(largeBase64);
342
+ }).not.toThrow();
343
+ });
344
+
345
+ test('should handle rapid successive calls', async () => {
346
+ // Ensure the mock "base64" data has an even length as Int16Array requires multiples of 2 bytes
347
+ await Promise.all(Array.from({ length: 100 }, (_, i) => hookData?.queueAudio(`chunk${i}`.padEnd(8, ' '))));
348
+
349
+ expect(createdBufferSources).toHaveLength(100);
350
+ createdBufferSources.forEach(source => {
351
+ expect(source.start).toHaveBeenCalled();
352
+ });
353
+ });
354
+ });
355
+ });