@vamlabs/vam-chatbot 0.1.76-dev.175.1 → 0.1.77-dev.178.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -7,13 +7,38 @@
7
7
  <script src="https://cdn.jsdelivr.net/npm/@vamlabs/vam-chatbot/dist/web-component.min.js"></script>
8
8
  ```
9
9
 
10
- 2. **Place the Chatbot Component:**
11
- - Insert the chatbot component into your HTML where you want it to be displayed. Use the following code snippet, replacing the `client-id` with your specific client ID:
10
+ 2. **Place the Floating Chatbot Component:**
11
+ - Insert the chatbot component into your HTML. By default, it appears as a minimized launcher at the bottom right of the screen. Replace the `client-id` with your specific client ID:
12
12
  ```html
13
13
  <vam-chatbot client-id="<your-client-id>"></vam-chatbot>
14
14
  ```
15
15
 
16
- 3. **Provide an Auth Token (Optional):**
16
+ 3. **Place the Inline Chatbot Component:**
17
+ - For an in-page chatbot that sits wherever you place it in the page layout, use `layout="inline"`:
18
+ ```html
19
+ <vam-chatbot
20
+ layout="inline"
21
+ client-id="<your-client-id>"
22
+ class="my-inline-chatbot"
23
+ ></vam-chatbot>
24
+ ```
25
+ - Inline layout reserves its page space immediately at `100%` width with a default height of `640px`, then keeps that footprint while loading, ready, or temporarily unavailable. Use CSS variables and exposed shadow parts for customization. Scope inline-only overrides with `[layout="inline"]`:
26
+ ```css
27
+ vam-chatbot[layout="inline"].my-inline-chatbot {
28
+ --chatbot-inline-height: 720px;
29
+ }
30
+
31
+ vam-chatbot[layout="inline"].my-inline-chatbot::part(panel) {
32
+ border-radius: 0;
33
+ box-shadow: none;
34
+ }
35
+
36
+ vam-chatbot[layout="inline"].my-inline-chatbot::part(header) {
37
+ background: #0500ff;
38
+ }
39
+ ```
40
+
41
+ 4. **Provide an Auth Token (Optional):**
17
42
  - For protected deployments (for example, your portal domain), pass a bearer token for `POST /chat/session`.
18
43
  - For public embeds where your backend allows unauthenticated session minting, this can be omitted.
19
44
  - Static token via attribute:
@@ -36,3 +61,5 @@ These steps will help you integrate the VAM chatbot into your webpage seamlessly
36
61
 
37
62
  - The widget uses a 2-step chat flow (`POST /chat/session` then streamed `POST /chat/stream`) and requires your site origin to be allowlisted for your tenant.
38
63
  - If configured, `authTokenProvider` is called before each message stream starts so expiring tokens can be refreshed on-demand.
64
+ - Missing or invalid `layout` values default to the existing floating layout.
65
+ - Exposed `::part(...)` hooks include `root`, `panel`, `header`, `header-title`, `header-actions`, `reset-button`, `close-button`, `body`, `inline-state`, `loading-state`, `error-state`, `conversation`, `prompts`, `prompt-button`, `message`, `bot-message`, `user-message`, `error-message`, `message-avatar`, `message-bubble`, `carousel`, `sources`, `source-link`, `source-toggle`, `promoted-topics`, `support-actions`, `feedback-form`, `footer`, `footer-branding`, `prompt-drawer-button`, `input`, `submit-button`, `launcher`, `launcher-popup`, and `launcher-button`.
@@ -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 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 } = _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 fetchedData: false,\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 scrollAnchorRef = (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\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 // escape special characters with backslash\n // since query selctor does not allow special characters\n let chatbotParent = document?.querySelector(\"vam-chatbot\")?.shadowRoot.querySelector(`.${_Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].chatbotParent.replace(/([^\\w-])/g, \"\\\\$1\")}`) || document?.querySelector(`.${_Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].chatbotParent.replace(/([^\\w-])/g, \"\\\\$1\")}`);\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 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 fetchedData: true,\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 }\n } catch (e) {\n console.error(e);\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 scrollAnchorRef.current?.scrollIntoView({\n behavior: \"smooth\",\n block: \"end\",\n inline: \"nearest\"\n });\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 return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.Fragment, {\n children: chatbotConfig?.fetchedData && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].chatbotParent,\n ref: chatbotRef,\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__.jsxs)(framer_motion__WEBPACK_IMPORTED_MODULE_13__.m.div, {\n initial: false,\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].chatbotContainer,\n animate: chatbotMinimized ? \"hide\" : \"show\",\n variants: _utils_variants__WEBPACK_IMPORTED_MODULE_4__.maximizedChatbotVariants,\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 }), /*#__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 scrollAnchorRef: scrollAnchorRef,\n promptsMinimized: promptsMinimized,\n setPromptsMinimized: setPromptsMinimized,\n inputRef: inputRef,\n inputText: inputText,\n handleInput: handleInput,\n placeholderInputText: chatbotConfig?.data?.placeholder_input_text,\n chatbotIcon: chatbotIcon,\n onConversationScroll: handleUserScroll\n })]\n }), /*#__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 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 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 children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"i\", {\n className: \"bi bi-x-circle-fill\"\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)(\"span\", {\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 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 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 ...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 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 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 children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"i\", {\n className: \"bi bi-x-circle-fill\"\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)(\"span\", {\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
 
@@ -37,7 +37,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
37
37
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
38
38
 
39
39
  "use strict";
40
- eval("__webpack_require__.r(__webpack_exports__);\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 react_dom_client__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-dom/client */ \"./node_modules/react-dom/client.js\");\n/* harmony import */ var _Chatbot__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Chatbot */ \"./Chatbot.jsx\");\n/* harmony import */ var bootstrap_icons_font_bootstrap_icons_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! bootstrap-icons/font/bootstrap-icons.css */ \"./node_modules/bootstrap-icons/font/bootstrap-icons.css\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n\n\nlet globalSheets = null;\n\n// function to add the global style sheets to the context of the shadow root element\nfunction getGlobalStyleSheets() {\n if (globalSheets === null) {\n globalSheets = Array.from(document.styleSheets).map(x => {\n let id = x?.ownerNode?.id;\n const sheet = new CSSStyleSheet();\n if (id === \"chatbot-styles\") {\n const css = Array.from(x.cssRules).map(rule => {\n return rule.cssText;\n }).join(\" \");\n sheet.replaceSync(css);\n }\n return sheet;\n });\n }\n return globalSheets;\n}\nfunction addGlobalStylesToShadowRoot(shadowRoot) {\n shadowRoot.adoptedStyleSheets.push(...getGlobalStyleSheets());\n}\n\n// Function to fetch Bootstrap CSS\nasync function fetchBootstrapCSS() {\n const bootstrapResponse = await fetch(\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css\");\n const bootstrapCSS = await bootstrapResponse.text();\n return [bootstrapCSS];\n}\nclass WebComponent extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({\n mode: \"open\"\n });\n this.root = null; // Store the root instance\n this._authTokenProvider = null;\n this.loadStylesAndRender();\n addGlobalStylesToShadowRoot(this.shadowRoot);\n }\n get authTokenProvider() {\n return this._authTokenProvider;\n }\n set authTokenProvider(providerFn) {\n this._authTokenProvider = typeof providerFn === \"function\" ? providerFn : null;\n this.render();\n }\n get authToken() {\n return this.getAttribute(\"auth-token\");\n }\n set authToken(value) {\n if (typeof value === \"string\" && value.trim().length > 0) {\n this.setAttribute(\"auth-token\", value);\n return;\n }\n this.removeAttribute(\"auth-token\");\n }\n async loadStylesAndRender() {\n const [bootstrapCSS] = await fetchBootstrapCSS();\n\n // TODO: here the styles are applied to :root inside the shadow dom, but there is not root there.\n // We need to apply the variables on the :host/topmost class level rather than :root.\n const modifiedBootstrapCSS = bootstrapCSS.replace(/:root/g, \":host\");\n\n // Create a style element for Bootstrap styles\n const bootstrapStyleElement = document.createElement(\"style\");\n bootstrapStyleElement.textContent = modifiedBootstrapCSS;\n this.shadowRoot.appendChild(bootstrapStyleElement);\n\n // Render the React component\n this.render();\n }\n addGtmScript() {\n const gtmId = this.getAttribute(\"gtm-id\");\n if (!gtmId) {\n console.error(\"Chatbot GTM ID missing!\");\n return;\n }\n const head = document.createElement(\"head\");\n const script = document.createElement(\"script\");\n script.textContent = `\n (function (w, d, s, l, i) {\n w[l] = w[l] || [];\n w[l].push({ \"gtm.start\": new Date().getTime(), event: \"gtm.js\" });\n var f = d.getElementsByTagName(s)[0],\n j = d.createElement(s),\n dl = l != \"dataLayer\" ? \"&l=\" + l : \"\";\n j.async = true;\n j.src = \"https://www.googletagmanager.com/gtm.js?id=\" + i + dl;\n f.parentNode.insertBefore(j, f);\n })(window, document, \"script\", \"dataLayer\", \"${gtmId}\");\n `;\n\n // Append the script to the head\n head.appendChild(script);\n\n // Append the head to the document\n this.shadowRoot.appendChild(head);\n }\n\n // Function to push data to GTM data layer\n pushToDataLayer(data) {\n if (window.dataLayer) {\n window.dataLayer.push(data);\n } else {\n console.error(\"GTM data layer not available\");\n }\n }\n\n // Example method to send data to GTM\n sendDataToGTM(dataLayerObject) {\n const customData = {\n ...dataLayerObject,\n event: \"bot_click\",\n clientId: this.getAttribute(\"client-id\")\n };\n this.pushToDataLayer(customData);\n }\n connectedCallback() {\n if (!this.root) {\n this.root = react_dom_client__WEBPACK_IMPORTED_MODULE_1__.createRoot(this.shadowRoot);\n }\n this.addGtmScript();\n this.render();\n }\n disconnectedCallback() {\n if (this.root) {\n this.root.unmount();\n }\n }\n static get observedAttributes() {\n return [\"client-id\", \"gtm-id\", \"auth-token\"];\n }\n attributeChangedCallback(name, oldValue, newValue) {\n if (oldValue !== newValue) {\n this.render();\n }\n }\n render() {\n const clientId = this.getAttribute(\"client-id\");\n const authToken = this.getAttribute(\"auth-token\") || \"\";\n if (this.root) {\n this.root.render(/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_Chatbot__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n clientId: clientId,\n authToken: authToken,\n authTokenProvider: this._authTokenProvider,\n onTrackEvent: dataLayerObject => this.sendDataToGTM(dataLayerObject)\n }));\n }\n }\n}\ncustomElements.define(\"vam-chatbot\", WebComponent);\n\n//# sourceURL=webpack://VamChatbot/./WebComponent.js?");
40
+ eval("__webpack_require__.r(__webpack_exports__);\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 react_dom_client__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-dom/client */ \"./node_modules/react-dom/client.js\");\n/* harmony import */ var _Chatbot__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Chatbot */ \"./Chatbot.jsx\");\n/* harmony import */ var bootstrap_icons_font_bootstrap_icons_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! bootstrap-icons/font/bootstrap-icons.css */ \"./node_modules/bootstrap-icons/font/bootstrap-icons.css\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n\n\nlet globalSheets = null;\nconst normalizeLayout = layout => layout === \"inline\" ? \"inline\" : \"floating\";\n\n// function to add the global style sheets to the context of the shadow root element\nfunction getGlobalStyleSheets() {\n if (globalSheets === null) {\n globalSheets = Array.from(document.styleSheets).map(x => {\n let id = x?.ownerNode?.id;\n const sheet = new CSSStyleSheet();\n if (id === \"chatbot-styles\") {\n const css = Array.from(x.cssRules).map(rule => {\n return rule.cssText;\n }).join(\" \");\n sheet.replaceSync(css);\n }\n return sheet;\n });\n }\n return globalSheets;\n}\nfunction addGlobalStylesToShadowRoot(shadowRoot) {\n shadowRoot.adoptedStyleSheets.push(...getGlobalStyleSheets());\n}\n\n// Function to fetch Bootstrap CSS\nasync function fetchBootstrapCSS() {\n const bootstrapResponse = await fetch(\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css\");\n const bootstrapCSS = await bootstrapResponse.text();\n return [bootstrapCSS];\n}\nclass WebComponent extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({\n mode: \"open\"\n });\n this.root = null; // Store the root instance\n this._authTokenProvider = null;\n this.addHostStyles();\n this.loadStylesAndRender();\n addGlobalStylesToShadowRoot(this.shadowRoot);\n }\n get authTokenProvider() {\n return this._authTokenProvider;\n }\n set authTokenProvider(providerFn) {\n this._authTokenProvider = typeof providerFn === \"function\" ? providerFn : null;\n this.render();\n }\n get authToken() {\n return this.getAttribute(\"auth-token\");\n }\n set authToken(value) {\n if (typeof value === \"string\" && value.trim().length > 0) {\n this.setAttribute(\"auth-token\", value);\n return;\n }\n this.removeAttribute(\"auth-token\");\n }\n get layout() {\n return normalizeLayout(this.getAttribute(\"layout\"));\n }\n set layout(value) {\n const normalizedLayout = normalizeLayout(value);\n if (normalizedLayout === \"inline\") {\n this.setAttribute(\"layout\", \"inline\");\n return;\n }\n if (value === \"floating\") {\n this.setAttribute(\"layout\", \"floating\");\n return;\n }\n this.removeAttribute(\"layout\");\n }\n addHostStyles() {\n const hostStyleElement = document.createElement(\"style\");\n hostStyleElement.textContent = `\n :host([layout=\"inline\"]) {\n display: block;\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 this.shadowRoot.appendChild(hostStyleElement);\n }\n async loadStylesAndRender() {\n const [bootstrapCSS] = await fetchBootstrapCSS();\n\n // TODO: here the styles are applied to :root inside the shadow dom, but there is not root there.\n // We need to apply the variables on the :host/topmost class level rather than :root.\n const modifiedBootstrapCSS = bootstrapCSS.replace(/:root/g, \":host\");\n\n // Create a style element for Bootstrap styles\n const bootstrapStyleElement = document.createElement(\"style\");\n bootstrapStyleElement.textContent = modifiedBootstrapCSS;\n this.shadowRoot.appendChild(bootstrapStyleElement);\n\n // Render the React component\n this.render();\n }\n addGtmScript() {\n const gtmId = this.getAttribute(\"gtm-id\");\n if (!gtmId) {\n console.error(\"Chatbot GTM ID missing!\");\n return;\n }\n const head = document.createElement(\"head\");\n const script = document.createElement(\"script\");\n script.textContent = `\n (function (w, d, s, l, i) {\n w[l] = w[l] || [];\n w[l].push({ \"gtm.start\": new Date().getTime(), event: \"gtm.js\" });\n var f = d.getElementsByTagName(s)[0],\n j = d.createElement(s),\n dl = l != \"dataLayer\" ? \"&l=\" + l : \"\";\n j.async = true;\n j.src = \"https://www.googletagmanager.com/gtm.js?id=\" + i + dl;\n f.parentNode.insertBefore(j, f);\n })(window, document, \"script\", \"dataLayer\", \"${gtmId}\");\n `;\n\n // Append the script to the head\n head.appendChild(script);\n\n // Append the head to the document\n this.shadowRoot.appendChild(head);\n }\n\n // Function to push data to GTM data layer\n pushToDataLayer(data) {\n if (window.dataLayer) {\n window.dataLayer.push(data);\n } else {\n console.error(\"GTM data layer not available\");\n }\n }\n\n // Example method to send data to GTM\n sendDataToGTM(dataLayerObject) {\n const customData = {\n ...dataLayerObject,\n event: \"bot_click\",\n clientId: this.getAttribute(\"client-id\")\n };\n this.pushToDataLayer(customData);\n }\n connectedCallback() {\n if (!this.root) {\n this.root = react_dom_client__WEBPACK_IMPORTED_MODULE_1__.createRoot(this.shadowRoot);\n }\n this.addGtmScript();\n this.render();\n }\n disconnectedCallback() {\n if (this.root) {\n this.root.unmount();\n }\n }\n static get observedAttributes() {\n return [\"client-id\", \"gtm-id\", \"auth-token\", \"layout\"];\n }\n attributeChangedCallback(name, oldValue, newValue) {\n if (oldValue !== newValue) {\n this.render();\n }\n }\n render() {\n const clientId = this.getAttribute(\"client-id\");\n const authToken = this.getAttribute(\"auth-token\") || \"\";\n const layout = normalizeLayout(this.getAttribute(\"layout\"));\n if (this.root) {\n this.root.render(/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_Chatbot__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n clientId: clientId,\n authToken: authToken,\n authTokenProvider: this._authTokenProvider,\n layout: layout,\n onTrackEvent: dataLayerObject => this.sendDataToGTM(dataLayerObject)\n }));\n }\n }\n}\ncustomElements.define(\"vam-chatbot\", WebComponent);\n\n//# sourceURL=webpack://VamChatbot/./WebComponent.js?");
41
41
 
42
42
  /***/ }),
