botframework-webchat 4.13.0 → 4.14.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (253) hide show
  1. package/.eslintignore +1 -9
  2. package/.eslintrc.yml +5 -0
  3. package/README.md +33 -36
  4. package/babel.config.json +2 -2
  5. package/babel.sanitize-html.config.json +10 -0
  6. package/lib/AddFullBundle.d.ts +30 -0
  7. package/lib/AddFullBundle.d.ts.map +1 -0
  8. package/lib/AddFullBundle.js +77 -0
  9. package/lib/FullComposer.d.ts +8 -0
  10. package/lib/FullComposer.d.ts.map +1 -0
  11. package/lib/FullComposer.js +6 -16
  12. package/lib/FullReactWebChat.d.ts +8 -0
  13. package/lib/FullReactWebChat.d.ts.map +1 -0
  14. package/lib/FullReactWebChat.js +8 -23
  15. package/lib/adaptiveCards/AdaptiveCardsComposer.d.ts +10 -0
  16. package/lib/adaptiveCards/AdaptiveCardsComposer.d.ts.map +1 -0
  17. package/lib/adaptiveCards/AdaptiveCardsComposer.js +6 -2
  18. package/lib/adaptiveCards/AdaptiveCardsContext.d.ts +8 -0
  19. package/lib/adaptiveCards/AdaptiveCardsContext.d.ts.map +1 -0
  20. package/lib/adaptiveCards/AdaptiveCardsContext.js +3 -3
  21. package/lib/adaptiveCards/AdaptiveCardsStyleOptions.d.ts +5 -3
  22. package/lib/adaptiveCards/AdaptiveCardsStyleOptions.d.ts.map +1 -1
  23. package/lib/adaptiveCards/AdaptiveCardsStyleSet.d.ts +7 -0
  24. package/lib/adaptiveCards/AdaptiveCardsStyleSet.d.ts.map +1 -0
  25. package/lib/{FullBundleStyleOptions.js → adaptiveCards/AdaptiveCardsStyleSet.js} +0 -0
  26. package/lib/adaptiveCards/Attachment/AdaptiveCardAttachment.d.ts +9 -0
  27. package/lib/adaptiveCards/Attachment/AdaptiveCardAttachment.d.ts.map +1 -0
  28. package/lib/adaptiveCards/Attachment/AdaptiveCardAttachment.js +1 -1
  29. package/lib/adaptiveCards/Attachment/AdaptiveCardBuilder.d.ts +28 -0
  30. package/lib/adaptiveCards/Attachment/AdaptiveCardBuilder.d.ts.map +1 -0
  31. package/lib/adaptiveCards/Attachment/AdaptiveCardBuilder.js +4 -4
  32. package/lib/adaptiveCards/Attachment/AdaptiveCardContent.d.ts +9 -0
  33. package/lib/adaptiveCards/Attachment/AdaptiveCardContent.d.ts.map +1 -0
  34. package/lib/adaptiveCards/Attachment/AdaptiveCardContent.js +8 -4
  35. package/lib/adaptiveCards/Attachment/AdaptiveCardRenderer.d.ts +11 -0
  36. package/lib/adaptiveCards/Attachment/AdaptiveCardRenderer.d.ts.map +1 -0
  37. package/lib/adaptiveCards/Attachment/AdaptiveCardRenderer.js +210 -49
  38. package/lib/adaptiveCards/Attachment/AnimationCardContent.d.ts +10 -0
  39. package/lib/adaptiveCards/Attachment/AnimationCardContent.d.ts.map +1 -0
  40. package/lib/adaptiveCards/Attachment/AnimationCardContent.js +1 -1
  41. package/lib/adaptiveCards/Attachment/AudioCardContent.d.ts +10 -0
  42. package/lib/adaptiveCards/Attachment/AudioCardContent.d.ts.map +1 -0
  43. package/lib/adaptiveCards/Attachment/AudioCardContent.js +1 -1
  44. package/lib/adaptiveCards/Attachment/CommonCard.js +11 -6
  45. package/lib/adaptiveCards/Attachment/HeroCardContent.d.ts +10 -0
  46. package/lib/adaptiveCards/Attachment/HeroCardContent.d.ts.map +1 -0
  47. package/lib/adaptiveCards/Attachment/HeroCardContent.js +11 -6
  48. package/lib/adaptiveCards/Attachment/OAuthCardContent.d.ts +10 -0
  49. package/lib/adaptiveCards/Attachment/OAuthCardContent.d.ts.map +1 -0
  50. package/lib/adaptiveCards/Attachment/OAuthCardContent.js +11 -6
  51. package/lib/adaptiveCards/Attachment/ReceiptCardContent.d.ts +10 -0
  52. package/lib/adaptiveCards/Attachment/ReceiptCardContent.d.ts.map +1 -0
  53. package/lib/adaptiveCards/Attachment/ReceiptCardContent.js +11 -6
  54. package/lib/adaptiveCards/Attachment/SignInCardContent.d.ts +10 -0
  55. package/lib/adaptiveCards/Attachment/SignInCardContent.d.ts.map +1 -0
  56. package/lib/adaptiveCards/Attachment/SignInCardContent.js +1 -1
  57. package/lib/adaptiveCards/Attachment/ThumbnailCardContent.d.ts +10 -0
  58. package/lib/adaptiveCards/Attachment/ThumbnailCardContent.d.ts.map +1 -0
  59. package/lib/adaptiveCards/Attachment/ThumbnailCardContent.js +11 -6
  60. package/lib/adaptiveCards/Attachment/VideoCardContent.d.ts +20 -0
  61. package/lib/adaptiveCards/Attachment/VideoCardContent.d.ts.map +1 -0
  62. package/lib/adaptiveCards/Attachment/VideoCardContent.js +7 -5
  63. package/lib/adaptiveCards/AttachmentForScreenReader/AdaptiveCardAttachment.js +7 -3
  64. package/lib/adaptiveCards/AttachmentForScreenReader/RichCardAttachment.js +1 -1
  65. package/lib/adaptiveCards/Styles/StyleSet/AdaptiveCardRenderer.d.ts +56 -0
  66. package/lib/adaptiveCards/Styles/StyleSet/AdaptiveCardRenderer.d.ts.map +1 -0
  67. package/lib/adaptiveCards/Styles/StyleSet/AdaptiveCardRenderer.js +1 -1
  68. package/lib/adaptiveCards/Styles/adaptiveCardHostConfig.d.ts +126 -0
  69. package/lib/adaptiveCards/Styles/adaptiveCardHostConfig.d.ts.map +1 -0
  70. package/lib/adaptiveCards/Styles/adaptiveCardHostConfig.js +29 -9
  71. package/lib/adaptiveCards/Styles/createAdaptiveCardsStyleSet.d.ts +5 -0
  72. package/lib/adaptiveCards/Styles/createAdaptiveCardsStyleSet.d.ts.map +1 -0
  73. package/lib/adaptiveCards/Styles/createAdaptiveCardsStyleSet.js +2 -2
  74. package/lib/adaptiveCards/createAdaptiveCardsAttachmentForScreenReaderMiddleware.d.ts +3 -0
  75. package/lib/adaptiveCards/createAdaptiveCardsAttachmentForScreenReaderMiddleware.d.ts.map +1 -0
  76. package/lib/adaptiveCards/createAdaptiveCardsAttachmentForScreenReaderMiddleware.js +5 -11
  77. package/lib/adaptiveCards/createAdaptiveCardsAttachmentMiddleware.d.ts +3 -0
  78. package/lib/adaptiveCards/createAdaptiveCardsAttachmentMiddleware.d.ts.map +1 -0
  79. package/lib/adaptiveCards/createAdaptiveCardsAttachmentMiddleware.js +29 -39
  80. package/lib/adaptiveCards/defaultStyleOptions.d.ts +4 -0
  81. package/lib/adaptiveCards/defaultStyleOptions.d.ts.map +1 -0
  82. package/lib/adaptiveCards/defaultStyleOptions.js +3 -2
  83. package/lib/adaptiveCards/hooks/internal/useAdaptiveCardsContext.d.ts +3 -0
  84. package/lib/adaptiveCards/hooks/internal/useAdaptiveCardsContext.d.ts.map +1 -0
  85. package/lib/adaptiveCards/hooks/internal/useAdaptiveCardsContext.js +1 -1
  86. package/lib/adaptiveCards/hooks/internal/useParseAdaptiveCardJSON.d.ts +2 -0
  87. package/lib/adaptiveCards/hooks/internal/useParseAdaptiveCardJSON.d.ts.map +1 -0
  88. package/lib/adaptiveCards/hooks/internal/useParseAdaptiveCardJSON.js +7 -5
  89. package/lib/adaptiveCards/hooks/internal/useUniqueId.js +1 -1
  90. package/lib/adaptiveCards/hooks/useAdaptiveCardsHostConfig.d.ts +2 -0
  91. package/lib/adaptiveCards/hooks/useAdaptiveCardsHostConfig.d.ts.map +1 -0
  92. package/lib/adaptiveCards/hooks/useAdaptiveCardsHostConfig.js +3 -5
  93. package/lib/adaptiveCards/hooks/useAdaptiveCardsPackage.d.ts +3 -0
  94. package/lib/adaptiveCards/hooks/useAdaptiveCardsPackage.d.ts.map +1 -0
  95. package/lib/adaptiveCards/hooks/useAdaptiveCardsPackage.js +1 -1
  96. package/lib/adaptiveCards/normalizeStyleOptions.d.ts +3 -0
  97. package/lib/adaptiveCards/normalizeStyleOptions.d.ts.map +1 -0
  98. package/lib/adaptiveCards/normalizeStyleOptions.js +1 -1
  99. package/lib/addVersion.js +2 -2
  100. package/lib/createBrowserWebSpeechPonyfillFactory.d.ts +3 -0
  101. package/lib/createBrowserWebSpeechPonyfillFactory.d.ts.map +1 -0
  102. package/lib/createBrowserWebSpeechPonyfillFactory.js +7 -4
  103. package/lib/createCognitiveServicesSpeechServicesPonyfillFactory.d.ts +17 -0
  104. package/lib/createCognitiveServicesSpeechServicesPonyfillFactory.d.ts.map +1 -0
  105. package/lib/createCognitiveServicesSpeechServicesPonyfillFactory.js +17 -11
  106. package/lib/createDirectLine.d.ts +17 -0
  107. package/lib/createDirectLine.d.ts.map +1 -0
  108. package/lib/createDirectLine.js +3 -2
  109. package/lib/createDirectLineAppServiceExtension.d.ts +7 -0
  110. package/lib/createDirectLineAppServiceExtension.d.ts.map +1 -0
  111. package/lib/createDirectLineAppServiceExtension.js +1 -1
  112. package/lib/createDirectLineSpeechAdapters.d.ts +25 -0
  113. package/lib/createDirectLineSpeechAdapters.d.ts.map +1 -0
  114. package/lib/createDirectLineSpeechAdapters.js +57 -3
  115. package/lib/createFullStyleSet.d.ts +1106 -0
  116. package/lib/createFullStyleSet.d.ts.map +1 -0
  117. package/lib/createFullStyleSet.js +2 -2
  118. package/lib/fullBundleDefaultStyleOptions.js +4 -4
  119. package/lib/hooks/useStyleOptions.d.ts +3 -0
  120. package/lib/hooks/useStyleOptions.d.ts.map +1 -0
  121. package/lib/hooks/useStyleOptions.js +21 -0
  122. package/lib/index-es5.d.ts +24 -20
  123. package/lib/index-es5.d.ts.map +1 -1
  124. package/lib/index-es5.js +2 -2
  125. package/lib/index-minimal.d.ts +9 -6
  126. package/lib/index-minimal.d.ts.map +1 -1
  127. package/lib/index-minimal.js +8 -4
  128. package/lib/index.d.ts +154 -18
  129. package/lib/index.d.ts.map +1 -1
  130. package/lib/index.js +11 -7
  131. package/lib/renderMarkdown.d.ts +6 -0
  132. package/lib/renderMarkdown.d.ts.map +1 -0
  133. package/lib/renderMarkdown.js +5 -2
  134. package/lib/renderWebChat.d.ts +3 -0
  135. package/lib/renderWebChat.d.ts.map +1 -0
  136. package/lib/renderWebChat.js +1 -1
  137. package/lib/speech/CustomAudioInputStream.d.ts +94 -0
  138. package/lib/speech/CustomAudioInputStream.d.ts.map +1 -0
  139. package/lib/speech/CustomAudioInputStream.js +416 -0
  140. package/lib/speech/bytesPerSample.d.ts +2 -0
  141. package/lib/speech/bytesPerSample.d.ts.map +1 -0
  142. package/lib/speech/bytesPerSample.js +12 -0
  143. package/lib/speech/createAudioConfig.d.ts +23 -0
  144. package/lib/speech/createAudioConfig.d.ts.map +1 -0
  145. package/lib/speech/createAudioConfig.js +84 -0
  146. package/lib/speech/createAudioContext.d.ts +3 -0
  147. package/lib/speech/createAudioContext.d.ts.map +1 -0
  148. package/lib/speech/createAudioContext.js +22 -0
  149. package/lib/speech/createMicrophoneAudioConfigAndAudioContext.d.ts +9 -0
  150. package/lib/speech/createMicrophoneAudioConfigAndAudioContext.d.ts.map +1 -0
  151. package/lib/speech/createMicrophoneAudioConfigAndAudioContext.js +161 -0
  152. package/lib/speech/getUserMedia.d.ts +2 -0
  153. package/lib/speech/getUserMedia.d.ts.map +1 -0
  154. package/lib/speech/getUserMedia.js +25 -0
  155. package/lib/types/AdaptiveCardsPackage.d.ts +13 -0
  156. package/lib/types/AdaptiveCardsPackage.d.ts.map +1 -0
  157. package/lib/types/AdaptiveCardsPackage.js +2 -0
  158. package/lib/types/CognitiveServicesAudioOutputFormat.d.ts +3 -0
  159. package/lib/types/CognitiveServicesAudioOutputFormat.d.ts.map +1 -0
  160. package/lib/types/CognitiveServicesAudioOutputFormat.js +2 -0
  161. package/lib/types/CognitiveServicesCredentials.d.ts +18 -0
  162. package/lib/types/CognitiveServicesCredentials.d.ts.map +1 -0
  163. package/lib/types/CognitiveServicesCredentials.js +2 -0
  164. package/lib/types/CognitiveServicesTextNormalization.d.ts +3 -0
  165. package/lib/types/CognitiveServicesTextNormalization.d.ts.map +1 -0
  166. package/lib/types/CognitiveServicesTextNormalization.js +2 -0
  167. package/lib/{FullBundleStyleOptions.d.ts → types/FullBundleStyleOptions.d.ts} +1 -1
  168. package/lib/types/FullBundleStyleOptions.d.ts.map +1 -0
  169. package/lib/types/FullBundleStyleOptions.js +2 -0
  170. package/lib/useComposerProps.d.ts +22 -0
  171. package/lib/useComposerProps.d.ts.map +1 -0
  172. package/lib/useComposerProps.js +6 -8
  173. package/package.json +51 -46
  174. package/src/AddFullBundle.tsx +94 -0
  175. package/src/FullComposer.tsx +38 -0
  176. package/src/FullReactWebChat.tsx +32 -0
  177. package/src/__tests__/createDirectLine.spec.js +2 -0
  178. package/src/__tests__/renderMarkdown.spec.js +1 -1
  179. package/src/__tests__/versionTag.es5.spec.js +3 -0
  180. package/src/__tests__/versionTag.full.spec.js +3 -0
  181. package/src/__tests__/versionTag.minimal.spec.js +3 -0
  182. package/src/adaptiveCards/{AdaptiveCardsComposer.js → AdaptiveCardsComposer.tsx} +17 -5
  183. package/src/adaptiveCards/AdaptiveCardsContext.ts +12 -0
  184. package/src/adaptiveCards/AdaptiveCardsStyleOptions.ts +5 -3
  185. package/src/adaptiveCards/AdaptiveCardsStyleSet.ts +7 -0
  186. package/src/adaptiveCards/Attachment/{AdaptiveCardAttachment.js → AdaptiveCardAttachment.tsx} +8 -2
  187. package/src/adaptiveCards/Attachment/AdaptiveCardBuilder.ts +21 -15
  188. package/src/adaptiveCards/Attachment/{AdaptiveCardContent.js → AdaptiveCardContent.tsx} +8 -2
  189. package/src/adaptiveCards/Attachment/{AdaptiveCardRenderer.js → AdaptiveCardRenderer.tsx} +228 -46
  190. package/src/adaptiveCards/Attachment/{AnimationCardContent.js → AnimationCardContent.tsx} +9 -2
  191. package/src/adaptiveCards/Attachment/{AudioCardContent.js → AudioCardContent.tsx} +9 -2
  192. package/src/adaptiveCards/Attachment/CommonCard.js +2 -1
  193. package/src/adaptiveCards/Attachment/{HeroCardContent.js → HeroCardContent.tsx} +12 -3
  194. package/src/adaptiveCards/Attachment/{OAuthCardContent.js → OAuthCardContent.tsx} +11 -3
  195. package/src/adaptiveCards/Attachment/{ReceiptCardContent.js → ReceiptCardContent.tsx} +58 -28
  196. package/src/adaptiveCards/Attachment/{SignInCardContent.js → SignInCardContent.tsx} +9 -2
  197. package/src/adaptiveCards/Attachment/{ThumbnailCardContent.js → ThumbnailCardContent.tsx} +12 -3
  198. package/src/adaptiveCards/Attachment/{VideoCardContent.js → VideoCardContent.tsx} +15 -3
  199. package/src/adaptiveCards/Styles/StyleSet/AdaptiveCardRenderer.ts +1 -1
  200. package/src/adaptiveCards/Styles/adaptiveCardHostConfig.ts +28 -8
  201. package/src/adaptiveCards/Styles/createAdaptiveCardsStyleSet.spec.js +2 -0
  202. package/src/adaptiveCards/Styles/createAdaptiveCardsStyleSet.ts +7 -4
  203. package/src/adaptiveCards/{createAdaptiveCardsAttachmentForScreenReaderMiddleware.js → createAdaptiveCardsAttachmentForScreenReaderMiddleware.tsx} +16 -15
  204. package/src/adaptiveCards/createAdaptiveCardsAttachmentMiddleware.tsx +45 -0
  205. package/src/adaptiveCards/defaultStyleOptions.ts +2 -1
  206. package/src/adaptiveCards/hooks/internal/{useAdaptiveCardsContext.js → useAdaptiveCardsContext.ts} +1 -1
  207. package/src/adaptiveCards/hooks/internal/{useParseAdaptiveCardJSON.js → useParseAdaptiveCardJSON.ts} +5 -2
  208. package/src/adaptiveCards/hooks/internal/{useUniqueId.js → useUniqueId.ts} +1 -1
  209. package/src/adaptiveCards/hooks/{useAdaptiveCardsHostConfig.js → useAdaptiveCardsHostConfig.ts} +6 -8
  210. package/src/adaptiveCards/hooks/{useAdaptiveCardsPackage.js → useAdaptiveCardsPackage.ts} +2 -1
  211. package/src/createBrowserWebSpeechPonyfillFactory.ts +21 -0
  212. package/src/createCognitiveServicesSpeechServicesPonyfillFactory.spec.js +37 -6
  213. package/src/createCognitiveServicesSpeechServicesPonyfillFactory.ts +78 -0
  214. package/src/createDirectLine.ts +65 -0
  215. package/src/createDirectLineAppServiceExtension.ts +22 -0
  216. package/src/createDirectLineSpeechAdapters.ts +84 -0
  217. package/src/createFullStyleSet.ts +2 -2
  218. package/src/fullBundleDefaultStyleOptions.ts +3 -3
  219. package/src/hooks/useStyleOptions.ts +9 -0
  220. package/src/index-es5.ts +0 -2
  221. package/src/index-minimal.ts +3 -2
  222. package/src/index.ts +22 -10
  223. package/src/{renderMarkdown.js → renderMarkdown.ts} +8 -1
  224. package/src/renderWebChat.tsx +6 -0
  225. package/src/speech/CustomAudioInputStream.ts +325 -0
  226. package/src/speech/bytesPerSample.ts +4 -0
  227. package/src/speech/createAudioConfig.spec.js +23 -0
  228. package/src/speech/createAudioConfig.ts +70 -0
  229. package/src/speech/createAudioContext.ts +16 -0
  230. package/src/speech/createMicrophoneAudioConfigAndAudioContext.ts +146 -0
  231. package/src/speech/getUserMedia.ts +14 -0
  232. package/src/tsconfig.json +1 -1
  233. package/src/types/AdaptiveCardsPackage.ts +23 -0
  234. package/src/types/CognitiveServicesAudioOutputFormat.ts +28 -0
  235. package/src/types/CognitiveServicesCredentials.ts +28 -0
  236. package/src/types/CognitiveServicesTextNormalization.ts +3 -0
  237. package/src/{FullBundleStyleOptions.ts → types/FullBundleStyleOptions.ts} +1 -1
  238. package/src/{useComposerProps.js → useComposerProps.ts} +21 -11
  239. package/webpack.config.js +46 -6
  240. package/lib/FullBundleStyleOptions.d.ts.map +0 -1
  241. package/src/FullComposer.js +0 -40
  242. package/src/FullReactWebChat.js +0 -47
  243. package/src/adaptiveCards/AdaptiveCardsContext.js +0 -5
  244. package/src/adaptiveCards/createAdaptiveCardsAttachmentMiddleware.js +0 -41
  245. package/src/createBrowserWebSpeechPonyfillFactory.js +0 -16
  246. package/src/createCognitiveServicesSpeechServicesPonyfillFactory.js +0 -58
  247. package/src/createDirectLine.js +0 -38
  248. package/src/createDirectLineAppServiceExtension.js +0 -12
  249. package/src/createDirectLineSpeechAdapters.js +0 -5
  250. package/src/index-es5.tsx +0 -49
  251. package/src/index-minimal.tsx +0 -9
  252. package/src/index.tsx +0 -45
  253. package/src/renderWebChat.js +0 -6
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "botframework-webchat",
3
- "version": "4.13.0",
3
+ "version": "4.14.2",
4
4
  "description": "A highly-customizable web-based chat client for Azure Bot Services.",
