@vamlabs/vam-chatbot 0.1.80-dev.183.1 → 0.1.81-dev.184.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.
@@ -26,7 +26,7 @@ return /******/ (() => { // webpackBootstrap
26
26
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
27
27
 
28
28
  "use strict";
29
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/components/LazyMotion/index.mjs\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/render/dom/features-animation.mjs\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/render/components/m/proxy.mjs\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! axios */ \"./node_modules/axios/lib/axios.js\");\n/* harmony import */ var _components_ChatbotHeader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/ChatbotHeader */ \"./components/ChatbotHeader.jsx\");\n/* harmony import */ var _components_ChatbotBody__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/ChatbotBody */ \"./components/ChatbotBody.jsx\");\n/* harmony import */ var _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Chatbot.module.css */ \"./Chatbot.module.css\");\n/* harmony import */ var _utils_variants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils/variants */ \"./utils/variants.js\");\n/* harmony import */ var _utils_useClickHandler__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils/useClickHandler */ \"./utils/useClickHandler.js\");\n/* harmony import */ var _utils_defaults__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./utils/defaults */ \"./utils/defaults.js\");\n/* harmony import */ var _utils_config__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./utils/config */ \"./utils/config.js\");\n/* harmony import */ var _utils_sseClient__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./utils/sseClient */ \"./utils/sseClient.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n/* \n- valid chatbot states:\n 0: \"at rest\",\n 1: \"waiting for response from api\"\n 2: \"receiving response from api\"\n*/\n\nconst fixSpecialLLMChars = text => {\n // forward slash is replaced by <|slash|> in the response from the api\n return text.replace(/\\u003c\\|slash\\|\\u003e/g, \"/\");\n};\nconst normalizeResponseText = text => {\n if (typeof text !== \"string\") return \"\";\n return fixSpecialLLMChars(text);\n};\nconst normalizeAuthToken = value => {\n if (typeof value !== \"string\") return \"\";\n return value.trim();\n};\nconst normalizeLayout = layout => layout === \"inline\" ? \"inline\" : \"floating\";\nconst CHATBOT_CONFIG_STATUS = {\n LOADING: \"loading\",\n READY: \"ready\",\n ERROR: \"error\"\n};\nconst supportRedirectChannels = [\"whatsapp\", \"telegram\"];\nconst getSupportRedirects = (externalRedirectMetadata, botMessageCount) => {\n return supportRedirectChannels.reduce((redirects, channel) => {\n const channelConfig = externalRedirectMetadata?.[channel];\n const triggerFrequency = Number(channelConfig?.trigger_message_frequency);\n const redirectUrl = channelConfig?.redirect_url;\n if (triggerFrequency > 0 && redirectUrl && botMessageCount % triggerFrequency === 0) {\n redirects.push({\n channel,\n url: redirectUrl,\n messageText: channelConfig?.message_text,\n buttonLabel: channelConfig?.button_label\n });\n }\n return redirects;\n }, []);\n};\nconst applySupportRedirects = (messageData, externalRedirectMetadata, botMessageCount) => {\n const supportRedirects = getSupportRedirects(externalRedirectMetadata, botMessageCount);\n if (supportRedirects.length > 0) {\n messageData.showSupportButton = true;\n messageData.supportUrl = supportRedirects[0].url;\n messageData.supportChannel = supportRedirects[0].channel;\n messageData.supportRedirects = supportRedirects;\n }\n};\nconst resolveAuthToken = async _ref => {\n let {\n authToken,\n authTokenProvider\n } = _ref;\n if (typeof authTokenProvider === \"function\") {\n const providedToken = await authTokenProvider();\n const normalizedToken = normalizeAuthToken(providedToken);\n if (normalizedToken) return normalizedToken;\n }\n return normalizeAuthToken(authToken);\n};\nconst randomId = () => {\n try {\n if (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n } catch (e) {}\n return `${Date.now()}-${Math.random().toString(16).slice(2)}`;\n};\nfunction Chatbot(_ref2) {\n let {\n clientId,\n onTrackEvent,\n authToken,\n authTokenProvider,\n layout = \"floating\"\n } = _ref2;\n const [messageList, setMessageList] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]);\n const [inputText, setInputText] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(\"\");\n const [chatbotState, setChatbotState] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(0);\n const [chatbotMinimized, setChatbotMinimized] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true);\n const [chatbotPopupMinimized, setChatbotPopupMinimized] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n const [promptsData, setPromptsData] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n show: true,\n prompts: []\n });\n const [promptsMinimized, setPromptsMinimized] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true);\n const [chatbotConfig, setChatbotConfig] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n status: CHATBOT_CONFIG_STATUS.LOADING,\n data: {}\n });\n const [chatbotIcon, setChatbotIcon] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n const defaultMessageList = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)([]);\n const conversationIdRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(randomId());\n const streamAbortRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const pendingFeedbackRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const inputRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const conversationRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const userScrolledUpRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(false);\n const chatbotRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const normalizedLayout = normalizeLayout(layout);\n const isInlineLayout = normalizedLayout === \"inline\";\n\n // Use the custom hook to track clicks\n (0,_utils_useClickHandler__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(onTrackEvent, chatbotRef);\n\n // use effect to upate the css variables once available through the chatbot config API\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n try {\n if (chatbotConfig?.data?.styles?.css_variables) {\n const chatbotParent = chatbotRef.current;\n if (!chatbotParent) return;\n for (let variable in chatbotConfig.data.styles.css_variables) {\n chatbotParent.style.setProperty(`--${variable}`, chatbotConfig.data.styles.css_variables[variable]);\n }\n }\n } catch (error) {\n console.log(error);\n }\n }, [chatbotConfig?.data?.styles?.css_variables]);\n\n // useeffect to store the chatbot icon when its url is fetched from the chatbot config API\n // this is to prevent the api call being made on render of every message\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n try {\n if (chatbotConfig?.data?.icon_url) {\n const fetchChatbotIcon = async () => {\n let url = chatbotConfig?.data?.icon_url;\n let apiResponse = await (0,axios__WEBPACK_IMPORTED_MODULE_10__[\"default\"])({\n url,\n method: \"GET\",\n responseType: \"blob\"\n });\n let imageBlob = apiResponse.data;\n if (imageBlob) {\n let imageObjectURL = URL.createObjectURL(imageBlob);\n setChatbotIcon(imageObjectURL);\n }\n };\n fetchChatbotIcon();\n }\n } catch (error) {\n console.log(error);\n }\n }, [chatbotConfig?.data?.icon_url]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n const fetchConfigData = async () => {\n // Check if configUrl is null and handle appropriately\n if (!_utils_config__WEBPACK_IMPORTED_MODULE_7__.configUrl) {\n console.error(\"Chatbot config URL is not set. Please provide CHATBOT_DEV_URL or CHATBOT_PROD_URL environment variables.\");\n setChatbotConfig({\n status: CHATBOT_CONFIG_STATUS.ERROR,\n data: {}\n });\n return;\n }\n const url = `${_utils_config__WEBPACK_IMPORTED_MODULE_7__.configUrl}/api/getBotConfig`;\n const method = \"POST\";\n const requestBody = {\n clientId\n };\n try {\n let apiResponse = await (0,axios__WEBPACK_IMPORTED_MODULE_10__[\"default\"])({\n url,\n method,\n data: requestBody\n });\n if (apiResponse?.data) {\n let data = apiResponse.data;\n setChatbotConfig({\n status: CHATBOT_CONFIG_STATUS.READY,\n data\n });\n setPromptsData(data?.default_prompts || {\n show: false,\n prompts: []\n });\n setMessageList(data?.default_message_list || []);\n defaultMessageList.current = data?.default_message_list || [];\n } else {\n // handle no data here\n console.log(\"no data found for the provided client id: \", clientId);\n setChatbotConfig({\n status: CHATBOT_CONFIG_STATUS.ERROR,\n data: {}\n });\n }\n } catch (e) {\n console.error(e);\n setChatbotConfig({\n status: CHATBOT_CONFIG_STATUS.ERROR,\n data: {}\n });\n // handle api failure here\n }\n };\n fetchConfigData();\n }, [clientId]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n return () => {\n streamAbortRef.current?.abort?.();\n };\n }, []);\n\n // scroll to the latest message whenever the message list updates\n // but only if the user hasn't manually scrolled up during streaming\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (userScrolledUpRef.current) {\n return;\n }\n const conversation = conversationRef.current;\n if (!conversation) return;\n conversation.scrollTo({\n top: conversation.scrollHeight,\n behavior: \"smooth\"\n });\n }, [messageList]);\n\n // detects when the user scrolls up during streaming and disables auto-scroll\n const handleUserScroll = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(e => {\n if (chatbotState !== 2) return;\n const el = e.target;\n const threshold = 30;\n const isAtBottom = el.scrollHeight - el.scrollTop - el.clientHeight < threshold;\n if (!isAtBottom) {\n userScrolledUpRef.current = true;\n }\n }, [chatbotState]);\n const handleStreamEnvelope = env => {\n try {\n let {\n status,\n data\n } = env || {};\n let {\n response,\n sources,\n image_links,\n promoted_topics\n } = data || {};\n const activeFeedbackPayload = pendingFeedbackRef.current;\n const normalizedResponse = normalizeResponseText(response);\n const normalizedSources = sources?.map(fixSpecialLLMChars);\n const normalizedImageLinks = image_links?.map(fixSpecialLLMChars);\n const normalizedPromotedTopics = promoted_topics?.filter(item => item?.title);\n const promotedImageLinks = normalizedPromotedTopics?.map(pt => pt?.image_link)?.filter(Boolean)?.map(fixSpecialLLMChars);\n if (status === \"streaming\") {\n // set the chatbot state to \"receiving response\" and initialize the response\n setChatbotState(2);\n if (normalizedResponse) {\n setMessageList(prevList => {\n let responseList = [...prevList];\n try {\n let latestMessage = prevList.slice(-1)[0];\n if (latestMessage?.status === \"streaming\") {\n latestMessage.data.text = normalizedResponse;\n } else {\n let responseMessage = {\n source: \"bot\",\n data: {\n text: normalizedResponse,\n feedbackPayload: activeFeedbackPayload ? {\n ...activeFeedbackPayload\n } : undefined\n },\n origin: \"server\",\n status: \"streaming\"\n };\n responseList = [...responseList, responseMessage];\n }\n } catch (error) {}\n return responseList;\n });\n }\n } else if (status === \"done\") {\n setChatbotState(0);\n // re-enable auto-scroll for the next answer\n userScrolledUpRef.current = false;\n\n // update the status as done for the last message\n setMessageList(prevList => {\n let responseList = [...prevList];\n try {\n let latestMessage = responseList.slice(-1)[0];\n const finalResponseText = normalizedResponse || _utils_defaults__WEBPACK_IMPORTED_MODULE_6__.errorResponse;\n const finalFeedbackPayload = activeFeedbackPayload ? {\n ...activeFeedbackPayload,\n assistantResponse: finalResponseText\n } : undefined;\n const externalRedirectMetadata = chatbotConfig?.data?.external_redirect_metadata;\n const feedbackConfig = chatbotConfig?.data?.external_redirect_metadata?.internal_feedback;\n if (latestMessage?.source !== \"user\") {\n latestMessage.status = \"done\";\n latestMessage.data.text = finalResponseText;\n latestMessage.data.sources = normalizedSources;\n latestMessage.data.image_links = promotedImageLinks?.length > 0 ? promotedImageLinks : normalizedImageLinks;\n latestMessage.data.promoted_topics = normalizedPromotedTopics;\n latestMessage.data.feedbackPayload = finalFeedbackPayload;\n\n // Logic to show support redirects at their configured frequency\n const botMessageCount = responseList.filter(msg => msg.source === \"bot\" && msg.origin === \"server\").length;\n applySupportRedirects(latestMessage.data, externalRedirectMetadata, botMessageCount);\n\n // Logic to show feedback form\n if (feedbackConfig) {\n const feedbackFrequency = feedbackConfig?.trigger_message_frequency;\n if (feedbackFrequency && botMessageCount % feedbackFrequency === 0) {\n latestMessage.data.showFeedbackForm = true;\n }\n }\n } else {\n let responseMessage = {\n source: \"bot\",\n data: {\n text: finalResponseText,\n sources: normalizedSources,\n image_links: promotedImageLinks?.length > 0 ? promotedImageLinks : normalizedImageLinks,\n promoted_topics: normalizedPromotedTopics,\n feedbackPayload: finalFeedbackPayload\n },\n origin: \"server\",\n status: \"done\"\n };\n const nextBotMessageCount = responseList.filter(msg => msg.source === \"bot\" && msg.origin === \"server\").length + 1;\n applySupportRedirects(responseMessage.data, externalRedirectMetadata, nextBotMessageCount);\n\n // Logic to show feedback form\n if (feedbackConfig) {\n const feedbackFrequency = feedbackConfig?.trigger_message_frequency;\n if (feedbackFrequency && nextBotMessageCount % feedbackFrequency === 0) {\n responseMessage.data.showFeedbackForm = true;\n }\n }\n responseList = [...responseList, responseMessage];\n }\n } catch (error) {}\n return responseList;\n });\n pendingFeedbackRef.current = null;\n }\n } catch (error) {}\n };\n\n // to keep the input field in focus and scroll to the latest message\n // when the enter button is clicked.\n // const focusInput = () => {\n // inputRef.current.focus();\n // };\n\n // to handle the minimize/maximize animation of the chatbot.\n const handleChatbotAnimation = () => {\n setChatbotMinimized(!chatbotMinimized);\n };\n\n // to reset the chatbot content.\n const resetChatbot = () => {\n try {\n streamAbortRef.current?.abort?.();\n streamAbortRef.current = null;\n pendingFeedbackRef.current = null;\n conversationIdRef.current = randomId();\n setMessageList(defaultMessageList.current);\n setPromptsData(prevData => {\n return {\n ...prevData,\n show: true\n };\n });\n setChatbotState(0);\n setInputText(\"\");\n } catch (error) {}\n };\n const handleInput = event => {\n try {\n setInputText(event.target.value);\n } catch (error) {}\n };\n const getChatHistory = messages => {\n let response = [];\n try {\n let historyItem = {\n user: \"\",\n assistant: \"\"\n };\n for (let message of messages || []) {\n if (message.source === \"user\") {\n historyItem.user = message?.data?.text;\n } else if (message.source === \"bot\" && message.origin === \"server\") {\n if (message?.status === \"done\") {\n historyItem.assistant = message?.data?.text;\n response.push(historyItem);\n historyItem = {\n user: \"\",\n assistant: \"\"\n };\n }\n }\n }\n } catch (error) {\n console.log(error);\n } finally {\n return response;\n }\n };\n const getPromotionsShown = messages => {\n const out = [];\n try {\n let pendingUserSeen = false;\n for (let message of messages || []) {\n if (message.source === \"user\") {\n pendingUserSeen = true;\n continue;\n }\n if (!pendingUserSeen) continue;\n if (message.source === \"bot\" && message.origin === \"server\" && message.status === \"done\") {\n const titles = (message?.data?.promoted_topics || []).map(t => t?.title).filter(t => typeof t === \"string\" && t.trim().length > 0);\n out.push(titles);\n pendingUserSeen = false;\n }\n }\n } catch (error) {}\n return out;\n };\n const startNewStream = async (prompt, prevMessages) => {\n const chatbotBaseUrl = chatbotConfig?.data?.chatbot_url || chatbotConfig?.data?.chatbotUrl;\n if (!chatbotBaseUrl) {\n throw new Error(\"chatbot_url missing from config\");\n }\n streamAbortRef.current?.abort?.();\n const abortController = new AbortController();\n streamAbortRef.current = abortController;\n let chatHistory = getChatHistory(prevMessages);\n let promotionsShown = getPromotionsShown(prevMessages);\n if (chatHistory.length > 40) {\n const start = chatHistory.length - 40;\n chatHistory = chatHistory.slice(start);\n promotionsShown = promotionsShown.slice(start);\n }\n const messageId = randomId();\n const token = await resolveAuthToken({\n authToken,\n authTokenProvider\n });\n const pagePath = typeof window !== \"undefined\" ? window.location.pathname || \"/\" : \"/\";\n const session = await (0,_utils_sseClient__WEBPACK_IMPORTED_MODULE_8__.mintChatbotSessionToken)({\n chatbotBaseUrl,\n authToken: token,\n pagePath,\n signal: abortController.signal\n });\n if (!session?.token) {\n throw new Error(\"missing session token\");\n }\n const conversationID = conversationIdRef.current;\n const feedbackChatHistory = chatHistory.slice(-5);\n pendingFeedbackRef.current = {\n chatbotBaseUrl,\n token: session.token,\n messageID: messageId,\n conversationID,\n userQuery: prompt,\n chatHistory: feedbackChatHistory\n };\n await (0,_utils_sseClient__WEBPACK_IMPORTED_MODULE_8__.streamChatbotSse)({\n chatbotBaseUrl,\n token: session.token,\n body: {\n chatHistory,\n conversationId: conversationID,\n message: prompt,\n messageId,\n promotionsShown\n },\n signal: abortController.signal,\n onEnvelope: handleStreamEnvelope\n });\n };\n const handleSubmit = async function () {\n let prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n let typewriterEffect = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n if (!prompt) {\n prompt = inputText;\n } else {\n typewriterEffect = true;\n }\n try {\n prompt = prompt.trim();\n if (prompt) {\n const prevMessages = messageList;\n setChatbotState(1);\n\n // put the user's prompt in the chat\n let userMessage = {\n source: \"user\",\n data: {\n text: prompt\n },\n status: \"done\",\n typewriterEffect\n };\n setMessageList(prevList => [...prevList, userMessage]);\n\n // hide the default prompts\n setPromptsData({\n ...promptsData,\n show: false\n });\n\n // clear the input field\n setInputText(\"\");\n await startNewStream(prompt, prevMessages);\n }\n } catch (error) {\n if (error?.name === \"AbortError\") {\n return;\n }\n console.error(\"Error sending chat message:\", error);\n setChatbotState(0);\n setMessageList(prevList => [...prevList, {\n source: \"error\",\n data: {\n text: _utils_defaults__WEBPACK_IMPORTED_MODULE_6__.errorResponse\n },\n status: \"done\"\n }]);\n }\n };\n const chatbotParentClassName = `${_Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].chatbotParent} ${isInlineLayout ? _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].inlineChatbotParent : \"\"}`;\n const chatbotContainerClassName = `${_Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].chatbotContainer} ${isInlineLayout ? _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].inlineChatbotContainer : \"\"}`;\n const chatbotContainerAnimationProps = isInlineLayout ? {} : {\n animate: chatbotMinimized ? \"hide\" : \"show\",\n variants: _utils_variants__WEBPACK_IMPORTED_MODULE_4__.maximizedChatbotVariants\n };\n const isConfigReady = chatbotConfig?.status === CHATBOT_CONFIG_STATUS.READY;\n const shouldRenderInlineState = isInlineLayout && !isConfigReady;\n const inlineStateIsLoading = chatbotConfig?.status === CHATBOT_CONFIG_STATUS.LOADING;\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.Fragment, {\n children: (isConfigReady || shouldRenderInlineState) && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"div\", {\n className: chatbotParentClassName,\n ref: chatbotRef,\n part: \"root\",\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(framer_motion__WEBPACK_IMPORTED_MODULE_11__.LazyMotion, {\n features: framer_motion__WEBPACK_IMPORTED_MODULE_12__.domAnimation,\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(framer_motion__WEBPACK_IMPORTED_MODULE_13__.m.div, {\n initial: false,\n className: chatbotContainerClassName,\n part: \"panel\",\n \"aria-hidden\": !isInlineLayout && chatbotMinimized,\n ...chatbotContainerAnimationProps,\n children: isConfigReady ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.Fragment, {\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_components_ChatbotHeader__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n headerText: chatbotConfig?.data?.header_text,\n setPromptsMinimized: setPromptsMinimized,\n handleChatbotAnimation: handleChatbotAnimation,\n resetChatbot: resetChatbot,\n showCloseButton: !isInlineLayout\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_components_ChatbotBody__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n messageList: messageList,\n promptsData: promptsData,\n handleSubmit: handleSubmit,\n chatbotState: chatbotState,\n conversationRef: conversationRef,\n promptsMinimized: promptsMinimized,\n setPromptsMinimized: setPromptsMinimized,\n inputRef: inputRef,\n inputText: inputText,\n handleInput: handleInput,\n placeholderInputText: chatbotConfig?.data?.placeholder_input_text,\n footerDisclaimerText: chatbotConfig?.data?.footer_disclaimer_text,\n chatbotIcon: chatbotIcon,\n onConversationScroll: handleUserScroll\n })]\n }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].inlineStateSurface,\n part: `body inline-state ${inlineStateIsLoading ? \"loading-state\" : \"error-state\"}`,\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].inlineStateContent,\n children: [inlineStateIsLoading ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].inlineStateSpinner,\n \"aria-hidden\": \"true\"\n }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"i\", {\n className: `bi bi-exclamation-circle-fill ${_Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].inlineStateErrorIcon}`,\n \"aria-hidden\": \"true\"\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"p\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].inlineStateTitle,\n children: inlineStateIsLoading ? \"Loading assistant\" : \"Assistant unavailable\"\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"p\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].inlineStateText,\n children: inlineStateIsLoading ? \"Preparing the chat experience.\" : \"We could not load this chatbot right now. Please try again later.\"\n })]\n })\n })\n }), !isInlineLayout && isConfigReady && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(framer_motion__WEBPACK_IMPORTED_MODULE_13__.m.div, {\n variants: _utils_variants__WEBPACK_IMPORTED_MODULE_4__.minimizedChatbotVariants,\n animate: chatbotMinimized ? \"show\" : \"hide\",\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].chatbotCircleContainer,\n part: \"launcher\",\n \"aria-hidden\": !chatbotMinimized,\n children: [!chatbotPopupMinimized && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(framer_motion__WEBPACK_IMPORTED_MODULE_13__.m.div, {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].popupContainer,\n variants: _utils_variants__WEBPACK_IMPORTED_MODULE_4__.minimizedChatbotContentVariants,\n part: \"launcher-popup\",\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"button\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].closePopup,\n onClick: () => setChatbotPopupMinimized(true),\n \"aria-label\": \"Dismiss popup\",\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"i\", {\n className: \"bi bi-x-circle-fill\",\n \"aria-hidden\": \"true\"\n })\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].popup,\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].popupContent,\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"button\", {\n type: \"button\",\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].popupButton,\n onClick: handleChatbotAnimation,\n children: chatbotConfig?.data?.popup_body_text\n })\n })\n })]\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(framer_motion__WEBPACK_IMPORTED_MODULE_13__.m.div, {\n variants: _utils_variants__WEBPACK_IMPORTED_MODULE_4__.minimizedChatbotContentVariants,\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].chatbotCircle,\n onClick: handleChatbotAnimation,\n part: \"launcher-button\",\n children: chatbotIcon && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"div\", {\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"img\", {\n src: chatbotIcon,\n loading: \"lazy\",\n alt: \"chatbot icon\",\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].chatbotIcon\n })\n })\n })]\n })]\n })\n })\n });\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Chatbot);\n\n//# sourceURL=webpack://VamChatbot/./Chatbot.jsx?");
29
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/components/LazyMotion/index.mjs\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/render/dom/features-animation.mjs\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/render/components/m/proxy.mjs\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! axios */ \"./node_modules/axios/lib/axios.js\");\n/* harmony import */ var _components_ChatbotHeader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/ChatbotHeader */ \"./components/ChatbotHeader.jsx\");\n/* harmony import */ var _components_ChatbotBody__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/ChatbotBody */ \"./components/ChatbotBody.jsx\");\n/* harmony import */ var _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Chatbot.module.css */ \"./Chatbot.module.css\");\n/* harmony import */ var _utils_variants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils/variants */ \"./utils/variants.js\");\n/* harmony import */ var _utils_useClickHandler__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils/useClickHandler */ \"./utils/useClickHandler.js\");\n/* harmony import */ var _utils_defaults__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./utils/defaults */ \"./utils/defaults.js\");\n/* harmony import */ var _utils_config__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./utils/config */ \"./utils/config.js\");\n/* harmony import */ var _utils_sseClient__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./utils/sseClient */ \"./utils/sseClient.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n/* \n- valid chatbot states:\n 0: \"at rest\",\n 1: \"waiting for response from api\"\n 2: \"receiving response from api\"\n*/\n\nconst fixSpecialLLMChars = text => {\n // forward slash is replaced by <|slash|> in the response from the api\n return text.replace(/\\u003c\\|slash\\|\\u003e/g, \"/\");\n};\nconst normalizeResponseText = text => {\n if (typeof text !== \"string\") return \"\";\n return fixSpecialLLMChars(text);\n};\nconst normalizeAuthToken = value => {\n if (typeof value !== \"string\") return \"\";\n return value.trim();\n};\nconst normalizeLayout = layout => layout === \"inline\" ? \"inline\" : \"floating\";\nconst CHATBOT_CONFIG_STATUS = {\n LOADING: \"loading\",\n READY: \"ready\",\n ERROR: \"error\"\n};\nconst supportRedirectChannels = [\"whatsapp\", \"telegram\"];\nconst getSupportRedirects = (externalRedirectMetadata, botMessageCount) => {\n return supportRedirectChannels.reduce((redirects, channel) => {\n const channelConfig = externalRedirectMetadata?.[channel];\n const triggerFrequency = Number(channelConfig?.trigger_message_frequency);\n const redirectUrl = channelConfig?.redirect_url;\n if (triggerFrequency > 0 && redirectUrl && botMessageCount % triggerFrequency === 0) {\n redirects.push({\n channel,\n url: redirectUrl,\n messageText: channelConfig?.message_text,\n buttonLabel: channelConfig?.button_label\n });\n }\n return redirects;\n }, []);\n};\nconst applySupportRedirects = (messageData, externalRedirectMetadata, botMessageCount) => {\n const supportRedirects = getSupportRedirects(externalRedirectMetadata, botMessageCount);\n if (supportRedirects.length > 0) {\n messageData.showSupportButton = true;\n messageData.supportUrl = supportRedirects[0].url;\n messageData.supportChannel = supportRedirects[0].channel;\n messageData.supportRedirects = supportRedirects;\n }\n};\nconst resolveAuthToken = async _ref => {\n let {\n authToken,\n authTokenProvider\n } = _ref;\n if (typeof authTokenProvider === \"function\") {\n const providedToken = await authTokenProvider();\n const normalizedToken = normalizeAuthToken(providedToken);\n if (normalizedToken) return normalizedToken;\n }\n return normalizeAuthToken(authToken);\n};\nconst randomId = () => {\n try {\n if (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n } catch (e) {}\n return `${Date.now()}-${Math.random().toString(16).slice(2)}`;\n};\nfunction Chatbot(_ref2) {\n let {\n clientId,\n onTrackEvent,\n authToken,\n authTokenProvider,\n layout = \"floating\"\n } = _ref2;\n const [messageList, setMessageList] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]);\n const [inputText, setInputText] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(\"\");\n const [chatbotState, setChatbotState] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(0);\n const [chatbotMinimized, setChatbotMinimized] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true);\n const [chatbotPopupMinimized, setChatbotPopupMinimized] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n const [promptsData, setPromptsData] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n show: true,\n prompts: []\n });\n const [promptsMinimized, setPromptsMinimized] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true);\n const [chatbotConfig, setChatbotConfig] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n status: CHATBOT_CONFIG_STATUS.LOADING,\n data: {}\n });\n const [chatbotIcon, setChatbotIcon] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n const defaultMessageList = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)([]);\n const conversationIdRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(randomId());\n const streamAbortRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const pendingFeedbackRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const inputRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const conversationRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const userScrolledUpRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(false);\n const chatbotRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const normalizedLayout = normalizeLayout(layout);\n const isInlineLayout = normalizedLayout === \"inline\";\n\n // Use the custom hook to track clicks\n (0,_utils_useClickHandler__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(onTrackEvent, chatbotRef);\n\n // use effect to upate the css variables once available through the chatbot config API\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n try {\n if (chatbotConfig?.data?.styles?.css_variables) {\n const chatbotParent = chatbotRef.current;\n if (!chatbotParent) return;\n for (let variable in chatbotConfig.data.styles.css_variables) {\n chatbotParent.style.setProperty(`--${variable}`, chatbotConfig.data.styles.css_variables[variable]);\n }\n }\n } catch (error) {\n console.log(error);\n }\n }, [chatbotConfig?.data?.styles?.css_variables]);\n\n // useeffect to store the chatbot icon when its url is fetched from the chatbot config API\n // this is to prevent the api call being made on render of every message\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n try {\n if (chatbotConfig?.data?.icon_url) {\n const fetchChatbotIcon = async () => {\n let url = chatbotConfig?.data?.icon_url;\n let apiResponse = await (0,axios__WEBPACK_IMPORTED_MODULE_10__[\"default\"])({\n url,\n method: \"GET\",\n responseType: \"blob\"\n });\n let imageBlob = apiResponse.data;\n if (imageBlob) {\n let imageObjectURL = URL.createObjectURL(imageBlob);\n setChatbotIcon(imageObjectURL);\n }\n };\n fetchChatbotIcon();\n }\n } catch (error) {\n console.log(error);\n }\n }, [chatbotConfig?.data?.icon_url]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n const fetchConfigData = async () => {\n // Check if configUrl is null and handle appropriately\n if (!_utils_config__WEBPACK_IMPORTED_MODULE_7__.configUrl) {\n console.error(\"Chatbot config URL is not set. Please provide CHATBOT_DEV_URL or CHATBOT_PROD_URL environment variables.\");\n setChatbotConfig({\n status: CHATBOT_CONFIG_STATUS.ERROR,\n data: {}\n });\n return;\n }\n const url = `${_utils_config__WEBPACK_IMPORTED_MODULE_7__.configUrl}/api/getBotConfig`;\n const method = \"POST\";\n const requestBody = {\n clientId\n };\n try {\n let apiResponse = await (0,axios__WEBPACK_IMPORTED_MODULE_10__[\"default\"])({\n url,\n method,\n data: requestBody\n });\n if (apiResponse?.data) {\n let data = apiResponse.data;\n setChatbotConfig({\n status: CHATBOT_CONFIG_STATUS.READY,\n data\n });\n setPromptsData(data?.default_prompts || {\n show: false,\n prompts: []\n });\n setMessageList(data?.default_message_list || []);\n defaultMessageList.current = data?.default_message_list || [];\n } else {\n // handle no data here\n console.log(\"no data found for the provided client id: \", clientId);\n setChatbotConfig({\n status: CHATBOT_CONFIG_STATUS.ERROR,\n data: {}\n });\n }\n } catch (e) {\n console.error(e);\n setChatbotConfig({\n status: CHATBOT_CONFIG_STATUS.ERROR,\n data: {}\n });\n // handle api failure here\n }\n };\n fetchConfigData();\n }, [clientId]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n return () => {\n streamAbortRef.current?.abort?.();\n };\n }, []);\n\n // scroll to the latest message whenever the message list updates\n // but only if the user hasn't manually scrolled up during streaming\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (userScrolledUpRef.current) {\n return;\n }\n const conversation = conversationRef.current;\n if (!conversation) return;\n conversation.scrollTo({\n top: conversation.scrollHeight,\n behavior: \"smooth\"\n });\n }, [messageList]);\n\n // detects when the user scrolls up during streaming and disables auto-scroll\n const handleUserScroll = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(e => {\n if (chatbotState !== 2) return;\n const el = e.target;\n const threshold = 30;\n const isAtBottom = el.scrollHeight - el.scrollTop - el.clientHeight < threshold;\n if (!isAtBottom) {\n userScrolledUpRef.current = true;\n }\n }, [chatbotState]);\n const handleStreamEnvelope = env => {\n try {\n let {\n status,\n data\n } = env || {};\n let {\n response,\n sources,\n image_links,\n promoted_topics\n } = data || {};\n const activeFeedbackPayload = pendingFeedbackRef.current;\n const normalizedResponse = normalizeResponseText(response);\n const normalizedSources = sources?.map(fixSpecialLLMChars);\n const normalizedImageLinks = image_links?.map(fixSpecialLLMChars);\n const normalizedPromotedTopics = promoted_topics?.filter(item => item?.title);\n const promotedImageLinks = normalizedPromotedTopics?.map(pt => pt?.image_link)?.filter(Boolean)?.map(fixSpecialLLMChars);\n if (status === \"streaming\") {\n // set the chatbot state to \"receiving response\" and initialize the response\n setChatbotState(2);\n if (normalizedResponse) {\n setMessageList(prevList => {\n let responseList = [...prevList];\n try {\n let latestMessage = prevList.slice(-1)[0];\n if (latestMessage?.status === \"streaming\") {\n latestMessage.data.text = normalizedResponse;\n } else {\n let responseMessage = {\n source: \"bot\",\n data: {\n text: normalizedResponse,\n feedbackPayload: activeFeedbackPayload ? {\n ...activeFeedbackPayload\n } : undefined\n },\n origin: \"server\",\n status: \"streaming\"\n };\n responseList = [...responseList, responseMessage];\n }\n } catch (error) {}\n return responseList;\n });\n }\n } else if (status === \"done\") {\n setChatbotState(0);\n // re-enable auto-scroll for the next answer\n userScrolledUpRef.current = false;\n\n // update the status as done for the last message\n setMessageList(prevList => {\n let responseList = [...prevList];\n try {\n let latestMessage = responseList.slice(-1)[0];\n const finalResponseText = normalizedResponse || _utils_defaults__WEBPACK_IMPORTED_MODULE_6__.errorResponse;\n const finalFeedbackPayload = activeFeedbackPayload ? {\n ...activeFeedbackPayload,\n assistantResponse: finalResponseText\n } : undefined;\n const externalRedirectMetadata = chatbotConfig?.data?.external_redirect_metadata;\n const feedbackConfig = chatbotConfig?.data?.external_redirect_metadata?.internal_feedback;\n if (latestMessage?.source !== \"user\") {\n latestMessage.status = \"done\";\n latestMessage.data.text = finalResponseText;\n latestMessage.data.sources = normalizedSources;\n latestMessage.data.image_links = promotedImageLinks?.length > 0 ? promotedImageLinks : normalizedImageLinks;\n latestMessage.data.promoted_topics = normalizedPromotedTopics;\n latestMessage.data.feedbackPayload = finalFeedbackPayload;\n\n // Logic to show support redirects at their configured frequency\n const botMessageCount = responseList.filter(msg => msg.source === \"bot\" && msg.origin === \"server\").length;\n applySupportRedirects(latestMessage.data, externalRedirectMetadata, botMessageCount);\n\n // Logic to show feedback form\n if (feedbackConfig) {\n const feedbackFrequency = feedbackConfig?.trigger_message_frequency;\n if (feedbackFrequency && botMessageCount % feedbackFrequency === 0) {\n latestMessage.data.showFeedbackForm = true;\n }\n }\n } else {\n let responseMessage = {\n source: \"bot\",\n data: {\n text: finalResponseText,\n sources: normalizedSources,\n image_links: promotedImageLinks?.length > 0 ? promotedImageLinks : normalizedImageLinks,\n promoted_topics: normalizedPromotedTopics,\n feedbackPayload: finalFeedbackPayload\n },\n origin: \"server\",\n status: \"done\"\n };\n const nextBotMessageCount = responseList.filter(msg => msg.source === \"bot\" && msg.origin === \"server\").length + 1;\n applySupportRedirects(responseMessage.data, externalRedirectMetadata, nextBotMessageCount);\n\n // Logic to show feedback form\n if (feedbackConfig) {\n const feedbackFrequency = feedbackConfig?.trigger_message_frequency;\n if (feedbackFrequency && nextBotMessageCount % feedbackFrequency === 0) {\n responseMessage.data.showFeedbackForm = true;\n }\n }\n responseList = [...responseList, responseMessage];\n }\n } catch (error) {}\n return responseList;\n });\n pendingFeedbackRef.current = null;\n }\n } catch (error) {}\n };\n\n // to keep the input field in focus and scroll to the latest message\n // when the enter button is clicked.\n // const focusInput = () => {\n // inputRef.current.focus();\n // };\n\n // to handle the minimize/maximize animation of the chatbot.\n const handleChatbotAnimation = () => {\n setChatbotMinimized(!chatbotMinimized);\n };\n\n // to reset the chatbot content.\n const resetChatbot = () => {\n try {\n streamAbortRef.current?.abort?.();\n streamAbortRef.current = null;\n pendingFeedbackRef.current = null;\n conversationIdRef.current = randomId();\n setMessageList(defaultMessageList.current);\n setPromptsData(prevData => {\n return {\n ...prevData,\n show: true\n };\n });\n setPromptsMinimized(true);\n setChatbotState(0);\n setInputText(\"\");\n } catch (error) {}\n };\n const handleInput = event => {\n try {\n setInputText(event.target.value);\n } catch (error) {}\n };\n const getChatHistory = messages => {\n let response = [];\n try {\n let historyItem = {\n user: \"\",\n assistant: \"\"\n };\n for (let message of messages || []) {\n if (message.source === \"user\") {\n historyItem.user = message?.data?.text;\n } else if (message.source === \"bot\" && message.origin === \"server\") {\n if (message?.status === \"done\") {\n historyItem.assistant = message?.data?.text;\n response.push(historyItem);\n historyItem = {\n user: \"\",\n assistant: \"\"\n };\n }\n }\n }\n } catch (error) {\n console.log(error);\n } finally {\n return response;\n }\n };\n const getPromotionsShown = messages => {\n const out = [];\n try {\n let pendingUserSeen = false;\n for (let message of messages || []) {\n if (message.source === \"user\") {\n pendingUserSeen = true;\n continue;\n }\n if (!pendingUserSeen) continue;\n if (message.source === \"bot\" && message.origin === \"server\" && message.status === \"done\") {\n const titles = (message?.data?.promoted_topics || []).map(t => t?.title).filter(t => typeof t === \"string\" && t.trim().length > 0);\n out.push(titles);\n pendingUserSeen = false;\n }\n }\n } catch (error) {}\n return out;\n };\n const startNewStream = async (prompt, prevMessages) => {\n const chatbotBaseUrl = chatbotConfig?.data?.chatbot_url || chatbotConfig?.data?.chatbotUrl;\n if (!chatbotBaseUrl) {\n throw new Error(\"chatbot_url missing from config\");\n }\n streamAbortRef.current?.abort?.();\n const abortController = new AbortController();\n streamAbortRef.current = abortController;\n let chatHistory = getChatHistory(prevMessages);\n let promotionsShown = getPromotionsShown(prevMessages);\n if (chatHistory.length > 40) {\n const start = chatHistory.length - 40;\n chatHistory = chatHistory.slice(start);\n promotionsShown = promotionsShown.slice(start);\n }\n const messageId = randomId();\n const token = await resolveAuthToken({\n authToken,\n authTokenProvider\n });\n const pagePath = typeof window !== \"undefined\" ? window.location.pathname || \"/\" : \"/\";\n const session = await (0,_utils_sseClient__WEBPACK_IMPORTED_MODULE_8__.mintChatbotSessionToken)({\n chatbotBaseUrl,\n authToken: token,\n pagePath,\n signal: abortController.signal\n });\n if (!session?.token) {\n throw new Error(\"missing session token\");\n }\n const conversationID = conversationIdRef.current;\n const feedbackChatHistory = chatHistory.slice(-5);\n pendingFeedbackRef.current = {\n chatbotBaseUrl,\n token: session.token,\n messageID: messageId,\n conversationID,\n userQuery: prompt,\n chatHistory: feedbackChatHistory\n };\n await (0,_utils_sseClient__WEBPACK_IMPORTED_MODULE_8__.streamChatbotSse)({\n chatbotBaseUrl,\n token: session.token,\n body: {\n chatHistory,\n conversationId: conversationID,\n message: prompt,\n messageId,\n promotionsShown\n },\n signal: abortController.signal,\n onEnvelope: handleStreamEnvelope\n });\n };\n const handleSubmit = async function () {\n let prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n let typewriterEffect = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n if (!prompt) {\n prompt = inputText;\n } else {\n typewriterEffect = true;\n }\n try {\n prompt = prompt.trim();\n if (prompt) {\n const prevMessages = messageList;\n setChatbotState(1);\n\n // put the user's prompt in the chat\n let userMessage = {\n source: \"user\",\n data: {\n text: prompt\n },\n status: \"done\",\n typewriterEffect\n };\n setMessageList(prevList => [...prevList, userMessage]);\n\n // hide the default prompts\n setPromptsData({\n ...promptsData,\n show: false\n });\n\n // clear the input field\n setInputText(\"\");\n await startNewStream(prompt, prevMessages);\n }\n } catch (error) {\n if (error?.name === \"AbortError\") {\n return;\n }\n console.error(\"Error sending chat message:\", error);\n setChatbotState(0);\n setMessageList(prevList => [...prevList, {\n source: \"error\",\n data: {\n text: _utils_defaults__WEBPACK_IMPORTED_MODULE_6__.errorResponse\n },\n status: \"done\"\n }]);\n }\n };\n const chatbotParentClassName = `${_Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].chatbotParent} ${isInlineLayout ? _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].inlineChatbotParent : \"\"}`;\n const chatbotContainerClassName = `${_Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].chatbotContainer} ${isInlineLayout ? _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].inlineChatbotContainer : \"\"}`;\n const chatbotContainerAnimationProps = isInlineLayout ? {} : {\n animate: chatbotMinimized ? \"hide\" : \"show\",\n variants: _utils_variants__WEBPACK_IMPORTED_MODULE_4__.maximizedChatbotVariants\n };\n const isConfigReady = chatbotConfig?.status === CHATBOT_CONFIG_STATUS.READY;\n const shouldRenderInlineState = isInlineLayout && !isConfigReady;\n const inlineStateIsLoading = chatbotConfig?.status === CHATBOT_CONFIG_STATUS.LOADING;\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.Fragment, {\n children: (isConfigReady || shouldRenderInlineState) && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"div\", {\n className: chatbotParentClassName,\n ref: chatbotRef,\n part: \"root\",\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(framer_motion__WEBPACK_IMPORTED_MODULE_11__.LazyMotion, {\n features: framer_motion__WEBPACK_IMPORTED_MODULE_12__.domAnimation,\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(framer_motion__WEBPACK_IMPORTED_MODULE_13__.m.div, {\n initial: false,\n className: chatbotContainerClassName,\n part: \"panel\",\n \"aria-hidden\": !isInlineLayout && chatbotMinimized,\n ...chatbotContainerAnimationProps,\n children: isConfigReady ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.Fragment, {\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_components_ChatbotHeader__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n headerText: chatbotConfig?.data?.header_text,\n setPromptsMinimized: setPromptsMinimized,\n handleChatbotAnimation: handleChatbotAnimation,\n resetChatbot: resetChatbot,\n showCloseButton: !isInlineLayout\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_components_ChatbotBody__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n messageList: messageList,\n promptsData: promptsData,\n handleSubmit: handleSubmit,\n chatbotState: chatbotState,\n conversationRef: conversationRef,\n promptsMinimized: promptsMinimized,\n setPromptsMinimized: setPromptsMinimized,\n inputRef: inputRef,\n inputText: inputText,\n handleInput: handleInput,\n placeholderInputText: chatbotConfig?.data?.placeholder_input_text,\n footerDisclaimerText: chatbotConfig?.data?.footer_disclaimer_text,\n chatbotIcon: chatbotIcon,\n onConversationScroll: handleUserScroll\n })]\n }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].inlineStateSurface,\n part: `body inline-state ${inlineStateIsLoading ? \"loading-state\" : \"error-state\"}`,\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].inlineStateContent,\n children: [inlineStateIsLoading ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].inlineStateSpinner,\n \"aria-hidden\": \"true\"\n }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"i\", {\n className: `bi bi-exclamation-circle-fill ${_Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].inlineStateErrorIcon}`,\n \"aria-hidden\": \"true\"\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"p\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].inlineStateTitle,\n children: inlineStateIsLoading ? \"Loading assistant\" : \"Assistant unavailable\"\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"p\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].inlineStateText,\n children: inlineStateIsLoading ? \"Preparing the chat experience.\" : \"We could not load this chatbot right now. Please try again later.\"\n })]\n })\n })\n }), !isInlineLayout && isConfigReady && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(framer_motion__WEBPACK_IMPORTED_MODULE_13__.m.div, {\n variants: _utils_variants__WEBPACK_IMPORTED_MODULE_4__.minimizedChatbotVariants,\n animate: chatbotMinimized ? \"show\" : \"hide\",\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].chatbotCircleContainer,\n part: \"launcher\",\n \"aria-hidden\": !chatbotMinimized,\n children: [!chatbotPopupMinimized && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(framer_motion__WEBPACK_IMPORTED_MODULE_13__.m.div, {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].popupContainer,\n variants: _utils_variants__WEBPACK_IMPORTED_MODULE_4__.minimizedChatbotContentVariants,\n part: \"launcher-popup\",\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"button\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].closePopup,\n onClick: () => setChatbotPopupMinimized(true),\n \"aria-label\": \"Dismiss popup\",\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"i\", {\n className: \"bi bi-x-circle-fill\",\n \"aria-hidden\": \"true\"\n })\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].popup,\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].popupContent,\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"button\", {\n type: \"button\",\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].popupButton,\n onClick: handleChatbotAnimation,\n children: chatbotConfig?.data?.popup_body_text\n })\n })\n })]\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(framer_motion__WEBPACK_IMPORTED_MODULE_13__.m.div, {\n variants: _utils_variants__WEBPACK_IMPORTED_MODULE_4__.minimizedChatbotContentVariants,\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].chatbotCircle,\n onClick: handleChatbotAnimation,\n part: \"launcher-button\",\n children: chatbotIcon && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"div\", {\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"img\", {\n src: chatbotIcon,\n loading: \"lazy\",\n alt: \"chatbot icon\",\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].chatbotIcon\n })\n })\n })]\n })]\n })\n })\n });\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Chatbot);\n\n//# sourceURL=webpack://VamChatbot/./Chatbot.jsx?");
30
30
 