43
43
 
@@ -59,7 +59,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
59
59
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
60
60
 
61
61
  "use strict";
62
- 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 _Carousal_module_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Carousal.module.css */ \"./components/Carousal.module.css\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/components/LazyMotion/index.mjs\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/render/dom/features-animation.mjs\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/render/components/m/proxy.mjs\");\n/* harmony import */ var _utils_variants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/variants */ \"./utils/variants.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n\nfunction Carousal(_ref) {\n let {\n images = []\n } = _ref;\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(framer_motion__WEBPACK_IMPORTED_MODULE_3__.LazyMotion, {\n features: framer_motion__WEBPACK_IMPORTED_MODULE_4__.domAnimation,\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(framer_motion__WEBPACK_IMPORTED_MODULE_5__.m.div, {\n id: \"carousel-container\",\n className: \"carousel slide w-100\"\n // data-bs-ride=\"carousel\"\n ,\n initial: \"hide\",\n whileInView: \"show\",\n viewport: {\n once: true\n },\n variants: _utils_variants__WEBPACK_IMPORTED_MODULE_1__.chatbotImageVariants,\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"div\", {\n className: `carousel-inner ${_Carousal_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].carousalInner}`,\n children: [images[0]].map((image, index) => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"div\", {\n className: `carousel-item d-flex ${index === 0 ? \"active\" : \"\"} ${_Carousal_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].carousalItem}`,\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"img\", {\n src: image,\n className: \"d-block w-100 object-fit-contain\",\n alt: \"carousal item\"\n })\n }, `carousal-item-${index}`))\n })\n })\n });\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Carousal);\n\n//# sourceURL=webpack://VamChatbot/./components/Carousal.jsx?");
62
+ 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 _Carousal_module_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Carousal.module.css */ \"./components/Carousal.module.css\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/components/LazyMotion/index.mjs\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/render/dom/features-animation.mjs\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/render/components/m/proxy.mjs\");\n/* harmony import */ var _utils_variants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/variants */ \"./utils/variants.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n\nfunction Carousal(_ref) {\n let {\n images = []\n } = _ref;\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(framer_motion__WEBPACK_IMPORTED_MODULE_3__.LazyMotion, {\n features: framer_motion__WEBPACK_IMPORTED_MODULE_4__.domAnimation,\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(framer_motion__WEBPACK_IMPORTED_MODULE_5__.m.div, {\n id: \"carousel-container\",\n className: \"carousel slide w-100\"\n // data-bs-ride=\"carousel\"\n ,\n initial: \"hide\",\n whileInView: \"show\",\n viewport: {\n once: true\n },\n variants: _utils_variants__WEBPACK_IMPORTED_MODULE_1__.chatbotImageVariants,\n part: \"carousel\",\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"div\", {\n className: `carousel-inner ${_Carousal_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].carousalInner}`,\n children: [images[0]].map((image, index) => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"div\", {\n className: `carousel-item d-flex ${index === 0 ? \"active\" : \"\"} ${_Carousal_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].carousalItem}`,\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"img\", {\n src: image,\n className: \"d-block w-100 object-fit-contain\",\n alt: \"carousal item\"\n })\n }, `carousal-item-${index}`))\n })\n })\n });\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Carousal);\n\n//# sourceURL=webpack://VamChatbot/./components/Carousal.jsx?");
63
63
 
