@botonic/react 0.31.1-alpha.0 → 0.31.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 (452) hide show
  1. package/lib/cjs/webchat/context/index.js +4 -1
  2. package/lib/cjs/webchat/context/index.js.map +1 -1
  3. package/lib/cjs/webchat/context/types.d.ts +3 -1
  4. package/lib/cjs/webchat/context/use-webchat.d.ts +1 -1
  5. package/lib/cjs/webchat/context/use-webchat.js +2 -2
  6. package/lib/cjs/webchat/context/use-webchat.js.map +1 -1
  7. package/lib/cjs/webchat/hooks/use-scrollbar-controller.js +14 -14
  8. package/lib/cjs/webchat/hooks/use-scrollbar-controller.js.map +1 -1
  9. package/lib/cjs/webchat/hooks/use-webchat-dimensions.js +3 -3
  10. package/lib/cjs/webchat/hooks/use-webchat-dimensions.js.map +1 -1
  11. package/lib/cjs/webchat/hooks/use-webchat-resizer.js +5 -5
  12. package/lib/cjs/webchat/hooks/use-webchat-resizer.js.map +1 -1
  13. package/lib/cjs/webchat/webchat.js +9 -14
  14. package/lib/cjs/webchat/webchat.js.map +1 -1
  15. package/lib/cjs/webchat/webview/header.d.ts +1 -0
  16. package/lib/cjs/webchat/webview/header.js +16 -0
  17. package/lib/cjs/webchat/webview/header.js.map +1 -0
  18. package/lib/cjs/webchat/webview/index.d.ts +1 -0
  19. package/lib/cjs/webchat/webview/index.js +49 -0
  20. package/lib/cjs/webchat/webview/index.js.map +1 -0
  21. package/lib/cjs/webchat/webview/styles.d.ts +7 -0
  22. package/lib/cjs/webchat/webview/styles.js +46 -0
  23. package/lib/cjs/webchat/webview/styles.js.map +1 -0
  24. package/lib/esm/app.d.ts +2 -0
  25. package/lib/esm/app.js +6 -0
  26. package/lib/esm/app.js.map +1 -0
  27. package/lib/esm/botonic-tester.d.ts +30 -0
  28. package/lib/esm/botonic-tester.js +78 -0
  29. package/lib/esm/botonic-tester.js.map +1 -0
  30. package/lib/esm/components/audio.d.ts +9 -0
  31. package/lib/esm/components/audio.js +21 -0
  32. package/lib/esm/components/audio.js.map +1 -0
  33. package/lib/esm/components/button.d.ts +17 -0
  34. package/lib/esm/components/button.js +159 -0
  35. package/lib/esm/components/button.js.map +1 -0
  36. package/lib/esm/components/buttons-disabler.d.ts +24 -0
  37. package/lib/esm/components/buttons-disabler.js +84 -0
  38. package/lib/esm/components/buttons-disabler.js.map +1 -0
  39. package/lib/esm/components/carousel.d.ts +10 -0
  40. package/lib/esm/components/carousel.js +105 -0
  41. package/lib/esm/components/carousel.js.map +1 -0
  42. package/lib/esm/components/components.d.ts +12 -0
  43. package/lib/esm/components/components.js +17 -0
  44. package/lib/esm/components/components.js.map +1 -0
  45. package/lib/esm/components/custom-message.d.ts +16 -0
  46. package/lib/esm/components/custom-message.js +50 -0
  47. package/lib/esm/components/custom-message.js.map +1 -0
  48. package/lib/esm/components/document.d.ts +9 -0
  49. package/lib/esm/components/document.js +42 -0
  50. package/lib/esm/components/document.js.map +1 -0
  51. package/lib/esm/components/element.d.ts +4 -0
  52. package/lib/esm/components/element.js +51 -0
  53. package/lib/esm/components/element.js.map +1 -0
  54. package/lib/esm/components/handoff.d.ts +1 -0
  55. package/lib/esm/components/handoff.js +49 -0
  56. package/lib/esm/components/handoff.js.map +1 -0
  57. package/lib/esm/components/image.d.ts +9 -0
  58. package/lib/esm/components/image.js +35 -0
  59. package/lib/esm/components/image.js.map +1 -0
  60. package/lib/esm/components/index-types.d.ts +89 -0
  61. package/lib/esm/components/index-types.js +2 -0
  62. package/lib/esm/components/index-types.js.map +1 -0
  63. package/lib/esm/components/index.d.ts +30 -0
  64. package/lib/esm/components/index.js +31 -0
  65. package/lib/esm/components/index.js.map +1 -0
  66. package/lib/esm/components/location.d.ts +11 -0
  67. package/lib/esm/components/location.js +27 -0
  68. package/lib/esm/components/location.js.map +1 -0
  69. package/lib/esm/components/markdown.d.ts +7 -0
  70. package/lib/esm/components/markdown.js +152 -0
  71. package/lib/esm/components/markdown.js.map +1 -0
  72. package/lib/esm/components/message/index.d.ts +1 -0
  73. package/lib/esm/components/message/index.js +147 -0
  74. package/lib/esm/components/message/index.js.map +1 -0
  75. package/lib/esm/components/message/message-feedback.d.ts +7 -0
  76. package/lib/esm/components/message/message-feedback.js +59 -0
  77. package/lib/esm/components/message/message-feedback.js.map +1 -0
  78. package/lib/esm/components/message/message-footer.d.ts +11 -0
  79. package/lib/esm/components/message/message-footer.js +17 -0
  80. package/lib/esm/components/message/message-footer.js.map +1 -0
  81. package/lib/esm/components/message/message-image.d.ts +7 -0
  82. package/lib/esm/components/message/message-image.js +19 -0
  83. package/lib/esm/components/message/message-image.js.map +1 -0
  84. package/lib/esm/components/message/styles.d.ts +33 -0
  85. package/lib/esm/components/message/styles.js +118 -0
  86. package/lib/esm/components/message/styles.js.map +1 -0
  87. package/lib/esm/components/message/timestamps.d.ts +13 -0
  88. package/lib/esm/components/message/timestamps.js +40 -0
  89. package/lib/esm/components/message/timestamps.js.map +1 -0
  90. package/lib/esm/components/message-template.d.ts +1 -0
  91. package/lib/esm/components/message-template.js +9 -0
  92. package/lib/esm/components/message-template.js.map +1 -0
  93. package/lib/esm/components/multichannel/facebook/facebook.d.ts +17 -0
  94. package/lib/esm/components/multichannel/facebook/facebook.js +43 -0
  95. package/lib/esm/components/multichannel/facebook/facebook.js.map +1 -0
  96. package/lib/esm/components/multichannel/index-types.d.ts +46 -0
  97. package/lib/esm/components/multichannel/index-types.js +2 -0
  98. package/lib/esm/components/multichannel/index-types.js.map +1 -0
  99. package/lib/esm/components/multichannel/index.d.ts +11 -0
  100. package/lib/esm/components/multichannel/index.js +12 -0
  101. package/lib/esm/components/multichannel/index.js.map +1 -0
  102. package/lib/esm/components/multichannel/multichannel-button.d.ts +1 -0
  103. package/lib/esm/components/multichannel/multichannel-button.js +67 -0
  104. package/lib/esm/components/multichannel/multichannel-button.js.map +1 -0
  105. package/lib/esm/components/multichannel/multichannel-carousel.d.ts +1 -0
  106. package/lib/esm/components/multichannel/multichannel-carousel.js +74 -0
  107. package/lib/esm/components/multichannel/multichannel-carousel.js.map +1 -0
  108. package/lib/esm/components/multichannel/multichannel-context.d.ts +11 -0
  109. package/lib/esm/components/multichannel/multichannel-context.js +12 -0
  110. package/lib/esm/components/multichannel/multichannel-context.js.map +1 -0
  111. package/lib/esm/components/multichannel/multichannel-reply.d.ts +1 -0
  112. package/lib/esm/components/multichannel/multichannel-reply.js +20 -0
  113. package/lib/esm/components/multichannel/multichannel-reply.js.map +1 -0
  114. package/lib/esm/components/multichannel/multichannel-text.d.ts +1 -0
  115. package/lib/esm/components/multichannel/multichannel-text.js +160 -0
  116. package/lib/esm/components/multichannel/multichannel-text.js.map +1 -0
  117. package/lib/esm/components/multichannel/multichannel-utils.d.ts +21 -0
  118. package/lib/esm/components/multichannel/multichannel-utils.js +81 -0
  119. package/lib/esm/components/multichannel/multichannel-utils.js.map +1 -0
  120. package/lib/esm/components/multichannel/multichannel.d.ts +1 -0
  121. package/lib/esm/components/multichannel/multichannel.js +57 -0
  122. package/lib/esm/components/multichannel/multichannel.js.map +1 -0
  123. package/lib/esm/components/multichannel/whatsapp/constants.d.ts +11 -0
  124. package/lib/esm/components/multichannel/whatsapp/constants.js +10 -0
  125. package/lib/esm/components/multichannel/whatsapp/constants.js.map +1 -0
  126. package/lib/esm/components/multichannel/whatsapp/markdown-meta.d.ts +1 -0
  127. package/lib/esm/components/multichannel/whatsapp/markdown-meta.js +38 -0
  128. package/lib/esm/components/multichannel/whatsapp/markdown-meta.js.map +1 -0
  129. package/lib/esm/components/pic.d.ts +6 -0
  130. package/lib/esm/components/pic.js +25 -0
  131. package/lib/esm/components/pic.js.map +1 -0
  132. package/lib/esm/components/raw.d.ts +9 -0
  133. package/lib/esm/components/raw.js +39 -0
  134. package/lib/esm/components/raw.js.map +1 -0
  135. package/lib/esm/components/reply.d.ts +10 -0
  136. package/lib/esm/components/reply.js +53 -0
  137. package/lib/esm/components/reply.js.map +1 -0
  138. package/lib/esm/components/share-button.d.ts +1 -0
  139. package/lib/esm/components/share-button.js +9 -0
  140. package/lib/esm/components/share-button.js.map +1 -0
  141. package/lib/esm/components/subtitle.d.ts +6 -0
  142. package/lib/esm/components/subtitle.js +19 -0
  143. package/lib/esm/components/subtitle.js.map +1 -0
  144. package/lib/esm/components/text.d.ts +7 -0
  145. package/lib/esm/components/text.js +40 -0
  146. package/lib/esm/components/text.js.map +1 -0
  147. package/lib/esm/components/title.d.ts +6 -0
  148. package/lib/esm/components/title.js +17 -0
  149. package/lib/esm/components/title.js.map +1 -0
  150. package/lib/esm/components/video.d.ts +9 -0
  151. package/lib/esm/components/video.js +25 -0
  152. package/lib/esm/components/video.js.map +1 -0
  153. package/lib/esm/components/webchat-settings.d.ts +16 -0
  154. package/lib/esm/components/webchat-settings.js +69 -0
  155. package/lib/esm/components/webchat-settings.js.map +1 -0
  156. package/lib/esm/components/whatsapp-button-list.d.ts +20 -0
  157. package/lib/esm/components/whatsapp-button-list.js +47 -0
  158. package/lib/esm/components/whatsapp-button-list.js.map +1 -0
  159. package/lib/esm/components/whatsapp-catalog.d.ts +6 -0
  160. package/lib/esm/components/whatsapp-catalog.js +21 -0
  161. package/lib/esm/components/whatsapp-catalog.js.map +1 -0
  162. package/lib/esm/components/whatsapp-cta-url-button.d.ts +15 -0
  163. package/lib/esm/components/whatsapp-cta-url-button.js +33 -0
  164. package/lib/esm/components/whatsapp-cta-url-button.js.map +1 -0
  165. package/lib/esm/components/whatsapp-media-carousel.d.ts +46 -0
  166. package/lib/esm/components/whatsapp-media-carousel.js +36 -0
  167. package/lib/esm/components/whatsapp-media-carousel.js.map +1 -0
  168. package/lib/esm/components/whatsapp-product-carousel.d.ts +32 -0
  169. package/lib/esm/components/whatsapp-product-carousel.js +30 -0
  170. package/lib/esm/components/whatsapp-product-carousel.js.map +1 -0
  171. package/lib/esm/components/whatsapp-product-list.d.ts +15 -0
  172. package/lib/esm/components/whatsapp-product-list.js +22 -0
  173. package/lib/esm/components/whatsapp-product-list.js.map +1 -0
  174. package/lib/esm/components/whatsapp-product.d.ts +7 -0
  175. package/lib/esm/components/whatsapp-product.js +21 -0
  176. package/lib/esm/components/whatsapp-product.js.map +1 -0
  177. package/lib/esm/components/whatsapp-template.d.ts +1 -0
  178. package/lib/esm/components/whatsapp-template.js +20 -0
  179. package/lib/esm/components/whatsapp-template.js.map +1 -0
  180. package/lib/esm/constants.d.ts +165 -0
  181. package/lib/esm/constants.js +187 -0
  182. package/lib/esm/constants.js.map +1 -0
  183. package/lib/esm/contexts.d.ts +18 -0
  184. package/lib/esm/contexts.js +18 -0
  185. package/lib/esm/contexts.js.map +1 -0
  186. package/lib/esm/dev-app.d.ts +38 -0
  187. package/lib/esm/dev-app.js +81 -0
  188. package/lib/esm/dev-app.js.map +1 -0
  189. package/lib/esm/index-types.d.ts +178 -0
  190. package/lib/esm/index-types.js +12 -0
  191. package/lib/esm/index-types.js.map +1 -0
  192. package/lib/esm/index.d.ts +11 -0
  193. package/lib/esm/index.js +12 -0
  194. package/lib/esm/index.js.map +1 -0
  195. package/lib/esm/message-utils.d.ts +19 -0
  196. package/lib/esm/message-utils.js +41 -0
  197. package/lib/esm/message-utils.js.map +1 -0
  198. package/lib/esm/msg-to-botonic.d.ts +18 -0
  199. package/lib/esm/msg-to-botonic.js +132 -0
  200. package/lib/esm/msg-to-botonic.js.map +1 -0
  201. package/lib/esm/node-app.d.ts +7 -0
  202. package/lib/esm/node-app.js +19 -0
  203. package/lib/esm/node-app.js.map +1 -0
  204. package/lib/esm/react-bot.d.ts +8 -0
  205. package/lib/esm/react-bot.js +32 -0
  206. package/lib/esm/react-bot.js.map +1 -0
  207. package/lib/esm/shared/styles.d.ts +2 -0
  208. package/lib/esm/shared/styles.js +28 -0
  209. package/lib/esm/shared/styles.js.map +1 -0
  210. package/lib/esm/util/dom.d.ts +4 -0
  211. package/lib/esm/util/dom.js +24 -0
  212. package/lib/esm/util/dom.js.map +1 -0
  213. package/lib/esm/util/environment.d.ts +6 -0
  214. package/lib/esm/util/environment.js +61 -0
  215. package/lib/esm/util/environment.js.map +1 -0
  216. package/lib/esm/util/error-boundary.d.ts +7 -0
  217. package/lib/esm/util/error-boundary.js +28 -0
  218. package/lib/esm/util/error-boundary.js.map +1 -0
  219. package/lib/esm/util/functional.d.ts +3 -0
  220. package/lib/esm/util/functional.js +26 -0
  221. package/lib/esm/util/functional.js.map +1 -0
  222. package/lib/esm/util/index.d.ts +9 -0
  223. package/lib/esm/util/index.js +10 -0
  224. package/lib/esm/util/index.js.map +1 -0
  225. package/lib/esm/util/logs.d.ts +2 -0
  226. package/lib/esm/util/logs.js +15 -0
  227. package/lib/esm/util/logs.js.map +1 -0
  228. package/lib/esm/util/objects.d.ts +3 -0
  229. package/lib/esm/util/objects.js +38 -0
  230. package/lib/esm/util/objects.js.map +1 -0
  231. package/lib/esm/util/react.d.ts +12 -0
  232. package/lib/esm/util/react.js +34 -0
  233. package/lib/esm/util/react.js.map +1 -0
  234. package/lib/esm/util/regexs.d.ts +2 -0
  235. package/lib/esm/util/regexs.js +18 -0
  236. package/lib/esm/util/regexs.js.map +1 -0
  237. package/lib/esm/util/strings.d.ts +1 -0
  238. package/lib/esm/util/strings.js +7 -0
  239. package/lib/esm/util/strings.js.map +1 -0
  240. package/lib/esm/util/webchat.d.ts +22 -0
  241. package/lib/esm/util/webchat.js +55 -0
  242. package/lib/esm/util/webchat.js.map +1 -0
  243. package/lib/esm/util/webviews.d.ts +1 -0
  244. package/lib/esm/util/webviews.js +6 -0
  245. package/lib/esm/util/webviews.js.map +1 -0
  246. package/lib/esm/webchat/chat-area/index.d.ts +1 -0
  247. package/lib/esm/webchat/chat-area/index.js +18 -0
  248. package/lib/esm/webchat/chat-area/index.js.map +1 -0
  249. package/lib/esm/webchat/chat-area/styles.d.ts +3 -0
  250. package/lib/esm/webchat/chat-area/styles.js +9 -0
  251. package/lib/esm/webchat/chat-area/styles.js.map +1 -0
  252. package/lib/esm/webchat/components/common.d.ts +1 -0
  253. package/lib/esm/webchat/components/common.js +9 -0
  254. package/lib/esm/webchat/components/common.js.map +1 -0
  255. package/lib/esm/webchat/components/conditional-animation.d.ts +1 -0
  256. package/lib/esm/webchat/components/conditional-animation.js +12 -0
  257. package/lib/esm/webchat/components/conditional-animation.js.map +1 -0
  258. package/lib/esm/webchat/components/opened-persistent-menu.d.ts +6 -0
  259. package/lib/esm/webchat/components/opened-persistent-menu.js +30 -0
  260. package/lib/esm/webchat/components/opened-persistent-menu.js.map +1 -0
  261. package/lib/esm/webchat/constants.d.ts +8 -0
  262. package/lib/esm/webchat/constants.js +10 -0
  263. package/lib/esm/webchat/constants.js.map +1 -0
  264. package/lib/esm/webchat/context/actions.d.ts +29 -0
  265. package/lib/esm/webchat/context/actions.js +32 -0
  266. package/lib/esm/webchat/context/actions.js.map +1 -0
  267. package/lib/esm/webchat/context/index.d.ts +5 -0
  268. package/lib/esm/webchat/context/index.js +81 -0
  269. package/lib/esm/webchat/context/index.js.map +1 -0
  270. package/lib/esm/webchat/context/messages-reducer.d.ts +6 -0
  271. package/lib/esm/webchat/context/messages-reducer.js +85 -0
  272. package/lib/esm/webchat/context/messages-reducer.js.map +1 -0
  273. package/lib/esm/webchat/context/types.d.ts +76 -0
  274. package/lib/esm/webchat/context/types.js +2 -0
  275. package/lib/esm/webchat/context/types.js.map +1 -0
  276. package/lib/esm/webchat/context/use-webchat.d.ts +47 -0
  277. package/lib/esm/webchat/context/use-webchat.js +195 -0
  278. package/lib/esm/webchat/context/use-webchat.js.map +1 -0
  279. package/lib/esm/webchat/context/webchat-reducer.d.ts +6 -0
  280. package/lib/esm/webchat/context/webchat-reducer.js +48 -0
  281. package/lib/esm/webchat/context/webchat-reducer.js.map +1 -0
  282. package/lib/esm/webchat/cover-component/index.d.ts +6 -0
  283. package/lib/esm/webchat/cover-component/index.js +17 -0
  284. package/lib/esm/webchat/cover-component/index.js.map +1 -0
  285. package/lib/esm/webchat/devices/index.d.ts +11 -0
  286. package/lib/esm/webchat/devices/index.js +18 -0
  287. package/lib/esm/webchat/devices/index.js.map +1 -0
  288. package/lib/esm/webchat/header/default-header.d.ts +1 -0
  289. package/lib/esm/webchat/header/default-header.js +21 -0
  290. package/lib/esm/webchat/header/default-header.js.map +1 -0
  291. package/lib/esm/webchat/header/index.d.ts +2 -0
  292. package/lib/esm/webchat/header/index.js +20 -0
  293. package/lib/esm/webchat/header/index.js.map +1 -0
  294. package/lib/esm/webchat/header/styles.d.ts +7 -0
  295. package/lib/esm/webchat/header/styles.js +55 -0
  296. package/lib/esm/webchat/header/styles.js.map +1 -0
  297. package/lib/esm/webchat/hooks/index.d.ts +10 -0
  298. package/lib/esm/webchat/hooks/index.js +11 -0
  299. package/lib/esm/webchat/hooks/index.js.map +1 -0
  300. package/lib/esm/webchat/hooks/use-component-visible.d.ts +8 -0
  301. package/lib/esm/webchat/hooks/use-component-visible.js +20 -0
  302. package/lib/esm/webchat/hooks/use-component-visible.js.map +1 -0
  303. package/lib/esm/webchat/hooks/use-component-will-mount.d.ts +1 -0
  304. package/lib/esm/webchat/hooks/use-component-will-mount.js +5 -0
  305. package/lib/esm/webchat/hooks/use-component-will-mount.js.map +1 -0
  306. package/lib/esm/webchat/hooks/use-device-adapter.d.ts +3 -0
  307. package/lib/esm/webchat/hooks/use-device-adapter.js +42 -0
  308. package/lib/esm/webchat/hooks/use-device-adapter.js.map +1 -0
  309. package/lib/esm/webchat/hooks/use-previous.d.ts +1 -0
  310. package/lib/esm/webchat/hooks/use-previous.js +9 -0
  311. package/lib/esm/webchat/hooks/use-previous.js.map +1 -0
  312. package/lib/esm/webchat/hooks/use-scroll-to-bottom.d.ts +9 -0
  313. package/lib/esm/webchat/hooks/use-scroll-to-bottom.js +19 -0
  314. package/lib/esm/webchat/hooks/use-scroll-to-bottom.js.map +1 -0
  315. package/lib/esm/webchat/hooks/use-scrollbar-controller.d.ts +6 -0
  316. package/lib/esm/webchat/hooks/use-scrollbar-controller.js +136 -0
  317. package/lib/esm/webchat/hooks/use-scrollbar-controller.js.map +1 -0
  318. package/lib/esm/webchat/hooks/use-typing.d.ts +10 -0
  319. package/lib/esm/webchat/hooks/use-typing.js +28 -0
  320. package/lib/esm/webchat/hooks/use-typing.js.map +1 -0
  321. package/lib/esm/webchat/hooks/use-virtual-keyboard-detection.d.ts +3 -0
  322. package/lib/esm/webchat/hooks/use-virtual-keyboard-detection.js +24 -0
  323. package/lib/esm/webchat/hooks/use-virtual-keyboard-detection.js.map +1 -0
  324. package/lib/esm/webchat/hooks/use-webchat-dimensions.d.ts +4 -0
  325. package/lib/esm/webchat/hooks/use-webchat-dimensions.js +36 -0
  326. package/lib/esm/webchat/hooks/use-webchat-dimensions.js.map +1 -0
  327. package/lib/esm/webchat/hooks/use-webchat-resizer.d.ts +4 -0
  328. package/lib/esm/webchat/hooks/use-webchat-resizer.js +30 -0
  329. package/lib/esm/webchat/hooks/use-webchat-resizer.js.map +1 -0
  330. package/lib/esm/webchat/index-types.d.ts +18 -0
  331. package/lib/esm/webchat/index-types.js +2 -0
  332. package/lib/esm/webchat/index-types.js.map +1 -0
  333. package/lib/esm/webchat/index.d.ts +5 -0
  334. package/lib/esm/webchat/index.js +11 -0
  335. package/lib/esm/webchat/index.js.map +1 -0
  336. package/lib/esm/webchat/input-panel/attachment.d.ts +7 -0
  337. package/lib/esm/webchat/input-panel/attachment.js +26 -0
  338. package/lib/esm/webchat/input-panel/attachment.js.map +1 -0
  339. package/lib/esm/webchat/input-panel/emoji-picker.d.ts +6 -0
  340. package/lib/esm/webchat/input-panel/emoji-picker.js +23 -0
  341. package/lib/esm/webchat/input-panel/emoji-picker.js.map +1 -0
  342. package/lib/esm/webchat/input-panel/index.d.ts +12 -0
  343. package/lib/esm/webchat/input-panel/index.js +55 -0
  344. package/lib/esm/webchat/input-panel/index.js.map +1 -0
  345. package/lib/esm/webchat/input-panel/opened-emoji-picker.d.ts +6 -0
  346. package/lib/esm/webchat/input-panel/opened-emoji-picker.js +10 -0
  347. package/lib/esm/webchat/input-panel/opened-emoji-picker.js.map +1 -0
  348. package/lib/esm/webchat/input-panel/persistent-menu.d.ts +6 -0
  349. package/lib/esm/webchat/input-panel/persistent-menu.js +14 -0
  350. package/lib/esm/webchat/input-panel/persistent-menu.js.map +1 -0
  351. package/lib/esm/webchat/input-panel/send-button.d.ts +5 -0
  352. package/lib/esm/webchat/input-panel/send-button.js +14 -0
  353. package/lib/esm/webchat/input-panel/send-button.js.map +1 -0
  354. package/lib/esm/webchat/input-panel/styles.d.ts +3 -0
  355. package/lib/esm/webchat/input-panel/styles.js +27 -0
  356. package/lib/esm/webchat/input-panel/styles.js.map +1 -0
  357. package/lib/esm/webchat/input-panel/textarea.d.ts +11 -0
  358. package/lib/esm/webchat/input-panel/textarea.js +58 -0
  359. package/lib/esm/webchat/input-panel/textarea.js.map +1 -0
  360. package/lib/esm/webchat/message-list/index.d.ts +1 -0
  361. package/lib/esm/webchat/message-list/index.js +107 -0
  362. package/lib/esm/webchat/message-list/index.js.map +1 -0
  363. package/lib/esm/webchat/message-list/intro-message.d.ts +1 -0
  364. package/lib/esm/webchat/message-list/intro-message.js +18 -0
  365. package/lib/esm/webchat/message-list/intro-message.js.map +1 -0
  366. package/lib/esm/webchat/message-list/scroll-button.d.ts +6 -0
  367. package/lib/esm/webchat/message-list/scroll-button.js +12 -0
  368. package/lib/esm/webchat/message-list/scroll-button.js.map +1 -0
  369. package/lib/esm/webchat/message-list/styles.d.ts +5 -0
  370. package/lib/esm/webchat/message-list/styles.js +56 -0
  371. package/lib/esm/webchat/message-list/styles.js.map +1 -0
  372. package/lib/esm/webchat/message-list/unread-messages-banner.d.ts +6 -0
  373. package/lib/esm/webchat/message-list/unread-messages-banner.js +13 -0
  374. package/lib/esm/webchat/message-list/unread-messages-banner.js.map +1 -0
  375. package/lib/esm/webchat/message-list/use-debounce.d.ts +1 -0
  376. package/lib/esm/webchat/message-list/use-debounce.js +14 -0
  377. package/lib/esm/webchat/message-list/use-debounce.js.map +1 -0
  378. package/lib/esm/webchat/message-list/use-notifications.d.ts +7 -0
  379. package/lib/esm/webchat/message-list/use-notifications.js +20 -0
  380. package/lib/esm/webchat/message-list/use-notifications.js.map +1 -0
  381. package/lib/esm/webchat/replies/index.d.ts +1 -0
  382. package/lib/esm/webchat/replies/index.js +28 -0
  383. package/lib/esm/webchat/replies/index.js.map +1 -0
  384. package/lib/esm/webchat/replies/styles.d.ts +8 -0
  385. package/lib/esm/webchat/replies/styles.js +21 -0
  386. package/lib/esm/webchat/replies/styles.js.map +1 -0
  387. package/lib/esm/webchat/session-view.d.ts +1 -0
  388. package/lib/esm/webchat/session-view.js +96 -0
  389. package/lib/esm/webchat/session-view.js.map +1 -0
  390. package/lib/esm/webchat/styles.d.ts +9 -0
  391. package/lib/esm/webchat/styles.js +50 -0
  392. package/lib/esm/webchat/styles.js.map +1 -0
  393. package/lib/esm/webchat/theme/types.d.ts +167 -0
  394. package/lib/esm/webchat/theme/types.js +2 -0
  395. package/lib/esm/webchat/theme/types.js.map +1 -0
  396. package/lib/esm/webchat/tracking.d.ts +7 -0
  397. package/lib/esm/webchat/tracking.js +10 -0
  398. package/lib/esm/webchat/tracking.js.map +1 -0
  399. package/lib/esm/webchat/trigger-button/index.d.ts +2 -0
  400. package/lib/esm/webchat/trigger-button/index.js +28 -0
  401. package/lib/esm/webchat/trigger-button/index.js.map +1 -0
  402. package/lib/esm/webchat/trigger-button/styles.d.ts +3 -0
  403. package/lib/esm/webchat/trigger-button/styles.js +36 -0
  404. package/lib/esm/webchat/trigger-button/styles.js.map +1 -0
  405. package/lib/esm/webchat/typing-indicator/index.d.ts +3 -0
  406. package/lib/esm/webchat/typing-indicator/index.js +8 -0
  407. package/lib/esm/webchat/typing-indicator/index.js.map +1 -0
  408. package/lib/esm/webchat/typing-indicator/styles.d.ts +7 -0
  409. package/lib/esm/webchat/typing-indicator/styles.js +46 -0
  410. package/lib/esm/webchat/typing-indicator/styles.js.map +1 -0
  411. package/lib/esm/webchat/use-storage-state-hook.d.ts +1 -0
  412. package/lib/esm/webchat/use-storage-state-hook.js +38 -0
  413. package/lib/esm/webchat/use-storage-state-hook.js.map +1 -0
  414. package/lib/esm/webchat/utils.d.ts +2 -0
  415. package/lib/esm/webchat/utils.js +8 -0
  416. package/lib/esm/webchat/utils.js.map +1 -0
  417. package/lib/esm/webchat/webchat-dev.d.ts +7 -0
  418. package/lib/esm/webchat/webchat-dev.js +56 -0
  419. package/lib/esm/webchat/webchat-dev.js.map +1 -0
  420. package/lib/esm/webchat/webchat.d.ts +4 -0
  421. package/lib/esm/webchat/webchat.js +517 -0
  422. package/lib/esm/webchat/webchat.js.map +1 -0
  423. package/lib/esm/webchat/webview/header.d.ts +1 -0
  424. package/lib/esm/webchat/webview/header.js +12 -0
  425. package/lib/esm/webchat/webview/header.js.map +1 -0
  426. package/lib/esm/webchat/webview/index.d.ts +1 -0
  427. package/lib/esm/webchat/webview/index.js +45 -0
  428. package/lib/esm/webchat/webview/index.js.map +1 -0
  429. package/lib/esm/webchat/webview/styles.d.ts +7 -0
  430. package/lib/esm/webchat/webview/styles.js +42 -0
  431. package/lib/esm/webchat/webview/styles.js.map +1 -0
  432. package/lib/esm/webchat-app.d.ts +78 -0
  433. package/lib/esm/webchat-app.js +363 -0
  434. package/lib/esm/webchat-app.js.map +1 -0
  435. package/lib/esm/webview-app.d.ts +7 -0
  436. package/lib/esm/webview-app.js +105 -0
  437. package/lib/esm/webview-app.js.map +1 -0
  438. package/package.json +2 -2
  439. package/src/webchat/context/index.tsx +4 -1
  440. package/src/webchat/context/types.ts +3 -1
  441. package/src/webchat/context/use-webchat.ts +3 -3
  442. package/src/webchat/hooks/use-scrollbar-controller.ts +20 -15
  443. package/src/webchat/hooks/use-webchat-dimensions.ts +3 -3
  444. package/src/webchat/hooks/use-webchat-resizer.ts +5 -5
  445. package/src/webchat/webchat.tsx +10 -29
  446. package/src/webchat/webview/header.tsx +22 -0
  447. package/src/webchat/webview/index.tsx +80 -0
  448. package/src/webchat/webview/styles.ts +48 -0
  449. package/lib/cjs/webchat/webview.d.ts +0 -2
  450. package/lib/cjs/webchat/webview.js +0 -76
  451. package/lib/cjs/webchat/webview.js.map +0 -1
  452. package/src/webchat/webview.jsx +0 -106
