@botonic/react 1.0.0-beta.0 → 1.0.0-dev.2
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.
- package/lib/components/button.js +2 -0
- package/lib/components/button.js.map +1 -1
- package/lib/components/components.js +1 -1
- package/lib/components/image.js +47 -5
- package/lib/components/image.js.map +1 -1
- package/lib/components/index.js +6 -6
- package/lib/components/markdown.js +1 -1
- package/lib/components/multichannel/multichannel-utils.js +8 -6
- package/lib/components/multichannel/multichannel-utils.js.map +1 -1
- package/lib/components/timestamps.js +1 -1
- package/lib/constants.js +2 -1
- package/lib/constants.js.map +1 -1
- package/lib/dev-app.js +7 -6
- package/lib/dev-app.js.map +1 -1
- package/lib/index.d.ts +3 -0
- package/lib/index.js +20 -20
- package/lib/message-utils.js +1 -1
- package/lib/util/dom.js +8 -2
- package/lib/util/dom.js.map +1 -1
- package/lib/util/environment.js +1 -1
- package/lib/util/objects.js +1 -1
- package/lib/util/react.js +1 -1
- package/lib/util/webchat.js +1 -1
- package/lib/webchat/actions.js +5 -1
- package/lib/webchat/actions.js.map +1 -1
- package/lib/webchat/devices/device-adapter.js +14 -4
- package/lib/webchat/devices/device-adapter.js.map +1 -1
- package/lib/webchat/devices/scrollbar-controller.js +5 -3
- package/lib/webchat/devices/scrollbar-controller.js.map +1 -1
- package/lib/webchat/header.js +1 -1
- package/lib/webchat/hooks.js +25 -6
- package/lib/webchat/hooks.js.map +1 -1
- package/lib/webchat/index.js +1 -1
- package/lib/webchat/webchat-reducer.js +11 -0
- package/lib/webchat/webchat-reducer.js.map +1 -1
- package/lib/webchat/webchat.js +21 -4
- package/lib/webchat/webchat.js.map +1 -1
- package/lib/webchat/webview.js +1 -1
- package/lib/webchat-app.js +20 -9
- package/lib/webchat-app.js.map +1 -1
- package/package.json +6 -6
- package/src/components/button.jsx +2 -0
- package/src/dev-app.jsx +8 -3
- package/src/experimental/components/message.jsx +8 -2
- package/src/experimental/constants.js +189 -0
- package/src/experimental/contexts.jsx +36 -0
- package/src/experimental/dev-app.jsx +14 -7
- package/src/experimental/index.js +94 -25
- package/src/experimental/msg-to-botonic.jsx +8 -8
- package/src/experimental/react-bot.jsx +1 -1
- package/src/experimental/util/dom.js +55 -0
- package/src/experimental/util/objects.js +39 -0
- package/src/experimental/util/webchat.js +61 -0
- package/src/experimental/webchat/actions.jsx +24 -0
- package/src/experimental/webchat/hooks.js +296 -0
- package/src/experimental/webchat/messages-reducer.js +86 -0
- package/src/experimental/webchat/session-view.jsx +166 -0
- package/src/experimental/webchat/webchat-dev.jsx +23 -19
- package/src/experimental/webchat/webchat-reducer.js +68 -0
- package/src/experimental/webchat/webchat.jsx +109 -82
- package/src/experimental/webchat-app.jsx +39 -15
- package/src/index.d.ts +1 -0
- package/src/util/dom.js +5 -3
- package/src/webchat/actions.jsx +1 -0
- package/src/webchat/devices/device-adapter.js +16 -4
- package/src/webchat/devices/scrollbar-controller.js +9 -4
- package/src/webchat/hooks.js +10 -0
- package/src/webchat/webchat-reducer.js +3 -0
- package/src/webchat/webchat.jsx +2 -1
- package/src/webchat-app.jsx +6 -4
- package/lib/experimental/components/audio.js +0 -46
- package/lib/experimental/components/audio.js.map +0 -1
- package/lib/experimental/components/carousel.js +0 -194
- package/lib/experimental/components/carousel.js.map +0 -1
- package/lib/experimental/components/custom-message.js +0 -132
- package/lib/experimental/components/custom-message.js.map +0 -1
- package/lib/experimental/components/document.js +0 -69
- package/lib/experimental/components/document.js.map +0 -1
- package/lib/experimental/components/image.js +0 -47
- package/lib/experimental/components/image.js.map +0 -1
- package/lib/experimental/components/index.js +0 -184
- package/lib/experimental/components/index.js.map +0 -1
- package/lib/experimental/components/location.js +0 -54
- package/lib/experimental/components/location.js.map +0 -1
- package/lib/experimental/components/markdown.js +0 -103
- package/lib/experimental/components/markdown.js.map +0 -1
- package/lib/experimental/components/message.js +0 -353
- package/lib/experimental/components/message.js.map +0 -1
- package/lib/experimental/components/text.js +0 -80
- package/lib/experimental/components/text.js.map +0 -1
- package/lib/experimental/components/video.js +0 -49
- package/lib/experimental/components/video.js.map +0 -1
- package/lib/experimental/components/whatsapp-template.js +0 -53
- package/lib/experimental/components/whatsapp-template.js.map +0 -1
- package/lib/experimental/dev-app.js +0 -240
- package/lib/experimental/dev-app.js.map +0 -1
- package/lib/experimental/index.js +0 -748
- package/lib/experimental/index.js.map +0 -1
- package/lib/experimental/msg-to-botonic.js +0 -162
- package/lib/experimental/msg-to-botonic.js.map +0 -1
- package/lib/experimental/node-app.js +0 -97
- package/lib/experimental/node-app.js.map +0 -1
- package/lib/experimental/react-bot.js +0 -167
- package/lib/experimental/react-bot.js.map +0 -1
- package/lib/experimental/webchat/assets/Inter-VariableFont_slnt,wght.ttf +0 -0
- package/lib/experimental/webchat/assets/botonic-logo-white.svg +0 -16
- package/lib/experimental/webchat/assets/messenger.svg +0 -10
- package/lib/experimental/webchat/assets/open-new-window.svg +0 -3
- package/lib/experimental/webchat/assets/open.svg +0 -3
- package/lib/experimental/webchat/assets/telegram.svg +0 -10
- package/lib/experimental/webchat/assets/webchat.svg +0 -21
- package/lib/experimental/webchat/assets/whatsapp.svg +0 -4
- package/lib/experimental/webchat/webchat-dev.js +0 -300
- package/lib/experimental/webchat/webchat-dev.js.map +0 -1
- package/lib/experimental/webchat/webchat.js +0 -1044
- package/lib/experimental/webchat/webchat.js.map +0 -1
- package/lib/experimental/webchat-app.js +0 -635
- package/lib/experimental/webchat-app.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/webchat/webchat.jsx"],"names":["getParsedAction","botonicAction","splittedAction","split","length","undefined","JSON","parse","StyledWebchat","styled","div","props","width","height","COLORS","SOLID_WHITE","SOLID_BLACK_ALPHA_0_2","StyledTriggerButton","UserInputContainer","SOLID_BLACK_ALPHA_0_5","TextAreaContainer","FeaturesWrapper","TriggerImage","img","ErrorMessageContainer","ErrorMessage","ERROR_RED","CONCRETE_WHITE","WEBCHAT","DEFAULTS","FONT_FAMILY","DarkBackgroundMenu","SOLID_BLACK","Webchat","ref","webchatHooks","webchatState","addMessage","addMessageComponent","updateMessage","updateReplies","updateLatestInput","updateTyping","updateWebview","updateSession","updateLastRoutePath","updateHandoff","updateTheme","updateDevSettings","toggleWebchat","toggleEmojiPicker","togglePersistentMenu","toggleCoverComponent","setError","setOnline","clearMessages","openWebviewT","closeWebviewT","updateLastMessageDate","setCurrentAttachment","firstUpdate","isOnline","online","currentDateString","Date","toISOString","theme","initialSession","initialDevSettings","onStateChange","getThemeProperty","storage","localStorage","storageKey","STORAGE_KEY","botonicState","saveState","host","document","body","saveWebchatState","messages","messagesJSON","session","lastRoutePath","devSettings","lastMessageUpdate","themeUpdates","deviceAdapter","DeviceAdapter","handleAttachment","event","target","files","size","Error","MAX_ALLOWED_SIZE_MB","fileName","name","file","attachmentType","type","currentAttachment","sendAttachment","sendUserInput","input","onUserInput","user","window","_botonicInsertStyles","botonicStyle","head","appendChild","shadowDOM","cloneNode","querySelectorAll","style","textContent","includes","forEach","m","newComponent","delay","typing","message","customTypes","customMessageTypes","onInit","setTimeout","isWebchatOpen","init","behavior","server","current","openWebview","webviewComponent","params","handleSelectedEmoji","emojiObject","textArea","value","emoji","focus","closeWebview","options","userInputEnabled","payload","sendPayload","path","handleMenu","isPersistentMenuOpen","handleEmojiClick","isEmojiPickerOpen","animationsEnabled","CUSTOM_PROPERTIES","enableAnimations","persistentMenuOptions","persistentMenu","darkBackgroundMenu","getBlockInputs","rule","inputData","match","some","regex","test","checkBlockInput","blockInputs","Array","isArray","data","id","SENDERS","backgroundColor","SCORPION_GRAY","borderColor","padding","closeMenu","borderRadius","getCoverComponent","coverComponent","component","CoverComponent","closeCoverComponent","coverComponentProps","isCoverComponentOpen","messageComponentFromInput","messageComponent","temporaryDisplayUrl","URL","createObjectURL","mediaProps","from","src","sendInput","Object","keys","trim","updateSessionWithUser","userToUpdate","addBotResponse","response","map","r","action","_botonic_action","handoff","startsWith","isDev","setTyping","addUserMessage","updateUser","openWebchat","closeWebchat","openCoverComponent","openWebviewApi","getMessages","getLastMessageUpdate","updateMessageInfo","msgId","messageInfo","messageToUpdate","filter","updatedMsg","ack","unsentInput","updateWebchatSettings","settings","resolveCase","prevSession","on_finish","sendText","text","INPUT","TEXT","POSTBACK","attachment","sendTextAreaText","onKeyDown","keyCode","shiftKey","preventDefault","webviewRequestContext","getString","stringId","setLocale","locale","webviewParams","defaultDelay","defaultTyping","onOpen","onClose","getTriggerImage","triggerImage","triggerButtonImage","LOGO","triggerButtonStyle","CustomTriggerButton","customTrigger","triggerButton","ROLES","TRIGGER_BUTTON","webchatMessageList","flex","webchatReplies","replies","isUserInputEnabled","enableUserInput","emojiPickerEnabled","enableEmojiPicker","attachmentsEnabled","enableAttachments","sendButtonEnabled","enableSendButton","CustomSendButton","customSendButton","CustomMenuButton","customMenuButton","ConditionalAnimation","children","scale","userInputArea","userInputStyle","onFocus","onBlur","textPlaceholder","PLACEHOLDER","e","display","fontSize","border","resize","overflow","outline","paddingLeft","fontFamily","userInputBoxStyle","join","webchatWebview","webviewStyle","mobileStyle","webview","mobileBreakpoint","right","bottom","updateWebchatDevSettings","DarkenBackground","WebchatComponent","ID","error"],"mappings":"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","sourcesContent":["import { INPUT, isMobile, params2queryString } from '@botonic/core'\nimport { motion } from 'framer-motion'\nimport merge from 'lodash.merge'\nimport React, {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useRef,\n} from 'react'\nimport Textarea from 'react-textarea-autosize'\nimport styled, { StyleSheetManager } from 'styled-components'\nimport { useAsyncEffect } from 'use-async-effect'\nimport { v4 as uuidv4 } from 'uuid'\n\nimport { Audio, Document, Image, Text, Video } from '../components'\nimport { Handoff } from '../components/handoff'\nimport { normalizeWebchatSettings } from '../components/webchat-settings'\nimport {\n COLORS,\n MAX_ALLOWED_SIZE_MB,\n ROLES,\n SENDERS,\n WEBCHAT,\n} from '../constants'\nimport { RequestContext, WebchatContext } from '../contexts'\nimport {\n getFullMimeWhitelist,\n getMediaType,\n isAllowedSize,\n isAudio,\n isDocument,\n isImage,\n isMedia,\n isText,\n isVideo,\n readDataURL,\n} from '../message-utils'\nimport { msgToBotonic } from '../msg-to-botonic'\nimport { scrollToBottom } from '../util/dom'\nimport { isDev, resolveImage } from '../util/environment'\nimport { ConditionalWrapper } from '../util/react'\nimport { deserializeRegex, stringifyWithRegexs } from '../util/regexs'\nimport {\n _getThemeProperty,\n getServerErrorMessage,\n initSession,\n shouldKeepSessionOnReload,\n} from '../util/webchat'\nimport { Attachment } from './components/attachment'\nimport { EmojiPicker, OpenedEmojiPicker } from './components/emoji-picker'\nimport {\n OpenedPersistentMenu,\n PersistentMenu,\n} from './components/persistent-menu'\nimport { SendButton } from './components/send-button'\nimport { TypingIndicator } from './components/typing-indicator'\nimport { DeviceAdapter } from './devices/device-adapter'\nimport { StyledWebchatHeader } from './header'\nimport {\n useComponentWillMount,\n usePrevious,\n useTyping,\n useWebchat,\n} from './hooks'\nimport { WebchatMessageList } from './message-list'\nimport { WebchatReplies } from './replies'\nimport { useStorageState } from './use-storage-state-hook'\nimport { WebviewContainer } from './webview'\n\nexport const getParsedAction = botonicAction => {\n const splittedAction = botonicAction.split('create_case:')\n if (splittedAction.length <= 1) return undefined\n return JSON.parse(splittedAction[1])\n}\n\nconst StyledWebchat = styled.div`\n position: fixed;\n right: 20px;\n bottom: 20px;\n width: ${props => props.width}px;\n height: ${props => props.height}px;\n margin: auto;\n background-color: ${COLORS.SOLID_WHITE};\n border-radius: 10px;\n box-shadow: ${COLORS.SOLID_BLACK_ALPHA_0_2} 0px 0px 12px;\n display: flex;\n flex-direction: column;\n`\n\nconst StyledTriggerButton = styled.div`\n cursor: pointer;\n position: fixed;\n background: ${COLORS.SOLID_WHITE};\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n width: 65px;\n height: 65px;\n bottom: 20px;\n right: 10px;\n padding: 8px;\n`\n\nconst UserInputContainer = styled.div`\n min-height: 52px;\n display: flex;\n position: relative;\n border-top: 1px solid ${COLORS.SOLID_BLACK_ALPHA_0_5};\n`\n\nconst TextAreaContainer = styled.div`\n display: flex;\n flex: 1 1 auto;\n align-items: center;\n`\n\nconst FeaturesWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1;\n`\n\nconst TriggerImage = styled.img`\n max-width: 100%;\n max-height: 100%;\n`\n\nconst ErrorMessageContainer = styled.div`\n position: relative;\n display: flex;\n z-index: 1;\n justify-content: center;\n width: 100%;\n`\n\nconst ErrorMessage = styled.div`\n position: absolute;\n top: 10px;\n font-size: 14px;\n line-height: 20px;\n padding: 4px 11px;\n display: flex;\n background-color: ${COLORS.ERROR_RED};\n color: ${COLORS.CONCRETE_WHITE};\n border-radius: 5px;\n align-items: center;\n justify-content: center;\n font-family: ${WEBCHAT.DEFAULTS.FONT_FAMILY};\n`\n\nconst DarkBackgroundMenu = styled.div`\n background: ${COLORS.SOLID_BLACK};\n opacity: 0.3;\n z-index: 1;\n right: 0;\n bottom: 0;\n border-radius: 10px;\n position: absolute;\n width: 100%;\n height: 100%;\n`\n\n// eslint-disable-next-line complexity\nexport const Webchat = forwardRef((props, ref) => {\n const {\n webchatState,\n addMessage,\n addMessageComponent,\n updateMessage,\n updateReplies,\n updateLatestInput,\n updateTyping,\n updateWebview,\n updateSession,\n updateLastRoutePath,\n updateHandoff,\n updateTheme,\n updateDevSettings,\n toggleWebchat,\n toggleEmojiPicker,\n togglePersistentMenu,\n toggleCoverComponent,\n setError,\n setOnline,\n clearMessages,\n openWebviewT,\n closeWebviewT,\n updateLastMessageDate,\n setCurrentAttachment,\n // eslint-disable-next-line react-hooks/rules-of-hooks\n } = props.webchatHooks || useWebchat()\n const firstUpdate = useRef(true)\n const isOnline = () => webchatState.online\n const currentDateString = () => new Date().toISOString()\n const theme = merge(webchatState.theme, props.theme)\n const { initialSession, initialDevSettings, onStateChange } = props\n const getThemeProperty = _getThemeProperty(theme)\n\n const storage = props.storage === undefined ? localStorage : props.storage\n const storageKey =\n typeof props.storageKey === 'function'\n ? props.storageKey()\n : props.storageKey\n\n const [botonicState, saveState] = useStorageState(\n storage,\n storageKey || WEBCHAT.DEFAULTS.STORAGE_KEY\n )\n\n const host = props.host || document.body\n\n const saveWebchatState = webchatState => {\n storage &&\n saveState(\n JSON.parse(\n stringifyWithRegexs({\n messages: webchatState.messagesJSON,\n session: webchatState.session,\n lastRoutePath: webchatState.lastRoutePath,\n devSettings: webchatState.devSettings,\n lastMessageUpdate: webchatState.lastMessageUpdate,\n themeUpdates: webchatState.themeUpdates,\n })\n )\n )\n }\n const deviceAdapter = new DeviceAdapter()\n\n const handleAttachment = event => {\n if (!isAllowedSize(event.target.files[0].size)) {\n throw new Error(\n `The file is too large. A maximum of ${MAX_ALLOWED_SIZE_MB}MB is allowed.`\n )\n }\n setCurrentAttachment({\n fileName: event.target.files[0].name,\n file: event.target.files[0], // TODO: Attach more files?\n attachmentType: getMediaType(event.target.files[0].type),\n })\n }\n\n useEffect(() => {\n if (webchatState.currentAttachment)\n sendAttachment(webchatState.currentAttachment)\n }, [webchatState.currentAttachment])\n\n const sendUserInput = async input => {\n props.onUserInput &&\n props.onUserInput({\n user: webchatState.session.user,\n input: input,\n session: webchatState.session,\n lastRoutePath: webchatState.lastRoutePath,\n })\n }\n\n // Load styles stored in window._botonicInsertStyles by Webpack\n useComponentWillMount(() => {\n if (window._botonicInsertStyles && window._botonicInsertStyles.length) {\n for (const botonicStyle of window._botonicInsertStyles) {\n // Injecting styles at head is needed even if we use shadowDOM\n // as some dependencies like simplebar rely on creating ephemeral elements\n // on document.body and assume styles will be available globally\n document.head.appendChild(botonicStyle)\n\n // injecting styles in host node too so that shadowDOM works\n if (props.shadowDOM) host.appendChild(botonicStyle.cloneNode(true))\n }\n delete window._botonicInsertStyles\n }\n\n if (props.shadowDOM) {\n // emoji-picker-react injects styles in head, so we need to\n // re-inject them in our host node to make it work with shadowDOM\n for (const style of document.querySelectorAll('style')) {\n if (\n style.textContent &&\n style.textContent.includes('emoji-picker-react')\n )\n host.appendChild(style.cloneNode(true))\n }\n }\n })\n\n // Load initial state from storage\n useEffect(() => {\n let {\n messages,\n session,\n lastRoutePath,\n devSettings,\n lastMessageUpdate,\n themeUpdates,\n } = botonicState || {}\n session = initSession(session)\n updateSession(session)\n if (shouldKeepSessionOnReload({ initialDevSettings, devSettings })) {\n if (messages) {\n messages.forEach(m => {\n addMessage(m)\n const newComponent = msgToBotonic(\n { ...m, delay: 0, typing: 0 },\n (props.theme.message && props.theme.message.customTypes) ||\n props.theme.customMessageTypes\n )\n if (newComponent) addMessageComponent(newComponent)\n })\n }\n if (initialSession) updateSession(merge(initialSession, session))\n if (lastRoutePath) updateLastRoutePath(lastRoutePath)\n } else updateSession(merge(initialSession, session))\n if (devSettings) updateDevSettings(devSettings)\n else if (initialDevSettings) updateDevSettings(initialDevSettings)\n if (lastMessageUpdate) updateLastMessageDate(lastMessageUpdate)\n if (themeUpdates !== undefined)\n updateTheme(merge(props.theme, themeUpdates), themeUpdates)\n if (props.onInit) setTimeout(() => props.onInit(), 100)\n }, [])\n\n useEffect(() => {\n if (!webchatState.isWebchatOpen) return\n deviceAdapter.init(host)\n scrollToBottom({ behavior: 'auto', host })\n }, [webchatState.isWebchatOpen])\n\n useEffect(() => {\n if (onStateChange && typeof onStateChange === 'function')\n onStateChange(webchatState)\n saveWebchatState(webchatState)\n }, [\n webchatState.messagesJSON,\n webchatState.session,\n webchatState.lastRoutePath,\n webchatState.devSettings,\n webchatState.lastMessageUpdate,\n ])\n\n useAsyncEffect(async () => {\n if (!webchatState.online) {\n setError({\n message: getServerErrorMessage(props.server),\n })\n } else {\n if (!firstUpdate.current) {\n setError(undefined)\n }\n }\n }, [webchatState.online])\n\n useTyping({ webchatState, updateTyping, updateMessage, host })\n\n useEffect(() => {\n updateTheme(merge(props.theme, theme, webchatState.themeUpdates))\n }, [props.theme, webchatState.themeUpdates])\n\n const openWebview = (webviewComponent, params) =>\n updateWebview(webviewComponent, params)\n\n const handleSelectedEmoji = (event, emojiObject) => {\n textArea.current.value += emojiObject.emoji\n textArea.current.focus()\n }\n\n const closeWebview = options => {\n updateWebview()\n if (userInputEnabled) {\n textArea.current.focus()\n }\n if (options && options.payload) {\n sendPayload(options.payload)\n } else if (options && options.path) {\n let params = ''\n if (options.params) params = params2queryString(options.params)\n sendPayload(`__PATH_PAYLOAD__${options.path}?${params}`)\n }\n }\n\n const handleMenu = () => {\n togglePersistentMenu(!webchatState.isPersistentMenuOpen)\n }\n\n const handleEmojiClick = () => {\n toggleEmojiPicker(!webchatState.isEmojiPickerOpen)\n }\n\n const animationsEnabled = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.enableAnimations,\n props.enableAnimations !== undefined ? props.enableAnimations : true\n )\n const persistentMenuOptions = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.persistentMenu,\n props.persistentMenu\n )\n\n const darkBackgroundMenu = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.darkBackgroundMenu,\n false\n )\n\n const getBlockInputs = (rule, inputData) => {\n return rule.match.some(regex => {\n if (typeof regex === 'string') regex = deserializeRegex(regex)\n return regex.test(inputData)\n })\n }\n\n const checkBlockInput = input => {\n // if is a text we check if it is a serialized RE\n const blockInputs = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.blockInputs,\n props.blockInputs\n )\n if (!Array.isArray(blockInputs)) return false\n for (const rule of blockInputs) {\n if (getBlockInputs(rule, input.data)) {\n addMessageComponent(\n <Text\n id={input.id}\n from={SENDERS.user}\n blob={false}\n style={{\n backgroundColor: COLORS.SCORPION_GRAY,\n borderColor: COLORS.SCORPION_GRAY,\n padding: '8px 12px',\n }}\n >\n {rule.message}\n </Text>\n )\n updateReplies(false)\n return true\n }\n }\n return false\n }\n const closeMenu = () => {\n togglePersistentMenu(false)\n }\n\n const persistentMenu = () => {\n return (\n <OpenedPersistentMenu\n onClick={closeMenu}\n options={persistentMenuOptions}\n borderRadius={webchatState.theme.style.borderRadius || '10px'}\n />\n )\n }\n\n const getCoverComponent = () => {\n return getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.coverComponent,\n props.coverComponent &&\n (props.coverComponent.component || props.coverComponent)\n )\n }\n const CoverComponent = getCoverComponent()\n\n const closeCoverComponent = () => {\n toggleCoverComponent(false)\n }\n\n useEffect(() => {\n if (!CoverComponent) return\n if (\n !botonicState ||\n (botonicState.messages && botonicState.messages.length == 0)\n )\n toggleCoverComponent(true)\n }, [])\n\n const coverComponent = () => {\n const coverComponentProps = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.coverComponentProps,\n props.coverComponent && props.coverComponent.props\n )\n\n if (CoverComponent && webchatState.isCoverComponentOpen)\n return (\n <CoverComponent\n closeComponent={closeCoverComponent}\n {...coverComponentProps}\n />\n )\n return null\n }\n\n const messageComponentFromInput = input => {\n let messageComponent = null\n if (isText(input)) {\n messageComponent = (\n <Text id={input.id} payload={input.payload} from={SENDERS.user}>\n {input.data}\n </Text>\n )\n } else if (isMedia(input)) {\n const temporaryDisplayUrl = URL.createObjectURL(input.data)\n const mediaProps = {\n id: input.id,\n from: SENDERS.user,\n src: temporaryDisplayUrl,\n }\n if (isImage(input)) messageComponent = <Image {...mediaProps} />\n else if (isAudio(input)) messageComponent = <Audio {...mediaProps} />\n else if (isVideo(input)) messageComponent = <Video {...mediaProps} />\n else if (isDocument(input))\n messageComponent = <Document {...mediaProps} />\n }\n return messageComponent\n }\n\n const sendInput = async input => {\n if (!input || Object.keys(input).length == 0) return\n 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)\n if (isText(input) && checkBlockInput(input)) return\n if (!input.id) input.id = uuidv4()\n const messageComponent = messageComponentFromInput(input)\n if (messageComponent) addMessageComponent(messageComponent)\n if (isMedia(input)) input.data = await readDataURL(input.data)\n sendUserInput(input)\n updateLatestInput(input)\n isOnline() && updateLastMessageDate(currentDateString())\n updateReplies(false)\n togglePersistentMenu(false)\n toggleEmojiPicker(false)\n }\n\n /* This is the public API this component exposes to its parents\n https://stackoverflow.com/questions/37949981/call-child-method-from-parent\n */\n\n const updateSessionWithUser = userToUpdate =>\n updateSession(merge(webchatState.session, { user: userToUpdate }))\n\n useImperativeHandle(ref, () => ({\n addBotResponse: ({ response, session, lastRoutePath }) => {\n updateTyping(false)\n if (Array.isArray(response)) response.map(r => addMessageComponent(r))\n else if (response) addMessageComponent(response)\n if (session) {\n updateSession(merge(session, { user: webchatState.session.user }))\n const action = session._botonic_action || ''\n const handoff = action.startsWith('create_case')\n if (handoff && isDev) addMessageComponent(<Handoff />)\n updateHandoff(handoff)\n }\n if (lastRoutePath) updateLastRoutePath(lastRoutePath)\n updateLastMessageDate(currentDateString())\n },\n setTyping: typing => updateTyping(typing),\n addUserMessage: message => sendInput(message),\n updateUser: updateSessionWithUser,\n openWebchat: () => toggleWebchat(true),\n closeWebchat: () => toggleWebchat(false),\n toggleWebchat: () => toggleWebchat(!webchatState.isWebchatOpen),\n openCoverComponent: () => toggleCoverComponent(true),\n closeCoverComponent: () => toggleCoverComponent(false),\n toggleCoverComponent: () =>\n toggleCoverComponent(!webchatState.isCoverComponentOpen),\n openWebviewApi: component => openWebviewT(component),\n setError,\n setOnline,\n getMessages: () => webchatState.messagesJSON,\n isOnline,\n clearMessages: () => {\n clearMessages()\n updateReplies(false)\n },\n getLastMessageUpdate: () => webchatState.lastMessageUpdate,\n updateMessageInfo: (msgId, messageInfo) => {\n const messageToUpdate = webchatState.messagesJSON.filter(\n m => m.id == msgId\n )[0]\n const updatedMsg = merge(messageToUpdate, messageInfo)\n if (updatedMsg.ack === 1) delete updatedMsg.unsentInput\n updateMessage(updatedMsg)\n },\n updateWebchatSettings: settings => {\n const themeUpdates = normalizeWebchatSettings(settings)\n updateTheme(merge(webchatState.theme, themeUpdates), themeUpdates)\n },\n }))\n\n const resolveCase = () => {\n updateHandoff(false)\n updateSession({ ...webchatState.session, _botonic_action: null })\n }\n\n const prevSession = usePrevious(webchatState.session)\n useEffect(() => {\n // Resume conversation after handoff\n if (\n prevSession &&\n prevSession._botonic_action &&\n !webchatState.session._botonic_action\n ) {\n const action = getParsedAction(prevSession._botonic_action)\n if (action && action.on_finish) sendPayload(action.on_finish)\n }\n }, [webchatState.session._botonic_action])\n\n const sendText = async (text, payload) => {\n if (!text) return\n const input = { type: INPUT.TEXT, data: text, payload }\n await sendInput(input)\n }\n\n const sendPayload = async payload => {\n if (!payload) return\n const input = { type: INPUT.POSTBACK, payload }\n await sendInput(input)\n }\n\n const sendAttachment = async attachment => {\n if (attachment.file) {\n const attachmentType = getMediaType(attachment.file.type)\n if (!attachmentType) return\n const input = {\n type: attachmentType,\n data: attachment.file,\n }\n await sendInput(input)\n setCurrentAttachment(undefined)\n }\n }\n\n const sendTextAreaText = () => {\n sendText(textArea.current.value)\n textArea.current.value = ''\n }\n\n const onKeyDown = event => {\n if (event.keyCode == 13 && event.shiftKey == false) {\n event.preventDefault()\n sendTextAreaText()\n }\n }\n\n const webviewRequestContext = {\n getString: stringId => props.getString(stringId, webchatState.session),\n setLocale: locale => props.getString(locale, webchatState.session),\n session: webchatState.session || {},\n params: webchatState.webviewParams || {},\n closeWebview: closeWebview,\n defaultDelay: props.defaultDelay || 0,\n defaultTyping: props.defaultTyping || 0,\n }\n\n useEffect(() => {\n if (firstUpdate.current) {\n firstUpdate.current = false\n return\n }\n if (webchatState.isWebchatOpen && props.onOpen) props.onOpen()\n if (!webchatState.isWebchatOpen && props.onClose && !firstUpdate.current) {\n props.onClose()\n toggleEmojiPicker(false)\n togglePersistentMenu(false)\n }\n }, [webchatState.isWebchatOpen])\n\n const textArea = useRef()\n\n const getTriggerImage = () => {\n const triggerImage = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.triggerButtonImage,\n null\n )\n if (triggerImage === null) {\n webchatState.theme.triggerButtonImage = WEBCHAT.DEFAULTS.LOGO\n return null\n }\n return triggerImage\n }\n\n const triggerButtonStyle = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.triggerButtonStyle\n )\n\n const CustomTriggerButton = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.customTrigger,\n undefined\n )\n\n const triggerButton = () => {\n if (CustomTriggerButton) {\n return <CustomTriggerButton />\n }\n return (\n <StyledTriggerButton\n role={ROLES.TRIGGER_BUTTON}\n style={{ ...triggerButtonStyle }}\n >\n {getTriggerImage() && (\n <TriggerImage src={resolveImage(getTriggerImage())} />\n )}\n </StyledTriggerButton>\n )\n }\n\n const webchatMessageList = () => (\n <WebchatMessageList style={{ flex: 1 }}>\n {webchatState.typing && <TypingIndicator />}\n </WebchatMessageList>\n )\n const webchatReplies = () => <WebchatReplies replies={webchatState.replies} />\n\n const isUserInputEnabled = () => {\n const isUserInputEnabled = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.enableUserInput,\n props.enableUserInput !== undefined ? props.enableUserInput : true\n )\n return isUserInputEnabled && !webchatState.isCoverComponentOpen\n }\n\n const userInputEnabled = isUserInputEnabled()\n const emojiPickerEnabled = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.enableEmojiPicker,\n props.enableEmojiPicker\n )\n const attachmentsEnabled = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.enableAttachments,\n props.enableAttachments\n )\n const sendButtonEnabled = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.enableSendButton,\n true\n )\n const CustomSendButton = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.customSendButton,\n undefined\n )\n const CustomMenuButton = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.customMenuButton,\n undefined\n )\n\n const ConditionalAnimation = props => (\n <ConditionalWrapper\n condition={animationsEnabled}\n wrapper={children => (\n <motion.div whileHover={{ scale: 1.2 }}>{children}</motion.div>\n )}\n >\n {props.children}\n </ConditionalWrapper>\n )\n\n const userInputArea = () => {\n return (\n userInputEnabled && (\n <UserInputContainer\n style={{\n ...getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.userInputStyle),\n }}\n >\n {webchatState.isEmojiPickerOpen && (\n <OpenedEmojiPicker\n height={webchatState.theme.style.height}\n onEmojiClick={handleSelectedEmoji}\n onClick={handleEmojiClick}\n />\n )}\n {persistentMenuOptions && (\n <FeaturesWrapper>\n <ConditionalAnimation>\n <div onClick={handleMenu}>\n {CustomMenuButton ? <CustomMenuButton /> : <PersistentMenu />}\n </div>\n </ConditionalAnimation>\n </FeaturesWrapper>\n )}\n <TextAreaContainer>\n <Textarea\n name='text'\n onFocus={() => deviceAdapter.onFocus(host)}\n onBlur={() => deviceAdapter.onBlur()}\n maxRows={4}\n wrap='soft'\n maxLength='1000'\n placeholder={getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.textPlaceholder,\n WEBCHAT.DEFAULTS.PLACEHOLDER\n )}\n autoFocus={true}\n inputRef={textArea}\n onKeyDown={e => onKeyDown(e)}\n style={{\n display: 'flex',\n fontSize: deviceAdapter.fontSize(14),\n width: '100%',\n border: 'none',\n resize: 'none',\n overflow: 'auto',\n outline: 'none',\n flex: '1 1 auto',\n padding: 10,\n paddingLeft: persistentMenuOptions ? 0 : 10,\n fontFamily: 'inherit',\n ...getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.userInputBoxStyle\n ),\n }}\n />\n </TextAreaContainer>\n <FeaturesWrapper>\n {emojiPickerEnabled && (\n <ConditionalAnimation>\n <EmojiPicker onClick={handleEmojiClick} />\n </ConditionalAnimation>\n )}\n {attachmentsEnabled && (\n <ConditionalAnimation>\n <Attachment\n onChange={handleAttachment}\n accept={getFullMimeWhitelist().join(',')}\n />\n </ConditionalAnimation>\n )}\n {(sendButtonEnabled || CustomSendButton) && (\n <ConditionalAnimation>\n <div onClick={sendTextAreaText}>\n {CustomSendButton ? <CustomSendButton /> : <SendButton />}\n </div>\n </ConditionalAnimation>\n )}\n </FeaturesWrapper>\n </UserInputContainer>\n )\n )\n }\n\n const webchatWebview = () => (\n <RequestContext.Provider value={webviewRequestContext}>\n <WebviewContainer\n style={{\n ...getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.webviewStyle),\n ...mobileStyle,\n }}\n webview={webchatState.webview}\n />\n </RequestContext.Provider>\n )\n let mobileStyle = {}\n if (isMobile(getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.mobileBreakpoint))) {\n mobileStyle = getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.mobileStyle) || {\n width: '100%',\n height: '100%',\n right: 0,\n bottom: 0,\n borderRadius: 0,\n }\n }\n\n useEffect(() => {\n // Prod mode\n saveWebchatState(webchatState)\n scrollToBottom({ host })\n }, [webchatState.themeUpdates])\n\n // Only needed for dev/serve mode\n const updateWebchatDevSettings = settings => {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useEffect(() => {\n const themeUpdates = normalizeWebchatSettings(settings)\n updateTheme(merge(webchatState.theme, themeUpdates), themeUpdates)\n }, [webchatState.messagesJSON])\n }\n\n const DarkenBackground = ({ component }) => {\n return (\n <div>\n {darkBackgroundMenu && (\n <DarkBackgroundMenu\n style={{\n borderRadius: webchatState.theme.style.borderRadius,\n }}\n />\n )}\n {component}\n </div>\n )\n }\n\n const WebchatComponent = (\n <WebchatContext.Provider\n value={{\n sendText,\n sendAttachment,\n sendPayload,\n sendInput,\n openWebview,\n resolveCase,\n webchatState,\n getThemeProperty,\n addMessage,\n toggleWebchat,\n updateMessage,\n updateReplies,\n updateLatestInput,\n updateUser: updateSessionWithUser,\n updateWebchatDevSettings: updateWebchatDevSettings,\n }}\n >\n {!webchatState.isWebchatOpen && (\n <div\n onClick={event => {\n toggleWebchat(true)\n event.preventDefault()\n }}\n >\n {triggerButton()}\n </div>\n )}\n {webchatState.isWebchatOpen && (\n <StyledWebchat\n // TODO: Distinguis between multiple instances of webchat, e.g. `${uniqueId}-botonic-webchat`\n role={ROLES.WEBCHAT}\n id={WEBCHAT.DEFAULTS.ID}\n width={webchatState.width}\n height={webchatState.height}\n style={{\n ...webchatState.theme.style,\n ...mobileStyle,\n }}\n >\n <StyledWebchatHeader\n onCloseClick={() => {\n toggleWebchat(false)\n }}\n />\n {webchatState.error.message && (\n <ErrorMessageContainer>\n <ErrorMessage>{webchatState.error.message}</ErrorMessage>\n </ErrorMessageContainer>\n )}\n {webchatMessageList()}\n {webchatState.replies &&\n Object.keys(webchatState.replies).length > 0 &&\n webchatReplies()}\n {webchatState.isPersistentMenuOpen && (\n <DarkenBackground component={persistentMenu()} />\n )}\n {!webchatState.handoff && userInputArea()}\n {webchatState.webview && webchatWebview()}\n {webchatState.isCoverComponentOpen && coverComponent()}\n </StyledWebchat>\n )}\n </WebchatContext.Provider>\n )\n return props.shadowDOM ? (\n <StyleSheetManager target={host}>{WebchatComponent}</StyleSheetManager>\n ) : (\n WebchatComponent\n )\n})\n"],"file":"webchat.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/webchat/webchat.jsx"],"names":["getParsedAction","botonicAction","splittedAction","split","length","undefined","JSON","parse","StyledWebchat","styled","div","props","width","height","COLORS","SOLID_WHITE","SOLID_BLACK_ALPHA_0_2","StyledTriggerButton","UserInputContainer","SOLID_BLACK_ALPHA_0_5","TextAreaContainer","FeaturesWrapper","TriggerImage","img","ErrorMessageContainer","ErrorMessage","ERROR_RED","CONCRETE_WHITE","WEBCHAT","DEFAULTS","FONT_FAMILY","DarkBackgroundMenu","SOLID_BLACK","Webchat","ref","webchatHooks","webchatState","addMessage","addMessageComponent","updateMessage","updateReplies","updateLatestInput","updateTyping","updateWebview","updateSession","updateLastRoutePath","updateHandoff","updateTheme","updateDevSettings","toggleWebchat","toggleEmojiPicker","togglePersistentMenu","toggleCoverComponent","doRenderCustomComponent","setError","setOnline","clearMessages","openWebviewT","closeWebviewT","updateLastMessageDate","setCurrentAttachment","firstUpdate","isOnline","online","currentDateString","Date","toISOString","theme","initialSession","initialDevSettings","onStateChange","getThemeProperty","customComponent","setCustomComponent","storage","localStorage","storageKey","STORAGE_KEY","botonicState","saveState","host","document","body","deviceAdapter","DeviceAdapter","saveWebchatState","messages","messagesJSON","session","lastRoutePath","devSettings","lastMessageUpdate","themeUpdates","handleAttachment","event","target","files","size","Error","MAX_ALLOWED_SIZE_MB","fileName","name","file","attachmentType","type","currentAttachment","sendAttachment","sendUserInput","input","onUserInput","user","window","_botonicInsertStyles","botonicStyle","head","appendChild","shadowDOM","cloneNode","querySelectorAll","style","textContent","includes","forEach","m","newComponent","delay","typing","message","customTypes","customMessageTypes","onInit","setTimeout","isWebchatOpen","init","behavior","server","current","openWebview","webviewComponent","params","handleSelectedEmoji","emojiObject","textArea","value","emoji","focus","closeWebview","options","userInputEnabled","payload","sendPayload","path","handleMenu","isPersistentMenuOpen","handleEmojiClick","isEmojiPickerOpen","animationsEnabled","CUSTOM_PROPERTIES","enableAnimations","persistentMenuOptions","persistentMenu","darkBackgroundMenu","getBlockInputs","rule","inputData","match","some","regex","test","checkBlockInput","blockInputs","Array","isArray","data","id","SENDERS","backgroundColor","SCORPION_GRAY","borderColor","padding","closeMenu","borderRadius","getCoverComponent","coverComponent","component","CoverComponent","closeCoverComponent","coverComponentProps","isCoverComponentOpen","messageComponentFromInput","messageComponent","temporaryDisplayUrl","URL","createObjectURL","mediaProps","from","src","sendInput","Object","keys","trim","updateSessionWithUser","userToUpdate","addBotResponse","response","map","r","action","_botonic_action","handoff","startsWith","isDev","setTyping","addUserMessage","updateUser","openWebchat","closeWebchat","openCoverComponent","renderCustomComponent","_customComponent","unmountCustomComponent","openWebviewApi","getMessages","getLastMessageUpdate","updateMessageInfo","msgId","messageInfo","messageToUpdate","filter","updatedMsg","ack","unsentInput","updateWebchatSettings","settings","resolveCase","prevSession","on_finish","sendText","text","INPUT","TEXT","POSTBACK","attachment","sendTextAreaText","onKeyDown","keyCode","shiftKey","preventDefault","webviewRequestContext","getString","stringId","setLocale","locale","webviewParams","defaultDelay","defaultTyping","onOpen","onClose","getTriggerImage","triggerImage","triggerButtonImage","LOGO","triggerButtonStyle","CustomTriggerButton","customTrigger","triggerButton","ROLES","TRIGGER_BUTTON","webchatMessageList","flex","webchatReplies","replies","isUserInputEnabled","enableUserInput","emojiPickerEnabled","enableEmojiPicker","attachmentsEnabled","enableAttachments","sendButtonEnabled","enableSendButton","CustomSendButton","customSendButton","CustomMenuButton","customMenuButton","ConditionalAnimation","children","scale","userInputArea","userInputStyle","onFocus","onBlur","textPlaceholder","PLACEHOLDER","e","display","fontSize","border","resize","overflow","outline","paddingLeft","fontFamily","userInputBoxStyle","join","webchatWebview","webviewStyle","mobileStyle","webview","mobileBreakpoint","right","bottom","updateWebchatDevSettings","DarkenBackground","_renderCustomComponent","WebchatComponent","ID","error","isCustomComponentRendered"],"mappings":"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","sourcesContent":["import { INPUT, isMobile, params2queryString } from '@botonic/core'\nimport { motion } from 'framer-motion'\nimport merge from 'lodash.merge'\nimport React, {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react'\nimport Textarea from 'react-textarea-autosize'\nimport styled, { StyleSheetManager } from 'styled-components'\nimport { useAsyncEffect } from 'use-async-effect'\nimport { v4 as uuidv4 } from 'uuid'\n\nimport { Audio, Document, Image, Text, Video } from '../components'\nimport { Handoff } from '../components/handoff'\nimport { normalizeWebchatSettings } from '../components/webchat-settings'\nimport {\n COLORS,\n MAX_ALLOWED_SIZE_MB,\n ROLES,\n SENDERS,\n WEBCHAT,\n} from '../constants'\nimport { RequestContext, WebchatContext } from '../contexts'\nimport {\n getFullMimeWhitelist,\n getMediaType,\n isAllowedSize,\n isAudio,\n isDocument,\n isImage,\n isMedia,\n isText,\n isVideo,\n readDataURL,\n} from '../message-utils'\nimport { msgToBotonic } from '../msg-to-botonic'\nimport { scrollToBottom } from '../util/dom'\nimport { isDev, resolveImage } from '../util/environment'\nimport { ConditionalWrapper } from '../util/react'\nimport { deserializeRegex, stringifyWithRegexs } from '../util/regexs'\nimport {\n _getThemeProperty,\n getServerErrorMessage,\n initSession,\n shouldKeepSessionOnReload,\n} from '../util/webchat'\nimport { Attachment } from './components/attachment'\nimport { EmojiPicker, OpenedEmojiPicker } from './components/emoji-picker'\nimport {\n OpenedPersistentMenu,\n PersistentMenu,\n} from './components/persistent-menu'\nimport { SendButton } from './components/send-button'\nimport { TypingIndicator } from './components/typing-indicator'\nimport { DeviceAdapter } from './devices/device-adapter'\nimport { StyledWebchatHeader } from './header'\nimport {\n useComponentWillMount,\n usePrevious,\n useTyping,\n useWebchat,\n} from './hooks'\nimport { WebchatMessageList } from './message-list'\nimport { WebchatReplies } from './replies'\nimport { useStorageState } from './use-storage-state-hook'\nimport { WebviewContainer } from './webview'\n\nexport const getParsedAction = botonicAction => {\n const splittedAction = botonicAction.split('create_case:')\n if (splittedAction.length <= 1) return undefined\n return JSON.parse(splittedAction[1])\n}\n\nconst StyledWebchat = styled.div`\n position: fixed;\n right: 20px;\n bottom: 20px;\n width: ${props => props.width}px;\n height: ${props => props.height}px;\n margin: auto;\n background-color: ${COLORS.SOLID_WHITE};\n border-radius: 10px;\n box-shadow: ${COLORS.SOLID_BLACK_ALPHA_0_2} 0px 0px 12px;\n display: flex;\n flex-direction: column;\n`\n\nconst StyledTriggerButton = styled.div`\n cursor: pointer;\n position: fixed;\n background: ${COLORS.SOLID_WHITE};\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n width: 65px;\n height: 65px;\n bottom: 20px;\n right: 10px;\n padding: 8px;\n`\n\nconst UserInputContainer = styled.div`\n min-height: 52px;\n display: flex;\n position: relative;\n border-top: 1px solid ${COLORS.SOLID_BLACK_ALPHA_0_5};\n`\n\nconst TextAreaContainer = styled.div`\n display: flex;\n flex: 1 1 auto;\n align-items: center;\n`\n\nconst FeaturesWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1;\n`\n\nconst TriggerImage = styled.img`\n max-width: 100%;\n max-height: 100%;\n`\n\nconst ErrorMessageContainer = styled.div`\n position: relative;\n display: flex;\n z-index: 1;\n justify-content: center;\n width: 100%;\n`\n\nconst ErrorMessage = styled.div`\n position: absolute;\n top: 10px;\n font-size: 14px;\n line-height: 20px;\n padding: 4px 11px;\n display: flex;\n background-color: ${COLORS.ERROR_RED};\n color: ${COLORS.CONCRETE_WHITE};\n border-radius: 5px;\n align-items: center;\n justify-content: center;\n font-family: ${WEBCHAT.DEFAULTS.FONT_FAMILY};\n`\n\nconst DarkBackgroundMenu = styled.div`\n background: ${COLORS.SOLID_BLACK};\n opacity: 0.3;\n z-index: 1;\n right: 0;\n bottom: 0;\n border-radius: 10px;\n position: absolute;\n width: 100%;\n height: 100%;\n`\n\n// eslint-disable-next-line complexity\nexport const Webchat = forwardRef((props, ref) => {\n const {\n webchatState,\n addMessage,\n addMessageComponent,\n updateMessage,\n updateReplies,\n updateLatestInput,\n updateTyping,\n updateWebview,\n updateSession,\n updateLastRoutePath,\n updateHandoff,\n updateTheme,\n updateDevSettings,\n toggleWebchat,\n toggleEmojiPicker,\n togglePersistentMenu,\n toggleCoverComponent,\n doRenderCustomComponent,\n setError,\n setOnline,\n clearMessages,\n openWebviewT,\n closeWebviewT,\n updateLastMessageDate,\n setCurrentAttachment,\n // eslint-disable-next-line react-hooks/rules-of-hooks\n } = props.webchatHooks || useWebchat()\n const firstUpdate = useRef(true)\n const isOnline = () => webchatState.online\n const currentDateString = () => new Date().toISOString()\n const theme = merge(webchatState.theme, props.theme)\n const { initialSession, initialDevSettings, onStateChange } = props\n const getThemeProperty = _getThemeProperty(theme)\n\n const [customComponent, setCustomComponent] = useState(null)\n const storage = props.storage === undefined ? localStorage : props.storage\n const storageKey =\n typeof props.storageKey === 'function'\n ? props.storageKey()\n : props.storageKey\n\n const [botonicState, saveState] = useStorageState(\n storage,\n storageKey || WEBCHAT.DEFAULTS.STORAGE_KEY\n )\n\n const host = props.host || document.body\n\n const deviceAdapter = new DeviceAdapter()\n\n const saveWebchatState = webchatState => {\n storage &&\n saveState(\n JSON.parse(\n stringifyWithRegexs({\n messages: webchatState.messagesJSON,\n session: webchatState.session,\n lastRoutePath: webchatState.lastRoutePath,\n devSettings: webchatState.devSettings,\n lastMessageUpdate: webchatState.lastMessageUpdate,\n themeUpdates: webchatState.themeUpdates,\n })\n )\n )\n }\n\n const handleAttachment = event => {\n if (!isAllowedSize(event.target.files[0].size)) {\n throw new Error(\n `The file is too large. A maximum of ${MAX_ALLOWED_SIZE_MB}MB is allowed.`\n )\n }\n setCurrentAttachment({\n fileName: event.target.files[0].name,\n file: event.target.files[0], // TODO: Attach more files?\n attachmentType: getMediaType(event.target.files[0].type),\n })\n }\n\n useEffect(() => {\n if (webchatState.currentAttachment)\n sendAttachment(webchatState.currentAttachment)\n }, [webchatState.currentAttachment])\n\n const sendUserInput = async input => {\n props.onUserInput &&\n props.onUserInput({\n user: webchatState.session.user,\n input: input,\n session: webchatState.session,\n lastRoutePath: webchatState.lastRoutePath,\n })\n }\n\n // Load styles stored in window._botonicInsertStyles by Webpack\n useComponentWillMount(() => {\n if (window._botonicInsertStyles && window._botonicInsertStyles.length) {\n for (const botonicStyle of window._botonicInsertStyles) {\n // Injecting styles at head is needed even if we use shadowDOM\n // as some dependencies like simplebar rely on creating ephemeral elements\n // on document.body and assume styles will be available globally\n document.head.appendChild(botonicStyle)\n\n // injecting styles in host node too so that shadowDOM works\n if (props.shadowDOM) host.appendChild(botonicStyle.cloneNode(true))\n }\n delete window._botonicInsertStyles\n }\n\n if (props.shadowDOM) {\n // emoji-picker-react injects styles in head, so we need to\n // re-inject them in our host node to make it work with shadowDOM\n for (const style of document.querySelectorAll('style')) {\n if (\n style.textContent &&\n style.textContent.includes('emoji-picker-react')\n )\n host.appendChild(style.cloneNode(true))\n }\n }\n })\n\n // Load initial state from storage\n useEffect(() => {\n let {\n messages,\n session,\n lastRoutePath,\n devSettings,\n lastMessageUpdate,\n themeUpdates,\n } = botonicState || {}\n session = initSession(session)\n updateSession(session)\n if (shouldKeepSessionOnReload({ initialDevSettings, devSettings })) {\n if (messages) {\n messages.forEach(m => {\n addMessage(m)\n const newComponent = msgToBotonic(\n { ...m, delay: 0, typing: 0 },\n (props.theme.message && props.theme.message.customTypes) ||\n props.theme.customMessageTypes\n )\n if (newComponent) addMessageComponent(newComponent)\n })\n }\n if (initialSession) updateSession(merge(initialSession, session))\n if (lastRoutePath) updateLastRoutePath(lastRoutePath)\n } else updateSession(merge(initialSession, session))\n if (devSettings) updateDevSettings(devSettings)\n else if (initialDevSettings) updateDevSettings(initialDevSettings)\n if (lastMessageUpdate) updateLastMessageDate(lastMessageUpdate)\n if (themeUpdates !== undefined)\n updateTheme(merge(props.theme, themeUpdates), themeUpdates)\n if (props.onInit) setTimeout(() => props.onInit(), 100)\n }, [])\n\n useEffect(() => {\n if (!webchatState.isWebchatOpen) return\n deviceAdapter.init(host)\n scrollToBottom({ behavior: 'auto', host })\n }, [webchatState.isWebchatOpen])\n\n useEffect(() => {\n if (onStateChange && typeof onStateChange === 'function')\n onStateChange(webchatState)\n saveWebchatState(webchatState)\n }, [\n webchatState.messagesJSON,\n webchatState.session,\n webchatState.lastRoutePath,\n webchatState.devSettings,\n webchatState.lastMessageUpdate,\n ])\n\n useAsyncEffect(async () => {\n if (!webchatState.online) {\n setError({\n message: getServerErrorMessage(props.server),\n })\n } else {\n if (!firstUpdate.current) {\n setError(undefined)\n }\n }\n }, [webchatState.online])\n\n useTyping({ webchatState, updateTyping, updateMessage, host })\n\n useEffect(() => {\n updateTheme(merge(props.theme, theme, webchatState.themeUpdates))\n }, [props.theme, webchatState.themeUpdates])\n\n const openWebview = (webviewComponent, params) =>\n updateWebview(webviewComponent, params)\n\n const handleSelectedEmoji = (event, emojiObject) => {\n textArea.current.value += emojiObject.emoji\n textArea.current.focus()\n }\n\n const closeWebview = options => {\n updateWebview()\n if (userInputEnabled) {\n textArea.current.focus()\n }\n if (options && options.payload) {\n sendPayload(options.payload)\n } else if (options && options.path) {\n let params = ''\n if (options.params) params = params2queryString(options.params)\n sendPayload(`__PATH_PAYLOAD__${options.path}?${params}`)\n }\n }\n\n const handleMenu = () => {\n togglePersistentMenu(!webchatState.isPersistentMenuOpen)\n }\n\n const handleEmojiClick = () => {\n toggleEmojiPicker(!webchatState.isEmojiPickerOpen)\n }\n\n const animationsEnabled = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.enableAnimations,\n props.enableAnimations !== undefined ? props.enableAnimations : true\n )\n const persistentMenuOptions = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.persistentMenu,\n props.persistentMenu\n )\n\n const darkBackgroundMenu = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.darkBackgroundMenu,\n false\n )\n\n const getBlockInputs = (rule, inputData) => {\n return rule.match.some(regex => {\n if (typeof regex === 'string') regex = deserializeRegex(regex)\n return regex.test(inputData)\n })\n }\n\n const checkBlockInput = input => {\n // if is a text we check if it is a serialized RE\n const blockInputs = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.blockInputs,\n props.blockInputs\n )\n if (!Array.isArray(blockInputs)) return false\n for (const rule of blockInputs) {\n if (getBlockInputs(rule, input.data)) {\n addMessageComponent(\n <Text\n id={input.id}\n from={SENDERS.user}\n blob={false}\n style={{\n backgroundColor: COLORS.SCORPION_GRAY,\n borderColor: COLORS.SCORPION_GRAY,\n padding: '8px 12px',\n }}\n >\n {rule.message}\n </Text>\n )\n updateReplies(false)\n return true\n }\n }\n return false\n }\n const closeMenu = () => {\n togglePersistentMenu(false)\n }\n\n const persistentMenu = () => {\n return (\n <OpenedPersistentMenu\n onClick={closeMenu}\n options={persistentMenuOptions}\n borderRadius={webchatState.theme.style.borderRadius || '10px'}\n />\n )\n }\n\n const getCoverComponent = () => {\n return getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.coverComponent,\n props.coverComponent &&\n (props.coverComponent.component || props.coverComponent)\n )\n }\n const CoverComponent = getCoverComponent()\n\n const closeCoverComponent = () => {\n toggleCoverComponent(false)\n }\n\n useEffect(() => {\n if (!CoverComponent) return\n if (\n !botonicState ||\n (botonicState.messages && botonicState.messages.length == 0)\n )\n toggleCoverComponent(true)\n }, [])\n\n const coverComponent = () => {\n const coverComponentProps = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.coverComponentProps,\n props.coverComponent && props.coverComponent.props\n )\n\n if (CoverComponent && webchatState.isCoverComponentOpen)\n return (\n <CoverComponent\n closeComponent={closeCoverComponent}\n {...coverComponentProps}\n />\n )\n return null\n }\n\n const messageComponentFromInput = input => {\n let messageComponent = null\n if (isText(input)) {\n messageComponent = (\n <Text id={input.id} payload={input.payload} from={SENDERS.user}>\n {input.data}\n </Text>\n )\n } else if (isMedia(input)) {\n const temporaryDisplayUrl = URL.createObjectURL(input.data)\n const mediaProps = {\n id: input.id,\n from: SENDERS.user,\n src: temporaryDisplayUrl,\n }\n if (isImage(input)) messageComponent = <Image {...mediaProps} />\n else if (isAudio(input)) messageComponent = <Audio {...mediaProps} />\n else if (isVideo(input)) messageComponent = <Video {...mediaProps} />\n else if (isDocument(input))\n messageComponent = <Document {...mediaProps} />\n }\n return messageComponent\n }\n\n const sendInput = async input => {\n if (!input || Object.keys(input).length == 0) return\n 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)\n if (isText(input) && checkBlockInput(input)) return\n if (!input.id) input.id = uuidv4()\n const messageComponent = messageComponentFromInput(input)\n if (messageComponent) addMessageComponent(messageComponent)\n if (isMedia(input)) input.data = await readDataURL(input.data)\n sendUserInput(input)\n updateLatestInput(input)\n isOnline() && updateLastMessageDate(currentDateString())\n updateReplies(false)\n togglePersistentMenu(false)\n toggleEmojiPicker(false)\n }\n\n /* This is the public API this component exposes to its parents\n https://stackoverflow.com/questions/37949981/call-child-method-from-parent\n */\n\n const updateSessionWithUser = userToUpdate =>\n updateSession(merge(webchatState.session, { user: userToUpdate }))\n\n useImperativeHandle(ref, () => ({\n addBotResponse: ({ response, session, lastRoutePath }) => {\n updateTyping(false)\n if (Array.isArray(response)) response.map(r => addMessageComponent(r))\n else if (response) addMessageComponent(response)\n if (session) {\n updateSession(merge(session, { user: webchatState.session.user }))\n const action = session._botonic_action || ''\n const handoff = action.startsWith('create_case')\n if (handoff && isDev) addMessageComponent(<Handoff />)\n updateHandoff(handoff)\n }\n if (lastRoutePath) updateLastRoutePath(lastRoutePath)\n updateLastMessageDate(currentDateString())\n },\n setTyping: typing => updateTyping(typing),\n addUserMessage: message => sendInput(message),\n updateUser: updateSessionWithUser,\n openWebchat: () => toggleWebchat(true),\n closeWebchat: () => toggleWebchat(false),\n toggleWebchat: () => toggleWebchat(!webchatState.isWebchatOpen),\n openCoverComponent: () => toggleCoverComponent(true),\n closeCoverComponent: () => toggleCoverComponent(false),\n renderCustomComponent: _customComponent => {\n setCustomComponent(_customComponent)\n doRenderCustomComponent(true)\n },\n unmountCustomComponent: () => doRenderCustomComponent(false),\n toggleCoverComponent: () =>\n toggleCoverComponent(!webchatState.isCoverComponentOpen),\n openWebviewApi: component => openWebviewT(component),\n setError,\n setOnline,\n getMessages: () => webchatState.messagesJSON,\n isOnline,\n clearMessages: () => {\n clearMessages()\n updateReplies(false)\n },\n getLastMessageUpdate: () => webchatState.lastMessageUpdate,\n updateMessageInfo: (msgId, messageInfo) => {\n const messageToUpdate = webchatState.messagesJSON.filter(\n m => m.id == msgId\n )[0]\n const updatedMsg = merge(messageToUpdate, messageInfo)\n if (updatedMsg.ack === 1) delete updatedMsg.unsentInput\n updateMessage(updatedMsg)\n },\n updateWebchatSettings: settings => {\n const themeUpdates = normalizeWebchatSettings(settings)\n updateTheme(merge(webchatState.theme, themeUpdates), themeUpdates)\n },\n }))\n\n const resolveCase = () => {\n updateHandoff(false)\n updateSession({ ...webchatState.session, _botonic_action: null })\n }\n\n const prevSession = usePrevious(webchatState.session)\n useEffect(() => {\n // Resume conversation after handoff\n if (\n prevSession &&\n prevSession._botonic_action &&\n !webchatState.session._botonic_action\n ) {\n const action = getParsedAction(prevSession._botonic_action)\n if (action && action.on_finish) sendPayload(action.on_finish)\n }\n }, [webchatState.session._botonic_action])\n\n const sendText = async (text, payload) => {\n if (!text) return\n const input = { type: INPUT.TEXT, data: text, payload }\n await sendInput(input)\n }\n\n const sendPayload = async payload => {\n if (!payload) return\n const input = { type: INPUT.POSTBACK, payload }\n await sendInput(input)\n }\n\n const sendAttachment = async attachment => {\n if (attachment.file) {\n const attachmentType = getMediaType(attachment.file.type)\n if (!attachmentType) return\n const input = {\n type: attachmentType,\n data: attachment.file,\n }\n await sendInput(input)\n setCurrentAttachment(undefined)\n }\n }\n\n const sendTextAreaText = () => {\n sendText(textArea.current.value)\n textArea.current.value = ''\n }\n\n const onKeyDown = event => {\n if (event.keyCode == 13 && event.shiftKey == false) {\n event.preventDefault()\n sendTextAreaText()\n }\n }\n\n const webviewRequestContext = {\n getString: stringId => props.getString(stringId, webchatState.session),\n setLocale: locale => props.getString(locale, webchatState.session),\n session: webchatState.session || {},\n params: webchatState.webviewParams || {},\n closeWebview: closeWebview,\n defaultDelay: props.defaultDelay || 0,\n defaultTyping: props.defaultTyping || 0,\n }\n\n useEffect(() => {\n if (firstUpdate.current) {\n firstUpdate.current = false\n return\n }\n if (webchatState.isWebchatOpen && props.onOpen) props.onOpen()\n if (!webchatState.isWebchatOpen && props.onClose && !firstUpdate.current) {\n props.onClose()\n toggleEmojiPicker(false)\n togglePersistentMenu(false)\n }\n }, [webchatState.isWebchatOpen])\n\n const textArea = useRef()\n\n const getTriggerImage = () => {\n const triggerImage = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.triggerButtonImage,\n null\n )\n if (triggerImage === null) {\n webchatState.theme.triggerButtonImage = WEBCHAT.DEFAULTS.LOGO\n return null\n }\n return triggerImage\n }\n\n const triggerButtonStyle = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.triggerButtonStyle\n )\n\n const CustomTriggerButton = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.customTrigger,\n undefined\n )\n\n const triggerButton = () => {\n if (CustomTriggerButton) {\n return <CustomTriggerButton />\n }\n return (\n <StyledTriggerButton\n role={ROLES.TRIGGER_BUTTON}\n style={{ ...triggerButtonStyle }}\n >\n {getTriggerImage() && (\n <TriggerImage src={resolveImage(getTriggerImage())} />\n )}\n </StyledTriggerButton>\n )\n }\n\n const webchatMessageList = () => (\n <WebchatMessageList style={{ flex: 1 }}>\n {webchatState.typing && <TypingIndicator />}\n </WebchatMessageList>\n )\n const webchatReplies = () => <WebchatReplies replies={webchatState.replies} />\n\n const isUserInputEnabled = () => {\n const isUserInputEnabled = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.enableUserInput,\n props.enableUserInput !== undefined ? props.enableUserInput : true\n )\n return isUserInputEnabled && !webchatState.isCoverComponentOpen\n }\n\n const userInputEnabled = isUserInputEnabled()\n const emojiPickerEnabled = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.enableEmojiPicker,\n props.enableEmojiPicker\n )\n const attachmentsEnabled = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.enableAttachments,\n props.enableAttachments\n )\n const sendButtonEnabled = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.enableSendButton,\n true\n )\n const CustomSendButton = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.customSendButton,\n undefined\n )\n const CustomMenuButton = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.customMenuButton,\n undefined\n )\n\n const ConditionalAnimation = props => (\n <ConditionalWrapper\n condition={animationsEnabled}\n wrapper={children => (\n <motion.div whileHover={{ scale: 1.2 }}>{children}</motion.div>\n )}\n >\n {props.children}\n </ConditionalWrapper>\n )\n\n const userInputArea = () => {\n return (\n userInputEnabled && (\n <UserInputContainer\n style={{\n ...getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.userInputStyle),\n }}\n >\n {webchatState.isEmojiPickerOpen && (\n <OpenedEmojiPicker\n height={webchatState.theme.style.height}\n onEmojiClick={handleSelectedEmoji}\n onClick={handleEmojiClick}\n />\n )}\n {persistentMenuOptions && (\n <FeaturesWrapper>\n <ConditionalAnimation>\n <div onClick={handleMenu}>\n {CustomMenuButton ? <CustomMenuButton /> : <PersistentMenu />}\n </div>\n </ConditionalAnimation>\n </FeaturesWrapper>\n )}\n <TextAreaContainer>\n <Textarea\n name='text'\n onFocus={() => deviceAdapter.onFocus(host)}\n onBlur={() => deviceAdapter.onBlur()}\n maxRows={4}\n wrap='soft'\n maxLength='1000'\n placeholder={getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.textPlaceholder,\n WEBCHAT.DEFAULTS.PLACEHOLDER\n )}\n autoFocus={true}\n inputRef={textArea}\n onKeyDown={e => onKeyDown(e)}\n style={{\n display: 'flex',\n fontSize: deviceAdapter.fontSize(14),\n width: '100%',\n border: 'none',\n resize: 'none',\n overflow: 'auto',\n outline: 'none',\n flex: '1 1 auto',\n padding: 10,\n paddingLeft: persistentMenuOptions ? 0 : 10,\n fontFamily: 'inherit',\n ...getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.userInputBoxStyle\n ),\n }}\n />\n </TextAreaContainer>\n <FeaturesWrapper>\n {emojiPickerEnabled && (\n <ConditionalAnimation>\n <EmojiPicker onClick={handleEmojiClick} />\n </ConditionalAnimation>\n )}\n {attachmentsEnabled && (\n <ConditionalAnimation>\n <Attachment\n onChange={handleAttachment}\n accept={getFullMimeWhitelist().join(',')}\n />\n </ConditionalAnimation>\n )}\n {(sendButtonEnabled || CustomSendButton) && (\n <ConditionalAnimation>\n <div onClick={sendTextAreaText}>\n {CustomSendButton ? <CustomSendButton /> : <SendButton />}\n </div>\n </ConditionalAnimation>\n )}\n </FeaturesWrapper>\n </UserInputContainer>\n )\n )\n }\n\n const webchatWebview = () => (\n <RequestContext.Provider value={webviewRequestContext}>\n <WebviewContainer\n style={{\n ...getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.webviewStyle),\n ...mobileStyle,\n }}\n webview={webchatState.webview}\n />\n </RequestContext.Provider>\n )\n let mobileStyle = {}\n if (isMobile(getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.mobileBreakpoint))) {\n mobileStyle = getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.mobileStyle) || {\n width: '100%',\n height: '100%',\n right: 0,\n bottom: 0,\n borderRadius: 0,\n }\n }\n\n useEffect(() => {\n // Prod mode\n saveWebchatState(webchatState)\n scrollToBottom({ host })\n }, [webchatState.themeUpdates])\n\n // Only needed for dev/serve mode\n const updateWebchatDevSettings = settings => {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useEffect(() => {\n const themeUpdates = normalizeWebchatSettings(settings)\n updateTheme(merge(webchatState.theme, themeUpdates), themeUpdates)\n }, [webchatState.messagesJSON])\n }\n\n const DarkenBackground = ({ component }) => {\n return (\n <div>\n {darkBackgroundMenu && (\n <DarkBackgroundMenu\n style={{\n borderRadius: webchatState.theme.style.borderRadius,\n }}\n />\n )}\n {component}\n </div>\n )\n }\n\n const _renderCustomComponent = () => {\n if (!customComponent) return <></>\n else return customComponent\n }\n\n const WebchatComponent = (\n <WebchatContext.Provider\n value={{\n sendText,\n sendAttachment,\n sendPayload,\n sendInput,\n openWebview,\n resolveCase,\n webchatState,\n getThemeProperty,\n addMessage,\n toggleWebchat,\n updateMessage,\n updateReplies,\n updateLatestInput,\n updateUser: updateSessionWithUser,\n updateWebchatDevSettings: updateWebchatDevSettings,\n }}\n >\n {!webchatState.isWebchatOpen && (\n <div\n onClick={event => {\n toggleWebchat(true)\n event.preventDefault()\n }}\n >\n {triggerButton()}\n </div>\n )}\n\n {webchatState.isWebchatOpen && (\n <StyledWebchat\n // TODO: Distinguis between multiple instances of webchat, e.g. `${uniqueId}-botonic-webchat`\n role={ROLES.WEBCHAT}\n id={WEBCHAT.DEFAULTS.ID}\n width={webchatState.width}\n height={webchatState.height}\n style={{\n ...webchatState.theme.style,\n ...mobileStyle,\n }}\n >\n <StyledWebchatHeader\n onCloseClick={() => {\n toggleWebchat(false)\n }}\n />\n {webchatState.error.message && (\n <ErrorMessageContainer>\n <ErrorMessage>{webchatState.error.message}</ErrorMessage>\n </ErrorMessageContainer>\n )}\n {webchatMessageList()}\n {webchatState.replies &&\n Object.keys(webchatState.replies).length > 0 &&\n webchatReplies()}\n {webchatState.isPersistentMenuOpen && (\n <DarkenBackground component={persistentMenu()} />\n )}\n {!webchatState.handoff && userInputArea()}\n {webchatState.webview && webchatWebview()}\n {webchatState.isCoverComponentOpen && coverComponent()}\n {webchatState.isCustomComponentRendered &&\n customComponent &&\n _renderCustomComponent()}\n </StyledWebchat>\n )}\n </WebchatContext.Provider>\n )\n return props.shadowDOM ? (\n <StyleSheetManager target={host}>{WebchatComponent}</StyleSheetManager>\n ) : (\n WebchatComponent\n )\n})\n"],"file":"webchat.js"}
|
package/lib/webchat/webview.js
CHANGED
|
@@ -7,7 +7,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
|
|
|
7
7
|
Object.defineProperty(exports, "__esModule", {
|
|
8
8
|
value: true
|
|
9
9
|
});
|
|
10
|
-
exports.
|
|
10
|
+
exports.WebviewHeader = exports.WebviewContainer = void 0;
|
|
11
11
|
|
|
12
12
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
13
|
|
package/lib/webchat-app.js
CHANGED
|
@@ -37,7 +37,7 @@ var _dom = require("./util/dom");
|
|
|
37
37
|
|
|
38
38
|
var _webchat = require("./webchat/webchat");
|
|
39
39
|
|
|
40
|
-
var _excluded = ["theme", "persistentMenu", "coverComponent", "blockInputs", "enableAttachments", "enableUserInput", "enableAnimations", "enableEmojiPicker", "defaultDelay", "defaultTyping", "storage", "storageKey", "onInit", "onOpen", "onClose", "onMessage", "onConnectionChange", "appId", "visibility", "server"];
|
|
40
|
+
var _excluded = ["theme", "persistentMenu", "coverComponent", "blockInputs", "enableAttachments", "enableUserInput", "enableAnimations", "enableEmojiPicker", "defaultDelay", "defaultTyping", "storage", "storageKey", "onInit", "onOpen", "onClose", "onMessage", "onConnectionChange", "appId", "visibility", "server", "hostId"];
|
|
41
41
|
|
|
42
42
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
43
43
|
|
|
@@ -330,6 +330,16 @@ var WebchatApp = /*#__PURE__*/function () {
|
|
|
330
330
|
value: function closeCoverComponent() {
|
|
331
331
|
this.webchatRef.current.closeCoverComponent();
|
|
332
332
|
}
|
|
333
|
+
}, {
|
|
334
|
+
key: "renderCustomComponent",
|
|
335
|
+
value: function renderCustomComponent(_customComponent) {
|
|
336
|
+
this.webchatRef.current.renderCustomComponent(_customComponent);
|
|
337
|
+
}
|
|
338
|
+
}, {
|
|
339
|
+
key: "unmountCustomComponent",
|
|
340
|
+
value: function unmountCustomComponent() {
|
|
341
|
+
this.webchatRef.current.unmountCustomComponent();
|
|
342
|
+
}
|
|
333
343
|
}, {
|
|
334
344
|
key: "toggleCoverComponent",
|
|
335
345
|
value: function toggleCoverComponent() {
|
|
@@ -390,10 +400,10 @@ var WebchatApp = /*#__PURE__*/function () {
|
|
|
390
400
|
|
|
391
401
|
}, {
|
|
392
402
|
key: "getComponent",
|
|
393
|
-
value: function getComponent() {
|
|
403
|
+
value: function getComponent(host) {
|
|
394
404
|
var _this2 = this;
|
|
395
405
|
|
|
396
|
-
var optionsAtRuntime = arguments.length >
|
|
406
|
+
var optionsAtRuntime = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
397
407
|
var _optionsAtRuntime$the = optionsAtRuntime.theme,
|
|
398
408
|
theme = _optionsAtRuntime$the === void 0 ? {} : _optionsAtRuntime$the,
|
|
399
409
|
persistentMenu = optionsAtRuntime.persistentMenu,
|
|
@@ -415,6 +425,7 @@ var WebchatApp = /*#__PURE__*/function () {
|
|
|
415
425
|
appId = optionsAtRuntime.appId,
|
|
416
426
|
visibility = optionsAtRuntime.visibility,
|
|
417
427
|
server = optionsAtRuntime.server,
|
|
428
|
+
hostId = optionsAtRuntime.hostId,
|
|
418
429
|
webchatOptions = (0, _objectWithoutProperties2["default"])(optionsAtRuntime, _excluded);
|
|
419
430
|
theme = (0, _lodash["default"])(this.theme, theme);
|
|
420
431
|
persistentMenu = persistentMenu || this.persistentMenu;
|
|
@@ -436,6 +447,8 @@ var WebchatApp = /*#__PURE__*/function () {
|
|
|
436
447
|
this.onConnectionChange = onConnectionChange || this.onConnectionChange;
|
|
437
448
|
this.visibility = visibility || this.visibility;
|
|
438
449
|
this.appId = appId || this.appId;
|
|
450
|
+
this.hostId = hostId || this.hostId;
|
|
451
|
+
this.createRootElement(host);
|
|
439
452
|
return /*#__PURE__*/_react["default"].createElement(_webchat.Webchat, (0, _extends2["default"])({}, webchatOptions, {
|
|
440
453
|
ref: this.webchatRef,
|
|
441
454
|
host: this.host,
|
|
@@ -603,16 +616,14 @@ var WebchatApp = /*#__PURE__*/function () {
|
|
|
603
616
|
while (1) {
|
|
604
617
|
switch (_context6.prev = _context6.next) {
|
|
605
618
|
case 0:
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
_context6.next = 3;
|
|
619
|
+
_context6.next = 2;
|
|
609
620
|
return _this3.resolveWebchatVisibility(optionsAtRuntime);
|
|
610
621
|
|
|
611
|
-
case
|
|
622
|
+
case 2:
|
|
612
623
|
isVisible = _context6.sent;
|
|
613
|
-
if (isVisible) (0, _reactDom.render)(_this3.getComponent(optionsAtRuntime), _this3.getReactMountNode(dest));
|
|
624
|
+
if (isVisible) (0, _reactDom.render)(_this3.getComponent(dest, optionsAtRuntime), _this3.getReactMountNode(dest));
|
|
614
625
|
|
|
615
|
-
case
|
|
626
|
+
case 4:
|
|
616
627
|
case "end":
|
|
617
628
|
return _context6.stop();
|
|
618
629
|
}
|
package/lib/webchat-app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/webchat-app.jsx"],"names":["WebchatApp","theme","persistentMenu","coverComponent","blockInputs","enableEmojiPicker","enableAttachments","enableUserInput","enableAnimations","hostId","shadowDOM","defaultDelay","defaultTyping","storage","storageKey","onInit","onOpen","onClose","onMessage","onConnectionChange","appId","visibility","server","Boolean","console","warn","WEBCHAT","DEFAULTS","HOST_ID","webchatRef","host","id","document","getElementById","createElement","body","firstChild","insertBefore","appendChild","attachShadow","mode","node","shadowRoot","args","user","input","from","SENDERS","message","hubtypeService","postMessage","onConnectionRegained","session","messagesJSON","lastMessage","length","lastMessageId","lastMessageUpdateDate","getLastMessageUpdate","HubtypeService","onEvent","event","onServiceEvent","unsentInputs","current","getMessages","filter","msg","ack","unsentInput","action","online","setOnline","updateMessageInfo","type","updateWebchatSettings","data","setTyping","bot","addBotMessage","updateUser","addBotResponse","response","customTypes","customMessageTypes","text","INPUT","TEXT","addUserMessage","payload","POSTBACK","typing","openWebchat","closeWebchat","toggleWebchat","openCoverComponent","closeCoverComponent","toggleCoverComponent","clearMessages","resolveWebchatVisibility","msgId","messageInfo","settings","optionsAtRuntime","webchatOptions","onInitWebchat","onOpenWebchat","onCloseWebchat","onUserInput","webchatState","onStateChange","getWebchatVisibility","status","isOnline","undefined","isWebchatVisible","dest","createRootElement","isVisible","getComponent","getReactMountNode"],"mappings":"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","sourcesContent":["import { HubtypeService, INPUT } from '@botonic/core'\nimport merge from 'lodash.merge'\nimport React, { createRef } from 'react'\nimport { render } from 'react-dom'\n\nimport { SENDERS, WEBCHAT } from './constants'\nimport { msgToBotonic } from './msg-to-botonic'\nimport { isShadowDOMSupported, onDOMLoaded } from './util/dom'\nimport { Webchat } from './webchat/webchat'\n\nexport class WebchatApp {\n constructor({\n theme = {},\n persistentMenu,\n coverComponent,\n blockInputs,\n enableEmojiPicker,\n enableAttachments,\n enableUserInput,\n enableAnimations,\n hostId,\n shadowDOM,\n defaultDelay,\n defaultTyping,\n storage,\n storageKey,\n onInit,\n onOpen,\n onClose,\n onMessage,\n onConnectionChange,\n appId,\n visibility,\n server,\n }) {\n this.theme = theme\n this.persistentMenu = persistentMenu\n this.coverComponent = coverComponent\n this.blockInputs = blockInputs\n this.enableEmojiPicker = enableEmojiPicker\n this.enableAttachments = enableAttachments\n this.enableUserInput = enableUserInput\n this.enableAnimations = enableAnimations\n this.shadowDOM = Boolean(\n typeof shadowDOM === 'function' ? shadowDOM() : shadowDOM\n )\n if (this.shadowDOM && !isShadowDOMSupported()) {\n console.warn('[botonic] ShadowDOM not supported on this browser')\n this.shadowDOM = false\n }\n this.hostId = hostId || WEBCHAT.DEFAULTS.HOST_ID\n this.defaultDelay = defaultDelay\n this.defaultTyping = defaultTyping\n this.storage = storage\n this.storageKey = storageKey\n this.onInit = onInit\n this.onOpen = onOpen\n this.onClose = onClose\n this.onMessage = onMessage\n this.onConnectionChange = onConnectionChange\n this.visibility = visibility\n this.server = server\n this.webchatRef = createRef()\n this.appId = appId\n }\n\n createRootElement(host) {\n // Create root element <div id='root'> if not exists\n // Create shadowDOM to root element if needed\n if (host) {\n if (host.id && this.hostId) {\n if (host.id != this.hostId) {\n console.warn(\n `[botonic] Host ID \"${host.id}\" don't match 'hostId' option: ${this.hostId}. Using value: ${host.id}.`\n )\n this.hostId = host.id\n }\n } else if (host.id) this.hostId = host.id\n else if (this.hostId) host.id = this.hostId\n } else {\n host = document.getElementById(this.hostId)\n }\n if (!host) {\n host = document.createElement('div')\n host.id = this.hostId\n if (document.body.firstChild)\n document.body.insertBefore(host, document.body.firstChild)\n else document.body.appendChild(host)\n }\n this.host = this.shadowDOM ? host.attachShadow({ mode: 'open' }) : host\n }\n\n getReactMountNode(node) {\n if (!node) node = this.host\n return node.shadowRoot ? node.shadowRoot : node\n }\n\n onInitWebchat(...args) {\n this.onInit && this.onInit(this, ...args)\n }\n\n onOpenWebchat(...args) {\n this.onOpen && this.onOpen(this, ...args)\n }\n\n onCloseWebchat(...args) {\n this.onClose && this.onClose(this, ...args)\n }\n\n async onUserInput({ user, input }) {\n this.onMessage &&\n this.onMessage(this, { from: SENDERS.user, message: input })\n return this.hubtypeService.postMessage(user, input)\n }\n\n async onConnectionRegained() {\n return this.hubtypeService.onConnectionRegained()\n }\n\n onStateChange({ session: { user }, messagesJSON }) {\n const lastMessage = messagesJSON[messagesJSON.length - 1]\n const lastMessageId = lastMessage && lastMessage.id\n const lastMessageUpdateDate = this.getLastMessageUpdate()\n if (this.hubtypeService) {\n this.hubtypeService.lastMessageId = lastMessageId\n this.hubtypeService.lastMessageUpdateDate = lastMessageUpdateDate\n } else if (!this.hubtypeService && user) {\n this.hubtypeService = new HubtypeService({\n appId: this.appId,\n user,\n lastMessageId,\n lastMessageUpdateDate,\n onEvent: event => this.onServiceEvent(event),\n unsentInputs: () =>\n this.webchatRef.current\n .getMessages()\n .filter(msg => msg.ack === 0 && msg.unsentInput),\n server: this.server,\n })\n }\n }\n\n onServiceEvent(event) {\n if (event.action === 'connectionChange') {\n this.onConnectionChange && this.onConnectionChange(this, event.online)\n this.webchatRef.current.setOnline(event.online)\n } else if (event.action === 'update_message_info')\n this.updateMessageInfo(event.message.id, event.message)\n else if (event.message.type === 'update_webchat_settings')\n this.updateWebchatSettings(event.message.data)\n else if (event.message.type === 'sender_action')\n this.setTyping(event.message.data === 'typing_on')\n else {\n this.onMessage &&\n this.onMessage(this, { from: SENDERS.bot, message: event.message })\n this.addBotMessage(event.message)\n }\n }\n\n updateUser(user) {\n this.webchatRef.current.updateUser(user)\n }\n\n addBotMessage(message) {\n this.webchatRef.current.addBotResponse({\n response: msgToBotonic(\n message,\n (this.theme.message && this.theme.message.customTypes) ||\n this.theme.customMessageTypes\n ),\n })\n }\n\n addBotText(text) {\n this.addBotMessage({ type: INPUT.TEXT, data: text })\n }\n\n addUserMessage(message) {\n this.webchatRef.current.addUserMessage(message)\n }\n\n addUserText(text) {\n this.webchatRef.current.addUserMessage({ type: INPUT.TEXT, data: text })\n }\n\n addUserPayload(payload) {\n this.webchatRef.current.addUserMessage({ type: INPUT.POSTBACK, payload })\n }\n\n setTyping(typing) {\n this.webchatRef.current.setTyping(typing)\n }\n\n open() {\n this.webchatRef.current.openWebchat()\n }\n\n close() {\n this.webchatRef.current.closeWebchat()\n }\n\n toggle() {\n this.webchatRef.current.toggleWebchat()\n }\n\n openCoverComponent() {\n this.webchatRef.current.openCoverComponent()\n }\n\n closeCoverComponent() {\n this.webchatRef.current.closeCoverComponent()\n }\n\n toggleCoverComponent() {\n this.webchatRef.current.toggleCoverComponent()\n }\n\n getMessages() {\n return this.webchatRef.current.getMessages()\n }\n\n clearMessages() {\n this.webchatRef.current.clearMessages()\n }\n\n async getVisibility() {\n return this.resolveWebchatVisibility({\n appId: this.appId,\n visibility: this.visibility,\n })\n }\n\n getLastMessageUpdate() {\n return this.webchatRef.current.getLastMessageUpdate()\n }\n\n updateMessageInfo(msgId, messageInfo) {\n return this.webchatRef.current.updateMessageInfo(msgId, messageInfo)\n }\n\n updateWebchatSettings(settings) {\n return this.webchatRef.current.updateWebchatSettings(settings)\n }\n\n // eslint-disable-next-line complexity\n getComponent(optionsAtRuntime = {}) {\n let {\n theme = {},\n persistentMenu,\n coverComponent,\n blockInputs,\n enableAttachments,\n enableUserInput,\n enableAnimations,\n enableEmojiPicker,\n defaultDelay,\n defaultTyping,\n storage,\n storageKey,\n onInit,\n onOpen,\n onClose,\n onMessage,\n onConnectionChange,\n appId,\n visibility,\n server,\n ...webchatOptions\n } = optionsAtRuntime\n theme = merge(this.theme, theme)\n persistentMenu = persistentMenu || this.persistentMenu\n coverComponent = coverComponent || this.coverComponent\n blockInputs = blockInputs || this.blockInputs\n enableEmojiPicker = enableEmojiPicker || this.enableEmojiPicker\n enableAttachments = enableAttachments || this.enableAttachments\n enableUserInput = enableUserInput || this.enableUserInput\n enableAnimations = enableAnimations || this.enableAnimations\n defaultDelay = defaultDelay || this.defaultDelay\n defaultTyping = defaultTyping || this.defaultTyping\n storage = storage || this.storage\n storageKey = storageKey || this.storageKey\n server = server || this.server\n this.onInit = onInit || this.onInit\n this.onOpen = onOpen || this.onOpen\n this.onClose = onClose || this.onClose\n this.onMessage = onMessage || this.onMessage\n this.onConnectionChange = onConnectionChange || this.onConnectionChange\n this.visibility = visibility || this.visibility\n this.appId = appId || this.appId\n return (\n <Webchat\n {...webchatOptions}\n ref={this.webchatRef}\n host={this.host}\n shadowDOM={this.shadowDOM}\n theme={theme}\n persistentMenu={persistentMenu}\n coverComponent={coverComponent}\n blockInputs={blockInputs}\n enableEmojiPicker={enableEmojiPicker}\n enableAttachments={enableAttachments}\n enableUserInput={enableUserInput}\n enableAnimations={enableAnimations}\n storage={storage}\n storageKey={storageKey}\n defaultDelay={defaultDelay}\n defaultTyping={defaultTyping}\n onInit={(...args) => this.onInitWebchat(...args)}\n onOpen={(...args) => this.onOpenWebchat(...args)}\n onClose={(...args) => this.onCloseWebchat(...args)}\n onUserInput={(...args) => this.onUserInput(...args)}\n onStateChange={webchatState => this.onStateChange(webchatState)}\n server={server}\n />\n )\n }\n\n async isWebchatVisible({ appId }) {\n try {\n const { status } = await HubtypeService.getWebchatVisibility({\n appId,\n })\n return status === 200\n } catch (e) {\n return false\n }\n }\n\n isOnline() {\n return this.webchatRef.current.isOnline()\n }\n\n async resolveWebchatVisibility(optionsAtRuntime) {\n let { appId, visibility } = optionsAtRuntime\n visibility = visibility || this.visibility\n if (visibility === undefined || visibility === true) return true\n if (typeof visibility === 'function' && visibility()) return true\n if (visibility === 'dynamic' && (await this.isWebchatVisible({ appId })))\n return true\n return false\n }\n\n async render(dest, optionsAtRuntime = {}) {\n onDOMLoaded(async () => {\n this.createRootElement(dest)\n const isVisible = await this.resolveWebchatVisibility(optionsAtRuntime)\n if (isVisible)\n render(\n this.getComponent(optionsAtRuntime),\n this.getReactMountNode(dest)\n )\n })\n }\n}\n"],"file":"webchat-app.js"}
|
|
1
|
+
{"version":3,"sources":["../src/webchat-app.jsx"],"names":["WebchatApp","theme","persistentMenu","coverComponent","blockInputs","enableEmojiPicker","enableAttachments","enableUserInput","enableAnimations","hostId","shadowDOM","defaultDelay","defaultTyping","storage","storageKey","onInit","onOpen","onClose","onMessage","onConnectionChange","appId","visibility","server","Boolean","console","warn","WEBCHAT","DEFAULTS","HOST_ID","webchatRef","host","id","document","getElementById","createElement","body","firstChild","insertBefore","appendChild","attachShadow","mode","node","shadowRoot","args","user","input","from","SENDERS","message","hubtypeService","postMessage","onConnectionRegained","session","messagesJSON","lastMessage","length","lastMessageId","lastMessageUpdateDate","getLastMessageUpdate","HubtypeService","onEvent","event","onServiceEvent","unsentInputs","current","getMessages","filter","msg","ack","unsentInput","action","online","setOnline","updateMessageInfo","type","updateWebchatSettings","data","setTyping","bot","addBotMessage","updateUser","addBotResponse","response","customTypes","customMessageTypes","text","INPUT","TEXT","addUserMessage","payload","POSTBACK","typing","openWebchat","closeWebchat","toggleWebchat","openCoverComponent","closeCoverComponent","_customComponent","renderCustomComponent","unmountCustomComponent","toggleCoverComponent","clearMessages","resolveWebchatVisibility","msgId","messageInfo","settings","optionsAtRuntime","webchatOptions","createRootElement","onInitWebchat","onOpenWebchat","onCloseWebchat","onUserInput","webchatState","onStateChange","getWebchatVisibility","status","isOnline","undefined","isWebchatVisible","dest","isVisible","getComponent","getReactMountNode"],"mappings":"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","sourcesContent":["import { HubtypeService, INPUT } from '@botonic/core'\nimport merge from 'lodash.merge'\nimport React, { createRef } from 'react'\nimport { render } from 'react-dom'\n\nimport { SENDERS, WEBCHAT } from './constants'\nimport { msgToBotonic } from './msg-to-botonic'\nimport { isShadowDOMSupported, onDOMLoaded } from './util/dom'\nimport { Webchat } from './webchat/webchat'\n\nexport class WebchatApp {\n constructor({\n theme = {},\n persistentMenu,\n coverComponent,\n blockInputs,\n enableEmojiPicker,\n enableAttachments,\n enableUserInput,\n enableAnimations,\n hostId,\n shadowDOM,\n defaultDelay,\n defaultTyping,\n storage,\n storageKey,\n onInit,\n onOpen,\n onClose,\n onMessage,\n onConnectionChange,\n appId,\n visibility,\n server,\n }) {\n this.theme = theme\n this.persistentMenu = persistentMenu\n this.coverComponent = coverComponent\n this.blockInputs = blockInputs\n this.enableEmojiPicker = enableEmojiPicker\n this.enableAttachments = enableAttachments\n this.enableUserInput = enableUserInput\n this.enableAnimations = enableAnimations\n this.shadowDOM = Boolean(\n typeof shadowDOM === 'function' ? shadowDOM() : shadowDOM\n )\n if (this.shadowDOM && !isShadowDOMSupported()) {\n console.warn('[botonic] ShadowDOM not supported on this browser')\n this.shadowDOM = false\n }\n this.hostId = hostId || WEBCHAT.DEFAULTS.HOST_ID\n this.defaultDelay = defaultDelay\n this.defaultTyping = defaultTyping\n this.storage = storage\n this.storageKey = storageKey\n this.onInit = onInit\n this.onOpen = onOpen\n this.onClose = onClose\n this.onMessage = onMessage\n this.onConnectionChange = onConnectionChange\n this.visibility = visibility\n this.server = server\n this.webchatRef = createRef()\n this.appId = appId\n }\n\n createRootElement(host) {\n // Create root element <div id='root'> if not exists\n // Create shadowDOM to root element if needed\n if (host) {\n if (host.id && this.hostId) {\n if (host.id != this.hostId) {\n console.warn(\n `[botonic] Host ID \"${host.id}\" don't match 'hostId' option: ${this.hostId}. Using value: ${host.id}.`\n )\n this.hostId = host.id\n }\n } else if (host.id) this.hostId = host.id\n else if (this.hostId) host.id = this.hostId\n } else {\n host = document.getElementById(this.hostId)\n }\n if (!host) {\n host = document.createElement('div')\n host.id = this.hostId\n if (document.body.firstChild)\n document.body.insertBefore(host, document.body.firstChild)\n else document.body.appendChild(host)\n }\n this.host = this.shadowDOM ? host.attachShadow({ mode: 'open' }) : host\n }\n\n getReactMountNode(node) {\n if (!node) node = this.host\n return node.shadowRoot ? node.shadowRoot : node\n }\n\n onInitWebchat(...args) {\n this.onInit && this.onInit(this, ...args)\n }\n\n onOpenWebchat(...args) {\n this.onOpen && this.onOpen(this, ...args)\n }\n\n onCloseWebchat(...args) {\n this.onClose && this.onClose(this, ...args)\n }\n\n async onUserInput({ user, input }) {\n this.onMessage &&\n this.onMessage(this, { from: SENDERS.user, message: input })\n return this.hubtypeService.postMessage(user, input)\n }\n\n async onConnectionRegained() {\n return this.hubtypeService.onConnectionRegained()\n }\n\n onStateChange({ session: { user }, messagesJSON }) {\n const lastMessage = messagesJSON[messagesJSON.length - 1]\n const lastMessageId = lastMessage && lastMessage.id\n const lastMessageUpdateDate = this.getLastMessageUpdate()\n if (this.hubtypeService) {\n this.hubtypeService.lastMessageId = lastMessageId\n this.hubtypeService.lastMessageUpdateDate = lastMessageUpdateDate\n } else if (!this.hubtypeService && user) {\n this.hubtypeService = new HubtypeService({\n appId: this.appId,\n user,\n lastMessageId,\n lastMessageUpdateDate,\n onEvent: event => this.onServiceEvent(event),\n unsentInputs: () =>\n this.webchatRef.current\n .getMessages()\n .filter(msg => msg.ack === 0 && msg.unsentInput),\n server: this.server,\n })\n }\n }\n\n onServiceEvent(event) {\n if (event.action === 'connectionChange') {\n this.onConnectionChange && this.onConnectionChange(this, event.online)\n this.webchatRef.current.setOnline(event.online)\n } else if (event.action === 'update_message_info')\n this.updateMessageInfo(event.message.id, event.message)\n else if (event.message.type === 'update_webchat_settings')\n this.updateWebchatSettings(event.message.data)\n else if (event.message.type === 'sender_action')\n this.setTyping(event.message.data === 'typing_on')\n else {\n this.onMessage &&\n this.onMessage(this, { from: SENDERS.bot, message: event.message })\n this.addBotMessage(event.message)\n }\n }\n\n updateUser(user) {\n this.webchatRef.current.updateUser(user)\n }\n\n addBotMessage(message) {\n this.webchatRef.current.addBotResponse({\n response: msgToBotonic(\n message,\n (this.theme.message && this.theme.message.customTypes) ||\n this.theme.customMessageTypes\n ),\n })\n }\n\n addBotText(text) {\n this.addBotMessage({ type: INPUT.TEXT, data: text })\n }\n\n addUserMessage(message) {\n this.webchatRef.current.addUserMessage(message)\n }\n\n addUserText(text) {\n this.webchatRef.current.addUserMessage({ type: INPUT.TEXT, data: text })\n }\n\n addUserPayload(payload) {\n this.webchatRef.current.addUserMessage({ type: INPUT.POSTBACK, payload })\n }\n\n setTyping(typing) {\n this.webchatRef.current.setTyping(typing)\n }\n\n open() {\n this.webchatRef.current.openWebchat()\n }\n\n close() {\n this.webchatRef.current.closeWebchat()\n }\n\n toggle() {\n this.webchatRef.current.toggleWebchat()\n }\n\n openCoverComponent() {\n this.webchatRef.current.openCoverComponent()\n }\n\n closeCoverComponent() {\n this.webchatRef.current.closeCoverComponent()\n }\n\n renderCustomComponent(_customComponent) {\n this.webchatRef.current.renderCustomComponent(_customComponent)\n }\n\n unmountCustomComponent() {\n this.webchatRef.current.unmountCustomComponent()\n }\n\n toggleCoverComponent() {\n this.webchatRef.current.toggleCoverComponent()\n }\n\n getMessages() {\n return this.webchatRef.current.getMessages()\n }\n\n clearMessages() {\n this.webchatRef.current.clearMessages()\n }\n\n async getVisibility() {\n return this.resolveWebchatVisibility({\n appId: this.appId,\n visibility: this.visibility,\n })\n }\n\n getLastMessageUpdate() {\n return this.webchatRef.current.getLastMessageUpdate()\n }\n\n updateMessageInfo(msgId, messageInfo) {\n return this.webchatRef.current.updateMessageInfo(msgId, messageInfo)\n }\n\n updateWebchatSettings(settings) {\n return this.webchatRef.current.updateWebchatSettings(settings)\n }\n\n // eslint-disable-next-line complexity\n getComponent(host, optionsAtRuntime = {}) {\n let {\n theme = {},\n persistentMenu,\n coverComponent,\n blockInputs,\n enableAttachments,\n enableUserInput,\n enableAnimations,\n enableEmojiPicker,\n defaultDelay,\n defaultTyping,\n storage,\n storageKey,\n onInit,\n onOpen,\n onClose,\n onMessage,\n onConnectionChange,\n appId,\n visibility,\n server,\n hostId,\n ...webchatOptions\n } = optionsAtRuntime\n theme = merge(this.theme, theme)\n persistentMenu = persistentMenu || this.persistentMenu\n coverComponent = coverComponent || this.coverComponent\n blockInputs = blockInputs || this.blockInputs\n enableEmojiPicker = enableEmojiPicker || this.enableEmojiPicker\n enableAttachments = enableAttachments || this.enableAttachments\n enableUserInput = enableUserInput || this.enableUserInput\n enableAnimations = enableAnimations || this.enableAnimations\n defaultDelay = defaultDelay || this.defaultDelay\n defaultTyping = defaultTyping || this.defaultTyping\n storage = storage || this.storage\n storageKey = storageKey || this.storageKey\n server = server || this.server\n this.onInit = onInit || this.onInit\n this.onOpen = onOpen || this.onOpen\n this.onClose = onClose || this.onClose\n this.onMessage = onMessage || this.onMessage\n this.onConnectionChange = onConnectionChange || this.onConnectionChange\n this.visibility = visibility || this.visibility\n this.appId = appId || this.appId\n this.hostId = hostId || this.hostId\n this.createRootElement(host)\n return (\n <Webchat\n {...webchatOptions}\n ref={this.webchatRef}\n host={this.host}\n shadowDOM={this.shadowDOM}\n theme={theme}\n persistentMenu={persistentMenu}\n coverComponent={coverComponent}\n blockInputs={blockInputs}\n enableEmojiPicker={enableEmojiPicker}\n enableAttachments={enableAttachments}\n enableUserInput={enableUserInput}\n enableAnimations={enableAnimations}\n storage={storage}\n storageKey={storageKey}\n defaultDelay={defaultDelay}\n defaultTyping={defaultTyping}\n onInit={(...args) => this.onInitWebchat(...args)}\n onOpen={(...args) => this.onOpenWebchat(...args)}\n onClose={(...args) => this.onCloseWebchat(...args)}\n onUserInput={(...args) => this.onUserInput(...args)}\n onStateChange={webchatState => this.onStateChange(webchatState)}\n server={server}\n />\n )\n }\n\n async isWebchatVisible({ appId }) {\n try {\n const { status } = await HubtypeService.getWebchatVisibility({\n appId,\n })\n return status === 200\n } catch (e) {\n return false\n }\n }\n\n isOnline() {\n return this.webchatRef.current.isOnline()\n }\n\n async resolveWebchatVisibility(optionsAtRuntime) {\n let { appId, visibility } = optionsAtRuntime\n visibility = visibility || this.visibility\n if (visibility === undefined || visibility === true) return true\n if (typeof visibility === 'function' && visibility()) return true\n if (visibility === 'dynamic' && (await this.isWebchatVisible({ appId })))\n return true\n return false\n }\n\n async render(dest, optionsAtRuntime = {}) {\n onDOMLoaded(async () => {\n const isVisible = await this.resolveWebchatVisibility(optionsAtRuntime)\n if (isVisible)\n render(\n this.getComponent(dest, optionsAtRuntime),\n this.getReactMountNode(dest)\n )\n })\n }\n}\n"],"file":"webchat-app.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@botonic/react",
|
|
3
|
-
"version": "1.0.0-
|
|
3
|
+
"version": "1.0.0-dev.2",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Build Chatbots using React",
|
|
6
6
|
"main": "src/index.js",
|
|
@@ -28,8 +28,8 @@
|
|
|
28
28
|
"README.md"
|
|
29
29
|
],
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@botonic/core": "
|
|
32
|
-
"axios": "^0.
|
|
31
|
+
"@botonic/core": "^1.0.0-dev.2",
|
|
32
|
+
"axios": "^0.24.0",
|
|
33
33
|
"emoji-picker-react": "^3.2.3",
|
|
34
34
|
"framer-motion": "^3.1.1",
|
|
35
35
|
"he": "^1.2.0",
|
|
@@ -41,13 +41,13 @@
|
|
|
41
41
|
"react-frame-component": "^4.1.3",
|
|
42
42
|
"react-json-tree": "^0.15.0",
|
|
43
43
|
"react-reveal": "^1.2.2",
|
|
44
|
-
"react-router-dom": "^5.2.
|
|
44
|
+
"react-router-dom": "^5.2.1",
|
|
45
45
|
"react-textarea-autosize": "^7.1.2",
|
|
46
46
|
"react-use-storage": "^0.5.1",
|
|
47
47
|
"reconnecting-websocket": "^4.4.0",
|
|
48
48
|
"simplebar-react": "^2.3.3",
|
|
49
49
|
"styled-components": "^5.3.0",
|
|
50
|
-
"ua-parser-js": "^0.
|
|
50
|
+
"ua-parser-js": "^1.0.2",
|
|
51
51
|
"unescape": "^1.0.1",
|
|
52
52
|
"use-async-effect": "^2.2.3",
|
|
53
53
|
"uuid": "^8.3.2"
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"@babel/preset-react": "^7.13.13",
|
|
63
63
|
"@testing-library/react": "^12.0.0",
|
|
64
64
|
"@testing-library/react-hooks": "^7.0.0",
|
|
65
|
-
"@types/react": "17.0.
|
|
65
|
+
"@types/react": "17.0.34",
|
|
66
66
|
"babel-plugin-add-module-exports": "^1.0.2",
|
|
67
67
|
"identity-obj-proxy": "^3.0.0",
|
|
68
68
|
"react-test-renderer": "^16.14.0"
|
|
@@ -56,6 +56,7 @@ export const Button = props => {
|
|
|
56
56
|
: sendInput({
|
|
57
57
|
type: INPUT.TEXT,
|
|
58
58
|
data: String(props.children),
|
|
59
|
+
text: String(props.children),
|
|
59
60
|
payload: `__PATH_PAYLOAD__${props.path}`,
|
|
60
61
|
})
|
|
61
62
|
} else if (props.payload) {
|
|
@@ -64,6 +65,7 @@ export const Button = props => {
|
|
|
64
65
|
: sendInput({
|
|
65
66
|
type: INPUT.TEXT,
|
|
66
67
|
data: String(props.children),
|
|
68
|
+
text: String(props.children),
|
|
67
69
|
payload: props.payload,
|
|
68
70
|
})
|
|
69
71
|
} else if (props.url) {
|
package/src/dev-app.jsx
CHANGED
|
@@ -51,7 +51,7 @@ export class DevApp extends WebchatApp {
|
|
|
51
51
|
})
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
getComponent(optionsAtRuntime = {}) {
|
|
54
|
+
getComponent(host, optionsAtRuntime = {}) {
|
|
55
55
|
let {
|
|
56
56
|
theme = {},
|
|
57
57
|
persistentMenu,
|
|
@@ -67,6 +67,7 @@ export class DevApp extends WebchatApp {
|
|
|
67
67
|
onOpen,
|
|
68
68
|
onClose,
|
|
69
69
|
onMessage,
|
|
70
|
+
hostId,
|
|
70
71
|
...webchatOptions
|
|
71
72
|
} = optionsAtRuntime
|
|
72
73
|
theme = merge(this.theme, theme)
|
|
@@ -83,6 +84,8 @@ export class DevApp extends WebchatApp {
|
|
|
83
84
|
this.onOpen = onOpen || this.onOpen
|
|
84
85
|
this.onClose = onClose || this.onClose
|
|
85
86
|
this.onMessage = onMessage || this.onMessage
|
|
87
|
+
this.hostId = hostId || this.hostId
|
|
88
|
+
this.createRootElement(host)
|
|
86
89
|
return (
|
|
87
90
|
<WebchatDev
|
|
88
91
|
{...webchatOptions}
|
|
@@ -111,8 +114,10 @@ export class DevApp extends WebchatApp {
|
|
|
111
114
|
|
|
112
115
|
render(dest, optionsAtRuntime = {}) {
|
|
113
116
|
onDOMLoaded(() => {
|
|
114
|
-
|
|
115
|
-
|
|
117
|
+
render(
|
|
118
|
+
this.getComponent(dest, optionsAtRuntime),
|
|
119
|
+
this.getReactMountNode(dest)
|
|
120
|
+
)
|
|
116
121
|
})
|
|
117
122
|
}
|
|
118
123
|
|