64
64
  /***/ }),
65
65
 
@@ -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 scrollAnchorRef,\n promptsMinimized,\n setPromptsMinimized,\n inputRef,\n inputText,\n handleInput,\n placeholderInputText,\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 children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(framer_motion__WEBPACK_IMPORTED_MODULE_9__.m.div, {\n variants: _utils_variants__WEBPACK_IMPORTED_MODULE_3__.chatbotContentVariants,\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].conversation,\n onScroll: onConversationScroll,\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 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 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 }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(\"span\", {\n className: \"w-100\",\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_AnimatedTextPlaceholder__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n theme: \"dark\"\n })\n })]\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(\"div\", {\n className: \"scrollAnchor\",\n ref: scrollAnchorRef\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 })]\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 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 })]\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 } = _ref;\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 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: [/*#__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\"].defaultPrompts,\n animate: promptsMinimized ? \"hide\" : \"show\",\n variants: _utils_variants__WEBPACK_IMPORTED_MODULE_1__.promptsContainerVariants,\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__.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 children: \"Powered by VAM Labs\"\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)(\"button\", {\n type: \"button\",\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].promptDrawerButton,\n onClick: () => setPromptsMinimized(prevValue => !prevValue),\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"i\", {\n className: \"bi bi-postcard-heart-fill promptDrawerIcon\"\n })\n }), /*#__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 }), /*#__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 children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"i\", {\n className: \"bi bi-arrow-up-circle-fill\"\n })\n })]\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 _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 } = _ref;\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: [/*#__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\"].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__.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 }), /*#__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)(\"button\", {\n type: \"button\",\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].promptDrawerButton,\n onClick: () => setPromptsMinimized(prevValue => !prevValue),\n part: \"prompt-drawer-button\",\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"i\", {\n className: \"bi bi-postcard-heart-fill promptDrawerIcon\"\n })\n }), /*#__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 })\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
 
@@ -92,7 +92,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
92
92
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
93
93
 
94
94
  "use strict";
95
- 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_3__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/components/LazyMotion/index.mjs\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/render/dom/features-animation.mjs\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_5__ = __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 react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n\nfunction ChatbotHeader(_ref) {\n let {\n headerText,\n setPromptsMinimized,\n handleChatbotAnimation,\n resetChatbot\n } = _ref;\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(framer_motion__WEBPACK_IMPORTED_MODULE_3__.LazyMotion, {\n features: framer_motion__WEBPACK_IMPORTED_MODULE_4__.domAnimation,\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].headerContainer,\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(framer_motion__WEBPACK_IMPORTED_MODULE_5__.m.div, {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].header,\n variants: _utils_variants__WEBPACK_IMPORTED_MODULE_1__.chatbotContentVariants,\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"div\", {\n className: \"h-100 d-flex align-items-center\",\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"span\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].headerTitle,\n children: headerText\n })\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(\"div\", {\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"button\", {\n onClick: resetChatbot,\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"i\", {\n className: \"bi bi-arrow-clockwise\"\n })\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"button\", {\n onClick: () => {\n setPromptsMinimized(true);\n handleChatbotAnimation();\n },\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"i\", {\n className: \"bi bi-x-lg\"\n })\n })]\n })]\n })\n })\n });\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ChatbotHeader);\n\n//# sourceURL=webpack://VamChatbot/./components/ChatbotHeader.jsx?");
95
+ 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_3__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/components/LazyMotion/index.mjs\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/render/dom/features-animation.mjs\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_5__ = __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 react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n\nfunction ChatbotHeader(_ref) {\n let {\n headerText,\n setPromptsMinimized,\n handleChatbotAnimation,\n resetChatbot,\n showCloseButton = true\n } = _ref;\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(framer_motion__WEBPACK_IMPORTED_MODULE_3__.LazyMotion, {\n features: framer_motion__WEBPACK_IMPORTED_MODULE_4__.domAnimation,\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].headerContainer,\n part: \"header\",\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(framer_motion__WEBPACK_IMPORTED_MODULE_5__.m.div, {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].header,\n variants: _utils_variants__WEBPACK_IMPORTED_MODULE_1__.chatbotContentVariants,\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"div\", {\n className: \"h-100 d-flex align-items-center\",\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"span\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].headerTitle,\n part: \"header-title\",\n children: headerText\n })\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(\"div\", {\n part: \"header-actions\",\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"button\", {\n onClick: resetChatbot,\n part: \"reset-button\",\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"i\", {\n className: \"bi bi-arrow-clockwise\"\n })\n }), showCloseButton && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"button\", {\n onClick: () => {\n setPromptsMinimized(true);\n handleChatbotAnimation();\n },\n part: \"close-button\",\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"i\", {\n className: \"bi bi-x-lg\"\n })\n })]\n })]\n })\n })\n });\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ChatbotHeader);\n\n//# sourceURL=webpack://VamChatbot/./components/ChatbotHeader.jsx?");
96
96
 
97
97
  /***/ }),