@@ -0,0 +1,517 @@
1
+ import { __awaiter } from "tslib";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { BotonicAction, INPUT, isMobile, params2queryString, } from '@botonic/core';
4
+ import merge from 'lodash.merge';
5
+ import { forwardRef, useEffect, useImperativeHandle, useRef, useState, } from 'react';
6
+ import { StyleSheetManager } from 'styled-components';
7
+ import { v7 as uuidv7 } from 'uuid';
8
+ import { Audio, Document, Handoff, Image, normalizeWebchatSettings, Text, Video, } from '../components';
9
+ import { COLORS, MAX_ALLOWED_SIZE_MB, ROLES, WEBCHAT } from '../constants';
10
+ import { SENDERS } from '../index-types';
11
+ import { getMediaType, isAllowedSize, isAudio, isDocument, isImage, isMedia, isText, isVideo, readDataURL, } from '../message-utils';
12
+ import { msgToBotonic } from '../msg-to-botonic';
13
+ import { isDev } from '../util/environment';
14
+ import { deserializeRegex, stringifyWithRegexs } from '../util/regexs';
15
+ import { _getThemeProperty, getServerErrorMessage, initSession, shouldKeepSessionOnReload, } from '../util/webchat';
16
+ import { ChatArea } from './chat-area';
17
+ import { OpenedPersistentMenu } from './components/opened-persistent-menu';
18
+ import { BotonicContainerId } from './constants';
19
+ import { useWebchat, WebchatContext } from './context';
20
+ import { CoverComponent } from './cover-component';
21
+ import { WebchatHeader } from './header';
22
+ import { useComponentWillMount, usePrevious, useScrollToBottom, useTyping, } from './hooks';
23
+ import { InputPanel } from './input-panel';
24
+ import { DarkBackgroundMenu, ErrorMessage, ErrorMessageContainer, StyledWebchat, } from './styles';
25
+ import { TriggerButton } from './trigger-button';
26
+ import { useStorageState } from './use-storage-state-hook';
27
+ import { getParsedAction } from './utils';
28
+ import { WebviewContainer } from './webview/index';
29
+ // eslint-disable-next-line complexity, react/display-name
30
+ const Webchat = forwardRef((props, ref) => {
31
+ var _a;
32
+ const { addMessage, addMessageComponent, clearMessages, doRenderCustomComponent, resetUnreadMessages, setCurrentAttachment, setError, setIsInputFocused, setLastMessageVisible, setOnline, toggleCoverComponent, toggleEmojiPicker, togglePersistentMenu, toggleWebchat, updateDevSettings, updateHandoff, updateLastMessageDate, updateLastRoutePath, updateLatestInput, updateMessage, updateReplies, updateSession, updateTheme, updateTyping, updateWebview, removeWebview, removeReplies, webchatState, webchatContainerRef, chatAreaRef, inputPanelRef, headerRef, repliesRef, scrollableMessagesListRef,
33
+ // eslint-disable-next-line react-hooks/rules-of-hooks
34
+ } = props.webchatHooks || useWebchat();
35
+ const firstUpdate = useRef(true);
36
+ const isOnline = () => webchatState.online;
37
+ const currentDateString = () => new Date().toISOString();
38
+ const theme = merge(webchatState.theme, props.theme);
39
+ const { initialSession, initialDevSettings, onStateChange } = props;
40
+ const getThemeProperty = _getThemeProperty(theme);
41
+ const [customComponent, setCustomComponent] = useState(null);
42
+ const storage = props.storage;
43
+ const storageKey = typeof props.storageKey === 'function'
44
+ ? props.storageKey()
45
+ : props.storageKey;
46
+ const [botonicState, saveState] = useStorageState(storage, storageKey);
47
+ const host = props.host || document.body;
48
+ const { scrollToBottom } = useScrollToBottom({ host });
49
+ const saveWebchatState = (webchatState) => {
50
+ storage &&
51
+ saveState(JSON.parse(stringifyWithRegexs({
52
+ messages: webchatState.messagesJSON,
53
+ session: webchatState.session,
54
+ lastRoutePath: webchatState.lastRoutePath,
55
+ devSettings: webchatState.devSettings,
56
+ lastMessageUpdate: webchatState.lastMessageUpdate,
57
+ themeUpdates: webchatState.themeUpdates,
58
+ })));
59
+ };
60
+ const handleAttachment = (event) => {
61
+ if (!isAllowedSize(event.target.files[0].size)) {
62
+ throw new Error(`The file is too large. A maximum of ${MAX_ALLOWED_SIZE_MB}MB is allowed.`);
63
+ }
64
+ // TODO: Attach more files?
65
+ setCurrentAttachment(event.target.files[0]);
66
+ };
67
+ useEffect(() => {
68
+ if (webchatState.currentAttachment) {
69
+ sendAttachment(webchatState.currentAttachment);
70
+ }
71
+ }, [webchatState.currentAttachment]);
72
+ const sendUserInput = (input) => __awaiter(void 0, void 0, void 0, function* () {
73
+ if (props.onUserInput) {
74
+ resetUnreadMessages();
75
+ scrollToBottom();
76
+ props.onUserInput({
77
+ user: webchatState.session.user,
78
+ // TODO: Review if this input.sentBy exists in the frontend
79
+ input: input,
80
+ //@ts-ignore
81
+ session: webchatState.session,
82
+ // TODO: Review why we were passing lastRoutePath, is only for devMode?
83
+ lastRoutePath: webchatState.lastRoutePath,
84
+ });
85
+ }
86
+ });
87
+ // Load styles stored in window._botonicInsertStyles by Webpack
88
+ useComponentWillMount(() => {
89
+ if (window._botonicInsertStyles && window._botonicInsertStyles.length) {
90
+ for (const botonicStyle of window._botonicInsertStyles) {
91
+ // Injecting styles at head is needed even if we use shadowDOM
92
+ // as some dependencies like simplebar rely on creating ephemeral elements
93
+ // on document.body and assume styles will be available globally
94
+ document.head.appendChild(botonicStyle);
95
+ // injecting styles in host node too so that shadowDOM works
96
+ if (props.shadowDOM)
97
+ host.appendChild(botonicStyle.cloneNode(true));
98
+ }
99
+ delete window._botonicInsertStyles;
100
+ }
101
+ if (props.shadowDOM) {
102
+ // emoji-picker-react injects styles in head, so we need to
103
+ // re-inject them in our host node to make it work with shadowDOM
104
+ for (const style of document.querySelectorAll('style')) {
105
+ if (style.textContent &&
106
+ style.textContent.includes('emoji-picker-react'))
107
+ host.appendChild(style.cloneNode(true));
108
+ }
109
+ }
110
+ });
111
+ // Load initial state from storage
112
+ useEffect(() => {
113
+ let { messages, session, lastRoutePath, devSettings, lastMessageUpdate, themeUpdates, } = botonicState || {};
114
+ session = initSession(session);
115
+ updateSession(session);
116
+ if (shouldKeepSessionOnReload({ initialDevSettings, devSettings })) {
117
+ if (messages) {
118
+ messages.forEach(message => {
119
+ var _a, _b, _c;
120
+ addMessage(message);
121
+ const newMessageComponent = msgToBotonic(Object.assign(Object.assign({}, message), { delay: 0, typing: 0 }), ((_b = (_a = props.theme) === null || _a === void 0 ? void 0 : _a.message) === null || _b === void 0 ? void 0 : _b.customTypes) || ((_c = props.theme) === null || _c === void 0 ? void 0 : _c.customMessageTypes));
122
+ //@ts-ignore
123
+ if (newMessageComponent)
124
+ addMessageComponent(newMessageComponent);
125
+ });
126
+ }
127
+ if (initialSession)
128
+ updateSession(merge(initialSession, session));
129
+ if (lastRoutePath)
130
+ updateLastRoutePath(lastRoutePath);
131
+ }
132
+ else
133
+ updateSession(merge(initialSession, session));
134
+ if (devSettings)
135
+ updateDevSettings(devSettings);
136
+ else if (initialDevSettings)
137
+ updateDevSettings(initialDevSettings);
138
+ if (lastMessageUpdate) {
139
+ updateLastMessageDate(lastMessageUpdate);
140
+ }
141
+ if (themeUpdates !== undefined) {
142
+ updateTheme(merge(props.theme, themeUpdates), themeUpdates);
143
+ }
144
+ if (props.onInit) {
145
+ setTimeout(() => props.onInit && props.onInit(), 100);
146
+ }
147
+ }, []);
148
+ useEffect(() => {
149
+ if (!webchatState.isWebchatOpen) {
150
+ if (webchatState.isLastMessageVisible) {
151
+ resetUnreadMessages();
152
+ }
153
+ return;
154
+ }
155
+ }, [webchatState.isWebchatOpen]);
156
+ useEffect(() => {
157
+ const { messagesJSON, session } = webchatState;
158
+ if (onStateChange && typeof onStateChange === 'function' && session.user) {
159
+ onStateChange({ messagesJSON, user: session.user });
160
+ }
161
+ saveWebchatState(webchatState);
162
+ }, [
163
+ webchatState.messagesJSON,
164
+ webchatState.session,
165
+ webchatState.lastRoutePath,
166
+ webchatState.devSettings,
167
+ webchatState.lastMessageUpdate,
168
+ ]);
169
+ useEffect(() => {
170
+ if (!webchatState.online) {
171
+ setError({
172
+ message: getServerErrorMessage(props.server),
173
+ });
174
+ }
175
+ else {
176
+ if (!firstUpdate.current) {
177
+ setError(undefined);
178
+ }
179
+ }
180
+ }, [webchatState.online]);
181
+ useTyping({ webchatState, updateTyping, updateMessage, host });
182
+ useEffect(() => {
183
+ updateTheme(merge(props.theme, theme, webchatState.themeUpdates));
184
+ }, [props.theme, webchatState.themeUpdates]);
185
+ const openWebview = (webviewComponent, params) => {
186
+ updateWebview(webviewComponent, params);
187
+ };
188
+ const textareaRef = useRef();
189
+ const closeWebview = (options) => __awaiter(void 0, void 0, void 0, function* () {
190
+ var _b;
191
+ removeWebview();
192
+ if (userInputEnabled) {
193
+ (_b = textareaRef.current) === null || _b === void 0 ? void 0 : _b.focus();
194
+ }
195
+ if (options === null || options === void 0 ? void 0 : options.payload) {
196
+ yield sendPayload(options.payload);
197
+ }
198
+ else if (options === null || options === void 0 ? void 0 : options.path) {
199
+ const params = options.params ? params2queryString(options.params) : '';
200
+ yield sendPayload(`__PATH_PAYLOAD__${options.path}?${params}`);
201
+ }
202
+ });
203
+ const persistentMenuOptions = getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.persistentMenu, props.persistentMenu);
204
+ const darkBackgroundMenu = getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.darkBackgroundMenu);
205
+ const getBlockInputs = (rule, inputData) => {
206
+ const processedInput = rule.preprocess
207
+ ? rule.preprocess(inputData)
208
+ : inputData;
209
+ return rule.match.some(regex => {
210
+ if (typeof regex === 'string')
211
+ regex = deserializeRegex(regex);
212
+ return regex.test(processedInput);
213
+ });
214
+ };
215
+ const checkBlockInput = input => {
216
+ // if is a text we check if it is a serialized RE
217
+ const blockInputs = getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.blockInputs, props.blockInputs);
218
+ if (!Array.isArray(blockInputs))
219
+ return false;
220
+ for (const rule of blockInputs) {
221
+ if (getBlockInputs(rule, input.data)) {
222
+ addMessageComponent(_jsx(Text
223
+ // Is necessary to add the id of the input
224
+ // to keep the input.id generated in the frontend as id of the message
225
+ // @ts-ignore
226
+ , Object.assign({
227
+ // Is necessary to add the id of the input
228
+ // to keep the input.id generated in the frontend as id of the message
229
+ // @ts-ignore
230
+ id: input.id, sentBy: SENDERS.user, blob: false, style: {
231
+ backgroundColor: COLORS.SCORPION_GRAY,
232
+ borderColor: COLORS.SCORPION_GRAY,
233
+ padding: '8px 12px',
234
+ } }, { children: rule.message })));
235
+ removeReplies();
236
+ return true;
237
+ }
238
+ }
239
+ return false;
240
+ };
241
+ const closeMenu = () => {
242
+ togglePersistentMenu(false);
243
+ };
244
+ const persistentMenu = () => {
245
+ return (_jsx(OpenedPersistentMenu, { onClick: closeMenu, options: persistentMenuOptions, borderRadius: webchatState.theme.style.borderRadius || '10px' }));
246
+ };
247
+ const getCoverComponent = () => {
248
+ return getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.coverComponent, props.coverComponent &&
249
+ (props.coverComponent.component || props.coverComponent));
250
+ };
251
+ const coverComponent = getCoverComponent();
252
+ const coverComponentProps = (_a = props.coverComponent) === null || _a === void 0 ? void 0 : _a.props;
253
+ useEffect(() => {
254
+ if (!coverComponent)
255
+ return;
256
+ if (!botonicState ||
257
+ (botonicState.messages && botonicState.messages.length === 0))
258
+ toggleCoverComponent(true);
259
+ }, []);
260
+ const messageComponentFromInput = input => {
261
+ let messageComponent = null;
262
+ if (isText(input)) {
263
+ messageComponent = (_jsx(Text
264
+ // Is necessary to add the id of the input
265
+ // to keep the input.id generated in the frontend as id of the message
266
+ // @ts-ignore
267
+ , Object.assign({
268
+ // Is necessary to add the id of the input
269
+ // to keep the input.id generated in the frontend as id of the message
270
+ // @ts-ignore
271
+ id: input.id,
272
+ // Is necessary to add the payload of the input when user clicks a button
273
+ // @ts-ignore
274
+ payload: input.payload, sentBy: SENDERS.user }, { children: input.data })));
275
+ }
276
+ else if (isMedia(input)) {
277
+ const temporaryDisplayUrl = URL.createObjectURL(input.data);
278
+ // TODO: We sould use URL.revokeObjectURL(temporaryDisplayUrl) when the component is unmounted
279
+ // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL_static#memory_management
280
+ const mediaProps = {
281
+ id: input.id,
282
+ sentBy: SENDERS.user,
283
+ src: temporaryDisplayUrl,
284
+ };
285
+ if (isImage(input)) {
286
+ mediaProps.input = input;
287
+ messageComponent = _jsx(Image, Object.assign({}, mediaProps));
288
+ }
289
+ else if (isAudio(input))
290
+ messageComponent = _jsx(Audio, Object.assign({}, mediaProps));
291
+ else if (isVideo(input))
292
+ messageComponent = _jsx(Video, Object.assign({}, mediaProps));
293
+ else if (isDocument(input))
294
+ messageComponent = _jsx(Document, Object.assign({}, mediaProps));
295
+ }
296
+ return messageComponent;
297
+ };
298
+ const sendInput = (input) => __awaiter(void 0, void 0, void 0, function* () {
299
+ if (!input || Object.keys(input).length == 0)
300
+ return;
301
+ if (isText(input) && (!input.data || !input.data.trim()))
302
+ return; // in case trim() doesn't work in a browser we can use !/\S/.test(input.data)
303
+ if (isText(input) && checkBlockInput(input))
304
+ return;
305
+ if (!input.id)
306
+ input.id = uuidv7();
307
+ const messageComponent = messageComponentFromInput(input);
308
+ if (messageComponent)
309
+ addMessageComponent(messageComponent);
310
+ if (isMedia(input))
311
+ input.data = yield readDataURL(input.data);
312
+ sendUserInput(input);
313
+ updateLatestInput(input);
314
+ isOnline() && updateLastMessageDate(currentDateString());
315
+ removeReplies();
316
+ togglePersistentMenu(false);
317
+ toggleEmojiPicker(false);
318
+ });
319
+ /* This is the public API this component exposes to its parents
320
+ https://stackoverflow.com/questions/37949981/call-child-method-from-parent
321
+ */
322
+ const updateSessionWithUser = (userToUpdate) => updateSession(merge(webchatState.session, { user: userToUpdate }));
323
+ useImperativeHandle(ref, () => ({
324
+ addBotResponse: ({ response, session, lastRoutePath }) => {
325
+ updateTyping(false);
326
+ const isUnread = !webchatState.isLastMessageVisible || webchatState.numUnreadMessages > 0;
327
+ if (Array.isArray(response)) {
328
+ response.forEach(r => {
329
+ addMessageComponent(Object.assign(Object.assign({}, r), { props: Object.assign(Object.assign({}, r.props), { isUnread }) }));
330
+ });
331
+ }
332
+ else if (response) {
333
+ addMessageComponent(Object.assign(Object.assign({}, response), { props: Object.assign(Object.assign({}, response.props), { isUnread }) }));
334
+ }
335
+ if (session) {
336
+ updateSession(merge(session, { user: webchatState.session.user }));
337
+ const action = session._botonic_action || '';
338
+ const handoff = action.startsWith(BotonicAction.CreateCase);
339
+ if (handoff && isDev)
340
+ addMessageComponent(_jsx(Handoff, {}));
341
+ updateHandoff(handoff);
342
+ }
343
+ if (lastRoutePath)
344
+ updateLastRoutePath(lastRoutePath);
345
+ updateLastMessageDate(currentDateString());
346
+ },
347
+ setTyping: (typing) => updateTyping(typing),
348
+ addUserMessage: message => sendInput(message),
349
+ updateUser: updateSessionWithUser,
350
+ openWebchat: () => toggleWebchat(true),
351
+ closeWebchat: () => toggleWebchat(false),
352
+ toggleWebchat: () => toggleWebchat(!webchatState.isWebchatOpen),
353
+ openCoverComponent: () => toggleCoverComponent(true),
354
+ closeCoverComponent: () => toggleCoverComponent(false),
355
+ renderCustomComponent: _customComponent => {
356
+ setCustomComponent(_customComponent);
357
+ doRenderCustomComponent(true);
358
+ },
359
+ unmountCustomComponent: () => doRenderCustomComponent(false),
360
+ toggleCoverComponent: () => toggleCoverComponent(!webchatState.isCoverComponentOpen),
361
+ setOnline,
362
+ getMessages: () => webchatState.messagesJSON,
363
+ isOnline,
364
+ clearMessages: () => {
365
+ clearMessages();
366
+ removeReplies();
367
+ },
368
+ getLastMessageUpdate: () => webchatState.lastMessageUpdate,
369
+ updateMessageInfo: (msgId, messageInfo) => {
370
+ const messageToUpdate = webchatState.messagesJSON.filter(m => m.id === msgId)[0];
371
+ const updatedMsg = merge(messageToUpdate, messageInfo);
372
+ if (updatedMsg.ack === 1)
373
+ delete updatedMsg.unsentInput;
374
+ updateMessage(updatedMsg);
375
+ },
376
+ updateWebchatSettings: (settings) => {
377
+ if (settings.user) {
378
+ updateSessionWithUser(settings.user);
379
+ }
380
+ const themeUpdates = normalizeWebchatSettings(settings);
381
+ updateTheme(merge(webchatState.theme, themeUpdates), themeUpdates);
382
+ updateTyping(false);
383
+ },
384
+ closeWebview: (options) => __awaiter(void 0, void 0, void 0, function* () { return closeWebview(options); }),
385
+ }));
386
+ const resolveCase = () => {
387
+ updateHandoff(false);
388
+ updateSession(Object.assign(Object.assign({}, webchatState.session), { _botonic_action: undefined }));
389
+ };
390
+ const prevSession = usePrevious(webchatState.session);
391
+ useEffect(() => {
392
+ // Resume conversation after handoff
393
+ if ((prevSession === null || prevSession === void 0 ? void 0 : prevSession._botonic_action) && !webchatState.session._botonic_action) {
394
+ const action = getParsedAction(prevSession._botonic_action);
395
+ if (action === null || action === void 0 ? void 0 : action.on_finish)
396
+ sendPayload(action.on_finish);
397
+ }
398
+ }, [webchatState.session._botonic_action]);
399
+ const sendText = (text, payload) => __awaiter(void 0, void 0, void 0, function* () {
400
+ if (!text)
401
+ return;
402
+ const input = { type: INPUT.TEXT, data: text, payload };
403
+ yield sendInput(input);
404
+ });
405
+ const sendPayload = (payload) => __awaiter(void 0, void 0, void 0, function* () {
406
+ if (!payload)
407
+ return;
408
+ const input = { type: INPUT.POSTBACK, payload };
409
+ yield sendInput(input);
410
+ });
411
+ const sendAttachment = (attachment) => __awaiter(void 0, void 0, void 0, function* () {
412
+ if (attachment) {
413
+ const attachmentType = getMediaType(attachment.type);
414
+ if (!attachmentType)
415
+ return;
416
+ const input = {
417
+ type: attachmentType,
418
+ data: attachment,
419
+ };
420
+ yield sendInput(input);
421
+ setCurrentAttachment();
422
+ }
423
+ });
424
+ useEffect(() => {
425
+ if (firstUpdate.current) {
426
+ firstUpdate.current = false;
427
+ return;
428
+ }
429
+ if (webchatState.isWebchatOpen && props.onOpen)
430
+ props.onOpen();
431
+ if (!webchatState.isWebchatOpen && props.onClose && !firstUpdate.current) {
432
+ props.onClose();
433
+ toggleEmojiPicker(false);
434
+ togglePersistentMenu(false);
435
+ }
436
+ }, [webchatState.isWebchatOpen]);
437
+ const isUserInputEnabled = () => {
438
+ const isUserInputEnabled = getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.enableUserInput, props.enableUserInput !== undefined ? props.enableUserInput : true);
439
+ return isUserInputEnabled && !webchatState.isCoverComponentOpen;
440
+ };
441
+ const userInputEnabled = isUserInputEnabled();
442
+ // TODO: Create a default theme that include mobileStyle
443
+ let mobileStyle = {};
444
+ if (isMobile(getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.mobileBreakpoint))) {
445
+ mobileStyle = getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.mobileStyle) || {
446
+ width: '100%',
447
+ height: '100%',
448
+ right: 0,
449
+ bottom: 0,
450
+ borderRadius: 0,
451
+ };
452
+ }
453
+ useEffect(() => {
454
+ // Prod mode
455
+ saveWebchatState(webchatState);
456
+ }, [webchatState.themeUpdates]);
457
+ // Only needed for dev/serve mode
458
+ const updateWebchatDevSettings = settings => {
459
+ // eslint-disable-next-line react-hooks/rules-of-hooks
460
+ useEffect(() => {
461
+ const themeUpdates = normalizeWebchatSettings(settings);
462
+ updateTheme(merge(webchatState.theme, themeUpdates), themeUpdates);
463
+ }, [webchatState.messagesJSON]);
464
+ };
465
+ const DarkenBackground = ({ component }) => {
466
+ return (_jsxs("div", { children: [darkBackgroundMenu && (_jsx(DarkBackgroundMenu, { style: {
467
+ borderRadius: webchatState.theme.style.borderRadius,
468
+ } })), component] }));
469
+ };
470
+ const _renderCustomComponent = () => {
471
+ if (!customComponent)
472
+ return _jsx(_Fragment, {});
473
+ else
474
+ return customComponent;
475
+ };
476
+ const WebchatComponent = (_jsxs(WebchatContext.Provider, Object.assign({ value: {
477
+ addMessage,
478
+ getThemeProperty,
479
+ closeWebview,
480
+ openWebview,
481
+ resolveCase,
482
+ resetUnreadMessages,
483
+ setIsInputFocused,
484
+ setLastMessageVisible,
485
+ sendAttachment,
486
+ sendInput,
487
+ sendPayload,
488
+ sendText,
489
+ toggleWebchat,
490
+ toggleEmojiPicker,
491
+ togglePersistentMenu,
492
+ toggleCoverComponent,
493
+ updateLatestInput,
494
+ updateMessage,
495
+ updateReplies,
496
+ updateUser: updateSessionWithUser,
497
+ updateWebchatDevSettings: updateWebchatDevSettings,
498
+ trackEvent: props.onTrackEvent,
499
+ webchatState,
500
+ // TODO: Review if need theme inside Context, already exist inside webchatState
501
+ theme,
502
+ webchatContainerRef,
503
+ chatAreaRef,
504
+ inputPanelRef,
505
+ headerRef,
506
+ repliesRef,
507
+ scrollableMessagesListRef,
508
+ } }, { children: [!webchatState.isWebchatOpen && _jsx(TriggerButton, {}), webchatState.isWebchatOpen && (_jsxs(StyledWebchat, Object.assign({ id: BotonicContainerId.Webchat, ref: webchatContainerRef,
509
+ // TODO: Distinguish between multiple instances of webchat, e.g. `${uniqueId}-botonic-webchat`
510
+ role: ROLES.WEBCHAT, width: webchatState.width, height: webchatState.height, style: Object.assign(Object.assign({}, webchatState.theme.style), mobileStyle) }, { children: [_jsx(WebchatHeader, { ref: headerRef }), webchatState.isCoverComponentOpen ? (_jsx(CoverComponent, { component: coverComponent, componentProps: coverComponentProps })) : (_jsxs(_Fragment, { children: [webchatState.error.message && (_jsx(ErrorMessageContainer, { children: _jsx(ErrorMessage, { children: webchatState.error.message }) })), _jsx(ChatArea, {}), webchatState.isPersistentMenuOpen && (_jsx(DarkenBackground, { component: persistentMenu() })), !webchatState.handoff && userInputEnabled && (_jsx(InputPanel, { persistentMenu: props.persistentMenu, enableEmojiPicker: props.enableEmojiPicker, enableAttachments: props.enableAttachments, handleAttachment: handleAttachment, textareaRef: textareaRef, host: host, onUserInput: props.onUserInput })), webchatState.webview && _jsx(WebviewContainer, {}), webchatState.isCustomComponentRendered &&
511
+ customComponent &&
512
+ _renderCustomComponent()] }))] })))] })));
513
+ return props.shadowDOM ? (_jsx(StyleSheetManager, Object.assign({ target: host }, { children: WebchatComponent }))) : (WebchatComponent);
514
+ });
515
+ Webchat.displayName = 'Webchat';
516
+ export { Webchat };
517
+ //# sourceMappingURL=webchat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webchat.js","sourceRoot":"","sources":["../../../src/webchat/webchat.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const WebviewHeader: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,12 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useContext } from 'react';
3
+ import { ROLES, WEBCHAT } from '../../constants';
4
+ import { WebviewRequestContext } from '../../contexts';
5
+ import { WebchatContext } from '../context';
6
+ import { StyledCloseHeader, StyledWebviewHeader } from './styles';
7
+ export const WebviewHeader = () => {
8
+ const { closeWebview } = useContext(WebviewRequestContext);
9
+ const { getThemeProperty } = useContext(WebchatContext);
10
+ return (_jsx(StyledWebviewHeader, Object.assign({ role: ROLES.WEBVIEW_HEADER, style: Object.assign({}, getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.webviewHeaderStyle)) }, { children: _jsx(StyledCloseHeader, Object.assign({ onClick: () => closeWebview() }, { children: "\u2715" })) })));
11
+ };
12
+ //# sourceMappingURL=header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header.js","sourceRoot":"","sources":["../../../../src/webchat/webview/header.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAEzC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAEjE,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,EAAE;IAChC,MAAM,EAAE,YAAY,EAAE,GAAG,UAAU,CAAC,qBAAqB,CAAC,CAAA;IAC1D,MAAM,EAAE,gBAAgB,EAAE,GAAG,UAAU,CAAC,cAAc,CAAC,CAAA;IAEvD,OAAO,CACL,KAAC,mBAAmB,kBAClB,IAAI,EAAE,KAAK,CAAC,cAAc,EAC1B,KAAK,oBACA,gBAAgB,CAAC,OAAO,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,iBAGnE,KAAC,iBAAiB,kBAAC,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,EAAE,4BAAuB,IACnD,CACvB,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export declare const WebviewContainer: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,45 @@
1
+ import { __awaiter } from "tslib";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { isMobile } from '@botonic/core';
4
+ import { useContext, useEffect } from 'react';
5
+ import { ROLES, WEBCHAT } from '../../constants';
6
+ import { WebviewRequestContext } from '../../contexts';
7
+ import { WebchatContext } from '../context';
8
+ import { WebviewHeader } from './header';
9
+ import { StyledFrame, StyledFrameAsDiv, StyledWebview, StyledWebviewContent, } from './styles';
10
+ export const WebviewContainer = () => {
11
+ const { closeWebview, getThemeProperty, webchatState } = useContext(WebchatContext);
12
+ const webviewRequestContext = {
13
+ closeWebview: (options) => __awaiter(void 0, void 0, void 0, function* () { return yield closeWebview(options); }),
14
+ params: webchatState.webviewParams || {},
15
+ session: webchatState.session || {},
16
+ };
17
+ // TODO: Remove this code and use theme or webchatState.theme from the context,
18
+ // this code is duplicated from webchat.tsx
19
+ let mobileStyle = {};
20
+ if (isMobile(getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.mobileBreakpoint))) {
21
+ mobileStyle = getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.mobileStyle) || {
22
+ width: '100%',
23
+ height: '100%',
24
+ right: 0,
25
+ bottom: 0,
26
+ borderRadius: 0,
27
+ };
28
+ }
29
+ const Webview = webchatState.webview;
30
+ const close = (e) => __awaiter(void 0, void 0, void 0, function* () {
31
+ if (e.data === 'botonicCloseWebview') {
32
+ console.log('Received close message from webview');
33
+ yield closeWebview();
34
+ }
35
+ });
36
+ useEffect(() => {
37
+ window.addEventListener('message', close, false);
38
+ return () => window.removeEventListener('message', close, false);
39
+ }, []);
40
+ // TODO: Review how to split the logic of rendering a webview in local development and production
41
+ // In local development, Webview is a component. In production it is the URL of the webview
42
+ const isUrlToWebview = typeof Webview === 'string';
43
+ return (_jsxs(StyledWebview, Object.assign({ role: ROLES.WEBVIEW, style: Object.assign(Object.assign({}, getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.webviewStyle)), mobileStyle) }, { children: [_jsx(WebviewHeader, {}), _jsx(StyledWebviewContent, { children: isUrlToWebview ? (_jsx(StyledFrame, { src: Webview })) : (_jsx(WebviewRequestContext.Provider, Object.assign({ value: webviewRequestContext }, { children: _jsx(StyledFrameAsDiv, { children: _jsx(Webview, {}) }) }))) })] })));
44
+ };
45
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/webchat/webview/index.tsx"],"names":[],"mappings":";;AAAA,OAAO,EAAE,QAAQ,EAA0B,MAAM,eAAe,CAAA;AAChE,OAAc,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEpD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAuB,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,oBAAoB,GACrB,MAAM,UAAU,CAAA;AAEjB,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,EAAE;IACnC,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,GACpD,UAAU,CAAC,cAAc,CAAC,CAAA;IAE5B,MAAM,qBAAqB,GAAG;QAC5B,YAAY,EAAE,CAAO,OAA6B,EAAE,EAAE,kDACpD,OAAA,MAAM,YAAY,CAAC,OAAO,CAAC,CAAA,GAAA;QAC7B,MAAM,EAAE,YAAY,CAAC,aAAa,IAAK,EAA0B;QACjE,OAAO,EAAE,YAAY,CAAC,OAAO,IAAK,EAA2B;KAC9D,CAAA;IAED,+EAA+E;IAC/E,2CAA2C;IAC3C,IAAI,WAAW,GAAG,EAAE,CAAA;IACpB,IAAI,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,EAAE;QAC1E,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI;YACvE,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;YACT,YAAY,EAAE,CAAC;SAChB,CAAA;KACF;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,OAAuC,CAAA;IAEpE,MAAM,KAAK,GAAG,CAAO,CAAM,EAAE,EAAE;QAC7B,IAAI,CAAC,CAAC,IAAI,KAAK,qBAAqB,EAAE;YACpC,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAA;YAClD,MAAM,YAAY,EAAE,CAAA;SACrB;IACH,CAAC,CAAA,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;QAEhD,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;IAClE,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,iGAAiG;IACjG,2FAA2F;IAC3F,MAAM,cAAc,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAA;IAElD,OAAO,CACL,MAAC,aAAa,kBACZ,IAAI,EAAE,KAAK,CAAC,OAAO,EACnB,KAAK,kCACA,gBAAgB,CAAC,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,GACxD,WAAW,kBAGhB,KAAC,aAAa,KAAG,EACjB,KAAC,oBAAoB,cAClB,cAAc,CAAC,CAAC,CAAC,CAChB,KAAC,WAAW,IAAC,GAAG,EAAE,OAAO,GAAI,CAC9B,CAAC,CAAC,CAAC,CACF,KAAC,qBAAqB,CAAC,QAAQ,kBAAC,KAAK,EAAE,qBAAqB,gBAC1D,KAAC,gBAAgB,cACf,KAAC,OAAO,KAAG,GACM,IACY,CAClC,GACoB,KACT,CACjB,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,7 @@
1
+ export declare const StyledWebview: import("styled-components").StyledComponent<"div", any, {}, never>;
2
+ export declare const StyledWebviewHeader: import("styled-components").StyledComponent<"div", any, {}, never>;
3
+ export declare const StyledCloseHeader: import("styled-components").StyledComponent<"div", any, {}, never>;
4
+ export declare const StyledWebviewContent: import("styled-components").StyledComponent<"div", any, {}, never>;
5
+ export declare const FrameStyles = "\n border-style: none;\n width: 100%;\n height: 100%;\n";
6
+ export declare const StyledFrame: import("styled-components").StyledComponent<"iframe", any, {}, never>;
7
+ export declare const StyledFrameAsDiv: import("styled-components").StyledComponent<"div", any, {}, never>;