@vamlabs/vam-chatbot 0.1.68 → 0.1.70
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 +4 -0
- package/dist/web-component.js +15 -180
- package/package.json +2 -3
package/README.md
CHANGED
|
@@ -14,3 +14,7 @@
|
|
|
14
14
|
```
|
|
15
15
|
|
|
16
16
|
These steps will help you integrate the VAM chatbot into your webpage seamlessly. Ensure you replace the `client-id` with the one provided to you for proper configuration.
|
|
17
|
+
|
|
18
|
+
## Notes
|
|
19
|
+
|
|
20
|
+
- 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.
|
package/dist/web-component.js
CHANGED
|
@@ -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_12__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/components/LazyMotion/index.mjs\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/render/dom/features-animation.mjs\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/render/components/m/proxy.mjs\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! axios */ \"./node_modules/axios/lib/axios.js\");\n/* harmony import */ var react_use_websocket__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-use-websocket */ \"./node_modules/react-use-websocket/dist/index.js\");\n/* harmony import */ var _components_ChatbotHeader__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/ChatbotHeader */ \"./components/ChatbotHeader.jsx\");\n/* harmony import */ var _components_ChatbotBody__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/ChatbotBody */ \"./components/ChatbotBody.jsx\");\n/* harmony import */ var _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Chatbot.module.css */ \"./Chatbot.module.css\");\n/* harmony import */ var _utils_variants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils/variants */ \"./utils/variants.js\");\n/* harmony import */ var _utils_websocketHandlers__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./utils/websocketHandlers */ \"./utils/websocketHandlers.js\");\n/* harmony import */ var _utils_useClickHandler__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./utils/useClickHandler */ \"./utils/useClickHandler.js\");\n/* harmony import */ var _utils_defaults__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./utils/defaults */ \"./utils/defaults.js\");\n/* harmony import */ var _utils_config__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./utils/config */ \"./utils/config.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__ = __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/* \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};\nfunction Chatbot(_ref) {\n let {\n clientId,\n onTrackEvent\n } = _ref;\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 [shouldConnectWebsocket, setShouldConnectWebsocket] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\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 inputRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const scrollAnchorRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\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_7__[\"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_4__[\"default\"].chatbotParent.replace(/([^\\w-])/g, \"\\\\$1\")}`) || document?.querySelector(`.${_Chatbot_module_css__WEBPACK_IMPORTED_MODULE_4__[\"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_11__[\"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_9__.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_9__.configUrl}/api/getBotConfig`;\n const method = \"POST\";\n const requestBody = {\n clientId\n };\n try {\n let apiResponse = await (0,axios__WEBPACK_IMPORTED_MODULE_11__[\"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 let websocket = (0,react_use_websocket__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(chatbotConfig?.data?.websocket_url, {\n onOpen: event => (0,_utils_websocketHandlers__WEBPACK_IMPORTED_MODULE_6__.handleWebsocketOnOpen)(event),\n onClose: event => (0,_utils_websocketHandlers__WEBPACK_IMPORTED_MODULE_6__.handleWebsocketOnClose)(event, chatbotMinimized, setShouldConnectWebsocket),\n // onReconnectStop:\n onMessage: event => (0,_utils_websocketHandlers__WEBPACK_IMPORTED_MODULE_6__.handleWebsocketOnMessage)(event, handleWebsocketResponse),\n onError: _utils_websocketHandlers__WEBPACK_IMPORTED_MODULE_6__.handleWebsocketOnError,\n shouldReconnect: closeEvent => !chatbotMinimized,\n // only attempt reconnection when the chatbot is maximized\n heartbeat: {\n message: JSON.stringify({\n action: \"heartbeat\",\n data: \"ping\"\n }),\n returnMessage: \"pong\",\n // to prevent re-rendering the component\n timeout: 9000,\n interval: 6000\n }\n }, shouldConnectWebsocket // handle the connection of the websocket using this variable\n );\n\n // scroll to the latest message whenever the message list updates\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n scrollAnchorRef.current?.scrollIntoView({\n behavior: \"smooth\",\n block: \"end\",\n inline: \"nearest\"\n });\n }, [messageList]);\n\n // set the chatbot connection to \"true\" when the chatbot is maximized\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (!chatbotMinimized) {\n setShouldConnectWebsocket(true);\n }\n }, [chatbotMinimized]);\n const handleWebsocketResponse = event => {\n try {\n try {\n event = JSON.parse(event.data);\n } catch (error) {}\n let {\n status,\n data\n } = event || {};\n let {\n response,\n sources,\n image_links,\n promoted_topics\n } = data || {};\n if (status === \"streaming\") {\n // set the chatbot state to \"receiving response\" and initialize the response\n setChatbotState(2);\n if (response) {\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 = fixSpecialLLMChars(response);\n } else {\n let responseMessage = {\n source: \"bot\",\n data: {\n text: response\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\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 if (latestMessage?.source !== \"user\") {\n latestMessage.status = \"done\";\n latestMessage.data.text = fixSpecialLLMChars(response);\n latestMessage.data.sources = sources?.map(fixSpecialLLMChars);\n if (promoted_topics) {\n const promotedImageLinks = promoted_topics.map(pt => pt?.image_link)?.filter(Boolean)?.map(fixSpecialLLMChars);\n latestMessage.data.image_links = promotedImageLinks?.length > 0 ? promotedImageLinks : image_links?.map(fixSpecialLLMChars);\n latestMessage.data.promoted_topics = promoted_topics?.filter(item => item?.title);\n }\n } else {\n let responseMessage = {\n source: \"bot\",\n data: {\n text: _utils_defaults__WEBPACK_IMPORTED_MODULE_8__.errorResponse\n },\n origin: \"server\",\n status: \"done\"\n };\n responseList = [...responseList, responseMessage];\n }\n } catch (error) {}\n return responseList;\n });\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 forceConnectWebsocket();\n setMessageList(defaultMessageList.current);\n setPromptsData(prevData => {\n return {\n ...prevData,\n show: true\n };\n });\n setChatbotState(0);\n } catch (error) {}\n };\n const handleInput = event => {\n try {\n setInputText(event.target.value);\n } catch (error) {}\n };\n const getChatHistory = () => {\n let response = [];\n try {\n let historyItem = {\n user: \"\",\n assistant: \"\"\n };\n for (let message of messageList) {\n if (message.source === \"user\") {\n historyItem.user = message?.data?.text;\n } else if (message.source === \"bot\" && message.origin === \"server\") {\n historyItem.assistant = message?.data?.text;\n response.push(historyItem);\n historyItem = {\n user: \"\",\n assistant: \"\"\n };\n }\n }\n } catch (error) {\n console.log(error);\n } finally {\n return response;\n }\n };\n\n // try to connect the websocket connection by force by setting its flag to false and true\n const forceConnectWebsocket = () => {\n setShouldConnectWebsocket(false); // set state to false\n setTimeout(() => {\n setShouldConnectWebsocket(true); // set state back to true after a short delay\n }, 500);\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 // force reconnect the websocket if it belongs to either of the following states: [-1, 2, 3]\n if ([-1, 2, 3].includes(websocket?.readyState)) {\n forceConnectWebsocket();\n }\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\n // prepare the chat history\n let chatHistory = getChatHistory();\n\n // send the user's query to the webhook\n websocket.sendJsonMessage({\n action: \"message\",\n data: {\n message: prompt,\n chatHistory,\n clientId\n }\n });\n }\n } catch (error) {\n // responseMessage = {\n // source: \"error\",\n // text: \"An error occured.\",\n // };\n console.log(error);\n }\n };\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.Fragment, {\n children: chatbotConfig?.fetchedData && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_4__[\"default\"].chatbotParent,\n ref: chatbotRef,\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxs)(framer_motion__WEBPACK_IMPORTED_MODULE_12__.LazyMotion, {\n features: framer_motion__WEBPACK_IMPORTED_MODULE_13__.domAnimation,\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxs)(framer_motion__WEBPACK_IMPORTED_MODULE_14__.m.div, {\n initial: false,\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_4__[\"default\"].chatbotContainer,\n animate: chatbotMinimized ? \"hide\" : \"show\",\n variants: _utils_variants__WEBPACK_IMPORTED_MODULE_5__.maximizedChatbotVariants,\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_components_ChatbotHeader__WEBPACK_IMPORTED_MODULE_2__[\"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_10__.jsx)(_components_ChatbotBody__WEBPACK_IMPORTED_MODULE_3__[\"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 })]\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxs)(framer_motion__WEBPACK_IMPORTED_MODULE_14__.m.div, {\n variants: _utils_variants__WEBPACK_IMPORTED_MODULE_5__.minimizedChatbotVariants,\n animate: chatbotMinimized ? \"show\" : \"hide\",\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_4__[\"default\"].chatbotCircleContainer,\n children: [!chatbotPopupMinimized && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxs)(framer_motion__WEBPACK_IMPORTED_MODULE_14__.m.div, {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_4__[\"default\"].popupContainer,\n variants: _utils_variants__WEBPACK_IMPORTED_MODULE_5__.minimizedChatbotContentVariants,\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(\"button\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_4__[\"default\"].closePopup,\n onClick: () => setChatbotPopupMinimized(true),\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(\"i\", {\n className: \"bi bi-x-circle-fill\"\n })\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_4__[\"default\"].popup,\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_4__[\"default\"].popupContent,\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(\"span\", {\n children: chatbotConfig?.data?.popup_body_text\n })\n })\n })]\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(framer_motion__WEBPACK_IMPORTED_MODULE_14__.m.div, {\n variants: _utils_variants__WEBPACK_IMPORTED_MODULE_5__.minimizedChatbotContentVariants,\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_4__[\"default\"].chatbotCircle,\n onClick: handleChatbotAnimation,\n children: chatbotIcon && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(\"div\", {\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(\"img\", {\n src: chatbotIcon,\n loading: \"lazy\",\n alt: \"chatbot icon\",\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_4__[\"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 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(_ref) {\n let {\n clientId,\n onTrackEvent\n } = _ref;\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 inputRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const scrollAnchorRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\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 (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n scrollAnchorRef.current?.scrollIntoView({\n behavior: \"smooth\",\n block: \"end\",\n inline: \"nearest\"\n });\n }, [messageList]);\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 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 },\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\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 whatsappConfig = chatbotConfig?.data?.external_redirect_metadata?.whatsapp;\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\n // Logic to show support button after every 2nd answer\n const botMessageCount = responseList.filter(msg => msg.source === \"bot\" && msg.origin === \"server\").length;\n if (whatsappConfig) {\n const triggerFrequency = whatsappConfig?.trigger_message_frequency;\n const redirectUrl = whatsappConfig?.redirect_url;\n if (triggerFrequency && redirectUrl && botMessageCount % triggerFrequency === 0) {\n latestMessage.data.showSupportButton = true;\n latestMessage.data.supportUrl = redirectUrl;\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 },\n origin: \"server\",\n status: \"done\"\n };\n if (whatsappConfig) {\n const triggerFrequency = whatsappConfig?.trigger_message_frequency;\n const redirectUrl = whatsappConfig?.redirect_url;\n const nextBotMessageCount = responseList.filter(msg => msg.source === \"bot\" && msg.origin === \"server\").length + 1;\n if (triggerFrequency && redirectUrl && nextBotMessageCount % triggerFrequency === 0) {\n responseMessage.data.showSupportButton = true;\n responseMessage.data.supportUrl = redirectUrl;\n }\n }\n responseList = [...responseList, responseMessage];\n }\n } catch (error) {}\n return responseList;\n });\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 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 session = await (0,_utils_sseClient__WEBPACK_IMPORTED_MODULE_8__.mintChatbotSessionToken)({\n chatbotBaseUrl,\n clientHint: clientId,\n signal: abortController.signal\n });\n if (!session?.token) {\n throw new Error(\"missing session token\");\n }\n await (0,_utils_sseClient__WEBPACK_IMPORTED_MODULE_8__.streamChatbotSse)({\n chatbotBaseUrl,\n token: session.token,\n body: {\n chatHistory,\n conversationId: conversationIdRef.current,\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 })]\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?");
|
|
30
30
|
|
|
31
31
|
/***/ }),
|
|
32
32
|
|
|
@@ -70,7 +70,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
70
70
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
71
71
|
|
|
72
72
|
"use strict";
|
|
73
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/components/LazyMotion/index.mjs\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/render/dom/features-animation.mjs\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! framer-motion */ \"./node_modules/framer-motion/dist/es/render/components/m/proxy.mjs\");\n/* harmony import */ var _Message__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Message */ \"./components/Message.jsx\");\n/* harmony import */ var _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Chatbot.module.css */ \"./Chatbot.module.css\");\n/* harmony import */ var _AnimatedTextPlaceholder__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./AnimatedTextPlaceholder */ \"./components/AnimatedTextPlaceholder.jsx\");\n/* harmony import */ var _utils_variants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/variants */ \"./utils/variants.js\");\n/* harmony import */ var _Prompts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Prompts */ \"./components/Prompts.jsx\");\n/* harmony import */ var _ChatbotFooter__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ChatbotFooter */ \"./components/ChatbotFooter.jsx\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n\n\n\n\n\nfunction ChatbotBody(_ref) {\n let {\n messageList,\n promptsData,\n handleSubmit,\n chatbotState,\n scrollAnchorRef,\n promptsMinimized,\n setPromptsMinimized,\n inputRef,\n inputText,\n handleInput,\n placeholderInputText,\n chatbotIcon\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 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 }, `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 scrollAnchorRef,\n promptsMinimized,\n setPromptsMinimized,\n inputRef,\n inputText,\n handleInput,\n placeholderInputText,\n chatbotIcon\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 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 }, `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?");
|
|
74
74
|
|
|
75
75
|
/***/ }),
|
|
76
76
|
|
|
@@ -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 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 react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n\n\n\n\n\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(_ref) {\n let {\n chatbotIcon,\n messageText,\n messageReferenceLinks,\n messageImageLinks,\n messageSource,\n messageStatus,\n promotedTopics,\n typewriterEffect\n } = _ref;\n let messageProps = {};\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_8__.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_8__.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_8__.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_8__.jsx)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"].messageBody,\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.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_8__.jsx)(_Typewriter__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n text: markdownToHtml(messageText)\n }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.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_8__.jsx)(_PromotedTopics__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n data: promotedTopics\n }), messageImageLinks?.length > 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_Carousal__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n images: messageImageLinks\n }), messageStatus === \"done\" && messageReferenceLinks?.length > 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.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 = _ref2 => {\n let {\n chatbotIcon,\n messageText,\n messageReferenceLinks,\n messageImageLinks,\n messageSource,\n messageStatus,\n promotedTopics,\n typewriterEffect\n } = _ref2;\n return (0,react__WEBPACK_IMPORTED_MODULE_5__.useMemo)(() => {\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.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 });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [messageText, messageStatus, chatbotIcon]);\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Message);\n\n//# sourceURL=webpack://VamChatbot/./components/Message.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 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 react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n\n\n\n\n\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(_ref) {\n let {\n chatbotIcon,\n messageText,\n messageReferenceLinks,\n messageImageLinks,\n messageSource,\n messageStatus,\n promotedTopics,\n typewriterEffect,\n showSupportButton,\n supportUrl\n } = _ref;\n let messageProps = {};\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_8__.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_8__.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_8__.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_8__.jsx)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"].messageBody,\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.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_8__.jsx)(_Typewriter__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n text: markdownToHtml(messageText)\n }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.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_8__.jsx)(_PromotedTopics__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n data: promotedTopics\n }), showSupportButton && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.Fragment, {\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(\"div\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"].messageDivider\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(\"p\", {\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"].supportText,\n children: \"You can now contact the Box Office on Whatsapp.\"\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(\"a\", {\n href: supportUrl,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: _Chatbot_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"].supportButton,\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(\"i\", {\n className: \"bi bi-whatsapp\"\n }), \"Contact Us\"]\n })]\n }), messageImageLinks?.length > 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_Carousal__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n images: messageImageLinks\n }), messageStatus === \"done\" && messageReferenceLinks?.length > 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.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 = _ref2 => {\n let {\n chatbotIcon,\n messageText,\n messageReferenceLinks,\n messageImageLinks,\n messageSource,\n messageStatus,\n promotedTopics,\n typewriterEffect,\n showSupportButton,\n supportUrl\n } = _ref2;\n return (0,react__WEBPACK_IMPORTED_MODULE_5__.useMemo)(() => {\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.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 });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [messageText, messageStatus, chatbotIcon, showSupportButton, supportUrl]);\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Message);\n\n//# sourceURL=webpack://VamChatbot/./components/Message.jsx?");
|
|
107
107
|
|
|
108
108
|
/***/ }),
|
|
109
109
|
|
|
@@ -184,6 +184,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
184
184
|
|
|
185
185
|
/***/ }),
|
|
186
186
|
|
|
187
|
+
/***/ "./utils/sseClient.js":
|
|
188
|
+
/*!****************************!*\
|
|
189
|
+
!*** ./utils/sseClient.js ***!
|
|
190
|
+
\****************************/
|
|
191
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
192
|
+
|
|
193
|
+
"use strict";
|
|
194
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ mintChatbotSessionToken: () => (/* binding */ mintChatbotSessionToken),\n/* harmony export */ streamChatbotSse: () => (/* binding */ streamChatbotSse)\n/* harmony export */ });\nconst normalizeBaseUrl = baseUrl => String(baseUrl || \"\").replace(/\\/+$/, \"\");\nasync function mintChatbotSessionToken(_ref) {\n let {\n chatbotBaseUrl,\n clientHint,\n signal\n } = _ref;\n const url = `${normalizeBaseUrl(chatbotBaseUrl)}/chat/session`;\n const resp = await fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify(clientHint ? {\n client_hint: clientHint\n } : {}),\n signal\n });\n if (!resp.ok) {\n const text = await resp.text().catch(() => \"\");\n throw new Error(`mint session failed (${resp.status}): ${text || resp.statusText}`);\n }\n return resp.json();\n}\nasync function streamChatbotSse(_ref2) {\n let {\n chatbotBaseUrl,\n token,\n body,\n signal,\n onEnvelope\n } = _ref2;\n const url = `${normalizeBaseUrl(chatbotBaseUrl)}/chat/stream`;\n const resp = await fetch(url, {\n method: \"POST\",\n headers: {\n Accept: \"text/event-stream\",\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${token}`\n },\n body: JSON.stringify(body),\n signal\n });\n if (!resp.ok) {\n const text = await resp.text().catch(() => \"\");\n throw new Error(`stream failed (${resp.status}): ${text || resp.statusText}`);\n }\n if (!resp.body) {\n throw new Error(\"stream failed: missing response body\");\n }\n const reader = resp.body.getReader();\n const decoder = new TextDecoder(\"utf-8\");\n let buffer = \"\";\n let eventDataLines = [];\n const flushEvent = () => {\n if (eventDataLines.length === 0) return;\n const payload = eventDataLines.join(\"\\n\").trim();\n eventDataLines = [];\n if (!payload) return;\n try {\n onEnvelope(JSON.parse(payload));\n } catch {\n // ignore\n }\n };\n while (true) {\n const {\n value,\n done\n } = await reader.read();\n if (done) {\n flushEvent();\n break;\n }\n buffer += decoder.decode(value, {\n stream: true\n });\n while (true) {\n const newlineIndex = buffer.indexOf(\"\\n\");\n if (newlineIndex === -1) break;\n const rawLine = buffer.slice(0, newlineIndex);\n buffer = buffer.slice(newlineIndex + 1);\n const line = rawLine.endsWith(\"\\r\") ? rawLine.slice(0, -1) : rawLine;\n if (line === \"\") {\n flushEvent();\n continue;\n }\n if (line.startsWith(\":\")) continue;\n if (line.startsWith(\"data:\")) {\n eventDataLines.push(line.slice(\"data:\".length).trimStart());\n }\n }\n }\n}\n\n//# sourceURL=webpack://VamChatbot/./utils/sseClient.js?");
|
|
195
|
+
|
|
196
|
+
/***/ }),
|
|
197
|
+
|
|
187
198
|
/***/ "./utils/useClickHandler.js":
|
|
188
199
|
/*!**********************************!*\
|
|
189
200
|
!*** ./utils/useClickHandler.js ***!
|
|
@@ -206,17 +217,6 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
206
217
|
|
|
207
218
|
/***/ }),
|
|
208
219
|
|
|
209
|
-
/***/ "./utils/websocketHandlers.js":
|
|
210
|
-
/*!************************************!*\
|
|
211
|
-
!*** ./utils/websocketHandlers.js ***!
|
|
212
|
-
\************************************/
|
|
213
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
214
|
-
|
|
215
|
-
"use strict";
|
|
216
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ handleWebsocketOnClose: () => (/* binding */ handleWebsocketOnClose),\n/* harmony export */ handleWebsocketOnError: () => (/* binding */ handleWebsocketOnError),\n/* harmony export */ handleWebsocketOnMessage: () => (/* binding */ handleWebsocketOnMessage),\n/* harmony export */ handleWebsocketOnOpen: () => (/* binding */ handleWebsocketOnOpen)\n/* harmony export */ });\nconst handleWebsocketOnOpen = event => {\n console.log(\"websocket opened\");\n};\nconst handleWebsocketOnClose = (event, chatbotMinimized, setShouldConnectWebsocket) => {\n console.log(\"websocket closed\");\n\n // disable the chatbot connection if the chatbot is minimized\n if (chatbotMinimized) {\n console.log(\"disabling shouldConnect\");\n setShouldConnectWebsocket(false);\n }\n};\nconst handleWebsocketOnMessage = (event, handleWebsocketResponse) => {\n handleWebsocketResponse(event);\n};\nconst handleWebsocketOnError = event => {\n console.log(\"websocket error\", event);\n};\n\n//# sourceURL=webpack://VamChatbot/./utils/websocketHandlers.js?");
|
|
217
|
-
|
|
218
|
-
/***/ }),
|
|
219
|
-
|
|
220
220
|
/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/bootstrap-icons/font/bootstrap-icons.css":
|
|
221
221
|
/*!*****************************************************************************************************!*\
|
|
222
222
|
!*** ./node_modules/css-loader/dist/cjs.js!./node_modules/bootstrap-icons/font/bootstrap-icons.css ***!
|
|
@@ -235,7 +235,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
235
235
|
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
|
236
236
|
|
|
237
237
|
"use strict";
|
|
238
|
-
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.bOJfQLIDdUlPEJzIVy0q {\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: box-shadow 0.3s ease, 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 }\n}\n\n.Bo90PPN_Vahh0nlC0xX9 > p {\n margin-bottom: 0;\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};\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");
|
|
238
|
+
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 }\n}\n\n.Bo90PPN_Vahh0nlC0xX9 > p {\n margin-bottom: 0;\n}\n\n.FS7iocV3c2mOOsu9YyGQ {\n margin-top: 10px;\n background-color: #25d366; /* WhatsApp Green */\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 gap: 8px;\n font-size: 0.9rem;\n transition: opacity 0.3s;\n width: fit-content;\n text-decoration: none;\n align-self: center; /* Center align in flex container */\n}\n\n.FS7iocV3c2mOOsu9YyGQ:hover {\n opacity: 0.9;\n color: white;\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 align-self: center;\n font-size: 0.9rem;\n margin-bottom: 5px;\n color: var(--chatbot-bot-text-color);\n font-weight: 600;\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\"supportButton\": `FS7iocV3c2mOOsu9YyGQ`,\n\t\"messageDivider\": `bGwt6w5szvfURLrK73Qg`,\n\t\"supportText\": `x0MAnMNVi2NF7R3qljbA`\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");
|
|
239
239
|
|
|
240
240
|
/***/ }),
|
|
241
241
|
|
|
@@ -348,171 +348,6 @@ eval("\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n
|
|
|
348
348
|
|
|
349
349
|
/***/ }),
|
|
350
350
|
|
|
351
|
-
/***/ "./node_modules/react-use-websocket/dist/index.js":
|
|
352
|
-
/*!********************************************************!*\
|
|
353
|
-
!*** ./node_modules/react-use-websocket/dist/index.js ***!
|
|
354
|
-
\********************************************************/
|
|
355
|
-
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
356
|
-
|
|
357
|
-
"use strict";
|
|
358
|
-
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.resetGlobalState = exports.useEventSource = exports.ReadyState = exports.useSocketIO = exports[\"default\"] = void 0;\nvar use_websocket_1 = __webpack_require__(/*! ./lib/use-websocket */ \"./node_modules/react-use-websocket/dist/lib/use-websocket.js\");\nObject.defineProperty(exports, \"default\", ({ enumerable: true, get: function () { return use_websocket_1.useWebSocket; } }));\nvar use_socket_io_1 = __webpack_require__(/*! ./lib/use-socket-io */ \"./node_modules/react-use-websocket/dist/lib/use-socket-io.js\");\nObject.defineProperty(exports, \"useSocketIO\", ({ enumerable: true, get: function () { return use_socket_io_1.useSocketIO; } }));\nvar constants_1 = __webpack_require__(/*! ./lib/constants */ \"./node_modules/react-use-websocket/dist/lib/constants.js\");\nObject.defineProperty(exports, \"ReadyState\", ({ enumerable: true, get: function () { return constants_1.ReadyState; } }));\nvar use_event_source_1 = __webpack_require__(/*! ./lib/use-event-source */ \"./node_modules/react-use-websocket/dist/lib/use-event-source.js\");\nObject.defineProperty(exports, \"useEventSource\", ({ enumerable: true, get: function () { return use_event_source_1.useEventSource; } }));\nvar util_1 = __webpack_require__(/*! ./lib/util */ \"./node_modules/react-use-websocket/dist/lib/util.js\");\nObject.defineProperty(exports, \"resetGlobalState\", ({ enumerable: true, get: function () { return util_1.resetGlobalState; } }));\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://VamChatbot/./node_modules/react-use-websocket/dist/index.js?");
|
|
359
|
-
|
|
360
|
-
/***/ }),
|
|
361
|
-
|
|
362
|
-
/***/ "./node_modules/react-use-websocket/dist/lib/attach-listener.js":
|
|
363
|
-
/*!**********************************************************************!*\
|
|
364
|
-
!*** ./node_modules/react-use-websocket/dist/lib/attach-listener.js ***!
|
|
365
|
-
\**********************************************************************/
|
|
366
|
-
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
367
|
-
|
|
368
|
-
"use strict";
|
|
369
|
-
eval("\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.attachListeners = void 0;\nvar socket_io_1 = __webpack_require__(/*! ./socket-io */ \"./node_modules/react-use-websocket/dist/lib/socket-io.js\");\nvar heartbeat_1 = __webpack_require__(/*! ./heartbeat */ \"./node_modules/react-use-websocket/dist/lib/heartbeat.js\");\nvar constants_1 = __webpack_require__(/*! ./constants */ \"./node_modules/react-use-websocket/dist/lib/constants.js\");\nvar util_1 = __webpack_require__(/*! ./util */ \"./node_modules/react-use-websocket/dist/lib/util.js\");\nvar bindMessageHandler = function (webSocketInstance, optionsRef, setLastMessage) {\n var heartbeatCb;\n if (optionsRef.current.heartbeat && webSocketInstance instanceof WebSocket) {\n var heartbeatOptions = typeof optionsRef.current.heartbeat === \"boolean\"\n ? undefined\n : optionsRef.current.heartbeat;\n heartbeatCb = (0, heartbeat_1.heartbeat)(webSocketInstance, heartbeatOptions);\n }\n webSocketInstance.onmessage = function (message) {\n var _a;\n heartbeatCb === null || heartbeatCb === void 0 ? void 0 : heartbeatCb();\n optionsRef.current.onMessage && optionsRef.current.onMessage(message);\n if (typeof optionsRef.current.filter === 'function' && optionsRef.current.filter(message) !== true) {\n return;\n }\n if (optionsRef.current.heartbeat &&\n typeof optionsRef.current.heartbeat !== \"boolean\" &&\n ((_a = optionsRef.current.heartbeat) === null || _a === void 0 ? void 0 : _a.returnMessage) === message.data)\n return;\n setLastMessage(message);\n };\n};\nvar bindOpenHandler = function (webSocketInstance, optionsRef, setReadyState, reconnectCount) {\n webSocketInstance.onopen = function (event) {\n optionsRef.current.onOpen && optionsRef.current.onOpen(event);\n reconnectCount.current = 0;\n setReadyState(constants_1.ReadyState.OPEN);\n };\n};\nvar bindCloseHandler = function (webSocketInstance, optionsRef, setReadyState, reconnect, reconnectCount) {\n if (constants_1.isEventSourceSupported && webSocketInstance instanceof EventSource) {\n return function () { };\n }\n (0, util_1.assertIsWebSocket)(webSocketInstance, optionsRef.current.skipAssert);\n var reconnectTimeout;\n webSocketInstance.onclose = function (event) {\n var _a;\n optionsRef.current.onClose && optionsRef.current.onClose(event);\n setReadyState(constants_1.ReadyState.CLOSED);\n if (optionsRef.current.shouldReconnect && optionsRef.current.shouldReconnect(event)) {\n var reconnectAttempts = (_a = optionsRef.current.reconnectAttempts) !== null && _a !== void 0 ? _a : constants_1.DEFAULT_RECONNECT_LIMIT;\n if (reconnectCount.current < reconnectAttempts) {\n var nextReconnectInterval = typeof optionsRef.current.reconnectInterval === 'function' ?\n optionsRef.current.reconnectInterval(reconnectCount.current) :\n optionsRef.current.reconnectInterval;\n reconnectTimeout = window.setTimeout(function () {\n reconnectCount.current++;\n reconnect();\n }, nextReconnectInterval !== null && nextReconnectInterval !== void 0 ? nextReconnectInterval : constants_1.DEFAULT_RECONNECT_INTERVAL_MS);\n }\n else {\n optionsRef.current.onReconnectStop && optionsRef.current.onReconnectStop(reconnectAttempts);\n console.warn(\"Max reconnect attempts of \".concat(reconnectAttempts, \" exceeded\"));\n }\n }\n };\n return function () { return reconnectTimeout && window.clearTimeout(reconnectTimeout); };\n};\nvar bindErrorHandler = function (webSocketInstance, optionsRef, setReadyState, reconnect, reconnectCount) {\n var reconnectTimeout;\n webSocketInstance.onerror = function (error) {\n var _a;\n optionsRef.current.onError && optionsRef.current.onError(error);\n if (constants_1.isEventSourceSupported && webSocketInstance instanceof EventSource) {\n optionsRef.current.onClose && optionsRef.current.onClose(__assign(__assign({}, error), { code: 1006, reason: \"An error occurred with the EventSource: \".concat(error), wasClean: false }));\n setReadyState(constants_1.ReadyState.CLOSED);\n webSocketInstance.close();\n }\n if (optionsRef.current.retryOnError) {\n if (reconnectCount.current < ((_a = optionsRef.current.reconnectAttempts) !== null && _a !== void 0 ? _a : constants_1.DEFAULT_RECONNECT_LIMIT)) {\n var nextReconnectInterval = typeof optionsRef.current.reconnectInterval === 'function' ?\n optionsRef.current.reconnectInterval(reconnectCount.current) :\n optionsRef.current.reconnectInterval;\n reconnectTimeout = window.setTimeout(function () {\n reconnectCount.current++;\n reconnect();\n }, nextReconnectInterval !== null && nextReconnectInterval !== void 0 ? nextReconnectInterval : constants_1.DEFAULT_RECONNECT_INTERVAL_MS);\n }\n else {\n optionsRef.current.onReconnectStop && optionsRef.current.onReconnectStop(optionsRef.current.reconnectAttempts);\n console.warn(\"Max reconnect attempts of \".concat(optionsRef.current.reconnectAttempts, \" exceeded\"));\n }\n }\n };\n return function () { return reconnectTimeout && window.clearTimeout(reconnectTimeout); };\n};\nvar attachListeners = function (webSocketInstance, setters, optionsRef, reconnect, reconnectCount, sendMessage) {\n var setLastMessage = setters.setLastMessage, setReadyState = setters.setReadyState;\n var interval;\n var cancelReconnectOnClose;\n var cancelReconnectOnError;\n if (optionsRef.current.fromSocketIO) {\n interval = (0, socket_io_1.setUpSocketIOPing)(sendMessage);\n }\n bindMessageHandler(webSocketInstance, optionsRef, setLastMessage);\n bindOpenHandler(webSocketInstance, optionsRef, setReadyState, reconnectCount);\n cancelReconnectOnClose = bindCloseHandler(webSocketInstance, optionsRef, setReadyState, reconnect, reconnectCount);\n cancelReconnectOnError = bindErrorHandler(webSocketInstance, optionsRef, setReadyState, reconnect, reconnectCount);\n return function () {\n setReadyState(constants_1.ReadyState.CLOSING);\n cancelReconnectOnClose();\n cancelReconnectOnError();\n webSocketInstance.close();\n if (interval)\n clearInterval(interval);\n };\n};\nexports.attachListeners = attachListeners;\n//# sourceMappingURL=attach-listener.js.map\n\n//# sourceURL=webpack://VamChatbot/./node_modules/react-use-websocket/dist/lib/attach-listener.js?");
|
|
370
|
-
|
|
371
|
-
/***/ }),
|
|
372
|
-
|
|
373
|
-
/***/ "./node_modules/react-use-websocket/dist/lib/attach-shared-listeners.js":
|
|
374
|
-
/*!******************************************************************************!*\
|
|
375
|
-
!*** ./node_modules/react-use-websocket/dist/lib/attach-shared-listeners.js ***!
|
|
376
|
-
\******************************************************************************/
|
|
377
|
-
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
378
|
-
|
|
379
|
-
"use strict";
|
|
380
|
-
eval("\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.attachSharedListeners = void 0;\nvar globals_1 = __webpack_require__(/*! ./globals */ \"./node_modules/react-use-websocket/dist/lib/globals.js\");\nvar constants_1 = __webpack_require__(/*! ./constants */ \"./node_modules/react-use-websocket/dist/lib/constants.js\");\nvar manage_subscribers_1 = __webpack_require__(/*! ./manage-subscribers */ \"./node_modules/react-use-websocket/dist/lib/manage-subscribers.js\");\nvar socket_io_1 = __webpack_require__(/*! ./socket-io */ \"./node_modules/react-use-websocket/dist/lib/socket-io.js\");\nvar heartbeat_1 = __webpack_require__(/*! ./heartbeat */ \"./node_modules/react-use-websocket/dist/lib/heartbeat.js\");\nvar bindMessageHandler = function (webSocketInstance, url, heartbeatOptions) {\n var onMessageCb;\n if (heartbeatOptions && webSocketInstance instanceof WebSocket) {\n onMessageCb = (0, heartbeat_1.heartbeat)(webSocketInstance, typeof heartbeatOptions === 'boolean' ? undefined : heartbeatOptions);\n }\n webSocketInstance.onmessage = function (message) {\n onMessageCb === null || onMessageCb === void 0 ? void 0 : onMessageCb();\n (0, manage_subscribers_1.getSubscribers)(url).forEach(function (subscriber) {\n if (subscriber.optionsRef.current.onMessage) {\n subscriber.optionsRef.current.onMessage(message);\n }\n if (typeof subscriber.optionsRef.current.filter === 'function' &&\n subscriber.optionsRef.current.filter(message) !== true) {\n return;\n }\n if (heartbeatOptions &&\n typeof heartbeatOptions !== \"boolean\" &&\n (heartbeatOptions === null || heartbeatOptions === void 0 ? void 0 : heartbeatOptions.returnMessage) === message.data)\n return;\n subscriber.setLastMessage(message);\n });\n };\n};\nvar bindOpenHandler = function (webSocketInstance, url) {\n webSocketInstance.onopen = function (event) {\n (0, manage_subscribers_1.getSubscribers)(url).forEach(function (subscriber) {\n subscriber.reconnectCount.current = 0;\n if (subscriber.optionsRef.current.onOpen) {\n subscriber.optionsRef.current.onOpen(event);\n }\n subscriber.setReadyState(constants_1.ReadyState.OPEN);\n });\n };\n};\nvar bindCloseHandler = function (webSocketInstance, url) {\n if (webSocketInstance instanceof WebSocket) {\n webSocketInstance.onclose = function (event) {\n (0, manage_subscribers_1.getSubscribers)(url).forEach(function (subscriber) {\n if (subscriber.optionsRef.current.onClose) {\n subscriber.optionsRef.current.onClose(event);\n }\n subscriber.setReadyState(constants_1.ReadyState.CLOSED);\n });\n delete globals_1.sharedWebSockets[url];\n (0, manage_subscribers_1.getSubscribers)(url).forEach(function (subscriber) {\n var _a;\n if (subscriber.optionsRef.current.shouldReconnect &&\n subscriber.optionsRef.current.shouldReconnect(event)) {\n var reconnectAttempts = (_a = subscriber.optionsRef.current.reconnectAttempts) !== null && _a !== void 0 ? _a : constants_1.DEFAULT_RECONNECT_LIMIT;\n if (subscriber.reconnectCount.current < reconnectAttempts) {\n var nextReconnectInterval = typeof subscriber.optionsRef.current.reconnectInterval === 'function' ?\n subscriber.optionsRef.current.reconnectInterval(subscriber.reconnectCount.current) :\n subscriber.optionsRef.current.reconnectInterval;\n setTimeout(function () {\n subscriber.reconnectCount.current++;\n subscriber.reconnect.current();\n }, nextReconnectInterval !== null && nextReconnectInterval !== void 0 ? nextReconnectInterval : constants_1.DEFAULT_RECONNECT_INTERVAL_MS);\n }\n else {\n subscriber.optionsRef.current.onReconnectStop && subscriber.optionsRef.current.onReconnectStop(subscriber.optionsRef.current.reconnectAttempts);\n console.warn(\"Max reconnect attempts of \".concat(reconnectAttempts, \" exceeded\"));\n }\n }\n });\n };\n }\n};\nvar bindErrorHandler = function (webSocketInstance, url) {\n webSocketInstance.onerror = function (error) {\n (0, manage_subscribers_1.getSubscribers)(url).forEach(function (subscriber) {\n if (subscriber.optionsRef.current.onError) {\n subscriber.optionsRef.current.onError(error);\n }\n if (constants_1.isEventSourceSupported && webSocketInstance instanceof EventSource) {\n subscriber.optionsRef.current.onClose && subscriber.optionsRef.current.onClose(__assign(__assign({}, error), { code: 1006, reason: \"An error occurred with the EventSource: \".concat(error), wasClean: false }));\n subscriber.setReadyState(constants_1.ReadyState.CLOSED);\n }\n });\n if (constants_1.isEventSourceSupported && webSocketInstance instanceof EventSource) {\n webSocketInstance.close();\n }\n };\n};\nvar attachSharedListeners = function (webSocketInstance, url, optionsRef, sendMessage) {\n var interval;\n if (optionsRef.current.fromSocketIO) {\n interval = (0, socket_io_1.setUpSocketIOPing)(sendMessage);\n }\n bindMessageHandler(webSocketInstance, url, optionsRef.current.heartbeat);\n bindCloseHandler(webSocketInstance, url);\n bindOpenHandler(webSocketInstance, url);\n bindErrorHandler(webSocketInstance, url);\n return function () {\n if (interval)\n clearInterval(interval);\n };\n};\nexports.attachSharedListeners = attachSharedListeners;\n//# sourceMappingURL=attach-shared-listeners.js.map\n\n//# sourceURL=webpack://VamChatbot/./node_modules/react-use-websocket/dist/lib/attach-shared-listeners.js?");
|
|
381
|
-
|
|
382
|
-
/***/ }),
|
|
383
|
-
|
|
384
|
-
/***/ "./node_modules/react-use-websocket/dist/lib/constants.js":
|
|
385
|
-
/*!****************************************************************!*\
|
|
386
|
-
!*** ./node_modules/react-use-websocket/dist/lib/constants.js ***!
|
|
387
|
-
\****************************************************************/
|
|
388
|
-
/***/ ((__unused_webpack_module, exports) => {
|
|
389
|
-
|
|
390
|
-
"use strict";
|
|
391
|
-
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.isEventSourceSupported = exports.isReactNative = exports.ReadyState = exports.DEFAULT_HEARTBEAT = exports.UNPARSABLE_JSON_OBJECT = exports.DEFAULT_RECONNECT_INTERVAL_MS = exports.DEFAULT_RECONNECT_LIMIT = exports.SOCKET_IO_PING_CODE = exports.SOCKET_IO_PATH = exports.SOCKET_IO_PING_INTERVAL = exports.DEFAULT_EVENT_SOURCE_OPTIONS = exports.EMPTY_EVENT_HANDLERS = exports.DEFAULT_OPTIONS = void 0;\nvar MILLISECONDS = 1;\nvar SECONDS = 1000 * MILLISECONDS;\nexports.DEFAULT_OPTIONS = {};\nexports.EMPTY_EVENT_HANDLERS = {};\nexports.DEFAULT_EVENT_SOURCE_OPTIONS = {\n withCredentials: false,\n events: exports.EMPTY_EVENT_HANDLERS,\n};\nexports.SOCKET_IO_PING_INTERVAL = 25 * SECONDS;\nexports.SOCKET_IO_PATH = '/socket.io/?EIO=3&transport=websocket';\nexports.SOCKET_IO_PING_CODE = '2';\nexports.DEFAULT_RECONNECT_LIMIT = 20;\nexports.DEFAULT_RECONNECT_INTERVAL_MS = 5000;\nexports.UNPARSABLE_JSON_OBJECT = {};\nexports.DEFAULT_HEARTBEAT = {\n message: 'ping',\n timeout: 60000,\n interval: 25000,\n};\nvar ReadyState;\n(function (ReadyState) {\n ReadyState[ReadyState[\"UNINSTANTIATED\"] = -1] = \"UNINSTANTIATED\";\n ReadyState[ReadyState[\"CONNECTING\"] = 0] = \"CONNECTING\";\n ReadyState[ReadyState[\"OPEN\"] = 1] = \"OPEN\";\n ReadyState[ReadyState[\"CLOSING\"] = 2] = \"CLOSING\";\n ReadyState[ReadyState[\"CLOSED\"] = 3] = \"CLOSED\";\n})(ReadyState = exports.ReadyState || (exports.ReadyState = {}));\nvar eventSourceSupported = function () {\n try {\n return 'EventSource' in globalThis;\n }\n catch (e) {\n return false;\n }\n};\nexports.isReactNative = typeof navigator !== 'undefined' && navigator.product === 'ReactNative';\nexports.isEventSourceSupported = !exports.isReactNative && eventSourceSupported();\n//# sourceMappingURL=constants.js.map\n\n//# sourceURL=webpack://VamChatbot/./node_modules/react-use-websocket/dist/lib/constants.js?");
|
|
392
|
-
|
|
393
|
-
/***/ }),
|
|
394
|
-
|
|
395
|
-
/***/ "./node_modules/react-use-websocket/dist/lib/create-or-join.js":
|
|
396
|
-
/*!*********************************************************************!*\
|
|
397
|
-
!*** ./node_modules/react-use-websocket/dist/lib/create-or-join.js ***!
|
|
398
|
-
\*********************************************************************/
|
|
399
|
-
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
400
|
-
|
|
401
|
-
"use strict";
|
|
402
|
-
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.createOrJoinSocket = void 0;\nvar globals_1 = __webpack_require__(/*! ./globals */ \"./node_modules/react-use-websocket/dist/lib/globals.js\");\nvar constants_1 = __webpack_require__(/*! ./constants */ \"./node_modules/react-use-websocket/dist/lib/constants.js\");\nvar attach_listener_1 = __webpack_require__(/*! ./attach-listener */ \"./node_modules/react-use-websocket/dist/lib/attach-listener.js\");\nvar attach_shared_listeners_1 = __webpack_require__(/*! ./attach-shared-listeners */ \"./node_modules/react-use-websocket/dist/lib/attach-shared-listeners.js\");\nvar manage_subscribers_1 = __webpack_require__(/*! ./manage-subscribers */ \"./node_modules/react-use-websocket/dist/lib/manage-subscribers.js\");\n//TODO ensure that all onClose callbacks are called\nvar cleanSubscribers = function (url, subscriber, optionsRef, setReadyState, clearSocketIoPingInterval) {\n return function () {\n (0, manage_subscribers_1.removeSubscriber)(url, subscriber);\n if (!(0, manage_subscribers_1.hasSubscribers)(url)) {\n try {\n var socketLike = globals_1.sharedWebSockets[url];\n if (socketLike instanceof WebSocket) {\n socketLike.onclose = function (event) {\n if (optionsRef.current.onClose) {\n optionsRef.current.onClose(event);\n }\n setReadyState(constants_1.ReadyState.CLOSED);\n };\n }\n socketLike.close();\n }\n catch (e) {\n }\n if (clearSocketIoPingInterval)\n clearSocketIoPingInterval();\n delete globals_1.sharedWebSockets[url];\n }\n };\n};\nvar createOrJoinSocket = function (webSocketRef, url, setReadyState, optionsRef, setLastMessage, startRef, reconnectCount, sendMessage) {\n if (!constants_1.isEventSourceSupported && optionsRef.current.eventSourceOptions) {\n if (constants_1.isReactNative) {\n throw new Error('EventSource is not supported in ReactNative');\n }\n else {\n throw new Error('EventSource is not supported');\n }\n }\n if (optionsRef.current.share) {\n var clearSocketIoPingInterval = null;\n if (globals_1.sharedWebSockets[url] === undefined) {\n globals_1.sharedWebSockets[url] = optionsRef.current.eventSourceOptions ?\n new EventSource(url, optionsRef.current.eventSourceOptions) :\n new WebSocket(url, optionsRef.current.protocols);\n webSocketRef.current = globals_1.sharedWebSockets[url];\n setReadyState(constants_1.ReadyState.CONNECTING);\n clearSocketIoPingInterval = (0, attach_shared_listeners_1.attachSharedListeners)(globals_1.sharedWebSockets[url], url, optionsRef, sendMessage);\n }\n else {\n webSocketRef.current = globals_1.sharedWebSockets[url];\n setReadyState(globals_1.sharedWebSockets[url].readyState);\n }\n var subscriber = {\n setLastMessage: setLastMessage,\n setReadyState: setReadyState,\n optionsRef: optionsRef,\n reconnectCount: reconnectCount,\n reconnect: startRef,\n };\n (0, manage_subscribers_1.addSubscriber)(url, subscriber);\n return cleanSubscribers(url, subscriber, optionsRef, setReadyState, clearSocketIoPingInterval);\n }\n else {\n webSocketRef.current = optionsRef.current.eventSourceOptions ?\n new EventSource(url, optionsRef.current.eventSourceOptions) :\n new WebSocket(url, optionsRef.current.protocols);\n setReadyState(constants_1.ReadyState.CONNECTING);\n if (!webSocketRef.current) {\n throw new Error('WebSocket failed to be created');\n }\n return (0, attach_listener_1.attachListeners)(webSocketRef.current, {\n setLastMessage: setLastMessage,\n setReadyState: setReadyState\n }, optionsRef, startRef.current, reconnectCount, sendMessage);\n }\n};\nexports.createOrJoinSocket = createOrJoinSocket;\n//# sourceMappingURL=create-or-join.js.map\n\n//# sourceURL=webpack://VamChatbot/./node_modules/react-use-websocket/dist/lib/create-or-join.js?");
|
|
403
|
-
|
|
404
|
-
/***/ }),
|
|
405
|
-
|
|
406
|
-
/***/ "./node_modules/react-use-websocket/dist/lib/get-url.js":
|
|
407
|
-
/*!**************************************************************!*\
|
|
408
|
-
!*** ./node_modules/react-use-websocket/dist/lib/get-url.js ***!
|
|
409
|
-
\**************************************************************/
|
|
410
|
-
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
411
|
-
|
|
412
|
-
"use strict";
|
|
413
|
-
eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.getUrl = void 0;\nvar socket_io_1 = __webpack_require__(/*! ./socket-io */ \"./node_modules/react-use-websocket/dist/lib/socket-io.js\");\nvar constants_1 = __webpack_require__(/*! ./constants */ \"./node_modules/react-use-websocket/dist/lib/constants.js\");\nvar waitFor = function (duration) { return new Promise(function (resolve) { return window.setTimeout(resolve, duration); }); };\nvar getUrl = function (url, optionsRef, retriedAttempts) {\n if (retriedAttempts === void 0) { retriedAttempts = 0; }\n return __awaiter(void 0, void 0, void 0, function () {\n var convertedUrl, e_1, reconnectLimit, nextReconnectInterval, parsedUrl, parsedWithQueryParams;\n var _a, _b, _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n if (!(typeof url === 'function')) return [3 /*break*/, 10];\n _d.label = 1;\n case 1:\n _d.trys.push([1, 3, , 9]);\n return [4 /*yield*/, url()];\n case 2:\n convertedUrl = _d.sent();\n return [3 /*break*/, 9];\n case 3:\n e_1 = _d.sent();\n if (!optionsRef.current.retryOnError) return [3 /*break*/, 7];\n reconnectLimit = (_a = optionsRef.current.reconnectAttempts) !== null && _a !== void 0 ? _a : constants_1.DEFAULT_RECONNECT_LIMIT;\n if (!(retriedAttempts < reconnectLimit)) return [3 /*break*/, 5];\n nextReconnectInterval = typeof optionsRef.current.reconnectInterval === 'function' ?\n optionsRef.current.reconnectInterval(retriedAttempts) :\n optionsRef.current.reconnectInterval;\n return [4 /*yield*/, waitFor(nextReconnectInterval !== null && nextReconnectInterval !== void 0 ? nextReconnectInterval : constants_1.DEFAULT_RECONNECT_INTERVAL_MS)];\n case 4:\n _d.sent();\n return [2 /*return*/, (0, exports.getUrl)(url, optionsRef, retriedAttempts + 1)];\n case 5:\n (_c = (_b = optionsRef.current).onReconnectStop) === null || _c === void 0 ? void 0 : _c.call(_b, retriedAttempts);\n return [2 /*return*/, null];\n case 6: return [3 /*break*/, 8];\n case 7: return [2 /*return*/, null];\n case 8: return [3 /*break*/, 9];\n case 9: return [3 /*break*/, 11];\n case 10:\n convertedUrl = url;\n _d.label = 11;\n case 11:\n parsedUrl = optionsRef.current.fromSocketIO ?\n (0, socket_io_1.parseSocketIOUrl)(convertedUrl) :\n convertedUrl;\n parsedWithQueryParams = optionsRef.current.queryParams ?\n (0, socket_io_1.appendQueryParams)(parsedUrl, optionsRef.current.queryParams) :\n parsedUrl;\n return [2 /*return*/, parsedWithQueryParams];\n }\n });\n });\n};\nexports.getUrl = getUrl;\n//# sourceMappingURL=get-url.js.map\n\n//# sourceURL=webpack://VamChatbot/./node_modules/react-use-websocket/dist/lib/get-url.js?");
|
|
414
|
-
|
|
415
|
-
/***/ }),
|
|
416
|
-
|
|
417
|
-
/***/ "./node_modules/react-use-websocket/dist/lib/globals.js":
|
|
418
|
-
/*!**************************************************************!*\
|
|
419
|
-
!*** ./node_modules/react-use-websocket/dist/lib/globals.js ***!
|
|
420
|
-
\**************************************************************/
|
|
421
|
-
/***/ ((__unused_webpack_module, exports) => {
|
|
422
|
-
|
|
423
|
-
"use strict";
|
|
424
|
-
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.resetWebSockets = exports.sharedWebSockets = void 0;\nexports.sharedWebSockets = {};\nvar resetWebSockets = function (url) {\n if (url && exports.sharedWebSockets.hasOwnProperty(url)) {\n delete exports.sharedWebSockets[url];\n }\n else {\n for (var url_1 in exports.sharedWebSockets) {\n if (exports.sharedWebSockets.hasOwnProperty(url_1)) {\n delete exports.sharedWebSockets[url_1];\n }\n }\n }\n};\nexports.resetWebSockets = resetWebSockets;\n//# sourceMappingURL=globals.js.map\n\n//# sourceURL=webpack://VamChatbot/./node_modules/react-use-websocket/dist/lib/globals.js?");
|
|
425
|
-
|
|
426
|
-
/***/ }),
|
|
427
|
-
|
|
428
|
-
/***/ "./node_modules/react-use-websocket/dist/lib/heartbeat.js":
|
|
429
|
-
/*!****************************************************************!*\
|
|
430
|
-
!*** ./node_modules/react-use-websocket/dist/lib/heartbeat.js ***!
|
|
431
|
-
\****************************************************************/
|
|
432
|
-
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
433
|
-
|
|
434
|
-
"use strict";
|
|
435
|
-
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.heartbeat = void 0;\nvar constants_1 = __webpack_require__(/*! ./constants */ \"./node_modules/react-use-websocket/dist/lib/constants.js\");\nfunction heartbeat(ws, options) {\n var _a = options || {}, _b = _a.interval, interval = _b === void 0 ? constants_1.DEFAULT_HEARTBEAT.interval : _b, _c = _a.timeout, timeout = _c === void 0 ? constants_1.DEFAULT_HEARTBEAT.timeout : _c, _d = _a.message, message = _d === void 0 ? constants_1.DEFAULT_HEARTBEAT.message : _d;\n var messageAccepted = false;\n var pingTimer = setInterval(function () {\n try {\n if (typeof message === 'function') {\n ws.send(message());\n }\n else {\n ws.send(message);\n }\n }\n catch (error) {\n // do nothing\n }\n }, interval);\n var timeoutTimer = setInterval(function () {\n if (!messageAccepted) {\n ws.close();\n }\n else {\n messageAccepted = false;\n }\n }, timeout);\n ws.addEventListener(\"close\", function () {\n clearInterval(pingTimer);\n clearInterval(timeoutTimer);\n });\n return function () {\n messageAccepted = true;\n };\n}\nexports.heartbeat = heartbeat;\n//# sourceMappingURL=heartbeat.js.map\n\n//# sourceURL=webpack://VamChatbot/./node_modules/react-use-websocket/dist/lib/heartbeat.js?");
|
|
436
|
-
|
|
437
|
-
/***/ }),
|
|
438
|
-
|
|
439
|
-
/***/ "./node_modules/react-use-websocket/dist/lib/manage-subscribers.js":
|
|
440
|
-
/*!*************************************************************************!*\
|
|
441
|
-
!*** ./node_modules/react-use-websocket/dist/lib/manage-subscribers.js ***!
|
|
442
|
-
\*************************************************************************/
|
|
443
|
-
/***/ ((__unused_webpack_module, exports) => {
|
|
444
|
-
|
|
445
|
-
"use strict";
|
|
446
|
-
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.resetSubscribers = exports.removeSubscriber = exports.addSubscriber = exports.hasSubscribers = exports.getSubscribers = void 0;\nvar subscribers = {};\nvar EMPTY_LIST = [];\nvar getSubscribers = function (url) {\n if ((0, exports.hasSubscribers)(url)) {\n return Array.from(subscribers[url]);\n }\n return EMPTY_LIST;\n};\nexports.getSubscribers = getSubscribers;\nvar hasSubscribers = function (url) {\n var _a;\n return ((_a = subscribers[url]) === null || _a === void 0 ? void 0 : _a.size) > 0;\n};\nexports.hasSubscribers = hasSubscribers;\nvar addSubscriber = function (url, subscriber) {\n subscribers[url] = subscribers[url] || new Set();\n subscribers[url].add(subscriber);\n};\nexports.addSubscriber = addSubscriber;\nvar removeSubscriber = function (url, subscriber) {\n subscribers[url].delete(subscriber);\n};\nexports.removeSubscriber = removeSubscriber;\nvar resetSubscribers = function (url) {\n if (url && subscribers.hasOwnProperty(url)) {\n delete subscribers[url];\n }\n else {\n for (var url_1 in subscribers) {\n if (subscribers.hasOwnProperty(url_1)) {\n delete subscribers[url_1];\n }\n }\n }\n};\nexports.resetSubscribers = resetSubscribers;\n//# sourceMappingURL=manage-subscribers.js.map\n\n//# sourceURL=webpack://VamChatbot/./node_modules/react-use-websocket/dist/lib/manage-subscribers.js?");
|
|
447
|
-
|
|
448
|
-
/***/ }),
|
|
449
|
-
|
|
450
|
-
/***/ "./node_modules/react-use-websocket/dist/lib/proxy.js":
|
|
451
|
-
/*!************************************************************!*\
|
|
452
|
-
!*** ./node_modules/react-use-websocket/dist/lib/proxy.js ***!
|
|
453
|
-
\************************************************************/
|
|
454
|
-
/***/ ((__unused_webpack_module, exports) => {
|
|
455
|
-
|
|
456
|
-
"use strict";
|
|
457
|
-
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.websocketWrapper = void 0;\nvar websocketWrapper = function (webSocket, start) {\n return new Proxy(webSocket, {\n get: function (obj, key) {\n var val = obj[key];\n if (key === 'reconnect')\n return start;\n if (typeof val === 'function') {\n console.error('Calling methods directly on the websocket is not supported at this moment. You must use the methods returned by useWebSocket.');\n //Prevent error thrown by invoking a non-function\n return function () { };\n }\n else {\n return val;\n }\n },\n set: function (obj, key, val) {\n if (/^on/.test(key)) {\n console.warn('The websocket\\'s event handlers should be defined through the options object passed into useWebSocket.');\n return false;\n }\n else {\n obj[key] = val;\n return true;\n }\n },\n });\n};\nexports.websocketWrapper = websocketWrapper;\nexports[\"default\"] = exports.websocketWrapper;\n//# sourceMappingURL=proxy.js.map\n\n//# sourceURL=webpack://VamChatbot/./node_modules/react-use-websocket/dist/lib/proxy.js?");
|
|
458
|
-
|
|
459
|
-
/***/ }),
|
|
460
|
-
|
|
461
|
-
/***/ "./node_modules/react-use-websocket/dist/lib/socket-io.js":
|
|
462
|
-
/*!****************************************************************!*\
|
|
463
|
-
!*** ./node_modules/react-use-websocket/dist/lib/socket-io.js ***!
|
|
464
|
-
\****************************************************************/
|
|
465
|
-
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
466
|
-
|
|
467
|
-
"use strict";
|
|
468
|
-
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.setUpSocketIOPing = exports.appendQueryParams = exports.parseSocketIOUrl = void 0;\nvar constants_1 = __webpack_require__(/*! ./constants */ \"./node_modules/react-use-websocket/dist/lib/constants.js\");\nvar parseSocketIOUrl = function (url) {\n if (url) {\n var isSecure = /^https|wss/.test(url);\n var strippedProtocol = url.replace(/^(https?|wss?)(:\\/\\/)?/, '');\n var removedFinalBackSlack = strippedProtocol.replace(/\\/$/, '');\n var protocol = isSecure ? 'wss' : 'ws';\n return \"\".concat(protocol, \"://\").concat(removedFinalBackSlack).concat(constants_1.SOCKET_IO_PATH);\n }\n else if (url === '') {\n var isSecure = /^https/.test(window.location.protocol);\n var protocol = isSecure ? 'wss' : 'ws';\n var port = window.location.port ? \":\".concat(window.location.port) : '';\n return \"\".concat(protocol, \"://\").concat(window.location.hostname).concat(port).concat(constants_1.SOCKET_IO_PATH);\n }\n return url;\n};\nexports.parseSocketIOUrl = parseSocketIOUrl;\nvar appendQueryParams = function (url, params) {\n if (params === void 0) { params = {}; }\n var hasParamsRegex = /\\?([\\w]+=[\\w]+)/;\n var alreadyHasParams = hasParamsRegex.test(url);\n var stringified = \"\".concat(Object.entries(params).reduce(function (next, _a) {\n var key = _a[0], value = _a[1];\n return next + \"\".concat(key, \"=\").concat(value, \"&\");\n }, '').slice(0, -1));\n return \"\".concat(url).concat(alreadyHasParams ? '&' : '?').concat(stringified);\n};\nexports.appendQueryParams = appendQueryParams;\nvar setUpSocketIOPing = function (sendMessage, interval) {\n if (interval === void 0) { interval = constants_1.SOCKET_IO_PING_INTERVAL; }\n var ping = function () { return sendMessage(constants_1.SOCKET_IO_PING_CODE); };\n return window.setInterval(ping, interval);\n};\nexports.setUpSocketIOPing = setUpSocketIOPing;\n//# sourceMappingURL=socket-io.js.map\n\n//# sourceURL=webpack://VamChatbot/./node_modules/react-use-websocket/dist/lib/socket-io.js?");
|
|
469
|
-
|
|
470
|
-
/***/ }),
|
|
471
|
-
|
|
472
|
-
/***/ "./node_modules/react-use-websocket/dist/lib/use-event-source.js":
|
|
473
|
-
/*!***********************************************************************!*\
|
|
474
|
-
!*** ./node_modules/react-use-websocket/dist/lib/use-event-source.js ***!
|
|
475
|
-
\***********************************************************************/
|
|
476
|
-
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
477
|
-
|
|
478
|
-
"use strict";
|
|
479
|
-
eval("\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.useEventSource = void 0;\nvar react_1 = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\nvar use_websocket_1 = __webpack_require__(/*! ./use-websocket */ \"./node_modules/react-use-websocket/dist/lib/use-websocket.js\");\nvar constants_1 = __webpack_require__(/*! ./constants */ \"./node_modules/react-use-websocket/dist/lib/constants.js\");\nvar useEventSource = function (url, _a, connect) {\n if (_a === void 0) { _a = constants_1.DEFAULT_EVENT_SOURCE_OPTIONS; }\n var withCredentials = _a.withCredentials, events = _a.events, options = __rest(_a, [\"withCredentials\", \"events\"]);\n if (connect === void 0) { connect = true; }\n var optionsWithEventSource = __assign(__assign({}, options), { eventSourceOptions: {\n withCredentials: withCredentials,\n } });\n var eventsRef = (0, react_1.useRef)(constants_1.EMPTY_EVENT_HANDLERS);\n if (events) {\n eventsRef.current = events;\n }\n var _b = (0, use_websocket_1.useWebSocket)(url, optionsWithEventSource, connect), lastMessage = _b.lastMessage, readyState = _b.readyState, getWebSocket = _b.getWebSocket;\n (0, react_1.useEffect)(function () {\n if (lastMessage === null || lastMessage === void 0 ? void 0 : lastMessage.type) {\n Object.entries(eventsRef.current).forEach(function (_a) {\n var type = _a[0], handler = _a[1];\n if (type === lastMessage.type) {\n handler(lastMessage);\n }\n });\n }\n }, [lastMessage]);\n return {\n lastEvent: lastMessage,\n readyState: readyState,\n getEventSource: getWebSocket,\n };\n};\nexports.useEventSource = useEventSource;\n//# sourceMappingURL=use-event-source.js.map\n\n//# sourceURL=webpack://VamChatbot/./node_modules/react-use-websocket/dist/lib/use-event-source.js?");
|
|
480
|
-
|
|
481
|
-
/***/ }),
|
|
482
|
-
|
|
483
|
-
/***/ "./node_modules/react-use-websocket/dist/lib/use-socket-io.js":
|
|
484
|
-
/*!********************************************************************!*\
|
|
485
|
-
!*** ./node_modules/react-use-websocket/dist/lib/use-socket-io.js ***!
|
|
486
|
-
\********************************************************************/
|
|
487
|
-
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
488
|
-
|
|
489
|
-
"use strict";
|
|
490
|
-
eval("\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.useSocketIO = void 0;\nvar react_1 = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\nvar use_websocket_1 = __webpack_require__(/*! ./use-websocket */ \"./node_modules/react-use-websocket/dist/lib/use-websocket.js\");\nvar constants_1 = __webpack_require__(/*! ./constants */ \"./node_modules/react-use-websocket/dist/lib/constants.js\");\nvar emptyEvent = {\n type: 'empty',\n payload: null,\n};\nvar getSocketData = function (event) {\n if (!event || !event.data) {\n return emptyEvent;\n }\n var match = event.data.match(/\\[.*]/);\n if (!match) {\n return emptyEvent;\n }\n var data = JSON.parse(match);\n if (!Array.isArray(data) || !data[1]) {\n return emptyEvent;\n }\n return {\n type: data[0],\n payload: data[1],\n };\n};\nvar useSocketIO = function (url, options, connect) {\n if (options === void 0) { options = constants_1.DEFAULT_OPTIONS; }\n if (connect === void 0) { connect = true; }\n var optionsWithSocketIO = (0, react_1.useMemo)(function () { return (__assign(__assign({}, options), { fromSocketIO: true })); }, []);\n var _a = (0, use_websocket_1.useWebSocket)(url, optionsWithSocketIO, connect), sendMessage = _a.sendMessage, sendJsonMessage = _a.sendJsonMessage, lastMessage = _a.lastMessage, readyState = _a.readyState, getWebSocket = _a.getWebSocket;\n var socketIOLastMessage = (0, react_1.useMemo)(function () {\n return getSocketData(lastMessage);\n }, [lastMessage]);\n return {\n sendMessage: sendMessage,\n sendJsonMessage: sendJsonMessage,\n lastMessage: socketIOLastMessage,\n lastJsonMessage: socketIOLastMessage,\n readyState: readyState,\n getWebSocket: getWebSocket,\n };\n};\nexports.useSocketIO = useSocketIO;\n//# sourceMappingURL=use-socket-io.js.map\n\n//# sourceURL=webpack://VamChatbot/./node_modules/react-use-websocket/dist/lib/use-socket-io.js?");
|
|
491
|
-
|
|
492
|
-
/***/ }),
|
|
493
|
-
|
|
494
|
-
/***/ "./node_modules/react-use-websocket/dist/lib/use-websocket.js":
|
|
495
|
-
/*!********************************************************************!*\
|
|
496
|
-
!*** ./node_modules/react-use-websocket/dist/lib/use-websocket.js ***!
|
|
497
|
-
\********************************************************************/
|
|
498
|
-
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
499
|
-
|
|
500
|
-
"use strict";
|
|
501
|
-
eval("\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.useWebSocket = void 0;\nvar react_1 = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\nvar react_dom_1 = __webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\");\nvar constants_1 = __webpack_require__(/*! ./constants */ \"./node_modules/react-use-websocket/dist/lib/constants.js\");\nvar create_or_join_1 = __webpack_require__(/*! ./create-or-join */ \"./node_modules/react-use-websocket/dist/lib/create-or-join.js\");\nvar get_url_1 = __webpack_require__(/*! ./get-url */ \"./node_modules/react-use-websocket/dist/lib/get-url.js\");\nvar proxy_1 = __importDefault(__webpack_require__(/*! ./proxy */ \"./node_modules/react-use-websocket/dist/lib/proxy.js\"));\nvar util_1 = __webpack_require__(/*! ./util */ \"./node_modules/react-use-websocket/dist/lib/util.js\");\nvar useWebSocket = function (url, options, connect) {\n if (options === void 0) { options = constants_1.DEFAULT_OPTIONS; }\n if (connect === void 0) { connect = true; }\n var _a = (0, react_1.useState)(null), lastMessage = _a[0], setLastMessage = _a[1];\n var _b = (0, react_1.useState)({}), readyState = _b[0], setReadyState = _b[1];\n var lastJsonMessage = (0, react_1.useMemo)(function () {\n if (lastMessage) {\n try {\n return JSON.parse(lastMessage.data);\n }\n catch (e) {\n return constants_1.UNPARSABLE_JSON_OBJECT;\n }\n }\n return null;\n }, [lastMessage]);\n var convertedUrl = (0, react_1.useRef)(null);\n var webSocketRef = (0, react_1.useRef)(null);\n var startRef = (0, react_1.useRef)(function () { return void 0; });\n var reconnectCount = (0, react_1.useRef)(0);\n var messageQueue = (0, react_1.useRef)([]);\n var webSocketProxy = (0, react_1.useRef)(null);\n var optionsCache = (0, react_1.useRef)(options);\n optionsCache.current = options;\n var readyStateFromUrl = convertedUrl.current && readyState[convertedUrl.current] !== undefined ?\n readyState[convertedUrl.current] :\n url !== null && connect === true ?\n constants_1.ReadyState.CONNECTING :\n constants_1.ReadyState.UNINSTANTIATED;\n var stringifiedQueryParams = options.queryParams ? JSON.stringify(options.queryParams) : null;\n var sendMessage = (0, react_1.useCallback)(function (message, keep) {\n var _a;\n if (keep === void 0) { keep = true; }\n if (constants_1.isEventSourceSupported && webSocketRef.current instanceof EventSource) {\n console.warn('Unable to send a message from an eventSource');\n return;\n }\n if (((_a = webSocketRef.current) === null || _a === void 0 ? void 0 : _a.readyState) === constants_1.ReadyState.OPEN) {\n (0, util_1.assertIsWebSocket)(webSocketRef.current, optionsCache.current.skipAssert);\n webSocketRef.current.send(message);\n }\n else if (keep) {\n messageQueue.current.push(message);\n }\n }, []);\n var sendJsonMessage = (0, react_1.useCallback)(function (message, keep) {\n if (keep === void 0) { keep = true; }\n sendMessage(JSON.stringify(message), keep);\n }, [sendMessage]);\n var getWebSocket = (0, react_1.useCallback)(function () {\n if (optionsCache.current.share !== true || (constants_1.isEventSourceSupported && webSocketRef.current instanceof EventSource)) {\n return webSocketRef.current;\n }\n if (webSocketProxy.current === null && webSocketRef.current) {\n (0, util_1.assertIsWebSocket)(webSocketRef.current, optionsCache.current.skipAssert);\n webSocketProxy.current = (0, proxy_1.default)(webSocketRef.current, startRef);\n }\n return webSocketProxy.current;\n }, []);\n (0, react_1.useEffect)(function () {\n if (url !== null && connect === true) {\n var removeListeners_1;\n var expectClose_1 = false;\n var createOrJoin_1 = true;\n var start_1 = function () { return __awaiter(void 0, void 0, void 0, function () {\n var _a, protectedSetLastMessage, protectedSetReadyState;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = convertedUrl;\n return [4 /*yield*/, (0, get_url_1.getUrl)(url, optionsCache)];\n case 1:\n _a.current = _b.sent();\n if (convertedUrl.current === null) {\n console.error('Failed to get a valid URL. WebSocket connection aborted.');\n convertedUrl.current = 'ABORTED';\n (0, react_dom_1.flushSync)(function () { return setReadyState(function (prev) { return (__assign(__assign({}, prev), { ABORTED: constants_1.ReadyState.CLOSED })); }); });\n return [2 /*return*/];\n }\n protectedSetLastMessage = function (message) {\n if (!expectClose_1) {\n (0, react_dom_1.flushSync)(function () { return setLastMessage(message); });\n }\n };\n protectedSetReadyState = function (state) {\n if (!expectClose_1) {\n (0, react_dom_1.flushSync)(function () { return setReadyState(function (prev) {\n var _a;\n return (__assign(__assign({}, prev), (convertedUrl.current && (_a = {}, _a[convertedUrl.current] = state, _a))));\n }); });\n }\n };\n if (createOrJoin_1) {\n removeListeners_1 = (0, create_or_join_1.createOrJoinSocket)(webSocketRef, convertedUrl.current, protectedSetReadyState, optionsCache, protectedSetLastMessage, startRef, reconnectCount, sendMessage);\n }\n return [2 /*return*/];\n }\n });\n }); };\n startRef.current = function () {\n if (!expectClose_1) {\n if (webSocketProxy.current)\n webSocketProxy.current = null;\n removeListeners_1 === null || removeListeners_1 === void 0 ? void 0 : removeListeners_1();\n start_1();\n }\n };\n start_1();\n return function () {\n expectClose_1 = true;\n createOrJoin_1 = false;\n if (webSocketProxy.current)\n webSocketProxy.current = null;\n removeListeners_1 === null || removeListeners_1 === void 0 ? void 0 : removeListeners_1();\n setLastMessage(null);\n };\n }\n else if (url === null || connect === false) {\n reconnectCount.current = 0; // reset reconnection attempts\n setReadyState(function (prev) {\n var _a;\n return (__assign(__assign({}, prev), (convertedUrl.current && (_a = {}, _a[convertedUrl.current] = constants_1.ReadyState.CLOSED, _a))));\n });\n }\n }, [url, connect, stringifiedQueryParams, sendMessage]);\n (0, react_1.useEffect)(function () {\n if (readyStateFromUrl === constants_1.ReadyState.OPEN) {\n messageQueue.current.splice(0).forEach(function (message) {\n sendMessage(message);\n });\n }\n }, [readyStateFromUrl]);\n return {\n sendMessage: sendMessage,\n sendJsonMessage: sendJsonMessage,\n lastMessage: lastMessage,\n lastJsonMessage: lastJsonMessage,\n readyState: readyStateFromUrl,\n getWebSocket: getWebSocket,\n };\n};\nexports.useWebSocket = useWebSocket;\n//# sourceMappingURL=use-websocket.js.map\n\n//# sourceURL=webpack://VamChatbot/./node_modules/react-use-websocket/dist/lib/use-websocket.js?");
|
|
502
|
-
|
|
503
|
-
/***/ }),
|
|
504
|
-
|
|
505
|
-
/***/ "./node_modules/react-use-websocket/dist/lib/util.js":
|
|
506
|
-
/*!***********************************************************!*\
|
|
507
|
-
!*** ./node_modules/react-use-websocket/dist/lib/util.js ***!
|
|
508
|
-
\***********************************************************/
|
|
509
|
-
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
510
|
-
|
|
511
|
-
"use strict";
|
|
512
|
-
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.resetGlobalState = exports.assertIsWebSocket = void 0;\nvar globals_1 = __webpack_require__(/*! ./globals */ \"./node_modules/react-use-websocket/dist/lib/globals.js\");\nvar manage_subscribers_1 = __webpack_require__(/*! ./manage-subscribers */ \"./node_modules/react-use-websocket/dist/lib/manage-subscribers.js\");\nfunction assertIsWebSocket(webSocketInstance, skip) {\n if (!skip && webSocketInstance instanceof WebSocket === false)\n throw new Error('');\n}\nexports.assertIsWebSocket = assertIsWebSocket;\n;\nfunction resetGlobalState(url) {\n (0, manage_subscribers_1.resetSubscribers)(url);\n (0, globals_1.resetWebSockets)(url);\n}\nexports.resetGlobalState = resetGlobalState;\n;\n//# sourceMappingURL=util.js.map\n\n//# sourceURL=webpack://VamChatbot/./node_modules/react-use-websocket/dist/lib/util.js?");
|
|
513
|
-
|
|
514
|
-
/***/ }),
|
|
515
|
-
|
|
516
351
|
/***/ "./node_modules/react/cjs/react-jsx-runtime.development.js":
|
|
517
352
|
/*!*****************************************************************!*\
|
|
518
353
|
!*** ./node_modules/react/cjs/react-jsx-runtime.development.js ***!
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vamlabs/vam-chatbot",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.70",
|
|
4
4
|
"main": "dist/web-component.js",
|
|
5
5
|
"description": "VAM Chatbot Web Component",
|
|
6
6
|
"files": [
|
|
@@ -14,8 +14,7 @@
|
|
|
14
14
|
"framer-motion": "^11.3.8",
|
|
15
15
|
"marked": "^13.0.3",
|
|
16
16
|
"react": "^18.3.1",
|
|
17
|
-
"react-dom": "^18.3.1"
|
|
18
|
-
"react-use-websocket": "^4.8.1"
|
|
17
|
+
"react-dom": "^18.3.1"
|
|
19
18
|
},
|
|
20
19
|
"scripts": {
|
|
21
20
|
"build:chatbot-dev": "webpack --config webpack.config.js --mode development",
|