@botonic/react 0.21.7-alpha.0 → 0.22.0-alpha.1

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 (440) hide show
  1. package/lib/cjs/app.js.map +1 -1
  2. package/lib/cjs/assets/attachment-icon.svg +7 -0
  3. package/lib/cjs/assets/audio.svg +4 -0
  4. package/lib/cjs/assets/botonic_react_logo100x100.png +0 -0
  5. package/lib/cjs/assets/document.svg +3 -0
  6. package/lib/cjs/assets/emojiButton.svg +6 -0
  7. package/lib/cjs/assets/image.svg +4 -0
  8. package/lib/cjs/assets/leftArrow.svg +3 -0
  9. package/lib/cjs/assets/menuButton.svg +3 -0
  10. package/lib/cjs/assets/rightArrow.svg +3 -0
  11. package/lib/cjs/assets/send-button.svg +1 -0
  12. package/lib/cjs/assets/video.svg +3 -0
  13. package/lib/cjs/botonic-tester.d.ts +3 -3
  14. package/lib/cjs/botonic-tester.js +6 -6
  15. package/lib/cjs/botonic-tester.js.map +1 -1
  16. package/lib/cjs/components/audio.js +2 -2
  17. package/lib/cjs/components/audio.js.map +1 -1
  18. package/lib/cjs/components/button.js +4 -4
  19. package/lib/cjs/components/button.js.map +1 -1
  20. package/lib/cjs/components/buttons-disabler.d.ts +1 -1
  21. package/lib/cjs/components/buttons-disabler.js +4 -4
  22. package/lib/cjs/components/buttons-disabler.js.map +1 -1
  23. package/lib/cjs/components/carousel.d.ts +3 -2
  24. package/lib/cjs/components/carousel.js +8 -8
  25. package/lib/cjs/components/carousel.js.map +1 -1
  26. package/lib/cjs/components/components.d.ts +1 -1
  27. package/lib/cjs/components/components.js.map +1 -1
  28. package/lib/cjs/components/custom-message.d.ts +34 -1
  29. package/lib/cjs/components/custom-message.js +3 -3
  30. package/lib/cjs/components/custom-message.js.map +1 -1
  31. package/lib/cjs/components/document.js +3 -3
  32. package/lib/cjs/components/document.js.map +1 -1
  33. package/lib/cjs/components/element.js +1 -1
  34. package/lib/cjs/components/element.js.map +1 -1
  35. package/lib/cjs/components/handoff.js +2 -2
  36. package/lib/cjs/components/handoff.js.map +1 -1
  37. package/lib/cjs/components/image.js +4 -4
  38. package/lib/cjs/components/image.js.map +1 -1
  39. package/lib/cjs/components/index.d.ts +19 -0
  40. package/lib/cjs/components/index.js.map +1 -1
  41. package/lib/cjs/components/location.js +1 -1
  42. package/lib/cjs/components/location.js.map +1 -1
  43. package/lib/cjs/components/markdown.js +2 -2
  44. package/lib/cjs/components/markdown.js.map +1 -1
  45. package/lib/cjs/components/message-template.js +1 -1
  46. package/lib/cjs/components/message-template.js.map +1 -1
  47. package/lib/cjs/components/message.js +14 -14
  48. package/lib/cjs/components/message.js.map +1 -1
  49. package/lib/cjs/components/multichannel/facebook/facebook.js.map +1 -1
  50. package/lib/cjs/components/multichannel/index.d.ts +5 -0
  51. package/lib/cjs/components/multichannel/index.js.map +1 -1
  52. package/lib/cjs/components/multichannel/multichannel-button.js +3 -3
  53. package/lib/cjs/components/multichannel/multichannel-button.js.map +1 -1
  54. package/lib/cjs/components/multichannel/multichannel-carousel.js +7 -7
  55. package/lib/cjs/components/multichannel/multichannel-carousel.js.map +1 -1
  56. package/lib/cjs/components/multichannel/multichannel-context.js.map +1 -1
  57. package/lib/cjs/components/multichannel/multichannel-reply.js +2 -2
  58. package/lib/cjs/components/multichannel/multichannel-reply.js.map +1 -1
  59. package/lib/cjs/components/multichannel/multichannel-text.js +9 -9
  60. package/lib/cjs/components/multichannel/multichannel-text.js.map +1 -1
  61. package/lib/cjs/components/multichannel/multichannel-utils.js.map +1 -1
  62. package/lib/cjs/components/multichannel/multichannel.js +5 -5
  63. package/lib/cjs/components/multichannel/multichannel.js.map +1 -1
  64. package/lib/cjs/components/pic.js +2 -2
  65. package/lib/cjs/components/pic.js.map +1 -1
  66. package/lib/cjs/components/raw.js +2 -2
  67. package/lib/cjs/components/raw.js.map +1 -1
  68. package/lib/cjs/components/reply.js +2 -2
  69. package/lib/cjs/components/reply.js.map +1 -1
  70. package/lib/cjs/components/share-button.js +1 -1
  71. package/lib/cjs/components/share-button.js.map +1 -1
  72. package/lib/cjs/components/subtitle.js +1 -1
  73. package/lib/cjs/components/subtitle.js.map +1 -1
  74. package/lib/cjs/components/text.d.ts +1 -1
  75. package/lib/cjs/components/text.js +3 -3
  76. package/lib/cjs/components/text.js.map +1 -1
  77. package/lib/cjs/components/timestamps.js.map +1 -1
  78. package/lib/cjs/components/title.js +1 -1
  79. package/lib/cjs/components/title.js.map +1 -1
  80. package/lib/cjs/components/video.js +2 -2
  81. package/lib/cjs/components/video.js.map +1 -1
  82. package/lib/cjs/components/webchat-settings.js +4 -4
  83. package/lib/cjs/components/webchat-settings.js.map +1 -1
  84. package/lib/cjs/components/whatsapp-template.js +1 -1
  85. package/lib/cjs/components/whatsapp-template.js.map +1 -1
  86. package/lib/cjs/constants.js.map +1 -1
  87. package/lib/cjs/contexts.js.map +1 -1
  88. package/lib/cjs/dev-app.d.ts +4 -8
  89. package/lib/cjs/dev-app.js +3 -3
  90. package/lib/cjs/dev-app.js.map +1 -1
  91. package/lib/cjs/index.d.ts +7 -0
  92. package/lib/cjs/index.js +2 -2
  93. package/lib/cjs/index.js.map +1 -1
  94. package/lib/cjs/message-utils.d.ts +2 -1
  95. package/lib/cjs/message-utils.js +12 -12
  96. package/lib/cjs/message-utils.js.map +1 -1
  97. package/lib/cjs/msg-to-botonic.js +10 -10
  98. package/lib/cjs/msg-to-botonic.js.map +1 -1
  99. package/lib/cjs/node-app.d.ts +6 -5
  100. package/lib/cjs/node-app.js +1 -1
  101. package/lib/cjs/node-app.js.map +1 -1
  102. package/lib/cjs/react-bot.js.map +1 -1
  103. package/lib/cjs/util/dom.js +3 -3
  104. package/lib/cjs/util/dom.js.map +1 -1
  105. package/lib/cjs/util/environment.js +3 -3
  106. package/lib/cjs/util/environment.js.map +1 -1
  107. package/lib/cjs/util/error-boundary.d.ts +40 -0
  108. package/lib/cjs/util/error-boundary.js +1 -2
  109. package/lib/cjs/util/error-boundary.js.map +1 -1
  110. package/lib/cjs/util/index.js.map +1 -1
  111. package/lib/cjs/util/logs.d.ts +1 -1
  112. package/lib/cjs/util/logs.js +1 -1
  113. package/lib/cjs/util/logs.js.map +1 -1
  114. package/lib/cjs/util/objects.js.map +1 -1
  115. package/lib/cjs/util/react.js +8 -8
  116. package/lib/cjs/util/react.js.map +1 -1
  117. package/lib/cjs/util/regexs.js.map +1 -1
  118. package/lib/cjs/util/webchat.d.ts +1 -1
  119. package/lib/cjs/util/webchat.js +4 -4
  120. package/lib/cjs/util/webchat.js.map +1 -1
  121. package/lib/cjs/webchat/actions.js.map +1 -1
  122. package/lib/cjs/webchat/components/attachment.js +1 -1
  123. package/lib/cjs/webchat/components/attachment.js.map +1 -1
  124. package/lib/cjs/webchat/components/common.js +1 -1
  125. package/lib/cjs/webchat/components/common.js.map +1 -1
  126. package/lib/cjs/webchat/components/conditional-animation.js +1 -1
  127. package/lib/cjs/webchat/components/conditional-animation.js.map +1 -1
  128. package/lib/cjs/webchat/components/emoji-picker.js +2 -2
  129. package/lib/cjs/webchat/components/emoji-picker.js.map +1 -1
  130. package/lib/cjs/webchat/components/persistent-menu.js +3 -3
  131. package/lib/cjs/webchat/components/persistent-menu.js.map +1 -1
  132. package/lib/cjs/webchat/components/send-button.js +1 -1
  133. package/lib/cjs/webchat/components/send-button.js.map +1 -1
  134. package/lib/cjs/webchat/components/styled-scrollbar.js +2 -2
  135. package/lib/cjs/webchat/components/styled-scrollbar.js.map +1 -1
  136. package/lib/cjs/webchat/components/styled-scrollbar.scss +12 -0
  137. package/lib/cjs/webchat/components/typing-indicator.js.map +1 -1
  138. package/lib/cjs/webchat/components/typing-indicator.scss +38 -0
  139. package/lib/cjs/webchat/devices/device-adapter.js +1 -1
  140. package/lib/cjs/webchat/devices/device-adapter.js.map +1 -1
  141. package/lib/cjs/webchat/devices/index.js +1 -1
  142. package/lib/cjs/webchat/devices/index.js.map +1 -1
  143. package/lib/cjs/webchat/devices/scrollbar-controller.js +5 -5
  144. package/lib/cjs/webchat/devices/scrollbar-controller.js.map +1 -1
  145. package/lib/cjs/webchat/devices/webchat-resizer.js +2 -2
  146. package/lib/cjs/webchat/devices/webchat-resizer.js.map +1 -1
  147. package/lib/cjs/webchat/header.js +3 -3
  148. package/lib/cjs/webchat/header.js.map +1 -1
  149. package/lib/cjs/webchat/hooks.d.ts +1 -1
  150. package/lib/cjs/webchat/hooks.js +9 -9
  151. package/lib/cjs/webchat/hooks.js.map +1 -1
  152. package/lib/cjs/webchat/index.d.ts +3 -1
  153. package/lib/cjs/webchat/index.js.map +1 -1
  154. package/lib/cjs/webchat/message-list.js +2 -2
  155. package/lib/cjs/webchat/message-list.js.map +1 -1
  156. package/lib/cjs/webchat/messages-reducer.js.map +1 -1
  157. package/lib/cjs/webchat/replies.js +1 -1
  158. package/lib/cjs/webchat/replies.js.map +1 -1
  159. package/lib/cjs/webchat/session-view.js +1 -1
  160. package/lib/cjs/webchat/session-view.js.map +1 -1
  161. package/lib/cjs/webchat/use-storage-state-hook.js +3 -3
  162. package/lib/cjs/webchat/use-storage-state-hook.js.map +1 -1
  163. package/lib/cjs/webchat/webchat-dev.js +5 -5
  164. package/lib/cjs/webchat/webchat-dev.js.map +1 -1
  165. package/lib/cjs/webchat/webchat-reducer.js +1 -1
  166. package/lib/cjs/webchat/webchat-reducer.js.map +1 -1
  167. package/lib/cjs/webchat/webchat.js +63 -62
  168. package/lib/cjs/webchat/webchat.js.map +1 -1
  169. package/lib/cjs/webchat/webview.js +5 -5
  170. package/lib/cjs/webchat/webview.js.map +1 -1
  171. package/lib/cjs/webchat-app.js +7 -7
  172. package/lib/cjs/webchat-app.js.map +1 -1
  173. package/lib/cjs/webchat.template.html +37 -0
  174. package/lib/cjs/{webview.d.ts → webview-app.d.ts} +1 -3
  175. package/lib/cjs/{webview.js → webview-app.js} +14 -13
  176. package/lib/cjs/webview-app.js.map +1 -0
  177. package/lib/cjs/webview.template.html +39 -0
  178. package/lib/esm/app.d.ts +2 -0
  179. package/lib/esm/app.js +6 -0
  180. package/lib/esm/app.js.map +1 -0
  181. package/lib/esm/assets/attachment-icon.svg +7 -0
  182. package/lib/esm/assets/audio.svg +4 -0
  183. package/lib/esm/assets/botonic_react_logo100x100.png +0 -0
  184. package/lib/esm/assets/document.svg +3 -0
  185. package/lib/esm/assets/emojiButton.svg +6 -0
  186. package/lib/esm/assets/image.svg +4 -0
  187. package/lib/esm/assets/leftArrow.svg +3 -0
  188. package/lib/esm/assets/menuButton.svg +3 -0
  189. package/lib/esm/assets/rightArrow.svg +3 -0
  190. package/lib/esm/assets/send-button.svg +1 -0
  191. package/lib/esm/assets/video.svg +3 -0
  192. package/lib/esm/botonic-tester.d.ts +18 -0
  193. package/lib/esm/botonic-tester.js +64 -0
  194. package/lib/esm/botonic-tester.js.map +1 -0
  195. package/lib/esm/components/audio.d.ts +8 -0
  196. package/lib/esm/components/audio.js +22 -0
  197. package/lib/esm/components/audio.js.map +1 -0
  198. package/lib/esm/components/button.d.ts +15 -0
  199. package/lib/esm/components/button.js +151 -0
  200. package/lib/esm/components/button.js.map +1 -0
  201. package/lib/esm/components/buttons-disabler.d.ts +24 -0
  202. package/lib/esm/components/buttons-disabler.js +84 -0
  203. package/lib/esm/components/buttons-disabler.js.map +1 -0
  204. package/lib/esm/components/carousel.d.ts +9 -0
  205. package/lib/esm/components/carousel.js +115 -0
  206. package/lib/esm/components/carousel.js.map +1 -0
  207. package/lib/esm/components/components.d.ts +12 -0
  208. package/lib/esm/components/components.js +17 -0
  209. package/lib/esm/components/components.js.map +1 -0
  210. package/lib/esm/components/custom-message.d.ts +43 -0
  211. package/lib/esm/components/custom-message.js +61 -0
  212. package/lib/esm/components/custom-message.js.map +1 -0
  213. package/lib/esm/components/document.d.ts +8 -0
  214. package/lib/esm/components/document.js +45 -0
  215. package/lib/esm/components/document.js.map +1 -0
  216. package/lib/esm/components/element.d.ts +4 -0
  217. package/lib/esm/components/element.js +50 -0
  218. package/lib/esm/components/element.js.map +1 -0
  219. package/lib/esm/components/handoff.d.ts +1 -0
  220. package/lib/esm/components/handoff.js +53 -0
  221. package/lib/esm/components/handoff.js.map +1 -0
  222. package/lib/esm/components/image.d.ts +8 -0
  223. package/lib/esm/components/image.js +37 -0
  224. package/lib/esm/components/image.js.map +1 -0
  225. package/lib/esm/components/index.d.ts +19 -0
  226. package/lib/esm/components/index.js +21 -0
  227. package/lib/esm/components/index.js.map +1 -0
  228. package/lib/esm/components/location.d.ts +11 -0
  229. package/lib/esm/components/location.js +33 -0
  230. package/lib/esm/components/location.js.map +1 -0
  231. package/lib/esm/components/markdown.d.ts +7 -0
  232. package/lib/esm/components/markdown.js +152 -0
  233. package/lib/esm/components/markdown.js.map +1 -0
  234. package/lib/esm/components/message-template.d.ts +1 -0
  235. package/lib/esm/components/message-template.js +10 -0
  236. package/lib/esm/components/message-template.js.map +1 -0
  237. package/lib/esm/components/message.d.ts +1 -0
  238. package/lib/esm/components/message.js +202 -0
  239. package/lib/esm/components/message.js.map +1 -0
  240. package/lib/esm/components/multichannel/facebook/facebook.d.ts +17 -0
  241. package/lib/esm/components/multichannel/facebook/facebook.js +43 -0
  242. package/lib/esm/components/multichannel/facebook/facebook.js.map +1 -0
  243. package/lib/esm/components/multichannel/index.d.ts +6 -0
  244. package/lib/esm/components/multichannel/index.js +11 -0
  245. package/lib/esm/components/multichannel/index.js.map +1 -0
  246. package/lib/esm/components/multichannel/multichannel-button.d.ts +1 -0
  247. package/lib/esm/components/multichannel/multichannel-button.js +72 -0
  248. package/lib/esm/components/multichannel/multichannel-button.js.map +1 -0
  249. package/lib/esm/components/multichannel/multichannel-carousel.d.ts +1 -0
  250. package/lib/esm/components/multichannel/multichannel-carousel.js +90 -0
  251. package/lib/esm/components/multichannel/multichannel-carousel.js.map +1 -0
  252. package/lib/esm/components/multichannel/multichannel-context.d.ts +11 -0
  253. package/lib/esm/components/multichannel/multichannel-context.js +12 -0
  254. package/lib/esm/components/multichannel/multichannel-context.js.map +1 -0
  255. package/lib/esm/components/multichannel/multichannel-reply.d.ts +1 -0
  256. package/lib/esm/components/multichannel/multichannel-reply.js +19 -0
  257. package/lib/esm/components/multichannel/multichannel-reply.js.map +1 -0
  258. package/lib/esm/components/multichannel/multichannel-text.d.ts +1 -0
  259. package/lib/esm/components/multichannel/multichannel-text.js +142 -0
  260. package/lib/esm/components/multichannel/multichannel-text.js.map +1 -0
  261. package/lib/esm/components/multichannel/multichannel-utils.d.ts +24 -0
  262. package/lib/esm/components/multichannel/multichannel-utils.js +67 -0
  263. package/lib/esm/components/multichannel/multichannel-utils.js.map +1 -0
  264. package/lib/esm/components/multichannel/multichannel.d.ts +1 -0
  265. package/lib/esm/components/multichannel/multichannel.js +67 -0
  266. package/lib/esm/components/multichannel/multichannel.js.map +1 -0
  267. package/lib/esm/components/pic.d.ts +6 -0
  268. package/lib/esm/components/pic.js +24 -0
  269. package/lib/esm/components/pic.js.map +1 -0
  270. package/lib/esm/components/raw.d.ts +9 -0
  271. package/lib/esm/components/raw.js +48 -0
  272. package/lib/esm/components/raw.js.map +1 -0
  273. package/lib/esm/components/reply.d.ts +9 -0
  274. package/lib/esm/components/reply.js +52 -0
  275. package/lib/esm/components/reply.js.map +1 -0
  276. package/lib/esm/components/share-button.d.ts +1 -0
  277. package/lib/esm/components/share-button.js +10 -0
  278. package/lib/esm/components/share-button.js.map +1 -0
  279. package/lib/esm/components/subtitle.d.ts +6 -0
  280. package/lib/esm/components/subtitle.js +20 -0
  281. package/lib/esm/components/subtitle.js.map +1 -0
  282. package/lib/esm/components/text.d.ts +8 -0
  283. package/lib/esm/components/text.js +45 -0
  284. package/lib/esm/components/text.js.map +1 -0
  285. package/lib/esm/components/timestamps.d.ts +10 -0
  286. package/lib/esm/components/timestamps.js +48 -0
  287. package/lib/esm/components/timestamps.js.map +1 -0
  288. package/lib/esm/components/title.d.ts +6 -0
  289. package/lib/esm/components/title.js +16 -0
  290. package/lib/esm/components/title.js.map +1 -0
  291. package/lib/esm/components/video.d.ts +8 -0
  292. package/lib/esm/components/video.js +29 -0
  293. package/lib/esm/components/video.js.map +1 -0
  294. package/lib/esm/components/webchat-settings.d.ts +10 -0
  295. package/lib/esm/components/webchat-settings.js +72 -0
  296. package/lib/esm/components/webchat-settings.js.map +1 -0
  297. package/lib/esm/components/whatsapp-template.d.ts +1 -0
  298. package/lib/esm/components/whatsapp-template.js +21 -0
  299. package/lib/esm/components/whatsapp-template.js.map +1 -0
  300. package/lib/esm/constants.d.ts +168 -0
  301. package/lib/esm/constants.js +186 -0
  302. package/lib/esm/constants.js.map +1 -0
  303. package/lib/esm/contexts.d.ts +69 -0
  304. package/lib/esm/contexts.js +34 -0
  305. package/lib/esm/contexts.js.map +1 -0
  306. package/lib/esm/dev-app.d.ts +30 -0
  307. package/lib/esm/dev-app.js +67 -0
  308. package/lib/esm/dev-app.js.map +1 -0
  309. package/lib/esm/index.d.ts +9 -0
  310. package/lib/esm/index.js +11 -0
  311. package/lib/esm/index.js.map +1 -0
  312. package/lib/esm/message-utils.d.ts +18 -0
  313. package/lib/esm/message-utils.js +41 -0
  314. package/lib/esm/message-utils.js.map +1 -0
  315. package/lib/esm/msg-to-botonic.d.ts +18 -0
  316. package/lib/esm/msg-to-botonic.js +154 -0
  317. package/lib/esm/msg-to-botonic.js.map +1 -0
  318. package/lib/esm/node-app.d.ts +12 -0
  319. package/lib/esm/node-app.js +21 -0
  320. package/lib/esm/node-app.js.map +1 -0
  321. package/lib/esm/react-bot.d.ts +7 -0
  322. package/lib/esm/react-bot.js +30 -0
  323. package/lib/esm/react-bot.js.map +1 -0
  324. package/lib/esm/util/dom.d.ts +13 -0
  325. package/lib/esm/util/dom.js +46 -0
  326. package/lib/esm/util/dom.js.map +1 -0
  327. package/lib/esm/util/environment.d.ts +6 -0
  328. package/lib/esm/util/environment.js +61 -0
  329. package/lib/esm/util/environment.js.map +1 -0
  330. package/lib/esm/util/error-boundary.d.ts +40 -0
  331. package/lib/esm/util/error-boundary.js +41 -0
  332. package/lib/esm/util/error-boundary.js.map +1 -0
  333. package/lib/esm/util/index.d.ts +0 -0
  334. package/lib/esm/util/index.js +2 -0
  335. package/lib/esm/util/index.js.map +1 -0
  336. package/lib/esm/util/logs.d.ts +2 -0
  337. package/lib/esm/util/logs.js +15 -0
  338. package/lib/esm/util/logs.js.map +1 -0
  339. package/lib/esm/util/objects.d.ts +3 -0
  340. package/lib/esm/util/objects.js +38 -0
  341. package/lib/esm/util/objects.js.map +1 -0
  342. package/lib/esm/util/react.d.ts +12 -0
  343. package/lib/esm/util/react.js +34 -0
  344. package/lib/esm/util/react.js.map +1 -0
  345. package/lib/esm/util/regexs.d.ts +2 -0
  346. package/lib/esm/util/regexs.js +18 -0
  347. package/lib/esm/util/regexs.js.map +1 -0
  348. package/lib/esm/util/webchat.d.ts +11 -0
  349. package/lib/esm/util/webchat.js +53 -0
  350. package/lib/esm/util/webchat.js.map +1 -0
  351. package/lib/esm/webchat/actions.d.ts +23 -0
  352. package/lib/esm/webchat/actions.js +24 -0
  353. package/lib/esm/webchat/actions.js.map +1 -0
  354. package/lib/esm/webchat/components/attachment.d.ts +5 -0
  355. package/lib/esm/webchat/components/attachment.js +27 -0
  356. package/lib/esm/webchat/components/attachment.js.map +1 -0
  357. package/lib/esm/webchat/components/common.d.ts +1 -0
  358. package/lib/esm/webchat/components/common.js +8 -0
  359. package/lib/esm/webchat/components/common.js.map +1 -0
  360. package/lib/esm/webchat/components/conditional-animation.d.ts +1 -0
  361. package/lib/esm/webchat/components/conditional-animation.js +13 -0
  362. package/lib/esm/webchat/components/conditional-animation.js.map +1 -0
  363. package/lib/esm/webchat/components/emoji-picker.d.ts +5 -0
  364. package/lib/esm/webchat/components/emoji-picker.js +46 -0
  365. package/lib/esm/webchat/components/emoji-picker.js.map +1 -0
  366. package/lib/esm/webchat/components/persistent-menu.d.ts +10 -0
  367. package/lib/esm/webchat/components/persistent-menu.js +53 -0
  368. package/lib/esm/webchat/components/persistent-menu.js.map +1 -0
  369. package/lib/esm/webchat/components/send-button.d.ts +3 -0
  370. package/lib/esm/webchat/components/send-button.js +19 -0
  371. package/lib/esm/webchat/components/send-button.js.map +1 -0
  372. package/lib/esm/webchat/components/styled-scrollbar.d.ts +1 -0
  373. package/lib/esm/webchat/components/styled-scrollbar.js +50 -0
  374. package/lib/esm/webchat/components/styled-scrollbar.js.map +1 -0
  375. package/lib/esm/webchat/components/styled-scrollbar.scss +12 -0
  376. package/lib/esm/webchat/components/typing-indicator.d.ts +1 -0
  377. package/lib/esm/webchat/components/typing-indicator.js +9 -0
  378. package/lib/esm/webchat/components/typing-indicator.js.map +1 -0
  379. package/lib/esm/webchat/components/typing-indicator.scss +38 -0
  380. package/lib/esm/webchat/devices/device-adapter.d.ts +12 -0
  381. package/lib/esm/webchat/devices/device-adapter.js +43 -0
  382. package/lib/esm/webchat/devices/device-adapter.js.map +1 -0
  383. package/lib/esm/webchat/devices/index.d.ts +11 -0
  384. package/lib/esm/webchat/devices/index.js +18 -0
  385. package/lib/esm/webchat/devices/index.js.map +1 -0
  386. package/lib/esm/webchat/devices/scrollbar-controller.d.ts +12 -0
  387. package/lib/esm/webchat/devices/scrollbar-controller.js +99 -0
  388. package/lib/esm/webchat/devices/scrollbar-controller.js.map +1 -0
  389. package/lib/esm/webchat/devices/webchat-resizer.d.ts +9 -0
  390. package/lib/esm/webchat/devices/webchat-resizer.js +43 -0
  391. package/lib/esm/webchat/devices/webchat-resizer.js.map +1 -0
  392. package/lib/esm/webchat/header.d.ts +3 -0
  393. package/lib/esm/webchat/header.js +89 -0
  394. package/lib/esm/webchat/header.js.map +1 -0
  395. package/lib/esm/webchat/hooks.d.ts +80 -0
  396. package/lib/esm/webchat/hooks.js +210 -0
  397. package/lib/esm/webchat/hooks.js.map +1 -0
  398. package/lib/esm/webchat/index.d.ts +6 -0
  399. package/lib/esm/webchat/index.js +11 -0
  400. package/lib/esm/webchat/index.js.map +1 -0
  401. package/lib/esm/webchat/message-list.d.ts +1 -0
  402. package/lib/esm/webchat/message-list.js +41 -0
  403. package/lib/esm/webchat/message-list.js.map +1 -0
  404. package/lib/esm/webchat/messages-reducer.d.ts +1 -0
  405. package/lib/esm/webchat/messages-reducer.js +54 -0
  406. package/lib/esm/webchat/messages-reducer.js.map +1 -0
  407. package/lib/esm/webchat/replies.d.ts +1 -0
  408. package/lib/esm/webchat/replies.js +41 -0
  409. package/lib/esm/webchat/replies.js.map +1 -0
  410. package/lib/esm/webchat/session-view.d.ts +1 -0
  411. package/lib/esm/webchat/session-view.js +119 -0
  412. package/lib/esm/webchat/session-view.js.map +1 -0
  413. package/lib/esm/webchat/use-storage-state-hook.d.ts +1 -0
  414. package/lib/esm/webchat/use-storage-state-hook.js +28 -0
  415. package/lib/esm/webchat/use-storage-state-hook.js.map +1 -0
  416. package/lib/esm/webchat/webchat-dev.d.ts +7 -0
  417. package/lib/esm/webchat/webchat-dev.js +60 -0
  418. package/lib/esm/webchat/webchat-dev.js.map +1 -0
  419. package/lib/esm/webchat/webchat-reducer.d.ts +1 -0
  420. package/lib/esm/webchat/webchat-reducer.js +44 -0
  421. package/lib/esm/webchat/webchat-reducer.js.map +1 -0
  422. package/lib/esm/webchat/webchat.d.ts +3 -0
  423. package/lib/esm/webchat/webchat.js +699 -0
  424. package/lib/esm/webchat/webchat.js.map +1 -0
  425. package/lib/esm/webchat/webview.d.ts +2 -0
  426. package/lib/esm/webchat/webview.js +86 -0
  427. package/lib/esm/webchat/webview.js.map +1 -0
  428. package/lib/esm/webchat-app.d.ts +98 -0
  429. package/lib/esm/webchat-app.js +265 -0
  430. package/lib/esm/webchat-app.js.map +1 -0
  431. package/lib/esm/webchat.template.html +37 -0
  432. package/lib/esm/webview-app.d.ts +7 -0
  433. package/lib/esm/webview-app.js +98 -0
  434. package/lib/esm/webview-app.js.map +1 -0
  435. package/lib/esm/webview.template.html +39 -0
  436. package/package.json +16 -9
  437. package/src/index.js +1 -1
  438. package/src/msg-to-botonic.jsx +1 -1
  439. package/src/{webview.jsx → webview-app.tsx} +4 -1
  440. package/lib/cjs/webview.js.map +0 -1
