@botonic/react 0.31.0 → 0.31.1-alpha.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 (419) hide show
  1. package/lib/cjs/components/index.d.ts +5 -0
  2. package/lib/cjs/components/index.js +11 -1
  3. package/lib/cjs/components/index.js.map +1 -1
  4. package/lib/cjs/components/whatsapp-catalog.d.ts +6 -0
  5. package/lib/cjs/components/whatsapp-catalog.js +25 -0
  6. package/lib/cjs/components/whatsapp-catalog.js.map +1 -0
  7. package/lib/cjs/components/whatsapp-media-carousel.d.ts +46 -0
  8. package/lib/cjs/components/whatsapp-media-carousel.js +40 -0
  9. package/lib/cjs/components/whatsapp-media-carousel.js.map +1 -0
  10. package/lib/cjs/components/whatsapp-product-carousel.d.ts +32 -0
  11. package/lib/cjs/components/whatsapp-product-carousel.js +34 -0
  12. package/lib/cjs/components/whatsapp-product-carousel.js.map +1 -0
  13. package/lib/cjs/components/whatsapp-product-list.d.ts +15 -0
  14. package/lib/cjs/components/whatsapp-product-list.js +26 -0
  15. package/lib/cjs/components/whatsapp-product-list.js.map +1 -0
  16. package/lib/cjs/components/whatsapp-product.d.ts +7 -0
  17. package/lib/cjs/components/whatsapp-product.js +25 -0
  18. package/lib/cjs/components/whatsapp-product.js.map +1 -0
  19. package/lib/cjs/util/functional.d.ts +3 -0
  20. package/lib/cjs/util/functional.js +30 -0
  21. package/lib/cjs/util/functional.js.map +1 -0
  22. package/package.json +2 -2
  23. package/src/components/index.ts +16 -0
  24. package/src/components/whatsapp-catalog.tsx +42 -0
  25. package/src/components/whatsapp-media-carousel.tsx +104 -0
  26. package/src/components/whatsapp-product-carousel.tsx +83 -0
  27. package/src/components/whatsapp-product-list.tsx +56 -0
  28. package/src/components/whatsapp-product.tsx +44 -0
  29. package/src/util/functional.ts +31 -0
  30. package/lib/esm/app.d.ts +0 -2
  31. package/lib/esm/app.js +0 -6
  32. package/lib/esm/app.js.map +0 -1
  33. package/lib/esm/botonic-tester.d.ts +0 -30
  34. package/lib/esm/botonic-tester.js +0 -78
  35. package/lib/esm/botonic-tester.js.map +0 -1
  36. package/lib/esm/components/audio.d.ts +0 -9
  37. package/lib/esm/components/audio.js +0 -21
  38. package/lib/esm/components/audio.js.map +0 -1
  39. package/lib/esm/components/button.d.ts +0 -17
  40. package/lib/esm/components/button.js +0 -159
  41. package/lib/esm/components/button.js.map +0 -1
  42. package/lib/esm/components/buttons-disabler.d.ts +0 -24
  43. package/lib/esm/components/buttons-disabler.js +0 -84
  44. package/lib/esm/components/buttons-disabler.js.map +0 -1
  45. package/lib/esm/components/carousel.d.ts +0 -10
  46. package/lib/esm/components/carousel.js +0 -105
  47. package/lib/esm/components/carousel.js.map +0 -1
  48. package/lib/esm/components/components.d.ts +0 -12
  49. package/lib/esm/components/components.js +0 -17
  50. package/lib/esm/components/components.js.map +0 -1
  51. package/lib/esm/components/custom-message.d.ts +0 -16
  52. package/lib/esm/components/custom-message.js +0 -50
  53. package/lib/esm/components/custom-message.js.map +0 -1
  54. package/lib/esm/components/document.d.ts +0 -9
  55. package/lib/esm/components/document.js +0 -42
  56. package/lib/esm/components/document.js.map +0 -1
  57. package/lib/esm/components/element.d.ts +0 -4
  58. package/lib/esm/components/element.js +0 -51
  59. package/lib/esm/components/element.js.map +0 -1
  60. package/lib/esm/components/handoff.d.ts +0 -1
  61. package/lib/esm/components/handoff.js +0 -49
  62. package/lib/esm/components/handoff.js.map +0 -1
  63. package/lib/esm/components/image.d.ts +0 -9
  64. package/lib/esm/components/image.js +0 -35
  65. package/lib/esm/components/image.js.map +0 -1
  66. package/lib/esm/components/index-types.d.ts +0 -89
  67. package/lib/esm/components/index-types.js +0 -2
  68. package/lib/esm/components/index-types.js.map +0 -1
  69. package/lib/esm/components/index.d.ts +0 -25
  70. package/lib/esm/components/index.js +0 -26
  71. package/lib/esm/components/index.js.map +0 -1
  72. package/lib/esm/components/location.d.ts +0 -11
  73. package/lib/esm/components/location.js +0 -27
  74. package/lib/esm/components/location.js.map +0 -1
  75. package/lib/esm/components/markdown.d.ts +0 -7
  76. package/lib/esm/components/markdown.js +0 -152
  77. package/lib/esm/components/markdown.js.map +0 -1
  78. package/lib/esm/components/message/index.d.ts +0 -1
  79. package/lib/esm/components/message/index.js +0 -147
  80. package/lib/esm/components/message/index.js.map +0 -1
  81. package/lib/esm/components/message/message-feedback.d.ts +0 -7
  82. package/lib/esm/components/message/message-feedback.js +0 -59
  83. package/lib/esm/components/message/message-feedback.js.map +0 -1
  84. package/lib/esm/components/message/message-footer.d.ts +0 -11
  85. package/lib/esm/components/message/message-footer.js +0 -17
  86. package/lib/esm/components/message/message-footer.js.map +0 -1
  87. package/lib/esm/components/message/message-image.d.ts +0 -7
  88. package/lib/esm/components/message/message-image.js +0 -19
  89. package/lib/esm/components/message/message-image.js.map +0 -1
  90. package/lib/esm/components/message/styles.d.ts +0 -33
  91. package/lib/esm/components/message/styles.js +0 -118
  92. package/lib/esm/components/message/styles.js.map +0 -1
  93. package/lib/esm/components/message/timestamps.d.ts +0 -13
  94. package/lib/esm/components/message/timestamps.js +0 -40
  95. package/lib/esm/components/message/timestamps.js.map +0 -1
  96. package/lib/esm/components/message-template.d.ts +0 -1
  97. package/lib/esm/components/message-template.js +0 -9
  98. package/lib/esm/components/message-template.js.map +0 -1
  99. package/lib/esm/components/multichannel/facebook/facebook.d.ts +0 -17
  100. package/lib/esm/components/multichannel/facebook/facebook.js +0 -43
  101. package/lib/esm/components/multichannel/facebook/facebook.js.map +0 -1
  102. package/lib/esm/components/multichannel/index-types.d.ts +0 -46
  103. package/lib/esm/components/multichannel/index-types.js +0 -2
  104. package/lib/esm/components/multichannel/index-types.js.map +0 -1
  105. package/lib/esm/components/multichannel/index.d.ts +0 -11
  106. package/lib/esm/components/multichannel/index.js +0 -12
  107. package/lib/esm/components/multichannel/index.js.map +0 -1
  108. package/lib/esm/components/multichannel/multichannel-button.d.ts +0 -1
  109. package/lib/esm/components/multichannel/multichannel-button.js +0 -67
  110. package/lib/esm/components/multichannel/multichannel-button.js.map +0 -1
  111. package/lib/esm/components/multichannel/multichannel-carousel.d.ts +0 -1
  112. package/lib/esm/components/multichannel/multichannel-carousel.js +0 -74
  113. package/lib/esm/components/multichannel/multichannel-carousel.js.map +0 -1
  114. package/lib/esm/components/multichannel/multichannel-context.d.ts +0 -11
  115. package/lib/esm/components/multichannel/multichannel-context.js +0 -12
  116. package/lib/esm/components/multichannel/multichannel-context.js.map +0 -1
  117. package/lib/esm/components/multichannel/multichannel-reply.d.ts +0 -1
  118. package/lib/esm/components/multichannel/multichannel-reply.js +0 -20
  119. package/lib/esm/components/multichannel/multichannel-reply.js.map +0 -1
  120. package/lib/esm/components/multichannel/multichannel-text.d.ts +0 -1
  121. package/lib/esm/components/multichannel/multichannel-text.js +0 -160
  122. package/lib/esm/components/multichannel/multichannel-text.js.map +0 -1
  123. package/lib/esm/components/multichannel/multichannel-utils.d.ts +0 -21
  124. package/lib/esm/components/multichannel/multichannel-utils.js +0 -81
  125. package/lib/esm/components/multichannel/multichannel-utils.js.map +0 -1
  126. package/lib/esm/components/multichannel/multichannel.d.ts +0 -1
  127. package/lib/esm/components/multichannel/multichannel.js +0 -57
  128. package/lib/esm/components/multichannel/multichannel.js.map +0 -1
  129. package/lib/esm/components/multichannel/whatsapp/constants.d.ts +0 -11
  130. package/lib/esm/components/multichannel/whatsapp/constants.js +0 -10
  131. package/lib/esm/components/multichannel/whatsapp/constants.js.map +0 -1
  132. package/lib/esm/components/multichannel/whatsapp/markdown-meta.d.ts +0 -1
  133. package/lib/esm/components/multichannel/whatsapp/markdown-meta.js +0 -38
  134. package/lib/esm/components/multichannel/whatsapp/markdown-meta.js.map +0 -1
  135. package/lib/esm/components/pic.d.ts +0 -6
  136. package/lib/esm/components/pic.js +0 -25
  137. package/lib/esm/components/pic.js.map +0 -1
  138. package/lib/esm/components/raw.d.ts +0 -9
  139. package/lib/esm/components/raw.js +0 -39
  140. package/lib/esm/components/raw.js.map +0 -1
  141. package/lib/esm/components/reply.d.ts +0 -10
  142. package/lib/esm/components/reply.js +0 -53
  143. package/lib/esm/components/reply.js.map +0 -1
  144. package/lib/esm/components/share-button.d.ts +0 -1
  145. package/lib/esm/components/share-button.js +0 -9
  146. package/lib/esm/components/share-button.js.map +0 -1
  147. package/lib/esm/components/subtitle.d.ts +0 -6
  148. package/lib/esm/components/subtitle.js +0 -19
  149. package/lib/esm/components/subtitle.js.map +0 -1
  150. package/lib/esm/components/text.d.ts +0 -7
  151. package/lib/esm/components/text.js +0 -40
  152. package/lib/esm/components/text.js.map +0 -1
  153. package/lib/esm/components/title.d.ts +0 -6
  154. package/lib/esm/components/title.js +0 -17
  155. package/lib/esm/components/title.js.map +0 -1
  156. package/lib/esm/components/video.d.ts +0 -9
  157. package/lib/esm/components/video.js +0 -25
  158. package/lib/esm/components/video.js.map +0 -1
  159. package/lib/esm/components/webchat-settings.d.ts +0 -16
  160. package/lib/esm/components/webchat-settings.js +0 -69
  161. package/lib/esm/components/webchat-settings.js.map +0 -1
  162. package/lib/esm/components/whatsapp-button-list.d.ts +0 -20
  163. package/lib/esm/components/whatsapp-button-list.js +0 -47
  164. package/lib/esm/components/whatsapp-button-list.js.map +0 -1
  165. package/lib/esm/components/whatsapp-cta-url-button.d.ts +0 -15
  166. package/lib/esm/components/whatsapp-cta-url-button.js +0 -33
  167. package/lib/esm/components/whatsapp-cta-url-button.js.map +0 -1
  168. package/lib/esm/components/whatsapp-template.d.ts +0 -1
  169. package/lib/esm/components/whatsapp-template.js +0 -20
  170. package/lib/esm/components/whatsapp-template.js.map +0 -1
  171. package/lib/esm/constants.d.ts +0 -165
  172. package/lib/esm/constants.js +0 -187
  173. package/lib/esm/constants.js.map +0 -1
  174. package/lib/esm/contexts.d.ts +0 -18
  175. package/lib/esm/contexts.js +0 -18
  176. package/lib/esm/contexts.js.map +0 -1
  177. package/lib/esm/dev-app.d.ts +0 -38
  178. package/lib/esm/dev-app.js +0 -81
  179. package/lib/esm/dev-app.js.map +0 -1
  180. package/lib/esm/index-types.d.ts +0 -178
  181. package/lib/esm/index-types.js +0 -12
  182. package/lib/esm/index-types.js.map +0 -1
  183. package/lib/esm/index.d.ts +0 -11
  184. package/lib/esm/index.js +0 -12
  185. package/lib/esm/index.js.map +0 -1
  186. package/lib/esm/message-utils.d.ts +0 -19
  187. package/lib/esm/message-utils.js +0 -41
  188. package/lib/esm/message-utils.js.map +0 -1
  189. package/lib/esm/msg-to-botonic.d.ts +0 -18
  190. package/lib/esm/msg-to-botonic.js +0 -132
  191. package/lib/esm/msg-to-botonic.js.map +0 -1
  192. package/lib/esm/node-app.d.ts +0 -7
  193. package/lib/esm/node-app.js +0 -19
  194. package/lib/esm/node-app.js.map +0 -1
  195. package/lib/esm/react-bot.d.ts +0 -8
  196. package/lib/esm/react-bot.js +0 -32
  197. package/lib/esm/react-bot.js.map +0 -1
  198. package/lib/esm/shared/styles.d.ts +0 -2
  199. package/lib/esm/shared/styles.js +0 -28
  200. package/lib/esm/shared/styles.js.map +0 -1
  201. package/lib/esm/util/dom.d.ts +0 -4
  202. package/lib/esm/util/dom.js +0 -24
  203. package/lib/esm/util/dom.js.map +0 -1
  204. package/lib/esm/util/environment.d.ts +0 -6
  205. package/lib/esm/util/environment.js +0 -61
  206. package/lib/esm/util/environment.js.map +0 -1
  207. package/lib/esm/util/error-boundary.d.ts +0 -7
  208. package/lib/esm/util/error-boundary.js +0 -28
  209. package/lib/esm/util/error-boundary.js.map +0 -1
  210. package/lib/esm/util/index.d.ts +0 -9
  211. package/lib/esm/util/index.js +0 -10
  212. package/lib/esm/util/index.js.map +0 -1
  213. package/lib/esm/util/logs.d.ts +0 -2
  214. package/lib/esm/util/logs.js +0 -15
  215. package/lib/esm/util/logs.js.map +0 -1
  216. package/lib/esm/util/objects.d.ts +0 -3
  217. package/lib/esm/util/objects.js +0 -38
  218. package/lib/esm/util/objects.js.map +0 -1
  219. package/lib/esm/util/react.d.ts +0 -12
  220. package/lib/esm/util/react.js +0 -34
  221. package/lib/esm/util/react.js.map +0 -1
  222. package/lib/esm/util/regexs.d.ts +0 -2
  223. package/lib/esm/util/regexs.js +0 -18
  224. package/lib/esm/util/regexs.js.map +0 -1
  225. package/lib/esm/util/strings.d.ts +0 -1
  226. package/lib/esm/util/strings.js +0 -7
  227. package/lib/esm/util/strings.js.map +0 -1
  228. package/lib/esm/util/webchat.d.ts +0 -22
  229. package/lib/esm/util/webchat.js +0 -55
  230. package/lib/esm/util/webchat.js.map +0 -1
  231. package/lib/esm/util/webviews.d.ts +0 -1
  232. package/lib/esm/util/webviews.js +0 -6
  233. package/lib/esm/util/webviews.js.map +0 -1
  234. package/lib/esm/webchat/chat-area/index.d.ts +0 -1
  235. package/lib/esm/webchat/chat-area/index.js +0 -18
  236. package/lib/esm/webchat/chat-area/index.js.map +0 -1
  237. package/lib/esm/webchat/chat-area/styles.d.ts +0 -3
  238. package/lib/esm/webchat/chat-area/styles.js +0 -9
  239. package/lib/esm/webchat/chat-area/styles.js.map +0 -1
  240. package/lib/esm/webchat/components/common.d.ts +0 -1
  241. package/lib/esm/webchat/components/common.js +0 -9
  242. package/lib/esm/webchat/components/common.js.map +0 -1
  243. package/lib/esm/webchat/components/conditional-animation.d.ts +0 -1
  244. package/lib/esm/webchat/components/conditional-animation.js +0 -12
  245. package/lib/esm/webchat/components/conditional-animation.js.map +0 -1
  246. package/lib/esm/webchat/components/opened-persistent-menu.d.ts +0 -6
  247. package/lib/esm/webchat/components/opened-persistent-menu.js +0 -30
  248. package/lib/esm/webchat/components/opened-persistent-menu.js.map +0 -1
  249. package/lib/esm/webchat/constants.d.ts +0 -8
  250. package/lib/esm/webchat/constants.js +0 -10
  251. package/lib/esm/webchat/constants.js.map +0 -1
  252. package/lib/esm/webchat/context/actions.d.ts +0 -29
  253. package/lib/esm/webchat/context/actions.js +0 -32
  254. package/lib/esm/webchat/context/actions.js.map +0 -1
  255. package/lib/esm/webchat/context/index.d.ts +0 -5
  256. package/lib/esm/webchat/context/index.js +0 -78
  257. package/lib/esm/webchat/context/index.js.map +0 -1
  258. package/lib/esm/webchat/context/messages-reducer.d.ts +0 -6
  259. package/lib/esm/webchat/context/messages-reducer.js +0 -85
  260. package/lib/esm/webchat/context/messages-reducer.js.map +0 -1
  261. package/lib/esm/webchat/context/types.d.ts +0 -74
  262. package/lib/esm/webchat/context/types.js +0 -2
  263. package/lib/esm/webchat/context/types.js.map +0 -1
  264. package/lib/esm/webchat/context/use-webchat.d.ts +0 -47
  265. package/lib/esm/webchat/context/use-webchat.js +0 -195
  266. package/lib/esm/webchat/context/use-webchat.js.map +0 -1
  267. package/lib/esm/webchat/context/webchat-reducer.d.ts +0 -6
  268. package/lib/esm/webchat/context/webchat-reducer.js +0 -48
  269. package/lib/esm/webchat/context/webchat-reducer.js.map +0 -1
  270. package/lib/esm/webchat/cover-component/index.d.ts +0 -6
  271. package/lib/esm/webchat/cover-component/index.js +0 -17
  272. package/lib/esm/webchat/cover-component/index.js.map +0 -1
  273. package/lib/esm/webchat/devices/index.d.ts +0 -11
  274. package/lib/esm/webchat/devices/index.js +0 -18
  275. package/lib/esm/webchat/devices/index.js.map +0 -1
  276. package/lib/esm/webchat/header/default-header.d.ts +0 -1
  277. package/lib/esm/webchat/header/default-header.js +0 -21
  278. package/lib/esm/webchat/header/default-header.js.map +0 -1
  279. package/lib/esm/webchat/header/index.d.ts +0 -2
  280. package/lib/esm/webchat/header/index.js +0 -20
  281. package/lib/esm/webchat/header/index.js.map +0 -1
  282. package/lib/esm/webchat/header/styles.d.ts +0 -7
  283. package/lib/esm/webchat/header/styles.js +0 -55
  284. package/lib/esm/webchat/header/styles.js.map +0 -1
  285. package/lib/esm/webchat/hooks/index.d.ts +0 -10
  286. package/lib/esm/webchat/hooks/index.js +0 -11
  287. package/lib/esm/webchat/hooks/index.js.map +0 -1
  288. package/lib/esm/webchat/hooks/use-component-visible.d.ts +0 -8
  289. package/lib/esm/webchat/hooks/use-component-visible.js +0 -20
  290. package/lib/esm/webchat/hooks/use-component-visible.js.map +0 -1
  291. package/lib/esm/webchat/hooks/use-component-will-mount.d.ts +0 -1
  292. package/lib/esm/webchat/hooks/use-component-will-mount.js +0 -5
  293. package/lib/esm/webchat/hooks/use-component-will-mount.js.map +0 -1
  294. package/lib/esm/webchat/hooks/use-device-adapter.d.ts +0 -3
  295. package/lib/esm/webchat/hooks/use-device-adapter.js +0 -42
  296. package/lib/esm/webchat/hooks/use-device-adapter.js.map +0 -1
  297. package/lib/esm/webchat/hooks/use-previous.d.ts +0 -1
  298. package/lib/esm/webchat/hooks/use-previous.js +0 -9
  299. package/lib/esm/webchat/hooks/use-previous.js.map +0 -1
  300. package/lib/esm/webchat/hooks/use-scroll-to-bottom.d.ts +0 -9
  301. package/lib/esm/webchat/hooks/use-scroll-to-bottom.js +0 -19
  302. package/lib/esm/webchat/hooks/use-scroll-to-bottom.js.map +0 -1
  303. package/lib/esm/webchat/hooks/use-scrollbar-controller.d.ts +0 -6
  304. package/lib/esm/webchat/hooks/use-scrollbar-controller.js +0 -136
  305. package/lib/esm/webchat/hooks/use-scrollbar-controller.js.map +0 -1
  306. package/lib/esm/webchat/hooks/use-typing.d.ts +0 -10
  307. package/lib/esm/webchat/hooks/use-typing.js +0 -28
  308. package/lib/esm/webchat/hooks/use-typing.js.map +0 -1
  309. package/lib/esm/webchat/hooks/use-virtual-keyboard-detection.d.ts +0 -3
  310. package/lib/esm/webchat/hooks/use-virtual-keyboard-detection.js +0 -24
  311. package/lib/esm/webchat/hooks/use-virtual-keyboard-detection.js.map +0 -1
  312. package/lib/esm/webchat/hooks/use-webchat-dimensions.d.ts +0 -4
  313. package/lib/esm/webchat/hooks/use-webchat-dimensions.js +0 -36
  314. package/lib/esm/webchat/hooks/use-webchat-dimensions.js.map +0 -1
  315. package/lib/esm/webchat/hooks/use-webchat-resizer.d.ts +0 -4
  316. package/lib/esm/webchat/hooks/use-webchat-resizer.js +0 -30
  317. package/lib/esm/webchat/hooks/use-webchat-resizer.js.map +0 -1
  318. package/lib/esm/webchat/index-types.d.ts +0 -18
  319. package/lib/esm/webchat/index-types.js +0 -2
  320. package/lib/esm/webchat/index-types.js.map +0 -1
  321. package/lib/esm/webchat/index.d.ts +0 -5
  322. package/lib/esm/webchat/index.js +0 -11
  323. package/lib/esm/webchat/index.js.map +0 -1
  324. package/lib/esm/webchat/input-panel/attachment.d.ts +0 -7
  325. package/lib/esm/webchat/input-panel/attachment.js +0 -26
  326. package/lib/esm/webchat/input-panel/attachment.js.map +0 -1
  327. package/lib/esm/webchat/input-panel/emoji-picker.d.ts +0 -6
  328. package/lib/esm/webchat/input-panel/emoji-picker.js +0 -23
  329. package/lib/esm/webchat/input-panel/emoji-picker.js.map +0 -1
  330. package/lib/esm/webchat/input-panel/index.d.ts +0 -12
  331. package/lib/esm/webchat/input-panel/index.js +0 -55
  332. package/lib/esm/webchat/input-panel/index.js.map +0 -1
  333. package/lib/esm/webchat/input-panel/opened-emoji-picker.d.ts +0 -6
  334. package/lib/esm/webchat/input-panel/opened-emoji-picker.js +0 -10
  335. package/lib/esm/webchat/input-panel/opened-emoji-picker.js.map +0 -1
  336. package/lib/esm/webchat/input-panel/persistent-menu.d.ts +0 -6
  337. package/lib/esm/webchat/input-panel/persistent-menu.js +0 -14
  338. package/lib/esm/webchat/input-panel/persistent-menu.js.map +0 -1
  339. package/lib/esm/webchat/input-panel/send-button.d.ts +0 -5
  340. package/lib/esm/webchat/input-panel/send-button.js +0 -14
  341. package/lib/esm/webchat/input-panel/send-button.js.map +0 -1
  342. package/lib/esm/webchat/input-panel/styles.d.ts +0 -3
  343. package/lib/esm/webchat/input-panel/styles.js +0 -27
  344. package/lib/esm/webchat/input-panel/styles.js.map +0 -1
  345. package/lib/esm/webchat/input-panel/textarea.d.ts +0 -11
  346. package/lib/esm/webchat/input-panel/textarea.js +0 -58
  347. package/lib/esm/webchat/input-panel/textarea.js.map +0 -1
  348. package/lib/esm/webchat/message-list/index.d.ts +0 -1
  349. package/lib/esm/webchat/message-list/index.js +0 -107
  350. package/lib/esm/webchat/message-list/index.js.map +0 -1
  351. package/lib/esm/webchat/message-list/intro-message.d.ts +0 -1
  352. package/lib/esm/webchat/message-list/intro-message.js +0 -18
  353. package/lib/esm/webchat/message-list/intro-message.js.map +0 -1
  354. package/lib/esm/webchat/message-list/scroll-button.d.ts +0 -6
  355. package/lib/esm/webchat/message-list/scroll-button.js +0 -12
  356. package/lib/esm/webchat/message-list/scroll-button.js.map +0 -1
  357. package/lib/esm/webchat/message-list/styles.d.ts +0 -5
  358. package/lib/esm/webchat/message-list/styles.js +0 -56
  359. package/lib/esm/webchat/message-list/styles.js.map +0 -1
  360. package/lib/esm/webchat/message-list/unread-messages-banner.d.ts +0 -6
  361. package/lib/esm/webchat/message-list/unread-messages-banner.js +0 -13
  362. package/lib/esm/webchat/message-list/unread-messages-banner.js.map +0 -1
  363. package/lib/esm/webchat/message-list/use-debounce.d.ts +0 -1
  364. package/lib/esm/webchat/message-list/use-debounce.js +0 -14
  365. package/lib/esm/webchat/message-list/use-debounce.js.map +0 -1
  366. package/lib/esm/webchat/message-list/use-notifications.d.ts +0 -7
  367. package/lib/esm/webchat/message-list/use-notifications.js +0 -20
  368. package/lib/esm/webchat/message-list/use-notifications.js.map +0 -1
  369. package/lib/esm/webchat/replies/index.d.ts +0 -1
  370. package/lib/esm/webchat/replies/index.js +0 -28
  371. package/lib/esm/webchat/replies/index.js.map +0 -1
  372. package/lib/esm/webchat/replies/styles.d.ts +0 -8
  373. package/lib/esm/webchat/replies/styles.js +0 -21
  374. package/lib/esm/webchat/replies/styles.js.map +0 -1
  375. package/lib/esm/webchat/session-view.d.ts +0 -1
  376. package/lib/esm/webchat/session-view.js +0 -96
  377. package/lib/esm/webchat/session-view.js.map +0 -1
  378. package/lib/esm/webchat/styles.d.ts +0 -9
  379. package/lib/esm/webchat/styles.js +0 -50
  380. package/lib/esm/webchat/styles.js.map +0 -1
  381. package/lib/esm/webchat/theme/types.d.ts +0 -167
  382. package/lib/esm/webchat/theme/types.js +0 -2
  383. package/lib/esm/webchat/theme/types.js.map +0 -1
  384. package/lib/esm/webchat/tracking.d.ts +0 -7
  385. package/lib/esm/webchat/tracking.js +0 -10
  386. package/lib/esm/webchat/tracking.js.map +0 -1
  387. package/lib/esm/webchat/trigger-button/index.d.ts +0 -2
  388. package/lib/esm/webchat/trigger-button/index.js +0 -28
  389. package/lib/esm/webchat/trigger-button/index.js.map +0 -1
  390. package/lib/esm/webchat/trigger-button/styles.d.ts +0 -3
  391. package/lib/esm/webchat/trigger-button/styles.js +0 -36
  392. package/lib/esm/webchat/trigger-button/styles.js.map +0 -1
  393. package/lib/esm/webchat/typing-indicator/index.d.ts +0 -3
  394. package/lib/esm/webchat/typing-indicator/index.js +0 -8
  395. package/lib/esm/webchat/typing-indicator/index.js.map +0 -1
  396. package/lib/esm/webchat/typing-indicator/styles.d.ts +0 -7
  397. package/lib/esm/webchat/typing-indicator/styles.js +0 -46
  398. package/lib/esm/webchat/typing-indicator/styles.js.map +0 -1
  399. package/lib/esm/webchat/use-storage-state-hook.d.ts +0 -1
  400. package/lib/esm/webchat/use-storage-state-hook.js +0 -38
  401. package/lib/esm/webchat/use-storage-state-hook.js.map +0 -1
  402. package/lib/esm/webchat/utils.d.ts +0 -2
  403. package/lib/esm/webchat/utils.js +0 -8
  404. package/lib/esm/webchat/utils.js.map +0 -1
  405. package/lib/esm/webchat/webchat-dev.d.ts +0 -7
  406. package/lib/esm/webchat/webchat-dev.js +0 -56
  407. package/lib/esm/webchat/webchat-dev.js.map +0 -1
  408. package/lib/esm/webchat/webchat.d.ts +0 -4
  409. package/lib/esm/webchat/webchat.js +0 -522
  410. package/lib/esm/webchat/webchat.js.map +0 -1
  411. package/lib/esm/webchat/webview.d.ts +0 -2
  412. package/lib/esm/webchat/webview.js +0 -71
  413. package/lib/esm/webchat/webview.js.map +0 -1
  414. package/lib/esm/webchat-app.d.ts +0 -78
  415. package/lib/esm/webchat-app.js +0 -363
  416. package/lib/esm/webchat-app.js.map +0 -1
  417. package/lib/esm/webview-app.d.ts +0 -7
  418. package/lib/esm/webview-app.js +0 -105
  419. package/lib/esm/webview-app.js.map +0 -1