98
98
 
@@ -103,7 +103,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
103
103
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
104
104
 
105
105
  "use strict";
106
- 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 _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Chatbot.module.css */ \"./Chatbot.module.css\");\n/* harmony import */ var _utils_sseClient__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/sseClient */ \"./utils/sseClient.js\");\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\nfunction FeedbackForm(_ref) {\n let {\n feedbackPayload\n } = _ref;\n const [selectedRating, setSelectedRating] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null); // \"up\" | \"down\" | null\n const [comments, setComments] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(\"\");\n const [isExpanded, setIsExpanded] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n const [isLoading, setIsLoading] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n const [success, setSuccess] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n const [error, setError] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n const handleRatingClick = rating => {\n setSelectedRating(rating);\n setIsExpanded(true);\n setError(null);\n };\n const handleSubmit = async () => {\n if (!selectedRating) return;\n if (selectedRating === \"down\" && !comments.trim()) {\n setError(\"Please tell us what could be improved.\");\n return;\n }\n setIsLoading(true);\n setError(null);\n try {\n if (!feedbackPayload?.chatbotBaseUrl || !feedbackPayload?.token || !feedbackPayload?.messageID || !feedbackPayload?.conversationID) {\n throw new Error(\"Missing feedback metadata\");\n }\n const rating = selectedRating === \"up\" ? 1 : 0;\n await (0,_utils_sseClient__WEBPACK_IMPORTED_MODULE_2__.submitChatbotFeedback)({\n chatbotBaseUrl: feedbackPayload.chatbotBaseUrl,\n token: feedbackPayload.token,\n body: {\n messageID: feedbackPayload.messageID,\n conversationID: feedbackPayload.conversationID,\n userQuery: feedbackPayload.userQuery || \"\",\n assistantResponse: feedbackPayload.assistantResponse || \"\",\n chatHistory: feedbackPayload.chatHistory || [],\n rating\n }\n });\n setSuccess(true);\n setTimeout(() => {\n setIsExpanded(false);\n }, 3000);\n } catch (err) {\n setError(\"Failed to submit feedback. Please try again.\");\n console.error(\"Error submitting feedback:\", err);\n } finally {\n setIsLoading(false);\n }\n };\n const handleCancel = () => {\n setIsExpanded(false);\n setSelectedRating(null);\n setComments(\"\");\n setError(null);\n };\n if (success) {\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].feedbackForm,\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].messageDivider\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].feedbackSuccess,\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"i\", {\n className: \"bi bi-check-circle-fill\"\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"span\", {\n children: \"Thank you for your feedback!\"\n })]\n })]\n });\n }\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].feedbackForm,\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].messageDivider\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"p\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].feedbackTitle,\n children: \"How was this response?\"\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].feedbackRatingContainer,\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"button\", {\n className: `${_Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].feedbackRatingButton} ${selectedRating === \"up\" ? _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].feedbackRatingUp : \"\"}`,\n onClick: () => handleRatingClick(\"up\"),\n disabled: isLoading,\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"i\", {\n className: \"bi bi-hand-thumbs-up\"\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"span\", {\n children: \"Good\"\n })]\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"button\", {\n className: `${_Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].feedbackRatingButton} ${selectedRating === \"down\" ? _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].feedbackRatingDown : \"\"}`,\n onClick: () => handleRatingClick(\"down\"),\n disabled: isLoading,\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"i\", {\n className: \"bi bi-hand-thumbs-down\"\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"span\", {\n children: \"Needs Work\"\n })]\n })]\n }), isExpanded && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].feedbackExpanded,\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"textarea\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].feedbackTextarea,\n value: comments,\n onChange: e => setComments(e.target.value),\n placeholder: selectedRating === \"down\" ? \"Please tell us what could be improved...\" : \"Tell us more (optional)...\",\n disabled: isLoading,\n rows: 3\n }), error && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].feedbackError,\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"i\", {\n className: \"bi bi-exclamation-circle\"\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"span\", {\n children: error\n })]\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].feedbackActions,\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"button\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].feedbackCancelButton,\n onClick: handleCancel,\n disabled: isLoading,\n children: \"Cancel\"\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"button\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].feedbackSubmitButton,\n onClick: handleSubmit,\n disabled: !selectedRating || isLoading || selectedRating === \"down\" && !comments.trim(),\n children: isLoading ? \"Submitting...\" : \"Submit\"\n })]\n })]\n })]\n });\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (FeedbackForm);\n\n//# sourceURL=webpack://VamChatbot/./components/FeedbackForm.jsx?");
106
+ 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 _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Chatbot.module.css */ \"./Chatbot.module.css\");\n/* harmony import */ var _utils_sseClient__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/sseClient */ \"./utils/sseClient.js\");\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\nfunction FeedbackForm(_ref) {\n let {\n feedbackPayload\n } = _ref;\n const [selectedRating, setSelectedRating] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null); // \"up\" | \"down\" | null\n const [comments, setComments] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(\"\");\n const [isExpanded, setIsExpanded] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n const [isLoading, setIsLoading] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n const [success, setSuccess] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n const [error, setError] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n const handleRatingClick = rating => {\n setSelectedRating(rating);\n setIsExpanded(true);\n setError(null);\n };\n const handleSubmit = async () => {\n if (!selectedRating) return;\n if (selectedRating === \"down\" && !comments.trim()) {\n setError(\"Please tell us what could be improved.\");\n return;\n }\n setIsLoading(true);\n setError(null);\n try {\n if (!feedbackPayload?.chatbotBaseUrl || !feedbackPayload?.token || !feedbackPayload?.messageID || !feedbackPayload?.conversationID) {\n throw new Error(\"Missing feedback metadata\");\n }\n const rating = selectedRating === \"up\" ? 1 : 0;\n await (0,_utils_sseClient__WEBPACK_IMPORTED_MODULE_2__.submitChatbotFeedback)({\n chatbotBaseUrl: feedbackPayload.chatbotBaseUrl,\n token: feedbackPayload.token,\n body: {\n messageID: feedbackPayload.messageID,\n conversationID: feedbackPayload.conversationID,\n userQuery: feedbackPayload.userQuery || \"\",\n assistantResponse: feedbackPayload.assistantResponse || \"\",\n chatHistory: feedbackPayload.chatHistory || [],\n rating\n }\n });\n setSuccess(true);\n setTimeout(() => {\n setIsExpanded(false);\n }, 3000);\n } catch (err) {\n setError(\"Failed to submit feedback. Please try again.\");\n console.error(\"Error submitting feedback:\", err);\n } finally {\n setIsLoading(false);\n }\n };\n const handleCancel = () => {\n setIsExpanded(false);\n setSelectedRating(null);\n setComments(\"\");\n setError(null);\n };\n if (success) {\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].feedbackForm,\n part: \"feedback-form\",\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].messageDivider\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].feedbackSuccess,\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"i\", {\n className: \"bi bi-check-circle-fill\"\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"span\", {\n children: \"Thank you for your feedback!\"\n })]\n })]\n });\n }\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].feedbackForm,\n part: \"feedback-form\",\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].messageDivider\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"p\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].feedbackTitle,\n children: \"How was this response?\"\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].feedbackRatingContainer,\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"button\", {\n className: `${_Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].feedbackRatingButton} ${selectedRating === \"up\" ? _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].feedbackRatingUp : \"\"}`,\n onClick: () => handleRatingClick(\"up\"),\n disabled: isLoading,\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"i\", {\n className: \"bi bi-hand-thumbs-up\"\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"span\", {\n children: \"Good\"\n })]\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"button\", {\n className: `${_Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].feedbackRatingButton} ${selectedRating === \"down\" ? _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].feedbackRatingDown : \"\"}`,\n onClick: () => handleRatingClick(\"down\"),\n disabled: isLoading,\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"i\", {\n className: \"bi bi-hand-thumbs-down\"\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"span\", {\n children: \"Needs Work\"\n })]\n })]\n }), isExpanded && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].feedbackExpanded,\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"textarea\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].feedbackTextarea,\n value: comments,\n onChange: e => setComments(e.target.value),\n placeholder: selectedRating === \"down\" ? \"Please tell us what could be improved...\" : \"Tell us more (optional)...\",\n disabled: isLoading,\n rows: 3\n }), error && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].feedbackError,\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"i\", {\n className: \"bi bi-exclamation-circle\"\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"span\", {\n children: error\n })]\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].feedbackActions,\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"button\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].feedbackCancelButton,\n onClick: handleCancel,\n disabled: isLoading,\n children: \"Cancel\"\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"button\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].feedbackSubmitButton,\n onClick: handleSubmit,\n disabled: !selectedRating || isLoading || selectedRating === \"down\" && !comments.trim(),\n children: isLoading ? \"Submitting...\" : \"Submit\"\n })]\n })]\n })]\n });\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (FeedbackForm);\n\n//# sourceURL=webpack://VamChatbot/./components/FeedbackForm.jsx?");
107
107
 