31
31
  /***/ }),
32
32
 
@@ -70,7 +70,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
70
70
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
71
71
 
72
72
  "use strict";
73
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/components/LazyMotion/index.mjs\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/render/dom/features-animation.mjs\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/render/components/m/proxy.mjs\");\n/* harmony import */ var _Message__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Message */ \"./components/Message.jsx\");\n/* harmony import */ var _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Chatbot.module.css */ \"./Chatbot.module.css\");\n/* harmony import */ var _AnimatedTextPlaceholder__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./AnimatedTextPlaceholder */ \"./components/AnimatedTextPlaceholder.jsx\");\n/* harmony import */ var _utils_variants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/variants */ \"./utils/variants.js\");\n/* harmony import */ var _Prompts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Prompts */ \"./components/Prompts.jsx\");\n/* harmony import */ var _ChatbotFooter__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ChatbotFooter */ \"./components/ChatbotFooter.jsx\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n\n\n\n\n\nfunction ChatbotBody(_ref) {\n let {\n messageList,\n promptsData,\n handleSubmit,\n chatbotState,\n conversationRef,\n promptsMinimized,\n setPromptsMinimized,\n inputRef,\n inputText,\n handleInput,\n placeholderInputText,\n footerDisclaimerText,\n chatbotIcon,\n onConversationScroll\n } = _ref;\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(framer_motion__WEBPACK_IMPORTED_MODULE_7__.LazyMotion, {\n features: framer_motion__WEBPACK_IMPORTED_MODULE_8__.domAnimation,\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].body,\n part: \"body\",\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(framer_motion__WEBPACK_IMPORTED_MODULE_9__.m.div, {\n ref: conversationRef,\n variants: _utils_variants__WEBPACK_IMPORTED_MODULE_3__.chatbotContentVariants,\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].conversation,\n onScroll: onConversationScroll,\n part: \"conversation\",\n children: [messageList.map((message, index) => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_Message__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n chatbotIcon: chatbotIcon,\n messageText: message?.data?.text,\n messageReferenceLinks: message?.data?.sources,\n messageImageLinks: message?.data?.image_links,\n messageSource: message?.source,\n messageStatus: message?.status,\n promotedTopics: message?.data?.promoted_topics,\n typewriterEffect: message?.typewriterEffect,\n showSupportButton: message?.data?.showSupportButton,\n supportUrl: message?.data?.supportUrl,\n supportChannel: message?.data?.supportChannel,\n supportRedirects: message?.data?.supportRedirects,\n showFeedbackForm: message?.data?.showFeedbackForm,\n feedbackPayload: message?.data?.feedbackPayload\n }, `message-${index}`)), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].bodyPromptsContainer,\n style: {\n display: promptsData?.show ? \"block\" : \"none\"\n },\n part: \"prompts\",\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_Prompts__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n promptsData: promptsData,\n handleSubmit: handleSubmit,\n setPromptsMinimized: setPromptsMinimized\n })\n }), chatbotState === 1 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].message,\n part: \"message bot-message\",\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(\"img\", {\n src: chatbotIcon,\n loading: \"lazy\",\n alt: \"chatbot icon\",\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].chatbotIcon,\n part: \"message-avatar\"\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(\"span\", {\n className: \"w-100\",\n part: \"message-bubble\",\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_AnimatedTextPlaceholder__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n theme: \"dark\"\n })\n })]\n })]\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_ChatbotFooter__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n setPromptsMinimized: setPromptsMinimized,\n promptsMinimized: promptsMinimized,\n promptsData: promptsData,\n handleSubmit: handleSubmit,\n chatbotState: chatbotState,\n inputRef: inputRef,\n inputText: inputText,\n handleInput: handleInput,\n placeholderInputText: placeholderInputText,\n footerDisclaimerText: footerDisclaimerText\n })]\n })\n });\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ChatbotBody);\n\n//# sourceURL=webpack://VamChatbot/./components/ChatbotBody.jsx?");
73
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/components/LazyMotion/index.mjs\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/render/dom/features-animation.mjs\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/render/components/m/proxy.mjs\");\n/* harmony import */ var _Message__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Message */ \"./components/Message.jsx\");\n/* harmony import */ var _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Chatbot.module.css */ \"./Chatbot.module.css\");\n/* harmony import */ var _AnimatedTextPlaceholder__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./AnimatedTextPlaceholder */ \"./components/AnimatedTextPlaceholder.jsx\");\n/* harmony import */ var _utils_variants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/variants */ \"./utils/variants.js\");\n/* harmony import */ var _Prompts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Prompts */ \"./components/Prompts.jsx\");\n/* harmony import */ var _ChatbotFooter__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ChatbotFooter */ \"./components/ChatbotFooter.jsx\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n\n\n\n\n\nfunction ChatbotBody(_ref) {\n let {\n messageList,\n promptsData,\n handleSubmit,\n chatbotState,\n conversationRef,\n promptsMinimized,\n setPromptsMinimized,\n inputRef,\n inputText,\n handleInput,\n placeholderInputText,\n footerDisclaimerText,\n chatbotIcon,\n onConversationScroll\n } = _ref;\n const hasUserStartedChat = messageList.some(message => message?.source === \"user\");\n const showFooterSuggestedQuestions = hasUserStartedChat && Boolean(promptsData?.prompts?.length);\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(framer_motion__WEBPACK_IMPORTED_MODULE_7__.LazyMotion, {\n features: framer_motion__WEBPACK_IMPORTED_MODULE_8__.domAnimation,\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].body,\n part: \"body\",\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(framer_motion__WEBPACK_IMPORTED_MODULE_9__.m.div, {\n ref: conversationRef,\n variants: _utils_variants__WEBPACK_IMPORTED_MODULE_3__.chatbotContentVariants,\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].conversation,\n onScroll: onConversationScroll,\n part: \"conversation\",\n children: [messageList.map((message, index) => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_Message__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n chatbotIcon: chatbotIcon,\n messageText: message?.data?.text,\n messageReferenceLinks: message?.data?.sources,\n messageImageLinks: message?.data?.image_links,\n messageSource: message?.source,\n messageStatus: message?.status,\n promotedTopics: message?.data?.promoted_topics,\n typewriterEffect: message?.typewriterEffect,\n showSupportButton: message?.data?.showSupportButton,\n supportUrl: message?.data?.supportUrl,\n supportChannel: message?.data?.supportChannel,\n supportRedirects: message?.data?.supportRedirects,\n showFeedbackForm: message?.data?.showFeedbackForm,\n feedbackPayload: message?.data?.feedbackPayload\n }, `message-${index}`)), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].bodyPromptsContainer,\n style: {\n display: promptsData?.show ? \"block\" : \"none\"\n },\n part: \"prompts\",\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_Prompts__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n promptsData: promptsData,\n handleSubmit: handleSubmit,\n setPromptsMinimized: setPromptsMinimized\n })\n }), chatbotState === 1 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].message,\n part: \"message bot-message\",\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(\"img\", {\n src: chatbotIcon,\n loading: \"lazy\",\n alt: \"chatbot icon\",\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].chatbotIcon,\n part: \"message-avatar\"\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(\"span\", {\n className: \"w-100\",\n part: \"message-bubble\",\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_AnimatedTextPlaceholder__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n theme: \"dark\"\n })\n })]\n })]\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_ChatbotFooter__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n setPromptsMinimized: setPromptsMinimized,\n promptsMinimized: promptsMinimized,\n promptsData: promptsData,\n handleSubmit: handleSubmit,\n chatbotState: chatbotState,\n inputRef: inputRef,\n inputText: inputText,\n handleInput: handleInput,\n placeholderInputText: placeholderInputText,\n footerDisclaimerText: footerDisclaimerText,\n showFooterSuggestedQuestions: showFooterSuggestedQuestions\n })]\n })\n });\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ChatbotBody);\n\n//# sourceURL=webpack://VamChatbot/./components/ChatbotBody.jsx?");
74
74
 
