@botonic/react 0.31.5-alpha.1 → 0.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (606) hide show
  1. package/lib/cjs/components/audio.d.ts +8 -7
  2. package/lib/cjs/components/audio.js +7 -4
  3. package/lib/cjs/components/audio.js.map +1 -1
  4. package/lib/cjs/components/button.js +3 -4
  5. package/lib/cjs/components/button.js.map +1 -1
  6. package/lib/cjs/components/carousel.js +2 -2
  7. package/lib/cjs/components/carousel.js.map +1 -1
  8. package/lib/cjs/components/custom-message.d.ts +16 -12
  9. package/lib/cjs/components/custom-message.js +3 -9
  10. package/lib/cjs/components/custom-message.js.map +1 -1
  11. package/lib/cjs/components/document.d.ts +8 -7
  12. package/lib/cjs/components/document.js +5 -5
  13. package/lib/cjs/components/document.js.map +1 -1
  14. package/lib/cjs/components/element.js +6 -6
  15. package/lib/cjs/components/element.js.map +1 -1
  16. package/lib/cjs/components/handoff.d.ts +1 -1
  17. package/lib/cjs/components/handoff.js +2 -2
  18. package/lib/cjs/components/handoff.js.map +1 -1
  19. package/lib/cjs/components/image.d.ts +8 -7
  20. package/lib/cjs/components/image.js +5 -5
  21. package/lib/cjs/components/image.js.map +1 -1
  22. package/lib/cjs/components/index-types.d.ts +30 -127
  23. package/lib/cjs/components/index.d.ts +7 -1
  24. package/lib/cjs/components/index.js +14 -1
  25. package/lib/cjs/components/index.js.map +1 -1
  26. package/lib/cjs/components/message/index.js +2 -1
  27. package/lib/cjs/components/message/index.js.map +1 -1
  28. package/lib/cjs/components/message/message-feedback.d.ts +1 -1
  29. package/lib/cjs/components/message/message-feedback.js +2 -2
  30. package/lib/cjs/components/message/message-feedback.js.map +1 -1
  31. package/lib/cjs/components/message/message-footer.d.ts +1 -1
  32. package/lib/cjs/components/message/message-footer.js +2 -2
  33. package/lib/cjs/components/message/message-footer.js.map +1 -1
  34. package/lib/cjs/components/message/message-image.js +2 -2
  35. package/lib/cjs/components/message/message-image.js.map +1 -1
  36. package/lib/cjs/components/message/timestamps.d.ts +1 -1
  37. package/lib/cjs/components/message/timestamps.js +2 -2
  38. package/lib/cjs/components/message/timestamps.js.map +1 -1
  39. package/lib/cjs/components/multichannel/multichannel-button.d.ts +1 -1
  40. package/lib/cjs/components/multichannel/multichannel-button.js +2 -2
  41. package/lib/cjs/components/multichannel/multichannel-button.js.map +1 -1
  42. package/lib/cjs/components/multichannel/multichannel-carousel.js +4 -4
  43. package/lib/cjs/components/multichannel/multichannel-carousel.js.map +1 -1
  44. package/lib/cjs/components/multichannel/multichannel-reply.d.ts +1 -1
  45. package/lib/cjs/components/multichannel/multichannel-text.d.ts +1 -1
  46. package/lib/cjs/components/multichannel/multichannel-text.js +12 -11
  47. package/lib/cjs/components/multichannel/multichannel-text.js.map +1 -1
  48. package/lib/cjs/components/multichannel/multichannel-utils.d.ts +9 -15
  49. package/lib/cjs/components/multichannel/multichannel-utils.js +48 -27
  50. package/lib/cjs/components/multichannel/multichannel-utils.js.map +1 -1
  51. package/lib/cjs/components/multichannel/multichannel.js +7 -7
  52. package/lib/cjs/components/multichannel/multichannel.js.map +1 -1
  53. package/lib/cjs/components/multichannel/whatsapp/constants.d.ts +11 -0
  54. package/lib/cjs/components/multichannel/whatsapp/constants.js +13 -0
  55. package/lib/cjs/components/multichannel/whatsapp/constants.js.map +1 -0
  56. package/lib/cjs/components/raw.d.ts +1 -1
  57. package/lib/cjs/components/reply.d.ts +7 -6
  58. package/lib/cjs/components/reply.js +10 -6
  59. package/lib/cjs/components/reply.js.map +1 -1
  60. package/lib/cjs/components/text.d.ts +1 -1
  61. package/lib/cjs/components/video.d.ts +8 -7
  62. package/lib/cjs/components/video.js +2 -3
  63. package/lib/cjs/components/video.js.map +1 -1
  64. package/lib/cjs/components/webchat-settings.d.ts +15 -2
  65. package/lib/cjs/components/webchat-settings.js +2 -2
  66. package/lib/cjs/components/webchat-settings.js.map +1 -1
  67. package/lib/cjs/components/whatsapp-button-list.js +2 -2
  68. package/lib/cjs/components/whatsapp-button-list.js.map +1 -1
  69. package/lib/cjs/components/whatsapp-catalog.d.ts +6 -0
  70. package/lib/cjs/components/whatsapp-catalog.js +25 -0
  71. package/lib/cjs/components/whatsapp-catalog.js.map +1 -0
  72. package/lib/cjs/components/whatsapp-cta-url-button.js +5 -5
  73. package/lib/cjs/components/whatsapp-cta-url-button.js.map +1 -1
  74. package/lib/cjs/components/whatsapp-media-carousel.d.ts +46 -0
  75. package/lib/cjs/components/whatsapp-media-carousel.js +40 -0
  76. package/lib/cjs/components/whatsapp-media-carousel.js.map +1 -0
  77. package/lib/cjs/components/whatsapp-product-carousel.d.ts +32 -0
  78. package/lib/cjs/components/whatsapp-product-carousel.js +34 -0
  79. package/lib/cjs/components/whatsapp-product-carousel.js.map +1 -0
  80. package/lib/cjs/components/whatsapp-product-list.d.ts +15 -0
  81. package/lib/cjs/components/whatsapp-product-list.js +26 -0
  82. package/lib/cjs/components/whatsapp-product-list.js.map +1 -0
  83. package/lib/cjs/components/whatsapp-product.d.ts +7 -0
  84. package/lib/cjs/components/whatsapp-product.js +25 -0
  85. package/lib/cjs/components/whatsapp-product.js.map +1 -0
  86. package/lib/cjs/constants.d.ts +0 -6
  87. package/lib/cjs/constants.js +1 -7
  88. package/lib/cjs/constants.js.map +1 -1
  89. package/lib/cjs/contexts.d.ts +3 -4
  90. package/lib/cjs/contexts.js +2 -76
  91. package/lib/cjs/contexts.js.map +1 -1
  92. package/lib/cjs/dev-app.d.ts +7 -0
  93. package/lib/cjs/dev-app.js +5 -2
  94. package/lib/cjs/dev-app.js.map +1 -1
  95. package/lib/cjs/index-types.d.ts +90 -61
  96. package/lib/cjs/index-types.js.map +1 -1
  97. package/lib/cjs/index.d.ts +1 -1
  98. package/lib/cjs/index.js +1 -2
  99. package/lib/cjs/index.js.map +1 -1
  100. package/lib/cjs/msg-to-botonic.d.ts +1 -1
  101. package/lib/cjs/msg-to-botonic.js +5 -8
  102. package/lib/cjs/msg-to-botonic.js.map +1 -1
  103. package/lib/cjs/react-bot.d.ts +1 -1
  104. package/lib/cjs/util/error-boundary.d.ts +1 -1
  105. package/lib/cjs/util/functional.d.ts +3 -0
  106. package/lib/cjs/util/functional.js +30 -0
  107. package/lib/cjs/util/functional.js.map +1 -0
  108. package/lib/cjs/util/react.d.ts +1 -1
  109. package/lib/cjs/util/webchat.d.ts +17 -6
  110. package/lib/cjs/util/webchat.js +9 -7
  111. package/lib/cjs/util/webchat.js.map +1 -1
  112. package/lib/cjs/webchat/chat-area/index.d.ts +1 -1
  113. package/lib/cjs/webchat/chat-area/index.js +3 -3
  114. package/lib/cjs/webchat/chat-area/index.js.map +1 -1
  115. package/lib/cjs/webchat/components/common.d.ts +1 -1
  116. package/lib/cjs/webchat/components/conditional-animation.d.ts +1 -1
  117. package/lib/cjs/webchat/components/conditional-animation.js +2 -2
  118. package/lib/cjs/webchat/components/conditional-animation.js.map +1 -1
  119. package/lib/cjs/webchat/components/opened-persistent-menu.d.ts +1 -1
  120. package/lib/cjs/webchat/components/opened-persistent-menu.js +2 -2
  121. package/lib/cjs/webchat/components/opened-persistent-menu.js.map +1 -1
  122. package/lib/cjs/webchat/{actions.d.ts → context/actions.d.ts} +4 -1
  123. package/lib/cjs/webchat/{actions.js → context/actions.js} +4 -0
  124. package/lib/cjs/webchat/context/actions.js.map +1 -0
  125. package/lib/cjs/webchat/context/index.d.ts +5 -0
  126. package/lib/cjs/webchat/context/index.js +86 -0
  127. package/lib/cjs/webchat/context/index.js.map +1 -0
  128. package/lib/cjs/webchat/{messages-reducer.d.ts → context/messages-reducer.d.ts} +1 -1
  129. package/lib/cjs/webchat/{messages-reducer.js → context/messages-reducer.js} +3 -1
  130. package/lib/cjs/webchat/context/messages-reducer.js.map +1 -0
  131. package/lib/cjs/webchat/context/types.d.ts +76 -0
  132. package/lib/cjs/webchat/context/types.js +3 -0
  133. package/lib/cjs/webchat/context/types.js.map +1 -0
  134. package/lib/cjs/webchat/{hooks → context}/use-webchat.d.ts +21 -20
  135. package/lib/cjs/webchat/{hooks → context}/use-webchat.js +21 -7
  136. package/lib/cjs/webchat/context/use-webchat.js.map +1 -0
  137. package/lib/cjs/webchat/{webchat-reducer.d.ts → context/webchat-reducer.d.ts} +1 -1
  138. package/lib/cjs/webchat/{webchat-reducer.js → context/webchat-reducer.js} +4 -0
  139. package/lib/cjs/webchat/context/webchat-reducer.js.map +1 -0
  140. package/lib/cjs/webchat/cover-component/index.d.ts +1 -1
  141. package/lib/cjs/webchat/cover-component/index.js +2 -2
  142. package/lib/cjs/webchat/cover-component/index.js.map +1 -1
  143. package/lib/cjs/webchat/header/default-header.d.ts +1 -0
  144. package/lib/cjs/webchat/header/default-header.js +25 -0
  145. package/lib/cjs/webchat/header/default-header.js.map +1 -0
  146. package/lib/cjs/webchat/header/index.d.ts +2 -0
  147. package/lib/cjs/webchat/header/index.js +23 -0
  148. package/lib/cjs/webchat/header/index.js.map +1 -0
  149. package/lib/cjs/webchat/header/styles.d.ts +7 -0
  150. package/lib/cjs/webchat/header/styles.js +59 -0
  151. package/lib/cjs/webchat/header/styles.js.map +1 -0
  152. package/lib/cjs/webchat/hooks/index.d.ts +0 -1
  153. package/lib/cjs/webchat/hooks/index.js +1 -4
  154. package/lib/cjs/webchat/hooks/index.js.map +1 -1
  155. package/lib/cjs/webchat/hooks/use-previous.d.ts +1 -1
  156. package/lib/cjs/webchat/hooks/use-previous.js.map +1 -1
  157. package/lib/cjs/webchat/hooks/use-scroll-to-bottom.d.ts +6 -4
  158. package/lib/cjs/webchat/hooks/use-scroll-to-bottom.js.map +1 -1
  159. package/lib/cjs/webchat/hooks/use-scrollbar-controller.js +16 -16
  160. package/lib/cjs/webchat/hooks/use-scrollbar-controller.js.map +1 -1
  161. package/lib/cjs/webchat/hooks/use-typing.d.ts +1 -1
  162. package/lib/cjs/webchat/hooks/use-webchat-dimensions.js +4 -4
  163. package/lib/cjs/webchat/hooks/use-webchat-dimensions.js.map +1 -1
  164. package/lib/cjs/webchat/hooks/use-webchat-resizer.js +6 -6
  165. package/lib/cjs/webchat/hooks/use-webchat-resizer.js.map +1 -1
  166. package/lib/cjs/webchat/index-types.d.ts +3 -46
  167. package/lib/cjs/webchat/index.d.ts +1 -0
  168. package/lib/cjs/webchat/index.js +3 -1
  169. package/lib/cjs/webchat/index.js.map +1 -1
  170. package/lib/cjs/webchat/input-panel/attachment.d.ts +2 -2
  171. package/lib/cjs/webchat/input-panel/attachment.js +2 -2
  172. package/lib/cjs/webchat/input-panel/attachment.js.map +1 -1
  173. package/lib/cjs/webchat/input-panel/emoji-picker.d.ts +2 -2
  174. package/lib/cjs/webchat/input-panel/emoji-picker.js +2 -2
  175. package/lib/cjs/webchat/input-panel/emoji-picker.js.map +1 -1
  176. package/lib/cjs/webchat/input-panel/index.d.ts +4 -4
  177. package/lib/cjs/webchat/input-panel/index.js +8 -3
  178. package/lib/cjs/webchat/input-panel/index.js.map +1 -1
  179. package/lib/cjs/webchat/input-panel/opened-emoji-picker.d.ts +1 -1
  180. package/lib/cjs/webchat/input-panel/persistent-menu.d.ts +1 -1
  181. package/lib/cjs/webchat/input-panel/persistent-menu.js +2 -2
  182. package/lib/cjs/webchat/input-panel/persistent-menu.js.map +1 -1
  183. package/lib/cjs/webchat/input-panel/send-button.d.ts +1 -1
  184. package/lib/cjs/webchat/input-panel/send-button.js +2 -2
  185. package/lib/cjs/webchat/input-panel/send-button.js.map +1 -1
  186. package/lib/cjs/webchat/input-panel/textarea.d.ts +4 -4
  187. package/lib/cjs/webchat/input-panel/textarea.js +11 -3
  188. package/lib/cjs/webchat/input-panel/textarea.js.map +1 -1
  189. package/lib/cjs/webchat/message-list/index.d.ts +1 -1
  190. package/lib/cjs/webchat/message-list/index.js +64 -38
  191. package/lib/cjs/webchat/message-list/index.js.map +1 -1
  192. package/lib/cjs/webchat/message-list/intro-message.d.ts +1 -1
  193. package/lib/cjs/webchat/message-list/intro-message.js +2 -2
  194. package/lib/cjs/webchat/message-list/intro-message.js.map +1 -1
  195. package/lib/cjs/webchat/message-list/scroll-button.d.ts +1 -0
  196. package/lib/cjs/webchat/message-list/styles.js +4 -3
  197. package/lib/cjs/webchat/message-list/styles.js.map +1 -1
  198. package/lib/cjs/webchat/message-list/unread-messages-banner.js +2 -2
  199. package/lib/cjs/webchat/message-list/unread-messages-banner.js.map +1 -1
  200. package/lib/cjs/webchat/message-list/use-notifications.js +2 -2
  201. package/lib/cjs/webchat/message-list/use-notifications.js.map +1 -1
  202. package/lib/cjs/webchat/replies/index.d.ts +1 -0
  203. package/lib/cjs/webchat/replies/index.js +32 -0
  204. package/lib/cjs/webchat/replies/index.js.map +1 -0
  205. package/lib/cjs/webchat/replies/styles.d.ts +8 -0
  206. package/lib/cjs/webchat/replies/styles.js +25 -0
  207. package/lib/cjs/webchat/replies/styles.js.map +1 -0
  208. package/lib/cjs/webchat/session-view.d.ts +1 -1
  209. package/lib/cjs/webchat/session-view.js +4 -4
  210. package/lib/cjs/webchat/session-view.js.map +1 -1
  211. package/lib/cjs/webchat/styles.d.ts +9 -0
  212. package/lib/cjs/webchat/styles.js +54 -0
  213. package/lib/cjs/webchat/styles.js.map +1 -0
  214. package/lib/cjs/webchat/theme/types.d.ts +167 -0
  215. package/lib/cjs/webchat/theme/types.js +3 -0
  216. package/lib/cjs/webchat/theme/types.js.map +1 -0
  217. package/lib/cjs/webchat/trigger-button/index.d.ts +1 -0
  218. package/lib/cjs/webchat/trigger-button/index.js +2 -2
  219. package/lib/cjs/webchat/trigger-button/index.js.map +1 -1
  220. package/lib/cjs/webchat/typing-indicator/index.d.ts +3 -1
  221. package/lib/cjs/webchat/typing-indicator/index.js +4 -3
  222. package/lib/cjs/webchat/typing-indicator/index.js.map +1 -1
  223. package/lib/cjs/webchat/typing-indicator/styles.d.ts +3 -2
  224. package/lib/cjs/webchat/typing-indicator/styles.js +6 -3
  225. package/lib/cjs/webchat/typing-indicator/styles.js.map +1 -1
  226. package/lib/cjs/webchat/webchat-dev.d.ts +2 -2
  227. package/lib/cjs/webchat/webchat-dev.js +2 -2
  228. package/lib/cjs/webchat/webchat-dev.js.map +1 -1
  229. package/lib/cjs/webchat/webchat.d.ts +4 -2
  230. package/lib/cjs/webchat/webchat.js +91 -116
  231. package/lib/cjs/webchat/webchat.js.map +1 -1
  232. package/lib/cjs/webchat/webview/header.d.ts +1 -0
  233. package/lib/cjs/webchat/webview/header.js +16 -0
  234. package/lib/cjs/webchat/webview/header.js.map +1 -0
  235. package/lib/cjs/webchat/webview/index.d.ts +1 -0
  236. package/lib/cjs/webchat/webview/index.js +49 -0
  237. package/lib/cjs/webchat/webview/index.js.map +1 -0
  238. package/lib/cjs/webchat/webview/styles.d.ts +7 -0
  239. package/lib/cjs/webchat/webview/styles.js +46 -0
  240. package/lib/cjs/webchat/webview/styles.js.map +1 -0
  241. package/lib/cjs/webchat-app.d.ts +62 -86
  242. package/lib/cjs/webchat-app.js +126 -62
  243. package/lib/cjs/webchat-app.js.map +1 -1
  244. package/lib/cjs/webview-app.js +5 -2
  245. package/lib/cjs/webview-app.js.map +1 -1
  246. package/lib/esm/components/audio.d.ts +8 -7
  247. package/lib/esm/components/audio.js +7 -4
  248. package/lib/esm/components/audio.js.map +1 -1
  249. package/lib/esm/components/button.js +2 -3
  250. package/lib/esm/components/button.js.map +1 -1
  251. package/lib/esm/components/carousel.js +1 -1
  252. package/lib/esm/components/carousel.js.map +1 -1
  253. package/lib/esm/components/custom-message.d.ts +16 -12
  254. package/lib/esm/components/custom-message.js +3 -9
  255. package/lib/esm/components/custom-message.js.map +1 -1
  256. package/lib/esm/components/document.d.ts +8 -7
  257. package/lib/esm/components/document.js +4 -4
  258. package/lib/esm/components/document.js.map +1 -1
  259. package/lib/esm/components/element.js +6 -6
  260. package/lib/esm/components/element.js.map +1 -1
  261. package/lib/esm/components/handoff.d.ts +1 -1
  262. package/lib/esm/components/handoff.js +1 -1
  263. package/lib/esm/components/handoff.js.map +1 -1
  264. package/lib/esm/components/image.d.ts +8 -7
  265. package/lib/esm/components/image.js +4 -4
  266. package/lib/esm/components/image.js.map +1 -1
  267. package/lib/esm/components/index-types.d.ts +30 -127
  268. package/lib/esm/components/index.d.ts +7 -1
  269. package/lib/esm/components/index.js +7 -1
  270. package/lib/esm/components/index.js.map +1 -1
  271. package/lib/esm/components/message/index.js +2 -1
  272. package/lib/esm/components/message/index.js.map +1 -1
  273. package/lib/esm/components/message/message-feedback.d.ts +1 -1
  274. package/lib/esm/components/message/message-feedback.js +1 -1
  275. package/lib/esm/components/message/message-feedback.js.map +1 -1
  276. package/lib/esm/components/message/message-footer.d.ts +1 -1
  277. package/lib/esm/components/message/message-footer.js +1 -1
  278. package/lib/esm/components/message/message-footer.js.map +1 -1
  279. package/lib/esm/components/message/message-image.js +1 -1
  280. package/lib/esm/components/message/message-image.js.map +1 -1
  281. package/lib/esm/components/message/timestamps.d.ts +1 -1
  282. package/lib/esm/components/message/timestamps.js +1 -1
  283. package/lib/esm/components/message/timestamps.js.map +1 -1
  284. package/lib/esm/components/multichannel/multichannel-button.d.ts +1 -1
  285. package/lib/esm/components/multichannel/multichannel-button.js +1 -1
  286. package/lib/esm/components/multichannel/multichannel-carousel.js +5 -5
  287. package/lib/esm/components/multichannel/multichannel-carousel.js.map +1 -1
  288. package/lib/esm/components/multichannel/multichannel-reply.d.ts +1 -1
  289. package/lib/esm/components/multichannel/multichannel-text.d.ts +1 -1
  290. package/lib/esm/components/multichannel/multichannel-text.js +2 -1
  291. package/lib/esm/components/multichannel/multichannel-text.js.map +1 -1
  292. package/lib/esm/components/multichannel/multichannel-utils.d.ts +9 -15
  293. package/lib/esm/components/multichannel/multichannel-utils.js +40 -24
  294. package/lib/esm/components/multichannel/multichannel-utils.js.map +1 -1
  295. package/lib/esm/components/multichannel/multichannel.js +7 -7
  296. package/lib/esm/components/multichannel/multichannel.js.map +1 -1
  297. package/lib/esm/components/multichannel/whatsapp/constants.d.ts +11 -0
  298. package/lib/esm/components/multichannel/whatsapp/constants.js +10 -0
  299. package/lib/esm/components/multichannel/whatsapp/constants.js.map +1 -0
  300. package/lib/esm/components/raw.d.ts +1 -1
  301. package/lib/esm/components/reply.d.ts +7 -6
  302. package/lib/esm/components/reply.js +9 -5
  303. package/lib/esm/components/reply.js.map +1 -1
  304. package/lib/esm/components/text.d.ts +1 -1
  305. package/lib/esm/components/video.d.ts +8 -7
  306. package/lib/esm/components/video.js +2 -3
  307. package/lib/esm/components/video.js.map +1 -1
  308. package/lib/esm/components/webchat-settings.d.ts +15 -2
  309. package/lib/esm/components/webchat-settings.js +1 -1
  310. package/lib/esm/components/webchat-settings.js.map +1 -1
  311. package/lib/esm/components/whatsapp-button-list.js +1 -1
  312. package/lib/esm/components/whatsapp-catalog.d.ts +6 -0
  313. package/lib/esm/components/whatsapp-catalog.js +21 -0
  314. package/lib/esm/components/whatsapp-catalog.js.map +1 -0
  315. package/lib/esm/components/whatsapp-cta-url-button.js +1 -1
  316. package/lib/esm/components/whatsapp-media-carousel.d.ts +46 -0
  317. package/lib/esm/components/whatsapp-media-carousel.js +36 -0
  318. package/lib/esm/components/whatsapp-media-carousel.js.map +1 -0
  319. package/lib/esm/components/whatsapp-product-carousel.d.ts +32 -0
  320. package/lib/esm/components/whatsapp-product-carousel.js +30 -0
  321. package/lib/esm/components/whatsapp-product-carousel.js.map +1 -0
  322. package/lib/esm/components/whatsapp-product-list.d.ts +15 -0
  323. package/lib/esm/components/whatsapp-product-list.js +22 -0
  324. package/lib/esm/components/whatsapp-product-list.js.map +1 -0
  325. package/lib/esm/components/whatsapp-product.d.ts +7 -0
  326. package/lib/esm/components/whatsapp-product.js +21 -0
  327. package/lib/esm/components/whatsapp-product.js.map +1 -0
  328. package/lib/esm/constants.d.ts +0 -6
  329. package/lib/esm/constants.js +0 -6
  330. package/lib/esm/constants.js.map +1 -1
  331. package/lib/esm/contexts.d.ts +3 -4
  332. package/lib/esm/contexts.js +1 -75
  333. package/lib/esm/contexts.js.map +1 -1
  334. package/lib/esm/dev-app.d.ts +7 -0
  335. package/lib/esm/dev-app.js +5 -2
  336. package/lib/esm/dev-app.js.map +1 -1
  337. package/lib/esm/index-types.d.ts +90 -61
  338. package/lib/esm/index-types.js.map +1 -1
  339. package/lib/esm/index.d.ts +1 -1
  340. package/lib/esm/index.js +1 -1
  341. package/lib/esm/index.js.map +1 -1
  342. package/lib/esm/msg-to-botonic.d.ts +1 -1
  343. package/lib/esm/msg-to-botonic.js +5 -8
  344. package/lib/esm/msg-to-botonic.js.map +1 -1
  345. package/lib/esm/react-bot.d.ts +1 -1
  346. package/lib/esm/util/error-boundary.d.ts +1 -1
  347. package/lib/esm/util/functional.d.ts +3 -0
  348. package/lib/esm/util/functional.js +26 -0
  349. package/lib/esm/util/functional.js.map +1 -0
  350. package/lib/esm/util/react.d.ts +1 -1
  351. package/lib/esm/util/webchat.d.ts +17 -6
  352. package/lib/esm/util/webchat.js +9 -7
  353. package/lib/esm/util/webchat.js.map +1 -1
  354. package/lib/esm/webchat/chat-area/index.d.ts +1 -1
  355. package/lib/esm/webchat/chat-area/index.js +2 -2
  356. package/lib/esm/webchat/chat-area/index.js.map +1 -1
  357. package/lib/esm/webchat/components/common.d.ts +1 -1
  358. package/lib/esm/webchat/components/conditional-animation.d.ts +1 -1
  359. package/lib/esm/webchat/components/conditional-animation.js +1 -1
  360. package/lib/esm/webchat/components/conditional-animation.js.map +1 -1
  361. package/lib/esm/webchat/components/opened-persistent-menu.d.ts +1 -1
  362. package/lib/esm/webchat/components/opened-persistent-menu.js +1 -1
  363. package/lib/esm/webchat/components/opened-persistent-menu.js.map +1 -1
  364. package/lib/esm/webchat/{actions.d.ts → context/actions.d.ts} +4 -1
  365. package/lib/esm/webchat/{actions.js → context/actions.js} +4 -0
  366. package/lib/esm/webchat/context/actions.js.map +1 -0
  367. package/lib/esm/webchat/context/index.d.ts +5 -0
  368. package/lib/esm/webchat/context/index.js +81 -0
  369. package/lib/esm/webchat/context/index.js.map +1 -0
  370. package/lib/esm/webchat/{messages-reducer.d.ts → context/messages-reducer.d.ts} +1 -1
  371. package/lib/esm/webchat/{messages-reducer.js → context/messages-reducer.js} +3 -1
  372. package/lib/esm/webchat/context/messages-reducer.js.map +1 -0
  373. package/lib/esm/webchat/context/types.d.ts +76 -0
  374. package/lib/esm/webchat/context/types.js +2 -0
  375. package/lib/esm/webchat/context/types.js.map +1 -0
  376. package/lib/esm/webchat/{hooks → context}/use-webchat.d.ts +21 -20
  377. package/lib/esm/webchat/{hooks → context}/use-webchat.js +21 -7
  378. package/lib/esm/webchat/context/use-webchat.js.map +1 -0
  379. package/lib/esm/webchat/{webchat-reducer.d.ts → context/webchat-reducer.d.ts} +1 -1
  380. package/lib/esm/webchat/{webchat-reducer.js → context/webchat-reducer.js} +4 -0
  381. package/lib/esm/webchat/context/webchat-reducer.js.map +1 -0
  382. package/lib/esm/webchat/cover-component/index.d.ts +1 -1
  383. package/lib/esm/webchat/cover-component/index.js +1 -1
  384. package/lib/esm/webchat/cover-component/index.js.map +1 -1
  385. package/lib/esm/webchat/header/default-header.d.ts +1 -0
  386. package/lib/esm/webchat/header/default-header.js +21 -0
  387. package/lib/esm/webchat/header/default-header.js.map +1 -0
  388. package/lib/esm/webchat/header/index.d.ts +2 -0
  389. package/lib/esm/webchat/header/index.js +20 -0
  390. package/lib/esm/webchat/header/index.js.map +1 -0
  391. package/lib/esm/webchat/header/styles.d.ts +7 -0
  392. package/lib/esm/webchat/header/styles.js +55 -0
  393. package/lib/esm/webchat/header/styles.js.map +1 -0
  394. package/lib/esm/webchat/hooks/index.d.ts +0 -1
  395. package/lib/esm/webchat/hooks/index.js +0 -1
  396. package/lib/esm/webchat/hooks/index.js.map +1 -1
  397. package/lib/esm/webchat/hooks/use-previous.d.ts +1 -1
  398. package/lib/esm/webchat/hooks/use-previous.js.map +1 -1
  399. package/lib/esm/webchat/hooks/use-scroll-to-bottom.d.ts +6 -4
  400. package/lib/esm/webchat/hooks/use-scroll-to-bottom.js.map +1 -1
  401. package/lib/esm/webchat/hooks/use-scrollbar-controller.js +16 -16
  402. package/lib/esm/webchat/hooks/use-scrollbar-controller.js.map +1 -1
  403. package/lib/esm/webchat/hooks/use-typing.d.ts +1 -1
  404. package/lib/esm/webchat/hooks/use-webchat-dimensions.js +4 -4
  405. package/lib/esm/webchat/hooks/use-webchat-dimensions.js.map +1 -1
  406. package/lib/esm/webchat/hooks/use-webchat-resizer.js +6 -6
  407. package/lib/esm/webchat/hooks/use-webchat-resizer.js.map +1 -1
  408. package/lib/esm/webchat/index-types.d.ts +3 -46
  409. package/lib/esm/webchat/index.d.ts +1 -0
  410. package/lib/esm/webchat/index.js +1 -0
  411. package/lib/esm/webchat/index.js.map +1 -1
  412. package/lib/esm/webchat/input-panel/attachment.d.ts +2 -2
  413. package/lib/esm/webchat/input-panel/attachment.js +1 -1
  414. package/lib/esm/webchat/input-panel/attachment.js.map +1 -1
  415. package/lib/esm/webchat/input-panel/emoji-picker.d.ts +2 -2
  416. package/lib/esm/webchat/input-panel/emoji-picker.js +1 -1
  417. package/lib/esm/webchat/input-panel/emoji-picker.js.map +1 -1
  418. package/lib/esm/webchat/input-panel/index.d.ts +4 -4
  419. package/lib/esm/webchat/input-panel/index.js +7 -2
  420. package/lib/esm/webchat/input-panel/index.js.map +1 -1
  421. package/lib/esm/webchat/input-panel/opened-emoji-picker.d.ts +1 -1
  422. package/lib/esm/webchat/input-panel/persistent-menu.d.ts +1 -1
  423. package/lib/esm/webchat/input-panel/persistent-menu.js +1 -1
  424. package/lib/esm/webchat/input-panel/persistent-menu.js.map +1 -1
  425. package/lib/esm/webchat/input-panel/send-button.d.ts +1 -1
  426. package/lib/esm/webchat/input-panel/send-button.js +1 -1
  427. package/lib/esm/webchat/input-panel/send-button.js.map +1 -1
  428. package/lib/esm/webchat/input-panel/textarea.d.ts +4 -4
  429. package/lib/esm/webchat/input-panel/textarea.js +11 -3
  430. package/lib/esm/webchat/input-panel/textarea.js.map +1 -1
  431. package/lib/esm/webchat/message-list/index.d.ts +1 -1
  432. package/lib/esm/webchat/message-list/index.js +62 -37
  433. package/lib/esm/webchat/message-list/index.js.map +1 -1
  434. package/lib/esm/webchat/message-list/intro-message.d.ts +1 -1
  435. package/lib/esm/webchat/message-list/intro-message.js +1 -1
  436. package/lib/esm/webchat/message-list/intro-message.js.map +1 -1
  437. package/lib/esm/webchat/message-list/scroll-button.d.ts +1 -0
  438. package/lib/esm/webchat/message-list/styles.js +4 -3
  439. package/lib/esm/webchat/message-list/styles.js.map +1 -1
  440. package/lib/esm/webchat/message-list/unread-messages-banner.js +1 -1
  441. package/lib/esm/webchat/message-list/unread-messages-banner.js.map +1 -1
  442. package/lib/esm/webchat/message-list/use-notifications.js +1 -1
  443. package/lib/esm/webchat/message-list/use-notifications.js.map +1 -1
  444. package/lib/esm/webchat/replies/index.d.ts +1 -0
  445. package/lib/esm/webchat/replies/index.js +28 -0
  446. package/lib/esm/webchat/replies/index.js.map +1 -0
  447. package/lib/esm/webchat/replies/styles.d.ts +8 -0
  448. package/lib/esm/webchat/replies/styles.js +21 -0
  449. package/lib/esm/webchat/replies/styles.js.map +1 -0
  450. package/lib/esm/webchat/session-view.d.ts +1 -1
  451. package/lib/esm/webchat/session-view.js +2 -2
  452. package/lib/esm/webchat/session-view.js.map +1 -1
  453. package/lib/esm/webchat/styles.d.ts +9 -0
  454. package/lib/esm/webchat/styles.js +50 -0
  455. package/lib/esm/webchat/styles.js.map +1 -0
  456. package/lib/esm/webchat/theme/types.d.ts +167 -0
  457. package/lib/esm/webchat/theme/types.js +2 -0
  458. package/lib/esm/webchat/theme/types.js.map +1 -0
  459. package/lib/esm/webchat/trigger-button/index.d.ts +1 -0
  460. package/lib/esm/webchat/trigger-button/index.js +1 -1
  461. package/lib/esm/webchat/trigger-button/index.js.map +1 -1
  462. package/lib/esm/webchat/typing-indicator/index.d.ts +3 -1
  463. package/lib/esm/webchat/typing-indicator/index.js +5 -2
  464. package/lib/esm/webchat/typing-indicator/index.js.map +1 -1
  465. package/lib/esm/webchat/typing-indicator/styles.d.ts +3 -2
  466. package/lib/esm/webchat/typing-indicator/styles.js +5 -2
  467. package/lib/esm/webchat/typing-indicator/styles.js.map +1 -1
  468. package/lib/esm/webchat/webchat-dev.d.ts +2 -2
  469. package/lib/esm/webchat/webchat-dev.js +1 -1
  470. package/lib/esm/webchat/webchat-dev.js.map +1 -1
  471. package/lib/esm/webchat/webchat.d.ts +4 -2
  472. package/lib/esm/webchat/webchat.js +87 -112
  473. package/lib/esm/webchat/webchat.js.map +1 -1
  474. package/lib/esm/webchat/webview/header.d.ts +1 -0
  475. package/lib/esm/webchat/webview/header.js +12 -0
  476. package/lib/esm/webchat/webview/header.js.map +1 -0
  477. package/lib/esm/webchat/webview/index.d.ts +1 -0
  478. package/lib/esm/webchat/webview/index.js +45 -0
  479. package/lib/esm/webchat/webview/index.js.map +1 -0
  480. package/lib/esm/webchat/webview/styles.d.ts +7 -0
  481. package/lib/esm/webchat/webview/styles.js +42 -0
  482. package/lib/esm/webchat/webview/styles.js.map +1 -0
  483. package/lib/esm/webchat-app.d.ts +62 -86
  484. package/lib/esm/webchat-app.js +127 -63
  485. package/lib/esm/webchat-app.js.map +1 -1
  486. package/lib/esm/webview-app.js +5 -2
  487. package/lib/esm/webview-app.js.map +1 -1
  488. package/package.json +21 -18
  489. package/src/components/{audio.jsx → audio.tsx} +10 -4
  490. package/src/components/button.tsx +1 -3
  491. package/src/components/carousel.jsx +1 -1
  492. package/src/components/{custom-message.jsx → custom-message.tsx} +19 -7
  493. package/src/components/{document.jsx → document.tsx} +5 -3
  494. package/src/components/element.jsx +4 -11
  495. package/src/components/handoff.jsx +1 -1
  496. package/src/components/{image.jsx → image.tsx} +10 -4
  497. package/src/components/index-types.ts +25 -114
  498. package/src/components/index.ts +22 -1
  499. package/src/components/message/index.jsx +2 -1
  500. package/src/components/message/message-feedback.tsx +1 -1
  501. package/src/components/message/message-footer.tsx +1 -1
  502. package/src/components/message/message-image.tsx +1 -1
  503. package/src/components/message/timestamps.tsx +1 -1
  504. package/src/components/multichannel/multichannel-button.jsx +1 -1
  505. package/src/components/multichannel/multichannel-carousel.jsx +7 -5
  506. package/src/components/multichannel/multichannel-text.jsx +4 -2
  507. package/src/components/multichannel/multichannel-utils.js +45 -27
  508. package/src/components/multichannel/multichannel.jsx +12 -7
  509. package/src/components/multichannel/whatsapp/constants.ts +10 -0
  510. package/src/components/{reply.jsx → reply.tsx} +10 -4
  511. package/src/components/{video.jsx → video.tsx} +3 -2
  512. package/src/components/webchat-settings.tsx +14 -2
  513. package/src/components/whatsapp-button-list.tsx +1 -1
  514. package/src/components/whatsapp-catalog.tsx +42 -0
  515. package/src/components/whatsapp-cta-url-button.tsx +1 -1
  516. package/src/components/whatsapp-media-carousel.tsx +104 -0
  517. package/src/components/whatsapp-product-carousel.tsx +83 -0
  518. package/src/components/whatsapp-product-list.tsx +56 -0
  519. package/src/components/whatsapp-product.tsx +44 -0
  520. package/src/constants.js +0 -7
  521. package/src/contexts.tsx +5 -80
  522. package/src/dev-app.jsx +5 -5
  523. package/src/index-types.ts +101 -70
  524. package/src/index.ts +1 -5
  525. package/src/msg-to-botonic.jsx +5 -9
  526. package/src/util/functional.ts +31 -0
  527. package/src/util/{webchat.js → webchat.ts} +15 -9
  528. package/src/webchat/chat-area/index.tsx +2 -4
  529. package/src/webchat/components/conditional-animation.jsx +1 -1
  530. package/src/webchat/components/opened-persistent-menu.jsx +1 -1
  531. package/src/webchat/{actions.ts → context/actions.ts} +4 -0
  532. package/src/webchat/context/index.tsx +84 -0
  533. package/src/webchat/{messages-reducer.ts → context/messages-reducer.ts} +4 -2
  534. package/src/webchat/context/types.ts +86 -0
  535. package/src/webchat/{hooks → context}/use-webchat.ts +73 -15
  536. package/src/webchat/{webchat-reducer.ts → context/webchat-reducer.ts} +5 -1
  537. package/src/webchat/cover-component/index.tsx +1 -1
  538. package/src/webchat/global.d.ts +3 -0
  539. package/src/webchat/header/default-header.tsx +75 -0
  540. package/src/webchat/header/index.tsx +37 -0
  541. package/src/webchat/header/styles.ts +62 -0
  542. package/src/webchat/hooks/index.ts +0 -1
  543. package/src/webchat/hooks/use-previous.ts +1 -1
  544. package/src/webchat/hooks/use-scroll-to-bottom.ts +8 -2
  545. package/src/webchat/hooks/use-scrollbar-controller.ts +22 -17
  546. package/src/webchat/hooks/use-typing.ts +1 -1
  547. package/src/webchat/hooks/use-webchat-dimensions.ts +4 -4
  548. package/src/webchat/hooks/use-webchat-resizer.ts +6 -6
  549. package/src/webchat/index-types.ts +3 -52
  550. package/src/webchat/index.ts +1 -0
  551. package/src/webchat/input-panel/attachment.tsx +2 -2
  552. package/src/webchat/input-panel/emoji-picker.tsx +2 -2
  553. package/src/webchat/input-panel/index.tsx +9 -5
  554. package/src/webchat/input-panel/persistent-menu.tsx +1 -1
  555. package/src/webchat/input-panel/send-button.tsx +1 -1
  556. package/src/webchat/input-panel/textarea.tsx +18 -5
  557. package/src/webchat/message-list/index.tsx +78 -49
  558. package/src/webchat/message-list/intro-message.tsx +1 -1
  559. package/src/webchat/message-list/styles.ts +4 -3
  560. package/src/webchat/message-list/unread-messages-banner.tsx +1 -1
  561. package/src/webchat/message-list/use-notifications.ts +1 -1
  562. package/src/webchat/replies/index.tsx +47 -0
  563. package/src/webchat/replies/styles.ts +28 -0
  564. package/src/webchat/session-view.jsx +2 -2
  565. package/src/webchat/styles.ts +59 -0
  566. package/src/webchat/theme/types.ts +119 -0
  567. package/src/webchat/trigger-button/index.tsx +1 -1
  568. package/src/webchat/typing-indicator/index.tsx +20 -12
  569. package/src/webchat/typing-indicator/styles.ts +7 -3
  570. package/src/webchat/webchat-dev.jsx +1 -1
  571. package/src/webchat/{webchat.jsx → webchat.tsx} +118 -144
  572. package/src/webchat/webview/header.tsx +22 -0
  573. package/src/webchat/webview/index.tsx +80 -0
  574. package/src/webchat/webview/styles.ts +48 -0
  575. package/src/webchat-app.tsx +522 -0
  576. package/src/webview-app.tsx +6 -4
  577. package/lib/cjs/webchat/actions.js.map +0 -1
  578. package/lib/cjs/webchat/header.d.ts +0 -3
  579. package/lib/cjs/webchat/header.js +0 -86
  580. package/lib/cjs/webchat/header.js.map +0 -1
  581. package/lib/cjs/webchat/hooks/use-webchat.js.map +0 -1
  582. package/lib/cjs/webchat/messages-reducer.js.map +0 -1
  583. package/lib/cjs/webchat/replies.d.ts +0 -1
  584. package/lib/cjs/webchat/replies.js +0 -47
  585. package/lib/cjs/webchat/replies.js.map +0 -1
  586. package/lib/cjs/webchat/webchat-reducer.js.map +0 -1
  587. package/lib/cjs/webchat/webview.d.ts +0 -2
  588. package/lib/cjs/webchat/webview.js +0 -75
  589. package/lib/cjs/webchat/webview.js.map +0 -1
  590. package/lib/esm/webchat/actions.js.map +0 -1
  591. package/lib/esm/webchat/header.d.ts +0 -3
  592. package/lib/esm/webchat/header.js +0 -81
  593. package/lib/esm/webchat/header.js.map +0 -1
  594. package/lib/esm/webchat/hooks/use-webchat.js.map +0 -1
  595. package/lib/esm/webchat/messages-reducer.js.map +0 -1
  596. package/lib/esm/webchat/replies.d.ts +0 -1
  597. package/lib/esm/webchat/replies.js +0 -42
  598. package/lib/esm/webchat/replies.js.map +0 -1
  599. package/lib/esm/webchat/webchat-reducer.js.map +0 -1
  600. package/lib/esm/webchat/webview.d.ts +0 -2
  601. package/lib/esm/webchat/webview.js +0 -70
  602. package/lib/esm/webchat/webview.js.map +0 -1
  603. package/src/webchat/header.jsx +0 -149
  604. package/src/webchat/replies.jsx +0 -64
  605. package/src/webchat/webview.jsx +0 -105
  606. package/src/webchat-app.jsx +0 -389