108
108
  /***/ }),
109
109
 
@@ -114,7 +114,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
114
114
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
115
115
 
116
116
  "use strict";
117
- 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 marked__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! marked */ \"./node_modules/marked/lib/marked.esm.js\");\n/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! dompurify */ \"./node_modules/dompurify/dist/purify.js\");\n/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(dompurify__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Chatbot.module.css */ \"./Chatbot.module.css\");\n/* harmony import */ var _Carousal__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Carousal */ \"./components/Carousal.jsx\");\n/* harmony import */ var _SourceList__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./SourceList */ \"./components/SourceList.jsx\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _Typewriter__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Typewriter */ \"./components/Typewriter.jsx\");\n/* harmony import */ var _PromotedTopics__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./PromotedTopics */ \"./components/PromotedTopics.jsx\");\n/* harmony import */ var _FeedbackForm__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./FeedbackForm */ \"./components/FeedbackForm.jsx\");\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\nconst defaultSupportMessageText = \"Need more help? Contact us directly.\";\nconst defaultSupportButtonLabel = \"Contact Us\";\nconst supportChannelMetadata = {\n whatsapp: {\n channelName: \"WhatsApp\",\n iconClassName: \"bi bi-whatsapp\",\n buttonClassName: \"whatsappSupportButton\"\n },\n telegram: {\n channelName: \"Telegram\",\n iconClassName: \"bi bi-telegram\",\n buttonClassName: \"telegramSupportButton\"\n }\n};\nconst getSupportRedirects = _ref => {\n let {\n showSupportButton,\n supportUrl,\n supportChannel,\n supportRedirects\n } = _ref;\n if (Array.isArray(supportRedirects) && supportRedirects.length > 0) {\n return supportRedirects.filter(redirect => redirect?.url);\n }\n if (showSupportButton && supportUrl) {\n return [{\n channel: supportChannel || \"whatsapp\",\n url: supportUrl\n }];\n }\n return [];\n};\nconst markdownToHtml = markdown => {\n let htmlResponse = \"\";\n dompurify__WEBPACK_IMPORTED_MODULE_1___default().addHook(\"afterSanitizeAttributes\", function (node) {\n // set all elements owning target to target=_blank\n if (\"target\" in node) {\n node.setAttribute(\"target\", \"_blank\");\n node.setAttribute(\"rel\", \"noopener noreferrer\");\n }\n });\n try {\n htmlResponse = dompurify__WEBPACK_IMPORTED_MODULE_1___default().sanitize(marked__WEBPACK_IMPORTED_MODULE_0__.marked.parse(markdown));\n } catch (error) {\n console.log(error);\n }\n return htmlResponse;\n};\nfunction MessageCore(_ref2) {\n let {\n chatbotIcon,\n messageText,\n messageReferenceLinks,\n messageImageLinks,\n messageSource,\n messageStatus,\n promotedTopics,\n typewriterEffect,\n showSupportButton,\n supportUrl,\n supportChannel,\n supportRedirects,\n showFeedbackForm,\n feedbackPayload\n } = _ref2;\n let messageProps = {};\n const normalizedSupportRedirects = getSupportRedirects({\n showSupportButton,\n supportUrl,\n supportChannel,\n supportRedirects\n });\n if (messageSource === \"user\") {\n messageProps.backgroundColor = \"var(--chatbot-user-bubble-color)\";\n } else if (messageSource === \"bot\") {\n messageProps.backgroundColor = \"var(--chatbot-bot-bubble-color)\";\n } else if (messageSource === \"error\") {\n messageProps.justifyDirection = \"center\";\n }\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"].message,\n style: {\n color: messageSource === \"error\" ? \"red\" : \"\",\n justifyContent: messageProps?.justifyDirection,\n flexDirection: messageSource === \"user\" ? \"row-reverse\" : \"\"\n },\n children: [messageSource === \"user\" ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"i\", {\n className: \"bi bi-person-circle\",\n style: {\n color: \"var(--chatbot-user-icon-color)\"\n }\n }) : messageSource === \"bot\" ? chatbotIcon && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"img\", {\n src: chatbotIcon,\n alt: \"chatbot icon\",\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"].chatbotIcon\n }) : \"\", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"].messageBody,\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"].messageText,\n style: {\n backgroundColor: messageProps.backgroundColor,\n color: messageSource === \"error\" ? \"red\" : messageSource === \"user\" ? \"var(--chatbot-user-text-color)\" : \"var(--chatbot-bot-text-color)\"\n },\n children: [typewriterEffect ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_Typewriter__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n text: markdownToHtml(messageText)\n }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"span\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"].markdownToHtmlContainer,\n dangerouslySetInnerHTML: {\n __html: markdownToHtml(messageText)\n }\n }), messageStatus === \"done\" && promotedTopics?.length > 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_PromotedTopics__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n data: promotedTopics\n }), normalizedSupportRedirects.length > 0 && /*#__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)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"].messageDivider\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"].supportActions,\n children: normalizedSupportRedirects.map(redirect => {\n const channelMetadata = supportChannelMetadata[redirect.channel] || {};\n const buttonClassName = channelMetadata.buttonClassName ? _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"][channelMetadata.buttonClassName] : \"\";\n const supportMessageText = redirect.messageText || defaultSupportMessageText;\n const buttonLabel = redirect.buttonLabel || defaultSupportButtonLabel;\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"].supportAction,\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"p\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"].supportText,\n children: supportMessageText\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(\"a\", {\n href: redirect.url,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: `${_Chatbot_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"].supportButton} ${buttonClassName}`,\n children: [channelMetadata.iconClassName && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"i\", {\n className: channelMetadata.iconClassName\n }), buttonLabel]\n })]\n }, `${redirect.channel}-${redirect.url}`);\n })\n })]\n }), showFeedbackForm && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_FeedbackForm__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n feedbackPayload: feedbackPayload\n }), messageImageLinks?.length > 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_Carousal__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n images: messageImageLinks\n }), messageStatus === \"done\" && messageReferenceLinks?.length > 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_SourceList__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n sources: messageReferenceLinks\n })]\n })\n })]\n });\n}\n\n// wrap the component in useMemo() to re-render\n// only the latest Message when streaming response\nconst Message = _ref3 => {\n let {\n chatbotIcon,\n messageText,\n messageReferenceLinks,\n messageImageLinks,\n messageSource,\n messageStatus,\n promotedTopics,\n typewriterEffect,\n showSupportButton,\n supportUrl,\n supportChannel,\n supportRedirects,\n showFeedbackForm,\n feedbackPayload\n } = _ref3;\n return (0,react__WEBPACK_IMPORTED_MODULE_5__.useMemo)(() => {\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(MessageCore, {\n chatbotIcon: chatbotIcon,\n messageText: messageText,\n messageReferenceLinks: messageReferenceLinks,\n messageImageLinks: messageImageLinks,\n messageSource: messageSource,\n messageStatus: messageStatus,\n promotedTopics: promotedTopics,\n typewriterEffect: typewriterEffect,\n showSupportButton: showSupportButton,\n supportUrl: supportUrl,\n supportChannel: supportChannel,\n supportRedirects: supportRedirects,\n showFeedbackForm: showFeedbackForm,\n feedbackPayload: feedbackPayload\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [messageText, messageStatus, chatbotIcon, showSupportButton, supportUrl, supportChannel, supportRedirects, showFeedbackForm, feedbackPayload]);\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Message);\n\n//# sourceURL=webpack://VamChatbot/./components/Message.jsx?");
117
+ 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 marked__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! marked */ \"./node_modules/marked/lib/marked.esm.js\");\n/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! dompurify */ \"./node_modules/dompurify/dist/purify.js\");\n/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(dompurify__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Chatbot.module.css */ \"./Chatbot.module.css\");\n/* harmony import */ var _Carousal__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Carousal */ \"./components/Carousal.jsx\");\n/* harmony import */ var _SourceList__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./SourceList */ \"./components/SourceList.jsx\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _Typewriter__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Typewriter */ \"./components/Typewriter.jsx\");\n/* harmony import */ var _PromotedTopics__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./PromotedTopics */ \"./components/PromotedTopics.jsx\");\n/* harmony import */ var _FeedbackForm__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./FeedbackForm */ \"./components/FeedbackForm.jsx\");\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\nconst defaultSupportMessageText = \"Need more help? Contact us directly.\";\nconst defaultSupportButtonLabel = \"Contact Us\";\nconst supportChannelMetadata = {\n whatsapp: {\n channelName: \"WhatsApp\",\n iconClassName: \"bi bi-whatsapp\",\n buttonClassName: \"whatsappSupportButton\"\n },\n telegram: {\n channelName: \"Telegram\",\n iconClassName: \"bi bi-telegram\",\n buttonClassName: \"telegramSupportButton\"\n }\n};\nconst getSupportRedirects = _ref => {\n let {\n showSupportButton,\n supportUrl,\n supportChannel,\n supportRedirects\n } = _ref;\n if (Array.isArray(supportRedirects) && supportRedirects.length > 0) {\n return supportRedirects.filter(redirect => redirect?.url);\n }\n if (showSupportButton && supportUrl) {\n return [{\n channel: supportChannel || \"whatsapp\",\n url: supportUrl\n }];\n }\n return [];\n};\nconst markdownToHtml = markdown => {\n let htmlResponse = \"\";\n dompurify__WEBPACK_IMPORTED_MODULE_1___default().addHook(\"afterSanitizeAttributes\", function (node) {\n // set all elements owning target to target=_blank\n if (\"target\" in node) {\n node.setAttribute(\"target\", \"_blank\");\n node.setAttribute(\"rel\", \"noopener noreferrer\");\n }\n });\n try {\n htmlResponse = dompurify__WEBPACK_IMPORTED_MODULE_1___default().sanitize(marked__WEBPACK_IMPORTED_MODULE_0__.marked.parse(markdown));\n } catch (error) {\n console.log(error);\n }\n return htmlResponse;\n};\nfunction MessageCore(_ref2) {\n let {\n chatbotIcon,\n messageText,\n messageReferenceLinks,\n messageImageLinks,\n messageSource,\n messageStatus,\n promotedTopics,\n typewriterEffect,\n showSupportButton,\n supportUrl,\n supportChannel,\n supportRedirects,\n showFeedbackForm,\n feedbackPayload\n } = _ref2;\n let messageProps = {};\n const normalizedSupportRedirects = getSupportRedirects({\n showSupportButton,\n supportUrl,\n supportChannel,\n supportRedirects\n });\n if (messageSource === \"user\") {\n messageProps.backgroundColor = \"var(--chatbot-user-bubble-color)\";\n } else if (messageSource === \"bot\") {\n messageProps.backgroundColor = \"var(--chatbot-bot-bubble-color)\";\n } else if (messageSource === \"error\") {\n messageProps.justifyDirection = \"center\";\n }\n const messagePart = [\"message\"];\n if (messageSource === \"user\") {\n messagePart.push(\"user-message\");\n } else if (messageSource === \"bot\") {\n messagePart.push(\"bot-message\");\n } else if (messageSource === \"error\") {\n messagePart.push(\"error-message\");\n }\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"].message,\n part: messagePart.join(\" \"),\n style: {\n color: messageSource === \"error\" ? \"red\" : \"\",\n justifyContent: messageProps?.justifyDirection,\n flexDirection: messageSource === \"user\" ? \"row-reverse\" : \"\"\n },\n children: [messageSource === \"user\" ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"i\", {\n className: \"bi bi-person-circle\",\n style: {\n color: \"var(--chatbot-user-icon-color)\"\n },\n part: \"message-avatar\"\n }) : messageSource === \"bot\" ? chatbotIcon && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"img\", {\n src: chatbotIcon,\n alt: \"chatbot icon\",\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"].chatbotIcon,\n part: \"message-avatar\"\n }) : \"\", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"].messageBody,\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"].messageText,\n part: \"message-bubble\",\n style: {\n backgroundColor: messageProps.backgroundColor,\n color: messageSource === \"error\" ? \"red\" : messageSource === \"user\" ? \"var(--chatbot-user-text-color)\" : \"var(--chatbot-bot-text-color)\"\n },\n children: [typewriterEffect ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_Typewriter__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n text: markdownToHtml(messageText)\n }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"span\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"].markdownToHtmlContainer,\n dangerouslySetInnerHTML: {\n __html: markdownToHtml(messageText)\n }\n }), messageStatus === \"done\" && promotedTopics?.length > 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_PromotedTopics__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n data: promotedTopics\n }), normalizedSupportRedirects.length > 0 && /*#__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)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"].messageDivider\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"].supportActions,\n part: \"support-actions\",\n children: normalizedSupportRedirects.map(redirect => {\n const channelMetadata = supportChannelMetadata[redirect.channel] || {};\n const buttonClassName = channelMetadata.buttonClassName ? _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"][channelMetadata.buttonClassName] : \"\";\n const supportMessageText = redirect.messageText || defaultSupportMessageText;\n const buttonLabel = redirect.buttonLabel || defaultSupportButtonLabel;\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"].supportAction,\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"p\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"].supportText,\n children: supportMessageText\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(\"a\", {\n href: redirect.url,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: `${_Chatbot_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"].supportButton} ${buttonClassName}`,\n children: [channelMetadata.iconClassName && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"i\", {\n className: channelMetadata.iconClassName\n }), buttonLabel]\n })]\n }, `${redirect.channel}-${redirect.url}`);\n })\n })]\n }), showFeedbackForm && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_FeedbackForm__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n feedbackPayload: feedbackPayload\n }), messageImageLinks?.length > 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_Carousal__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n images: messageImageLinks\n }), messageStatus === \"done\" && messageReferenceLinks?.length > 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_SourceList__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n sources: messageReferenceLinks\n })]\n })\n })]\n });\n}\n\n// wrap the component in useMemo() to re-render\n// only the latest Message when streaming response\nconst Message = _ref3 => {\n let {\n chatbotIcon,\n messageText,\n messageReferenceLinks,\n messageImageLinks,\n messageSource,\n messageStatus,\n promotedTopics,\n typewriterEffect,\n showSupportButton,\n supportUrl,\n supportChannel,\n supportRedirects,\n showFeedbackForm,\n feedbackPayload\n } = _ref3;\n return (0,react__WEBPACK_IMPORTED_MODULE_5__.useMemo)(() => {\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(MessageCore, {\n chatbotIcon: chatbotIcon,\n messageText: messageText,\n messageReferenceLinks: messageReferenceLinks,\n messageImageLinks: messageImageLinks,\n messageSource: messageSource,\n messageStatus: messageStatus,\n promotedTopics: promotedTopics,\n typewriterEffect: typewriterEffect,\n showSupportButton: showSupportButton,\n supportUrl: supportUrl,\n supportChannel: supportChannel,\n supportRedirects: supportRedirects,\n showFeedbackForm: showFeedbackForm,\n feedbackPayload: feedbackPayload\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [messageText, messageStatus, chatbotIcon, showSupportButton, supportUrl, supportChannel, supportRedirects, showFeedbackForm, feedbackPayload]);\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Message);\n\n//# sourceURL=webpack://VamChatbot/./components/Message.jsx?");
118
118
 