@@ -21,5 +21,10 @@ export { Title } from './title';
21
21
  export { Video } from './video';
22
22
  export { normalizeWebchatSettings, WebchatSettings, WebchatSettingsProps, } from './webchat-settings';
23
23
  export { WhatsappButtonList, WhatsappButtonListProps, WhatsappButtonListRowProps, WhatsappButtonListSectionProps, } from './whatsapp-button-list';
24
+ export { WhatsappCatalog, WhatsappCatalogProps } from './whatsapp-catalog';
24
25
  export { WhatsappCTAUrlButton, WhatsappCTAUrlButtonProps, } from './whatsapp-cta-url-button';
26
+ export { WhatsappMediaCarousel, WhatsappMediaCarouselProps, } from './whatsapp-media-carousel';
27
+ export { WhatsappProduct } from './whatsapp-product';
28
+ export { WhatsappProductCarousel, WhatsappProductCarouselProps, } from './whatsapp-product-carousel';
29
+ export { ProductItem, WhatsappProductList, WhatsappProductListProps, WhatsappProductListSection, } from './whatsapp-product-list';
25
30
  export { WhatsappTemplate } from './whatsapp-template';
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WhatsappTemplate = exports.WhatsappCTAUrlButton = exports.WhatsappButtonList = exports.WebchatSettings = exports.normalizeWebchatSettings = exports.Video = exports.Title = exports.Text = exports.Subtitle = exports.ShareButton = exports.Reply = exports.Raw = exports.Pic = exports.MessageTemplate = exports.Message = exports.Location = exports.Image = exports.Handoff = exports.Element = exports.Document = exports.customMessage = exports.Carousel = exports.Button = exports.Audio = void 0;
3
+ exports.WhatsappTemplate = exports.WhatsappProductList = exports.WhatsappProductCarousel = exports.WhatsappProduct = exports.WhatsappMediaCarousel = exports.WhatsappCTAUrlButton = exports.WhatsappCatalog = exports.WhatsappButtonList = exports.WebchatSettings = exports.normalizeWebchatSettings = exports.Video = exports.Title = exports.Text = exports.Subtitle = exports.ShareButton = exports.Reply = exports.Raw = exports.Pic = exports.MessageTemplate = exports.Message = exports.Location = exports.Image = exports.Handoff = exports.Element = exports.Document = exports.customMessage = exports.Carousel = exports.Button = exports.Audio = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  var audio_1 = require("./audio");
6
6
  Object.defineProperty(exports, "Audio", { enumerable: true, get: function () { return audio_1.Audio; } });
