botframework-webchat-api 4.14.1 → 4.15.2-main.20220413.af6e8a3

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 (373) hide show
  1. package/.eslintrc.yml +4 -105
  2. package/.prettierrc.yml +1 -1
  3. package/lib/StyleOptions.d.ts +244 -14
  4. package/lib/StyleOptions.d.ts.map +1 -1
  5. package/lib/defaultStyleOptions.d.ts.map +1 -1
  6. package/lib/defaultStyleOptions.js +67 -14
  7. package/lib/hooks/Composer.d.ts +3 -3
  8. package/lib/hooks/Composer.d.ts.map +1 -1
  9. package/lib/hooks/Composer.js +29 -11
  10. package/lib/hooks/index.d.ts +11 -1
  11. package/lib/hooks/index.d.ts.map +1 -1
  12. package/lib/hooks/index.js +81 -1
  13. package/lib/hooks/internal/WebChatAPIContext.d.ts +3 -3
  14. package/lib/hooks/internal/WebChatAPIContext.d.ts.map +1 -1
  15. package/lib/hooks/internal/WebChatAPIContext.js +1 -1
  16. package/lib/hooks/internal/useCreateActivityRendererInternal.d.ts.map +1 -1
  17. package/lib/hooks/internal/useCreateActivityRendererInternal.js +1 -1
  18. package/lib/hooks/internal/useDebugDeps.js +10 -4
  19. package/lib/hooks/internal/usePrevious.d.ts +2 -0
  20. package/lib/hooks/internal/usePrevious.d.ts.map +1 -0
  21. package/lib/hooks/internal/usePrevious.js +17 -0
  22. package/lib/hooks/internal/useReadTelemetryDimensions.js +2 -2
  23. package/lib/hooks/internal/useValueRef.d.ts +3 -0
  24. package/lib/hooks/internal/useValueRef.d.ts.map +1 -0
  25. package/lib/hooks/internal/useValueRef.js +24 -0
  26. package/lib/hooks/middleware/UserlandBoundary.js +1 -1
  27. package/lib/hooks/middleware/applyMiddleware.js +1 -1
  28. package/lib/hooks/middleware/concatMiddleware.d.ts.map +1 -1
  29. package/lib/hooks/middleware/concatMiddleware.js +2 -2
  30. package/lib/hooks/middleware/createDefaultCardActionMiddleware.d.ts.map +1 -1
  31. package/lib/hooks/middleware/createDefaultCardActionMiddleware.js +1 -1
  32. package/lib/hooks/middleware/createDefaultGroupActivitiesMiddleware.d.ts.map +1 -1
  33. package/lib/hooks/middleware/createDefaultGroupActivitiesMiddleware.js +19 -3
  34. package/lib/hooks/useActiveTyping.d.ts.map +1 -1
  35. package/lib/hooks/useActiveTyping.js +5 -4
  36. package/lib/hooks/useActivities.d.ts +2 -2
  37. package/lib/hooks/useActivities.d.ts.map +1 -1
  38. package/lib/hooks/useActivities.js +1 -1
  39. package/lib/hooks/useActivityKeys.d.ts +3 -0
  40. package/lib/hooks/useActivityKeys.d.ts.map +1 -0
  41. package/lib/hooks/useActivityKeys.js +14 -0
  42. package/lib/hooks/useActivityKeysByRead.d.ts +3 -0
  43. package/lib/hooks/useActivityKeysByRead.d.ts.map +1 -0
  44. package/lib/hooks/useActivityKeysByRead.js +14 -0
  45. package/lib/hooks/useCreateActivityStatusRenderer.d.ts +3 -3
  46. package/lib/hooks/useCreateActivityStatusRenderer.d.ts.map +1 -1
  47. package/lib/hooks/useCreateActivityStatusRenderer.js +47 -16
  48. package/lib/hooks/useCreateAvatarRenderer.d.ts +5 -3
  49. package/lib/hooks/useCreateAvatarRenderer.d.ts.map +1 -1
  50. package/lib/hooks/useCreateAvatarRenderer.js +1 -1
  51. package/lib/hooks/useDateFormatter.d.ts.map +1 -1
  52. package/lib/hooks/useDateFormatter.js +1 -1
  53. package/lib/hooks/useDebouncedNotifications.js +3 -3
  54. package/lib/hooks/useGetActivityByKey.d.ts +3 -0
  55. package/lib/hooks/useGetActivityByKey.d.ts.map +1 -0
  56. package/lib/hooks/useGetActivityByKey.js +14 -0
  57. package/lib/hooks/useGetHasAcknowledgedByActivityKey.d.ts +3 -0
  58. package/lib/hooks/useGetHasAcknowledgedByActivityKey.d.ts.map +1 -0
  59. package/lib/hooks/useGetHasAcknowledgedByActivityKey.js +14 -0
  60. package/lib/hooks/useGetKeyByActivity.d.ts +3 -0
  61. package/lib/hooks/useGetKeyByActivity.d.ts.map +1 -0
  62. package/lib/hooks/useGetKeyByActivity.js +14 -0
  63. package/lib/hooks/useGetKeyByActivityId.d.ts +3 -0
  64. package/lib/hooks/useGetKeyByActivityId.d.ts.map +1 -0
  65. package/lib/hooks/useGetKeyByActivityId.js +14 -0
  66. package/lib/hooks/useGetSendTimeoutForActivity.d.ts +2 -2
  67. package/lib/hooks/useGetSendTimeoutForActivity.d.ts.map +1 -1
  68. package/lib/hooks/useGetSendTimeoutForActivity.js +4 -2
  69. package/lib/hooks/useGroupActivities.d.ts +4 -4
  70. package/lib/hooks/useGroupActivities.d.ts.map +1 -1
  71. package/lib/hooks/useGroupActivities.js +1 -1
  72. package/lib/hooks/useLastAcknowledgedActivityKey.d.ts +3 -0
  73. package/lib/hooks/useLastAcknowledgedActivityKey.d.ts.map +1 -0
  74. package/lib/hooks/useLastAcknowledgedActivityKey.js +14 -0
  75. package/lib/hooks/useLastReadActivityKey.d.ts +3 -0
  76. package/lib/hooks/useLastReadActivityKey.d.ts.map +1 -0
  77. package/lib/hooks/useLastReadActivityKey.js +14 -0
  78. package/lib/hooks/useLocalizer.d.ts +1 -1
  79. package/lib/hooks/useLocalizer.d.ts.map +1 -1
  80. package/lib/hooks/useLocalizer.js +9 -3
  81. package/lib/hooks/useMarkActivityAsSpoken.d.ts +2 -2
  82. package/lib/hooks/useMarkActivityAsSpoken.d.ts.map +1 -1
  83. package/lib/hooks/useMarkActivityAsSpoken.js +1 -1
  84. package/lib/hooks/useMarkActivityKeyAsRead.d.ts +3 -0
  85. package/lib/hooks/useMarkActivityKeyAsRead.d.ts.map +1 -0
  86. package/lib/hooks/useMarkActivityKeyAsRead.js +14 -0
  87. package/lib/hooks/useMarkAllAsAcknowledged.d.ts +3 -0
  88. package/lib/hooks/useMarkAllAsAcknowledged.d.ts.map +1 -0
  89. package/lib/hooks/useMarkAllAsAcknowledged.js +14 -0
  90. package/lib/hooks/usePerformCardAction.d.ts +2 -2
  91. package/lib/hooks/usePerformCardAction.d.ts.map +1 -1
  92. package/lib/hooks/usePerformCardAction.js +1 -1
  93. package/lib/hooks/usePostActivity.d.ts +2 -2
  94. package/lib/hooks/usePostActivity.d.ts.map +1 -1
  95. package/lib/hooks/usePostActivity.js +1 -1
  96. package/lib/hooks/useSendFiles.d.ts +8 -1
  97. package/lib/hooks/useSendFiles.d.ts.map +1 -1
  98. package/lib/hooks/useSendFiles.js +1 -1
  99. package/lib/hooks/useSendTimeoutForActivity.d.ts +2 -2
  100. package/lib/hooks/useSendTimeoutForActivity.d.ts.map +1 -1
  101. package/lib/hooks/useSendTimeoutForActivity.js +1 -1
  102. package/lib/hooks/useSubmitSendBox.d.ts.map +1 -1
  103. package/lib/hooks/useSubmitSendBox.js +8 -5
  104. package/lib/hooks/useSuggestedActions.d.ts +1 -1
  105. package/lib/hooks/useSuggestedActions.d.ts.map +1 -1
  106. package/lib/hooks/useSuggestedActions.js +1 -1
  107. package/lib/hooks/useTimeoutForSend.d.ts +2 -2
  108. package/lib/hooks/useTimeoutForSend.d.ts.map +1 -1
  109. package/lib/hooks/useTimeoutForSend.js +1 -1
  110. package/lib/hooks/useTrackException.js +2 -2
  111. package/lib/hooks/utils/ErrorBoundary.js +4 -4
  112. package/lib/index.js +8 -8
  113. package/lib/localization/Localize.d.ts.map +1 -1
  114. package/lib/localization/Localize.js +12 -6
  115. package/lib/localization/ar-SA.json +23 -4
  116. package/lib/localization/bg-BG.json +23 -4
  117. package/lib/localization/ca-ES.json +23 -4
  118. package/lib/localization/cs-CZ.json +23 -4
  119. package/lib/localization/da-DK.json +23 -4
  120. package/lib/localization/de-DE.json +23 -4
  121. package/lib/localization/el-GR.json +23 -4
  122. package/lib/localization/en-US.json +34 -9
  123. package/lib/localization/es-ES.json +23 -4
  124. package/lib/localization/et-EE.json +23 -4
  125. package/lib/localization/eu-ES.json +23 -4
  126. package/lib/localization/fi-FI.json +23 -4
  127. package/lib/localization/fr-FR.json +23 -4
  128. package/lib/localization/gl-ES.json +23 -4
  129. package/lib/localization/he-IL.json +23 -4
  130. package/lib/localization/hi-IN.json +23 -4
  131. package/lib/localization/hr-HR.json +23 -4
  132. package/lib/localization/hu-HU.json +23 -4
  133. package/lib/localization/id-ID.json +23 -4
  134. package/lib/localization/it-IT.json +23 -4
  135. package/lib/localization/ja-JP.json +23 -4
  136. package/lib/localization/kk-KZ.json +23 -4
  137. package/lib/localization/ko-KR.json +23 -4
  138. package/lib/localization/lt-LT.json +23 -4
  139. package/lib/localization/lv-LV.json +23 -4
  140. package/lib/localization/mergeLocalizedStrings.d.ts.map +1 -1
  141. package/lib/localization/mergeLocalizedStrings.js +13 -6
  142. package/lib/localization/ms-MY.json +23 -4
  143. package/lib/localization/nb-NO.json +23 -4
  144. package/lib/localization/nl-NL.json +23 -4
  145. package/lib/localization/pl-PL.json +23 -4
  146. package/lib/localization/pt-BR.json +23 -4
  147. package/lib/localization/pt-PT.json +23 -4
  148. package/lib/localization/ro-RO.json +23 -4
  149. package/lib/localization/ru-RU.json +23 -4
  150. package/lib/localization/sk-SK.json +23 -4
  151. package/lib/localization/sl-SI.json +23 -4
  152. package/lib/localization/sr-Cyrl-CS.json +23 -4
  153. package/lib/localization/sr-Latn-CS.json +23 -4
  154. package/lib/localization/sv-SE.json +23 -4
  155. package/lib/localization/th-TH.json +23 -4
  156. package/lib/localization/tr-TR.json +23 -4
  157. package/lib/localization/uk-UA.json +23 -4
  158. package/lib/localization/vi-VN.json +23 -4
  159. package/lib/localization/yue.json +26 -7
  160. package/lib/localization/zh-CN.json +23 -4
  161. package/lib/localization/zh-HK.json +23 -4
  162. package/lib/localization/zh-TW.json +23 -4
  163. package/lib/normalizeStyleOptions.d.ts.map +1 -1
  164. package/lib/normalizeStyleOptions.js +49 -4
  165. package/lib/patchStyleOptionsFromDeprecatedProps.js +1 -2
  166. package/lib/providers/ActivityAcknowledgement/ActivityAcknowledgementComposer.d.ts +5 -0
  167. package/lib/providers/ActivityAcknowledgement/ActivityAcknowledgementComposer.d.ts.map +1 -0
  168. package/lib/providers/ActivityAcknowledgement/ActivityAcknowledgementComposer.js +184 -0
  169. package/lib/providers/ActivityAcknowledgement/private/Context.d.ts +13 -0
  170. package/lib/providers/ActivityAcknowledgement/private/Context.d.ts.map +1 -0
  171. package/lib/providers/ActivityAcknowledgement/private/Context.js +13 -0
  172. package/lib/providers/ActivityAcknowledgement/private/types.d.ts +6 -0
  173. package/lib/providers/ActivityAcknowledgement/private/types.d.ts.map +1 -0
  174. package/lib/providers/ActivityAcknowledgement/private/types.js +2 -0
  175. package/lib/providers/ActivityAcknowledgement/private/useContext.d.ts +3 -0
  176. package/lib/providers/ActivityAcknowledgement/private/useContext.d.ts.map +1 -0
  177. package/lib/providers/ActivityAcknowledgement/private/useContext.js +24 -0
  178. package/lib/providers/ActivityAcknowledgement/useActivityKeysByRead.d.ts +5 -0
  179. package/lib/providers/ActivityAcknowledgement/useActivityKeysByRead.d.ts.map +1 -0
  180. package/lib/providers/ActivityAcknowledgement/useActivityKeysByRead.js +18 -0
  181. package/lib/providers/ActivityAcknowledgement/useGetHasAcknowledgedByActivityKey.d.ts +2 -0
  182. package/lib/providers/ActivityAcknowledgement/useGetHasAcknowledgedByActivityKey.d.ts.map +1 -0
  183. package/lib/providers/ActivityAcknowledgement/useGetHasAcknowledgedByActivityKey.js +15 -0
  184. package/lib/providers/ActivityAcknowledgement/useLastAcknowledgedActivityKey.d.ts +2 -0
  185. package/lib/providers/ActivityAcknowledgement/useLastAcknowledgedActivityKey.d.ts.map +1 -0
  186. package/lib/providers/ActivityAcknowledgement/useLastAcknowledgedActivityKey.js +15 -0
  187. package/lib/providers/ActivityAcknowledgement/useLastReadActivityKey.d.ts +2 -0
  188. package/lib/providers/ActivityAcknowledgement/useLastReadActivityKey.d.ts.map +1 -0
  189. package/lib/providers/ActivityAcknowledgement/useLastReadActivityKey.js +15 -0
  190. package/lib/providers/ActivityAcknowledgement/useMarkActivityKeyAsRead.d.ts +2 -0
  191. package/lib/providers/ActivityAcknowledgement/useMarkActivityKeyAsRead.d.ts.map +1 -0
  192. package/lib/providers/ActivityAcknowledgement/useMarkActivityKeyAsRead.js +15 -0
  193. package/lib/providers/ActivityAcknowledgement/useMarkAllAsAcknowledged.d.ts +2 -0
  194. package/lib/providers/ActivityAcknowledgement/useMarkAllAsAcknowledged.d.ts.map +1 -0
  195. package/lib/providers/ActivityAcknowledgement/useMarkAllAsAcknowledged.js +15 -0
  196. package/lib/providers/ActivityKeyer/ActivityKeyerComposer.d.ts +18 -0
  197. package/lib/providers/ActivityKeyer/ActivityKeyerComposer.d.ts.map +1 -0
  198. package/lib/providers/ActivityKeyer/ActivityKeyerComposer.js +153 -0
  199. package/lib/providers/ActivityKeyer/private/Context.d.ts +12 -0
  200. package/lib/providers/ActivityKeyer/private/Context.d.ts.map +1 -0
  201. package/lib/providers/ActivityKeyer/private/Context.js +13 -0
  202. package/lib/providers/ActivityKeyer/private/getActivityId.d.ts +3 -0
  203. package/lib/providers/ActivityKeyer/private/getActivityId.d.ts.map +1 -0
  204. package/lib/providers/ActivityKeyer/private/getActivityId.js +11 -0
  205. package/lib/providers/ActivityKeyer/private/getClientActivityId.d.ts +3 -0
  206. package/lib/providers/ActivityKeyer/private/getClientActivityId.d.ts.map +1 -0
  207. package/lib/providers/ActivityKeyer/private/getClientActivityId.js +13 -0
  208. package/lib/providers/ActivityKeyer/private/uniqueId.d.ts +2 -0
  209. package/lib/providers/ActivityKeyer/private/uniqueId.d.ts.map +1 -0
  210. package/lib/providers/ActivityKeyer/private/uniqueId.js +18 -0
  211. package/lib/providers/ActivityKeyer/private/useContext.d.ts +3 -0
  212. package/lib/providers/ActivityKeyer/private/useContext.d.ts.map +1 -0
  213. package/lib/providers/ActivityKeyer/private/useContext.js +24 -0
  214. package/lib/providers/ActivityKeyer/useActivityKeys.d.ts +2 -0
  215. package/lib/providers/ActivityKeyer/useActivityKeys.d.ts.map +1 -0
  216. package/lib/providers/ActivityKeyer/useActivityKeys.js +15 -0
  217. package/lib/providers/ActivityKeyer/useGetActivityByKey.d.ts +3 -0
  218. package/lib/providers/ActivityKeyer/useGetActivityByKey.d.ts.map +1 -0
  219. package/lib/providers/ActivityKeyer/useGetActivityByKey.js +15 -0
  220. package/lib/providers/ActivityKeyer/useGetKeyByActivity.d.ts +3 -0
  221. package/lib/providers/ActivityKeyer/useGetKeyByActivity.d.ts.map +1 -0
  222. package/lib/providers/ActivityKeyer/useGetKeyByActivity.js +15 -0
  223. package/lib/providers/ActivityKeyer/useGetKeyByActivityId.d.ts +2 -0
  224. package/lib/providers/ActivityKeyer/useGetKeyByActivityId.d.ts.map +1 -0
  225. package/lib/providers/ActivityKeyer/useGetKeyByActivityId.js +15 -0
  226. package/lib/types/ActivityMiddleware.d.ts +3 -3
  227. package/lib/types/ActivityMiddleware.d.ts.map +1 -1
  228. package/lib/types/ActivityStatusMiddleware.d.ts +3 -3
  229. package/lib/types/ActivityStatusMiddleware.d.ts.map +1 -1
  230. package/lib/types/AttachmentForScreenReaderMiddleware.d.ts +2 -2
  231. package/lib/types/AttachmentForScreenReaderMiddleware.d.ts.map +1 -1
  232. package/lib/types/AttachmentMiddleware.d.ts +2 -2
  233. package/lib/types/AttachmentMiddleware.d.ts.map +1 -1
  234. package/lib/types/AvatarMiddleware.d.ts +2 -2
  235. package/lib/types/AvatarMiddleware.d.ts.map +1 -1
  236. package/lib/types/CardActionMiddleware.d.ts +4 -2
  237. package/lib/types/CardActionMiddleware.d.ts.map +1 -1
  238. package/lib/types/GroupActivitiesMiddleware.d.ts +7 -7
  239. package/lib/types/GroupActivitiesMiddleware.d.ts.map +1 -1
  240. package/lib/types/WebSpeechPonyfill.d.ts +1 -0
  241. package/lib/types/WebSpeechPonyfill.d.ts.map +1 -1
  242. package/lib/utils/createCustomEvent.d.ts.map +1 -1
  243. package/lib/utils/createCustomEvent.js +8 -2
  244. package/lib/utils/findLastIndex.d.ts +2 -0
  245. package/lib/utils/findLastIndex.d.ts.map +1 -0
  246. package/lib/utils/findLastIndex.js +32 -0
  247. package/lib/utils/findMin.js +1 -1
  248. package/lib/utils/mapMap.d.ts.map +1 -1
  249. package/lib/utils/mapMap.js +9 -2
  250. package/lib/utils/randomId.d.ts.map +1 -1
  251. package/lib/utils/randomId.js +1 -1
  252. package/package.json +26 -29
  253. package/src/StyleOptions.ts +295 -14
  254. package/src/defaultStyleOptions.ts +71 -13
  255. package/src/hooks/Composer.tsx +90 -54
  256. package/src/hooks/index.ts +20 -0
  257. package/src/hooks/internal/WebChatAPIContext.ts +3 -3
  258. package/src/hooks/internal/useCreateActivityRendererInternal.ts +21 -20
  259. package/src/hooks/internal/useDebugDeps.js +9 -2
  260. package/src/hooks/internal/usePrevious.ts +11 -0
  261. package/src/hooks/internal/useValueRef.ts +21 -0
  262. package/src/hooks/middleware/concatMiddleware.ts +6 -4
  263. package/src/hooks/middleware/createDefaultCardActionMiddleware.ts +29 -27
  264. package/src/hooks/middleware/createDefaultGroupActivitiesMiddleware.ts +18 -6
  265. package/src/hooks/useActiveTyping.ts +5 -3
  266. package/src/hooks/useActivities.ts +2 -2
  267. package/src/hooks/useActivityKeys.ts +3 -0
  268. package/src/hooks/useActivityKeysByRead.ts +3 -0
  269. package/src/hooks/useCreateActivityStatusRenderer.tsx +65 -34
  270. package/src/hooks/useCreateAvatarRenderer.ts +24 -20
  271. package/src/hooks/useDateFormatter.ts +4 -3
  272. package/src/hooks/useGetActivityByKey.ts +3 -0
  273. package/src/hooks/useGetHasAcknowledgedByActivityKey.ts +3 -0
  274. package/src/hooks/useGetKeyByActivity.ts +3 -0
  275. package/src/hooks/useGetKeyByActivityId.ts +3 -0
  276. package/src/hooks/useGetSendTimeoutForActivity.ts +9 -8
  277. package/src/hooks/useGroupActivities.ts +4 -8
  278. package/src/hooks/useLastAcknowledgedActivityKey.ts +3 -0
  279. package/src/hooks/useLastReadActivityKey.ts +3 -0
  280. package/src/hooks/useLocalizer.ts +7 -2
  281. package/src/hooks/useMarkActivityAsSpoken.ts +2 -2
  282. package/src/hooks/useMarkActivityKeyAsRead.ts +3 -0
  283. package/src/hooks/useMarkAllAsAcknowledged.ts +3 -0
  284. package/src/hooks/usePerformCardAction.ts +2 -3
  285. package/src/hooks/usePostActivity.ts +2 -2
  286. package/src/hooks/useSendFiles.ts +8 -1
  287. package/src/hooks/useSendTimeoutForActivity.ts +2 -2
  288. package/src/hooks/useSubmitSendBox.ts +2 -5
  289. package/src/hooks/useSuggestedActions.ts +1 -1
  290. package/src/hooks/useTimeoutForSend.ts +2 -2
  291. package/src/localization/Localize.ts +9 -2
  292. package/src/localization/ar-SA.json +23 -4
  293. package/src/localization/bg-BG.json +23 -4
  294. package/src/localization/ca-ES.json +23 -4
  295. package/src/localization/cs-CZ.json +23 -4
  296. package/src/localization/da-DK.json +23 -4
  297. package/src/localization/de-DE.json +23 -4
  298. package/src/localization/el-GR.json +23 -4
  299. package/src/localization/en-US.json +34 -9
  300. package/src/localization/es-ES.json +23 -4
  301. package/src/localization/et-EE.json +23 -4
  302. package/src/localization/eu-ES.json +23 -4
  303. package/src/localization/fi-FI.json +23 -4
  304. package/src/localization/fr-FR.json +23 -4
  305. package/src/localization/gl-ES.json +23 -4
  306. package/src/localization/he-IL.json +23 -4
  307. package/src/localization/hi-IN.json +23 -4
  308. package/src/localization/hr-HR.json +23 -4
  309. package/src/localization/hu-HU.json +23 -4
  310. package/src/localization/id-ID.json +23 -4
  311. package/src/localization/it-IT.json +23 -4
  312. package/src/localization/ja-JP.json +23 -4
  313. package/src/localization/kk-KZ.json +23 -4
  314. package/src/localization/ko-KR.json +23 -4
  315. package/src/localization/lt-LT.json +23 -4
  316. package/src/localization/lv-LV.json +23 -4
  317. package/src/localization/mergeLocalizedStrings.ts +7 -1
  318. package/src/localization/ms-MY.json +23 -4
  319. package/src/localization/nb-NO.json +23 -4
  320. package/src/localization/nl-NL.json +23 -4
  321. package/src/localization/pl-PL.json +23 -4
  322. package/src/localization/pt-BR.json +23 -4
  323. package/src/localization/pt-PT.json +23 -4
  324. package/src/localization/ro-RO.json +23 -4
  325. package/src/localization/ru-RU.json +23 -4
  326. package/src/localization/sk-SK.json +23 -4
  327. package/src/localization/sl-SI.json +23 -4
  328. package/src/localization/sr-Cyrl-CS.json +23 -4
  329. package/src/localization/sr-Latn-CS.json +23 -4
  330. package/src/localization/sv-SE.json +23 -4
  331. package/src/localization/th-TH.json +23 -4
  332. package/src/localization/tr-TR.json +23 -4
  333. package/src/localization/uk-UA.json +23 -4
  334. package/src/localization/vi-VN.json +23 -4
  335. package/src/localization/yue.json +26 -7
  336. package/src/localization/zh-CN.json +23 -4
  337. package/src/localization/zh-HK.json +23 -4
  338. package/src/localization/zh-TW.json +23 -4
  339. package/src/normalizeStyleOptions.ts +70 -0
  340. package/src/patchStyleOptionsFromDeprecatedProps.js +0 -2
  341. package/src/providers/ActivityAcknowledgement/ActivityAcknowledgementComposer.tsx +180 -0
  342. package/src/providers/ActivityAcknowledgement/private/Context.ts +18 -0
  343. package/src/providers/ActivityAcknowledgement/private/types.ts +6 -0
  344. package/src/providers/ActivityAcknowledgement/private/useContext.ts +19 -0
  345. package/src/providers/ActivityAcknowledgement/useActivityKeysByRead.tsx +8 -0
  346. package/src/providers/ActivityAcknowledgement/useGetHasAcknowledgedByActivityKey.ts +5 -0
  347. package/src/providers/ActivityAcknowledgement/useLastAcknowledgedActivityKey.ts +5 -0
  348. package/src/providers/ActivityAcknowledgement/useLastReadActivityKey.ts +5 -0
  349. package/src/providers/ActivityAcknowledgement/useMarkActivityKeyAsRead.ts +5 -0
  350. package/src/providers/ActivityAcknowledgement/useMarkAllAsAcknowledged.ts +5 -0
  351. package/src/providers/ActivityKeyer/ActivityKeyerComposer.tsx +150 -0
  352. package/src/providers/ActivityKeyer/private/Context.ts +13 -0
  353. package/src/providers/ActivityKeyer/private/getActivityId.ts +5 -0
  354. package/src/providers/ActivityKeyer/private/getClientActivityId.ts +5 -0
  355. package/src/providers/ActivityKeyer/private/uniqueId.ts +8 -0
  356. package/src/providers/ActivityKeyer/private/useContext.ts +15 -0
  357. package/src/providers/ActivityKeyer/useActivityKeys.ts +5 -0
  358. package/src/providers/ActivityKeyer/useGetActivityByKey.ts +7 -0
  359. package/src/providers/ActivityKeyer/useGetKeyByActivity.ts +7 -0
  360. package/src/providers/ActivityKeyer/useGetKeyByActivityId.ts +5 -0
  361. package/src/types/ActivityMiddleware.ts +3 -3
  362. package/src/types/ActivityStatusMiddleware.ts +3 -3
  363. package/src/types/AttachmentForScreenReaderMiddleware.ts +2 -2
  364. package/src/types/AttachmentMiddleware.ts +2 -2
  365. package/src/types/AvatarMiddleware.ts +2 -2
  366. package/src/types/CardActionMiddleware.ts +2 -2
  367. package/src/types/GroupActivitiesMiddleware.ts +7 -7
  368. package/src/utils/createCustomEvent.ts +7 -1
  369. package/src/utils/findLastIndex.spec.js +31 -0
  370. package/src/utils/findLastIndex.ts +11 -0
  371. package/src/utils/mapMap.ts +7 -1
  372. package/src/utils/randomId.ts +1 -1
  373. package/.eslintignore +0 -1