119
119
  /***/ }),
120
120
 
@@ -125,7 +125,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
125
125
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
126
126
 
127
127
  "use strict";
128
- 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 _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Chatbot.module.css */ \"./Chatbot.module.css\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nfunction Option(_ref) {\n let {\n option,\n chatbotState,\n handleSubmit = () => {},\n setPromptsMinimized = () => {}\n } = _ref;\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)(\"button\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].option,\n onClick: () => {\n setPromptsMinimized(true);\n handleSubmit(option?.query || option?.label);\n },\n disabled: chatbotState === 1 || chatbotState === 2,\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"i\", {\n className: `bi ${option?.iconClass}`\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"span\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].optionText,\n children: option?.label\n })]\n });\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Option);\n\n//# sourceURL=webpack://VamChatbot/./components/Option.jsx?");
128
+ 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 _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Chatbot.module.css */ \"./Chatbot.module.css\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nfunction Option(_ref) {\n let {\n option,\n chatbotState,\n handleSubmit = () => {},\n setPromptsMinimized = () => {}\n } = _ref;\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)(\"button\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].option,\n part: \"prompt-button\",\n onClick: () => {\n setPromptsMinimized(true);\n handleSubmit(option?.query || option?.label);\n },\n disabled: chatbotState === 1 || chatbotState === 2,\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"i\", {\n className: `bi ${option?.iconClass}`\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"span\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].optionText,\n children: option?.label\n })]\n });\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Option);\n\n//# sourceURL=webpack://VamChatbot/./components/Option.jsx?");
129
129
 
