@botonic/react 0.21.0 → 0.21.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/webchat/components/emoji-picker.js.map +1 -1
- package/lib/webchat/devices/scrollbar-controller.js.map +1 -1
- package/lib/webchat/webchat.js +2 -1
- package/lib/webchat/webchat.js.map +1 -1
- package/lib/webview.js +3 -2
- package/lib/webview.js.map +1 -1
- package/package.json +2 -2
- package/src/webchat/components/emoji-picker.jsx +3 -3
- package/src/webchat/devices/scrollbar-controller.js +1 -2
- package/src/webchat/webchat.jsx +1 -0
- package/src/webview.jsx +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/webchat/components/emoji-picker.jsx"],"names":["EmojiPicker","props","onClick","event","stopPropagation","ROLES","EMOJI_PICKER_ICON","LogoEmoji","Container","styled","div","OpenedEmojiPicker","ref","isComponentVisible","EMOJI_PICKER","onEmojiClick"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;;;AAEO,IAAMA,WAAW,GAAG,SAAdA,WAAc,CAAAC,KAAK,
|
|
1
|
+
{"version":3,"sources":["../../../src/webchat/components/emoji-picker.jsx"],"names":["EmojiPicker","props","onClick","event","stopPropagation","ROLES","EMOJI_PICKER_ICON","LogoEmoji","Container","styled","div","OpenedEmojiPicker","ref","isComponentVisible","EMOJI_PICKER","onEmojiClick"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;;;AAEO,IAAMA,WAAW,GAAG,SAAdA,WAAc,CAAAC,KAAK,EAAI;AAClC,MAAMC,OAAO,GAAG,SAAVA,OAAU,CAAAC,KAAK,EAAI;AACvBF,IAAAA,KAAK,CAACC,OAAN;AACAC,IAAAA,KAAK,CAACC,eAAN;AACD,GAHD;;AAKA,sBACE,gCAAC,qBAAD;AAAe,IAAA,IAAI,EAAEC,iBAAMC;AAA3B,kBACE;AAAK,IAAA,OAAO,EAAEJ;AAAd,kBACE,gCAAC,YAAD;AAAM,IAAA,GAAG,EAAEK;AAAX,IADF,CADF,CADF;AAOD,CAbM;;;;AAeP,IAAMC,SAAS,GAAGC,6BAAOC,GAAV,8LAAf;;AAQO,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAAAV,KAAK,EAAI;AACxC,6BAAoC,gCAAoB,IAApB,EAA0BA,KAAK,CAACC,OAAhC,CAApC;AAAA,MAAQU,GAAR,wBAAQA,GAAR;AAAA,MAAaC,kBAAb,wBAAaA,kBAAb;;AACA,sBACE;AAAK,IAAA,GAAG,EAAED;AAAV,KACGC,kBAAkB,iBACjB,gCAAC,SAAD;AAAW,IAAA,IAAI,EAAER,iBAAMS;AAAvB,kBACE,gCAAC,4BAAD;AAAQ,IAAA,YAAY,EAAEb,KAAK,CAACc,YAA5B;AAA0C,IAAA,gBAAgB,EAAE;AAA5D,IADF,CAFJ,CADF;AASD,CAXM","sourcesContent":["import Picker from 'emoji-picker-react'\nimport React from 'react'\nimport styled from 'styled-components'\n\nimport LogoEmoji from '../../assets/emojiButton.svg'\nimport { ROLES } from '../../constants'\nimport { useComponentVisible } from '../hooks'\nimport { Icon, IconContainer } from './common'\n\nexport const EmojiPicker = props => {\n const onClick = event => {\n props.onClick()\n event.stopPropagation()\n }\n\n return (\n <IconContainer role={ROLES.EMOJI_PICKER_ICON}>\n <div onClick={onClick}>\n <Icon src={LogoEmoji} />\n </div>\n </IconContainer>\n )\n}\n\nconst Container = styled.div`\n display: flex;\n justify-content: flex-end;\n position: absolute;\n right: 3px;\n top: -324px;\n`\n\nexport const OpenedEmojiPicker = props => {\n const { ref, isComponentVisible } = useComponentVisible(true, props.onClick)\n return (\n <div ref={ref}>\n {isComponentVisible && (\n <Container role={ROLES.EMOJI_PICKER}>\n <Picker onEmojiClick={props.onEmojiClick} disableAutoFocus={true} />\n </Container>\n )}\n </div>\n )\n}\n"],"file":"emoji-picker.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/webchat/devices/scrollbar-controller.js"],"names":["debounced","delay","fn","timerId","args","clearTimeout","setTimeout","stopAtScrollLimit","element","scrollTop","scrollHeight","clientHeight","ScrollbarController","currentDevice","host","webchat","DEVICES","MOBILE","IPHONE","limitScrollBoundaries","ontouchstart","e","handleOnTouchMoveEvents","ontouchmove","onmouseover","handleOnMouseOverEvents","scrollableArea","isScrollable","visible","full","target","currentTarget","toggleOnMouseWheelEvents","parentNode","scrollableContent","hasScrollbar","onmousewheel","preventDefault","toggleOnTouchMoveEvents","frame","dStopAtScrollLimit","window","addEventListener","attachEvent"],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["../../../src/webchat/devices/scrollbar-controller.js"],"names":["debounced","delay","fn","timerId","args","clearTimeout","setTimeout","stopAtScrollLimit","element","scrollTop","scrollHeight","clientHeight","ScrollbarController","currentDevice","host","webchat","DEVICES","MOBILE","IPHONE","limitScrollBoundaries","ontouchstart","e","handleOnTouchMoveEvents","ontouchmove","onmouseover","handleOnMouseOverEvents","scrollableArea","isScrollable","visible","full","target","currentTarget","toggleOnMouseWheelEvents","parentNode","scrollableContent","hasScrollbar","onmousewheel","preventDefault","toggleOnTouchMoveEvents","frame","dStopAtScrollLimit","window","addEventListener","attachEvent"],"mappings":"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","sourcesContent":["import {\n getScrollableArea,\n getScrollableContent,\n getWebchatElement,\n} from '../../util/dom'\nimport { DEVICES, isMobileDevice } from '.'\n\nconst debounced = (delay, fn) => {\n let timerId\n return function (...args) {\n if (timerId) {\n clearTimeout(timerId)\n }\n timerId = setTimeout(() => {\n fn(...args)\n timerId = null\n }, delay)\n }\n}\n\nconst stopAtScrollLimit = element => {\n if (element.scrollTop === 0) element.scrollTop = 1\n if (element.scrollHeight - element.scrollTop === element.clientHeight)\n element.scrollTop -= 1\n}\n\nexport class ScrollbarController {\n constructor(currentDevice, host) {\n this.currentDevice = currentDevice\n this.webchat = getWebchatElement(host)\n }\n\n handleScrollEvents() {\n /*\n It handles scroll events for Mobile/Desktop.\n \"ontouchmove\" is the phone equivalent for \"onmouseover\"\n */\n if (isMobileDevice()) {\n if (this.currentDevice !== DEVICES.MOBILE.IPHONE) return\n this.limitScrollBoundaries()\n this.webchat.ontouchstart = e => {\n this.handleOnTouchMoveEvents(e)\n }\n this.webchat.ontouchmove = e => {\n this.handleOnTouchMoveEvents(e)\n }\n } else {\n this.webchat.onmouseover = e => this.handleOnMouseOverEvents(e)\n }\n }\n\n hasScrollbar() {\n const scrollableArea = getScrollableArea(this.webchat)\n const isScrollable =\n scrollableArea.visible.clientHeight - scrollableArea.full.clientHeight < 0\n return isScrollable\n }\n\n handleOnMouseOverEvents(e) {\n let target = e.currentTarget\n while (target) {\n this.toggleOnMouseWheelEvents()\n target = target.parentNode\n }\n }\n\n toggleOnMouseWheelEvents() {\n const scrollableContent = getScrollableContent(this.webchat)\n if (this.hasScrollbar()) {\n scrollableContent.onmousewheel = {}\n return\n }\n scrollableContent.onmousewheel = e => e.preventDefault()\n }\n\n handleOnTouchMoveEvents(e) {\n this.toggleOnTouchMoveEvents()\n }\n\n toggleOnTouchMoveEvents() {\n if (this.hasScrollbar()) {\n this.webchat.ontouchmove = {}\n this.webchat.ontouchstart = {}\n return\n }\n this.webchat.ontouchmove = e => {\n if (e.target === e.currentTarget) e.preventDefault()\n }\n }\n\n limitScrollBoundaries() {\n if (this.currentDevice !== DEVICES.MOBILE.IPHONE) return\n /*\n It adds a bounce effect when top or bottom limits of the scrollbar are reached for iOS,\n as an alternative of overscroll-behavior (https://developer.mozilla.org/en-US/docs/Web/CSS/overscroll-behavior)\n */\n const frame = getScrollableArea(this.webchat).visible\n const dStopAtScrollLimit = debounced(100, stopAtScrollLimit)\n if (frame) {\n if (window.addEventListener) {\n frame.addEventListener('scroll', () => dStopAtScrollLimit(frame), true)\n } else if (window.attachEvent) {\n frame.attachEvent('scroll', () => dStopAtScrollLimit(frame))\n }\n }\n }\n}\n"],"file":"scrollbar-controller.js"}
|
package/lib/webchat/webchat.js
CHANGED
|
@@ -982,7 +982,8 @@ var Webchat = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
|
982
982
|
|
|
983
983
|
var userInputArea = function userInputArea() {
|
|
984
984
|
return userInputEnabled && /*#__PURE__*/_react["default"].createElement(UserInputContainer, {
|
|
985
|
-
style: _objectSpread({}, getThemeProperty(_constants.WEBCHAT.CUSTOM_PROPERTIES.userInputStyle))
|
|
985
|
+
style: _objectSpread({}, getThemeProperty(_constants.WEBCHAT.CUSTOM_PROPERTIES.userInputStyle)),
|
|
986
|
+
className: "user-input-container"
|
|
986
987
|
}, webchatState.isEmojiPickerOpen && /*#__PURE__*/_react["default"].createElement(_emojiPicker.OpenedEmojiPicker, {
|
|
987
988
|
height: webchatState.theme.style.height,
|
|
988
989
|
onEmojiClick: handleSelectedEmoji,
|
|
@@ -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","doRenderCustomComponent","setError","setOnline","clearMessages","openWebviewT","closeWebviewT","updateLastMessageDate","setCurrentAttachment","firstUpdate","isOnline","online","currentDateString","Date","toISOString","theme","initialSession","initialDevSettings","onStateChange","getThemeProperty","customComponent","setCustomComponent","storage","storageKey","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","sendChatEvent","chatEvent","chatEventInput","id","INPUT","CHAT_EVENT","data","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","processedInput","preprocess","match","some","regex","test","checkBlockInput","blockInputs","Array","isArray","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","TEXT","POSTBACK","attachment","sendTextAreaText","isTyping","typingTimeout","clearTimeoutWithReset","reset","waitTime","clearTimeout","stopTyping","startTyping","onKeyDown","keyCode","shiftKey","preventDefault","onKeyUp","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\n const storageKey =\n typeof props.storageKey === 'function'\n ? props.storageKey()\n : props.storageKey\n\n const [botonicState, saveState] = useStorageState(storage, storageKey)\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 const sendChatEvent = async chatEvent => {\n const chatEventInput = {\n id: uuidv4(),\n type: INPUT.CHAT_EVENT,\n data: chatEvent,\n }\n props.onUserInput &&\n props.onUserInput({\n user: webchatState.session.user,\n input: chatEventInput,\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 const processedInput = rule.preprocess\n ? rule.preprocess(inputData)\n : inputData\n\n return rule.match.some(regex => {\n if (typeof regex === 'string') regex = deserializeRegex(regex)\n return regex.test(processedInput)\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 let isTyping = false\n let typingTimeout = null\n\n function clearTimeoutWithReset(reset) {\n const waitTime = 20 * 1000\n if (typingTimeout) clearTimeout(typingTimeout)\n if (reset) typingTimeout = setTimeout(stopTyping, waitTime)\n }\n\n function startTyping() {\n isTyping = true\n sendChatEvent('typing_on')\n }\n\n function stopTyping() {\n clearTimeoutWithReset(false)\n isTyping = false\n sendChatEvent('typing_off')\n }\n\n const onKeyDown = event => {\n if (event.keyCode === 13 && event.shiftKey === false) {\n event.preventDefault()\n sendTextAreaText()\n stopTyping()\n }\n }\n\n const onKeyUp = () => {\n if (textArea.current.value === '') {\n stopTyping()\n return\n }\n if (!isTyping) {\n startTyping()\n }\n clearTimeoutWithReset(true)\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 onKeyUp={onKeyUp}\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"}
|
|
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","storageKey","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","sendChatEvent","chatEvent","chatEventInput","id","INPUT","CHAT_EVENT","data","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","processedInput","preprocess","match","some","regex","test","checkBlockInput","blockInputs","Array","isArray","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","TEXT","POSTBACK","attachment","sendTextAreaText","isTyping","typingTimeout","clearTimeoutWithReset","reset","waitTime","clearTimeout","stopTyping","startTyping","onKeyDown","keyCode","shiftKey","preventDefault","onKeyUp","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\n const storageKey =\n typeof props.storageKey === 'function'\n ? props.storageKey()\n : props.storageKey\n\n const [botonicState, saveState] = useStorageState(storage, storageKey)\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 const sendChatEvent = async chatEvent => {\n const chatEventInput = {\n id: uuidv4(),\n type: INPUT.CHAT_EVENT,\n data: chatEvent,\n }\n props.onUserInput &&\n props.onUserInput({\n user: webchatState.session.user,\n input: chatEventInput,\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 const processedInput = rule.preprocess\n ? rule.preprocess(inputData)\n : inputData\n\n return rule.match.some(regex => {\n if (typeof regex === 'string') regex = deserializeRegex(regex)\n return regex.test(processedInput)\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 let isTyping = false\n let typingTimeout = null\n\n function clearTimeoutWithReset(reset) {\n const waitTime = 20 * 1000\n if (typingTimeout) clearTimeout(typingTimeout)\n if (reset) typingTimeout = setTimeout(stopTyping, waitTime)\n }\n\n function startTyping() {\n isTyping = true\n sendChatEvent('typing_on')\n }\n\n function stopTyping() {\n clearTimeoutWithReset(false)\n isTyping = false\n sendChatEvent('typing_off')\n }\n\n const onKeyDown = event => {\n if (event.keyCode === 13 && event.shiftKey === false) {\n event.preventDefault()\n sendTextAreaText()\n stopTyping()\n }\n }\n\n const onKeyUp = () => {\n if (textArea.current.value === '') {\n stopTyping()\n return\n }\n if (!isTyping) {\n startTyping()\n }\n clearTimeoutWithReset(true)\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 className='user-input-container'\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 onKeyUp={onKeyUp}\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/webview.js
CHANGED
|
@@ -76,7 +76,7 @@ var App = /*#__PURE__*/function (_React$Component) {
|
|
|
76
76
|
key: "close",
|
|
77
77
|
value: function () {
|
|
78
78
|
var _close = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(options) {
|
|
79
|
-
var payload, s, baseUrl, resp, provider, impId;
|
|
79
|
+
var payload, s, baseUrl, resp, provider, impId, phone_number;
|
|
80
80
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
81
81
|
while (1) {
|
|
82
82
|
switch (_context.prev = _context.next) {
|
|
@@ -122,7 +122,8 @@ var App = /*#__PURE__*/function (_React$Component) {
|
|
|
122
122
|
impId = this.state.session.user.imp_id;
|
|
123
123
|
|
|
124
124
|
if (provider === _core.PROVIDER.WHATSAPP) {
|
|
125
|
-
|
|
125
|
+
phone_number = this.state.session.user.unformatted_phone_number;
|
|
126
|
+
location.href = 'https://wa.me/' + phone_number;
|
|
126
127
|
}
|
|
127
128
|
|
|
128
129
|
if (provider === _core.PROVIDER.TELEGRAM) {
|
package/lib/webview.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/webview.jsx"],"names":["App","props","url","URL","window","location","href","params","Array","from","searchParams","entries","filter","key","value","reduce","o","session","JSON","parse","get","state","options","payload","path","s","baseUrl","_hubtype_api","method","bot","id","data","chat_id","user","resp","console","log","provider","impId","imp_id","PROVIDER","WHATSAPP","TELEGRAM","APPLE","TWITTER","FACEBOOK","MessengerExtensions","requestCloseBrowser","undefined","err","e","WEBCHAT","parent","postMessage","requestContext","getString","stringId","locales","__locale","closeWebview","close","bind","webviews","map","Webview","i","name","React","Component","WebviewApp","dest"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AAEA;;;;;;IAEMA,G;;;;;AACJ,eAAYC,KAAZ,EAAmB;AAAA;;AAAA;AACjB,8BAAMA,KAAN;AACA,QAAMC,GAAG,GAAG,IAAIC,GAAJ,CAAQC,MAAM,CAACC,QAAP,CAAgBC,IAAxB,CAAZ;AACA,QAAMC,MAAM,GAAGC,KAAK,CAACC,IAAN,CAAWP,GAAG,CAACQ,YAAJ,CAAiBC,OAAjB,EAAX,EACZC,MADY,CACL;AAAA;AAAA,UAAEC,GAAF;AAAA,UAAOC,KAAP;;AAAA,aAAkBD,GAAG,IAAI,SAAzB;AAAA,KADK,EAEZE,MAFY,CAEL,UAACC,CAAD,SAAqB;AAAA;AAAA,UAAhBH,GAAgB;AAAA,UAAXC,KAAW;;AAC3BE,MAAAA,CAAC,CAACH,GAAD,CAAD,GAASC,KAAT;AACA,aAAOE,CAAP;AACD,KALY,EAKV,EALU,CAAf;AAMA,QAAMC,OAAO,GAAGC,IAAI,CAACC,KAAL,CAAWjB,GAAG,CAACQ,YAAJ,CAAiBU,GAAjB,CAAqB,SAArB,KAAmC,EAA9C,CAAhB;AACA,UAAKC,KAAL,GAAa;AAAEJ,MAAAA,OAAO,EAAPA,OAAF;AAAWV,MAAAA,MAAM,EAANA;AAAX,KAAb;AAViB;AAWlB;;;;;iGAED,iBAAYe,OAAZ;AAAA;AAAA;AAAA;AAAA;AAAA;AACMC,gBAAAA,OADN,GACgBD,OAAO,GAAGA,OAAO,CAACC,OAAX,GAAqB,IAD5C;AAEE,oBAAID,OAAO,CAACE,IAAZ,EAAkBD,OAAO,6BAAsBD,OAAO,CAACE,IAA9B,CAAP;;AAFpB,qBAGMD,OAHN;AAAA;AAAA;AAAA;;AAII,oBAAID,OAAO,CAACf,MAAZ,EAAoB;AAClBgB,kBAAAA,OAAO,aAAMA,OAAN,cAAiB,8BAAmBD,OAAO,CAACf,MAA3B,CAAjB,CAAP;AACD;;AACKkB,gBAAAA,CAPV,GAOc,KAAKJ,KAAL,CAAWJ,OAPzB;AAAA;AASYS,gBAAAA,OATZ,GASsBD,CAAC,CAACE,YAAF,IAAkB,yBATxC;AAAA;AAAA,uBAUyB,uBAAM;AACvBC,kBAAAA,MAAM,EAAE,MADe;AAEvB1B,kBAAAA,GAAG,YAAKwB,OAAL,sBAAwBD,CAAC,CAACI,GAAF,CAAMC,EAA9B,oBAFoB;AAGvB;AACAC,kBAAAA,IAAI,EAAE;AAAER,oBAAAA,OAAO,EAAEA,OAAX;AAAoBS,oBAAAA,OAAO,EAAEP,CAAC,CAACQ,IAAF,CAAOH;AAApC;AAJiB,iBAAN,CAVzB;;AAAA;AAUYI,gBAAAA,IAVZ;AAAA;AAAA;;AAAA;AAAA;AAAA;AAiBMC,gBAAAA,OAAO,CAACC,GAAR;;AAjBN;AAoBQC,gBAAAA,QApBR,GAoBmB,KAAKhB,KAAL,CAAWJ,OAAX,CAAmBgB,IAAnB,CAAwBI,QApB3C;AAqBQC,gBAAAA,KArBR,GAqBgB,KAAKjB,KAAL,CAAWJ,OAAX,CAAmBgB,IAAnB,CAAwBM,MArBxC;;AAsBE,oBAAIF,QAAQ,KAAKG,eAASC,QAA1B,EAAoC;
|
|
1
|
+
{"version":3,"sources":["../src/webview.jsx"],"names":["App","props","url","URL","window","location","href","params","Array","from","searchParams","entries","filter","key","value","reduce","o","session","JSON","parse","get","state","options","payload","path","s","baseUrl","_hubtype_api","method","bot","id","data","chat_id","user","resp","console","log","provider","impId","imp_id","PROVIDER","WHATSAPP","phone_number","unformatted_phone_number","TELEGRAM","APPLE","TWITTER","FACEBOOK","MessengerExtensions","requestCloseBrowser","undefined","err","e","WEBCHAT","parent","postMessage","requestContext","getString","stringId","locales","__locale","closeWebview","close","bind","webviews","map","Webview","i","name","React","Component","WebviewApp","dest"],"mappings":"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","sourcesContent":["import { getString, params2queryString, PROVIDER } from '@botonic/core'\nimport axios from 'axios'\nimport React from 'react'\nimport { render } from 'react-dom'\nimport { BrowserRouter, Route } from 'react-router-dom'\n\nimport { RequestContext } from './contexts'\n\nclass App extends React.Component {\n constructor(props) {\n super(props)\n const url = new URL(window.location.href)\n const params = Array.from(url.searchParams.entries())\n .filter(([key, value]) => key != 'context')\n .reduce((o, [key, value]) => {\n o[key] = value\n return o\n }, {})\n const session = JSON.parse(url.searchParams.get('context') || {})\n this.state = { session, params }\n }\n\n async close(options) {\n let payload = options ? options.payload : null\n if (options.path) payload = `__PATH_PAYLOAD__${options.path}`\n if (payload) {\n if (options.params) {\n payload = `${payload}?${params2queryString(options.params)}`\n }\n const s = this.state.session\n try {\n const baseUrl = s._hubtype_api || 'https://api.hubtype.com'\n const resp = await axios({\n method: 'post',\n url: `${baseUrl}/v1/bots/${s.bot.id}/send_postback/`,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n data: { payload: payload, chat_id: s.user.id },\n })\n } catch (e) {\n console.log(e)\n }\n }\n const provider = this.state.session.user.provider\n const impId = this.state.session.user.imp_id\n if (provider === PROVIDER.WHATSAPP) {\n const phone_number = this.state.session.user.unformatted_phone_number\n location.href = 'https://wa.me/' + phone_number\n }\n if (provider === PROVIDER.TELEGRAM) {\n location.href = 'https://t.me/' + impId\n }\n if (provider === PROVIDER.APPLE) {\n location.href = 'https://bcrw.apple.com/urn:biz:' + impId\n }\n if (provider === PROVIDER.TWITTER) {\n location.href =\n 'https://twitter.com/messages/compose?recipient_id=' + impId\n }\n if (provider === PROVIDER.FACEBOOK) {\n try {\n window.MessengerExtensions.requestCloseBrowser(\n () => undefined,\n err => console.log(err)\n )\n } catch (e) {}\n }\n if (provider === PROVIDER.WEBCHAT) {\n try {\n await parent.postMessage('botonicCloseWebview', '*')\n } catch (e) {}\n }\n }\n\n render() {\n const requestContext = {\n getString: stringId =>\n getString(this.props.locales, this.state.session.__locale, stringId),\n session: this.state.session || {},\n params: this.state.params || {},\n closeWebview: this.close.bind(this),\n }\n\n return (\n <RequestContext.Provider value={requestContext}>\n {this.props.webviews.map((Webview, i) => (\n <Route key={i} path={`/${Webview.name}`} component={Webview} />\n ))}\n </RequestContext.Provider>\n )\n }\n}\n\nexport class WebviewApp {\n constructor({ webviews, locales }) {\n this.webviews = webviews\n this.locales = locales\n }\n\n render(dest) {\n render(\n <BrowserRouter>\n <App webviews={this.webviews} locales={this.locales} />\n </BrowserRouter>,\n dest\n )\n }\n}\n"],"file":"webview.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@botonic/react",
|
|
3
|
-
"version": "0.21.
|
|
3
|
+
"version": "0.21.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Build Chatbots using React",
|
|
6
6
|
"main": "src/index.js",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"README.md"
|
|
29
29
|
],
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@botonic/core": "0.21.
|
|
31
|
+
"@botonic/core": "~0.21.1",
|
|
32
32
|
"axios": "^0.24.0",
|
|
33
33
|
"emoji-picker-react": "^3.2.3",
|
|
34
34
|
"framer-motion": "^3.1.1",
|
|
@@ -7,8 +7,8 @@ import { ROLES } from '../../constants'
|
|
|
7
7
|
import { useComponentVisible } from '../hooks'
|
|
8
8
|
import { Icon, IconContainer } from './common'
|
|
9
9
|
|
|
10
|
-
export const EmojiPicker = props =>{
|
|
11
|
-
const onClick = event =>{
|
|
10
|
+
export const EmojiPicker = props => {
|
|
11
|
+
const onClick = event => {
|
|
12
12
|
props.onClick()
|
|
13
13
|
event.stopPropagation()
|
|
14
14
|
}
|
|
@@ -20,7 +20,7 @@ export const EmojiPicker = props =>{
|
|
|
20
20
|
</div>
|
|
21
21
|
</IconContainer>
|
|
22
22
|
)
|
|
23
|
-
}
|
|
23
|
+
}
|
|
24
24
|
|
|
25
25
|
const Container = styled.div`
|
|
26
26
|
display: flex;
|
package/src/webchat/webchat.jsx
CHANGED
package/src/webview.jsx
CHANGED
|
@@ -43,7 +43,8 @@ class App extends React.Component {
|
|
|
43
43
|
const provider = this.state.session.user.provider
|
|
44
44
|
const impId = this.state.session.user.imp_id
|
|
45
45
|
if (provider === PROVIDER.WHATSAPP) {
|
|
46
|
-
|
|
46
|
+
const phone_number = this.state.session.user.unformatted_phone_number
|
|
47
|
+
location.href = 'https://wa.me/' + phone_number
|
|
47
48
|
}
|
|
48
49
|
if (provider === PROVIDER.TELEGRAM) {
|
|
49
50
|
location.href = 'https://t.me/' + impId
|