@@ -1,45 +1,63 @@
1
- /**
2
- *
3
- * Whatsapp does not support Markdown
4
- * (its markup syntax is different)
5
- */
6
- export const MULTICHANNEL_WHATSAPP_PROPS = { markdown: false }
7
-
8
- export const WHATSAPP_MAX_BUTTONS = 3
9
- export const WHATSAPP_LIST_MAX_BUTTONS = 10
10
- export const WHATSAPP_MAX_BUTTON_CHARS = 20
11
- export const WHATSAPP_MAX_HEADER_CHARS = 60
12
- export const WHATSAPP_MAX_BODY_CHARS = 1024
13
- export const WHATSAPP_MAX_FOOTER_CHARS = 60
14
- export const DEFAULT_WHATSAPP_MAX_BUTTON_SEPARATOR = 'More options:'
15
- export const MENU_BUTTON_WHATSAPP_BUTTON_LIST = 'Show options'
1
+ import { Button } from '../button'
2
+ import { Carousel } from '../carousel'
3
+ import { Pic } from '../pic'
4
+ import { Reply } from '../reply'
5
+ import { Subtitle } from '../subtitle'
6
+ import { Text } from '../text'
7
+ import { Title } from '../title'
8
+ import { MultichannelButton } from './multichannel-button'
9
+ import { MultichannelReply } from './multichannel-reply'
10
+
11
+ function isNodeKind(node, kind) {
12
+ return node?.type?.name === kind
13
+ }
16
14
 