130
130
  /***/ }),
131
131
 
@@ -136,7 +136,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
136
136
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
137
137
 
138
138
  "use strict";
139
- 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_3__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/components/LazyMotion/index.mjs\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/render/dom/features-animation.mjs\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/render/components/m/proxy.mjs\");\n/* harmony import */ var _PromotedTopics_module_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PromotedTopics.module.css */ \"./components/PromotedTopics.module.css\");\n/* harmony import */ var _utils_variants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/variants */ \"./utils/variants.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n\nfunction PromotedTopics(_ref) {\n let {\n data = []\n } = _ref;\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(framer_motion__WEBPACK_IMPORTED_MODULE_3__.LazyMotion, {\n features: framer_motion__WEBPACK_IMPORTED_MODULE_4__.domAnimation,\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"div\", {\n className: _PromotedTopics_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].promtedTopicsContainer,\n children: data?.map(topic => topic?.title && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"a\", {\n href: topic?.url,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(framer_motion__WEBPACK_IMPORTED_MODULE_5__.m.button, {\n className: _PromotedTopics_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].button,\n whileTap: \"tap\",\n variants: _utils_variants__WEBPACK_IMPORTED_MODULE_1__.chatbotPromptedTopicsVariants,\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(\"span\", {\n className: _PromotedTopics_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].buttonContent,\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"span\", {\n children: topic?.title\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"i\", {\n className: \"bi bi-arrow-up-right\"\n })]\n })\n })\n }, topic?.title))\n })\n });\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PromotedTopics);\n\n//# sourceURL=webpack://VamChatbot/./components/PromotedTopics.jsx?");
139
+ 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_3__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/components/LazyMotion/index.mjs\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/render/dom/features-animation.mjs\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/render/components/m/proxy.mjs\");\n/* harmony import */ var _PromotedTopics_module_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PromotedTopics.module.css */ \"./components/PromotedTopics.module.css\");\n/* harmony import */ var _utils_variants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/variants */ \"./utils/variants.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n\nfunction PromotedTopics(_ref) {\n let {\n data = []\n } = _ref;\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(framer_motion__WEBPACK_IMPORTED_MODULE_3__.LazyMotion, {\n features: framer_motion__WEBPACK_IMPORTED_MODULE_4__.domAnimation,\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"div\", {\n className: _PromotedTopics_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].promtedTopicsContainer,\n part: \"promoted-topics\",\n children: data?.map(topic => topic?.title && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"a\", {\n href: topic?.url,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(framer_motion__WEBPACK_IMPORTED_MODULE_5__.m.button, {\n className: _PromotedTopics_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].button,\n whileTap: \"tap\",\n variants: _utils_variants__WEBPACK_IMPORTED_MODULE_1__.chatbotPromptedTopicsVariants,\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(\"span\", {\n className: _PromotedTopics_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].buttonContent,\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"span\", {\n children: topic?.title\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"i\", {\n className: \"bi bi-arrow-up-right\"\n })]\n })\n })\n }, topic?.title))\n })\n });\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PromotedTopics);\n\n//# sourceURL=webpack://VamChatbot/./components/PromotedTopics.jsx?");
140
140
 
141
141
  /***/ }),
142
142
 
@@ -147,7 +147,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
147
147
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
148
148
 
149
149
  "use strict";