5
5
  "main": "lib/index.js",
6
+ "typings": "lib/index.d.ts",
6
7
  "publishConfig": {
7
8
  "access": "public"
8
9
  },
@@ -21,68 +22,72 @@
21
22
  "build:babel": "babel src --extensions .js,.ts,.tsx --ignore **/*.spec.js,**/*.spec.ts,**/*.spec.tsx,**/*.test.js,**/*.test.ts,**/*.test.tsx,__tests__/**/*.js,__tests__/**/*.ts,__tests__/**/*.tsx --out-dir lib --verbose",
22
23
  "build:typescript": "tsc --project src/tsconfig.json",
23
24
  "build:webpack": "webpack-cli",
24
- "eslint": "eslint src/**/*.js src/**/*.ts --fix",
25
- "prestart": "npm run build:babel",
25
+ "eslint": "npm run precommit",
26
+ "precommit": "npm run precommit:eslint -- src && npm run precommit:typecheck",
27
+ "precommit:eslint": "eslint",
28
+ "precommit:typecheck": "tsc --project ./src --emitDeclarationOnly false --esModuleInterop true --noEmit --pretty false",
26
29
  "start": "concurrently --kill-others --names \"babel,tsc,webpack\" \"npm run start:babel\" \"npm run start:typescript\" \"npm run start:webpack\"",