75
75
  /***/ }),
76
76
 
@@ -81,7 +81,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
81
81
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
82
82
 
83
83
  "use strict";
84
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/components/LazyMotion/index.mjs\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/render/dom/features-animation.mjs\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/render/components/m/proxy.mjs\");\n/* harmony import */ var _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Chatbot.module.css */ \"./Chatbot.module.css\");\n/* harmony import */ var _utils_variants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/variants */ \"./utils/variants.js\");\n/* harmony import */ var _Prompts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Prompts */ \"./components/Prompts.jsx\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n\n\nfunction ChatbotFooter(_ref) {\n let {\n setPromptsMinimized,\n promptsMinimized,\n promptsData,\n handleSubmit,\n chatbotState,\n inputRef,\n inputText,\n handleInput,\n placeholderInputText,\n footerDisclaimerText\n } = _ref;\n const trimmedFooterDisclaimerText = typeof footerDisclaimerText === \"string\" ? footerDisclaimerText.trim() : \"\";\n const promptsToggleLabel = promptsMinimized ? \"Show suggested questions\" : \"Hide suggested questions\";\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(framer_motion__WEBPACK_IMPORTED_MODULE_4__.LazyMotion, {\n features: framer_motion__WEBPACK_IMPORTED_MODULE_5__.domAnimation,\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].footerContainer,\n part: \"footer\",\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(framer_motion__WEBPACK_IMPORTED_MODULE_6__.m.div, {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].footer,\n variants: _utils_variants__WEBPACK_IMPORTED_MODULE_1__.chatbotContentVariants,\n children: [trimmedFooterDisclaimerText && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].footerDisclaimer,\n part: \"footer-disclaimer\",\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"i\", {\n className: `bi bi-info-circle ${_Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].footerDisclaimerIcon}`,\n \"aria-hidden\": \"true\"\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"span\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].footerDisclaimerText,\n children: trimmedFooterDisclaimerText\n })]\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].footerInputSurface,\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"button\", {\n type: \"button\",\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].promptSuggestionsToggle,\n onClick: () => setPromptsMinimized(prevValue => !prevValue),\n \"aria-label\": promptsToggleLabel,\n \"aria-expanded\": !promptsMinimized,\n \"aria-controls\": \"chatbot-suggested-prompts\",\n title: promptsToggleLabel,\n part: \"prompt-drawer-button\",\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"span\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].promptSuggestionsToggleContent,\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"i\", {\n className: `bi bi-list-check ${_Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].promptSuggestionsIcon}`,\n \"aria-hidden\": \"true\"\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"span\", {\n children: \"Suggested questions\"\n })]\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"i\", {\n className: `bi ${promptsMinimized ? \"bi-chevron-up\" : \"bi-chevron-down\"} ${_Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].promptSuggestionsChevron}`,\n \"aria-hidden\": \"true\"\n })]\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(framer_motion__WEBPACK_IMPORTED_MODULE_6__.m.div, {\n id: \"chatbot-suggested-prompts\",\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].defaultPrompts,\n initial: false,\n animate: promptsMinimized ? \"hide\" : \"show\",\n variants: _utils_variants__WEBPACK_IMPORTED_MODULE_1__.promptsContainerVariants,\n part: \"prompts\",\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_Prompts__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n promptsData: promptsData,\n handleSubmit: handleSubmit,\n setPromptsMinimized: setPromptsMinimized,\n chatbotState: chatbotState\n })\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"form\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].footerForm,\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"input\", {\n ref: inputRef,\n placeholder: placeholderInputText,\n type: \"text\",\n value: inputText,\n name: \"chatInput\",\n onChange: event => handleInput(event),\n part: \"input\"\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"button\", {\n type: \"submit\",\n onClick: event => {\n event.preventDefault();\n handleSubmit();\n },\n disabled: chatbotState === 1 || chatbotState === 2,\n part: \"submit-button\",\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"i\", {\n className: \"bi bi-arrow-up-circle-fill\"\n })\n })]\n })]\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"a\", {\n href: \"https://vamlabs.ai/\",\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].footerBranding,\n target: \"_blank\",\n rel: \"noreferrer\",\n part: \"footer-branding\",\n children: \"Powered by VAM Labs\"\n })]\n })\n })\n });\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ChatbotFooter);\n\n//# sourceURL=webpack://VamChatbot/./components/ChatbotFooter.jsx?");
84
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/components/LazyMotion/index.mjs\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/render/dom/features-animation.mjs\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/render/components/m/proxy.mjs\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs\");\n/* harmony import */ var _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Chatbot.module.css */ \"./Chatbot.module.css\");\n/* harmony import */ var _utils_variants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/variants */ \"./utils/variants.js\");\n/* harmony import */ var _Prompts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Prompts */ \"./components/Prompts.jsx\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n\n\nfunction ChatbotFooter(_ref) {\n let {\n setPromptsMinimized,\n promptsMinimized,\n promptsData,\n handleSubmit,\n chatbotState,\n inputRef,\n inputText,\n handleInput,\n placeholderInputText,\n footerDisclaimerText,\n showFooterSuggestedQuestions = false\n } = _ref;\n const trimmedFooterDisclaimerText = typeof footerDisclaimerText === \"string\" ? footerDisclaimerText.trim() : \"\";\n const promptsToggleLabel = promptsMinimized ? \"Show suggested questions\" : \"Hide suggested questions\";\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(framer_motion__WEBPACK_IMPORTED_MODULE_4__.LazyMotion, {\n features: framer_motion__WEBPACK_IMPORTED_MODULE_5__.domAnimation,\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].footerContainer,\n part: \"footer\",\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(framer_motion__WEBPACK_IMPORTED_MODULE_6__.m.div, {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].footer,\n variants: _utils_variants__WEBPACK_IMPORTED_MODULE_1__.chatbotContentVariants,\n children: [trimmedFooterDisclaimerText && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].footerDisclaimer,\n part: \"footer-disclaimer\",\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"i\", {\n className: `bi bi-info-circle ${_Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].footerDisclaimerIcon}`,\n \"aria-hidden\": \"true\"\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"span\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].footerDisclaimerText,\n children: trimmedFooterDisclaimerText\n })]\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].footerInputSurface,\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(framer_motion__WEBPACK_IMPORTED_MODULE_7__.AnimatePresence, {\n initial: false,\n children: showFooterSuggestedQuestions && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(framer_motion__WEBPACK_IMPORTED_MODULE_6__.m.div, {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].promptSuggestionsToggleMotion,\n initial: \"hide\",\n animate: \"show\",\n exit: \"hide\",\n variants: _utils_variants__WEBPACK_IMPORTED_MODULE_1__.suggestedQuestionsToggleVariants,\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"button\", {\n type: \"button\",\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].promptSuggestionsToggle,\n onClick: () => setPromptsMinimized(prevValue => !prevValue),\n \"aria-label\": promptsToggleLabel,\n \"aria-expanded\": !promptsMinimized,\n \"aria-controls\": \"chatbot-suggested-prompts\",\n title: promptsToggleLabel,\n part: \"prompt-drawer-button\",\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"span\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].promptSuggestionsToggleContent,\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"i\", {\n className: `bi bi-list-check ${_Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].promptSuggestionsIcon}`,\n \"aria-hidden\": \"true\"\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"span\", {\n children: \"Suggested questions\"\n })]\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"i\", {\n className: `bi ${promptsMinimized ? \"bi-chevron-up\" : \"bi-chevron-down\"} ${_Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].promptSuggestionsChevron}`,\n \"aria-hidden\": \"true\"\n })]\n })\n })\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(framer_motion__WEBPACK_IMPORTED_MODULE_6__.m.div, {\n id: \"chatbot-suggested-prompts\",\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].defaultPrompts,\n initial: false,\n animate: showFooterSuggestedQuestions && !promptsMinimized ? \"show\" : \"hide\",\n variants: _utils_variants__WEBPACK_IMPORTED_MODULE_1__.promptsContainerVariants,\n part: \"prompts\",\n children: showFooterSuggestedQuestions && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_Prompts__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n promptsData: promptsData,\n handleSubmit: handleSubmit,\n setPromptsMinimized: setPromptsMinimized,\n chatbotState: chatbotState\n })\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"form\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].footerForm,\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"input\", {\n ref: inputRef,\n placeholder: placeholderInputText,\n type: \"text\",\n value: inputText,\n name: \"chatInput\",\n onChange: event => handleInput(event),\n part: \"input\"\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"button\", {\n type: \"submit\",\n onClick: event => {\n event.preventDefault();\n handleSubmit();\n },\n disabled: chatbotState === 1 || chatbotState === 2,\n part: \"submit-button\",\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"i\", {\n className: \"bi bi-arrow-up-circle-fill\"\n })\n })]\n })]\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"a\", {\n href: \"https://vamlabs.ai/\",\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].footerBranding,\n target: \"_blank\",\n rel: \"noreferrer\",\n part: \"footer-branding\",\n children: \"Powered by VAM Labs\"\n })]\n })\n })\n });\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ChatbotFooter);\n\n//# sourceURL=webpack://VamChatbot/./components/ChatbotFooter.jsx?");
85
85
 
