@botonic/react 0.31.0-alpha.1 → 0.31.0-alpha.3

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 (172) hide show
  1. package/lib/cjs/components/element.js +6 -6
  2. package/lib/cjs/components/element.js.map +1 -1
  3. package/lib/cjs/components/index-types.d.ts +2 -0
  4. package/lib/cjs/components/multichannel/multichannel-button.js +2 -2
  5. package/lib/cjs/components/multichannel/multichannel-button.js.map +1 -1
  6. package/lib/cjs/components/multichannel/multichannel-carousel.js +4 -4
  7. package/lib/cjs/components/multichannel/multichannel-carousel.js.map +1 -1
  8. package/lib/cjs/components/multichannel/multichannel-text.js +12 -11
  9. package/lib/cjs/components/multichannel/multichannel-text.js.map +1 -1
  10. package/lib/cjs/components/multichannel/multichannel-utils.d.ts +9 -15
  11. package/lib/cjs/components/multichannel/multichannel-utils.js +48 -27
  12. package/lib/cjs/components/multichannel/multichannel-utils.js.map +1 -1
  13. package/lib/cjs/components/multichannel/multichannel.js +7 -7
  14. package/lib/cjs/components/multichannel/multichannel.js.map +1 -1
  15. package/lib/cjs/components/multichannel/whatsapp/constants.d.ts +11 -0
  16. package/lib/cjs/components/multichannel/whatsapp/constants.js +13 -0
  17. package/lib/cjs/components/multichannel/whatsapp/constants.js.map +1 -0
  18. package/lib/cjs/components/whatsapp-button-list.js +2 -2
  19. package/lib/cjs/components/whatsapp-button-list.js.map +1 -1
  20. package/lib/cjs/components/whatsapp-cta-url-button.js +5 -5
  21. package/lib/cjs/components/whatsapp-cta-url-button.js.map +1 -1
  22. package/lib/cjs/constants.d.ts +0 -6
  23. package/lib/cjs/constants.js +1 -7
  24. package/lib/cjs/constants.js.map +1 -1
  25. package/lib/cjs/contexts.js +6 -0
  26. package/lib/cjs/contexts.js.map +1 -1
  27. package/lib/cjs/dev-app.d.ts +7 -0
  28. package/lib/cjs/dev-app.js +5 -2
  29. package/lib/cjs/dev-app.js.map +1 -1
  30. package/lib/cjs/index-types.d.ts +4 -7
  31. package/lib/cjs/index-types.js.map +1 -1
  32. package/lib/cjs/index.d.ts +1 -1
  33. package/lib/cjs/index.js.map +1 -1
  34. package/lib/cjs/webchat/actions.d.ts +2 -1
  35. package/lib/cjs/webchat/actions.js +1 -0
  36. package/lib/cjs/webchat/actions.js.map +1 -1
  37. package/lib/cjs/webchat/cover-component/index.d.ts +6 -0
  38. package/lib/cjs/webchat/cover-component/index.js +21 -0
  39. package/lib/cjs/webchat/cover-component/index.js.map +1 -0
  40. package/lib/cjs/webchat/hooks/use-scroll-to-bottom.d.ts +6 -4
  41. package/lib/cjs/webchat/hooks/use-scroll-to-bottom.js.map +1 -1
  42. package/lib/cjs/webchat/hooks/use-webchat.d.ts +1 -0
  43. package/lib/cjs/webchat/hooks/use-webchat.js +8 -0
  44. package/lib/cjs/webchat/hooks/use-webchat.js.map +1 -1
  45. package/lib/cjs/webchat/index-types.d.ts +1 -0
  46. package/lib/cjs/webchat/input-panel/textarea.js +8 -2
  47. package/lib/cjs/webchat/input-panel/textarea.js.map +1 -1
  48. package/lib/cjs/webchat/message-list/index.js +63 -35
  49. package/lib/cjs/webchat/message-list/index.js.map +1 -1
  50. package/lib/cjs/webchat/message-list/styles.js +3 -3
  51. package/lib/cjs/webchat/typing-indicator/index.d.ts +3 -1
  52. package/lib/cjs/webchat/typing-indicator/index.js +4 -3
  53. package/lib/cjs/webchat/typing-indicator/index.js.map +1 -1
  54. package/lib/cjs/webchat/typing-indicator/styles.d.ts +3 -2
  55. package/lib/cjs/webchat/typing-indicator/styles.js +6 -3
  56. package/lib/cjs/webchat/typing-indicator/styles.js.map +1 -1
  57. package/lib/cjs/webchat/webchat-reducer.js +2 -0
  58. package/lib/cjs/webchat/webchat-reducer.js.map +1 -1
  59. package/lib/cjs/webchat/webchat-typed/styles.d.ts +7 -0
  60. package/lib/cjs/webchat/webchat-typed/styles.js +54 -0
  61. package/lib/cjs/webchat/webchat-typed/styles.js.map +1 -0
  62. package/lib/cjs/webchat/webchat-typed/webchat-typed.d.ts +0 -0
  63. package/lib/cjs/webchat/webchat-typed/webchat-typed.js +663 -0
  64. package/lib/cjs/webchat/webchat-typed/webchat-typed.js.map +1 -0
  65. package/lib/cjs/webchat/webchat.js +16 -18
  66. package/lib/cjs/webchat/webchat.js.map +1 -1
  67. package/lib/cjs/webchat-app.d.ts +119 -72
  68. package/lib/cjs/webchat-app.js +98 -53
  69. package/lib/cjs/webchat-app.js.map +1 -1
  70. package/lib/cjs/webview-app.js +5 -2
  71. package/lib/cjs/webview-app.js.map +1 -1
  72. package/lib/esm/components/element.js +6 -6
  73. package/lib/esm/components/element.js.map +1 -1
  74. package/lib/esm/components/index-types.d.ts +2 -0
  75. package/lib/esm/components/multichannel/multichannel-button.js +1 -1
  76. package/lib/esm/components/multichannel/multichannel-carousel.js +5 -5
  77. package/lib/esm/components/multichannel/multichannel-carousel.js.map +1 -1
  78. package/lib/esm/components/multichannel/multichannel-text.js +2 -1
  79. package/lib/esm/components/multichannel/multichannel-text.js.map +1 -1
  80. package/lib/esm/components/multichannel/multichannel-utils.d.ts +9 -15
  81. package/lib/esm/components/multichannel/multichannel-utils.js +40 -24
  82. package/lib/esm/components/multichannel/multichannel-utils.js.map +1 -1
  83. package/lib/esm/components/multichannel/multichannel.js +7 -7
  84. package/lib/esm/components/multichannel/multichannel.js.map +1 -1
  85. package/lib/esm/components/multichannel/whatsapp/constants.d.ts +11 -0
  86. package/lib/esm/components/multichannel/whatsapp/constants.js +10 -0
  87. package/lib/esm/components/multichannel/whatsapp/constants.js.map +1 -0
  88. package/lib/esm/components/whatsapp-button-list.js +1 -1
  89. package/lib/esm/components/whatsapp-cta-url-button.js +1 -1
  90. package/lib/esm/constants.d.ts +0 -6
  91. package/lib/esm/constants.js +0 -6
  92. package/lib/esm/constants.js.map +1 -1
  93. package/lib/esm/contexts.js +6 -0
  94. package/lib/esm/contexts.js.map +1 -1
  95. package/lib/esm/dev-app.d.ts +7 -0
  96. package/lib/esm/dev-app.js +5 -2
  97. package/lib/esm/dev-app.js.map +1 -1
  98. package/lib/esm/index-types.d.ts +4 -7
  99. package/lib/esm/index-types.js.map +1 -1
  100. package/lib/esm/index.d.ts +1 -1
  101. package/lib/esm/index.js.map +1 -1
  102. package/lib/esm/webchat/actions.d.ts +2 -1
  103. package/lib/esm/webchat/actions.js +1 -0
  104. package/lib/esm/webchat/actions.js.map +1 -1
  105. package/lib/esm/webchat/cover-component/index.d.ts +6 -0
  106. package/lib/esm/webchat/cover-component/index.js +17 -0
  107. package/lib/esm/webchat/cover-component/index.js.map +1 -0
  108. package/lib/esm/webchat/hooks/use-scroll-to-bottom.d.ts +6 -4
  109. package/lib/esm/webchat/hooks/use-scroll-to-bottom.js.map +1 -1
  110. package/lib/esm/webchat/hooks/use-webchat.d.ts +1 -0
  111. package/lib/esm/webchat/hooks/use-webchat.js +8 -0
  112. package/lib/esm/webchat/hooks/use-webchat.js.map +1 -1
  113. package/lib/esm/webchat/index-types.d.ts +1 -0
  114. package/lib/esm/webchat/input-panel/textarea.js +8 -2
  115. package/lib/esm/webchat/input-panel/textarea.js.map +1 -1
  116. package/lib/esm/webchat/message-list/index.js +62 -35
  117. package/lib/esm/webchat/message-list/index.js.map +1 -1
  118. package/lib/esm/webchat/message-list/styles.js +3 -3
  119. package/lib/esm/webchat/typing-indicator/index.d.ts +3 -1
  120. package/lib/esm/webchat/typing-indicator/index.js +5 -2
  121. package/lib/esm/webchat/typing-indicator/index.js.map +1 -1
  122. package/lib/esm/webchat/typing-indicator/styles.d.ts +3 -2
  123. package/lib/esm/webchat/typing-indicator/styles.js +5 -2
  124. package/lib/esm/webchat/typing-indicator/styles.js.map +1 -1
  125. package/lib/esm/webchat/webchat-reducer.js +2 -0
  126. package/lib/esm/webchat/webchat-reducer.js.map +1 -1
  127. package/lib/esm/webchat/webchat-typed/styles.d.ts +7 -0
  128. package/lib/esm/webchat/webchat-typed/styles.js +50 -0
  129. package/lib/esm/webchat/webchat-typed/styles.js.map +1 -0
  130. package/lib/esm/webchat/webchat-typed/webchat-typed.d.ts +0 -0
  131. package/lib/esm/webchat/webchat-typed/webchat-typed.js +663 -0
  132. package/lib/esm/webchat/webchat-typed/webchat-typed.js.map +1 -0
  133. package/lib/esm/webchat/webchat.js +16 -18
  134. package/lib/esm/webchat/webchat.js.map +1 -1
  135. package/lib/esm/webchat-app.d.ts +119 -72
  136. package/lib/esm/webchat-app.js +99 -54
  137. package/lib/esm/webchat-app.js.map +1 -1
  138. package/lib/esm/webview-app.js +5 -2
  139. package/lib/esm/webview-app.js.map +1 -1
  140. package/package.json +3 -2
  141. package/src/components/element.jsx +4 -11
  142. package/src/components/index-types.ts +4 -0
  143. package/src/components/multichannel/multichannel-button.jsx +1 -1
  144. package/src/components/multichannel/multichannel-carousel.jsx +7 -5
  145. package/src/components/multichannel/multichannel-text.jsx +4 -2
  146. package/src/components/multichannel/multichannel-utils.js +45 -27
  147. package/src/components/multichannel/multichannel.jsx +12 -7
  148. package/src/components/multichannel/whatsapp/constants.ts +10 -0
  149. package/src/components/whatsapp-button-list.tsx +1 -1
  150. package/src/components/whatsapp-cta-url-button.tsx +1 -1
  151. package/src/constants.js +0 -7
  152. package/src/contexts.tsx +6 -0
  153. package/src/dev-app.jsx +5 -5
  154. package/src/index-types.ts +4 -7
  155. package/src/index.ts +1 -1
  156. package/src/webchat/actions.ts +1 -0
  157. package/src/webchat/cover-component/index.tsx +31 -0
  158. package/src/webchat/hooks/use-scroll-to-bottom.ts +8 -2
  159. package/src/webchat/hooks/use-webchat.ts +9 -0
  160. package/src/webchat/index-types.ts +1 -0
  161. package/src/webchat/input-panel/textarea.tsx +12 -1
  162. package/src/webchat/message-list/index.tsx +79 -48
  163. package/src/webchat/message-list/styles.ts +3 -3
  164. package/src/webchat/typing-indicator/index.tsx +20 -12
  165. package/src/webchat/typing-indicator/styles.ts +7 -3
  166. package/src/webchat/webchat-reducer.ts +2 -0
  167. package/src/webchat/webchat-typed/styles.ts +54 -0
  168. package/src/webchat/webchat-typed/webchat-typed.tsx +728 -0
  169. package/src/webchat/webchat.jsx +48 -48
  170. package/src/webchat-app.tsx +546 -0
  171. package/src/webview-app.tsx +6 -4
  172. package/src/webchat-app.jsx +0 -389