17
15
  export function isMultichannelButton(node) {
18
- return isNodeKind(node, 'MultichannelButton')
16
+ return isNodeKind(node, MultichannelButton.name)
19
17
  }
20
18
 
21
19
  export function isMultichannelReply(node) {
22
- return isNodeKind(node, 'MultichannelReply')
20
+ return isNodeKind(node, MultichannelReply.name)
21
+ }
22
+
23
+ export function isNodeText(node) {
24
+ return isNodeKind(node, Text.name)
25
+ }
26
+
27
+ export function isNodeButton(node) {
28
+ return isNodeKind(node, Button.name)
29
+ }
30
+
31
+ export function isNodeCarousel(node) {
32
+ return isNodeKind(node, Carousel.name)
23
33
  }
24
34
 
25
- export function isButton(node) {
26
- return isNodeKind(node, 'Button')
35
+ export function isNodeReply(node) {
36
+ return isNodeKind(node, Reply.name)
27
37
  }
28
38
 
29
- export function isNodeKind(node, kind) {
30
- return node.type && node.type.name == kind
39
+ export function isNodePic(node) {
40
+ return isNodeKind(node, Pic.name)
31
41
  }
42
+
43
+ export function isNodeTitle(node) {
44
+ return isNodeKind(node, Title.name)
45
+ }
46
+
47
+ export function isNodeSubtitle(node) {
48
+ return isNodeKind(node, Subtitle.name)
49
+ }
50
+
32
51
  export function elementHasUrl(element) {
33
- return element.props && element.props.url
52
+ return element?.props?.url
34
53
  }
54
+
35
55
  export function elementHasPostback(element) {
36
- return (
37
- (element.props && element.props.payload) ||
38
- (element.props && element.props.path)
39
- )
56
+ return element?.props?.payload || element?.props?.path
40
57
  }
58
+
41
59
  export function elementHasWebview(element) {
42
- return element.props && element.props.webview
60
+ return element?.props?.webview
43
61
  }
44
62
 
45
63
  export const buttonTypes = {
@@ -1,7 +1,6 @@
1
1
  import { isFacebook, isWhatsapp } from '@botonic/core'
2
2
  import React, { useContext } from 'react'
3
3
 
4
- import { COMPONENT_TYPE } from '../../constants'
5
4
  import { RequestContext } from '../../contexts'
6
5
  import { deepMapWithIndex } from '../../util/react'
7
6
  import { Text } from '../text'
@@ -10,7 +9,13 @@ import { MultichannelCarousel } from './multichannel-carousel'
10
9
  import { MultichannelContext } from './multichannel-context'
11
10
  import { MultichannelReply } from './multichannel-reply'
12
11
  import { MultichannelText } from './multichannel-text'
13
- import { MULTICHANNEL_WHATSAPP_PROPS } from './multichannel-utils'
12
+ import {
13
+ isNodeButton,
14
+ isNodeCarousel,
15
+ isNodeReply,
16
+ isNodeText,
17
+ } from './multichannel-utils'
18
+ import { MULTICHANNEL_WHATSAPP_PROPS } from './whatsapp/constants'
14
19
 
15
20
  export const Multichannel = props => {
16
21
  const requestContext = useContext(RequestContext)
@@ -22,7 +27,7 @@ export const Multichannel = props => {
22
27
  }
23
28
  if (isFacebook(requestContext.session)) {
24
29
  const newChildren = deepMapWithIndex(props.children, child => {
25
- if (child && child.type && child.type.name === COMPONENT_TYPE.TEXT) {
30
+ if (isNodeText(child)) {
26
31
  return (
27
32
  <MultichannelText {...child.props} key={child.key}>
28
33
  {child.props.children}
@@ -35,21 +40,21 @@ export const Multichannel = props => {
35
40
  }
36
41
 
37
42
  let newChildren = deepMapWithIndex(props.children, (child, index) => {
38
- if (child && child.type && child.type.name === COMPONENT_TYPE.BUTTON) {
43
+ if (isNodeButton(child)) {
39
44
  return (
40
45
  <MultichannelButton {...child.props} key={child.key}>
41
46
  {child.props.children}
42
47
  </MultichannelButton>
43
48
  )
44
49
  }
45
- if (child && child.type && child.type.name === COMPONENT_TYPE.REPLY) {
50
+ if (isNodeReply(child)) {
46
51
  return (
47
52
  <MultichannelReply {...child.props} key={child.key}>
48
53
  {child.props.children}
49
54
  </MultichannelReply>
50
55
  )
51
56
  }
52
- if (child && child.type && child.type.name === COMPONENT_TYPE.TEXT) {
57
+ if (isNodeText(child)) {
53
58
  return (
54
59
  <MultichannelText
55
60
  {...child.props}
@@ -62,7 +67,7 @@ export const Multichannel = props => {
62
67
  </MultichannelText>
63
68
  )
64
69
  }
65
- if (child && child.type && child.type.name === COMPONENT_TYPE.CAROUSEL) {
70
+ if (isNodeCarousel(child)) {
66
71
  return (
67
72
  <MultichannelCarousel
68
73
  {...child.props}
@@ -0,0 +1,10 @@
1
+ export const MULTICHANNEL_WHATSAPP_PROPS = { markdown: false }
2
+
3
+ export const WHATSAPP_MAX_BUTTONS = 3
4
+ export const WHATSAPP_LIST_MAX_BUTTONS = 10
5
+ export const WHATSAPP_MAX_BUTTON_CHARS = 20
6
+ export const WHATSAPP_MAX_HEADER_CHARS = 60
7
+ export const WHATSAPP_MAX_BODY_CHARS = 1024
8
+ export const WHATSAPP_MAX_FOOTER_CHARS = 60
9
+ export const DEFAULT_WHATSAPP_MAX_BUTTON_SEPARATOR = 'More options:'
10
+ export const MENU_BUTTON_WHATSAPP_BUTTON_LIST = 'Show options'
@@ -2,8 +2,9 @@ import React, { useContext } from 'react'
2
2
  import styled from 'styled-components'
3
3
 
4
4
  import { COLORS, WEBCHAT } from '../constants'
5
- import { WebchatContext } from '../contexts'
6
5
  import { renderComponent } from '../util/react'
6
+ import { WebchatContext } from '../webchat/context'
7
+ import { ReplyProps } from './index-types'
7
8
 
8
9
  const StyledButton = styled.button`
9
10
  width: 100%;
@@ -14,9 +15,10 @@ const StyledButton = styled.button`
14
15
  outline: 0;
15
16
  `
16
17
 
17
- export const Reply = props => {
18
+ export const Reply = (props: ReplyProps) => {
18
19
  const { sendText, getThemeProperty } = useContext(WebchatContext)
19
- const handleClick = event => {
20
+
21
+ const handleClick = (event: any) => {
20
22
  event.preventDefault()
21
23
  if (props.children) {
22
24
  let payload = props.payload
@@ -59,15 +61,19 @@ export const Reply = props => {
59
61
  const renderNode = () => {
60
62
  if (props.path) {
61
63
  const payload = `__PATH_PAYLOAD__${props.path}`
64
+ // @ts-ignore
65
+ // eslint-disable-next-line react/no-unknown-property
62
66
  return <reply payload={payload}>{props.children}</reply>
63
67
  }
68
+ // @ts-ignore
69
+ // eslint-disable-next-line react/no-unknown-property
64
70
  return <reply payload={props.payload}>{props.children}</reply>
65
71
  }
66
72
 
67
73
  return renderComponent({ renderBrowser, renderNode })
68
74
  }
69
75
 
70
- Reply.serialize = replyProps => {
76
+ Reply.serialize = (replyProps: ReplyProps) => {
71
77
  let payload = replyProps.payload
72
78
  if (replyProps.path) payload = `__PATH_PAYLOAD__${replyProps.path}`
73
79
  return { reply: { title: replyProps.children, payload } }
@@ -4,6 +4,7 @@ import styled from 'styled-components'
4
4
 
5
5
  import { COLORS, ROLES } from '../constants'
6
6
  import { staticAsset } from '../util/environment'
7
+ import { VideoProps } from './index-types'
7
8
  import { Message } from './message'
8
9
 
9
10
  const StyledVideo = styled.video`
@@ -14,11 +15,11 @@ const StyledVideo = styled.video`
14
15
  margin: 10px;
15
16
  `
16
17
 
17
- const serialize = videoProps => {
18
+ const serialize = (videoProps: { src: string }) => {
18
19
  return { video: videoProps.src }
19
20
  }
20
21
 
21
- export const Video = props => {
22
+ export const Video = (props: VideoProps) => {
22
23
  props = { ...props, src: staticAsset(props.src) }
23
24
  let content = props.children
24
25
  if (isBrowser())
@@ -1,10 +1,22 @@
1
1
  import { INPUT } from '@botonic/core'
2
2
  import React, { useContext } from 'react'
3
3
 
4
- import { WebchatContext } from '../contexts'
5
4
  import { renderComponent } from '../util/react'
6
5
  import { stringifyWithRegexs } from '../util/regexs'
7
- import { WebchatSettingsProps } from '.'
6
+ import { WebchatContext } from '../webchat/context'
7
+ import { PersistentMenuOptionsTheme, ThemeProps } from '../webchat/theme/types'
8
+ import { BlockInputOption } from './index-types'
9
+
10
+ export interface WebchatSettingsProps {
11
+ blockInputs?: BlockInputOption[]
12
+ enableAnimations?: boolean
13
+ enableAttachments?: boolean
14
+ enableEmojiPicker?: boolean
15
+ enableUserInput?: boolean
16
+ persistentMenu?: PersistentMenuOptionsTheme
17
+ theme?: ThemeProps
18
+ user?: { extra_data?: any }
19
+ }
8
20
 
9
21
  export const WebchatSettings = ({
10
22
  theme,
@@ -4,7 +4,7 @@ import React from 'react'
4
4
  import { truncateText } from '../util'
5
5
  import { renderComponent } from '../util/react'
6
6
  import { Message } from './message'
7
- import { WHATSAPP_MAX_BUTTON_CHARS } from './multichannel/multichannel-utils'
7
+ import { WHATSAPP_MAX_BUTTON_CHARS } from './multichannel/whatsapp/constants'
8
8
  import { convertToMarkdownMeta } from './multichannel/whatsapp/markdown-meta'
9
9
 
10
10
  // TODO: Add validation in component
@@ -0,0 +1,42 @@
1
+ import { INPUT } from '@botonic/core'
2
+ import React from 'react'
3
+
4
+ import { renderComponent } from '../util/react'
5
+ import { Message } from './message'
6
+
7
+ export interface WhatsappCatalogProps {
8
+ body: string
9
+ footer?: string
10
+ thumbnailProductId?: string
11
+ }
12
+
13
+ const serialize = (message: string) => {
14
+ return { text: message }
15
+ }
16
+
17
+ export const WhatsappCatalog = (props: WhatsappCatalogProps) => {
18
+ const renderBrowser = () => {
19
+ // Return a dummy message for browser
20
+ const message = `WhatsApp Catalog would be sent to the user.`
21
+ return (
22
+ <Message json={serialize(message)} {...props} type={INPUT.TEXT}>
23
+ {message}
24
+ </Message>
25
+ )
26
+ }
27
+
28
+ const renderNode = () => {
29
+ return (
30
+ // @ts-ignore Property 'message' does not exist on type 'JSX.IntrinsicElements'.
31
+ <message
32
+ {...props}
33
+ body={props.body}
34
+ footer={props.footer}
35
+ thumbnailProductId={props.thumbnailProductId}
36
+ type={INPUT.WHATSAPP_CATALOG}
37
+ />
38
+ )
39
+ }
40
+
41
+ return renderComponent({ renderBrowser, renderNode })
42
+ }
@@ -10,7 +10,7 @@ import {
10
10
  WHATSAPP_MAX_BUTTON_CHARS,
11
11
  WHATSAPP_MAX_FOOTER_CHARS,
12
12
  WHATSAPP_MAX_HEADER_CHARS,
13
- } from './multichannel/multichannel-utils'
13
+ } from './multichannel/whatsapp/constants'
14
14
  import { convertToMarkdownMeta } from './multichannel/whatsapp/markdown-meta'
15
15
 
16
16
  export interface WhatsappCTAUrlButtonCommonProps {
@@ -0,0 +1,104 @@
1
+ import { INPUT } from '@botonic/core'
2
+ import React from 'react'
3
+
4
+ import { toSnakeCaseKeys } from '../util/functional'
5
+ import { renderComponent } from '../util/react'
6
+ import { Message } from './message'
7
+
8
+ type Parameters = TextParameter | CurrencyParameter | DateTimeParameter
9
+
10
+ interface TextParameter {
11
+ type: 'text'
12
+ text: string
13
+ }
14
+
15
+ interface CurrencyParameter {
16
+ type: 'currency'
17
+ currency: {
18
+ fallbackValue: string
19
+ code: string
20
+ amount1000: number
21
+ }
22
+ }
23
+
24
+ interface DateTimeParameter {
25
+ type: 'date_time'
26
+ dateTime: { fallbackValue: string }
27
+ }
28
+
29
+ type CardButton = QuickReplyButton | UrlButton
30
+
31
+ interface Button {
32
+ type: 'quick_reply' | 'url'
33
+ buttonIndex?: number
34
+ }
35
+
36
+ interface QuickReplyButton extends Button {
37
+ payload: string
38
+ }
39
+
40
+ interface UrlButton extends Button {
41
+ urlVariable: string
42
+ }
43
+
44
+ interface Card {
45
+ fileType: 'image' | 'video'
46
+ fileId: string
47
+ cardIndex?: number
48
+ bodyParameters?: Parameters[]
49
+ buttons?: CardButton[]
50
+ extraComponents?: Record<string, any>[]
51
+ }
52
+
53
+ export interface WhatsappMediaCarouselProps {
54
+ templateName: string
55
+ templateLanguage: string
56
+ cards: Card[]
57
+ bodyParameters?: Parameters[]
58
+ }
59
+
60
+ const serialize = (message: string) => {
61
+ return { text: message }
62
+ }
63
+
64
+ export const WhatsappMediaCarousel = (props: WhatsappMediaCarouselProps) => {
65
+ const renderBrowser = () => {
66
+ // Return a dummy message for browser
67
+ const message = `WhatsApp Media Carousel would be sent to the user.`
68
+ return (
69
+ <Message json={serialize(message)} {...props} type={INPUT.TEXT}>
70
+ {message}
71
+ </Message>
72
+ )
73
+ }
74
+
75
+ const getCards = (cards: Card[]) => {
76
+ cards.forEach((card, index) => {
77
+ if (!card.cardIndex) {
78
+ card.cardIndex = index
79
+ }
80
+ card.buttons?.forEach((button, index) => {
81
+ if (!button.buttonIndex) {
82
+ button.buttonIndex = index
83
+ }
84
+ })
85
+ })
86
+ return toSnakeCaseKeys(cards)
87
+ }
88
+
89
+ const renderNode = () => {
90
+ return (
91
+ // @ts-ignore Property 'message' does not exist on type 'JSX.IntrinsicElements'.
92
+ <message
93
+ {...props}
94
+ bodyParameters={JSON.stringify(toSnakeCaseKeys(props.bodyParameters))}
95
+ cards={JSON.stringify(getCards(props.cards))}
96
+ templateName={props.templateName}
97
+ templateLanguage={props.templateLanguage}
98
+ type={INPUT.WHATSAPP_MEDIA_CAROUSEL}
99
+ />
100
+ )
101
+ }
102
+
103
+ return renderComponent({ renderBrowser, renderNode })
104
+ }
@@ -0,0 +1,83 @@
1
+ import { INPUT } from '@botonic/core'
2
+ import React from 'react'
3
+
4
+ import { toSnakeCaseKeys } from '../util/functional'
5
+ import { renderComponent } from '../util/react'
6
+ import { Message } from './message'
7
+
8
+ type Parameters = TextParameter | CurrencyParameter | DateTimeParameter
9
+
10
+ interface TextParameter {
11
+ type: 'text'
12
+ text: string
13
+ }
14
+
15
+ interface CurrencyParameter {
16
+ type: 'currency'
17
+ currency: {
18
+ fallbackValue: string
19
+ code: string
20
+ amount1000: number
21
+ }
22
+ }
23
+
24
+ interface DateTimeParameter {
25
+ type: 'date_time'
26
+ dateTime: { fallbackValue: string }
27
+ }
28
+
29
+ interface Card {
30
+ productRetailerId: string
31
+ catalogId: string
32
+ cardIndex?: number
33
+ }
34
+
35
+ export interface WhatsappProductCarouselProps {
36
+ templateName: string
37
+ templateLanguage: string
38
+ cards: Card[]
39
+ bodyParameters?: Parameters[]
40
+ }
41
+
42
+ const serialize = (message: string) => {
43
+ return { text: message }
44
+ }
45
+
46
+ export const WhatsappProductCarousel = (
47
+ props: WhatsappProductCarouselProps
48
+ ) => {
49
+ const renderBrowser = () => {
50
+ // Return a dummy message for browser
51
+ const message = `WhatsApp Product Carousel would be sent to the user.`
52
+ return (
53
+ <Message json={serialize(message)} {...props} type={INPUT.TEXT}>
54
+ {message}
55
+ </Message>
56
+ )
57
+ }
58
+
59
+ const getCards = (cards: Card[]) => {
60
+ cards.forEach((card, index) => {
61
+ if (!card.cardIndex) {
62
+ card.cardIndex = index
63
+ }
64
+ })
65
+ return toSnakeCaseKeys(cards)
66
+ }
67
+
68
+ const renderNode = () => {
69
+ return (
70
+ // @ts-ignore Property 'message' does not exist on type 'JSX.IntrinsicElements'.
71
+ <message
72
+ {...props}
73
+ bodyParameters={JSON.stringify(toSnakeCaseKeys(props.bodyParameters))}
74
+ cards={JSON.stringify(getCards(props.cards))}
75
+ templateName={props.templateName}
76
+ templateLanguage={props.templateLanguage}
77
+ type={INPUT.WHATSAPP_PRODUCT_CAROUSEL}
78
+ />
79
+ )
80
+ }
81
+
82
+ return renderComponent({ renderBrowser, renderNode })
83
+ }
@@ -0,0 +1,56 @@
1
+ import { INPUT } from '@botonic/core'
2
+ import React from 'react'
3
+
4
+ import { toSnakeCaseKeys } from '../util/functional'
5
+ import { renderComponent } from '../util/react'
6
+ import { Message } from './message'
7
+
8
+ export interface ProductItem {
9
+ productRetailerId: string
10
+ }
11
+
12
+ export interface WhatsappProductListSection {
13
+ title: string
14
+ productItems: ProductItem[]
15
+ }
16
+
17
+ export interface WhatsappProductListProps {
18
+ body: string
19
+ header: string
20
+ catalogId: string
21
+ sections: WhatsappProductListSection[]
22
+ footer?: string
23
+ }
24
+
25
+ const serialize = (message: string) => {
26
+ return { text: message }
27
+ }
28
+
29
+ export const WhatsappProductList = (props: WhatsappProductListProps) => {
30
+ const renderBrowser = () => {
31
+ // Return a dummy message for browser
32
+ const message = `WhatsApp Product List would be sent to the user.`
33
+ return (
34
+ <Message json={serialize(message)} {...props} type={INPUT.TEXT}>
35
+ {message}
36
+ </Message>
37
+ )
38
+ }
39
+
40
+ const renderNode = () => {
41
+ return (
42
+ // @ts-ignore Property 'message' does not exist on type 'JSX.IntrinsicElements'.
43
+ <message
44
+ {...props}
45
+ body={props.body}
46
+ footer={props.footer}
47
+ header={props.header}
48
+ sections={JSON.stringify(toSnakeCaseKeys(props.sections))}
49
+ catalogId={props.catalogId}
50
+ type={INPUT.WHATSAPP_PRODUCT_LIST}
51
+ />
52
+ )
53
+ }
54
+
55
+ return renderComponent({ renderBrowser, renderNode })
56
+ }
@@ -0,0 +1,44 @@
1
+ import { INPUT } from '@botonic/core'
2
+ import React from 'react'
3
+
4
+ import { renderComponent } from '../util/react'
5
+ import { Message } from './message'
6
+
7
+ export interface WhatsappProductProps {
8
+ body: string
9
+ catalogId: string
10
+ productId: string
11
+ footer?: string
12
+ }
13
+
14
+ const serialize = (message: string) => {
15
+ return { text: message }
16
+ }
17
+
18
+ export const WhatsappProduct = (props: WhatsappProductProps) => {
19
+ const renderBrowser = () => {
20
+ // Return a dummy message for browser
21
+ const message = `WhatsApp Product would be sent to the user.`
22
+ return (
23
+ <Message json={serialize(message)} {...props} type={INPUT.TEXT}>
24
+ {message}
25
+ </Message>
26
+ )
27
+ }
28
+
29
+ const renderNode = () => {
30
+ return (
31
+ // @ts-ignore Property 'message' does not exist on type 'JSX.IntrinsicElements'.
32
+ <message
33
+ {...props}
34
+ body={props.body}
35
+ footer={props.footer}
36
+ catalogId={props.catalogId}
37
+ productId={props.productId}
38
+ type={INPUT.WHATSAPP_PRODUCT}
39
+ />
40
+ )
41
+ }
42
+
43
+ return renderComponent({ renderBrowser, renderNode })
44
+ }
package/src/constants.js CHANGED
@@ -189,10 +189,3 @@ export const ROLES = {
189
189
  DOCUMENT_MESSAGE: 'document-message',
190
190
  RAW_MESSAGE: 'raw-message',
191
191
  }
192
-
193
- export const COMPONENT_TYPE = {
194
- TEXT: 'Text',
195
- BUTTON: 'Button',
196
- REPLY: 'Reply',
197
- CAROUSEL: 'Carousel',
198
- }