86
86
  /***/ }),
87
87
 
@@ -224,7 +224,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
224
224
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
225
225
 
226
226
  "use strict";
227
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ chatbotContentVariants: () => (/* binding */ chatbotContentVariants),\n/* harmony export */ chatbotImageVariants: () => (/* binding */ chatbotImageVariants),\n/* harmony export */ chatbotPromptedTopicsVariants: () => (/* binding */ chatbotPromptedTopicsVariants),\n/* harmony export */ maximizedChatbotVariants: () => (/* binding */ maximizedChatbotVariants),\n/* harmony export */ minimizedChatbotContentVariants: () => (/* binding */ minimizedChatbotContentVariants),\n/* harmony export */ minimizedChatbotVariants: () => (/* binding */ minimizedChatbotVariants),\n/* harmony export */ promptVariants: () => (/* binding */ promptVariants),\n/* harmony export */ promptsContainerVariants: () => (/* binding */ promptsContainerVariants),\n/* harmony export */ sourceVariants: () => (/* binding */ sourceVariants)\n/* harmony export */ });\nconst maximizedChatbotVariants = {\n show: {\n height: \"var(--chatbot-height)\",\n width: \"var(--chatbot-width)\",\n borderRadius: \"var(--chatbot-border-radius)\",\n filter: \"blur(0px)\",\n opacity: 1,\n transition: {\n duration: 0.3,\n when: \"beforeChildren\",\n staggerChildren: 0.3\n }\n },\n hide: {\n height: \"0\",\n width: \"0\",\n borderRadius: \"50%\",\n filter: \"blur(5px)\",\n opacity: 0,\n transition: {\n duration: 0.3,\n when: \"afterChildren\"\n }\n }\n};\nconst minimizedChatbotVariants = {\n show: {\n bottom: \"10px\",\n right: \"10px\",\n height: \"var(--chatbot-circle-radius)\",\n width: \"var(--chatbot-circle-radius)\",\n opacity: 1,\n zIndex: 1,\n transition: {\n staggerChildren: 0.3,\n staggerDirection: -1,\n when: \"beforeChildren\"\n }\n }\n};\nconst minimizedChatbotContentVariants = {\n show: {\n scale: 1,\n opacity: 1\n },\n hide: {\n scale: 0,\n opacity: 0\n }\n};\nconst chatbotContentVariants = {\n show: {\n opacity: 1\n },\n hide: {\n opacity: 0\n }\n};\nconst sourceVariants = {\n show: {\n scaleY: 1,\n opacity: 1,\n height: \"auto\",\n transition: {\n type: \"tween\",\n ease: \"easeIn\"\n }\n },\n hide: {\n transition: {\n type: \"tween\"\n },\n scaleY: 0,\n opacity: 0,\n height: 0\n }\n};\nconst promptsContainerVariants = {\n show: {\n height: \"auto\",\n transition: {\n when: \"beforeChildren\",\n staggerChildren: 0.1\n },\n scale: 1\n },\n hide: {\n height: 0,\n scale: 0\n }\n};\nconst promptVariants = {\n show: {\n opacity: 1,\n transition: {\n duration: 0.3\n }\n },\n hide: {\n opacity: 0\n }\n};\nconst chatbotImageVariants = {\n show: {\n opacity: 1,\n height: \"auto\",\n scale: 1,\n transition: {\n duration: 0.7\n }\n },\n hide: {\n height: 0,\n scale: 0,\n opacity: 0\n }\n};\nconst chatbotPromptedTopicsVariants = {\n tap: {\n scale: 0.85,\n opacity: 0.5\n }\n};\n\n//# sourceURL=webpack://VamChatbot/./utils/variants.js?");
227
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ chatbotContentVariants: () => (/* binding */ chatbotContentVariants),\n/* harmony export */ chatbotImageVariants: () => (/* binding */ chatbotImageVariants),\n/* harmony export */ chatbotPromptedTopicsVariants: () => (/* binding */ chatbotPromptedTopicsVariants),\n/* harmony export */ maximizedChatbotVariants: () => (/* binding */ maximizedChatbotVariants),\n/* harmony export */ minimizedChatbotContentVariants: () => (/* binding */ minimizedChatbotContentVariants),\n/* harmony export */ minimizedChatbotVariants: () => (/* binding */ minimizedChatbotVariants),\n/* harmony export */ promptVariants: () => (/* binding */ promptVariants),\n/* harmony export */ promptsContainerVariants: () => (/* binding */ promptsContainerVariants),\n/* harmony export */ sourceVariants: () => (/* binding */ sourceVariants),\n/* harmony export */ suggestedQuestionsToggleVariants: () => (/* binding */ suggestedQuestionsToggleVariants)\n/* harmony export */ });\nconst maximizedChatbotVariants = {\n show: {\n height: \"var(--chatbot-height)\",\n width: \"var(--chatbot-width)\",\n borderRadius: \"var(--chatbot-border-radius)\",\n filter: \"blur(0px)\",\n opacity: 1,\n transition: {\n duration: 0.3,\n when: \"beforeChildren\",\n staggerChildren: 0.3\n }\n },\n hide: {\n height: \"0\",\n width: \"0\",\n borderRadius: \"50%\",\n filter: \"blur(5px)\",\n opacity: 0,\n transition: {\n duration: 0.3,\n when: \"afterChildren\"\n }\n }\n};\nconst minimizedChatbotVariants = {\n show: {\n bottom: \"10px\",\n right: \"10px\",\n height: \"var(--chatbot-circle-radius)\",\n width: \"var(--chatbot-circle-radius)\",\n opacity: 1,\n zIndex: 1,\n transition: {\n staggerChildren: 0.3,\n staggerDirection: -1,\n when: \"beforeChildren\"\n }\n }\n};\nconst minimizedChatbotContentVariants = {\n show: {\n scale: 1,\n opacity: 1\n },\n hide: {\n scale: 0,\n opacity: 0\n }\n};\nconst chatbotContentVariants = {\n show: {\n opacity: 1\n },\n hide: {\n opacity: 0\n }\n};\nconst sourceVariants = {\n show: {\n scaleY: 1,\n opacity: 1,\n height: \"auto\",\n transition: {\n type: \"tween\",\n ease: \"easeIn\"\n }\n },\n hide: {\n transition: {\n type: \"tween\"\n },\n scaleY: 0,\n opacity: 0,\n height: 0\n }\n};\nconst promptsContainerVariants = {\n show: {\n height: \"auto\",\n transition: {\n when: \"beforeChildren\",\n staggerChildren: 0.1\n },\n scale: 1\n },\n hide: {\n height: 0,\n scale: 0\n }\n};\nconst suggestedQuestionsToggleVariants = {\n show: {\n height: \"auto\",\n opacity: 1,\n y: 0,\n transition: {\n duration: 0.22,\n ease: \"easeOut\"\n }\n },\n hide: {\n height: 0,\n opacity: 0,\n y: 6,\n transition: {\n duration: 0.18,\n ease: \"easeIn\"\n }\n }\n};\nconst promptVariants = {\n show: {\n opacity: 1,\n transition: {\n duration: 0.3\n }\n },\n hide: {\n opacity: 0\n }\n};\nconst chatbotImageVariants = {\n show: {\n opacity: 1,\n height: \"auto\",\n scale: 1,\n transition: {\n duration: 0.7\n }\n },\n hide: {\n height: 0,\n scale: 0,\n opacity: 0\n }\n};\nconst chatbotPromptedTopicsVariants = {\n tap: {\n scale: 0.85,\n opacity: 0.5\n }\n};\n\n//# sourceURL=webpack://VamChatbot/./utils/variants.js?");
228
228
 
229
229
  /***/ }),
230
230
 