@@ -0,0 +1,663 @@
1
+ "use strict";
2
+ // import {
3
+ // BotonicAction,
4
+ // INPUT,
5
+ // isMobile,
6
+ // params2queryString,
7
+ // } from '@botonic/core'
8
+ // import merge from 'lodash.merge'
9
+ // import React, {
10
+ // forwardRef,
11
+ // useEffect,
12
+ // useImperativeHandle,
13
+ // useRef,
14
+ // useState,
15
+ // } from 'react'
16
+ // import { StyleSheetManager } from 'styled-components'
17
+ // import { v7 as uuidv7 } from 'uuid'
18
+ // import { Audio, Document, Image, Text, Video } from '../../components'
19
+ // import { Handoff } from '../../components/handoff'
20
+ // import { normalizeWebchatSettings } from '../../components/webchat-settings'
21
+ // import { COLORS, MAX_ALLOWED_SIZE_MB, ROLES, WEBCHAT } from '../../constants'
22
+ // import { WebchatContext, WebviewRequestContext } from '../../contexts'
23
+ // import { SENDERS } from '../../index-types'
24
+ // import {
25
+ // getMediaType,
26
+ // isAllowedSize,
27
+ // isAudio,
28
+ // isDocument,
29
+ // isImage,
30
+ // isMedia,
31
+ // isText,
32
+ // isVideo,
33
+ // readDataURL,
34
+ // } from '../../message-utils'
35
+ // import { msgToBotonic } from '../../msg-to-botonic'
36
+ // import { isDev } from '../../util/environment'
37
+ // import { deserializeRegex, stringifyWithRegexs } from '../../util/regexs'
38
+ // import {
39
+ // _getThemeProperty,
40
+ // getServerErrorMessage,
41
+ // initSession,
42
+ // shouldKeepSessionOnReload,
43
+ // } from '../../util/webchat'
44
+ // import { ChatArea } from '../chat-area'
45
+ // import { OpenedPersistentMenu } from '../components/opened-persistent-menu'
46
+ // import { BotonicContainerId } from '../constants'
47
+ // import { CoverComponent } from '../cover-component'
48
+ // import { WebchatHeader } from '../header'
49
+ // import {
50
+ // useComponentWillMount,
51
+ // usePrevious,
52
+ // useScrollToBottom,
53
+ // useTyping,
54
+ // useWebchat,
55
+ // } from '../hooks'
56
+ // import { InputPanel } from '../input-panel'
57
+ // import { TriggerButton } from '../trigger-button'
58
+ // import { useStorageState } from '../use-storage-state-hook'
59
+ // import { getParsedAction } from '../utils'
60
+ // import { WebviewContainer } from '../webview'
61
+ // import {
62
+ // DarkBackgroundMenu,
63
+ // ErrorMessage,
64
+ // ErrorMessageContainer,
65
+ // StyledWebchat,
66
+ // } from './styles'
67
+ // // eslint-disable-next-line complexity, react/display-name
68
+ // export const WebchatTyped = forwardRef((props: WebchatTypeProps, ref) => {
69
+ // const {
70
+ // addMessage,
71
+ // addMessageComponent,
72
+ // clearMessages,
73
+ // doRenderCustomComponent,
74
+ // openWebviewT,
75
+ // resetUnreadMessages,
76
+ // setCurrentAttachment,
77
+ // setError,
78
+ // setLastMessageVisible,
79
+ // setOnline,
80
+ // toggleCoverComponent,
81
+ // toggleEmojiPicker,
82
+ // togglePersistentMenu,
83
+ // toggleWebchat,
84
+ // updateDevSettings,
85
+ // updateHandoff,
86
+ // updateLastMessageDate,
87
+ // updateLastRoutePath,
88
+ // updateLatestInput,
89
+ // updateMessage,
90
+ // updateReplies,
91
+ // updateSession,
92
+ // updateTheme,
93
+ // updateTyping,
94
+ // updateWebview,
95
+ // webchatState,
96
+ // webchatRef,
97
+ // chatAreaRef,
98
+ // inputPanelRef,
99
+ // headerRef,
100
+ // scrollableMessagesListRef,
101
+ // // eslint-disable-next-line react-hooks/rules-of-hooks
102
+ // } = props.webchatHooks || useWebchat()
103
+ // const firstUpdate = useRef(true)
104
+ // const isOnline = () => webchatState.online
105
+ // const currentDateString = () => new Date().toISOString()
106
+ // const theme = merge(webchatState.theme, props.theme)
107
+ // const { initialSession, initialDevSettings, onStateChange } = props
108
+ // const getThemeProperty = _getThemeProperty(theme)
109
+ // const [customComponent, setCustomComponent] = useState(null)
110
+ // const storage = props.storage
111
+ // const storageKey =
112
+ // typeof props.storageKey === 'function'
113
+ // ? props.storageKey()
114
+ // : props.storageKey
115
+ // const [botonicState, saveState] = useStorageState(storage, storageKey)
116
+ // const host = props.host || document.body
117
+ // const { scrollToBottom } = useScrollToBottom({ host })
118
+ // const saveWebchatState = webchatState => {
119
+ // storage &&
120
+ // saveState(
121
+ // JSON.parse(
122
+ // stringifyWithRegexs({
123
+ // messages: webchatState.messagesJSON,
124
+ // session: webchatState.session,
125
+ // lastRoutePath: webchatState.lastRoutePath,
126
+ // devSettings: webchatState.devSettings,
127
+ // lastMessageUpdate: webchatState.lastMessageUpdate,
128
+ // themeUpdates: webchatState.themeUpdates,
129
+ // })
130
+ // )
131
+ // )
132
+ // }
133
+ // const handleAttachment = event => {
134
+ // if (!isAllowedSize(event.target.files[0].size)) {
135
+ // throw new Error(
136
+ // `The file is too large. A maximum of ${MAX_ALLOWED_SIZE_MB}MB is allowed.`
137
+ // )
138
+ // }
139
+ // setCurrentAttachment({
140
+ // fileName: event.target.files[0].name,
141
+ // file: event.target.files[0], // TODO: Attach more files?
142
+ // attachmentType: getMediaType(event.target.files[0].type),
143
+ // })
144
+ // }
145
+ // useEffect(() => {
146
+ // if (webchatState.currentAttachment)
147
+ // sendAttachment(webchatState.currentAttachment)
148
+ // }, [webchatState.currentAttachment])
149
+ // const sendUserInput = async input => {
150
+ // if (props.onUserInput) {
151
+ // resetUnreadMessages()
152
+ // scrollToBottom()
153
+ // props.onUserInput({
154
+ // user: webchatState.session.user,
155
+ // input: input,
156
+ // session: webchatState.session,
157
+ // lastRoutePath: webchatState.lastRoutePath,
158
+ // })
159
+ // }
160
+ // }
161
+ // // Load styles stored in window._botonicInsertStyles by Webpack
162
+ // useComponentWillMount(() => {
163
+ // if (window._botonicInsertStyles && window._botonicInsertStyles.length) {
164
+ // for (const botonicStyle of window._botonicInsertStyles) {
165
+ // // Injecting styles at head is needed even if we use shadowDOM
166
+ // // as some dependencies like simplebar rely on creating ephemeral elements
167
+ // // on document.body and assume styles will be available globally
168
+ // document.head.appendChild(botonicStyle)
169
+ // // injecting styles in host node too so that shadowDOM works
170
+ // if (props.shadowDOM) host.appendChild(botonicStyle.cloneNode(true))
171
+ // }
172
+ // delete window._botonicInsertStyles
173
+ // }
174
+ // if (props.shadowDOM) {
175
+ // // emoji-picker-react injects styles in head, so we need to
176
+ // // re-inject them in our host node to make it work with shadowDOM
177
+ // for (const style of document.querySelectorAll('style')) {
178
+ // if (
179
+ // style.textContent &&
180
+ // style.textContent.includes('emoji-picker-react')
181
+ // )
182
+ // host.appendChild(style.cloneNode(true))
183
+ // }
184
+ // }
185
+ // })
186
+ // // Load initial state from storage
187
+ // useEffect(() => {
188
+ // let {
189
+ // messages,
190
+ // session,
191
+ // lastRoutePath,
192
+ // devSettings,
193
+ // lastMessageUpdate,
194
+ // themeUpdates,
195
+ // } = botonicState || {}
196
+ // session = initSession(session)
197
+ // updateSession(session)
198
+ // if (shouldKeepSessionOnReload({ initialDevSettings, devSettings })) {
199
+ // if (messages) {
200
+ // messages.forEach(message => {
201
+ // addMessage(message)
202
+ // const newMessageComponent = msgToBotonic(
203
+ // { ...message, delay: 0, typing: 0 },
204
+ // (props.theme.message && props.theme.message.customTypes) ||
205
+ // props.theme.customMessageTypes
206
+ // )
207
+ // if (newMessageComponent) addMessageComponent(newMessageComponent)
208
+ // })
209
+ // }
210
+ // if (initialSession) updateSession(merge(initialSession, session))
211
+ // if (lastRoutePath) updateLastRoutePath(lastRoutePath)
212
+ // } else updateSession(merge(initialSession, session))
213
+ // if (devSettings) updateDevSettings(devSettings)
214
+ // else if (initialDevSettings) updateDevSettings(initialDevSettings)
215
+ // if (lastMessageUpdate) updateLastMessageDate(lastMessageUpdate)
216
+ // if (themeUpdates !== undefined)
217
+ // updateTheme(merge(props.theme, themeUpdates), themeUpdates)
218
+ // if (props.onInit) setTimeout(() => props.onInit(), 100)
219
+ // }, [])
220
+ // useEffect(() => {
221
+ // if (!webchatState.isWebchatOpen) {
222
+ // if (webchatState.isLastMessageVisible) {
223
+ // resetUnreadMessages()
224
+ // }
225
+ // return
226
+ // }
227
+ // }, [webchatState.isWebchatOpen])
228
+ // useEffect(() => {
229
+ // if (onStateChange && typeof onStateChange === 'function') {
230
+ // onStateChange(webchatState)
231
+ // }
232
+ // saveWebchatState(webchatState)
233
+ // }, [
234
+ // webchatState.messagesJSON,
235
+ // webchatState.session,
236
+ // webchatState.lastRoutePath,
237
+ // webchatState.devSettings,
238
+ // webchatState.lastMessageUpdate,
239
+ // ])
240
+ // useEffect(() => {
241
+ // if (!webchatState.online) {
242
+ // setError({
243
+ // message: getServerErrorMessage(props.server),
244
+ // })
245
+ // } else {
246
+ // if (!firstUpdate.current) {
247
+ // setError(undefined)
248
+ // }
249
+ // }
250
+ // }, [webchatState.online])
251
+ // useTyping({ webchatState, updateTyping, updateMessage, host })
252
+ // useEffect(() => {
253
+ // updateTheme(merge(props.theme, theme, webchatState.themeUpdates))
254
+ // }, [props.theme, webchatState.themeUpdates])
255
+ // const openWebview = (webviewComponent, params) => {
256
+ // updateWebview(webviewComponent, params)
257
+ // }
258
+ // const textareaRef = useRef(null)
259
+ // const closeWebview = async options => {
260
+ // updateWebview()
261
+ // if (userInputEnabled) {
262
+ // textareaRef.current.focus()
263
+ // }
264
+ // if (options?.payload) {
265
+ // await sendPayload(options.payload)
266
+ // } else if (options?.path) {
267
+ // const params = options.params ? params2queryString(options.params) : ''
268
+ // await sendPayload(`__PATH_PAYLOAD__${options.path}?${params}`)
269
+ // }
270
+ // }
271
+ // const persistentMenuOptions = getThemeProperty(
272
+ // WEBCHAT.CUSTOM_PROPERTIES.persistentMenu,
273
+ // props.persistentMenu
274
+ // )
275
+ // const darkBackgroundMenu = getThemeProperty(
276
+ // WEBCHAT.CUSTOM_PROPERTIES.darkBackgroundMenu
277
+ // )
278
+ // const getBlockInputs = (rule, inputData) => {
279
+ // const processedInput = rule.preprocess
280
+ // ? rule.preprocess(inputData)
281
+ // : inputData
282
+ // return rule.match.some(regex => {
283
+ // if (typeof regex === 'string') regex = deserializeRegex(regex)
284
+ // return regex.test(processedInput)
285
+ // })
286
+ // }
287
+ // const checkBlockInput = input => {
288
+ // // if is a text we check if it is a serialized RE
289
+ // const blockInputs = getThemeProperty(
290
+ // WEBCHAT.CUSTOM_PROPERTIES.blockInputs,
291
+ // props.blockInputs
292
+ // )
293
+ // if (!Array.isArray(blockInputs)) return false
294
+ // for (const rule of blockInputs) {
295
+ // if (getBlockInputs(rule, input.data)) {
296
+ // addMessageComponent(
297
+ // <Text
298
+ // sentBy={SENDERS.user}
299
+ // blob={false}
300
+ // style={{
301
+ // backgroundColor: COLORS.SCORPION_GRAY,
302
+ // borderColor: COLORS.SCORPION_GRAY,
303
+ // padding: '8px 12px',
304
+ // }}
305
+ // >
306
+ // {rule.message}
307
+ // </Text>
308
+ // )
309
+ // updateReplies(false)
310
+ // return true
311
+ // }
312
+ // }
313
+ // return false
314
+ // }
315
+ // const closeMenu = () => {
316
+ // togglePersistentMenu(false)
317
+ // }
318
+ // const persistentMenu = () => {
319
+ // return (
320
+ // <OpenedPersistentMenu
321
+ // onClick={closeMenu}
322
+ // options={persistentMenuOptions}
323
+ // borderRadius={webchatState.theme.style.borderRadius || '10px'}
324
+ // />
325
+ // )
326
+ // }
327
+ // const getCoverComponent = () => {
328
+ // return getThemeProperty(
329
+ // WEBCHAT.CUSTOM_PROPERTIES.coverComponent,
330
+ // props.coverComponent &&
331
+ // (props.coverComponent.component || props.coverComponent)
332
+ // )
333
+ // }
334
+ // const coverComponent = getCoverComponent()
335
+ // const coverComponentProps = props.coverComponent?.props
336
+ // useEffect(() => {
337
+ // if (!coverComponent) return
338
+ // if (
339
+ // !botonicState ||
340
+ // (botonicState.messages && botonicState.messages.length === 0)
341
+ // )
342
+ // toggleCoverComponent(true)
343
+ // }, [])
344
+ // const messageComponentFromInput = input => {
345
+ // let messageComponent: any = null
346
+ // if (isText(input)) {
347
+ // messageComponent = <Text sentBy={SENDERS.user}>{input.data}</Text>
348
+ // } else if (isMedia(input)) {
349
+ // const temporaryDisplayUrl = URL.createObjectURL(input.data)
350
+ // const mediaProps = {
351
+ // id: input.id,
352
+ // sentBy: SENDERS.user,
353
+ // src: temporaryDisplayUrl,
354
+ // }
355
+ // if (isImage(input)) {
356
+ // mediaProps.input = input
357
+ // messageComponent = <Image {...mediaProps} />
358
+ // } else if (isAudio(input)) messageComponent = <Audio {...mediaProps} />
359
+ // else if (isVideo(input)) messageComponent = <Video {...mediaProps} />
360
+ // else if (isDocument(input))
361
+ // messageComponent = <Document {...mediaProps} />
362
+ // }
363
+ // return messageComponent
364
+ // }
365
+ // const sendInput = async input => {
366
+ // if (!input || Object.keys(input).length == 0) return
367
+ // if (isText(input) && (!input.data || !input.data.trim())) return // in case trim() doesn't work in a browser we can use !/\S/.test(input.data)
368
+ // if (isText(input) && checkBlockInput(input)) return
369
+ // if (!input.id) input.id = uuidv7()
370
+ // const messageComponent = messageComponentFromInput(input)
371
+ // if (messageComponent) addMessageComponent(messageComponent)
372
+ // if (isMedia(input)) input.data = await readDataURL(input.data)
373
+ // sendUserInput(input)
374
+ // updateLatestInput(input)
375
+ // isOnline() && updateLastMessageDate(currentDateString())
376
+ // updateReplies(false)
377
+ // togglePersistentMenu(false)
378
+ // toggleEmojiPicker(false)
379
+ // }
380
+ // /* This is the public API this component exposes to its parents
381
+ // https://stackoverflow.com/questions/37949981/call-child-method-from-parent
382
+ // */
383
+ // const updateSessionWithUser = userToUpdate =>
384
+ // updateSession(merge(webchatState.session, { user: userToUpdate }))
385
+ // useImperativeHandle(ref, () => ({
386
+ // addBotResponse: ({ response, session, lastRoutePath }) => {
387
+ // updateTyping(false)
388
+ // const isUnread =
389
+ // !webchatState.isLastMessageVisible || webchatState.numUnreadMessages > 0
390
+ // if (Array.isArray(response)) {
391
+ // response.forEach(r => {
392
+ // addMessageComponent({ ...r, props: { ...r.props, isUnread } })
393
+ // })
394
+ // } else if (response) {
395
+ // addMessageComponent({
396
+ // ...response,
397
+ // props: { ...response.props, isUnread },
398
+ // })
399
+ // }
400
+ // if (session) {
401
+ // updateSession(merge(session, { user: webchatState.session.user }))
402
+ // const action = session._botonic_action || ''
403
+ // const handoff = action.startsWith(BotonicAction.CreateCase)
404
+ // if (handoff && isDev) addMessageComponent(<Handoff />)
405
+ // updateHandoff(handoff)
406
+ // }
407
+ // if (lastRoutePath) updateLastRoutePath(lastRoutePath)
408
+ // updateLastMessageDate(currentDateString())
409
+ // },
410
+ // setTyping: typing => updateTyping(typing),
411
+ // addUserMessage: message => sendInput(message),
412
+ // updateUser: updateSessionWithUser,
413
+ // openWebchat: () => toggleWebchat(true),
414
+ // closeWebchat: () => toggleWebchat(false),
415
+ // toggleWebchat: () => toggleWebchat(!webchatState.isWebchatOpen),
416
+ // openCoverComponent: () => toggleCoverComponent(true),
417
+ // closeCoverComponent: () => toggleCoverComponent(false),
418
+ // renderCustomComponent: _customComponent => {
419
+ // setCustomComponent(_customComponent)
420
+ // doRenderCustomComponent(true)
421
+ // },
422
+ // unmountCustomComponent: () => doRenderCustomComponent(false),
423
+ // toggleCoverComponent: () =>
424
+ // toggleCoverComponent(!webchatState.isCoverComponentOpen),
425
+ // openWebviewApi: component => openWebviewT(component),
426
+ // setError,
427
+ // setOnline,
428
+ // getMessages: () => webchatState.messagesJSON,
429
+ // isOnline,
430
+ // clearMessages: () => {
431
+ // clearMessages()
432
+ // updateReplies(false)
433
+ // },
434
+ // getLastMessageUpdate: () => webchatState.lastMessageUpdate,
435
+ // updateMessageInfo: (msgId, messageInfo) => {
436
+ // const messageToUpdate = webchatState.messagesJSON.filter(
437
+ // m => m.id == msgId
438
+ // )[0]
439
+ // const updatedMsg = merge(messageToUpdate, messageInfo)
440
+ // if (updatedMsg.ack === 1) delete updatedMsg.unsentInput
441
+ // updateMessage(updatedMsg)
442
+ // },
443
+ // updateWebchatSettings: settings => {
444
+ // if (settings.user) {
445
+ // updateSessionWithUser(settings.user)
446
+ // }
447
+ // const themeUpdates = normalizeWebchatSettings(settings)
448
+ // updateTheme(merge(webchatState.theme, themeUpdates), themeUpdates)
449
+ // updateTyping(false)
450
+ // },
451
+ // closeWebview: closeWebview,
452
+ // }))
453
+ // const resolveCase = () => {
454
+ // updateHandoff(false)
455
+ // updateSession({ ...webchatState.session, _botonic_action: null })
456
+ // }
457
+ // const prevSession = usePrevious(webchatState.session)
458
+ // useEffect(() => {
459
+ // // Resume conversation after handoff
460
+ // if (
461
+ // prevSession &&
462
+ // prevSession._botonic_action &&
463
+ // !webchatState.session._botonic_action
464
+ // ) {
465
+ // const action = getParsedAction(prevSession._botonic_action)
466
+ // if (action && action.on_finish) sendPayload(action.on_finish)
467
+ // }
468
+ // }, [webchatState.session._botonic_action])
469
+ // const sendText = async (text, payload) => {
470
+ // if (!text) return
471
+ // const input = { type: INPUT.TEXT, data: text, payload }
472
+ // await sendInput(input)
473
+ // }
474
+ // const sendPayload = async payload => {
475
+ // if (!payload) return
476
+ // const input = { type: INPUT.POSTBACK, payload }
477
+ // await sendInput(input)
478
+ // }
479
+ // const sendAttachment = async attachment => {
480
+ // if (attachment.file) {
481
+ // const attachmentType = getMediaType(attachment.file.type)
482
+ // if (!attachmentType) return
483
+ // const input = {
484
+ // type: attachmentType,
485
+ // data: attachment.file,
486
+ // }
487
+ // await sendInput(input)
488
+ // setCurrentAttachment(undefined)
489
+ // }
490
+ // }
491
+ // const webviewRequestContext = {
492
+ // closeWebview: closeWebview,
493
+ // getString: stringId => props.getString(stringId, webchatState.session),
494
+ // params: webchatState.webviewParams || {},
495
+ // session: webchatState.session || {},
496
+ // }
497
+ // useEffect(() => {
498
+ // if (firstUpdate.current) {
499
+ // firstUpdate.current = false
500
+ // return
501
+ // }
502
+ // if (webchatState.isWebchatOpen && props.onOpen) props.onOpen()
503
+ // if (!webchatState.isWebchatOpen && props.onClose && !firstUpdate.current) {
504
+ // props.onClose()
505
+ // toggleEmojiPicker(false)
506
+ // togglePersistentMenu(false)
507
+ // }
508
+ // }, [webchatState.isWebchatOpen])
509
+ // const isUserInputEnabled = () => {
510
+ // const isUserInputEnabled = getThemeProperty(
511
+ // WEBCHAT.CUSTOM_PROPERTIES.enableUserInput,
512
+ // props.enableUserInput !== undefined ? props.enableUserInput : true
513
+ // )
514
+ // return isUserInputEnabled && !webchatState.isCoverComponentOpen
515
+ // }
516
+ // const userInputEnabled = isUserInputEnabled()
517
+ // const webchatWebview = () => (
518
+ // <WebviewRequestContext.Provider value={webviewRequestContext}>
519
+ // <WebviewContainer
520
+ // style={{
521
+ // ...getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.webviewStyle),
522
+ // ...mobileStyle,
523
+ // }}
524
+ // webview={webchatState.webview}
525
+ // />
526
+ // </WebviewRequestContext.Provider>
527
+ // )
528
+ // let mobileStyle = {}
529
+ // if (isMobile(getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.mobileBreakpoint))) {
530
+ // mobileStyle = getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.mobileStyle) || {
531
+ // width: '100%',
532
+ // height: '100%',
533
+ // right: 0,
534
+ // bottom: 0,
535
+ // borderRadius: 0,
536
+ // }
537
+ // }
538
+ // useEffect(() => {
539
+ // // Prod mode
540
+ // saveWebchatState(webchatState)
541
+ // }, [webchatState.themeUpdates])
542
+ // // Only needed for dev/serve mode
543
+ // const updateWebchatDevSettings = settings => {
544
+ // // eslint-disable-next-line react-hooks/rules-of-hooks
545
+ // useEffect(() => {
546
+ // const themeUpdates = normalizeWebchatSettings(settings)
547
+ // updateTheme(merge(webchatState.theme, themeUpdates), themeUpdates)
548
+ // }, [webchatState.messagesJSON])
549
+ // }
550
+ // const DarkenBackground = ({ component }) => {
551
+ // return (
552
+ // <div>
553
+ // {darkBackgroundMenu && (
554
+ // <DarkBackgroundMenu
555
+ // style={{
556
+ // borderRadius: webchatState.theme.style.borderRadius,
557
+ // }}
558
+ // />
559
+ // )}
560
+ // {component}
561
+ // </div>
562
+ // )
563
+ // }
564
+ // const _renderCustomComponent = () => {
565
+ // if (!customComponent) return <></>
566
+ // else return customComponent
567
+ // }
568
+ // const WebchatComponent = (
569
+ // <WebchatContext.Provider
570
+ // value={{
571
+ // addMessage,
572
+ // getThemeProperty,
573
+ // openWebview,
574
+ // resolveCase,
575
+ // resetUnreadMessages,
576
+ // setLastMessageVisible,
577
+ // sendAttachment,
578
+ // sendInput,
579
+ // sendPayload,
580
+ // sendText,
581
+ // toggleWebchat,
582
+ // toggleEmojiPicker,
583
+ // togglePersistentMenu,
584
+ // toggleCoverComponent,
585
+ // updateLatestInput,
586
+ // updateMessage,
587
+ // updateReplies,
588
+ // updateUser: updateSessionWithUser,
589
+ // updateWebchatDevSettings: updateWebchatDevSettings,
590
+ // webchatState,
591
+ // trackEvent: props.onTrackEvent,
592
+ // webchatRef,
593
+ // chatAreaRef,
594
+ // inputPanelRef,
595
+ // headerRef,
596
+ // scrollableMessagesListRef,
597
+ // }}
598
+ // >
599
+ // {!webchatState.isWebchatOpen && <TriggerButton />}
600
+ // {webchatState.isWebchatOpen && (
601
+ // <StyledWebchat
602
+ // id={BotonicContainerId.Webchat}
603
+ // ref={webchatRef}
604
+ // // TODO: Distinguish between multiple instances of webchat, e.g. `${uniqueId}-botonic-webchat`
605
+ // role={ROLES.WEBCHAT}
606
+ // width={webchatState.width}
607
+ // height={webchatState.height}
608
+ // style={{
609
+ // ...webchatState.theme.style,
610
+ // ...mobileStyle,
611
+ // }}
612
+ // >
613
+ // <WebchatHeader
614
+ // id={BotonicContainerId.Header}
615
+ // ref={headerRef}
616
+ // onCloseClick={() => {
617
+ // toggleWebchat(false)
618
+ // }}
619
+ // />
620
+ // {webchatState.isCoverComponentOpen ? (
621
+ // <CoverComponent
622
+ // component={coverComponent}
623
+ // componentProps={coverComponentProps}
624
+ // />
625
+ // ) : (
626
+ // <>
627
+ // {webchatState.error.message && (
628
+ // <ErrorMessageContainer>
629
+ // <ErrorMessage>{webchatState.error.message}</ErrorMessage>
630
+ // </ErrorMessageContainer>
631
+ // )}
632
+ // <ChatArea />
633
+ // {webchatState.isPersistentMenuOpen && (
634
+ // <DarkenBackground component={persistentMenu()} />
635
+ // )}
636
+ // {!webchatState.handoff && userInputEnabled && (
637
+ // <InputPanel
638
+ // persistentMenu={props.persistentMenu}
639
+ // enableEmojiPicker={props.enableEmojiPicker}
640
+ // enableAttachments={props.enableAttachments}
641
+ // handleAttachment={handleAttachment}
642
+ // textareaRef={textareaRef}
643
+ // host={host}
644
+ // onUserInput={props.onUserInput}
645
+ // />
646
+ // )}
647
+ // {webchatState.webview && webchatWebview()}
648
+ // {webchatState.isCustomComponentRendered &&
649
+ // customComponent &&
650
+ // _renderCustomComponent()}
651
+ // </>
652
+ // )}
653
+ // </StyledWebchat>
654
+ // )}
655
+ // </WebchatContext.Provider>
656
+ // )
657
+ // return props.shadowDOM ? (
658
+ // <StyleSheetManager target={host}>{WebchatComponent}</StyleSheetManager>
659
+ // ) : (
660
+ // WebchatComponent
661
+ // )
662
+ // })
663
+ //# sourceMappingURL=webchat-typed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webchat-typed.js","sourceRoot":"","sources":["../../../../src/webchat/webchat-typed/webchat-typed.tsx"],"names":[],"mappings":"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"}