27
30
  "start:babel": "npm run build:babel -- --skip-initial-build --watch",
28
31
  "start:typescript": "npm run build:typescript -- --watch",
29
32
  "start:webpack": "npm run build:webpack -- --watch"
30
33
  },
31
34
  "dependencies": {
32
- "@babel/runtime": "7.13.10",
33
- "adaptivecards": "2.5.0",
34
- "botframework-directlinejs": "0.14.1",
35
- "botframework-directlinespeech-sdk": "4.13.0",
36
- "botframework-webchat-api": "4.13.0",
37
- "botframework-webchat-component": "4.13.0",
38
- "botframework-webchat-core": "4.13.0",
39
- "classnames": "2.2.6",
40
- "core-js": "3.9.1",
41
- "markdown-it": "12.0.4",
35
+ "@babel/runtime": "7.14.6",
36
+ "adaptivecards": "2.9.0",
37
+ "botframework-directlinejs": "0.15.0",
38
+ "botframework-directlinespeech-sdk": "4.14.2",
39
+ "botframework-webchat-api": "4.14.2",
40
+ "botframework-webchat-component": "4.14.2",
41
+ "botframework-webchat-core": "4.14.2",
42
+ "classnames": "2.3.1",
43
+ "core-js": "3.15.2",
44
+ "markdown-it": "12.1.0",
42
45
  "markdown-it-attrs": "4.0.0",
43
- "markdown-it-attrs-es5": "1.2.0",
46
+ "markdown-it-attrs-es5": "2.0.0",
44
47
  "markdown-it-for-inline": "0.1.1",
45
48
  "math-random": "2.0.1",
46
- "memoize-one": "5.1.1",
47
- "microsoft-cognitiveservices-speech-sdk": "1.15.1",
49
+ "memoize-one": "5.2.1",
50
+ "microsoft-cognitiveservices-speech-sdk": "1.17.0",
48
51
  "prop-types": "15.7.2",
49
- "sanitize-html": "1.27.5",
50
- "url-search-params-polyfill": "8.1.0",
51
- "web-speech-cognitive-services": "7.1.0",
52
- "whatwg-fetch": "3.4.1"
52
+ "sanitize-html": "2.4.0",
53
+ "url-search-params-polyfill": "8.1.1",
54
+ "uuid": "8.3.2",
55
+ "web-speech-cognitive-services": "7.1.1",
56
+ "whatwg-fetch": "3.6.2"
53
57
  },