@@ -246,7 +246,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
246
246
  /***/ ((module, __webpack_exports__, __webpack_require__) => {
247
247
 
248
248
  "use strict";
249
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n___CSS_LOADER_EXPORT___.push([module.id, \"@import url(https://fonts.googleapis.com/css2?family=Open+Sans:ital,wdth,wght@0,75..100,300..800;1,75..100,300..800&display=swap);\"]);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.bOJfQLIDdUlPEJzIVy0q {\n --chatbot-height: 70%;\n --chatbot-width: 30%;\n --chatbot-header-height: 50px;\n --chatbot-footer-height: 80px;\n --chatbot-footer-input-height: 40px;\n --chatbot-circle-radius: 70px;\n --chatbot-spacing-x: 10px;\n --chatbot-spacing-y: 10px;\n --chatbot-border-radius: 10px;\n}\n\n@media only screen and (max-width: 1280px) {\n .bOJfQLIDdUlPEJzIVy0q {\n --chatbot-width: 50%;\n --chatbot-height: 80%;\n }\n}\n\n@media only screen and (max-width: 768px) {\n .bOJfQLIDdUlPEJzIVy0q {\n --chatbot-width: 100%;\n --chatbot-height: 100%;\n --chatbot-header-height: 70px;\n --chatbot-spacing-x: 0px;\n --chatbot-spacing-y: 0px;\n --chatbot-border-radius: 0px;\n }\n}\n\n.mrPuzpzfdEmQSyTxnvxI {\n font-family: \"Open Sans\", sans-serif;\n font-optical-sizing: auto;\n font-weight: 600;\n font-style: normal;\n font-variation-settings: \"wdth\" 90;\n position: fixed;\n overflow: hidden;\n border-radius: var(--chatbot-border-radius);\n bottom: var(--chatbot-spacing-y);\n right: var(--chatbot-spacing-x);\n height: var(--chatbot-height);\n width: var(--chatbot-width);\n box-shadow: 0 8px 16px 6px rgba(0, 24, 56, 0.2);\n z-index: 99999;\n}\n\n.EwBhaKWtrMkmlquKWEEo {\n width: var(--chatbot-inline-width, 100%);\n height: var(--chatbot-inline-height, 640px);\n min-height: var(--chatbot-inline-min-height, 480px);\n box-sizing: border-box;\n}\n\n.dyE5pTsFKvJw8NgUVBbk {\n position: relative;\n bottom: auto;\n right: auto;\n width: 100%;\n max-width: 100%;\n height: 100%;\n min-height: 100%;\n box-sizing: border-box;\n z-index: 0;\n isolation: isolate;\n}\n\n:host([layout=\"inline\"]) .EwBhaKWtrMkmlquKWEEo {\n width: 100%;\n height: 100%;\n min-height: 100%;\n}\n\n.HrdPV1T8C8AOFmGVDVQX {\n height: 100%;\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: var(--chatbot-background-color, #fff);\n border-radius: var(--chatbot-border-radius);\n color: var(--chatbot-bot-text-color, #1f2937);\n padding: 24px;\n box-sizing: border-box;\n}\n\n.K4Ka7lBIi3uwlJDIQEt0 {\n max-width: 420px;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n text-align: center;\n}\n\n.NX1ohgiEEs0vaDOeQ2_w {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n border: 3px solid rgba(31, 41, 55, 0.16);\n border-top-color: var(--chatbot-header-color, #4f46e5);\n animation: gipOtf8Cs1L3UhoKYCY6 0.8s linear infinite;\n}\n\n.yXQQue2MsoLEzd9T2aoc {\n margin: 0;\n font-size: 1rem;\n font-weight: 700;\n}\n\n.aH0mc9GAi1rPzFMrRzfF {\n margin: 0;\n font-size: 0.9rem;\n font-weight: 500;\n line-height: 1.45;\n}\n\n.EHAnq_Q6pKh_POfqBrL4 {\n font-size: 1.6rem;\n color: #e74c3c;\n}\n\n@keyframes gipOtf8Cs1L3UhoKYCY6 {\n to {\n transform: rotate(360deg);\n }\n}\n\n.QJ6c9UPW4NdCwINA2KKw {\n position: absolute;\n width: 100%;\n background-color: var(--chatbot-header-color);\n padding: 0 10px;\n border-bottom: 0.5px solid var(--chatbot-border-color);\n z-index: 99998;\n height: var(--chatbot-header-height);\n}\n\n.BAciNorgEk8q0Hjvg_Nd {\n height: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n color: white;\n font-size: 1.4rem;\n\n button,\n button:hover {\n background-color: var(--chatbot-header-color);\n color: var(--chatbot-header-text-color);\n border: none;\n }\n}\n\n.rDNjthKTeHigjuhTaXFw {\n display: flex;\n height: 100%;\n flex-direction: column;\n align-items: flex-start;\n /* Align items to the start (left) */\n justify-content: center;\n /* Center vertically within the container */\n /* padding-left: 10px; */\n /* Add padding to push it away from the edge */\n}\n\n.qhIJF8jtTVHpl14phrvO {\n font-weight: 700;\n text-align: start;\n color: var(--chatbot-header-text-color);\n}\n\n.bJ4qOXuizp8yq01SFRbe {\n font-weight: 700;\n font-size: 0.4rem;\n text-align: start;\n}\n\n.M84EXuBJb0ITHqmcP033 {\n margin-top: var(--chatbot-header-height);\n font-size: 1rem;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n background-color: var(--chatbot-background-color);\n height: calc(100% - var(--chatbot-header-height));\n}\n\n.KJH5XQVgMgo5xa6hVmpQ {\n .uodJA65d3QSnFHHi6wEE {\n row-gap: 10px;\n column-gap: 10px;\n padding: 0 20px;\n }\n .yMV8jdykQ0p_dG9sc2yK {\n gap: 10px;\n border-radius: 10px;\n padding: 5px 12px;\n cursor: pointer;\n color: var(--chatbot-prompt-text-color);\n\n .OFNqcCdonr5dxzTTZ3zK {\n font-size: 0.85rem;\n }\n }\n}\n\n.F4te4w0Rg9nYSlvqoOuU {\n flex: 1 1 auto;\n min-height: 0;\n overflow: auto;\n}\n\n.y3GymRJmY0MX41NX3xWJ {\n /* width: 45px; */\n height: 70px;\n}\n\n.soVXB5uMOlUUVHtMVzBV,\n.BAciNorgEk8q0Hjvg_Nd {\n .y3GymRJmY0MX41NX3xWJ {\n /* width: 40px; */\n height: 40px;\n }\n}\n\n.soVXB5uMOlUUVHtMVzBV {\n display: flex;\n gap: 10px;\n height: fit-content;\n padding: 10px 20px;\n\n .On7UzyczZB0EFpZn8hAO {\n border-radius: 10px;\n padding: 5px 10px;\n display: flex;\n align-items: center;\n flex-direction: column;\n align-items: flex-start;\n box-shadow: 0 0 5px rgba(0, 0, 0, 0.25);\n }\n\n i {\n font-size: 24px;\n }\n}\n\n.ys2v0_nbj9UZ2GtmsGFl {\n display: flex;\n flex-direction: column;\n}\n\n.uodJA65d3QSnFHHi6wEE {\n display: flex;\n flex-wrap: wrap;\n row-gap: 20px;\n column-gap: 15px;\n justify-content: center;\n padding: 20px 10px 20px 10px;\n}\n\n.yMV8jdykQ0p_dG9sc2yK {\n display: flex;\n gap: 10px;\n align-items: center;\n height: fit-content;\n background-color: var(--chatbot-prompt-background-color);\n border-radius: 10px;\n padding: 10px 30px;\n border: none;\n font-variation-settings: \"wdth\" 90;\n font-weight: 600;\n color: var(--chatbot-prompt-text-color);\n\n .OFNqcCdonr5dxzTTZ3zK {\n font-size: 0.85rem;\n }\n}\n\n.yMV8jdykQ0p_dG9sc2yK:disabled {\n cursor: not-allowed;\n}\n\n.ePwR5gBjQ2sQwKScmcAF {\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 30px;\n max-width: 30px;\n height: 30px;\n border-radius: 30px;\n background-color: grey;\n}\n\n.n5EFd7Gb3khLARy7SBEE {\n display: block;\n text-align: center;\n font-size: 0.7rem;\n font-weight: 700;\n margin: 5px 0 0;\n background: linear-gradient(to bottom, #39cff6, #ad84ff);\n background-clip: text;\n color: transparent;\n}\n\n.UlJ8l2Ig0xMVd2kSSwFc {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n max-width: calc(100% - 32px);\n width: fit-content;\n box-sizing: border-box;\n margin: 0 auto 7px;\n padding: 3px 9px;\n border: 1px solid\n var(--chatbot-footer-disclaimer-border-color, rgba(0, 0, 0, 0.08));\n border-radius: 999px;\n background-color: var(\n --chatbot-footer-disclaimer-background-color,\n rgba(0, 0, 0, 0.035)\n );\n color: var(--chatbot-footer-disclaimer-color, rgba(73, 74, 75, 0.82));\n font-size: 0.64rem;\n font-weight: 600;\n line-height: 1.2;\n text-align: center;\n white-space: normal;\n}\n\n.GPH5IAUB9eqnV9y0rpGd {\n flex: 0 0 auto;\n color: var(\n --chatbot-footer-disclaimer-icon-color,\n var(--chatbot-header-color)\n );\n font-size: 0.68rem;\n opacity: 0.72;\n}\n\n.P_GItjDPU4XleZm6P8xv {\n min-width: 0;\n overflow-wrap: anywhere;\n}\n\n.Cswbzq1GQuTnMGpPi4Zt {\n width: 95%;\n margin: 7px auto 10px;\n}\n\n.o26SHWfHQz6ZsTl_ZHHY {\n overflow: hidden;\n border-radius: 10px;\n background-color: var(--chatbot-background-color);\n box-shadow: 0 0 5px rgba(0, 0, 0, 0.25);\n}\n\n.aZhpX5bTq5glnTwRfexE {\n background-color: var(--chatbot-background-color);\n}\n\n.khl8aPnNVKa_2k4FtxCE {\n display: flex;\n align-items: center;\n justify-content: space-between;\n box-sizing: border-box;\n width: 100%;\n min-height: 34px;\n margin: 0;\n padding: 6px 14px;\n border: none;\n border-bottom: 1px solid\n var(--chatbot-footer-disclaimer-border-color, rgba(0, 0, 0, 0.08));\n background-color: var(--chatbot-background-color);\n color: var(--chatbot-header-color);\n cursor: pointer;\n font-family: \"Open Sans\", sans-serif;\n font-size: 0.72rem;\n font-weight: 700;\n line-height: 1.3;\n transition:\n background-color 0.2s ease,\n color 0.2s ease;\n}\n\n.khl8aPnNVKa_2k4FtxCE:hover {\n color: var(--chatbot-footericons-hover-color);\n}\n\n.khl8aPnNVKa_2k4FtxCE:focus-visible {\n outline: 2px solid var(--chatbot-footericons-hover-color);\n outline-offset: -2px;\n}\n\n.OSorpbHQM_04uxRDzesw {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 7px;\n min-width: 0;\n line-height: 1.3;\n}\n\n.QQ1ZPgR9ghIXrFXB0CCh,\n.EwCXv8ZSCm3o5rYuMlss {\n flex: 0 0 auto;\n color: currentColor;\n font-size: 0.82rem;\n line-height: 1;\n}\n\n.OSorpbHQM_04uxRDzesw span {\n display: block;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.ibnXsq4b88cDDvfQQgYn {\n display: flex;\n align-items: center;\n min-height: var(--chatbot-footer-input-height);\n height: var(--chatbot-footer-input-height);\n border-radius: 0;\n overflow: hidden;\n background-color: var(--chatbot-background-color);\n\n i {\n font-size: 1.75rem;\n }\n /* Ensures the button and input are nicely clipped within the border radius */\n}\n\n.Cswbzq1GQuTnMGpPi4Zt input {\n font-family: \"Open Sans\", sans-serif;\n font-optical-sizing: auto;\n font-weight: 600;\n font-style: normal;\n font-variation-settings: \"wdth\" 95;\n color: var(--chatbot-input-text-color);\n background-color: var(--chatbot-background-color);\n border: none;\n padding: 0 10px;\n flex: 1 1 auto;\n min-width: 0;\n width: auto;\n height: 100%;\n outline: none;\n transition:\n box-shadow 0.3s ease,\n border-color 0.3s ease;\n}\n\n.Cswbzq1GQuTnMGpPi4Zt input:focus {\n border-color: var(--chatbot-user-bubble-color);\n box-shadow: 0 10 10px var(--chatbot-user-bubble-color);\n /* Adds a glow effect on focus */\n}\n\n.ibnXsq4b88cDDvfQQgYn button {\n background-color: var(--chatbot-background-color);\n border: none;\n padding: 0 15px;\n /* Extra padding for the button */\n color: var(--chatbot-footer-icon-color);\n cursor: pointer;\n transition: color 0.3s ease;\n}\n\n.ibnXsq4b88cDDvfQQgYn button:hover {\n color: var(--chatbot-footericons-hover-color);\n /* filter: brightness(2); */\n /* Optional: hover effect for the button */\n}\n\n.ibnXsq4b88cDDvfQQgYn button:focus-visible {\n outline: 2px solid var(--chatbot-footericons-hover-color);\n outline-offset: -2px;\n}\n\n.ibnXsq4b88cDDvfQQgYn button:disabled {\n opacity: 0.6;\n /* Makes the button appear disabled */\n cursor: not-allowed;\n /* Changes cursor to indicate it's disabled */\n}\n\n.nW2NG3krvonnMg3Rivul {\n position: fixed;\n bottom: var(--chatbot-spacing-y);\n right: var(--chatbot-spacing-x);\n width: 0px;\n height: 0px;\n opacity: 0;\n z-index: 99999;\n\n .O6vpXieYIso2cRwekQqD {\n bottom: calc(var(--chatbot-circle-radius) + 20px);\n position: absolute;\n right: 10px;\n width: 200px;\n background-color: var(--chatbot-popup-background-color);\n color: var(--chatbot-popup-text-color);\n border-radius: 10px 10px 0 10px;\n padding: 15px;\n box-shadow: 0 8px 16px 6px rgba(0, 24, 56, 0.2);\n button,\n button:hover {\n background-color: transparent;\n border: none;\n }\n }\n\n /* Triangle effect on the bottom right of the popup */\n .gx3uioPf7XBH183XzIsX:after {\n content: \"\";\n position: absolute;\n top: 100%;\n right: 0;\n border-width: 10px;\n border-style: solid;\n border-color: var(--chatbot-popup-background-color) transparent transparent\n transparent;\n }\n\n .SnDh_4tosUOepmnQ6qtw {\n position: absolute;\n top: -25px;\n right: 0px;\n color: rgb(98, 97, 97);\n }\n\n .uS5rcmDgDrC952MI9O9f {\n width: 100%;\n padding: 0;\n color: inherit;\n font: inherit;\n text-align: left;\n cursor: pointer;\n }\n\n .uS5rcmDgDrC952MI9O9f:focus-visible {\n outline: 2px solid currentColor;\n outline-offset: 4px;\n border-radius: 4px;\n }\n}\n\n.JU97fmgoNdy3Tfye2Dws {\n border-radius: 50px;\n background-color: var(--chatbot-circle-background-color);\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n cursor: pointer;\n box-shadow: 0 8px 16px 6px rgba(0, 24, 56, 0.2);\n height: var(--chatbot-circle-radius);\n width: var(--chatbot-circle-radius);\n border-radius: 50%;\n}\n\n/* Add these styles to your Chatbot.module.css file */\n\n.pkiR_TxdafoynTpvRdcQ {\n margin-top: 10px;\n font-size: 0.95rem;\n width: 100%;\n}\n\n.pkiR_TxdafoynTpvRdcQ > p {\n overflow-wrap: anywhere;\n}\n\n.e3H6efowOKFf_KRpdCmA {\n margin-bottom: 5px;\n font-weight: bold;\n}\n\n.OwwGVqJowxUZVJuA2czv {\n text-decoration: none;\n color: var(--chatbot-bot-text-color);\n}\n\n.sCGr7vUZhXadHUv6e8Ir,\n.sCGr7vUZhXadHUv6e8Ir:hover {\n color: var(--chatbot-inline-link-color) !important;\n text-decoration: underline;\n font-size: 0.95rem;\n}\n\n.Bo90PPN_Vahh0nlC0xX9 {\n a {\n text-decoration: none;\n color: var(--chatbot-inline-link-color) !important;\n font-weight: 900;\n word-break: break-word;\n }\n}\n\n.Bo90PPN_Vahh0nlC0xX9 > p {\n margin-bottom: 0;\n}\n\n.elb0dKqBt_8ZGAEp_EkF {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 24px;\n width: 100%;\n}\n\n.H1ZoUyR1lvfzrhY32Iks {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n width: 100%;\n}\n\n.FS7iocV3c2mOOsu9YyGQ {\n background-color: #25d366;\n color: white;\n border: none;\n border-radius: 10px;\n padding: 8px 16px;\n font-weight: 600;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n font-size: 0.9rem;\n transition: opacity 0.3s;\n width: fit-content;\n text-decoration: none;\n align-self: center;\n}\n\n.FS7iocV3c2mOOsu9YyGQ:hover {\n opacity: 0.9;\n color: white;\n}\n\n.IeFCigUDcQq5wGoBLy3M {\n background-color: #25d366;\n}\n\n.lRpTsWPUSwGCqjp0t62h {\n background-color: #229ed9;\n}\n\n.FS7iocV3c2mOOsu9YyGQ i {\n font-size: 1.1rem;\n}\n\n.bGwt6w5szvfURLrK73Qg {\n width: 100%;\n height: 1px;\n background-color: var(\n --chatbot-border-color,\n #e0e0e0\n ); /* Subtle gray fallback */\n margin: 10px 0;\n opacity: 0.5;\n}\n\n.x0MAnMNVi2NF7R3qljbA {\n text-align: center;\n font-size: 0.9rem;\n line-height: 1.35;\n margin: 0 auto;\n max-width: 100%;\n color: var(--chatbot-bot-text-color);\n font-weight: 600;\n}\n\n/* Feedback Form */\n.cfhdg867vN0ZobXuP4Qd {\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n.JL4EdjCJ1Xh_P2vjT5GI {\n font-size: 0.85rem;\n font-weight: 600;\n color: var(--chatbot-bot-text-color);\n margin-bottom: 8px;\n align-self: center;\n}\n\n.VyG3z3ZQo3QNVjSDGTtg {\n display: flex;\n gap: 8px;\n align-self: center;\n}\n\n.tc_xpptxDgYlQ5SJS8Lt {\n display: flex;\n align-items: center;\n gap: 5px;\n padding: 6px 14px;\n border-radius: 8px;\n border: 1.5px solid var(--chatbot-border-color, #ddd);\n background-color: transparent;\n color: var(--chatbot-bot-text-color);\n font-size: 0.8rem;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.tc_xpptxDgYlQ5SJS8Lt:hover {\n border-color: var(--chatbot-header-color);\n background-color: rgba(0, 0, 0, 0.03);\n}\n\n.tc_xpptxDgYlQ5SJS8Lt:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.tc_xpptxDgYlQ5SJS8Lt i {\n font-size: 0.9rem;\n}\n\n.UX5TfomvDnUiNrB6RiZZ {\n border-color: #25d366;\n background-color: rgba(37, 211, 102, 0.1);\n color: #1a9e4c;\n}\n\n.MKidq7RJ4lXochuxVmK6 {\n border-color: #e74c3c;\n background-color: rgba(231, 76, 60, 0.1);\n color: #c0392b;\n}\n\n.HtjtoaceTCDfUbVxSep2 {\n width: 100%;\n margin-top: 8px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.BhKEzzkVk9nZwPPBPFWe {\n width: 100%;\n min-height: 60px;\n padding: 8px 10px;\n border: 1.5px solid var(--chatbot-border-color, #ddd);\n border-radius: 8px;\n font-family: \"Open Sans\", sans-serif;\n font-size: 0.8rem;\n font-weight: 500;\n color: var(--chatbot-bot-text-color);\n background-color: transparent;\n resize: vertical;\n outline: none;\n transition: border-color 0.2s ease;\n box-sizing: border-box;\n}\n\n.BhKEzzkVk9nZwPPBPFWe:focus {\n border-color: var(--chatbot-header-color);\n}\n\n.BhKEzzkVk9nZwPPBPFWe::placeholder {\n color: var(--chatbot-bot-text-color);\n opacity: 0.5;\n}\n\n.YJ5JKd2sEnSsWK_WOXAB {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n}\n\n.L9AzIA9tziUWoMhPNJBP {\n padding: 5px 12px;\n border-radius: 8px;\n border: 1.5px solid var(--chatbot-border-color, #ddd);\n background-color: transparent;\n color: var(--chatbot-bot-text-color);\n font-size: 0.8rem;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.L9AzIA9tziUWoMhPNJBP:hover {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.pvp0eslPPZfUSMnoWIgp {\n padding: 5px 14px;\n border-radius: 8px;\n border: none;\n background-color: var(--chatbot-header-color);\n color: var(--chatbot-header-text-color, white);\n font-size: 0.8rem;\n font-weight: 600;\n cursor: pointer;\n transition: opacity 0.2s ease;\n}\n\n.pvp0eslPPZfUSMnoWIgp:hover {\n opacity: 0.9;\n}\n\n.pvp0eslPPZfUSMnoWIgp:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n._CzJiZ0hvBlHkkpiR9hP {\n display: flex;\n align-items: center;\n gap: 6px;\n color: #25d366;\n font-size: 0.85rem;\n font-weight: 600;\n padding: 4px 0;\n}\n\n._CzJiZ0hvBlHkkpiR9hP i {\n font-size: 1rem;\n}\n\n.Suczrphb9uYE7BI5Hc9A {\n display: flex;\n align-items: center;\n gap: 5px;\n color: #e74c3c;\n font-size: 0.75rem;\n font-weight: 600;\n}\n\n.Suczrphb9uYE7BI5Hc9A i {\n font-size: 0.85rem;\n}\n`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"chatbotParent\": `bOJfQLIDdUlPEJzIVy0q`,\n\t\"chatbotContainer\": `mrPuzpzfdEmQSyTxnvxI`,\n\t\"inlineChatbotParent\": `EwBhaKWtrMkmlquKWEEo`,\n\t\"inlineChatbotContainer\": `dyE5pTsFKvJw8NgUVBbk`,\n\t\"inlineStateSurface\": `HrdPV1T8C8AOFmGVDVQX`,\n\t\"inlineStateContent\": `K4Ka7lBIi3uwlJDIQEt0`,\n\t\"inlineStateSpinner\": `NX1ohgiEEs0vaDOeQ2_w`,\n\t\"inlineChatbotSpin\": `gipOtf8Cs1L3UhoKYCY6`,\n\t\"inlineStateTitle\": `yXQQue2MsoLEzd9T2aoc`,\n\t\"inlineStateText\": `aH0mc9GAi1rPzFMrRzfF`,\n\t\"inlineStateErrorIcon\": `EHAnq_Q6pKh_POfqBrL4`,\n\t\"headerContainer\": `QJ6c9UPW4NdCwINA2KKw`,\n\t\"header\": `BAciNorgEk8q0Hjvg_Nd`,\n\t\"headerTitleContainer\": `rDNjthKTeHigjuhTaXFw`,\n\t\"headerTitle\": `qhIJF8jtTVHpl14phrvO`,\n\t\"headerSubtitle\": `bJ4qOXuizp8yq01SFRbe`,\n\t\"body\": `M84EXuBJb0ITHqmcP033`,\n\t\"bodyPromptsContainer\": `KJH5XQVgMgo5xa6hVmpQ`,\n\t\"promptsData\": `uodJA65d3QSnFHHi6wEE`,\n\t\"option\": `yMV8jdykQ0p_dG9sc2yK`,\n\t\"optionText\": `OFNqcCdonr5dxzTTZ3zK`,\n\t\"conversation\": `F4te4w0Rg9nYSlvqoOuU`,\n\t\"chatbotIcon\": `y3GymRJmY0MX41NX3xWJ`,\n\t\"message\": `soVXB5uMOlUUVHtMVzBV`,\n\t\"messageText\": `On7UzyczZB0EFpZn8hAO`,\n\t\"messageBody\": `ys2v0_nbj9UZ2GtmsGFl`,\n\t\"icon\": `ePwR5gBjQ2sQwKScmcAF`,\n\t\"footerBranding\": `n5EFd7Gb3khLARy7SBEE`,\n\t\"footerDisclaimer\": `UlJ8l2Ig0xMVd2kSSwFc`,\n\t\"footerDisclaimerIcon\": `GPH5IAUB9eqnV9y0rpGd`,\n\t\"footerDisclaimerText\": `P_GItjDPU4XleZm6P8xv`,\n\t\"footer\": `Cswbzq1GQuTnMGpPi4Zt`,\n\t\"footerInputSurface\": `o26SHWfHQz6ZsTl_ZHHY`,\n\t\"defaultPrompts\": `aZhpX5bTq5glnTwRfexE`,\n\t\"promptSuggestionsToggle\": `khl8aPnNVKa_2k4FtxCE`,\n\t\"promptSuggestionsToggleContent\": `OSorpbHQM_04uxRDzesw`,\n\t\"promptSuggestionsIcon\": `QQ1ZPgR9ghIXrFXB0CCh`,\n\t\"promptSuggestionsChevron\": `EwCXv8ZSCm3o5rYuMlss`,\n\t\"footerForm\": `ibnXsq4b88cDDvfQQgYn`,\n\t\"chatbotCircleContainer\": `nW2NG3krvonnMg3Rivul`,\n\t\"popupContainer\": `O6vpXieYIso2cRwekQqD`,\n\t\"popup\": `gx3uioPf7XBH183XzIsX`,\n\t\"closePopup\": `SnDh_4tosUOepmnQ6qtw`,\n\t\"popupButton\": `uS5rcmDgDrC952MI9O9f`,\n\t\"chatbotCircle\": `JU97fmgoNdy3Tfye2Dws`,\n\t\"sourceList\": `pkiR_TxdafoynTpvRdcQ`,\n\t\"sourceTitle\": `e3H6efowOKFf_KRpdCmA`,\n\t\"sourceLink\": `OwwGVqJowxUZVJuA2czv`,\n\t\"sourceSwitch\": `sCGr7vUZhXadHUv6e8Ir`,\n\t\"markdownToHtmlContainer\": `Bo90PPN_Vahh0nlC0xX9`,\n\t\"supportActions\": `elb0dKqBt_8ZGAEp_EkF`,\n\t\"supportAction\": `H1ZoUyR1lvfzrhY32Iks`,\n\t\"supportButton\": `FS7iocV3c2mOOsu9YyGQ`,\n\t\"whatsappSupportButton\": `IeFCigUDcQq5wGoBLy3M`,\n\t\"telegramSupportButton\": `lRpTsWPUSwGCqjp0t62h`,\n\t\"messageDivider\": `bGwt6w5szvfURLrK73Qg`,\n\t\"supportText\": `x0MAnMNVi2NF7R3qljbA`,\n\t\"feedbackForm\": `cfhdg867vN0ZobXuP4Qd`,\n\t\"feedbackTitle\": `JL4EdjCJ1Xh_P2vjT5GI`,\n\t\"feedbackRatingContainer\": `VyG3z3ZQo3QNVjSDGTtg`,\n\t\"feedbackRatingButton\": `tc_xpptxDgYlQ5SJS8Lt`,\n\t\"feedbackRatingUp\": `UX5TfomvDnUiNrB6RiZZ`,\n\t\"feedbackRatingDown\": `MKidq7RJ4lXochuxVmK6`,\n\t\"feedbackExpanded\": `HtjtoaceTCDfUbVxSep2`,\n\t\"feedbackTextarea\": `BhKEzzkVk9nZwPPBPFWe`,\n\t\"feedbackActions\": `YJ5JKd2sEnSsWK_WOXAB`,\n\t\"feedbackCancelButton\": `L9AzIA9tziUWoMhPNJBP`,\n\t\"feedbackSubmitButton\": `pvp0eslPPZfUSMnoWIgp`,\n\t\"feedbackSuccess\": `_CzJiZ0hvBlHkkpiR9hP`,\n\t\"feedbackError\": `Suczrphb9uYE7BI5Hc9A`\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://VamChatbot/./Chatbot.module.css?./node_modules/css-loader/dist/cjs.js??ruleSet%5B1%5D.rules%5B1%5D.use%5B1%5D");
249
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n___CSS_LOADER_EXPORT___.push([module.id, \"@import url(https://fonts.googleapis.com/css2?family=Open+Sans:ital,wdth,wght@0,75..100,300..800;1,75..100,300..800&display=swap);\"]);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.bOJfQLIDdUlPEJzIVy0q {\n --chatbot-height: 70%;\n --chatbot-width: 30%;\n --chatbot-header-height: 50px;\n --chatbot-footer-height: 80px;\n --chatbot-footer-input-height: 40px;\n --chatbot-circle-radius: 70px;\n --chatbot-spacing-x: 10px;\n --chatbot-spacing-y: 10px;\n --chatbot-border-radius: 10px;\n}\n\n@media only screen and (max-width: 1280px) {\n .bOJfQLIDdUlPEJzIVy0q {\n --chatbot-width: 50%;\n --chatbot-height: 80%;\n }\n}\n\n@media only screen and (max-width: 768px) {\n .bOJfQLIDdUlPEJzIVy0q {\n --chatbot-width: 100%;\n --chatbot-height: 100%;\n --chatbot-header-height: 70px;\n --chatbot-spacing-x: 0px;\n --chatbot-spacing-y: 0px;\n --chatbot-border-radius: 0px;\n }\n}\n\n.mrPuzpzfdEmQSyTxnvxI {\n font-family: \"Open Sans\", sans-serif;\n font-optical-sizing: auto;\n font-weight: 600;\n font-style: normal;\n font-variation-settings: \"wdth\" 90;\n position: fixed;\n overflow: hidden;\n border-radius: var(--chatbot-border-radius);\n bottom: var(--chatbot-spacing-y);\n right: var(--chatbot-spacing-x);\n height: var(--chatbot-height);\n width: var(--chatbot-width);\n box-shadow: 0 8px 16px 6px rgba(0, 24, 56, 0.2);\n z-index: 99999;\n}\n\n.EwBhaKWtrMkmlquKWEEo {\n width: var(--chatbot-inline-width, 100%);\n height: var(--chatbot-inline-height, 640px);\n min-height: var(--chatbot-inline-min-height, 480px);\n box-sizing: border-box;\n}\n\n.dyE5pTsFKvJw8NgUVBbk {\n position: relative;\n bottom: auto;\n right: auto;\n width: 100%;\n max-width: 100%;\n height: 100%;\n min-height: 100%;\n box-sizing: border-box;\n z-index: 0;\n isolation: isolate;\n}\n\n:host([layout=\"inline\"]) .EwBhaKWtrMkmlquKWEEo {\n width: 100%;\n height: 100%;\n min-height: 100%;\n}\n\n.HrdPV1T8C8AOFmGVDVQX {\n height: 100%;\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: var(--chatbot-background-color, #fff);\n border-radius: var(--chatbot-border-radius);\n color: var(--chatbot-bot-text-color, #1f2937);\n padding: 24px;\n box-sizing: border-box;\n}\n\n.K4Ka7lBIi3uwlJDIQEt0 {\n max-width: 420px;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n text-align: center;\n}\n\n.NX1ohgiEEs0vaDOeQ2_w {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n border: 3px solid rgba(31, 41, 55, 0.16);\n border-top-color: var(--chatbot-header-color, #4f46e5);\n animation: gipOtf8Cs1L3UhoKYCY6 0.8s linear infinite;\n}\n\n.yXQQue2MsoLEzd9T2aoc {\n margin: 0;\n font-size: 1rem;\n font-weight: 700;\n}\n\n.aH0mc9GAi1rPzFMrRzfF {\n margin: 0;\n font-size: 0.9rem;\n font-weight: 500;\n line-height: 1.45;\n}\n\n.EHAnq_Q6pKh_POfqBrL4 {\n font-size: 1.6rem;\n color: #e74c3c;\n}\n\n@keyframes gipOtf8Cs1L3UhoKYCY6 {\n to {\n transform: rotate(360deg);\n }\n}\n\n.QJ6c9UPW4NdCwINA2KKw {\n position: absolute;\n width: 100%;\n background-color: var(--chatbot-header-color);\n padding: 0 10px;\n border-bottom: 0.5px solid var(--chatbot-border-color);\n z-index: 99998;\n height: var(--chatbot-header-height);\n}\n\n.BAciNorgEk8q0Hjvg_Nd {\n height: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n color: white;\n font-size: 1.4rem;\n\n button,\n button:hover {\n background-color: var(--chatbot-header-color);\n color: var(--chatbot-header-text-color);\n border: none;\n }\n}\n\n.rDNjthKTeHigjuhTaXFw {\n display: flex;\n height: 100%;\n flex-direction: column;\n align-items: flex-start;\n /* Align items to the start (left) */\n justify-content: center;\n /* Center vertically within the container */\n /* padding-left: 10px; */\n /* Add padding to push it away from the edge */\n}\n\n.qhIJF8jtTVHpl14phrvO {\n font-weight: 700;\n text-align: start;\n color: var(--chatbot-header-text-color);\n}\n\n.bJ4qOXuizp8yq01SFRbe {\n font-weight: 700;\n font-size: 0.4rem;\n text-align: start;\n}\n\n.M84EXuBJb0ITHqmcP033 {\n margin-top: var(--chatbot-header-height);\n font-size: 1rem;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n background-color: var(--chatbot-background-color);\n height: calc(100% - var(--chatbot-header-height));\n}\n\n.KJH5XQVgMgo5xa6hVmpQ {\n .uodJA65d3QSnFHHi6wEE {\n row-gap: 10px;\n column-gap: 10px;\n padding: 0 20px;\n }\n .yMV8jdykQ0p_dG9sc2yK {\n gap: 10px;\n border-radius: 10px;\n padding: 5px 12px;\n cursor: pointer;\n color: var(--chatbot-prompt-text-color);\n\n .OFNqcCdonr5dxzTTZ3zK {\n font-size: 0.85rem;\n }\n }\n}\n\n.F4te4w0Rg9nYSlvqoOuU {\n flex: 1 1 auto;\n min-height: 0;\n overflow: auto;\n}\n\n.y3GymRJmY0MX41NX3xWJ {\n /* width: 45px; */\n height: 70px;\n}\n\n.soVXB5uMOlUUVHtMVzBV,\n.BAciNorgEk8q0Hjvg_Nd {\n .y3GymRJmY0MX41NX3xWJ {\n /* width: 40px; */\n height: 40px;\n }\n}\n\n.soVXB5uMOlUUVHtMVzBV {\n display: flex;\n gap: 10px;\n height: fit-content;\n padding: 10px 20px;\n\n .On7UzyczZB0EFpZn8hAO {\n border-radius: 10px;\n padding: 5px 10px;\n display: flex;\n align-items: center;\n flex-direction: column;\n align-items: flex-start;\n box-shadow: 0 0 5px rgba(0, 0, 0, 0.25);\n }\n\n i {\n font-size: 24px;\n }\n}\n\n.ys2v0_nbj9UZ2GtmsGFl {\n display: flex;\n flex-direction: column;\n}\n\n.uodJA65d3QSnFHHi6wEE {\n display: flex;\n flex-wrap: wrap;\n row-gap: 20px;\n column-gap: 15px;\n justify-content: center;\n padding: 20px 10px 20px 10px;\n}\n\n.yMV8jdykQ0p_dG9sc2yK {\n display: flex;\n gap: 10px;\n align-items: center;\n height: fit-content;\n background-color: var(--chatbot-prompt-background-color);\n border-radius: 10px;\n padding: 10px 30px;\n border: none;\n font-variation-settings: \"wdth\" 90;\n font-weight: 600;\n color: var(--chatbot-prompt-text-color);\n\n .OFNqcCdonr5dxzTTZ3zK {\n font-size: 0.85rem;\n }\n}\n\n.yMV8jdykQ0p_dG9sc2yK:disabled {\n cursor: not-allowed;\n}\n\n.ePwR5gBjQ2sQwKScmcAF {\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 30px;\n max-width: 30px;\n height: 30px;\n border-radius: 30px;\n background-color: grey;\n}\n\n.n5EFd7Gb3khLARy7SBEE {\n display: block;\n text-align: center;\n font-size: 0.7rem;\n font-weight: 700;\n margin: 5px 0 0;\n background: linear-gradient(to bottom, #39cff6, #ad84ff);\n background-clip: text;\n color: transparent;\n}\n\n.UlJ8l2Ig0xMVd2kSSwFc {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n max-width: calc(100% - 32px);\n width: fit-content;\n box-sizing: border-box;\n margin: 0 auto 7px;\n padding: 3px 9px;\n border: 1px solid\n var(--chatbot-footer-disclaimer-border-color, rgba(0, 0, 0, 0.08));\n border-radius: 999px;\n background-color: var(\n --chatbot-footer-disclaimer-background-color,\n rgba(0, 0, 0, 0.035)\n );\n color: var(--chatbot-footer-disclaimer-color, rgba(73, 74, 75, 0.82));\n font-size: 0.64rem;\n font-weight: 600;\n line-height: 1.2;\n text-align: center;\n white-space: normal;\n}\n\n.GPH5IAUB9eqnV9y0rpGd {\n flex: 0 0 auto;\n color: var(\n --chatbot-footer-disclaimer-icon-color,\n var(--chatbot-header-color)\n );\n font-size: 0.68rem;\n opacity: 0.72;\n}\n\n.P_GItjDPU4XleZm6P8xv {\n min-width: 0;\n overflow-wrap: anywhere;\n}\n\n.Cswbzq1GQuTnMGpPi4Zt {\n width: 95%;\n margin: 7px auto 10px;\n}\n\n.o26SHWfHQz6ZsTl_ZHHY {\n overflow: hidden;\n border-radius: 10px;\n background-color: var(--chatbot-background-color);\n box-shadow: 0 0 5px rgba(0, 0, 0, 0.25);\n}\n\n.aZhpX5bTq5glnTwRfexE {\n background-color: var(--chatbot-background-color);\n}\n\n._yHxsSehNpv6oVLoKuCt {\n overflow: hidden;\n}\n\n.khl8aPnNVKa_2k4FtxCE {\n display: flex;\n align-items: center;\n justify-content: space-between;\n box-sizing: border-box;\n width: 100%;\n min-height: 34px;\n margin: 0;\n padding: 6px 14px;\n border: none;\n border-bottom: 1px solid\n var(--chatbot-footer-disclaimer-border-color, rgba(0, 0, 0, 0.08));\n background-color: var(--chatbot-background-color);\n color: var(--chatbot-header-color);\n cursor: pointer;\n font-family: \"Open Sans\", sans-serif;\n font-size: 0.72rem;\n font-weight: 700;\n line-height: 1.3;\n transition:\n background-color 0.2s ease,\n color 0.2s ease;\n}\n\n.khl8aPnNVKa_2k4FtxCE:hover {\n color: var(--chatbot-footericons-hover-color);\n}\n\n.khl8aPnNVKa_2k4FtxCE:focus-visible {\n outline: 2px solid var(--chatbot-footericons-hover-color);\n outline-offset: -2px;\n}\n\n.OSorpbHQM_04uxRDzesw {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 7px;\n min-width: 0;\n line-height: 1.3;\n}\n\n.QQ1ZPgR9ghIXrFXB0CCh,\n.EwCXv8ZSCm3o5rYuMlss {\n flex: 0 0 auto;\n color: currentColor;\n font-size: 0.82rem;\n line-height: 1;\n}\n\n.OSorpbHQM_04uxRDzesw span {\n display: block;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.ibnXsq4b88cDDvfQQgYn {\n display: flex;\n align-items: center;\n min-height: var(--chatbot-footer-input-height);\n height: var(--chatbot-footer-input-height);\n border-radius: 0;\n overflow: hidden;\n background-color: var(--chatbot-background-color);\n\n i {\n font-size: 1.75rem;\n }\n /* Ensures the button and input are nicely clipped within the border radius */\n}\n\n.Cswbzq1GQuTnMGpPi4Zt input {\n font-family: \"Open Sans\", sans-serif;\n font-optical-sizing: auto;\n font-weight: 600;\n font-style: normal;\n font-variation-settings: \"wdth\" 95;\n color: var(--chatbot-input-text-color);\n background-color: var(--chatbot-background-color);\n border: none;\n padding: 0 10px;\n flex: 1 1 auto;\n min-width: 0;\n width: auto;\n height: 100%;\n outline: none;\n transition:\n box-shadow 0.3s ease,\n border-color 0.3s ease;\n}\n\n.Cswbzq1GQuTnMGpPi4Zt input:focus {\n border-color: var(--chatbot-user-bubble-color);\n box-shadow: 0 10 10px var(--chatbot-user-bubble-color);\n /* Adds a glow effect on focus */\n}\n\n.ibnXsq4b88cDDvfQQgYn button {\n background-color: var(--chatbot-background-color);\n border: none;\n padding: 0 15px;\n /* Extra padding for the button */\n color: var(--chatbot-footer-icon-color);\n cursor: pointer;\n transition: color 0.3s ease;\n}\n\n.ibnXsq4b88cDDvfQQgYn button:hover {\n color: var(--chatbot-footericons-hover-color);\n /* filter: brightness(2); */\n /* Optional: hover effect for the button */\n}\n\n.ibnXsq4b88cDDvfQQgYn button:focus-visible {\n outline: 2px solid var(--chatbot-footericons-hover-color);\n outline-offset: -2px;\n}\n\n.ibnXsq4b88cDDvfQQgYn button:disabled {\n opacity: 0.6;\n /* Makes the button appear disabled */\n cursor: not-allowed;\n /* Changes cursor to indicate it's disabled */\n}\n\n.nW2NG3krvonnMg3Rivul {\n position: fixed;\n bottom: var(--chatbot-spacing-y);\n right: var(--chatbot-spacing-x);\n width: 0px;\n height: 0px;\n opacity: 0;\n z-index: 99999;\n\n .O6vpXieYIso2cRwekQqD {\n bottom: calc(var(--chatbot-circle-radius) + 20px);\n position: absolute;\n right: 10px;\n width: 200px;\n background-color: var(--chatbot-popup-background-color);\n color: var(--chatbot-popup-text-color);\n border-radius: 10px 10px 0 10px;\n padding: 15px;\n box-shadow: 0 8px 16px 6px rgba(0, 24, 56, 0.2);\n button,\n button:hover {\n background-color: transparent;\n border: none;\n }\n }\n\n /* Triangle effect on the bottom right of the popup */\n .gx3uioPf7XBH183XzIsX:after {\n content: \"\";\n position: absolute;\n top: 100%;\n right: 0;\n border-width: 10px;\n border-style: solid;\n border-color: var(--chatbot-popup-background-color) transparent transparent\n transparent;\n }\n\n .SnDh_4tosUOepmnQ6qtw {\n position: absolute;\n top: -25px;\n right: 0px;\n color: rgb(98, 97, 97);\n }\n\n .uS5rcmDgDrC952MI9O9f {\n width: 100%;\n padding: 0;\n color: inherit;\n font: inherit;\n text-align: left;\n cursor: pointer;\n }\n\n .uS5rcmDgDrC952MI9O9f:focus-visible {\n outline: 2px solid currentColor;\n outline-offset: 4px;\n border-radius: 4px;\n }\n}\n\n.JU97fmgoNdy3Tfye2Dws {\n border-radius: 50px;\n background-color: var(--chatbot-circle-background-color);\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n cursor: pointer;\n box-shadow: 0 8px 16px 6px rgba(0, 24, 56, 0.2);\n height: var(--chatbot-circle-radius);\n width: var(--chatbot-circle-radius);\n border-radius: 50%;\n}\n\n/* Add these styles to your Chatbot.module.css file */\n\n.pkiR_TxdafoynTpvRdcQ {\n margin-top: 10px;\n font-size: 0.95rem;\n width: 100%;\n}\n\n.pkiR_TxdafoynTpvRdcQ > p {\n overflow-wrap: anywhere;\n}\n\n.e3H6efowOKFf_KRpdCmA {\n margin-bottom: 5px;\n font-weight: bold;\n}\n\n.OwwGVqJowxUZVJuA2czv {\n text-decoration: none;\n color: var(--chatbot-bot-text-color);\n}\n\n.sCGr7vUZhXadHUv6e8Ir,\n.sCGr7vUZhXadHUv6e8Ir:hover {\n color: var(--chatbot-inline-link-color) !important;\n text-decoration: underline;\n font-size: 0.95rem;\n}\n\n.Bo90PPN_Vahh0nlC0xX9 {\n a {\n text-decoration: none;\n color: var(--chatbot-inline-link-color) !important;\n font-weight: 900;\n word-break: break-word;\n }\n}\n\n.Bo90PPN_Vahh0nlC0xX9 > p {\n margin-bottom: 0;\n}\n\n.elb0dKqBt_8ZGAEp_EkF {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 24px;\n width: 100%;\n}\n\n.H1ZoUyR1lvfzrhY32Iks {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n width: 100%;\n}\n\n.FS7iocV3c2mOOsu9YyGQ {\n background-color: #25d366;\n color: white;\n border: none;\n border-radius: 10px;\n padding: 8px 16px;\n font-weight: 600;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n font-size: 0.9rem;\n transition: opacity 0.3s;\n width: fit-content;\n text-decoration: none;\n align-self: center;\n}\n\n.FS7iocV3c2mOOsu9YyGQ:hover {\n opacity: 0.9;\n color: white;\n}\n\n.IeFCigUDcQq5wGoBLy3M {\n background-color: #25d366;\n}\n\n.lRpTsWPUSwGCqjp0t62h {\n background-color: #229ed9;\n}\n\n.FS7iocV3c2mOOsu9YyGQ i {\n font-size: 1.1rem;\n}\n\n.bGwt6w5szvfURLrK73Qg {\n width: 100%;\n height: 1px;\n background-color: var(\n --chatbot-border-color,\n #e0e0e0\n ); /* Subtle gray fallback */\n margin: 10px 0;\n opacity: 0.5;\n}\n\n.x0MAnMNVi2NF7R3qljbA {\n text-align: center;\n font-size: 0.9rem;\n line-height: 1.35;\n margin: 0 auto;\n max-width: 100%;\n color: var(--chatbot-bot-text-color);\n font-weight: 600;\n}\n\n/* Feedback Form */\n.cfhdg867vN0ZobXuP4Qd {\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n.JL4EdjCJ1Xh_P2vjT5GI {\n font-size: 0.85rem;\n font-weight: 600;\n color: var(--chatbot-bot-text-color);\n margin-bottom: 8px;\n align-self: center;\n}\n\n.VyG3z3ZQo3QNVjSDGTtg {\n display: flex;\n gap: 8px;\n align-self: center;\n}\n\n.tc_xpptxDgYlQ5SJS8Lt {\n display: flex;\n align-items: center;\n gap: 5px;\n padding: 6px 14px;\n border-radius: 8px;\n border: 1.5px solid var(--chatbot-border-color, #ddd);\n background-color: transparent;\n color: var(--chatbot-bot-text-color);\n font-size: 0.8rem;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.tc_xpptxDgYlQ5SJS8Lt:hover {\n border-color: var(--chatbot-header-color);\n background-color: rgba(0, 0, 0, 0.03);\n}\n\n.tc_xpptxDgYlQ5SJS8Lt:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.tc_xpptxDgYlQ5SJS8Lt i {\n font-size: 0.9rem;\n}\n\n.UX5TfomvDnUiNrB6RiZZ {\n border-color: #25d366;\n background-color: rgba(37, 211, 102, 0.1);\n color: #1a9e4c;\n}\n\n.MKidq7RJ4lXochuxVmK6 {\n border-color: #e74c3c;\n background-color: rgba(231, 76, 60, 0.1);\n color: #c0392b;\n}\n\n.HtjtoaceTCDfUbVxSep2 {\n width: 100%;\n margin-top: 8px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.BhKEzzkVk9nZwPPBPFWe {\n width: 100%;\n min-height: 60px;\n padding: 8px 10px;\n border: 1.5px solid var(--chatbot-border-color, #ddd);\n border-radius: 8px;\n font-family: \"Open Sans\", sans-serif;\n font-size: 0.8rem;\n font-weight: 500;\n color: var(--chatbot-bot-text-color);\n background-color: transparent;\n resize: vertical;\n outline: none;\n transition: border-color 0.2s ease;\n box-sizing: border-box;\n}\n\n.BhKEzzkVk9nZwPPBPFWe:focus {\n border-color: var(--chatbot-header-color);\n}\n\n.BhKEzzkVk9nZwPPBPFWe::placeholder {\n color: var(--chatbot-bot-text-color);\n opacity: 0.5;\n}\n\n.YJ5JKd2sEnSsWK_WOXAB {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n}\n\n.L9AzIA9tziUWoMhPNJBP {\n padding: 5px 12px;\n border-radius: 8px;\n border: 1.5px solid var(--chatbot-border-color, #ddd);\n background-color: transparent;\n color: var(--chatbot-bot-text-color);\n font-size: 0.8rem;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.L9AzIA9tziUWoMhPNJBP:hover {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.pvp0eslPPZfUSMnoWIgp {\n padding: 5px 14px;\n border-radius: 8px;\n border: none;\n background-color: var(--chatbot-header-color);\n color: var(--chatbot-header-text-color, white);\n font-size: 0.8rem;\n font-weight: 600;\n cursor: pointer;\n transition: opacity 0.2s ease;\n}\n\n.pvp0eslPPZfUSMnoWIgp:hover {\n opacity: 0.9;\n}\n\n.pvp0eslPPZfUSMnoWIgp:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n._CzJiZ0hvBlHkkpiR9hP {\n display: flex;\n align-items: center;\n gap: 6px;\n color: #25d366;\n font-size: 0.85rem;\n font-weight: 600;\n padding: 4px 0;\n}\n\n._CzJiZ0hvBlHkkpiR9hP i {\n font-size: 1rem;\n}\n\n.Suczrphb9uYE7BI5Hc9A {\n display: flex;\n align-items: center;\n gap: 5px;\n color: #e74c3c;\n font-size: 0.75rem;\n font-weight: 600;\n}\n\n.Suczrphb9uYE7BI5Hc9A i {\n font-size: 0.85rem;\n}\n`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"chatbotParent\": `bOJfQLIDdUlPEJzIVy0q`,\n\t\"chatbotContainer\": `mrPuzpzfdEmQSyTxnvxI`,\n\t\"inlineChatbotParent\": `EwBhaKWtrMkmlquKWEEo`,\n\t\"inlineChatbotContainer\": `dyE5pTsFKvJw8NgUVBbk`,\n\t\"inlineStateSurface\": `HrdPV1T8C8AOFmGVDVQX`,\n\t\"inlineStateContent\": `K4Ka7lBIi3uwlJDIQEt0`,\n\t\"inlineStateSpinner\": `NX1ohgiEEs0vaDOeQ2_w`,\n\t\"inlineChatbotSpin\": `gipOtf8Cs1L3UhoKYCY6`,\n\t\"inlineStateTitle\": `yXQQue2MsoLEzd9T2aoc`,\n\t\"inlineStateText\": `aH0mc9GAi1rPzFMrRzfF`,\n\t\"inlineStateErrorIcon\": `EHAnq_Q6pKh_POfqBrL4`,\n\t\"headerContainer\": `QJ6c9UPW4NdCwINA2KKw`,\n\t\"header\": `BAciNorgEk8q0Hjvg_Nd`,\n\t\"headerTitleContainer\": `rDNjthKTeHigjuhTaXFw`,\n\t\"headerTitle\": `qhIJF8jtTVHpl14phrvO`,\n\t\"headerSubtitle\": `bJ4qOXuizp8yq01SFRbe`,\n\t\"body\": `M84EXuBJb0ITHqmcP033`,\n\t\"bodyPromptsContainer\": `KJH5XQVgMgo5xa6hVmpQ`,\n\t\"promptsData\": `uodJA65d3QSnFHHi6wEE`,\n\t\"option\": `yMV8jdykQ0p_dG9sc2yK`,\n\t\"optionText\": `OFNqcCdonr5dxzTTZ3zK`,\n\t\"conversation\": `F4te4w0Rg9nYSlvqoOuU`,\n\t\"chatbotIcon\": `y3GymRJmY0MX41NX3xWJ`,\n\t\"message\": `soVXB5uMOlUUVHtMVzBV`,\n\t\"messageText\": `On7UzyczZB0EFpZn8hAO`,\n\t\"messageBody\": `ys2v0_nbj9UZ2GtmsGFl`,\n\t\"icon\": `ePwR5gBjQ2sQwKScmcAF`,\n\t\"footerBranding\": `n5EFd7Gb3khLARy7SBEE`,\n\t\"footerDisclaimer\": `UlJ8l2Ig0xMVd2kSSwFc`,\n\t\"footerDisclaimerIcon\": `GPH5IAUB9eqnV9y0rpGd`,\n\t\"footerDisclaimerText\": `P_GItjDPU4XleZm6P8xv`,\n\t\"footer\": `Cswbzq1GQuTnMGpPi4Zt`,\n\t\"footerInputSurface\": `o26SHWfHQz6ZsTl_ZHHY`,\n\t\"defaultPrompts\": `aZhpX5bTq5glnTwRfexE`,\n\t\"promptSuggestionsToggleMotion\": `_yHxsSehNpv6oVLoKuCt`,\n\t\"promptSuggestionsToggle\": `khl8aPnNVKa_2k4FtxCE`,\n\t\"promptSuggestionsToggleContent\": `OSorpbHQM_04uxRDzesw`,\n\t\"promptSuggestionsIcon\": `QQ1ZPgR9ghIXrFXB0CCh`,\n\t\"promptSuggestionsChevron\": `EwCXv8ZSCm3o5rYuMlss`,\n\t\"footerForm\": `ibnXsq4b88cDDvfQQgYn`,\n\t\"chatbotCircleContainer\": `nW2NG3krvonnMg3Rivul`,\n\t\"popupContainer\": `O6vpXieYIso2cRwekQqD`,\n\t\"popup\": `gx3uioPf7XBH183XzIsX`,\n\t\"closePopup\": `SnDh_4tosUOepmnQ6qtw`,\n\t\"popupButton\": `uS5rcmDgDrC952MI9O9f`,\n\t\"chatbotCircle\": `JU97fmgoNdy3Tfye2Dws`,\n\t\"sourceList\": `pkiR_TxdafoynTpvRdcQ`,\n\t\"sourceTitle\": `e3H6efowOKFf_KRpdCmA`,\n\t\"sourceLink\": `OwwGVqJowxUZVJuA2czv`,\n\t\"sourceSwitch\": `sCGr7vUZhXadHUv6e8Ir`,\n\t\"markdownToHtmlContainer\": `Bo90PPN_Vahh0nlC0xX9`,\n\t\"supportActions\": `elb0dKqBt_8ZGAEp_EkF`,\n\t\"supportAction\": `H1ZoUyR1lvfzrhY32Iks`,\n\t\"supportButton\": `FS7iocV3c2mOOsu9YyGQ`,\n\t\"whatsappSupportButton\": `IeFCigUDcQq5wGoBLy3M`,\n\t\"telegramSupportButton\": `lRpTsWPUSwGCqjp0t62h`,\n\t\"messageDivider\": `bGwt6w5szvfURLrK73Qg`,\n\t\"supportText\": `x0MAnMNVi2NF7R3qljbA`,\n\t\"feedbackForm\": `cfhdg867vN0ZobXuP4Qd`,\n\t\"feedbackTitle\": `JL4EdjCJ1Xh_P2vjT5GI`,\n\t\"feedbackRatingContainer\": `VyG3z3ZQo3QNVjSDGTtg`,\n\t\"feedbackRatingButton\": `tc_xpptxDgYlQ5SJS8Lt`,\n\t\"feedbackRatingUp\": `UX5TfomvDnUiNrB6RiZZ`,\n\t\"feedbackRatingDown\": `MKidq7RJ4lXochuxVmK6`,\n\t\"feedbackExpanded\": `HtjtoaceTCDfUbVxSep2`,\n\t\"feedbackTextarea\": `BhKEzzkVk9nZwPPBPFWe`,\n\t\"feedbackActions\": `YJ5JKd2sEnSsWK_WOXAB`,\n\t\"feedbackCancelButton\": `L9AzIA9tziUWoMhPNJBP`,\n\t\"feedbackSubmitButton\": `pvp0eslPPZfUSMnoWIgp`,\n\t\"feedbackSuccess\": `_CzJiZ0hvBlHkkpiR9hP`,\n\t\"feedbackError\": `Suczrphb9uYE7BI5Hc9A`\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://VamChatbot/./Chatbot.module.css?./node_modules/css-loader/dist/cjs.js??ruleSet%5B1%5D.rules%5B1%5D.use%5B1%5D");
250
250
 
251
251
  /***/ }),
252
252
 
@@ -1459,6 +1459,50 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
1459
1459
 
1460
1460
  /***/ }),