@@ -47,8 +47,18 @@ Object.defineProperty(exports, "normalizeWebchatSettings", { enumerable: true, g
47
47
  Object.defineProperty(exports, "WebchatSettings", { enumerable: true, get: function () { return webchat_settings_1.WebchatSettings; } });
48
48
  var whatsapp_button_list_1 = require("./whatsapp-button-list");
49
49
  Object.defineProperty(exports, "WhatsappButtonList", { enumerable: true, get: function () { return whatsapp_button_list_1.WhatsappButtonList; } });
50
+ var whatsapp_catalog_1 = require("./whatsapp-catalog");
51
+ Object.defineProperty(exports, "WhatsappCatalog", { enumerable: true, get: function () { return whatsapp_catalog_1.WhatsappCatalog; } });
50
52
  var whatsapp_cta_url_button_1 = require("./whatsapp-cta-url-button");
51
53
  Object.defineProperty(exports, "WhatsappCTAUrlButton", { enumerable: true, get: function () { return whatsapp_cta_url_button_1.WhatsappCTAUrlButton; } });
54
+ var whatsapp_media_carousel_1 = require("./whatsapp-media-carousel");
55
+ Object.defineProperty(exports, "WhatsappMediaCarousel", { enumerable: true, get: function () { return whatsapp_media_carousel_1.WhatsappMediaCarousel; } });
56
+ var whatsapp_product_1 = require("./whatsapp-product");
57
+ Object.defineProperty(exports, "WhatsappProduct", { enumerable: true, get: function () { return whatsapp_product_1.WhatsappProduct; } });
58
+ var whatsapp_product_carousel_1 = require("./whatsapp-product-carousel");
59
+ Object.defineProperty(exports, "WhatsappProductCarousel", { enumerable: true, get: function () { return whatsapp_product_carousel_1.WhatsappProductCarousel; } });
60
+ var whatsapp_product_list_1 = require("./whatsapp-product-list");
61
+ Object.defineProperty(exports, "WhatsappProductList", { enumerable: true, get: function () { return whatsapp_product_list_1.WhatsappProductList; } });
52
62
  var whatsapp_template_1 = require("./whatsapp-template");
53
63
  Object.defineProperty(exports, "WhatsappTemplate", { enumerable: true, get: function () { return whatsapp_template_1.WhatsappTemplate; } });
54
64
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":";;;;AAAA,iCAA+B;AAAtB,8FAAA,KAAK,OAAA;AACd,mCAAiC;AAAxB,gGAAA,MAAM,OAAA;AACf,uCAAqC;AAA5B,oGAAA,QAAQ,OAAA;AACjB,mDAAgD;AAAvC,+GAAA,aAAa,OAAA;AACtB,uCAAqC;AAA5B,oGAAA,QAAQ,OAAA;AACjB,qCAAmC;AAA1B,kGAAA,OAAO,OAAA;AAChB,qCAAmC;AAA1B,kGAAA,OAAO,OAAA;AAChB,iCAA+B;AAAtB,8FAAA,KAAK,OAAA;AACd,wDAA6B;AAC7B,uCAAqC;AAA5B,oGAAA,QAAQ,OAAA;AACjB,qCAAmC;AAA1B,kGAAA,OAAO,OAAA;AAChB,uDAAoD;AAA3C,mHAAA,eAAe,OAAA;AACxB,yDAA8B;AAC9B,6BAA2B;AAAlB,0FAAA,GAAG,OAAA;AACZ,6BAA2B;AAAlB,0FAAA,GAAG,OAAA;AACZ,iCAA+B;AAAtB,8FAAA,KAAK,OAAA;AACd,+CAA4C;AAAnC,2GAAA,WAAW,OAAA;AACpB,uCAAqC;AAA5B,oGAAA,QAAQ,OAAA;AACjB,+BAA6B;AAApB,4FAAA,IAAI,OAAA;AACb,iCAA+B;AAAtB,8FAAA,KAAK,OAAA;AACd,iCAA+B;AAAtB,8FAAA,KAAK,OAAA;AACd,uDAI2B;AAHzB,4HAAA,wBAAwB,OAAA;AACxB,mHAAA,eAAe,OAAA;AAGjB,+DAK+B;AAJ7B,0HAAA,kBAAkB,OAAA;AAKpB,qEAGkC;AAFhC,+HAAA,oBAAoB,OAAA;AAGtB,yDAAsD;AAA7C,qHAAA,gBAAgB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":";;;;AAAA,iCAA+B;AAAtB,8FAAA,KAAK,OAAA;AACd,mCAAiC;AAAxB,gGAAA,MAAM,OAAA;AACf,uCAAqC;AAA5B,oGAAA,QAAQ,OAAA;AACjB,mDAAgD;AAAvC,+GAAA,aAAa,OAAA;AACtB,uCAAqC;AAA5B,oGAAA,QAAQ,OAAA;AACjB,qCAAmC;AAA1B,kGAAA,OAAO,OAAA;AAChB,qCAAmC;AAA1B,kGAAA,OAAO,OAAA;AAChB,iCAA+B;AAAtB,8FAAA,KAAK,OAAA;AACd,wDAA6B;AAC7B,uCAAqC;AAA5B,oGAAA,QAAQ,OAAA;AACjB,qCAAmC;AAA1B,kGAAA,OAAO,OAAA;AAChB,uDAAoD;AAA3C,mHAAA,eAAe,OAAA;AACxB,yDAA8B;AAC9B,6BAA2B;AAAlB,0FAAA,GAAG,OAAA;AACZ,6BAA2B;AAAlB,0FAAA,GAAG,OAAA;AACZ,iCAA+B;AAAtB,8FAAA,KAAK,OAAA;AACd,+CAA4C;AAAnC,2GAAA,WAAW,OAAA;AACpB,uCAAqC;AAA5B,oGAAA,QAAQ,OAAA;AACjB,+BAA6B;AAApB,4FAAA,IAAI,OAAA;AACb,iCAA+B;AAAtB,8FAAA,KAAK,OAAA;AACd,iCAA+B;AAAtB,8FAAA,KAAK,OAAA;AACd,uDAI2B;AAHzB,4HAAA,wBAAwB,OAAA;AACxB,mHAAA,eAAe,OAAA;AAGjB,+DAK+B;AAJ7B,0HAAA,kBAAkB,OAAA;AAKpB,uDAA0E;AAAjE,mHAAA,eAAe,OAAA;AACxB,qEAGkC;AAFhC,+HAAA,oBAAoB,OAAA;AAGtB,qEAGkC;AAFhC,gIAAA,qBAAqB,OAAA;AAGvB,uDAAoD;AAA3C,mHAAA,eAAe,OAAA;AACxB,yEAGoC;AAFlC,oIAAA,uBAAuB,OAAA;AAGzB,iEAKgC;AAH9B,4HAAA,mBAAmB,OAAA;AAIrB,yDAAsD;AAA7C,qHAAA,gBAAgB,OAAA"}
@@ -0,0 +1,6 @@
1
+ export interface WhatsappCatalogProps {
2
+ body: string;
3
+ footer?: string;
4
+ thumbnailProductId?: string;
5
+ }
6
+ export declare const WhatsappCatalog: (props: WhatsappCatalogProps) => any;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WhatsappCatalog = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const core_1 = require("@botonic/core");
6
+ const react_1 = require("../util/react");
7
+ const message_1 = require("./message");
8
+ const serialize = (message) => {
9
+ return { text: message };
10
+ };
11
+ const WhatsappCatalog = (props) => {
12
+ const renderBrowser = () => {
13
+ // Return a dummy message for browser
14
+ const message = `WhatsApp Catalog would be sent to the user.`;
15
+ return ((0, jsx_runtime_1.jsx)(message_1.Message, Object.assign({ json: serialize(message) }, props, { type: core_1.INPUT.TEXT }, { children: message })));
16
+ };
17
+ const renderNode = () => {
18
+ return (
19
+ // @ts-ignore Property 'message' does not exist on type 'JSX.IntrinsicElements'.
20
+ (0, jsx_runtime_1.jsx)("message", Object.assign({}, props, { body: props.body, footer: props.footer, thumbnailProductId: props.thumbnailProductId, type: core_1.INPUT.WHATSAPP_CATALOG })));
21
+ };
22
+ return (0, react_1.renderComponent)({ renderBrowser, renderNode });
23
+ };
24
+ exports.WhatsappCatalog = WhatsappCatalog;
25
+ //# sourceMappingURL=whatsapp-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whatsapp-catalog.js","sourceRoot":"","sources":["../../../src/components/whatsapp-catalog.tsx"],"names":[],"mappings":";;;;AAAA,wCAAqC;AAGrC,yCAA+C;AAC/C,uCAAmC;AAQnC,MAAM,SAAS,GAAG,CAAC,OAAe,EAAE,EAAE;IACpC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;AAC1B,CAAC,CAAA;AAEM,MAAM,eAAe,GAAG,CAAC,KAA2B,EAAE,EAAE;IAC7D,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,qCAAqC;QACrC,MAAM,OAAO,GAAG,6CAA6C,CAAA;QAC7D,OAAO,CACL,uBAAC,iBAAO,kBAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,IAAM,KAAK,IAAE,IAAI,EAAE,YAAK,CAAC,IAAI,gBAC3D,OAAO,IACA,CACX,CAAA;IACH,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,OAAO;QACL,gFAAgF;QAChF,oDACM,KAAK,IACT,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,EAC5C,IAAI,EAAE,YAAK,CAAC,gBAAgB,IAC5B,CACH,CAAA;IACH,CAAC,CAAA;IAED,OAAO,IAAA,uBAAe,EAAC,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC,CAAA;AACvD,CAAC,CAAA;AAzBY,QAAA,eAAe,mBAyB3B"}
@@ -0,0 +1,46 @@
1
+ type Parameters = TextParameter | CurrencyParameter | DateTimeParameter;
2
+ interface TextParameter {
3
+ type: 'text';
4
+ text: string;
5
+ }
6
+ interface CurrencyParameter {
7
+ type: 'currency';
8
+ currency: {
9
+ fallbackValue: string;
10
+ code: string;
11
+ amount1000: number;
12
+ };
13
+ }
14
+ interface DateTimeParameter {
15
+ type: 'date_time';
16
+ dateTime: {
17
+ fallbackValue: string;
18
+ };
19
+ }
20
+ type CardButton = QuickReplyButton | UrlButton;
21
+ interface Button {
22
+ type: 'quick_reply' | 'url';
23
+ buttonIndex?: number;
24
+ }
25
+ interface QuickReplyButton extends Button {
26
+ payload: string;
27
+ }
28
+ interface UrlButton extends Button {
29
+ urlVariable: string;
30
+ }
31
+ interface Card {
32
+ fileType: 'image' | 'video';
33
+ fileId: string;
34
+ cardIndex?: number;
35
+ bodyParameters?: Parameters[];
36
+ buttons?: CardButton[];
37
+ extraComponents?: Record<string, any>[];
38
+ }
39
+ export interface WhatsappMediaCarouselProps {
40
+ templateName: string;
41
+ templateLanguage: string;
42
+ cards: Card[];
43
+ bodyParameters?: Parameters[];
44
+ }
45
+ export declare const WhatsappMediaCarousel: (props: WhatsappMediaCarouselProps) => any;
46
+ export {};
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WhatsappMediaCarousel = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const core_1 = require("@botonic/core");
6
+ const functional_1 = require("../util/functional");
7
+ const react_1 = require("../util/react");
8
+ const message_1 = require("./message");
9
+ const serialize = (message) => {
10
+ return { text: message };
11
+ };
12
+ const WhatsappMediaCarousel = (props) => {
13
+ const renderBrowser = () => {
14
+ // Return a dummy message for browser
15
+ const message = `WhatsApp Media Carousel would be sent to the user.`;
16
+ return ((0, jsx_runtime_1.jsx)(message_1.Message, Object.assign({ json: serialize(message) }, props, { type: core_1.INPUT.TEXT }, { children: message })));
17
+ };
18
+ const getCards = (cards) => {
19
+ cards.forEach((card, index) => {
20
+ var _a;
21
+ if (!card.cardIndex) {
22
+ card.cardIndex = index;
23
+ }
24
+ (_a = card.buttons) === null || _a === void 0 ? void 0 : _a.forEach((button, index) => {
25
+ if (!button.buttonIndex) {
26
+ button.buttonIndex = index;
27
+ }
28
+ });
29
+ });
30
+ return (0, functional_1.toSnakeCaseKeys)(cards);
31
+ };
32
+ const renderNode = () => {
33
+ return (
34
+ // @ts-ignore Property 'message' does not exist on type 'JSX.IntrinsicElements'.
35
+ (0, jsx_runtime_1.jsx)("message", Object.assign({}, props, { bodyParameters: JSON.stringify((0, functional_1.toSnakeCaseKeys)(props.bodyParameters)), cards: JSON.stringify(getCards(props.cards)), templateName: props.templateName, templateLanguage: props.templateLanguage, type: core_1.INPUT.WHATSAPP_MEDIA_CAROUSEL })));
36
+ };
37
+ return (0, react_1.renderComponent)({ renderBrowser, renderNode });
38
+ };
39
+ exports.WhatsappMediaCarousel = WhatsappMediaCarousel;
40
+ //# sourceMappingURL=whatsapp-media-carousel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whatsapp-media-carousel.js","sourceRoot":"","sources":["../../../src/components/whatsapp-media-carousel.tsx"],"names":[],"mappings":";;;;AAAA,wCAAqC;AAGrC,mDAAoD;AACpD,yCAA+C;AAC/C,uCAAmC;AAsDnC,MAAM,SAAS,GAAG,CAAC,OAAe,EAAE,EAAE;IACpC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;AAC1B,CAAC,CAAA;AAEM,MAAM,qBAAqB,GAAG,CAAC,KAAiC,EAAE,EAAE;IACzE,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,qCAAqC;QACrC,MAAM,OAAO,GAAG,oDAAoD,CAAA;QACpE,OAAO,CACL,uBAAC,iBAAO,kBAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,IAAM,KAAK,IAAE,IAAI,EAAE,YAAK,CAAC,IAAI,gBAC3D,OAAO,IACA,CACX,CAAA;IACH,CAAC,CAAA;IAED,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,EAAE;QACjC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;;YAC5B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBACnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;aACvB;YACD,MAAA,IAAI,CAAC,OAAO,0CAAE,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACtC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;oBACvB,MAAM,CAAC,WAAW,GAAG,KAAK,CAAA;iBAC3B;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QACF,OAAO,IAAA,4BAAe,EAAC,KAAK,CAAC,CAAA;IAC/B,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,OAAO;QACL,gFAAgF;QAChF,oDACM,KAAK,IACT,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,IAAA,4BAAe,EAAC,KAAK,CAAC,cAAc,CAAC,CAAC,EACrE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAC5C,YAAY,EAAE,KAAK,CAAC,YAAY,EAChC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EACxC,IAAI,EAAE,YAAK,CAAC,uBAAuB,IACnC,CACH,CAAA;IACH,CAAC,CAAA;IAED,OAAO,IAAA,uBAAe,EAAC,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC,CAAA;AACvD,CAAC,CAAA;AAxCY,QAAA,qBAAqB,yBAwCjC"}
@@ -0,0 +1,32 @@
1
+ type Parameters = TextParameter | CurrencyParameter | DateTimeParameter;
2
+ interface TextParameter {
3
+ type: 'text';
4
+ text: string;
5
+ }
6
+ interface CurrencyParameter {
7
+ type: 'currency';
8
+ currency: {
9
+ fallbackValue: string;
10
+ code: string;
11
+ amount1000: number;
12
+ };
13
+ }
14
+ interface DateTimeParameter {
15
+ type: 'date_time';
16
+ dateTime: {
17
+ fallbackValue: string;
18
+ };
19
+ }
20
+ interface Card {
21
+ productRetailerId: string;
22
+ catalogId: string;
23
+ cardIndex?: number;
24
+ }
25
+ export interface WhatsappProductCarouselProps {
26
+ templateName: string;
27
+ templateLanguage: string;
28
+ cards: Card[];
29
+ bodyParameters?: Parameters[];
30
+ }
31
+ export declare const WhatsappProductCarousel: (props: WhatsappProductCarouselProps) => any;
32
+ export {};
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WhatsappProductCarousel = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const core_1 = require("@botonic/core");
6
+ const functional_1 = require("../util/functional");
7
+ const react_1 = require("../util/react");
8
+ const message_1 = require("./message");
9
+ const serialize = (message) => {
10
+ return { text: message };
11
+ };
12
+ const WhatsappProductCarousel = (props) => {
13
+ const renderBrowser = () => {
14
+ // Return a dummy message for browser
15
+ const message = `WhatsApp Product Carousel would be sent to the user.`;
16
+ return ((0, jsx_runtime_1.jsx)(message_1.Message, Object.assign({ json: serialize(message) }, props, { type: core_1.INPUT.TEXT }, { children: message })));
17
+ };
18
+ const getCards = (cards) => {
19
+ cards.forEach((card, index) => {
20
+ if (!card.cardIndex) {
21
+ card.cardIndex = index;
22
+ }
23
+ });
24
+ return (0, functional_1.toSnakeCaseKeys)(cards);
25
+ };
26
+ const renderNode = () => {
27
+ return (
28
+ // @ts-ignore Property 'message' does not exist on type 'JSX.IntrinsicElements'.
29
+ (0, jsx_runtime_1.jsx)("message", Object.assign({}, props, { bodyParameters: JSON.stringify((0, functional_1.toSnakeCaseKeys)(props.bodyParameters)), cards: JSON.stringify(getCards(props.cards)), templateName: props.templateName, templateLanguage: props.templateLanguage, type: core_1.INPUT.WHATSAPP_PRODUCT_CAROUSEL })));
30
+ };
31
+ return (0, react_1.renderComponent)({ renderBrowser, renderNode });
32
+ };
33
+ exports.WhatsappProductCarousel = WhatsappProductCarousel;
34
+ //# sourceMappingURL=whatsapp-product-carousel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whatsapp-product-carousel.js","sourceRoot":"","sources":["../../../src/components/whatsapp-product-carousel.tsx"],"names":[],"mappings":";;;;AAAA,wCAAqC;AAGrC,mDAAoD;AACpD,yCAA+C;AAC/C,uCAAmC;AAoCnC,MAAM,SAAS,GAAG,CAAC,OAAe,EAAE,EAAE;IACpC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;AAC1B,CAAC,CAAA;AAEM,MAAM,uBAAuB,GAAG,CACrC,KAAmC,EACnC,EAAE;IACF,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,qCAAqC;QACrC,MAAM,OAAO,GAAG,sDAAsD,CAAA;QACtE,OAAO,CACL,uBAAC,iBAAO,kBAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,IAAM,KAAK,IAAE,IAAI,EAAE,YAAK,CAAC,IAAI,gBAC3D,OAAO,IACA,CACX,CAAA;IACH,CAAC,CAAA;IAED,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,EAAE;QACjC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC5B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBACnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;aACvB;QACH,CAAC,CAAC,CAAA;QACF,OAAO,IAAA,4BAAe,EAAC,KAAK,CAAC,CAAA;IAC/B,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,OAAO;QACL,gFAAgF;QAChF,oDACM,KAAK,IACT,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,IAAA,4BAAe,EAAC,KAAK,CAAC,cAAc,CAAC,CAAC,EACrE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAC5C,YAAY,EAAE,KAAK,CAAC,YAAY,EAChC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EACxC,IAAI,EAAE,YAAK,CAAC,yBAAyB,IACrC,CACH,CAAA;IACH,CAAC,CAAA;IAED,OAAO,IAAA,uBAAe,EAAC,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC,CAAA;AACvD,CAAC,CAAA;AArCY,QAAA,uBAAuB,2BAqCnC"}
@@ -0,0 +1,15 @@
1
+ export interface ProductItem {
2
+ productRetailerId: string;
3
+ }
4
+ export interface WhatsappProductListSection {
5
+ title: string;
6
+ productItems: ProductItem[];
7
+ }
8
+ export interface WhatsappProductListProps {
9
+ body: string;
10
+ header: string;
11
+ catalogId: string;
12
+ sections: WhatsappProductListSection[];
13
+ footer?: string;
14
+ }
15
+ export declare const WhatsappProductList: (props: WhatsappProductListProps) => any;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WhatsappProductList = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const core_1 = require("@botonic/core");
6
+ const functional_1 = require("../util/functional");
7
+ const react_1 = require("../util/react");
8
+ const message_1 = require("./message");
9
+ const serialize = (message) => {
10
+ return { text: message };
11
+ };
12
+ const WhatsappProductList = (props) => {
13
+ const renderBrowser = () => {
14
+ // Return a dummy message for browser
15
+ const message = `WhatsApp Product List would be sent to the user.`;
16
+ return ((0, jsx_runtime_1.jsx)(message_1.Message, Object.assign({ json: serialize(message) }, props, { type: core_1.INPUT.TEXT }, { children: message })));
17
+ };
18
+ const renderNode = () => {
19
+ return (
20
+ // @ts-ignore Property 'message' does not exist on type 'JSX.IntrinsicElements'.
21
+ (0, jsx_runtime_1.jsx)("message", Object.assign({}, props, { body: props.body, footer: props.footer, header: props.header, sections: JSON.stringify((0, functional_1.toSnakeCaseKeys)(props.sections)), catalogId: props.catalogId, type: core_1.INPUT.WHATSAPP_PRODUCT_LIST })));
22
+ };
23
+ return (0, react_1.renderComponent)({ renderBrowser, renderNode });
24
+ };
25
+ exports.WhatsappProductList = WhatsappProductList;
26
+ //# sourceMappingURL=whatsapp-product-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whatsapp-product-list.js","sourceRoot":"","sources":["../../../src/components/whatsapp-product-list.tsx"],"names":[],"mappings":";;;;AAAA,wCAAqC;AAGrC,mDAAoD;AACpD,yCAA+C;AAC/C,uCAAmC;AAmBnC,MAAM,SAAS,GAAG,CAAC,OAAe,EAAE,EAAE;IACpC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;AAC1B,CAAC,CAAA;AAEM,MAAM,mBAAmB,GAAG,CAAC,KAA+B,EAAE,EAAE;IACrE,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,qCAAqC;QACrC,MAAM,OAAO,GAAG,kDAAkD,CAAA;QAClE,OAAO,CACL,uBAAC,iBAAO,kBAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,IAAM,KAAK,IAAE,IAAI,EAAE,YAAK,CAAC,IAAI,gBAC3D,OAAO,IACA,CACX,CAAA;IACH,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,OAAO;QACL,gFAAgF;QAChF,oDACM,KAAK,IACT,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAA,4BAAe,EAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EACzD,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,IAAI,EAAE,YAAK,CAAC,qBAAqB,IACjC,CACH,CAAA;IACH,CAAC,CAAA;IAED,OAAO,IAAA,uBAAe,EAAC,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC,CAAA;AACvD,CAAC,CAAA;AA3BY,QAAA,mBAAmB,uBA2B/B"}
@@ -0,0 +1,7 @@
1
+ export interface WhatsappProductProps {
2
+ body: string;
3
+ catalogId: string;
4
+ productId: string;
5
+ footer?: string;
6
+ }
7
+ export declare const WhatsappProduct: (props: WhatsappProductProps) => any;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WhatsappProduct = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const core_1 = require("@botonic/core");
6
+ const react_1 = require("../util/react");
7
+ const message_1 = require("./message");
8
+ const serialize = (message) => {
9
+ return { text: message };
10
+ };
11
+ const WhatsappProduct = (props) => {
12
+ const renderBrowser = () => {
13
+ // Return a dummy message for browser
14
+ const message = `WhatsApp Product would be sent to the user.`;
15
+ return ((0, jsx_runtime_1.jsx)(message_1.Message, Object.assign({ json: serialize(message) }, props, { type: core_1.INPUT.TEXT }, { children: message })));
16
+ };
17
+ const renderNode = () => {
18
+ return (
19
+ // @ts-ignore Property 'message' does not exist on type 'JSX.IntrinsicElements'.
20
+ (0, jsx_runtime_1.jsx)("message", Object.assign({}, props, { body: props.body, footer: props.footer, catalogId: props.catalogId, productId: props.productId, type: core_1.INPUT.WHATSAPP_PRODUCT })));
21
+ };
22
+ return (0, react_1.renderComponent)({ renderBrowser, renderNode });
23
+ };
24
+ exports.WhatsappProduct = WhatsappProduct;
25
+ //# sourceMappingURL=whatsapp-product.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whatsapp-product.js","sourceRoot":"","sources":["../../../src/components/whatsapp-product.tsx"],"names":[],"mappings":";;;;AAAA,wCAAqC;AAGrC,yCAA+C;AAC/C,uCAAmC;AASnC,MAAM,SAAS,GAAG,CAAC,OAAe,EAAE,EAAE;IACpC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;AAC1B,CAAC,CAAA;AAEM,MAAM,eAAe,GAAG,CAAC,KAA2B,EAAE,EAAE;IAC7D,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,qCAAqC;QACrC,MAAM,OAAO,GAAG,6CAA6C,CAAA;QAC7D,OAAO,CACL,uBAAC,iBAAO,kBAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,IAAM,KAAK,IAAE,IAAI,EAAE,YAAK,CAAC,IAAI,gBAC3D,OAAO,IACA,CACX,CAAA;IACH,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,OAAO;QACL,gFAAgF;QAChF,oDACM,KAAK,IACT,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,IAAI,EAAE,YAAK,CAAC,gBAAgB,IAC5B,CACH,CAAA;IACH,CAAC,CAAA;IAED,OAAO,IAAA,uBAAe,EAAC,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC,CAAA;AACvD,CAAC,CAAA;AA1BY,QAAA,eAAe,mBA0B3B"}
@@ -0,0 +1,3 @@
1
+ type Input = Record<string, any> | Record<string, any>[] | undefined;
2
+ export declare function toSnakeCaseKeys(input: Input): Input;
3
+ export {};
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toSnakeCaseKeys = void 0;
4
+ function camelCaseToSnake(str) {
5
+ return str
6
+ .replace(/([a-z])([A-Z])/g, '$1_$2')
7
+ .replace(/([A-Za-z])(\d)/g, '$1_$2')
8
+ .replace(/(\d)([A-Za-z])/g, '$1_$2')
9
+ .toLowerCase();
10
+ }
11
+ function toSnakeCaseKeys(input) {
12
+ if (Array.isArray(input)) {
13
+ return input.map(item => toSnakeCaseKeys(item));
14
+ }
15
+ if (typeof input === 'object' && input !== null) {
16
+ const result = Object.keys(input).reduce((acc, key) => {
17
+ const snakeKey = camelCaseToSnake(key);
18
+ const value = input[key];
19
+ acc[snakeKey] =
20
+ typeof value === 'object' && value !== null
21
+ ? toSnakeCaseKeys(value)
22
+ : value;
23
+ return acc;
24
+ }, {});
25
+ return result;
26
+ }
27
+ return input;
28
+ }
29
+ exports.toSnakeCaseKeys = toSnakeCaseKeys;
30
+ //# sourceMappingURL=functional.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functional.js","sourceRoot":"","sources":["../../../src/util/functional.ts"],"names":[],"mappings":";;;AAAA,SAAS,gBAAgB,CAAC,GAAW;IACnC,OAAO,GAAG;SACP,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;SACnC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;SACnC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;SACnC,WAAW,EAAE,CAAA;AAClB,CAAC;AAGD,SAAgB,eAAe,CAAC,KAAY;IAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACxB,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAA;KAChD;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;QAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACpD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAA;YACtC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;YACxB,GAAG,CAAC,QAAQ,CAAC;gBACX,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;oBACzC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC;oBACxB,CAAC,CAAC,KAAK,CAAA;YAEX,OAAO,GAAG,CAAA;QACZ,CAAC,EAAE,EAAE,CAAC,CAAA;QAEN,OAAO,MAAM,CAAA;KACd;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AArBD,0CAqBC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@botonic/react",
3
- "version": "0.31.0",
3
+ "version": "0.31.1-alpha.0",
4
4
  "license": "MIT",
5
5
  "description": "Build Chatbots using React",
6
6
  "main": "./lib/cjs",
@@ -20,7 +20,7 @@
20
20
  "lint_core": "../../node_modules/.bin/eslint_d --cache --quiet '.*.js' '*.js' 'src/**/*.js*' --fix"
21
21
  },
22
22
  "dependencies": {
23
- "@botonic/core": "^0.31.0",
23
+ "@botonic/core": "0.31.1-alpha.0",
24
24
  "axios": "^1.7.9",
25
25
  "emoji-picker-react": "^4.12.0",
26
26
  "lodash.merge": "^4.6.2",
@@ -30,8 +30,24 @@ export {
30
30
  WhatsappButtonListRowProps,
31
31
  WhatsappButtonListSectionProps,
32
32
  } from './whatsapp-button-list'
33
+ export { WhatsappCatalog, WhatsappCatalogProps } from './whatsapp-catalog'
33
34
  export {
34
35
  WhatsappCTAUrlButton,
35
36
  WhatsappCTAUrlButtonProps,
36
37
  } from './whatsapp-cta-url-button'
38
+ export {
39
+ WhatsappMediaCarousel,
40
+ WhatsappMediaCarouselProps,
41
+ } from './whatsapp-media-carousel'
42
+ export { WhatsappProduct } from './whatsapp-product'
43
+ export {
44
+ WhatsappProductCarousel,
45
+ WhatsappProductCarouselProps,
46
+ } from './whatsapp-product-carousel'
47
+ export {
48
+ ProductItem,
49
+ WhatsappProductList,
50
+ WhatsappProductListProps,
51
+ WhatsappProductListSection,
52
+ } from './whatsapp-product-list'
37
53
  export { WhatsappTemplate } from './whatsapp-template'
@@ -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
+ }
@@ -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
+ }