54
58
  "devDependencies": {
55
- "@babel/cli": "^7.13.10",
56
- "@babel/core": "^7.13.10",
57
- "@babel/plugin-proposal-class-properties": "^7.13.0",
58
- "@babel/plugin-proposal-object-rest-spread": "^7.13.8",
59
- "@babel/plugin-transform-runtime": "^7.13.10",
60
- "@babel/preset-env": "^7.13.10",
61
- "@babel/preset-react": "^7.12.13",
62
- "@babel/preset-typescript": "^7.13.0",
63
- "@types/node": "^14.14.35",
64
- "@types/react": "^16.9.55",
65
- "@typescript-eslint/eslint-plugin": "^4.19.0",
66
- "@typescript-eslint/parser": "^4.19.0",
59
+ "@babel/cli": "^7.14.5",
60
+ "@babel/core": "^7.14.6",
61
+ "@babel/plugin-proposal-class-properties": "^7.14.5",
62
+ "@babel/plugin-proposal-object-rest-spread": "^7.14.7",
63
+ "@babel/plugin-transform-runtime": "^7.14.5",
64
+ "@babel/preset-env": "^7.14.7",
65
+ "@babel/preset-react": "^7.14.5",
66
+ "@babel/preset-typescript": "^7.14.5",
67
+ "@types/node": "^16.3.1",
68
+ "@types/react": "^17.0.14",
69
+ "@typescript-eslint/eslint-plugin": "^4.28.3",
70
+ "@typescript-eslint/parser": "^4.28.3",
71
+ "babel-loader": "^8.2.2",
67
72
  "babel-plugin-istanbul": "^6.0.0",
68
73
  "babel-plugin-transform-inline-environment-variables": "^0.4.3",
69
- "concurrently": "^6.0.0",
70
- "eslint": "^7.22.0",
71
- "eslint-plugin-prettier": "^3.3.1",
72
- "eslint-plugin-react": "^7.22.0",
74
+ "concurrently": "^6.2.0",
75
+ "eslint": "^7.30.0",
76
+ "eslint-plugin-prettier": "^3.4.0",
77
+ "eslint-plugin-react": "^7.24.0",
73
78
  "eslint-plugin-react-hooks": "^4.2.0",
74
- "isomorphic-react": "4.13.0",
75
- "isomorphic-react-dom": "4.13.0",
76
- "prettier": "^2.2.1",
77
- "source-map-loader": "^1.1.2",
79
+ "isomorphic-react": "4.14.2",
80
+ "isomorphic-react-dom": "4.14.2",
81
+ "prettier": "^2.3.2",
82
+ "source-map-loader": "^1.1.3",
78
83
  "terser-webpack-plugin": "^4.2.3",
79
- "typescript": "^4.2.3",
80
- "webpack": "^4.44.2",
81
- "webpack-cli": "^4.2.0",
82
- "webpack-stats-plugin": "^1.0.2"
84
+ "typescript": "^4.3.5",
85
+ "webpack": "^5.45.1",
86
+ "webpack-cli": "^4.6.0",
87
+ "webpack-stats-plugin": "^1.0.3"
83
88
  },