@@ -0,0 +1,3 @@
1
+ import useActivityKeysByRead from '../providers/ActivityAcknowledgement/useActivityKeysByRead';
2
+
3
+ export default useActivityKeysByRead;
@@ -1,10 +1,11 @@
1
1
  /* eslint react/prop-types: "off" */
2
2
  /* eslint react/require-default-props: "off" */
3
3
 
4
- import { Constants, DirectLineActivity } from 'botframework-webchat-core';
5
- import React, { ReactNode, useMemo } from 'react';
4
+ import { Constants } from 'botframework-webchat-core';
5
+ import PropTypes from 'prop-types';
6
+ import React, { ReactNode, useMemo, VFC } from 'react';
7
+ import type { WebChatActivity } from 'botframework-webchat-core';
6
8
 
7
- import SendState from '../types/SendState';
8
9
  import useGetSendTimeoutForActivity from './useGetSendTimeoutForActivity';
9
10
  import useTimePassed from './internal/useTimePassed';
10
11
  import useWebChatAPIContext from './internal/useWebChatAPIContext';
@@ -13,32 +14,48 @@ const {
13
14
  ActivityClientState: { SEND_FAILED, SENDING, SENT }
14
15
  } = Constants;
15
16
 
16
- const ActivityStatusContainer = ({ activity, hideTimestamp, nextVisibleActivity }) => {
17
+ type ActivityStatusContainerProps = {
18
+ activity: WebChatActivity;
19
+ hideTimestamp: boolean;
20
+ nextVisibleActivity: WebChatActivity;
21
+ };
22
+
23
+ const ActivityStatusContainer: VFC<ActivityStatusContainerProps> = ({
24
+ activity,
25
+ hideTimestamp,
26
+ nextVisibleActivity
27
+ }) => {
17
28
  const { activityStatusRenderer: createActivityStatusRenderer } = useWebChatAPIContext();
18
29
  const getSendTimeoutForActivity = useGetSendTimeoutForActivity();
19
30
 
20
31
  // SEND_FAILED from the activity is ignored, and is instead based on styleOptions.sendTimeout.
21
32
  // Note that the derived state is time-sensitive. The useTimePassed() hook is used to make sure it changes over time.
22
33
  const {
23
- channelData: { clientTimestamp = 0, state } = {},
24
34
  from: { role }
25
- }: {
26
- channelData: {
27
- clientTimestamp?: number;
28
- state?: SendState;
29
- };
30
- from: {
31
- role: string;
32
- };
33
- } = activity;
34
-
35
- const activitySent = state !== SENDING && state !== SEND_FAILED;
35
+ }: WebChatActivity = activity;
36
+
36
37
  const fromUser = role === 'user';
37
- const sendTimeout = getSendTimeoutForActivity({ activity });
38
+ let activitySent: boolean;
39
+ let sendTimeoutAt: number;
40
+
41
+ if (fromUser) {
42
+ const state = activity.channelData?.state;
43
+ const sendTimeout = getSendTimeoutForActivity({ activity });
44
+
45
+ activitySent = state !== SENDING && state !== SEND_FAILED;
46
+
47
+ // If no timestamp, we assume the "sending" will be timed out as "send failed".
48
+ sendTimeoutAt = !activitySent
49
+ ? new Date(activity.localTimestamp || new Date(0).toISOString()).getTime() + sendTimeout
50
+ : 0;
51
+ } else {
52
+ activitySent = true;
53
+ sendTimeoutAt = 0;
54
+ }
38
55
 
39
- const pastTimeout = useTimePassed(fromUser && !activitySent ? new Date(clientTimestamp).getTime() + sendTimeout : 0);
56
+ const pastTimeout = useTimePassed(sendTimeoutAt);
40
57
 
41
- const sendState = activitySent || !fromUser ? SENT : pastTimeout ? SEND_FAILED : SENDING;
58
+ const sendState = activitySent ? SENT : pastTimeout ? SEND_FAILED : SENDING;
42
59
 
43
60
  return useMemo(
44
61
  () =>
@@ -53,24 +70,38 @@ const ActivityStatusContainer = ({ activity, hideTimestamp, nextVisibleActivity
53
70
  );
54
71
  };
55
72
 
73
+ ActivityStatusContainer.defaultProps = {
74
+ hideTimestamp: false,
75
+ nextVisibleActivity: undefined
76
+ };
77
+
78
+ ActivityStatusContainer.propTypes = {
79
+ // PropTypes cannot fully capture TypeScript types.
80
+ // @ts-ignore
81
+ activity: PropTypes.shape({
82
+ channelData: PropTypes.shape({ state: PropTypes.string }),
83
+ from: PropTypes.shape({ role: PropTypes.string }).isRequired,
84
+ localTimestamp: PropTypes.string
85
+ }).isRequired,
86
+ hideTimestamp: PropTypes.bool,
87
+ nextVisibleActivity: PropTypes.any
88
+ };
89
+
56
90
  export default function useCreateActivityStatusRenderer(): (renderOptions: {
57
- activity: DirectLineActivity;
58
- nextVisibleActivity: DirectLineActivity;
91
+ activity: WebChatActivity;
92
+ nextVisibleActivity: WebChatActivity;
59
93
  }) => (props: { hideTimestamp?: boolean }) => ReactNode {
60
94
  return useMemo(
61
- () => ({
62
- activity,
63
- nextVisibleActivity
64
- }: {
65
- activity: DirectLineActivity;
66
- nextVisibleActivity: DirectLineActivity;
67
- }) => ({ hideTimestamp }: { hideTimestamp?: boolean } = {}) => (
68
- <ActivityStatusContainer
69
- activity={activity}
70
- hideTimestamp={hideTimestamp}
71
- nextVisibleActivity={nextVisibleActivity}
72
- />
73
- ),
95
+ () =>
96
+ ({ activity, nextVisibleActivity }: { activity: WebChatActivity; nextVisibleActivity: WebChatActivity }) =>
97
+ ({ hideTimestamp }: { hideTimestamp?: boolean } = {}) =>
98
+ (
99
+ <ActivityStatusContainer
100
+ activity={activity}
101
+ hideTimestamp={hideTimestamp}
102
+ nextVisibleActivity={nextVisibleActivity}
103
+ />
104
+ ),
74
105
  []
75
106
  );
76
107
  }
@@ -1,35 +1,39 @@
1
- import { DirectLineActivity } from 'botframework-webchat-core';
2
- import { ReactNode, useMemo } from 'react';
1
+ import { useMemo } from 'react';
2
+ import type { WebChatActivity } from 'botframework-webchat-core';
3
3
 
4
+ import { AvatarComponentFactory } from '../types/AvatarMiddleware';
4
5
  import useStyleOptions from './useStyleOptions';
5
6
  import useWebChatAPIContext from './internal/useWebChatAPIContext';
6
7
 
7
- export default function useCreateAvatarRenderer(): (
8
- activity: DirectLineActivity
9
- ) => (() => Exclude<ReactNode, boolean | null | undefined>) | false {
8
+ export default function useCreateAvatarRenderer(): ({
9
+ activity
10
+ }: {
11
+ activity: WebChatActivity;
12
+ }) => AvatarComponentFactory {
10
13
  const [styleOptions] = useStyleOptions();
11
14
  const { avatarRenderer } = useWebChatAPIContext();
12
15
 
13
16
  return useMemo(
14
- () => ({ activity }) => {
15
- const { from: { role } = {} }: { from?: { role?: string } } = activity;
17
+ () =>
18
+ ({ activity }) => {
19
+ const { from: { role } = {} }: { from?: { role?: string } } = activity;
16
20
 
17
- const result = avatarRenderer({
18
- activity,
19
- fromUser: role === 'user',
20
- styleOptions
21
- });
21
+ const result = avatarRenderer({
22
+ activity,
23
+ fromUser: role === 'user',
24
+ styleOptions
25
+ });
22
26
 
23
- if (result !== false && typeof result !== 'function') {
24
- console.warn(
25
- 'botframework-webchat: avatarMiddleware should return a function to render the avatar, or return false if avatar should be hidden. Please refer to HOOKS.md for details.'
26
- );
27
+ if (result !== false && typeof result !== 'function') {
28
+ console.warn(
29
+ 'botframework-webchat: avatarMiddleware should return a function to render the avatar, or return false if avatar should be hidden. Please refer to HOOKS.md for details.'
30
+ );
27
31
 
28
- return () => result;
29
- }
32
+ return () => result;
33
+ }
30
34
 
31
- return result;
32
- },
35
+ return result;
36
+ },
33
37
  [avatarRenderer, styleOptions]
34
38
  );
35
39
  }
@@ -5,9 +5,10 @@ import useLocalizedGlobalize from './internal/useLocalizedGlobalize';
5
5
  export default function useDateFormatter(): (date: number | Date) => string {
6
6
  const [globalize] = useLocalizedGlobalize();
7
7
 
8
- const formatDate = useMemo(() => date => globalize.dateFormatter({ skeleton: 'MMMMdhm' })(new Date(date)), [
9
- globalize
10
- ]);
8
+ const formatDate = useMemo(
9
+ () => date => globalize.dateFormatter({ skeleton: 'MMMMdhm' })(new Date(date)),
10
+ [globalize]
11
+ );
11
12
 
12
13
  return formatDate;
13
14
  }
@@ -0,0 +1,3 @@
1
+ import useGetActivityByKey from '../providers/ActivityKeyer/useGetActivityByKey';
2
+
3
+ export default useGetActivityByKey;
@@ -0,0 +1,3 @@
1
+ import useGetHasAcknowledgedByActivityKey from '../providers/ActivityAcknowledgement/useGetHasAcknowledgedByActivityKey';
2
+
3
+ export default useGetHasAcknowledgedByActivityKey;
@@ -0,0 +1,3 @@
1
+ import useGetKeyByActivity from '../providers/ActivityKeyer/useGetKeyByActivity';
2
+
3
+ export default useGetKeyByActivity;
@@ -0,0 +1,3 @@
1
+ import useGetKeyByActivityId from '../providers/ActivityKeyer/useGetKeyByActivityId';
2
+
3
+ export default useGetKeyByActivityId;
@@ -1,19 +1,20 @@
1
- import { DirectLineActivity } from 'botframework-webchat-core';
2
1
  import { useMemo } from 'react';
2
+ import type { WebChatActivity } from 'botframework-webchat-core';
3
3
 
4
4
  import useStyleOptions from './useStyleOptions';
5
5
 
6
- export default function useGetSendTimeoutForActivity(): ({ activity }: { activity: DirectLineActivity }) => number {
6
+ export default function useGetSendTimeoutForActivity(): ({ activity }: { activity: WebChatActivity }) => number {
7
7
  const [{ sendTimeout, sendTimeoutForAttachments }] = useStyleOptions();
8
8
 
9
9
  return useMemo(
10
- () => ({ activity }) => {
11
- if (typeof sendTimeout === 'function') {
12
- return sendTimeout(activity);
13
- }
10
+ () =>
11
+ ({ activity }) => {
12
+ if (typeof sendTimeout === 'function') {
13
+ return sendTimeout(activity);
14
+ }
14
15
 
15
- return activity.attachments && activity.attachments.length ? sendTimeoutForAttachments : sendTimeout;
16
- },
16
+ return activity.type === 'message' && activity.attachments?.length ? sendTimeoutForAttachments : sendTimeout;
17
+ },
17
18
  [sendTimeout, sendTimeoutForAttachments]
18
19
  );
19
20
  }
@@ -1,14 +1,10 @@
1
- import { DirectLineActivity } from 'botframework-webchat-core';
1
+ import type { WebChatActivity } from 'botframework-webchat-core';
2
2
 
3
3
  import useWebChatAPIContext from './internal/useWebChatAPIContext';
4
4
 
5
- export default function useGroupActivities(): ({
6
- activities
7
- }: {
8
- activities: DirectLineActivity[];
9
- }) => {
10
- sender: DirectLineActivity[][];
11
- status: DirectLineActivity[][];
5
+ export default function useGroupActivities(): ({ activities }: { activities: WebChatActivity[] }) => {
6
+ sender: WebChatActivity[][];
7
+ status: WebChatActivity[][];
12
8
  } {
13
9
  return useWebChatAPIContext().groupActivities;
14
10
  }
@@ -0,0 +1,3 @@
1
+ import useLastAcknowledgedActivityKey from '../providers/ActivityAcknowledgement/useLastAcknowledgedActivityKey';
2
+
3
+ export default useLastAcknowledgedActivityKey;
@@ -0,0 +1,3 @@
1
+ import useLastReadActivityKey from '../providers/ActivityAcknowledgement/useLastReadActivityKey';
2
+
3
+ export default useLastReadActivityKey;
@@ -1,3 +1,4 @@
1
+ import { isForbiddenPropertyName } from 'botframework-webchat-core';
1
2
  import { useCallback } from 'react';
2
3
 
3
4
  import getAllLocalizedStrings from '../localization/getAllLocalizedStrings';
@@ -16,7 +17,7 @@ type Plural = {
16
17
  other: string;
17
18
  };
18
19
 
19
- export default function useLocalizer({ plural }: { plural?: keyof Plural } = {}) {
20
+ export default function useLocalizer({ plural }: { plural?: boolean } = {}) {
20
21
  const [globalize] = useLocalizedGlobalize();
21
22
  const localizedStrings = useLocalizedStrings();
22
23
 
@@ -36,6 +37,8 @@ export default function useLocalizer({ plural }: { plural?: keyof Plural } = {})
36
37
  }
37
38
 
38
39
  for (const pluralForm of ['zero', 'one', 'two', 'few', 'many']) {
40
+ // Mitigation through allowlisting.
41
+ // eslint-disable-next-line security/detect-object-injection
39
42
  const type = typeof id[pluralForm];
40
43
 
41
44
  if (type !== 'string' && type !== 'undefined') {
@@ -62,7 +65,9 @@ export default function useLocalizer({ plural }: { plural?: keyof Plural } = {})
62
65
 
63
66
  return Object.entries(args).reduce(
64
67
  (str, [index, arg]) => str.replace(`$${+index + 1}`, arg),
65
- localizedStrings[stringId] || DEFAULT_STRINGS[stringId] || ''
68
+ // Mitigation through denylisting.
69
+ // eslint-disable-next-line security/detect-object-injection
70
+ isForbiddenPropertyName(stringId) ? '' : localizedStrings[stringId] || DEFAULT_STRINGS[stringId] || ''
66
71
  );
67
72
  },
68
73
  [globalize, localizedStrings, plural]
@@ -1,9 +1,9 @@
1
- import { DirectLineActivity } from 'botframework-webchat-core';
2
1
  import { useCallback } from 'react';
2
+ import type { WebChatActivity } from 'botframework-webchat-core';
3
3
 
4
4
  import useMarkActivity from './internal/useMarkActivity';
5
5
 
6
- export default function useMarkActivityAsSpoken(): (activity: DirectLineActivity) => void {
6
+ export default function useMarkActivityAsSpoken(): (activity: WebChatActivity) => void {
7
7
  const markActivity = useMarkActivity();
8
8
 
9
9
  return useCallback(activity => markActivity(activity, 'speak', false), [markActivity]);
@@ -0,0 +1,3 @@
1
+ import useMarkActivityKeyAsRead from '../providers/ActivityAcknowledgement/useMarkActivityKeyAsRead';
2
+
3
+ export default useMarkActivityKeyAsRead;
@@ -0,0 +1,3 @@
1
+ import useMarkAllAsAcknowledged from '../providers/ActivityAcknowledgement/useMarkAllAsAcknowledged';
2
+
3
+ export default useMarkAllAsAcknowledged;
@@ -1,7 +1,6 @@
1
- import { DirectLineCardAction } from 'botframework-webchat-core';
2
-
1
+ import { PerformCardAction } from '../types/CardActionMiddleware';
3
2
  import useWebChatAPIContext from './internal/useWebChatAPIContext';
4
3
 
5
- export default function usePerformCardAction(): (cardAction: DirectLineCardAction) => void {
4
+ export default function usePerformCardAction(): PerformCardAction {
6
5
  return useWebChatAPIContext().onCardAction;
7
6
  }
@@ -1,8 +1,8 @@
1
- import { DirectLineActivity } from 'botframework-webchat-core';
2
1
  import Observable from 'core-js/features/observable';
2
+ import type { WebChatActivity } from 'botframework-webchat-core';
3
3
 
4
4
  import useWebChatAPIContext from './internal/useWebChatAPIContext';
5
5
 
6
- export default function usePostActivity(): (activity: DirectLineActivity) => Observable<string> {
6
+ export default function usePostActivity(): (activity: WebChatActivity) => Observable<string> {
7
7
  return useWebChatAPIContext().postActivity;
8
8
  }
@@ -5,7 +5,14 @@ import { useCallback } from 'react';
5
5
  import useTrackEvent from './useTrackEvent';
6
6
  import useWebChatAPIContext from './internal/useWebChatAPIContext';
7
7
 
8
- export default function useSendFiles(): (files: File[]) => void {
8
+ type PostActivityFile = {
9
+ name: string;
10
+ size: number;
11
+ thumbnail?: string;
12
+ url: string;
13
+ };
14
+
15
+ export default function useSendFiles(): (files: PostActivityFile[]) => void {
9
16
  const { sendFiles } = useWebChatAPIContext();
10
17
  const trackEvent = useTrackEvent();
11
18
 
@@ -1,11 +1,11 @@
1
- import { DirectLineActivity } from 'botframework-webchat-core';
1
+ import type { WebChatActivity } from 'botframework-webchat-core';
2
2
 
3
3
  import useGetSendTimeoutForActivity from './useGetSendTimeoutForActivity';
4
4
 
5
5
  let showDeprecationNotes = true;
6
6
 
7
7
  /** @deprecated Please use "useGetSendTimeoutForActivity()" instead. */
8
- export default function useSendTimeoutForActivity(activity: DirectLineActivity) {
8
+ export default function useSendTimeoutForActivity(activity: WebChatActivity) {
9
9
  if (showDeprecationNotes) {
10
10
  console.warn(
11
11
  'botframework-webchat: "useSendTimeoutForActivity" is deprecated and will be removed on or after 2022-07-28. Please use "useGetSendTimeoutForActivity()" instead.'
@@ -8,13 +8,10 @@ export default function useSubmitSendBox(): (method?: string, { channelData }?:
8
8
  const trackEvent = useTrackEvent();
9
9
 
10
10
  return useCallback(
11
- (...args) => {
12
- // We cannot use spread operator as it broken in Angular.
13
- const method = args[0] || 'keyboard';
14
-
11
+ (method: string, { channelData }: { channelData?: any } = {}) => {
15
12
  trackEvent('submitSendBox', method);
16
13
 
17
- return submitSendBox(...args);
14
+ return submitSendBox(method, channelData && { channelData });
18
15
  },
19
16
  [submitSendBox, trackEvent]
20
17
  );
@@ -1,5 +1,5 @@
1
- import { DirectLineSuggestedAction } from 'botframework-webchat-core';
2
1
  import { useCallback } from 'react';
2
+ import type { DirectLineSuggestedAction } from 'botframework-webchat-core';
3
3
 
4
4
  import { useSelector } from './internal/WebChatReduxContext';
5
5
  import useWebChatAPIContext from './internal/useWebChatAPIContext';
@@ -1,8 +1,8 @@
1
- import { DirectLineActivity } from 'botframework-webchat-core';
1
+ import type { WebChatActivity } from 'botframework-webchat-core';
2
2
 
3
3
  import useStyleOptions from './useStyleOptions';
4
4
 
5
- export default function useTimeoutForSend(): [number | ((activity: DirectLineActivity) => number)] {
5
+ export default function useTimeoutForSend(): [number | ((activity: WebChatActivity) => number)] {
6
6
  const [{ sendTimeout }] = useStyleOptions();
7
7
 
8
8
  return [sendTimeout];
@@ -1,6 +1,8 @@
1
1
  // Localize is designed to be elaboratively return multiple results and possibly exceeding complexity requirement
2
2
  /* eslint complexity: "off" */
3
3
 
4
+ import { isForbiddenPropertyName } from 'botframework-webchat-core';
5
+
4
6
  import deprecatingGetLocaleString from './getLocaleString';
5
7
  import getAllLocalizedStrings from './getAllLocalizedStrings';
6
8
  import getRTLList from './getRTLList';
@@ -20,11 +22,16 @@ function localize(id: string, language: string, ...args: string[]) {
20
22
 
21
23
  const allStrings = getAllLocalizedStrings();
22
24
  const normalizedLanguage = normalizeLanguage(language);
23
- const localizedStrings = allStrings[normalizedLanguage];
25
+
26
+ // Mitigation through denylisting.
27
+ // eslint-disable-next-line security/detect-object-injection
28
+ const localizedStrings = isForbiddenPropertyName(language) ? undefined : allStrings[normalizedLanguage];
24
29
 
25
30
  return Object.entries(args).reduce<boolean | string>(
26
31
  (value, [index, arg]) => (typeof value === 'string' ? value.replace(`$${+index + 1}`, arg) : value),
27
- (localizedStrings && localizedStrings[id]) || allStrings['en-US'][id] || ''
32
+ // Mitigation through denylisting.
33
+ // eslint-disable-next-line security/detect-object-injection
34
+ isForbiddenPropertyName(id) ? '' : (localizedStrings && localizedStrings[id]) || allStrings['en-US'][id] || ''
28
35
  );
29
36
  }
30
37
 
@@ -6,7 +6,8 @@
6
6
  "ACTIVITY_YOU_SAID_ALT": "لقد قلت:",
7
7
  "ACTIVITY_BOT_ATTACHED_ALT": "قام الروبوت بإرفاق:",
8
8
  "ACTIVITY_ERROR_BOX_TITLE": "رسالة الخطأ",
9
- "ACTIVITY_INTERACTIVE_LABEL_ALT": "اضغط على المفتاح ENTER للتفاعل.",
9
+ "ACTIVITY_INTERACTIVE_LABEL_ALT": "الرسالة تفاعلية. انقر للتفاعل.",
10
+ "ACTIVITY_INTERACTIVE_WITH_LINKS_LABEL_ALT": "ارتباط واحد أو أكثر في الرسالة. انقر للتفاعل.",
10
11
  "ACTIVITY_YOU_ATTACHED_ALT": "لقد قمت بإرفاق:",
11
12
  "ACTIVITY_NUM_ATTACHMENTS_ONE_ALT": "‏‏مرفق واحد.",
12
13
  "ACTIVITY_NUM_ATTACHMENTS_FEW_ALT": "$1 مرفق (مرفقات).",
@@ -43,6 +44,22 @@
43
44
  "FILE_CONTENT_DOWNLOADABLE_ALT": "تنزيل ملف '$1'",
44
45
  "FILE_CONTENT_DOWNLOADABLE_WITH_SIZE_ALT": "تنزيل الملف '$1' بحجم $2",
45
46
  "FILE_CONTENT_WITH_SIZE_ALT": "'$1' بحجم $2",
47
+ "KEYBOARD_HELP_CHAT_HISTORY_ACCESS_ITEMS_IN_MESSAGE_BODY": "مفتاح Enter",
48
+ "KEYBOARD_HELP_CHAT_HISTORY_ACCESS_ITEMS_IN_MESSAGE_HEADER": "الوصول إلى العناصر في الرسالة",
49
+ "KEYBOARD_HELP_CHAT_HISTORY_HEADER": "محفوظات الدردشة",
50
+ "KEYBOARD_HELP_CHAT_HISTORY_LEAVE_MESSAGE_BODY": "مفتاح Escape",
51
+ "KEYBOARD_HELP_CHAT_HISTORY_LEAVE_MESSAGE_HEADER": "ترك رسالة",
52
+ "KEYBOARD_HELP_CHAT_HISTORY_MOVE_BETWEEN_ITEMS_BODY": "مفتاح Tab\nمفتاح Shift + tab",
53
+ "KEYBOARD_HELP_CHAT_HISTORY_MOVE_BETWEEN_ITEMS_HEADER": "التنقل بين العناصر في رسالة",
54
+ "KEYBOARD_HELP_CHAT_HISTORY_MOVE_BETWEEN_MESSAGES_BODY": "مفتاح السهم لأعلى\nمفتاح السهم لأسفل",
55
+ "KEYBOARD_HELP_CHAT_HISTORY_MOVE_BETWEEN_MESSAGES_HEADER": "التنقل بين الرسائل",
56
+ "KEYBOARD_HELP_CHAT_WINDOW_BODY_DO_ACTION_BODY": "مفتاح Enter",
57
+ "KEYBOARD_HELP_CHAT_WINDOW_BODY_DO_ACTION_HEADER": "القيام بالإجراء",
58
+ "KEYBOARD_HELP_CHAT_WINDOW_BODY_MOVE_BETWEEN_ITEMS_BODY": "مفتاح Tab\nمفتاح Shift + tab",
59
+ "KEYBOARD_HELP_CHAT_WINDOW_BODY_MOVE_BETWEEN_ITEMS_HEADER": "التنقل بين العناصر في نافذة الدردشة",
60
+ "KEYBOARD_HELP_CHAT_WINDOW_HEADER": "نافذة الدردشة",
61
+ "KEYBOARD_HELP_CLOSE_BUTTON_ALT": "إغلاق",
62
+ "KEYBOARD_HELP_HEADER": "عناصر تحكم لوحة المفاتيح",
46
63
  "MARKDOWN_EXTERNAL_LINK_ALT": "فتح في نافذة جديدة؛ خارجية.",
47
64
  "RECEIPT_CARD_TAX": "الضريبة",
48
65
  "RECEIPT_CARD_TOTAL": "الإجمالي‬",
@@ -70,10 +87,12 @@
70
87
  "TOAST_ALT_WARN": "تحذير",
71
88
  "TOAST_DISMISS_BUTTON": "رفض",
72
89
  "TOAST_TITLE_ALT": "الإعلام",
73
- "TRANSCRIPT_ARIA_LABEL_ALT": "نسخة مكتوبة، اضغط على مفاتيح الأسهم للتنقل.",
74
- "TRANSCRIPT_ARIA_ROLE_ALT": "نسخة مكتوبة",
90
+ "TRANSCRIPT_ARIA_LABEL_ALT": "محفوظات الدردشة، اضغط على مفاتيح الأسهم للتنقل.",
91
+ "TRANSCRIPT_ARIA_ROLE_ALT": "محفوظات الدردشة",
92
+ "TRANSCRIPT_LIVE_REGION_INTERACTIVE_LABEL_ALT": "الرسالة تفاعلية. اضغط على مفتاح shift tab من مرتين إلى 3 مرات للتبديل إلى محفوظات الدردشة. ثم انقر فوق الرسالة للتفاعل.",
93
+ "TRANSCRIPT_LIVE_REGION_INTERACTIVE_WITH_LINKS_LABEL_ALT": "هناك ارتباط أو أكثر في الرسالة. اضغط على مفتاح shift tab من مرتين إلى 3 مرات للتبديل إلى محفوظات الدردشة. ثم انقر فوق الرسالة للتفاعل.",
75
94
  "TRANSCRIPT_MORE_MESSAGES": "المزيد من الرسائل",
76
95
  "TRANSCRIPT_NEW_MESSAGES": "رسائل جديدة",
77
- "TRANSCRIPT_TERMINATOR_TEXT": "نهاية النسخة المكتوبة",
96
+ "TRANSCRIPT_TERMINATOR_TEXT": "نهاية محفوظات الدردشة",
78
97
  "TYPING_INDICATOR_ALT": "إظهار مؤشر الكتابة"
79
98
  }
@@ -6,7 +6,8 @@
6
6
  "ACTIVITY_YOU_SAID_ALT": "Вие казахте:",
7
7
  "ACTIVITY_BOT_ATTACHED_ALT": "Прикачен бот:",
8
8
  "ACTIVITY_ERROR_BOX_TITLE": "Съобщение за грешка",
9
- "ACTIVITY_INTERACTIVE_LABEL_ALT": "Натиснете ENTER, за да взаимодействате.",
9
+ "ACTIVITY_INTERACTIVE_LABEL_ALT": "Съобщението е интерактивно. Щракнете, за да взаимодействате.",
10
+ "ACTIVITY_INTERACTIVE_WITH_LINKS_LABEL_ALT": "Една или повече връзки в съобщението. Щракнете, за да взаимодействате.",
10
11
  "ACTIVITY_YOU_ATTACHED_ALT": "Вие прикачихте:",
11
12
  "ACTIVITY_NUM_ATTACHMENTS_ONE_ALT": "1 прикачен файл.",
12
13
  "ACTIVITY_NUM_ATTACHMENTS_FEW_ALT": "$1 прикачени файлове.",
@@ -43,6 +44,22 @@
43
44
  "FILE_CONTENT_DOWNLOADABLE_ALT": "Изтегляне на файл „$1”",
44
45
  "FILE_CONTENT_DOWNLOADABLE_WITH_SIZE_ALT": "Изтегляне на файл „$1” с размер $2",
45
46
  "FILE_CONTENT_WITH_SIZE_ALT": "„$1” с размер $2",
47
+ "KEYBOARD_HELP_CHAT_HISTORY_ACCESS_ITEMS_IN_MESSAGE_BODY": "Клавиш Enter",
48
+ "KEYBOARD_HELP_CHAT_HISTORY_ACCESS_ITEMS_IN_MESSAGE_HEADER": "Достъп до елементи в съобщението",
49
+ "KEYBOARD_HELP_CHAT_HISTORY_HEADER": "Хронология на чата",
50
+ "KEYBOARD_HELP_CHAT_HISTORY_LEAVE_MESSAGE_BODY": "Клавиш Escape",
51
+ "KEYBOARD_HELP_CHAT_HISTORY_LEAVE_MESSAGE_HEADER": "Оставете съобщение",
52
+ "KEYBOARD_HELP_CHAT_HISTORY_MOVE_BETWEEN_ITEMS_BODY": "Клавиш Tab\nShift + клавиш Tab",
53
+ "KEYBOARD_HELP_CHAT_HISTORY_MOVE_BETWEEN_ITEMS_HEADER": "Придвижване между елементи в съобщение",
54
+ "KEYBOARD_HELP_CHAT_HISTORY_MOVE_BETWEEN_MESSAGES_BODY": "Клавиш за стрелка нагоре\nКлавиш за стрелка надолу",
55
+ "KEYBOARD_HELP_CHAT_HISTORY_MOVE_BETWEEN_MESSAGES_HEADER": "Придвижване между съобщения",
56
+ "KEYBOARD_HELP_CHAT_WINDOW_BODY_DO_ACTION_BODY": "Клавиш Enter",
57
+ "KEYBOARD_HELP_CHAT_WINDOW_BODY_DO_ACTION_HEADER": "Извършване на действие",
58
+ "KEYBOARD_HELP_CHAT_WINDOW_BODY_MOVE_BETWEEN_ITEMS_BODY": "Клавиш Tab\nShift + клавиш Tab",
59
+ "KEYBOARD_HELP_CHAT_WINDOW_BODY_MOVE_BETWEEN_ITEMS_HEADER": "Придвижване между елементите в прозореца за чат",
60
+ "KEYBOARD_HELP_CHAT_WINDOW_HEADER": "Прозорец за чат",
61
+ "KEYBOARD_HELP_CLOSE_BUTTON_ALT": "Затваряне",
62
+ "KEYBOARD_HELP_HEADER": "Контроли на клавиатурата",
46
63
  "MARKDOWN_EXTERNAL_LINK_ALT": "Отваря се в нов прозорец; външен.",
47
64
  "RECEIPT_CARD_TAX": "Данък",
48
65
  "RECEIPT_CARD_TOTAL": "Обща сума",
@@ -70,10 +87,12 @@
70
87
  "TOAST_ALT_WARN": "Предупреждение",
71
88
  "TOAST_DISMISS_BUTTON": "Отхвърляне",
72
89
  "TOAST_TITLE_ALT": "Известяване",
73
- "TRANSCRIPT_ARIA_LABEL_ALT": "Препис, натиснете клавишите със стрелки, за да навигирате.",
74
- "TRANSCRIPT_ARIA_ROLE_ALT": "препис",
90
+ "TRANSCRIPT_ARIA_LABEL_ALT": "Хронология на чата, натиснете клавишите със стрелки, за да навигирате.",
91
+ "TRANSCRIPT_ARIA_ROLE_ALT": "хронология на чата",
92
+ "TRANSCRIPT_LIVE_REGION_INTERACTIVE_LABEL_ALT": "Съобщението е интерактивно. Натиснете клавишите Shift и Tab 2 до 3 пъти, за да превключите към хронологията на чата. След това щракнете върху съобщението, за да взаимодействате.",
93
+ "TRANSCRIPT_LIVE_REGION_INTERACTIVE_WITH_LINKS_LABEL_ALT": "Има една или повече връзки в съобщението. Натиснете клавишите Shift и Tab 2 до 3 пъти, за да превключите към хронологията на чата. След това щракнете върху съобщението, за да взаимодействате.",
75
94
  "TRANSCRIPT_MORE_MESSAGES": "Още съобщения",
76
95
  "TRANSCRIPT_NEW_MESSAGES": "Нови съобщения",
77
- "TRANSCRIPT_TERMINATOR_TEXT": "Край на преписа",
96
+ "TRANSCRIPT_TERMINATOR_TEXT": "Край на хронологията на чата",
78
97
  "TYPING_INDICATOR_ALT": "Показване на индикатор за въвеждане"
79
98
  }
@@ -6,7 +6,8 @@
6
6
  "ACTIVITY_YOU_SAID_ALT": "Heu dit:",
7
7
  "ACTIVITY_BOT_ATTACHED_ALT": "Bot adjuntat:",
8
8
  "ACTIVITY_ERROR_BOX_TITLE": "Missatge d'error",
9
- "ACTIVITY_INTERACTIVE_LABEL_ALT": "Premeu la tecla RETORN per interactuar.",
9
+ "ACTIVITY_INTERACTIVE_LABEL_ALT": "El missatge és interactiu. Feu clic per interactuar.",
10
+ "ACTIVITY_INTERACTIVE_WITH_LINKS_LABEL_ALT": "Un o més enllaços del missatge. Feu clic per interactuar.",
10
11
  "ACTIVITY_YOU_ATTACHED_ALT": "Heu adjuntat:",
11
12
  "ACTIVITY_NUM_ATTACHMENTS_ONE_ALT": "1 fitxer adjunt.",
12
13
  "ACTIVITY_NUM_ATTACHMENTS_FEW_ALT": "$1 fitxers adjunts.",
@@ -43,6 +44,22 @@
43
44
  "FILE_CONTENT_DOWNLOADABLE_ALT": "Baixa el fitxer \"$1\"",
44
45
  "FILE_CONTENT_DOWNLOADABLE_WITH_SIZE_ALT": "Baixa el fitxer \"$1\" amb una mida de $2",
45
46
  "FILE_CONTENT_WITH_SIZE_ALT": "\"$1\" amb una mida de $2",
47
+ "KEYBOARD_HELP_CHAT_HISTORY_ACCESS_ITEMS_IN_MESSAGE_BODY": "Introduïu una clau",
48
+ "KEYBOARD_HELP_CHAT_HISTORY_ACCESS_ITEMS_IN_MESSAGE_HEADER": "Accediu als elements del missatge",
49
+ "KEYBOARD_HELP_CHAT_HISTORY_HEADER": "Historial de xat",
50
+ "KEYBOARD_HELP_CHAT_HISTORY_LEAVE_MESSAGE_BODY": "Tecla Esc",
51
+ "KEYBOARD_HELP_CHAT_HISTORY_LEAVE_MESSAGE_HEADER": "Deixa un missatge",
52
+ "KEYBOARD_HELP_CHAT_HISTORY_MOVE_BETWEEN_ITEMS_BODY": "Tecla de tabulació\nTecla Maj + tabulació",
53
+ "KEYBOARD_HELP_CHAT_HISTORY_MOVE_BETWEEN_ITEMS_HEADER": "Permet desplaçar-se entre els elements d'un missatge",
54
+ "KEYBOARD_HELP_CHAT_HISTORY_MOVE_BETWEEN_MESSAGES_BODY": "Tecla fletxa amunt\nTecla fletxa avall",
55
+ "KEYBOARD_HELP_CHAT_HISTORY_MOVE_BETWEEN_MESSAGES_HEADER": "Permet desplaçar-se entre els missatges",
56
+ "KEYBOARD_HELP_CHAT_WINDOW_BODY_DO_ACTION_BODY": "Introduïu una clau",
57
+ "KEYBOARD_HELP_CHAT_WINDOW_BODY_DO_ACTION_HEADER": "Executa l'acció",
58
+ "KEYBOARD_HELP_CHAT_WINDOW_BODY_MOVE_BETWEEN_ITEMS_BODY": "Tecla de tabulació\nTecla Maj + tabulació",
59
+ "KEYBOARD_HELP_CHAT_WINDOW_BODY_MOVE_BETWEEN_ITEMS_HEADER": "Permet desplaçar-se entre els elements de la finestra de xat",
60
+ "KEYBOARD_HELP_CHAT_WINDOW_HEADER": "Finestra del xat",
61
+ "KEYBOARD_HELP_CLOSE_BUTTON_ALT": "Tanca",
62
+ "KEYBOARD_HELP_HEADER": "Controls de teclat",
46
63
  "MARKDOWN_EXTERNAL_LINK_ALT": "S’obre en una finestra nova; externa.",
47
64
  "RECEIPT_CARD_TAX": "Impost",
48
65
  "RECEIPT_CARD_TOTAL": "Total",
@@ -70,10 +87,12 @@
70
87
  "TOAST_ALT_WARN": "Advertiment",
71
88
  "TOAST_DISMISS_BUTTON": "Descarta",
72
89
  "TOAST_TITLE_ALT": "Notificació",
73
- "TRANSCRIPT_ARIA_LABEL_ALT": "Transcripció, premeu les tecles amunt/avall per desplaçar-vos.",
74
- "TRANSCRIPT_ARIA_ROLE_ALT": "transcripció",
90
+ "TRANSCRIPT_ARIA_LABEL_ALT": "Historial de xat, premeu les tecles amunt/avall per desplaçar-vos.",
91
+ "TRANSCRIPT_ARIA_ROLE_ALT": "historial de xat",
92
+ "TRANSCRIPT_LIVE_REGION_INTERACTIVE_LABEL_ALT": "El missatge és interactiu. Premeu la tecla de tabulació entre 2 i 3 vegades per canviar a l'historial de xat. A continuació, feu clic al missatge per interactuar.",
93
+ "TRANSCRIPT_LIVE_REGION_INTERACTIVE_WITH_LINKS_LABEL_ALT": "Un o més enllaços al missatge. Premeu la tecla de tabulació entre 2 i 3 vegades per canviar a l'historial de xat. A continuació, feu clic al missatge per interactuar.",
75
94
  "TRANSCRIPT_MORE_MESSAGES": "Més missatges",
76
95
  "TRANSCRIPT_NEW_MESSAGES": "Missatges nous",
77
- "TRANSCRIPT_TERMINATOR_TEXT": "Fi de la transcripció",
96
+ "TRANSCRIPT_TERMINATOR_TEXT": "Fi de l'historial de xat",
78
97
  "TYPING_INDICATOR_ALT": "S'està mostrant l'indicador d'escriptura"
79
98
  }