1461
1461
 
1462
+ /***/ "./node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.mjs":
1463
+ /*!************************************************************************************!*\
1464
+ !*** ./node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.mjs ***!
1465
+ \************************************************************************************/
1466
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
1467
+
1468
+ "use strict";
1469
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ PopChild: () => (/* binding */ PopChild)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var _context_MotionConfigContext_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../context/MotionConfigContext.mjs */ \"./node_modules/framer-motion/dist/es/context/MotionConfigContext.mjs\");\n\"use client\";\n\n\n\n\n\n/**\n * Measurement functionality has to be within a separate component\n * to leverage snapshot lifecycle.\n */\nclass PopChildMeasure extends react__WEBPACK_IMPORTED_MODULE_1__.Component {\n getSnapshotBeforeUpdate(prevProps) {\n const element = this.props.childRef.current;\n if (element && prevProps.isPresent && !this.props.isPresent) {\n const size = this.props.sizeRef.current;\n size.height = element.offsetHeight || 0;\n size.width = element.offsetWidth || 0;\n size.top = element.offsetTop;\n size.left = element.offsetLeft;\n }\n return null;\n }\n /**\n * Required with getSnapshotBeforeUpdate to stop React complaining.\n */\n componentDidUpdate() { }\n render() {\n return this.props.children;\n }\n}\nfunction PopChild({ children, isPresent }) {\n const id = (0,react__WEBPACK_IMPORTED_MODULE_1__.useId)();\n const ref = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n const size = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)({\n width: 0,\n height: 0,\n top: 0,\n left: 0,\n });\n const { nonce } = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(_context_MotionConfigContext_mjs__WEBPACK_IMPORTED_MODULE_2__.MotionConfigContext);\n /**\n * We create and inject a style block so we can apply this explicit\n * sizing in a non-destructive manner by just deleting the style block.\n *\n * We can't apply size via render as the measurement happens\n * in getSnapshotBeforeUpdate (post-render), likewise if we apply the\n * styles directly on the DOM node, we might be overwriting\n * styles set via the style prop.\n */\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useInsertionEffect)(() => {\n const { width, height, top, left } = size.current;\n if (isPresent || !ref.current || !width || !height)\n return;\n ref.current.dataset.motionPopId = id;\n const style = document.createElement(\"style\");\n if (nonce)\n style.nonce = nonce;\n document.head.appendChild(style);\n if (style.sheet) {\n style.sheet.insertRule(`\n [data-motion-pop-id=\"${id}\"] {\n position: absolute !important;\n width: ${width}px !important;\n height: ${height}px !important;\n top: ${top}px !important;\n left: ${left}px !important;\n }\n `);\n }\n return () => {\n document.head.removeChild(style);\n };\n }, [isPresent]);\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(PopChildMeasure, { isPresent: isPresent, childRef: ref, sizeRef: size, children: react__WEBPACK_IMPORTED_MODULE_1__.cloneElement(children, { ref }) }));\n}\n\n\n\n\n//# sourceURL=webpack://VamChatbot/./node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.mjs?");
1470
+
1471
+ /***/ }),
1472
+
1473
+ /***/ "./node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs":
1474
+ /*!*****************************************************************************************!*\
1475
+ !*** ./node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs ***!
1476
+ \*****************************************************************************************/
1477
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
1478
+
1479
+ "use strict";
1480
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ PresenceChild: () => (/* binding */ PresenceChild)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var _context_PresenceContext_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../context/PresenceContext.mjs */ \"./node_modules/framer-motion/dist/es/context/PresenceContext.mjs\");\n/* harmony import */ var _utils_use_constant_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/use-constant.mjs */ \"./node_modules/framer-motion/dist/es/utils/use-constant.mjs\");\n/* harmony import */ var _PopChild_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./PopChild.mjs */ \"./node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.mjs\");\n\"use client\";\n\n\n\n\n\n\n\nconst PresenceChild = ({ children, initial, isPresent, onExitComplete, custom, presenceAffectsLayout, mode, }) => {\n const presenceChildren = (0,_utils_use_constant_mjs__WEBPACK_IMPORTED_MODULE_2__.useConstant)(newChildrenMap);\n const id = (0,react__WEBPACK_IMPORTED_MODULE_1__.useId)();\n const context = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(() => ({\n id,\n initial,\n isPresent,\n custom,\n onExitComplete: (childId) => {\n presenceChildren.set(childId, true);\n for (const isComplete of presenceChildren.values()) {\n if (!isComplete)\n return; // can stop searching when any is incomplete\n }\n onExitComplete && onExitComplete();\n },\n register: (childId) => {\n presenceChildren.set(childId, false);\n return () => presenceChildren.delete(childId);\n },\n }), \n /**\n * If the presence of a child affects the layout of the components around it,\n * we want to make a new context value to ensure they get re-rendered\n * so they can detect that layout change.\n */\n presenceAffectsLayout ? [Math.random()] : [isPresent]);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(() => {\n presenceChildren.forEach((_, key) => presenceChildren.set(key, false));\n }, [isPresent]);\n /**\n * If there's no `motion` components to fire exit animations, we want to remove this\n * component immediately.\n */\n react__WEBPACK_IMPORTED_MODULE_1__.useEffect(() => {\n !isPresent &&\n !presenceChildren.size &&\n onExitComplete &&\n onExitComplete();\n }, [isPresent]);\n if (mode === \"popLayout\") {\n children = (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_PopChild_mjs__WEBPACK_IMPORTED_MODULE_3__.PopChild, { isPresent: isPresent, children: children });\n }\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_context_PresenceContext_mjs__WEBPACK_IMPORTED_MODULE_4__.PresenceContext.Provider, { value: context, children: children }));\n};\nfunction newChildrenMap() {\n return new Map();\n}\n\n\n\n\n//# sourceURL=webpack://VamChatbot/./node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs?");
1481
+
1482
+ /***/ }),
1483
+
1484
+ /***/ "./node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs":
1485
+ /*!*********************************************************************************!*\
1486
+ !*** ./node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs ***!
1487
+ \*********************************************************************************/
1488
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
1489
+
1490
+ "use strict";
1491
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AnimatePresence: () => (/* binding */ AnimatePresence)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var _PresenceChild_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./PresenceChild.mjs */ \"./node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs\");\n/* harmony import */ var _context_LayoutGroupContext_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../context/LayoutGroupContext.mjs */ \"./node_modules/framer-motion/dist/es/context/LayoutGroupContext.mjs\");\n/* harmony import */ var _utils_errors_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/errors.mjs */ \"./node_modules/framer-motion/dist/es/utils/errors.mjs\");\n/* harmony import */ var _utils_use_constant_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils/use-constant.mjs */ \"./node_modules/framer-motion/dist/es/utils/use-constant.mjs\");\n/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils.mjs */ \"./node_modules/framer-motion/dist/es/components/AnimatePresence/utils.mjs\");\n/* harmony import */ var _utils_use_isomorphic_effect_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utils/use-isomorphic-effect.mjs */ \"./node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.mjs\");\n\"use client\";\n\n\n\n\n\n\n\n\n\n/**\n * `AnimatePresence` enables the animation of components that have been removed from the tree.\n *\n * When adding/removing more than a single child, every child **must** be given a unique `key` prop.\n *\n * Any `motion` components that have an `exit` property defined will animate out when removed from\n * the tree.\n *\n * ```jsx\n * import { motion, AnimatePresence } from 'framer-motion'\n *\n * export const Items = ({ items }) => (\n * <AnimatePresence>\n * {items.map(item => (\n * <motion.div\n * key={item.id}\n * initial={{ opacity: 0 }}\n * animate={{ opacity: 1 }}\n * exit={{ opacity: 0 }}\n * />\n * ))}\n * </AnimatePresence>\n * )\n * ```\n *\n * You can sequence exit animations throughout a tree using variants.\n *\n * If a child contains multiple `motion` components with `exit` props, it will only unmount the child\n * once all `motion` components have finished animating out. Likewise, any components using\n * `usePresence` all need to call `safeToRemove`.\n *\n * @public\n */\nconst AnimatePresence = ({ children, exitBeforeEnter, custom, initial = true, onExitComplete, presenceAffectsLayout = true, mode = \"sync\", }) => {\n (0,_utils_errors_mjs__WEBPACK_IMPORTED_MODULE_2__.invariant)(!exitBeforeEnter, \"Replace exitBeforeEnter with mode='wait'\");\n /**\n * Filter any children that aren't ReactElements. We can only track components\n * between renders with a props.key.\n */\n const presentChildren = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(() => (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_3__.onlyElements)(children), [children]);\n /**\n * Track the keys of the currently rendered children. This is used to\n * determine which children are exiting.\n */\n const presentKeys = presentChildren.map(_utils_mjs__WEBPACK_IMPORTED_MODULE_3__.getChildKey);\n /**\n * If `initial={false}` we only want to pass this to components in the first render.\n */\n const isInitialRender = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(true);\n /**\n * A ref containing the currently present children. When all exit animations\n * are complete, we use this to re-render the component with the latest children\n * *committed* rather than the latest children *rendered*.\n */\n const pendingPresentChildren = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(presentChildren);\n /**\n * Track which exiting children have finished animating out.\n */\n const exitComplete = (0,_utils_use_constant_mjs__WEBPACK_IMPORTED_MODULE_4__.useConstant)(() => new Map());\n /**\n * Save children to render as React state. To ensure this component is concurrent-safe,\n * we check for exiting children via an effect.\n */\n const [diffedChildren, setDiffedChildren] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(presentChildren);\n const [renderedChildren, setRenderedChildren] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(presentChildren);\n (0,_utils_use_isomorphic_effect_mjs__WEBPACK_IMPORTED_MODULE_5__.useIsomorphicLayoutEffect)(() => {\n isInitialRender.current = false;\n pendingPresentChildren.current = presentChildren;\n /**\n * Update complete status of exiting children.\n */\n for (let i = 0; i < renderedChildren.length; i++) {\n const key = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_3__.getChildKey)(renderedChildren[i]);\n if (!presentKeys.includes(key)) {\n if (exitComplete.get(key) !== true) {\n exitComplete.set(key, false);\n }\n }\n else {\n exitComplete.delete(key);\n }\n }\n }, [renderedChildren, presentKeys.length, presentKeys.join(\"-\")]);\n const exitingChildren = [];\n if (presentChildren !== diffedChildren) {\n let nextChildren = [...presentChildren];\n /**\n * Loop through all the currently rendered components and decide which\n * are exiting.\n */\n for (let i = 0; i < renderedChildren.length; i++) {\n const child = renderedChildren[i];\n const key = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_3__.getChildKey)(child);\n if (!presentKeys.includes(key)) {\n nextChildren.splice(i, 0, child);\n exitingChildren.push(child);\n }\n }\n /**\n * If we're in \"wait\" mode, and we have exiting children, we want to\n * only render these until they've all exited.\n */\n if (mode === \"wait\" && exitingChildren.length) {\n nextChildren = exitingChildren;\n }\n setRenderedChildren((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_3__.onlyElements)(nextChildren));\n setDiffedChildren(presentChildren);\n /**\n * Early return to ensure once we've set state with the latest diffed\n * children, we can immediately re-render.\n */\n return;\n }\n if ( true &&\n mode === \"wait\" &&\n renderedChildren.length > 1) {\n console.warn(`You're attempting to animate multiple children within AnimatePresence, but its mode is set to \"wait\". This will lead to odd visual behaviour.`);\n }\n /**\n * If we've been provided a forceRender function by the LayoutGroupContext,\n * we can use it to force a re-render amongst all surrounding components once\n * all components have finished animating out.\n */\n const { forceRender } = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(_context_LayoutGroupContext_mjs__WEBPACK_IMPORTED_MODULE_6__.LayoutGroupContext);\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: renderedChildren.map((child) => {\n const key = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_3__.getChildKey)(child);\n const isPresent = presentChildren === renderedChildren ||\n presentKeys.includes(key);\n const onExit = () => {\n if (exitComplete.has(key)) {\n exitComplete.set(key, true);\n }\n else {\n return;\n }\n let isEveryExitComplete = true;\n exitComplete.forEach((isExitComplete) => {\n if (!isExitComplete)\n isEveryExitComplete = false;\n });\n if (isEveryExitComplete) {\n forceRender === null || forceRender === void 0 ? void 0 : forceRender();\n setRenderedChildren(pendingPresentChildren.current);\n onExitComplete && onExitComplete();\n }\n };\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_PresenceChild_mjs__WEBPACK_IMPORTED_MODULE_7__.PresenceChild, { isPresent: isPresent, initial: !isInitialRender.current || initial\n ? undefined\n : false, custom: isPresent ? undefined : custom, presenceAffectsLayout: presenceAffectsLayout, mode: mode, onExitComplete: isPresent ? undefined : onExit, children: child }, key));\n }) }));\n};\n\n\n\n\n//# sourceURL=webpack://VamChatbot/./node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs?");
1492
+
1493
+ /***/ }),
1494
+
1495
+ /***/ "./node_modules/framer-motion/dist/es/components/AnimatePresence/utils.mjs":
1496
+ /*!*********************************************************************************!*\
1497
+ !*** ./node_modules/framer-motion/dist/es/components/AnimatePresence/utils.mjs ***!
1498
+ \*********************************************************************************/
1499
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
1500
+
1501
+ "use strict";
1502
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getChildKey: () => (/* binding */ getChildKey),\n/* harmony export */ onlyElements: () => (/* binding */ onlyElements)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\n\nconst getChildKey = (child) => child.key || \"\";\nfunction onlyElements(children) {\n const filtered = [];\n // We use forEach here instead of map as map mutates the component key by preprending `.$`\n react__WEBPACK_IMPORTED_MODULE_0__.Children.forEach(children, (child) => {\n if ((0,react__WEBPACK_IMPORTED_MODULE_0__.isValidElement)(child))\n filtered.push(child);\n });\n return filtered;\n}\n\n\n\n\n//# sourceURL=webpack://VamChatbot/./node_modules/framer-motion/dist/es/components/AnimatePresence/utils.mjs?");
1503
+
1504
+ /***/ }),
1505
+
1462
1506
  /***/ "./node_modules/framer-motion/dist/es/components/LazyMotion/index.mjs":
1463
1507
  /*!****************************************************************************!*\
1464
1508
  !*** ./node_modules/framer-motion/dist/es/components/LazyMotion/index.mjs ***!
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vamlabs/vam-chatbot",
3
- "version": "0.1.80-dev.183.1",
3
+ "version": "0.1.81-dev.184.1",
4
4
  "main": "dist/web-component.js",
5
5
  "description": "VAM Chatbot Web Component",
6
6
  "repository": {