84
89
  "peerDependencies": {
85
- "react": "16.8.6",
86
- "react-dom": "16.8.6"
90
+ "react": ">= 16.8.6",
91
+ "react-dom": ">= 16.8.6"
87
92
  }
88
93
  }
@@ -0,0 +1,94 @@
1
+ import { AttachmentForScreenReaderMiddleware, AttachmentMiddleware, StyleOptions } from 'botframework-webchat-api';
2
+ import { OneOrMany, singleToArray, warnOnce } from 'botframework-webchat-core';
3
+ import PropTypes from 'prop-types';
4
+ import React, { FC, ReactNode } from 'react';
5
+
6
+ import { StrictFullBundleStyleOptions } from './types/FullBundleStyleOptions';
7
+ import AdaptiveCardsComposer from './adaptiveCards/AdaptiveCardsComposer';
8
+ import AdaptiveCardsPackage from './types/AdaptiveCardsPackage';
9
+ import AdaptiveCardsStyleOptions from './adaptiveCards/AdaptiveCardsStyleOptions';
10
+ import useComposerProps from './useComposerProps';
11
+
12
+ type AddFullBundleProps = {
13
+ adaptiveCardsHostConfig?: any;
14
+ adaptiveCardsPackage?: AdaptiveCardsPackage;
15
+ attachmentForScreenReaderMiddleware?: OneOrMany<AttachmentForScreenReaderMiddleware>;
16
+ attachmentMiddleware?: OneOrMany<AttachmentMiddleware>;
17
+ children: ({ extraStyleSet }: { extraStyleSet: any }) => ReactNode;
18
+ renderMarkdown?: (markdown: string, { markdownRespectCRLF: boolean }, { externalLinkAlt: string }) => string;
19
+ styleOptions?: StyleOptions & AdaptiveCardsStyleOptions;
20
+ styleSet?: any & { options: StrictFullBundleStyleOptions };
21
+
22
+ /** @deprecated Rename to "adaptiveCardsHostConfig" */
23
+ adaptiveCardHostConfig?: any;
24
+ };
25
+
26
+ const adaptiveCardHostConfigDeprecation = warnOnce(
27
+ '"adaptiveCardHostConfig" is deprecated. Please use "adaptiveCardsHostConfig" instead. "adaptiveCardHostConfig" will be removed on or after 2022-01-01.'
28
+ );
29
+
30
+ const AddFullBundle: FC<AddFullBundleProps> = ({
31
+ adaptiveCardHostConfig,
32
+ adaptiveCardsHostConfig,
33
+ adaptiveCardsPackage,
34
+ attachmentForScreenReaderMiddleware,
35
+ attachmentMiddleware,
36
+ children,
37
+ renderMarkdown,
38
+ styleOptions,
39
+ styleSet
40
+ }) => {
41
+ adaptiveCardHostConfig && adaptiveCardHostConfigDeprecation();
42
+
43
+ const patchedProps = useComposerProps({
44
+ attachmentForScreenReaderMiddleware: singleToArray(attachmentForScreenReaderMiddleware),
45
+ attachmentMiddleware: singleToArray(attachmentMiddleware),
46
+ renderMarkdown,
47
+ styleOptions,
48
+ styleSet
49
+ });
50
+
51
+ return (
52
+ <AdaptiveCardsComposer
53
+ adaptiveCardsHostConfig={adaptiveCardHostConfig || adaptiveCardsHostConfig}
54
+ adaptiveCardsPackage={adaptiveCardsPackage}
55
+ >
56
+ {children(patchedProps)}
57
+ </AdaptiveCardsComposer>
58
+ );
59
+ };
60
+
61
+ AddFullBundle.defaultProps = {
62
+ adaptiveCardHostConfig: undefined,
63
+ adaptiveCardsHostConfig: undefined,
64
+ adaptiveCardsPackage: undefined,
65
+ attachmentForScreenReaderMiddleware: undefined,
66
+ attachmentMiddleware: undefined,
67
+ renderMarkdown: undefined,
68
+ styleOptions: undefined,
69
+ styleSet: undefined
70
+ };
71
+
72
+ AddFullBundle.propTypes = {
73
+ adaptiveCardHostConfig: PropTypes.any,
74
+ adaptiveCardsHostConfig: PropTypes.any,
75
+ // TypeScript class is not mappable to PropTypes.func
76
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
77
+ // @ts-ignore
78
+ adaptiveCardsPackage: PropTypes.shape({
79
+ AdaptiveCard: PropTypes.func.isRequired,
80
+ HorizontalAlignment: PropTypes.any.isRequired,
81
+ TextSize: PropTypes.any.isRequired,
82
+ TextWeight: PropTypes.any.isRequired
83
+ }),
84
+ attachmentForScreenReaderMiddleware: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.func), PropTypes.func]),
85
+ attachmentMiddleware: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.func), PropTypes.func]),
86
+ children: PropTypes.func.isRequired,
87
+ renderMarkdown: PropTypes.func,
88
+ styleOptions: PropTypes.any,
89
+ styleSet: PropTypes.any
90
+ };
91
+
92
+ export default AddFullBundle;
93
+
94
+ export type { AddFullBundleProps };
@@ -0,0 +1,38 @@
1
+ import { ComposerProps } from 'botframework-webchat-api';
2
+ import { Components } from 'botframework-webchat-component';
3
+ import PropTypes from 'prop-types';
4
+ import React, { FC } from 'react';
5
+
6
+ import AddFullBundle, { AddFullBundleProps } from './AddFullBundle';
7
+
8
+ const { Composer } = Components;
9
+
10
+ type FullComposerProps = ComposerProps & AddFullBundleProps;
11
+
12
+ const FullComposer: FC<FullComposerProps> = props => (
13
+ <AddFullBundle {...props}>
14
+ {extraProps => (
15
+ <Composer {...props} {...extraProps}>
16
+ {props.children}
17
+ </Composer>
18
+ )}
19
+ </AddFullBundle>
20
+ );
21
+
22
+ FullComposer.defaultProps = {
23
+ ...Composer.defaultProps,
24
+ adaptiveCardsHostConfig: undefined,
25
+ adaptiveCardsPackage: undefined,
26
+ children: undefined
27
+ };
28
+
29
+ FullComposer.propTypes = {
30
+ ...Composer.propTypes,
31
+ adaptiveCardsHostConfig: PropTypes.any,
32
+ adaptiveCardsPackage: PropTypes.any,
33
+ children: PropTypes.any
34
+ };
35
+
36
+ export default FullComposer;
37
+
38
+ export type { FullComposerProps };
@@ -0,0 +1,32 @@
1
+ import PropTypes from 'prop-types';
2
+ import React, { VFC } from 'react';
3
+ import ReactWebChat, { ReactWebChatProps } from 'botframework-webchat-component';
4
+
5
+ import AddFullBundle, { AddFullBundleProps } from './AddFullBundle';
6
+
7
+ type FullReactWebChatProps = ReactWebChatProps & Omit<AddFullBundleProps, 'children'>;
8
+
9
+ // Add additional props to <WebChat>, so it support additional features
10
+ const FullReactWebChat: VFC<FullReactWebChatProps> = props => (
11
+ <AddFullBundle {...props}>{extraProps => <ReactWebChat {...props} {...extraProps} />}</AddFullBundle>
12
+ );
13
+
14
+ FullReactWebChat.defaultProps = {
15
+ ...ReactWebChat.defaultProps,
16
+ adaptiveCardHostConfig: undefined,
17
+ adaptiveCardsHostConfig: undefined,
18
+ adaptiveCardsPackage: undefined,
19
+ renderMarkdown: undefined
20
+ };
21
+
22
+ FullReactWebChat.propTypes = {
23
+ ...ReactWebChat.propTypes,
24
+ adaptiveCardHostConfig: PropTypes.any,
25
+ adaptiveCardsHostConfig: PropTypes.any,
26
+ adaptiveCardsPackage: PropTypes.any,
27
+ renderMarkdown: PropTypes.func
28
+ };
29
+
30
+ export default FullReactWebChat;
31
+
32
+ export type { FullReactWebChatProps };
@@ -1,3 +1,5 @@
1
+ /** @jest-environment jsdom */
2
+
1
3
  jest.mock('botframework-directlinejs', () => {
2
4
  class DirectLine {
3
5
  constructor({ botAgent }) {
@@ -17,7 +17,7 @@ describe('renderMarkdown', () => {
17
17
  );
18
18
  });
19
19
 
20
- it('should respect CRFL', () => {
20
+ it('should respect CRLF', () => {
21
21
  const styleOptions = { markdownRespectCRLF: true };
22
22
 
23
23
  expect(renderMarkdown('Same Line.\n\rSame Line.\r\n2nd line.', styleOptions)).toBe(
@@ -1,3 +1,6 @@
1
+ /** @jest-environment jsdom */
2
+ /* globals process */
3
+
1
4
  process.env.npm_package_version = '0.0.0-test';
2
5
 
3
6
  describe('loading Web Chat', () => {
@@ -1,3 +1,6 @@
1
+ /** @jest-environment jsdom */
2
+ /* globals process */
3
+
1
4
  process.env.npm_package_version = '0.0.0-test';
2
5
 
3
6
  describe('loading Web Chat', () => {
@@ -1,3 +1,6 @@
1
+ /** @jest-environment jsdom */
2
+ /* globals process */
3
+
1
4
  process.env.npm_package_version = '0.0.0-test';
2
5
 
3
6
  describe('loading Web Chat', () => {
@@ -1,13 +1,25 @@
1
1
  import * as defaultAdaptiveCardsPackage from 'adaptivecards';
2
2
  import PropTypes from 'prop-types';
3
- import React, { useMemo } from 'react';
3
+ import React, { FC, ReactNode, useMemo } from 'react';
4
4
 
5
5
  import AdaptiveCardsContext from './AdaptiveCardsContext';
6
+ import AdaptiveCardsPackage from '../types/AdaptiveCardsPackage';
6
7
 
7
- const AdaptiveCardsComposer = ({ adaptiveCardsHostConfig, adaptiveCardsPackage, children }) => {
8
- const patchedAdaptiveCardsPackage = useMemo(() => adaptiveCardsPackage || defaultAdaptiveCardsPackage, [
9
- adaptiveCardsPackage
10
- ]);
8
+ type AdaptiveCardsComposerProps = {
9
+ adaptiveCardsHostConfig: any;
10
+ adaptiveCardsPackage: AdaptiveCardsPackage;
11
+ children: ReactNode;
12
+ };
13
+
14
+ const AdaptiveCardsComposer: FC<AdaptiveCardsComposerProps> = ({
15
+ adaptiveCardsHostConfig,
16
+ adaptiveCardsPackage,
17
+ children
18
+ }) => {
19
+ const patchedAdaptiveCardsPackage = useMemo(
20
+ () => adaptiveCardsPackage || defaultAdaptiveCardsPackage,
21
+ [adaptiveCardsPackage]
22
+ );
11
23
 
12
24
  const adaptiveCardsContext = useMemo(
13
25
  () => ({
@@ -0,0 +1,12 @@
1
+ import { createContext } from 'react';
2
+
3
+ import AdaptiveCardsPackage from '../types/AdaptiveCardsPackage';
4
+
5
+ type AdaptiveCardsContext = {
6
+ adaptiveCardsPackage: AdaptiveCardsPackage;
7
+ hostConfigFromProps: any;
8
+ };
9
+
10
+ const AdaptiveCardsContext = createContext<AdaptiveCardsContext>(undefined);
11
+
12
+ export default AdaptiveCardsContext;
@@ -1,7 +1,9 @@
1
+ /**
2
+ * Adaptive Cards styling
3
+ */
1
4
  type AdaptiveCardsStyleOptions = {
2
- /**
3
- * Adaptive Cards styling
4
- */
5
+ /** Adaptive Cards: Specify the maximum schema version supported by the Adaptive Card serializer. */
6
+ adaptiveCardsParserMaxVersion?: string;
5
7
 
6
8
  /**
7
9
  * Adaptive Cards styling for 'emphasis' container style
@@ -0,0 +1,7 @@
1
+ type AdaptiveCardsStyleSet = {
2
+ adaptiveCardRenderer: any;
3
+ animationCardAttachment: any;
4
+ audioCardAttachment: any;
5
+ };
6
+
7
+ export default AdaptiveCardsStyleSet;
@@ -1,9 +1,15 @@
1
+ import { DirectLineAttachment } from 'botframework-webchat-core';
1
2
  import PropTypes from 'prop-types';
2
- import React from 'react';
3
+ import React, { FC } from 'react';
3
4
 
4
5
  import AdaptiveCardContent from './AdaptiveCardContent';
5
6
 
6
- const AdaptiveCardAttachment = ({ attachment: { content }, disabled }) => (
7
+ type AdaptiveCardAttachmentProps = {
8
+ attachment: DirectLineAttachment;
9
+ disabled?: boolean;
10
+ };
11
+
12
+ const AdaptiveCardAttachment: FC<AdaptiveCardAttachmentProps> = ({ attachment: { content }, disabled }) => (
7
13
  <AdaptiveCardContent content={content} disabled={disabled} />
8
14
  );
9
15
 
@@ -16,14 +16,16 @@ import {
16
16
  TextWeight
17
17
  } from 'adaptivecards';
18
18
 
19
- import { CardAction } from 'botframework-directlinejs';
19
+ import { DirectLineCardAction } from 'botframework-webchat-core';
20
+ import AdaptiveCardsPackage from '../../types/AdaptiveCardsPackage';
21
+ import AdaptiveCardsStyleOptions from '../AdaptiveCardsStyleOptions';
20
22
 
21
23
  export interface BotFrameworkCardAction {
22
- __isBotFrameworkCardAction: boolean;
23
- cardAction: CardAction;
24
+ __isBotFrameworkCardAction: true;
25
+ cardAction: DirectLineCardAction;
24
26
  }
25
27
 
26
- function addCardAction(cardAction: CardAction, includesOAuthButtons?: boolean) {
28
+ function addCardAction(cardAction: DirectLineCardAction, includesOAuthButtons?: boolean) {
27
29
  const { type } = cardAction;
28
30
  let action;
29
31
 
@@ -40,11 +42,11 @@ function addCardAction(cardAction: CardAction, includesOAuthButtons?: boolean) {
40
42
  cardAction
41
43
  };
42
44
 
43
- action.title = cardAction.title;
45
+ action.title = (cardAction as { title: string }).title;
44
46
  } else {
45
47
  action = new OpenUrlAction();
46
48
 
47
- action.title = cardAction.title;
49
+ action.title = (cardAction as { title: string }).title;
48
50
  action.url = cardAction.type === 'call' ? `tel:${cardAction.value}` : cardAction.value;
49
51
  }
50
52
 
@@ -54,9 +56,13 @@ function addCardAction(cardAction: CardAction, includesOAuthButtons?: boolean) {
54
56
  export default class AdaptiveCardBuilder {
55
57
  card: AdaptiveCard;
56
58
  container: Container;
57
- styleOptions: any;
59
+ styleOptions: AdaptiveCardsStyleOptions;
58
60
 
59
- constructor(adaptiveCards, styleOptions, direction = 'ltr') {
61
+ constructor(
62
+ adaptiveCards: AdaptiveCardsPackage,
63
+ styleOptions: AdaptiveCardsStyleOptions,
64
+ direction: 'ltr' | 'rtl' | 'auto' = 'ltr'
65
+ ) {
60
66
  this.card = new adaptiveCards.AdaptiveCard();
61
67
  this.container = new Container();
62
68
  this.container.rtl = direction === 'rtl';
@@ -65,7 +71,7 @@ export default class AdaptiveCardBuilder {
65
71
  this.card.addItem(this.container);
66
72
  }
67
73
 
68
- addColumnSet(sizes: number[], container: Container = this.container, selectAction?: CardAction) {
74
+ addColumnSet(sizes: number[], container: Container = this.container, selectAction?: DirectLineCardAction) {
69
75
  const columnSet = new ColumnSet();
70
76
 
71
77
  columnSet.selectAction = selectAction && addCardAction(selectAction);
@@ -101,7 +107,7 @@ export default class AdaptiveCardBuilder {
101
107
  }
102
108
  }
103
109
 
104
- addButtons(cardActions: CardAction[], includesOAuthButtons?: boolean) {
110
+ addButtons(cardActions: DirectLineCardAction[], includesOAuthButtons?: boolean) {
105
111
  cardActions &&
106
112
  cardActions.forEach(cardAction => {
107
113
  this.card.addAction(addCardAction(cardAction, includesOAuthButtons));
@@ -111,13 +117,13 @@ export default class AdaptiveCardBuilder {
111
117
  addCommonHeaders(content: ICommonContent) {
112
118
  const { richCardWrapTitle } = this.styleOptions;
113
119
  this.addTextBlock(content.title, {
114
- color: TextColor.Dark,
120
+ color: TextColor.Default,
115
121
  size: TextSize.Medium,
116
122
  weight: TextWeight.Bolder,
117
123
  wrap: richCardWrapTitle
118
124
  });
119
- this.addTextBlock(content.subtitle, { color: TextColor.Dark, isSubtle: true, wrap: richCardWrapTitle });
120
- this.addTextBlock(content.text, { color: TextColor.Dark, wrap: true });
125
+ this.addTextBlock(content.subtitle, { color: TextColor.Default, isSubtle: true, wrap: richCardWrapTitle });
126
+ this.addTextBlock(content.text, { color: TextColor.Default, wrap: true });
121
127
  }
122
128
 
123
129
  addCommon(content: ICommonContent) {
@@ -125,7 +131,7 @@ export default class AdaptiveCardBuilder {
125
131
  this.addButtons(content.buttons);
126
132
  }
127
133
 
128
- addImage(url: string, container?: Container, selectAction?: CardAction, altText?: string) {
134
+ addImage(url: string, container?: Container, selectAction?: DirectLineCardAction, altText?: string) {
129
135
  container = container || this.container;
130
136
 
131
137
  const image = new Image();
@@ -140,7 +146,7 @@ export default class AdaptiveCardBuilder {
140
146
  }
141
147
 
142
148
  export interface ICommonContent {
143
- buttons?: CardAction[];
149
+ buttons?: DirectLineCardAction[];
144
150
  subtitle?: string;
145
151
  text?: string;
146
152
  title?: string;
@@ -1,5 +1,5 @@
1
1
  import PropTypes from 'prop-types';
2
- import React, { useMemo } from 'react';
2
+ import React, { FC, useMemo } from 'react';
3
3
 
4
4
  import AdaptiveCardRenderer from './AdaptiveCardRenderer';
5
5
  import useParseAdaptiveCardJSON from '../hooks/internal/useParseAdaptiveCardJSON';
@@ -17,7 +17,13 @@ function stripSubmitAction(card) {
17
17
  return { ...card, nextActions };
18
18
  }
19
19
 
20
- const AdaptiveCardContent = ({ actionPerformedClassName, content, disabled }) => {
20
+ type AdaptiveCardContentProps = {
21
+ actionPerformedClassName?: string;
22
+ content: any;
23
+ disabled?: boolean;
24
+ };
25
+
26
+ const AdaptiveCardContent: FC<AdaptiveCardContentProps> = ({ actionPerformedClassName, content, disabled }) => {
21
27
  const parseAdaptiveCardJSON = useParseAdaptiveCardJSON();
22
28
 
23
29
  const card = useMemo(