@@ -0,0 +1,24 @@
1
+ export class ButtonsDisabler {
2
+ static constructBrowserProps(props: any): {
3
+ disabled: any;
4
+ };
5
+ static constructNodeProps(props: any): {
6
+ autodisable: string;
7
+ disabledstyle: string;
8
+ };
9
+ static withDisabledProps(props: any): {
10
+ disabled: any;
11
+ autodisable: any;
12
+ disabledstyle: any;
13
+ };
14
+ static resolveDisabling(theme: any, props: any): {
15
+ autoDisable: any;
16
+ disabledStyle: any;
17
+ };
18
+ static updateChildrenButtons(children: any, additionalProps?: undefined): any;
19
+ static updateButtons(node: any, additionalProps: any): any;
20
+ static getUpdatedMessage(messageToUpdate: any, { autoDisable, disabledStyle }: {
21
+ autoDisable: any;
22
+ disabledStyle: any;
23
+ }): any;
24
+ }
@@ -0,0 +1,84 @@
1
+ import { Button } from '../components/button';
2
+ import { WEBCHAT } from '../constants';
3
+ import { isCarousel } from '../message-utils';
4
+ import { strToBool } from '../util/objects';
5
+ import { deepMapWithIndex } from '../util/react';
6
+ import { _getThemeProperty } from '../util/webchat';
7
+ export class ButtonsDisabler {
8
+ static constructBrowserProps(props) {
9
+ const disabledProps = { disabled: props.disabled };
10
+ if (props.autodisable !== undefined)
11
+ disabledProps.autodisable = strToBool(props.autodisable);
12
+ if (props.disabledstyle !== undefined)
13
+ disabledProps.disabledstyle = props.disabledstyle;
14
+ return disabledProps;
15
+ }
16
+ static constructNodeProps(props) {
17
+ const disabledProps = {};
18
+ if (props.autodisable !== undefined)
19
+ disabledProps.autodisable = String(props.autodisable);
20
+ if (props.disabledstyle !== undefined)
21
+ disabledProps.disabledstyle = JSON.stringify(props.disabledstyle);
22
+ return disabledProps;
23
+ }
24
+ static withDisabledProps(props) {
25
+ return {
26
+ disabled: props.disabled,
27
+ autodisable: props.autodisable,
28
+ disabledstyle: props.disabledstyle,
29
+ };
30
+ }
31
+ static resolveDisabling(theme, props) {
32
+ const getThemeProperty = _getThemeProperty(theme);
33
+ const autoDisable = props.autodisable !== undefined
34
+ ? props.autodisable
35
+ : getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.buttonAutoDisable, WEBCHAT.DEFAULTS.BUTTON_AUTO_DISABLE);
36
+ const computedDisabledStyle = props.disabledstyle !== undefined
37
+ ? props.disabledstyle
38
+ : getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.buttonDisabledStyle, {});
39
+ const disabledStyle = Object.assign(Object.assign({}, WEBCHAT.DEFAULTS.BUTTON_DISABLED_STYLE), computedDisabledStyle);
40
+ return { autoDisable, disabledStyle };
41
+ }
42
+ static updateChildrenButtons(children, additionalProps = undefined) {
43
+ return deepMapWithIndex(children, n => {
44
+ if (n.type === Button)
45
+ return this.updateButtons(n, additionalProps);
46
+ return n;
47
+ });
48
+ }
49
+ static updateButtons(node, additionalProps) {
50
+ if (!additionalProps)
51
+ additionalProps = {};
52
+ else {
53
+ additionalProps = {
54
+ disabled: node.props.disabled === true
55
+ ? node.props.disabled
56
+ : additionalProps.disabled,
57
+ setDisabled: additionalProps.setDisabled,
58
+ parentId: additionalProps.parentId,
59
+ };
60
+ }
61
+ return Object.assign(Object.assign({}, node), { props: Object.assign(Object.assign({}, node.props), additionalProps) });
62
+ }
63
+ static getUpdatedMessage(messageToUpdate, { autoDisable, disabledStyle }) {
64
+ const updateMsgButton = button => {
65
+ return Object.assign(Object.assign({}, button), {
66
+ disabled: true,
67
+ });
68
+ };
69
+ if (isCarousel(messageToUpdate) &&
70
+ messageToUpdate.data &&
71
+ messageToUpdate.data.elements) {
72
+ messageToUpdate.data.elements = messageToUpdate.data.elements.map(e => (Object.assign(Object.assign({}, e), {
73
+ buttons: e.buttons.map(updateMsgButton),
74
+ })));
75
+ return messageToUpdate;
76
+ }
77
+ else {
78
+ return Object.assign(Object.assign({}, messageToUpdate), {
79
+ buttons: messageToUpdate.buttons.map(updateMsgButton),
80
+ });
81
+ }
82
+ }
83
+ }
84
+ //# sourceMappingURL=buttons-disabler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buttons-disabler.js","sourceRoot":"src/","sources":["components/buttons-disabler.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export function Carousel(props: MessageProps): JSX.Element;
2
+ export namespace Carousel {
3
+ export { serialize };
4
+ }
5
+ declare function serialize(carouselProps: any): {
6
+ type: any;
7
+ elements: any;
8
+ };
9
+ export {};
@@ -0,0 +1,115 @@
1
+ import { INPUT, isBrowser } from '@botonic/core';
2
+ import React, { useContext, useEffect, useRef, useState } from 'react';
3
+ import styled from 'styled-components';
4
+ import LeftArrow from '../assets/leftArrow.svg';
5
+ import RightArrow from '../assets/rightArrow.svg';
6
+ import { COLORS, WEBCHAT } from '../constants';
7
+ import { WebchatContext } from '../contexts';
8
+ import { resolveImage } from '../util/environment';
9
+ import { StyledScrollbar } from '../webchat/components/styled-scrollbar';
10
+ import { ButtonsDisabler } from './buttons-disabler';
11
+ import { Message } from './message';
12
+ const StyledCarousel = styled.div `
13
+ padding: 10px 0px;
14
+ display: flex;
15
+ flex-direction: row;
16
+ max-width: 100%;
17
+ ${props => props.carouselArrowsEnabled && 'overflow-x: auto;'}
18
+ `;
19
+ const StyledItems = styled.div `
20
+ display: flex;
21
+ `;
22
+ const StyledArrowContainer = styled.div `
23
+ position: absolute;
24
+ top: calc(50% - 20px);
25
+ height: 40px;
26
+ width: 25px;
27
+ background: ${COLORS.SILVER};
28
+ display: flex;
29
+ align-items: center;
30
+ cursor: pointer;
31
+ justify-content: ${props => props.justifyContent};
32
+ left: ${props => props.left}px;
33
+ right: ${props => props.right}px;
34
+ border-top-${props => props.arrow}-radius: 30px;
35
+ border-bottom-${props => props.arrow}-radius: 30px;
36
+ `;
37
+ const StyledArrow = styled.img `
38
+ width: 20px;
39
+ height: 20px;
40
+ `;
41
+ const serialize = carouselProps => {
42
+ let carouselChildren = carouselProps.children;
43
+ if (!Array.isArray(carouselChildren))
44
+ carouselChildren = [carouselChildren];
45
+ return {
46
+ type: INPUT.CAROUSEL,
47
+ elements: carouselChildren.map(e => e && e.type && e.type.serialize && e.type.serialize(e.props)),
48
+ };
49
+ };
50
+ /**
51
+ *
52
+ * @param {MessageProps} props
53
+ * @returns {JSX.Element}
54
+ */
55
+ export const Carousel = props => {
56
+ const { getThemeProperty } = useContext(WebchatContext);
57
+ let content = props.children;
58
+ const scrollbarOptions = Object.assign({ enable: true, autoHide: true }, getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.scrollbar));
59
+ const [hasLeftArrow, setLeftArrow] = useState(false);
60
+ const [hasRightArrow, setRightArrow] = useState(true);
61
+ const carouselRef = useRef(null);
62
+ const CustomCarouselLeftArrow = getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.customCarouselLeftArrow, undefined);
63
+ const CustomCarouselRightArrow = getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.customCarouselRightArrow, undefined);
64
+ const carouselArrowsEnabled = getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.enableCarouselArrows, true);
65
+ const scrollCarouselBy = value => {
66
+ carouselRef.current.scrollBy({
67
+ left: value,
68
+ behavior: 'smooth',
69
+ });
70
+ };
71
+ const setArrowsVisibility = event => {
72
+ const carousel = event.currentTarget;
73
+ const maxRightScroll = carousel.scrollWidth -
74
+ carousel.offsetWidth -
75
+ WEBCHAT.DEFAULTS.ELEMENT_MARGIN_RIGHT;
76
+ setLeftArrow(carousel.scrollLeft !== 0);
77
+ setRightArrow(carousel.scrollLeft < maxRightScroll);
78
+ };
79
+ const getArrows = () => {
80
+ const scrollBy = WEBCHAT.DEFAULTS.ELEMENT_WIDTH + WEBCHAT.DEFAULTS.ELEMENT_MARGIN_RIGHT;
81
+ return (<>
82
+ {hasLeftArrow &&
83
+ (CustomCarouselLeftArrow ? (<CustomCarouselLeftArrow scrollCarouselBy={scrollCarouselBy}/>) : (<StyledArrowContainer left={0} arrow={'right'} justifyContent={'flex-start'} onClick={() => scrollCarouselBy(-scrollBy)}>
84
+ <StyledArrow src={resolveImage(LeftArrow)}/>
85
+ </StyledArrowContainer>))}
86
+ {hasRightArrow &&
87
+ (CustomCarouselRightArrow ? (<CustomCarouselRightArrow scrollCarouselBy={scrollCarouselBy}/>) : (<StyledArrowContainer right={0} arrow={'left'} justifyContent={'flex-end'} onClick={() => scrollCarouselBy(scrollBy)}>
88
+ <StyledArrow src={resolveImage(RightArrow)}/>
89
+ </StyledArrowContainer>))}
90
+ </>);
91
+ };
92
+ useEffect(() => {
93
+ const carousel = carouselRef.current;
94
+ if (carousel && carousel.addEventListener) {
95
+ carousel.addEventListener('scroll', setArrowsVisibility, false);
96
+ }
97
+ else if (carousel && carousel.attachEvent) {
98
+ carousel.attachEvent('scroll', setArrowsVisibility);
99
+ }
100
+ }, [carouselRef.current]);
101
+ const carouselProps = Object.assign(Object.assign({}, props), { children: ButtonsDisabler.updateChildrenButtons(props.children) });
102
+ if (isBrowser()) {
103
+ content = (<StyledScrollbar scrollbar={scrollbarOptions} autoHide={scrollbarOptions.autoHide}>
104
+ <StyledCarousel ref={carouselRef} carouselArrowsEnabled={carouselArrowsEnabled}>
105
+ <StyledItems>{carouselProps.children}</StyledItems>
106
+ {carouselArrowsEnabled && getArrows()}
107
+ </StyledCarousel>
108
+ </StyledScrollbar>);
109
+ }
110
+ return (<Message style={{ width: '85%', padding: 0, backgroundColor: COLORS.TRANSPARENT }} blob={false} json={serialize(carouselProps)} type={INPUT.CAROUSEL} {...carouselProps}>
111
+ {content}
112
+ </Message>);
113
+ };
114
+ Carousel.serialize = serialize;
115
+ //# sourceMappingURL=carousel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"carousel.js","sourceRoot":"src/","sources":["components/carousel.jsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Get the name of an element (instantiated component)
3
+ * @param {React.Element} component
4
+ * @returns {string}
5
+ */
6
+ export function getElementName(component: React.Element): string;
7
+ /**
8
+ * Get the name of a component TYPE
9
+ * @param {React.ComponentType} component
10
+ * @returns {string}
11
+ */
12
+ export function getComponentTypeName(component: React.ComponentType): string;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Get the name of an element (instantiated component)
3
+ * @param {React.Element} component
4
+ * @returns {string}
5
+ */
6
+ export function getElementName(component) {
7
+ return component.type.name;
8
+ }
9
+ /**
10
+ * Get the name of a component TYPE
11
+ * @param {React.ComponentType} component
12
+ * @returns {string}
13
+ */
14
+ export function getComponentTypeName(component) {
15
+ return component.displayName || component.name || 'Component';
16
+ }
17
+ //# sourceMappingURL=components.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components.js","sourceRoot":"src/","sources":["components/components.js"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,SAAS;IACtC,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAA;AAC5B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAAS;IAC5C,OAAO,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,IAAI,IAAI,WAAW,CAAA;AAC/D,CAAC"}
@@ -0,0 +1,43 @@
1
+ export function customMessage({ name, component: CustomMessageComponent, defaultProps, errorBoundary: ErrorBoundary, }: {
2
+ name: any;
3
+ component: any;
4
+ defaultProps?: {} | undefined;
5
+ errorBoundary?: {
6
+ new (props: any): {
7
+ state: {
8
+ error: null;
9
+ };
10
+ componentDidCatch(error: any, errorInfo: any): void;
11
+ render(): React.ReactNode;
12
+ context: any;
13
+ setState<K extends string | number | symbol>(state: any, callback?: (() => void) | undefined): void;
14
+ forceUpdate(callback?: (() => void) | undefined): void;
15
+ readonly props: Readonly<any> & Readonly<{
16
+ children?: React.ReactNode;
17
+ }>;
18
+ refs: {
19
+ [key: string]: React.ReactInstance;
20
+ };
21
+ componentDidMount?(): void;
22
+ shouldComponentUpdate?(nextProps: Readonly<any>, nextState: Readonly<any>, nextContext: any): boolean;
23
+ componentWillUnmount?(): void;
24
+ getSnapshotBeforeUpdate?(prevProps: Readonly<any>, prevState: Readonly<any>): any;
25
+ componentDidUpdate?(prevProps: Readonly<any>, prevState: Readonly<any>, snapshot?: any): void;
26
+ componentWillMount?(): void;
27
+ UNSAFE_componentWillMount?(): void;
28
+ componentWillReceiveProps?(nextProps: Readonly<any>, nextContext: any): void;
29
+ UNSAFE_componentWillReceiveProps?(nextProps: Readonly<any>, nextContext: any): void;
30
+ componentWillUpdate?(nextProps: Readonly<any>, nextState: Readonly<any>, nextContext: any): void;
31
+ UNSAFE_componentWillUpdate?(nextProps: Readonly<any>, nextState: Readonly<any>, nextContext: any): void;
32
+ };
33
+ getDerivedStateFromError(error: any): {
34
+ error: any;
35
+ };
36
+ contextType?: React.Context<any> | undefined;
37
+ } | undefined;
38
+ }): {
39
+ (props: any): JSX.Element;
40
+ customTypeName: any;
41
+ deserialize(msg: any): JSX.Element;
42
+ };
43
+ import React from "react";
@@ -0,0 +1,61 @@
1
+ import { __rest } from "tslib";
2
+ import { INPUT } from '@botonic/core';
3
+ import merge from 'lodash.merge';
4
+ import React from 'react';
5
+ import { SENDERS } from '../constants';
6
+ import { createErrorBoundary } from '../util/error-boundary';
7
+ import { warnDeprecatedProps } from '../util/logs';
8
+ import { mapObjectNonBooleanValues } from '../util/react';
9
+ import { Message } from './message';
10
+ import { Reply } from './reply';
11
+ /**
12
+ *
13
+ * @param name as it appears at ThemeProps' message.customTypes key
14
+ * @param CustomMessageComponent
15
+ * @param defaultProps Props for the wrapper Message
16
+ * @param ErrorBoundary to recover in case it fails
17
+ */
18
+ export const customMessage = ({ name, component: CustomMessageComponent, defaultProps = {}, errorBoundary: ErrorBoundary = createErrorBoundary(), }) => {
19
+ const CustomMessage = props => {
20
+ warnDeprecatedProps(defaultProps, 'customMessage:');
21
+ if (defaultProps.from === SENDERS.user)
22
+ defaultProps.ack = 1;
23
+ return (<Message {...merge(mapObjectNonBooleanValues(defaultProps), props)} type={INPUT.CUSTOM}/>);
24
+ };
25
+ const splitChildren = props => {
26
+ const { children } = props;
27
+ const isReply = e => e.type === Reply;
28
+ try {
29
+ if (!Array.isArray(children) && !isReply(children)) {
30
+ return { replies: null, childrenWithoutReplies: children };
31
+ }
32
+ const childrenArray = React.Children.toArray(children);
33
+ const replies = childrenArray.filter(isReply);
34
+ const childrenWithoutReplies = childrenArray.filter(e => !isReply(e));
35
+ return {
36
+ replies: replies,
37
+ childrenWithoutReplies,
38
+ };
39
+ }
40
+ catch (e) {
41
+ return { replies: null, childrenWithoutReplies: children };
42
+ }
43
+ };
44
+ const WrappedComponent = props => {
45
+ const { id, children } = props, customMessageProps = __rest(props, ["id", "children"]);
46
+ const { replies, childrenWithoutReplies } = splitChildren(props);
47
+ return (<CustomMessage id={id} json={Object.assign(Object.assign({}, customMessageProps), { id, children: childrenWithoutReplies, customTypeName: name })}>
48
+ <ErrorBoundary key={'errorBoundary'} {...customMessageProps}>
49
+ <CustomMessageComponent {...customMessageProps}>
50
+ {childrenWithoutReplies}
51
+ </CustomMessageComponent>
52
+ </ErrorBoundary>
53
+ {replies}
54
+ </CustomMessage>);
55
+ };
56
+ WrappedComponent.customTypeName = name;
57
+ // eslint-disable-next-line react/display-name
58
+ WrappedComponent.deserialize = msg => (<WrappedComponent id={msg.id} key={msg.key} json={msg.data} {...msg.data}/>);
59
+ return WrappedComponent;
60
+ };
61
+ //# sourceMappingURL=custom-message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-message.js","sourceRoot":"src/","sources":["components/custom-message.jsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export function Document(props: any): JSX.Element;
2
+ export namespace Document {
3
+ export { serialize };
4
+ }
5
+ declare function serialize(documentProps: any): {
6
+ document: any;
7
+ };
8
+ export {};
@@ -0,0 +1,45 @@
1
+ import { INPUT, isBrowser } from '@botonic/core';
2
+ import React, { useContext } from 'react';
3
+ import styled from 'styled-components';
4
+ import { ROLES, WEBCHAT } from '../constants';
5
+ import { WebchatContext } from '../contexts';
6
+ import { staticAsset } from '../util/environment';
7
+ import { Message } from './message';
8
+ const StyledButton = styled.a `
9
+ display: block;
10
+ height: 25px;
11
+ background-color: #f0f0f0;
12
+ padding: 10px;
13
+ text-align: center;
14
+ border-radius: 5px;
15
+ color: black;
16
+ font-weight: bold;
17
+ line-height: 25px;
18
+ text-decoration: none;
19
+ border: 1px solid black;
20
+ opacity: 0.9;
21
+ &:hover {
22
+ opacity: 1;
23
+ }
24
+ `;
25
+ const serialize = documentProps => {
26
+ return { document: documentProps.src };
27
+ };
28
+ export const Document = props => {
29
+ props = Object.assign(Object.assign({}, props), { src: staticAsset(props.src) });
30
+ let content = props.children;
31
+ const { getThemeProperty } = useContext(WebchatContext);
32
+ let documentDownload = getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.documentDownload, {});
33
+ if (typeof documentDownload === 'function')
34
+ documentDownload = documentDownload(props.from);
35
+ if (isBrowser()) {
36
+ content = (<StyledButton href={props.src} target='_blank' rel='noreferrer' style={Object.assign({}, documentDownload.style)}>
37
+ {documentDownload.text || 'Download'}
38
+ </StyledButton>);
39
+ }
40
+ return (<Message role={ROLES.DOCUMENT_MESSAGE} json={serialize(props)} {...props} type={INPUT.DOCUMENT}>
41
+ {content}
42
+ </Message>);
43
+ };
44
+ Document.serialize = serialize;
45
+ //# sourceMappingURL=document.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document.js","sourceRoot":"src/","sources":["components/document.jsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AACzC,OAAO,MAAM,MAAM,mBAAmB,CAAA;AAEtC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAA;;;;;;;;;;;;;;;;CAgB5B,CAAA;AAED,MAAM,SAAS,GAAG,aAAa,CAAC,EAAE;IAChC,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC,GAAG,EAAE,CAAA;AACxC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,CAAC,EAAE;IAC9B,KAAK,mCAAQ,KAAK,KAAE,GAAG,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,GAAE,CAAA;IACjD,IAAI,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAA;IAE5B,MAAM,EAAE,gBAAgB,EAAE,GAAG,UAAU,CAAC,cAAc,CAAC,CAAA;IACvD,IAAI,gBAAgB,GAAG,gBAAgB,CACrC,OAAO,CAAC,iBAAiB,CAAC,gBAAgB,EAC1C,EAAE,CACH,CAAA;IACD,IAAI,OAAO,gBAAgB,KAAK,UAAU;QACxC,gBAAgB,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAEjD,IAAI,SAAS,EAAE,EAAE;QACf,OAAO,GAAG,CACR,CAAC,YAAY,CACX,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAChB,MAAM,CAAC,QAAQ,CACf,GAAG,CAAC,YAAY,CAChB,KAAK,CAAC,mBACD,gBAAgB,CAAC,KAAK,EACzB,CAEF;QAAA,CAAC,gBAAgB,CAAC,IAAI,IAAI,UAAU,CACtC;MAAA,EAAE,YAAY,CAAC,CAChB,CAAA;KACF;IAED,OAAO,CACL,CAAC,OAAO,CACN,IAAI,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAC7B,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CACvB,IAAI,KAAK,CAAC,CACV,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAErB;MAAA,CAAC,OAAO,CACV;IAAA,EAAE,OAAO,CAAC,CACX,CAAA;AACH,CAAC,CAAA;AAED,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAA"}
@@ -0,0 +1,4 @@
1
+ export function Element(props: any): any;
2
+ export namespace Element {
3
+ function serialize(elementProps: any): any;
4
+ }
@@ -0,0 +1,50 @@
1
+ import React from 'react';
2
+ import styled from 'styled-components';
3
+ import { COLORS, WEBCHAT } from '../constants';
4
+ import { renderComponent } from '../util/react';
5
+ const ElementContainer = styled.div `
6
+ display: flex;
7
+ flex-direction: column;
8
+ width: ${WEBCHAT.DEFAULTS.ELEMENT_WIDTH}px;
9
+ margin-right: ${WEBCHAT.DEFAULTS.ELEMENT_MARGIN_RIGHT}px;
10
+ border-radius: 6px;
11
+ border: 1px solid ${COLORS.SEASHELL_WHITE};
12
+ overflow: hidden;
13
+ justify-content: space-between;
14
+ `;
15
+ export const Element = props => {
16
+ const renderBrowser = () => (<ElementContainer>{props.children}</ElementContainer>);
17
+ const renderNode = () => <element>{props.children}</element>;
18
+ return renderComponent({ renderBrowser, renderNode });
19
+ };
20
+ Element.serialize = elementProps => {
21
+ const element = Object.assign({}, ...elementProps.children
22
+ .filter(c => c && c.type && c.type.name != 'Button')
23
+ .map(c => c.type.serialize && c.type.serialize(c.props)));
24
+ // When we are serializer buttons from backend, we are receiving the data
25
+ // as an array of buttons, so we have to keep robust with serve and deal with arrays
26
+ element.buttons = [
27
+ ...elementProps.children
28
+ .filter(c => {
29
+ if (c instanceof Array)
30
+ return true;
31
+ return c && c.type && c.type.name == 'Button';
32
+ })
33
+ .map(b => {
34
+ if (b instanceof Array) {
35
+ return b.map(bb => bb &&
36
+ bb.type &&
37
+ bb.type.serialize &&
38
+ bb.type.serialize(bb.props).button);
39
+ }
40
+ return (b && b.type && b.type.serialize && b.type.serialize(b.props).button);
41
+ }),
42
+ ];
43
+ // When we have the buttons from backend, we have all buttons inside an array on the first position
44
+ // of another array in element['buttons'] we want that element['buttons'] to be an array of buttons,
45
+ // not an array of another array of buttons
46
+ if (element.buttons[0] instanceof Array)
47
+ element.buttons = element.buttons[0];
48
+ return element;
49
+ };
50
+ //# sourceMappingURL=element.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element.js","sourceRoot":"src/","sources":["components/element.jsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,MAAM,MAAM,mBAAmB,CAAA;AAEtC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAE/C,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAA;;;WAGxB,OAAO,CAAC,QAAQ,CAAC,aAAa;kBACvB,OAAO,CAAC,QAAQ,CAAC,oBAAoB;;sBAEjC,MAAM,CAAC,cAAc;;;CAG1C,CAAA;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE;IAC7B,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,CAC1B,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAC,CACtD,CAAA;IAED,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAA;IAE5D,OAAO,eAAe,CAAC,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC,CAAA;AACvD,CAAC,CAAA;AAED,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC,EAAE;IACjC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAC3B,EAAE,EACF,GAAG,YAAY,CAAC,QAAQ;SACrB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC;SACnD,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAC3D,CAAA;IACD,yEAAyE;IACzE,oFAAoF;IACpF,OAAO,CAAC,OAAO,GAAG;QAChB,GAAG,YAAY,CAAC,QAAQ;aACrB,MAAM,CAAC,CAAC,CAAC,EAAE;YACV,IAAI,CAAC,YAAY,KAAK;gBAAE,OAAO,IAAI,CAAA;YACnC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAA;QAC/C,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,CAAC,EAAE;YACP,IAAI,CAAC,YAAY,KAAK,EAAE;gBACtB,OAAO,CAAC,CAAC,GAAG,CACV,EAAE,CAAC,EAAE,CACH,EAAE;oBACF,EAAE,CAAC,IAAI;oBACP,EAAE,CAAC,IAAI,CAAC,SAAS;oBACjB,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,CACrC,CAAA;aACF;YACD,OAAO,CACL,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CACpE,CAAA;QACH,CAAC,CAAC;KACL,CAAA;IACD,mGAAmG;IACnG,oGAAoG;IACpG,2CAA2C;IAC3C,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,KAAK;QAAE,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAC7E,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export function Handoff(props: any): JSX.Element;
@@ -0,0 +1,53 @@
1
+ import React, { useContext, useState } from 'react';
2
+ import styled from 'styled-components';
3
+ import { COLORS } from '../constants';
4
+ import { WebchatContext } from '../contexts';
5
+ const Container = styled.div `
6
+ display: flex;
7
+ font-family: inherit;
8
+ flex-direction: column;
9
+ justify-content: center;
10
+ align-items: center;
11
+ padding: 24px;
12
+ `;
13
+ const TransferredContainer = styled.div `
14
+ text-align: center;
15
+ white-space: normal;
16
+ `;
17
+ const EndedContainer = styled.div `
18
+ text-align: center;
19
+ white-space: normal;
20
+ `;
21
+ const StyledButton = styled.button `
22
+ max-width: 60%;
23
+ padding: 12px 24px;
24
+ background-color: ${COLORS.SOLID_WHITE};
25
+ border: none;
26
+ border-radius: 4px;
27
+ margin-top: 8px;
28
+ cursor: pointer;
29
+ `;
30
+ export const Handoff = props => {
31
+ const { resolveCase } = useContext(WebchatContext);
32
+ const [state, setState] = useState({ showContinue: true });
33
+ const continueClick = () => {
34
+ setState({ showContinue: false });
35
+ resolveCase();
36
+ };
37
+ const bgColor = state.showContinue
38
+ ? COLORS.FRINGY_FLOWER_GREEN
39
+ : COLORS.TASMAN_GRAY;
40
+ const fontColor = state.showContinue
41
+ ? COLORS.APPLE_GREEN
42
+ : COLORS.CACTUS_GREEN;
43
+ return (<Container style={{
44
+ color: fontColor,
45
+ backgroundColor: bgColor,
46
+ }}>
47
+ {state.showContinue ? (<TransferredContainer>
48
+ Conversation transferred to a human agent...
49
+ </TransferredContainer>) : (<EndedContainer>Human handoff ended</EndedContainer>)}
50
+ {state.showContinue && (<StyledButton onClick={continueClick}>Continue</StyledButton>)}
51
+ </Container>);
52
+ };
53
+ //# sourceMappingURL=handoff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handoff.js","sourceRoot":"src/","sources":["components/handoff.jsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACnD,OAAO,MAAM,MAAM,mBAAmB,CAAA;AAEtC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE5C,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;CAO3B,CAAA;AAED,MAAM,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAAA;;;CAGtC,CAAA;AAED,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAA;;;CAGhC,CAAA;AAED,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAA;;;sBAGZ,MAAM,CAAC,WAAW;;;;;CAKvC,CAAA;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE;IAC7B,MAAM,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC,cAAc,CAAC,CAAA;IAClD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAA;IAE1D,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,QAAQ,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAA;QACjC,WAAW,EAAE,CAAA;IACf,CAAC,CAAA;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY;QAChC,CAAC,CAAC,MAAM,CAAC,mBAAmB;QAC5B,CAAC,CAAC,MAAM,CAAC,WAAW,CAAA;IACtB,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY;QAClC,CAAC,CAAC,MAAM,CAAC,WAAW;QACpB,CAAC,CAAC,MAAM,CAAC,YAAY,CAAA;IACvB,OAAO,CACL,CAAC,SAAS,CACR,KAAK,CAAC,CAAC;YACL,KAAK,EAAE,SAAS;YAChB,eAAe,EAAE,OAAO;SACzB,CAAC,CAEF;MAAA,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CACpB,CAAC,oBAAoB,CACnB;;QACF,EAAE,oBAAoB,CAAC,CACxB,CAAC,CAAC,CAAC,CACF,CAAC,cAAc,CAAC,mBAAmB,EAAE,cAAc,CAAC,CACrD,CACD;MAAA,CAAC,KAAK,CAAC,YAAY,IAAI,CACrB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,CAC9D,CACH;IAAA,EAAE,SAAS,CAAC,CACb,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,8 @@
1
+ export function Image(props: any): JSX.Element;
2
+ export namespace Image {
3
+ export { serialize };
4
+ }
5
+ declare function serialize(imageProps: any): {
6
+ image: any;
7
+ };
8
+ export {};
@@ -0,0 +1,37 @@
1
+ import { INPUT, isBrowser } from '@botonic/core';
2
+ import React, { useContext, useState } from 'react';
3
+ import styled from 'styled-components';
4
+ import { ROLES, WEBCHAT } from '../constants';
5
+ import { WebchatContext } from '../contexts';
6
+ import { staticAsset } from '../util/environment';
7
+ import { Message } from './message';
8
+ const StyledImage = styled.img `
9
+ border-radius: 8px;
10
+ max-width: 150px;
11
+ max-height: 150px;
12
+ margin: -3px -6px;
13
+ cursor: ${({ hasPreviewer }) => (hasPreviewer ? 'pointer' : 'auto')};
14
+ `;
15
+ const serialize = imageProps => {
16
+ return { image: imageProps.src };
17
+ };
18
+ export const Image = props => {
19
+ props = Object.assign(Object.assign({}, props), { src: staticAsset(props.src) });
20
+ let content = props.children;
21
+ const [isPreviewerOpened, setIsPreviewerOpened] = useState(false);
22
+ const openPreviewer = () => setIsPreviewerOpened(true);
23
+ const closePreviewer = () => setIsPreviewerOpened(false);
24
+ const { getThemeProperty } = useContext(WebchatContext);
25
+ const ImagePreviewer = getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.imagePreviewer, null);
26
+ if (isBrowser()) {
27
+ content = (<>
28
+ <StyledImage src={props.src} onClick={openPreviewer} hasPreviewer={Boolean(ImagePreviewer)}/>
29
+ {ImagePreviewer && (<ImagePreviewer src={props.src} isPreviewerOpened={isPreviewerOpened} openPreviewer={openPreviewer} closePreviewer={closePreviewer}/>)}
30
+ </>);
31
+ }
32
+ return (<Message role={ROLES.IMAGE_MESSAGE} json={serialize(props)} {...props} type={INPUT.IMAGE}>
33
+ {content}
34
+ </Message>);
35
+ };
36
+ Image.serialize = serialize;
37
+ //# sourceMappingURL=image.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image.js","sourceRoot":"src/","sources":["components/image.jsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACnD,OAAO,MAAM,MAAM,mBAAmB,CAAA;AAEtC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;YAKlB,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;CACpE,CAAA;AAED,MAAM,SAAS,GAAG,UAAU,CAAC,EAAE;IAC7B,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,GAAG,EAAE,CAAA;AAClC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,CAAC,EAAE;IAC3B,KAAK,mCAAQ,KAAK,KAAE,GAAG,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,GAAE,CAAA;IACjD,IAAI,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAA;IAE5B,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACjE,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;IACtD,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAA;IAExD,MAAM,EAAE,gBAAgB,EAAE,GAAG,UAAU,CAAC,cAAc,CAAC,CAAA;IACvD,MAAM,cAAc,GAAG,gBAAgB,CACrC,OAAO,CAAC,iBAAiB,CAAC,cAAc,EACxC,IAAI,CACL,CAAA;IACD,IAAI,SAAS,EAAE,EAAE;QACf,OAAO,GAAG,CACR,EACE;QAAA,CAAC,WAAW,CACV,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CACf,OAAO,CAAC,CAAC,aAAa,CAAC,CACvB,YAAY,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,EAExC;QAAA,CAAC,cAAc,IAAI,CACjB,CAAC,cAAc,CACb,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CACf,iBAAiB,CAAC,CAAC,iBAAiB,CAAC,CACrC,aAAa,CAAC,CAAC,aAAa,CAAC,CAC7B,cAAc,CAAC,CAAC,cAAc,CAAC,EAC/B,CACH,CACH;MAAA,GAAG,CACJ,CAAA;KACF;IACD,OAAO,CACL,CAAC,OAAO,CACN,IAAI,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAC1B,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CACvB,IAAI,KAAK,CAAC,CACV,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAElB;MAAA,CAAC,OAAO,CACV;IAAA,EAAE,OAAO,CAAC,CACX,CAAA;AACH,CAAC,CAAA;AAED,KAAK,CAAC,SAAS,GAAG,SAAS,CAAA"}