150
- 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 _Option__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Option */ \"./components/Option.jsx\");\n/* harmony import */ var _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Chatbot.module.css */ \"./Chatbot.module.css\");\n/* harmony import */ var _utils_variants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/variants */ \"./utils/variants.js\");\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 Prompts(_ref) {\n let {\n promptsData,\n handleSubmit,\n setPromptsMinimized,\n chatbotState\n } = _ref;\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_1__[\"default\"].promptsData,\n children: promptsData?.prompts?.map((prompt, index) => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(framer_motion__WEBPACK_IMPORTED_MODULE_6__.m.span, {\n variants: _utils_variants__WEBPACK_IMPORTED_MODULE_2__.promptVariants,\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_Option__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n option: prompt,\n handleSubmit: handleSubmit,\n setPromptsMinimized: setPromptsMinimized,\n chatbotState: chatbotState\n }, `option-${index}`)\n }, index))\n })\n });\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Prompts);\n\n//# sourceURL=webpack://VamChatbot/./components/Prompts.jsx?");
150
+ 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 _Option__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Option */ \"./components/Option.jsx\");\n/* harmony import */ var _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Chatbot.module.css */ \"./Chatbot.module.css\");\n/* harmony import */ var _utils_variants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/variants */ \"./utils/variants.js\");\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 Prompts(_ref) {\n let {\n promptsData,\n handleSubmit,\n setPromptsMinimized,\n chatbotState\n } = _ref;\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_1__[\"default\"].promptsData,\n part: \"prompts\",\n children: promptsData?.prompts?.map((prompt, index) => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(framer_motion__WEBPACK_IMPORTED_MODULE_6__.m.span, {\n variants: _utils_variants__WEBPACK_IMPORTED_MODULE_2__.promptVariants,\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_Option__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n option: prompt,\n handleSubmit: handleSubmit,\n setPromptsMinimized: setPromptsMinimized,\n chatbotState: chatbotState\n }, `option-${index}`)\n }, index))\n })\n });\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Prompts);\n\n//# sourceURL=webpack://VamChatbot/./components/Prompts.jsx?");
151
151
 
152
152
  /***/ }),
153
153
 
@@ -158,7 +158,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
158
158
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
159
159
 
160
160
  "use strict";
161
- 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_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_1__ = __webpack_require__(/*! ../Chatbot.module.css */ \"./Chatbot.module.css\");\n/* harmony import */ var _utils_variants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/variants */ \"./utils/variants.js\");\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 SourceList(_ref) {\n let {\n sources\n } = _ref;\n const [show, setShow] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(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__.jsxs)(framer_motion__WEBPACK_IMPORTED_MODULE_6__.m.div, {\n initial: false,\n variants: _utils_variants__WEBPACK_IMPORTED_MODULE_2__.sourceVariants,\n animate: show ? \"show\" : \"hide\",\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].sourceList,\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"hr\", {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"p\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].sourceTitle,\n children: \"Sources:\"\n }), sources.map((source, index) => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"p\", {\n children: [\"-\\xA0\", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"a\", {\n href: source,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].sourceLink,\n title: source,\n children: source\n })]\n }, index))]\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"button\", {\n className: `btn btn-sm align-self-end ${_Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].sourceSwitch}`,\n onClick: () => setShow(prevState => !prevState),\n children: show ? \"Hide Sources\" : \"View Sources\"\n })]\n });\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SourceList);\n\n//# sourceURL=webpack://VamChatbot/./components/SourceList.jsx?");
161
+ 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_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_1__ = __webpack_require__(/*! ../Chatbot.module.css */ \"./Chatbot.module.css\");\n/* harmony import */ var _utils_variants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/variants */ \"./utils/variants.js\");\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 SourceList(_ref) {\n let {\n sources\n } = _ref;\n const [show, setShow] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(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__.jsxs)(framer_motion__WEBPACK_IMPORTED_MODULE_6__.m.div, {\n initial: false,\n variants: _utils_variants__WEBPACK_IMPORTED_MODULE_2__.sourceVariants,\n animate: show ? \"show\" : \"hide\",\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].sourceList,\n part: \"sources\",\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"hr\", {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"p\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].sourceTitle,\n children: \"Sources:\"\n }), sources.map((source, index) => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"p\", {\n children: [\"-\\xA0\", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"a\", {\n href: source,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].sourceLink,\n title: source,\n part: \"source-link\",\n children: source\n })]\n }, index))]\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"button\", {\n className: `btn btn-sm align-self-end ${_Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].sourceSwitch}`,\n onClick: () => setShow(prevState => !prevState),\n part: \"source-toggle\",\n children: show ? \"Hide Sources\" : \"View Sources\"\n })]\n });\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SourceList);\n\n//# sourceURL=webpack://VamChatbot/./components/SourceList.jsx?");
162
162
 
163
163
  /***/ }),
164
164
 
@@ -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.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 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: 2px 0;\n background: linear-gradient(to bottom, #39cff6, #ad84ff);\n background-clip: text;\n color: transparent;\n}\n\n.Cswbzq1GQuTnMGpPi4Zt {\n width: 95%;\n margin: 0 auto 10px;\n /* Centering the footer with margin auto */\n border-radius: 10px;\n box-shadow: 0 0 5px rgba(0, 0, 0, 0.25);\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: 10px;\n overflow: hidden;\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.vJUKQIrYod4Q56Cduawg {\n background-color: transparent;\n border: none;\n padding: 0;\n cursor: pointer;\n}\n\n.vJUKQIrYod4Q56Cduawg .fy7pExJR53Br8Rva0_mA {\n color: var(--chatbot-header-color);\n /* Initial color, change this to your default icon color */\n transition: color 0.3s ease;\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 width: 100%;\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: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\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\"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\"footer\": `Cswbzq1GQuTnMGpPi4Zt`,\n\t\"footerForm\": `ibnXsq4b88cDDvfQQgYn`,\n\t\"promptDrawerButton\": `vJUKQIrYod4Q56Cduawg`,\n\t\"promptDrawerIcon\": `fy7pExJR53Br8Rva0_mA`,\n\t\"chatbotCircleContainer\": `nW2NG3krvonnMg3Rivul`,\n\t\"popupContainer\": `O6vpXieYIso2cRwekQqD`,\n\t\"popup\": `gx3uioPf7XBH183XzIsX`,\n\t\"closePopup\": `SnDh_4tosUOepmnQ6qtw`,\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: 2px 0;\n background: linear-gradient(to bottom, #39cff6, #ad84ff);\n background-clip: text;\n color: transparent;\n}\n\n.Cswbzq1GQuTnMGpPi4Zt {\n width: 95%;\n margin: 0 auto 10px;\n /* Centering the footer with margin auto */\n border-radius: 10px;\n box-shadow: 0 0 5px rgba(0, 0, 0, 0.25);\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: 10px;\n overflow: hidden;\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.vJUKQIrYod4Q56Cduawg {\n background-color: transparent;\n border: none;\n padding: 0;\n cursor: pointer;\n}\n\n.vJUKQIrYod4Q56Cduawg .fy7pExJR53Br8Rva0_mA {\n color: var(--chatbot-header-color);\n /* Initial color, change this to your default icon color */\n transition: color 0.3s ease;\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 width: 100%;\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: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\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\"footer\": `Cswbzq1GQuTnMGpPi4Zt`,\n\t\"footerForm\": `ibnXsq4b88cDDvfQQgYn`,\n\t\"promptDrawerButton\": `vJUKQIrYod4Q56Cduawg`,\n\t\"promptDrawerIcon\": `fy7pExJR53Br8Rva0_mA`,\n\t\"chatbotCircleContainer\": `nW2NG3krvonnMg3Rivul`,\n\t\"popupContainer\": `O6vpXieYIso2cRwekQqD`,\n\t\"popup\": `gx3uioPf7XBH183XzIsX`,\n\t\"closePopup\": `SnDh_4tosUOepmnQ6qtw`,\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
 
package/package.json CHANGED
@@ -1,8 +1,13 @@
1
1
  {
2
2
  "name": "@vamlabs/vam-chatbot",
3
- "version": "0.1.76-dev.175.1",
3
+ "version": "0.1.77-dev.178.1",
4
4
  "main": "dist/web-component.js",
5
5
  "description": "VAM Chatbot Web Component",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/vam-studios/vam-chatbot-ui.git",
9
+ "directory": "src/packages/chatbot"
10
+ },
6
11
  "files": [
7
12
  "dist"
8
13
  ],