ai12z 3.0.13 → 3.0.15
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/dist/cjs/ai12z-bot_12.cjs.entry.js +1 -1
- package/dist/cjs/{ai12z-search-panel-5fa6b9fc.js → ai12z-search-panel-a6ce2627.js} +21 -6
- package/dist/cjs/ai12z-search-panel-a6ce2627.js.map +1 -0
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/library.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/components/ai12z-bot/ai12z-bot.js +23 -7
- package/dist/collection/components/ai12z-bot/ai12z-bot.js.map +1 -1
- package/dist/esm/ai12z-bot_12.entry.js +4 -4
- package/dist/esm/{ai12z-inline-search-d046e41f.js → ai12z-inline-search-742ea5aa.js} +3 -3
- package/dist/esm/{ai12z-inline-search-d046e41f.js.map → ai12z-inline-search-742ea5aa.js.map} +1 -1
- package/dist/esm/ai12z-inline-search.entry.js +3 -3
- package/dist/esm/{ai12z-knowledge-box-84c06d7b.js → ai12z-knowledge-box-61edd1b8.js} +2 -2
- package/dist/esm/{ai12z-knowledge-box-84c06d7b.js.map → ai12z-knowledge-box-61edd1b8.js.map} +1 -1
- package/dist/esm/ai12z-knowledge-box.entry.js +2 -2
- package/dist/esm/{ai12z-search-panel-fe7c8f83.js → ai12z-search-panel-d7df7043.js} +24 -9
- package/dist/esm/ai12z-search-panel-d7df7043.js.map +1 -0
- package/dist/esm/index.js +6 -6
- package/dist/esm/library.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/search-results-page.entry.js +3 -3
- package/dist/esm/{search-results-view-239a5088.js → search-results-view-832ccc50.js} +3 -3
- package/dist/esm/{search-results-view-239a5088.js.map → search-results-view-832ccc50.js.map} +1 -1
- package/dist/esm/{socket-service-a7dc24ef.js → socket-service-9c7e7bfc.js} +2 -2
- package/dist/esm/{socket-service-a7dc24ef.js.map → socket-service-9c7e7bfc.js.map} +1 -1
- package/dist/esm/{utils-76c67168.js → utils-61923ae6.js} +2 -2
- package/dist/esm/{utils-76c67168.js.map → utils-61923ae6.js.map} +1 -1
- package/dist/library/index.esm.js +1 -1
- package/dist/library/library.esm.js +1 -1
- package/dist/library/library.esm.js.map +1 -1
- package/dist/library/p-4a5123de.entry.js +2 -0
- package/dist/library/{p-3d69bc82.js → p-599eee15.js} +2 -2
- package/dist/library/{p-7dfd6e9b.js → p-5c620570.js} +2 -2
- package/dist/library/p-6433707a.entry.js +2 -0
- package/dist/library/{p-0df5c0b4.js → p-8d25d927.js} +2 -2
- package/dist/library/{p-0df5c0b4.js.map → p-8d25d927.js.map} +1 -1
- package/dist/library/{p-4660d823.js → p-9e3df302.js} +2 -2
- package/dist/library/{p-95e055ba.entry.js → p-b3a2de8d.entry.js} +2 -2
- package/dist/library/{p-cfac4c14.js → p-bcf74d74.js} +2 -2
- package/dist/library/{p-75377ae8.js → p-e49a0ab7.js} +2 -2
- package/dist/library/p-eb9ee526.entry.js +2 -0
- package/dist/types/components/ai12z-bot/ai12z-bot.d.ts +1 -0
- package/package.json +2 -2
- package/dist/cjs/ai12z-search-panel-5fa6b9fc.js.map +0 -1
- package/dist/esm/ai12z-search-panel-fe7c8f83.js.map +0 -1
- package/dist/library/p-89e108df.entry.js +0 -2
- package/dist/library/p-b9015ffe.entry.js +0 -2
- package/dist/library/p-f00223ec.entry.js +0 -2
- /package/dist/library/{p-89e108df.entry.js.map → p-4a5123de.entry.js.map} +0 -0
- /package/dist/library/{p-3d69bc82.js.map → p-599eee15.js.map} +0 -0
- /package/dist/library/{p-7dfd6e9b.js.map → p-5c620570.js.map} +0 -0
- /package/dist/library/{p-b9015ffe.entry.js.map → p-6433707a.entry.js.map} +0 -0
- /package/dist/library/{p-4660d823.js.map → p-9e3df302.js.map} +0 -0
- /package/dist/library/{p-95e055ba.entry.js.map → p-b3a2de8d.entry.js.map} +0 -0
- /package/dist/library/{p-cfac4c14.js.map → p-bcf74d74.js.map} +0 -0
- /package/dist/library/{p-75377ae8.js.map → p-e49a0ab7.js.map} +0 -0
- /package/dist/library/{p-f00223ec.entry.js.map → p-eb9ee526.entry.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai12z-bot.js","sourceRoot":"","sources":["../../../src/components/ai12z-bot/ai12z-bot.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, h, State, Prop, Element, Watch, Listen, Event, EventEmitter, Method, Env } from \"@stencil/core\"\nimport { io, Socket } from \"socket.io-client\"\nimport showdown from \"showdown\"\nimport { getEndpoint, generateUUID, updateButtonEvents, getConfig, getOrCreateVisitorId, getComponentByControlType, splitContent, getMetaInfo } from \"../../utils/utils\"\nimport Handlebars from \"handlebars\"\nimport { setBotElement } from \"../../utils/global-store\"\n// import $ from \"jquery\"\n// import { Model } from \"survey-jquery\"\n\n@Component({\n tag: \"ai12z-bot\",\n styleUrls: [\"./ai12z-bot.css\", \"../../global/tailwind.min.css\", \"../../global/survey.min.css\", \"./ai12z-chatbot.css\"],\n shadow: true,\n})\nexport class Ai12zBot {\n private cdnPath: string = \"https://cdn.ai12z.net/assets/bot\"\n @Element() el: HTMLElement\n\n @Prop({ reflect: true }) dataKey: string = Env.DATA_KEY || \"\"\n @Prop({ reflect: true }) dataMode: string = Env.DATA_MODE || \"prod\" // \"local\", \"dev\", or \"prod\"\n @Prop({ reflect: true }) configId: string\n @Prop({ reflect: true }) dataAttributes: string\n @Prop() excludeTags: Array<string> = []\n @Prop() includeTags: Array<string> = []\n\n // @Prop({ reflect: true }) type: string = \"v1\"\n\n @State() botSettings: any = {}\n @State() isOpen: boolean = false\n @State() isListening: boolean = false\n @State() showSubmit: boolean = false\n @State() hideAllButtons: boolean = false\n @State() showMenu: boolean = false\n\n @State() botlogo: string = this.cdnPath + `/v1/ai12z-bot/img/chatbot.jpg`\n @State() botAvatar: string = this.cdnPath + `/v1/ai12z-bot/img/chatbot.jpg`\n\n @State() showWelcomeScreen: boolean = true\n @State() hideInput: boolean = false\n @State() showHistory: boolean = false\n @State() conversationId: string = \"\"\n @State() surveyDomId: string = \"\"\n @State() searchResults: any = {}\n @State() buttons: Array<{ id: string; label: string }> = []\n @State() currentDomId: string = \"\"\n @State() messages: { text: string; isUser: boolean; id: string; timestamp: string; images: any[]; conversationId: string; formModel: any; surveyDomId: string }[] = [\n // { text: this.welcomeMessage === \"\" ? \"Hi there! How can I assist you today\" : this.welcomeMessage, isUser: false, id: `chatbot-${generateUUID()}`, timestamp: \"\", images: [] },\n ]\n @State() questionCounter: number = 0\n @State() isChatOpen: boolean = false\n @State() visitorID: string\n @State() timestamp: string = \"\"\n @State() rowCount = 1\n @State() isBot = false\n @State() conversationHistory = []\n @State() isMenuOpen: boolean = false\n @State() query: string = \"\"\n @State() scriptArray = []\n private timer: NodeJS.Timeout\n private inputEl!: HTMLTextAreaElement\n private uploadElem: HTMLInputElement\n private followUpElem: HTMLInputElement\n menuRef: HTMLElement\n menuV2Ref: HTMLElement\n plusIconRef: HTMLElement\n private socket: Socket\n imagesBase64List = []\n\n /* new ersion of bot */\n @State() isAnimated = false\n @State() isMinimized = false\n @State() isOpened = false\n @State() isContent = false\n @State() isExpanded = true\n @State() isToggled = false\n @State() showTextarea: boolean = false // Changing this will trigger a re-render\n @State() showPrivacy: boolean = false // Changing this will trigger a re-render\n @Event({\n eventName: \"messageSent\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n messageSent: EventEmitter\n @Event({\n eventName: \"messageReceived\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n messageReceived: EventEmitter\n\n @Event({\n eventName: \"close\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n close: EventEmitter\n\n @Event({\n eventName: \"open\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n open: EventEmitter\n\n @Event({\n eventName: \"minimize\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n minimize: EventEmitter\n\n @Event({\n eventName: \"errored\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n errored: EventEmitter\n\n @Event({\n eventName: \"formSubmitted\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n formSubmitted!: EventEmitter<any>\n\n toggleBox = () => {\n this.isOpen = !this.isOpen\n }\n\n toggleBot = e => {\n e.stopPropagation()\n this.isToggled = !this.isToggled\n }\n toggleListening = () => {\n this.isListening = !this.isListening\n }\n\n @Listen(\"buttonClick\")\n buttonClickHandler(event: CustomEvent) {\n this.showWelcomeScreen = false\n this.hideInput = false\n this.query = event.detail.action\n this.handleSend(event.detail.label)\n }\n\n @Listen(\"sendQueryToBot\")\n sendQueryToBotHandler(event: CustomEvent) {\n this.showWelcomeScreen = false\n this.hideInput = false\n this.query = event.detail\n this.handleSend(event.detail)\n }\n\n @Listen(\"deleteChatHistory\")\n deleteChatHistoryHandler(event: CustomEvent) {\n const chatHistory = this.getConversationHistory()\n const updatedHistory = chatHistory.filter(item => item.conversationId !== event.detail.conversationId)\n localStorage.setItem(`${this.visitorID}`, JSON.stringify(updatedHistory))\n this.conversationHistory = updatedHistory\n }\n\n @Listen(\"chatClick\")\n chatClickHandler(event: CustomEvent) {\n this.messages = event.detail\n this.showWelcomeScreen = false\n this.hideInput = false\n this.showHistory = false\n }\n\n @Listen(\"openChat\")\n openChatHandler(_event: CustomEvent) {\n // console.log(\"open chat event\", event)\n this.isChatOpen = true\n }\n\n @Listen(\"formComplete\")\n formSubmittedHandler(event: CustomEvent) {\n event.stopPropagation()\n // console.log(\"Form submitted\", event.detail)\n this.formSubmitted.emit(event.detail.data)\n }\n\n handleClickOutside(event: MouseEvent) {\n // Check if the clicked target is outside the menu\n const target = event.target as HTMLElement\n if (this.isMenuOpen && this.menuRef && !this.menuRef.contains(target)) {\n this.isMenuOpen = false\n }\n\n if (this.isToggled && this.menuV2Ref && !this.menuV2Ref.contains(target)) {\n // console.log(\"Clicked outside the menu, closing...\")\n this.isToggled = false\n }\n\n if (this.showMenu && this.plusIconRef && !this.plusIconRef.contains(target)) {\n this.showMenu = false\n }\n }\n\n componentDidLoad() {\n setBotElement(this.el) // register globally\n // console.log(\"Bot Settings getAssetPath\")\n this.updateScreenSize()\n window.addEventListener(\"resize\", this.updateScreenSize.bind(this))\n // debugger;\n document.addEventListener(\"click\", this.handleClickOutside.bind(this))\n // Load jQuery first\n const jQueryScript = document.createElement(\"script\")\n jQueryScript.src = this.cdnPath + \"/v1/jquery.min.js\" // Path relative to the www root\n jQueryScript.onload = () => {\n // console.log(\"jQuery loaded\")\n // Load the script that loads and exposes SurveyJS\n const loadSurveyScript = document.createElement(\"script\")\n loadSurveyScript.src = this.cdnPath + \"/v1/survey.jquery.min.js\" // Path relative to the www root\n loadSurveyScript.onload = () => {\n // console.log(\"SurveyJS loaded and SurveyModel exposed\")\n }\n loadSurveyScript.onerror = err => {\n console.error(\"Failed to load Forms:\", err)\n }\n document.head.appendChild(loadSurveyScript)\n this.el.shadowRoot.appendChild(loadSurveyScript)\n }\n jQueryScript.onerror = err => {\n console.error(\"Failed to load jQuery:\", err)\n }\n document.head.appendChild(jQueryScript)\n\n const ai12zHeading = document.createElement(\"script\")\n ai12zHeading.text = `\n var ai12zChat = window[\"ai12z\"] = {}\n `\n document.head.appendChild(ai12zHeading)\n this.el.shadowRoot.appendChild(ai12zHeading)\n this.el.shadowRoot.appendChild(jQueryScript)\n }\n\n disconnectedCallback() {\n // Remove event listener when component is destroyed\n document.removeEventListener(\"click\", this.handleClickOutside.bind(this))\n\n window.removeEventListener(\"resize\", this.updateScreenSize)\n\n // clearInterval(this.timer)\n }\n\n checkHistory = () => {\n const storedMessages = localStorage.getItem(`${this.visitorID}`)\n let chatHistory = []\n if (storedMessages) {\n chatHistory = JSON.parse(storedMessages)\n chatHistory = chatHistory.filter(item => item.projectId === this.botSettings?.pId)\n }\n this.showHistory = chatHistory.length > 0 && this.botSettings.botVersion === \"v1\" ? true : false\n // console.log(\"showHistory\", this.showHistory)\n }\n\n @Method()\n async sendMessage(message: string, displayText?: string) {\n this.query = message\n if (!this.isChatOpen) {\n this.isChatOpen = true\n }\n\n this.handleSend(displayText ?? message)\n }\n\n @Method()\n async sendQuery(query: string) {\n console.warn(\"sendQuery mehtdod is deprecated, use sendMessage instead\")\n this.handleSend(query)\n }\n\n @Method()\n async sendJSON(jsonData: Object, displayText: string) {\n this.query = JSON.stringify(jsonData)\n if (!this.isChatOpen) {\n this.isChatOpen = true\n }\n this.handleSend(displayText)\n }\n\n setLocalData() {\n const botData = { qCounter: this.questionCounter }\n localStorage.setItem(`ai12z-bot-data`, JSON.stringify(botData))\n }\n\n @Method()\n async openBot() {\n this.openChat()\n }\n\n @Method()\n async action(type) {\n // this.isChatOpen = !this.isChatOpen\n if (type === \"open\") {\n this.isChatOpen = true\n this.open.emit(\"open\")\n this.setLocalData()\n }\n if (type === \"minimize\") {\n this.isChatOpen = false\n this.minimize.emit(\"minimize\")\n }\n const getVisitorKey = localStorage.getItem(`ai12z-visitorId`)\n this.visitorID = \"ai12z-\" + getVisitorKey\n this.checkHistory()\n if (type === \"close\") {\n this.isChatOpen = false\n this.searchResults = {}\n this.surveyDomId = \"\"\n this.showWelcomeScreen = true\n this.showHistory = this.messages.length > 0 ? true : false\n // this.saveConversation()\n this.messages = [...[]]\n this.conversationId = \"\"\n this.close.emit(\"close\")\n clearInterval(this.timer)\n }\n }\n\n openChat() {\n this.isOpened = true\n this.isExpanded = false\n this.isMinimized = false\n this.isContent = false\n this.open.emit(\"open\")\n this.toggleTextarea()\n }\n\n private get mainObject(): any {\n if (!window[\"ai12z\"]) {\n window[\"ai12z\"] = {}\n }\n return window[\"ai12z\"]\n }\n\n toggleMenu(e) {\n e.stopPropagation()\n this.isMenuOpen = !this.isMenuOpen\n }\n\n adjustHeight() {\n if (this.inputEl) {\n this.inputEl.style.height = \"auto\"\n this.inputEl.style.height = this.inputEl.scrollHeight + \"px\"\n }\n }\n\n connectedCallback() {\n this.configBot()\n }\n\n componentWillLoad() {\n this.checkCustomSlot()\n this.timestamp = this.formatTimestamp(new Date())\n this.socketConnection()\n\n // this.configBot()\n }\n\n configBot() {\n const payload = {\n apiKey: this.dataKey,\n configId: this.configId,\n configType: \"bot\",\n }\n getConfig(payload, this.dataMode).then(data => {\n if (data) {\n // console.log(\"Bot Settings\", data)\n this.botSettings = data\n if (!this.botSettings.botVersion) {\n this.botSettings.botVersion = \"v1\" // Default to v1 if not specified\n }\n if (this.botSettings.botVersion === \"v2\" && !this.botSettings.isExpanded) {\n // this.botSettings.imageUpload = true\n this.isMinimized = true\n }\n if (!this.botSettings.linkTarget) {\n this.botSettings.linkTarget = \"_blank\"\n }\n if (this.botSettings.botVersion === \"v2\") {\n const getVisitorKey = localStorage.getItem(`ai12z-visitorId`)\n this.visitorID = \"ai12z-\" + getVisitorKey\n this.toggleTextarea()\n }\n if (this.botSettings.privacyTemplate && this.botSettings.privacyTemplate !== \"\") {\n this.showPrivacy = true\n }\n }\n })\n }\n\n checkCustomSlot() {\n const slot = this.el[\"children\"]\n let slotHasContent = slot && slot.length > 0\n if (slotHasContent) {\n for (var i = 0; i < slot.length; i++) {\n if (slot[i].tagName.toLowerCase() === \"bot\" || slot[i].getAttribute(\"slot\") === \"bot\") {\n this.isBot = true\n }\n }\n }\n }\n\n @Watch(\"currentDomId\")\n watchStateHandler(_newValue: boolean, _oldValue: boolean) {\n this.socket.off(\"response\")\n this.socket.off(\"end_response\")\n // console.log(\"currentDomId changed\")\n // console.log(\"questionCounter\", this.botSettings.maxQuestion)\n if (this.botSettings.maxQuestion === undefined || this.botSettings.maxQuestion === 0) {\n this.botSettings.maxQuestion = 0\n this.handleBotMessages()\n } else if (this.questionCounter <= this.botSettings.maxQuestion) {\n this.handleBotMessages()\n }\n }\n\n generateMessage() {\n return {\n text: \"\",\n isUser: false,\n id: `chatbot-${generateUUID()}`,\n timestamp: new Date().toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" }),\n images: [],\n conversationId: this.conversationId,\n formModel: {},\n surveyDomId: \"\",\n }\n }\n hideSpinner(chatData) {\n // Logic for hiding the spinner (assumed to return a Promise if async is needed)\n return new Promise(resolve => {\n const renderedBubble = this.el.shadowRoot.querySelector(`#${chatData.id}`)\n if (renderedBubble) {\n ;(renderedBubble.querySelector(\"#spinner\") as HTMLElement).style.display = \"none\"\n }\n // Assume some async action here, then resolve\n console.log(\"Spinner hidden\")\n resolve(true)\n })\n }\n\n async processTemplateData(chatData, data) {\n // Step 1: Hide the spinner\n await this.hideSpinner(chatData)\n let handletemplate\n let currentResponse\n\n if (data.controlType === \"template\") {\n const currentTemplate = data.controlData?.template\n currentResponse = data.controlData?.data.source\n handletemplate = Handlebars.compile(currentTemplate[0]?.content)\n }\n\n // Step 3: Append the control element if both it and the target container exist\n const targetContainer = this.el.shadowRoot.querySelector(`#${chatData.id}`)\n if (targetContainer) {\n Handlebars.registerHelper(\"processArray\", function (array) {\n if (!Array.isArray(array)) {\n return \"\" // Return an empty string if the input is not an array\n }\n return new Handlebars.SafeString(JSON.stringify(array))\n })\n // console.log(\"data\", data.controlData)\n if (data.controlData && data.controlData.data) {\n data.controlData.data.msgId = chatData.id //`msg-${chatData.id}`\n }\n targetContainer.innerHTML = handletemplate({ msgId: `${chatData.id}`, source: currentResponse, llm: data.controlData.data.llm })\n targetContainer.classList.add(\"overflow-x-auto\")\n targetContainer.classList.add(\"scroll-nobar\")\n setTimeout(() => {\n this.renderTemplateData(chatData)\n }, 1000)\n // Step 4: Wait until the control element is rendered\n await this.waitForElementRender(targetContainer as HTMLElement)\n\n // Step 5: Retrieve the content and emit the updated data\n chatData.text = targetContainer.innerHTML\n\n this.messages = this.messages.map(item => (item.id === chatData.id ? chatData : item))\n }\n }\n\n renderTemplateData(chatData) {\n // console.log(`#${chatData.id}`)\n\n if (!this.mainObject[`${chatData.id}`]) {\n this.mainObject[`${chatData.id}`] = {}\n }\n const scripts = this.el.shadowRoot.querySelectorAll(`#${chatData.id} script`)\n scripts.forEach(script => {\n const newScript = document.createElement(\"script\")\n newScript.type = \"text/javascript\"\n\n // If it's an external script (with `src`), copy the `src` attribute\n if ((script as HTMLScriptElement).src) {\n newScript.src = (script as HTMLScriptElement).src\n } else {\n // If it's inline, set the JavaScript code as the content of the new <script> element\n // newScript.innerHTML = `const source = ${JSON.stringify(chatData.data.source)};\\n`\n // newScript.innerHTML += `const llm = ${JSON.stringify(chatData.data.llm)};\\n`\n newScript.innerHTML += script.innerHTML\n }\n // Append the new script to the document body to execute it\n if (!newScript.src) {\n this.scriptArray.push(newScript)\n }\n script.parentNode?.removeChild(script)\n\n // Optionally, remove the old <script> tag from the DOM\n\n if (newScript.src && !this.el.shadowRoot.querySelector(`script[src=\"${newScript.src}\"]`)) {\n this.el.shadowRoot.appendChild(newScript)\n } else {\n const scriptDom = this.el.shadowRoot.querySelector(`script[type=\"text/javascript\"]`)\n // console.log(\"scriptDom\", scriptDom)\n // console.log(\"newScript\", newScript)\n if (scriptDom && !newScript.src) {\n console.log(\"scriptDom\", this.scriptArray)\n if (this.scriptArray.length > 0) {\n this.scriptArray.forEach(script => {\n if (!script.src && script.innerHTML !== newScript.innerHTML) {\n this.el.shadowRoot.appendChild(newScript)\n }\n })\n } else {\n // console.log(\"ele\", this.el.shadowRoot)\n this.el.shadowRoot.appendChild(newScript)\n }\n // this.el.shadowRoot.appendChild(newScript)\n } else {\n // console.log(\"scriptDom not found\")\n this.el.shadowRoot.appendChild(newScript)\n }\n }\n })\n // Step 4: Ensure Google Charts is loaded, then call the `drawGoogleChart` function\n setTimeout(() => {\n this.initializeScript(chatData.id)\n }, 1000)\n }\n\n initializeScript(id) {\n if (typeof this.mainObject[`${id}`][\"onLoadCallback\"] === \"function\") {\n this.mainObject[`${id}`][\"onLoadCallback\"]()\n }\n // window[\"google\"]?.charts.load(\"current\", { packages: [\"corechart\"] })\n // window[\"google\"]?.charts.setOnLoadCallback()\n }\n\n async processChatData(chatData, data) {\n // Step 1: Hide the spinner\n await this.hideSpinner(chatData)\n\n // Step 2: Get the control element based on control type\n const controlElement = getComponentByControlType(data, \"bot\")\n\n const tmpControlType = data.controlData?.data?.source?.carousel?.type\n\n // Step 3: Append the control element if both it and the target container exist\n const targetContainer = this.el.shadowRoot.querySelector(`#${chatData.id}`)\n if (targetContainer && controlElement) {\n // console.log(\"controlElement\", targetContainer)\n targetContainer.appendChild(controlElement)\n targetContainer[\"style\"].width = \"98%\"\n\n if (tmpControlType === \"custom\" || tmpControlType === \"list\" || tmpControlType === \"slider\") {\n targetContainer.classList.remove(\"p-2.5\")\n targetContainer.classList.add(\"p-0\")\n targetContainer.classList.add(\"md:p-2.5\")\n }\n\n // Step 4: Wait until the control element is rendered\n await this.waitForElementRender(targetContainer as HTMLElement)\n\n // Step 5: Retrieve the content and emit the updated data\n chatData.text = targetContainer.innerHTML\n this.messages = this.messages.map(item => (item.id === chatData.id ? chatData : item))\n }\n }\n\n // Helper function to detect when the target element is rendered\n waitForElementRender(element: HTMLElement) {\n return new Promise<void>(resolve => {\n const observer = new MutationObserver(_mutations => {\n resolve()\n observer.disconnect()\n })\n observer.observe(element, { childList: true, subtree: true })\n })\n }\n\n handleBotMessages() {\n // const domId = this.messages[this.messages.length - 1].id\n this.socket.on(\"response\", event => {\n this.handleMessage(event.data, `${this.currentDomId}`) // Use the unique ID to handle messages\n })\n this.socket.on(\"end_response\", data => {\n // console.log(\"end_response\")\n this.messageReceived.emit(data)\n const converter = new showdown.Converter()\n let finalHtml = converter.makeHtml(data.answer)\n // document.getElementById(\"messageId\").innerHTML = finalHtml;\n finalHtml = this.updateAnchorTags(finalHtml)\n finalHtml = updateButtonEvents(finalHtml).body\n this.buttons = updateButtonEvents(finalHtml).buttons\n this.searchResults = data\n this.conversationId = data.conversationId\n if (finalHtml.indexOf(\"[control\") > -1) {\n // console.log(\"controlType\", data.controlType)\n switch (data.controlType) {\n case \"form\":\n this.surveyDomId = \"surveyElement-\" + generateUUID()\n finalHtml = finalHtml.replace(RegExp(/\\[[^>]*]/gm), `<div id=${this.surveyDomId} style=\"width:${this.botSettings.botVersion === \"v1\" ? \"330px\" : \"100%\"}\"></div>`)\n // finalHtml = `<div id=${this.surveyDomId} style=\"width:${this.botSettings.botVersion === \"v1\" ? \"330px\" : \"100%\"}\"></div>`\n this.el.shadowRoot.querySelector(`#${this.currentDomId}`).innerHTML = finalHtml\n this.updateConversations(finalHtml, data)\n break\n case \"carousel\":\n case \"list\":\n case \"template\":\n if (data.controlType && data.controlType !== null) {\n const newContent = splitContent(finalHtml)\n finalHtml = newContent.before\n this.updateConversations(finalHtml, data)\n const newMessage = this.generateMessage()\n this.messages = [...this.messages, newMessage]\n setTimeout(() => {\n data.controlType === \"template\" ? this.processTemplateData(newMessage, data) : this.processChatData(newMessage, data)\n }, 2000)\n if (newContent.after.trim().length > 0) {\n const afterMessage = this.generateMessage()\n afterMessage.text = newContent.after\n this.messages = [...this.messages, afterMessage]\n setTimeout(() => {\n if (afterMessage.id) {\n const bubbleEle = this.el.shadowRoot.querySelector(`#${afterMessage.id}`)\n if (bubbleEle && (bubbleEle.querySelector(\"#spinner\") as HTMLElement)) {\n ;(bubbleEle.querySelector(\"#spinner\") as HTMLElement).style.display = \"none\"\n }\n }\n }, 500)\n }\n }\n }\n } else {\n const currentDomElement = this.el.shadowRoot.querySelector(`#${this.currentDomId}`) as HTMLElement\n if (currentDomElement) {\n currentDomElement.style.width = \"auto\"\n }\n this.el.shadowRoot.querySelector(`#${this.currentDomId}`).innerHTML = finalHtml\n this.updateConversations(finalHtml, data)\n }\n\n this.saveConversation()\n this.scrollToBottom()\n })\n }\n\n updateAnchorTags(htmlContent: string) {\n const parser = new DOMParser()\n const doc = parser.parseFromString(htmlContent, \"text/html\")\n const anchorTags = Array.from(doc.querySelectorAll(\"a\"))\n\n anchorTags.forEach(anchor => {\n // console.log(\"targtet\")\n anchor.setAttribute(\"target\", this.botSettings.linkTarget)\n anchor.classList.add(\"ai12z-link\")\n })\n\n // Update the htmlContent with the modified anchor tags\n return doc.body.innerHTML\n }\n\n updateConversations(finalHtml, data) {\n const updatedmsg = {\n id: this.currentDomId,\n text: finalHtml,\n isUser: false,\n timestamp: new Date().toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" }),\n images: [],\n conversationId: this.conversationId,\n formModel: data.controlData?.data?.source ?? data.controlData ?? {},\n surveyDomId: this.surveyDomId,\n }\n this.addEventListeners(`#${this.currentDomId}`)\n this.messages = this.messages.map(item => (item.id === this.currentDomId ? updatedmsg : item))\n }\n\n @Watch(\"surveyDomId\")\n watchSurveyDomIdHandler(_newValue: boolean, _oldValue: boolean) {\n setTimeout(() => {\n this.renderSurvey(this.searchResults)\n }, 1000)\n }\n\n alertResults = sender => {\n console.log(\"Survey results\", sender.keyName)\n this.formSubmitted.emit(sender.data)\n // console.log(\"survey results\", sender.jsonObj)\n // const results = JSON.stringify(sender.data)\n let results = JSON.parse(JSON.stringify(sender.data))\n results.description = sender.jsonObj.description ? sender.jsonObj.description : \"\"\n const completedHtml = sender.jsonObj.completedHtml ? sender.jsonObj.completedHtml : \"Thank You!\"\n const completeText = sender.jsonObj.completeText ? sender.jsonObj.completeText : \"Submit\"\n // Object.assign(results.data, { description: sender.jsonObj.description })\n // console.log(\"sender\", results)\n // const query = \"Here is the data you requested:\" + results\n // this.query = query\n const domId = sender.implementor.renderedElement.id\n // const surveyDataId = domId.replace(\"surveyElement-\", \"\")\n // sender.implementor.renderedElement.innerHTML = `<p><b>Thank you</b></p>`\n // console.log(\"messages\", this.messages)\n const idx = this.messages.findIndex(item => item.surveyDomId === domId)\n this.currentDomId = this.messages[idx].id\n this.surveyDomId = domId\n this.updateConversations(completedHtml, {})\n const jsonData = `This JSON is from a form submission [${sender.keyName}]: ${JSON.stringify(results, null, 2)}. There is no need to show the form [${sender.keyName}] again.`\n // this.sendJSON(results, completeText)\n this.sendMessage(jsonData, completeText)\n // const lastMessage = {\n // text: \"\",\n // isUser: false,\n // id: `chatbot-${generateUUID()}`,\n // timestamp: new Date().toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" }),\n // images: [],\n // conversationId: this.conversationId,\n // formModel: {},\n // surveyDomId: \"\",\n // }\n // this.currentDomId = lastMessage.id\n // this.surveyDomId = domId\n\n // if (idx === -1) {\n // // this.handleSubmit(null, query, \"survey-res\", false, null)\n // this.messages.splice(this.messages.length - 1, 1)\n // this.messages = [...this.messages, lastMessage]\n // } else {\n // this.messages = [...this.messages.slice(0, idx), lastMessage, ...this.messages.slice(idx + 1)]\n // }\n\n this.scrollToBottom()\n // this.invokeSocket()\n }\n\n renderSurvey = chat => {\n window[\"Survey\"].Serializer.addProperty(\"survey\", {\n name: \"keyName:string\",\n visible: false, // makes it appear in Survey Creator\n category: \"general\", // optional, groups the property\n default: \"\", // optional default value\n })\n let formModel = chat.controlData?.data?.source ?? chat.controlData\n if (typeof formModel === \"object\") {\n formModel.keyName = chat.keyName\n } else {\n formModel = JSON.parse(formModel)\n formModel.keyName = chat.keyName\n }\n const survey = new window[\"Survey\"].Model(formModel)\n if (this.surveyDomId === \"\") {\n return\n }\n const domELe = this.el.shadowRoot?.querySelector(`#${this.surveyDomId}`)\n if (domELe) {\n window[\"jQuery\"](domELe).Survey({ model: survey })\n } else {\n console.error(\"Survey Element not found\")\n }\n\n if (typeof chat.controlData?.data?.source == \"object\" || typeof chat.controlData === \"object\") {\n this.hideCompleteButton(chat.controlData?.data?.source ?? chat.controlData, survey)\n } else {\n this.hideCompleteButton(JSON.parse(chat.controlData?.data?.source ?? chat.controlData), survey)\n }\n // survey.completeText = \"Submit\"\n survey.showCompletedPage = false\n if (chat.theme) {\n survey.applyTheme(JSON.parse(chat.theme))\n }\n survey.onAfterRenderQuestionInput.add(function (_, options) {\n options.htmlElement.name = options.question.name\n })\n survey.onComplete.add(this.alertResults)\n }\n\n hideCompleteButton(form: any, survey) {\n survey.completeText = form?.completeText ?? \"Submit\"\n survey.completedHTML = form?.completedHtml ?? \"Thank You!\"\n if (form && form.pages) {\n form.pages.forEach((page: any) => {\n if (page.elements) {\n // console.log(\"page.elements\", page.elements)\n page.elements.forEach((element: any) => {\n if (element.type === \"html\") {\n if (element.html.includes(\"<iframe\")) {\n survey.showCompleteButton = false\n }\n }\n })\n }\n })\n }\n }\n\n addEventListeners(msgId) {\n const container = this.el.shadowRoot.querySelector(msgId)\n if (container) {\n this.buttons.forEach(button => {\n const buttonElement = container.querySelector(`#${button.id}`)\n if (buttonElement) {\n const originalCall = buttonElement.getAttribute(\"data-original-click\") // Ensure type safety or handle undefined\n if (!originalCall) {\n console.warn(`originalClickHandler is not defined for button with id: ${button.id}`)\n return\n }\n\n // const match = originalCall.match(/^(\\w+)\\s*\\((.*)\\)$/) // extract name and arguments\n const match = originalCall.match(/^(\\w+)\\s*\\(([\\s\\S]*)\\)$/)\n // console.log(\"match\", match)\n if (match) {\n const funcName = match[1]\n const argsStr = match[2] // string of args, like \"'param', true\"\n const self = this\n const func = self[funcName]\n buttonElement.addEventListener(\"click\", () => {\n if (typeof this[funcName] === \"function\") {\n try {\n // console.log(\"args\", argsStr)\n // Evaluate arguments safely\n switch (funcName) {\n case \"sendQuery\":\n const args = eval(`[${argsStr}]`)\n args[0] = button.label\n func.apply(self, args)\n break\n case \"sendMessage\":\n const msgArgs = eval(`[${argsStr}]`)\n func.apply(self, msgArgs)\n break\n\n case \"sendJSON\":\n const tempArgs = argsStr.match(/^'(.*?)'\\s*,\\s*'(.*?)'$/)\n\n const rawObjectStr = tempArgs[1]\n .replace(/([{,])\\s*(\\w+)\\s*:/g, '$1\"$2\":') // quote keys\n .replace(/:\\s*'([^']*)'/g, ': \"$1\"') // convert single to double quotes\n\n const parsedObj = JSON.parse(rawObjectStr)\n const jsonArgs = [parsedObj, tempArgs[2]]\n func.apply(self, jsonArgs)\n break\n }\n } catch (err) {\n console.error(`Error invoking ${funcName}:`, err)\n }\n } else {\n console.warn(`Function ${funcName} not found on this`)\n }\n })\n // buttonElement.addEventListener(\"click\", this.handleButtonClick(button.label))\n }\n }\n })\n }\n }\n\n handleButtonClick = (label: string) => (_event: Event) => {\n this.inputEl.value = label\n this.handleSend(label)\n }\n\n formatTimestamp(date: Date) {\n const today = new Date()\n today.setHours(0, 0, 0, 0)\n const options: Intl.DateTimeFormatOptions = {\n weekday: \"long\",\n hour: \"numeric\",\n minute: \"numeric\",\n hour12: true,\n }\n const formatter = new Intl.DateTimeFormat(\"en-US\", options)\n const formattedDate = formatter.format(date)\n\n if (date.toDateString() === today.toDateString()) {\n return `Today, ${formattedDate.split(\" \").slice(1).join(\" \")}`\n } else {\n return formattedDate\n }\n }\n\n async socketConnection() {\n let a12z_EndPoint = getEndpoint(this.dataMode)\n this.socket = io(a12z_EndPoint, { transports: [\"polling\"] })\n\n await new Promise<void>(resolve => {\n this.socket.on(\"connect\", () => {\n console.log(\"Connected to Socket.IO server\")\n resolve()\n })\n })\n\n this.socket.on(\"connect_error\", error => {\n this.errored.emit(error)\n console.error(\"Connection error:\", error)\n })\n\n this.socket.on(\"disconnect\", () => {\n console.log(\"Disconnected from Socket.IO server\")\n this.socket.off(\"response\")\n // Handle disconnection if needed\n })\n }\n\n invokeSocket() {\n const data = {\n apiKey: this.dataKey,\n query: this.query !== \"\" ? this.query : this.inputEl.value,\n conversationId: this.conversationId,\n event: \"evaluate_query\",\n attributes: this.dataAttributes,\n excludeTags: this.excludeTags,\n includeTags: this.includeTags,\n base64Images: this.imagesBase64List,\n meta: getMetaInfo(),\n }\n this.messageSent.emit(JSON.stringify(data))\n\n this.socket.emit(\"evaluate_query\", data, (error, _response) => {\n if (error) {\n this.errored.emit(error)\n console.error(\"Error:\", error)\n } else {\n // console.log(\"Response:\", response)\n }\n })\n // this.currentDomId = this.messages[this.messages.length - 1].id\n if (this.inputEl) {\n this.inputEl.value = \"\"\n this.adjustHeight()\n }\n this.query = \"\"\n }\n\n handleMessage = (data, aiMessageId) => {\n const converter = new showdown.Converter()\n // const aiMessageBubble = document.getElementById(aiMessageId);\n\n const aiMessageBubble = this.el.shadowRoot?.querySelector(`#${aiMessageId}`)\n // const aiMessageBubble = this.element.querySelector('.ai12z-suggest-answer')\n\n if (!aiMessageBubble) {\n console.error(`Message bubble with ID ${aiMessageId} not found.`)\n return\n }\n var bubbleText = aiMessageBubble.getAttribute(\"data-bubbleText\") || \"\"\n bubbleText = bubbleText + data\n aiMessageBubble.setAttribute(\"data-bubbleText\", bubbleText)\n\n // Assuming data is a string containing the message content\n let html = converter.makeHtml(bubbleText)\n // Append new content to the existing chat bubble\n aiMessageBubble.innerHTML = html\n }\n\n onInputChange(files: FileList) {\n if (files.length > 0) {\n this.uploadImage(files)\n } else {\n console.error(files.length === 0 || \"NO IMAGE UPLOADED\")\n return false\n }\n }\n\n private uploadImage(files) {\n let newFile\n let tempImagesBase64List = []\n if (files.length > 10 || this.imagesBase64List.length > 10) {\n // this.showErrorMessage = true\n // console.error('You can upload a maximum of 10 images once at a time.');\n return\n }\n for (var i = 0; i < files.length; i++) {\n const mimeType = files[i].type\n if (!mimeType.match(\"image.*\")) {\n console.log(\"file is not an image\")\n return\n }\n newFile = files[i]\n\n const reader = new FileReader()\n\n reader.onload = () => {\n const imagePreviewContainer: HTMLElement = this.el.shadowRoot.querySelector(\"#previewContainer\")\n\n const base64Image = `data:${mimeType};base64,${(reader.result as string).split(\",\")[1]}`\n this.imagesBase64List.push(base64Image)\n tempImagesBase64List = this.imagesBase64List\n\n const newDiv = document.createElement(\"div\")\n newDiv.classList.add(\"image-Container\")\n newDiv.classList.add(\"sc-ai12z-input-form\")\n\n const img = document.createElement(\"img\")\n img.setAttribute(\"src\", reader.result as string)\n img.style.width = \"70px\"\n img.style.height = \"50px\"\n\n const deleteSpan = document.createElement(\"span\")\n deleteSpan.textContent = \"x\"\n deleteSpan.classList.add(\"delete-image\")\n deleteSpan.classList.add(\"sc-ai12z-input-form\")\n imagePreviewContainer.appendChild(newDiv)\n\n newDiv.appendChild(img)\n newDiv.appendChild(deleteSpan)\n\n deleteSpan.onclick = function (event) {\n let imgSrc = event.target[\"previousSibling\"] ? event.target[\"previousSibling\"].src : null\n let index = tempImagesBase64List.indexOf(imgSrc)\n if (index > -1) {\n tempImagesBase64List.splice(index, 1)\n }\n newDiv.remove()\n }\n\n // console.log('uploading finished, emitting an image blob to the outside world');\n }\n reader.readAsDataURL(newFile)\n reader.onloadend = () => {\n console.log(\"upload finished\")\n }\n\n reader.onerror = err => {\n console.error(\"something went wrong...\", err)\n }\n }\n }\n\n getConversationHistory() {\n const storedData = localStorage.getItem(`${this.visitorID}`)\n return storedData ? JSON.parse(storedData) : []\n }\n\n saveConversation() {\n let pastMessages = this.getConversationHistory()\n // console.log(\"saving conversation\", pastMessages)\n if (pastMessages.length > 0) {\n let conversationExists = pastMessages.filter(item => item.conversationId === this.conversationId && item.projectId === this.botSettings?.pId)\n if (conversationExists.length > 0) {\n conversationExists[0].messages = this.messages\n } else {\n pastMessages.push({\n conversationId: this.conversationId,\n projectId: this.botSettings?.pId,\n date: new Date(),\n messages: this.messages,\n })\n }\n } else {\n pastMessages.push({\n conversationId: this.conversationId,\n projectId: this.botSettings?.pId,\n date: new Date(),\n messages: this.messages,\n })\n }\n\n if (this.messages.length > 0) {\n localStorage.setItem(`${this.visitorID}`, JSON.stringify(pastMessages))\n }\n }\n\n loadConversation() {\n this.showWelcomeScreen = false\n this.hideInput = true\n this.messages = []\n const storedMessages = localStorage.getItem(`${this.visitorID}`)\n if (storedMessages) {\n this.conversationHistory = JSON.parse(storedMessages)\n this.conversationHistory = this.conversationHistory.filter(item => item.projectId === this.botSettings?.pId)\n // console.log(\"conversationHistory\", this.conversationHistory)\n // this.messages = chatHistory.map(item => ({ ...item }))\n }\n }\n\n @Listen(\"keydown\")\n handleKeyDown(ev: KeyboardEvent) {\n if (ev.key === \"Enter\" && !ev.shiftKey) {\n // console.log(\"down arrow pressed\")\n ev.preventDefault()\n if (this.inputEl?.value.trim().length > 0) {\n this.handleSend(this.inputEl.value)\n }\n }\n }\n\n startTimer() {\n // const startTime = Date.now()\n this.timer = setInterval(() => {\n this.questionCounter = 0\n // const endTime = Date.now()\n // console.log(`Timer executed after ${endTime - startTime} milliseconds`)\n localStorage.setItem(`ai12z-bot-data`, JSON.stringify({ qCounter: this.questionCounter }))\n }, this.botSettings.autoResetTimer)\n }\n\n updateScreenSize = () => {\n // console.log(\"updateScreenSize\")\n if (window.innerWidth < 640) {\n this.isMinimized = this.isOpened ? false : true\n } else if (window.innerWidth < 768) {\n this.isMinimized = this.isOpened ? false : true\n } else {\n // console.log(\"content\", this.isContent)\n this.isMinimized = this.isExpanded ? false : true\n this.isExpanded = true\n }\n }\n\n handleSend = eleValue => {\n // console.log(\"handle send\", eleValue)\n if (eleValue.trim().length === 0) {\n return\n }\n this.questionCounter = this.questionCounter + 1\n localStorage.setItem(`ai12z-bot-data`, JSON.stringify({ qCounter: this.questionCounter }))\n const inputValue = eleValue\n\n if (this.inputEl) {\n this.inputEl.value = inputValue\n }\n if (this.messages.length === 0 && this.botSettings.autoResetTimer > 0) {\n this.startTimer()\n }\n if (this.showWelcomeScreen && this.botSettings.botVersion === \"v1\") {\n this.showWelcomeScreen = false\n }\n\n if (inputValue.trim()) {\n const now = new Date()\n const timestamp = now.toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" })\n\n // Add the new message to the chat\n this.messages = [\n ...this.messages,\n {\n text: inputValue,\n isUser: true,\n id: `user-${generateUUID()}`,\n timestamp: timestamp,\n images: this.imagesBase64List,\n conversationId: this.conversationId,\n formModel: {},\n surveyDomId: \"\",\n },\n {\n text: this.botSettings.maxQuestion > 0 && this.questionCounter > this.botSettings.maxQuestion ? this.botSettings.msgLimit : \"\",\n isUser: false,\n id: `chatbot-${generateUUID()}`,\n timestamp: \"\",\n images: [],\n conversationId: this.conversationId,\n formModel: {},\n surveyDomId: \"\",\n },\n ]\n\n if (this.messages.length === 2) {\n this.visitorID = getOrCreateVisitorId()\n }\n\n this.checkHistory()\n\n setTimeout(() => {\n this.scrollToBottom()\n }, 100)\n if (this.botSettings.maxQuestion > 0 && this.questionCounter > this.botSettings.maxQuestion) {\n console.log(\"Max question limit reached\")\n this.inputEl.value = \"\"\n } else {\n this.currentDomId = this.messages[this.messages.length - 1].id\n this.invokeSocket()\n }\n // this.invokeSocket()\n\n const parent = this.el.shadowRoot.querySelector(\"#previewContainer\")\n if (parent) {\n parent.innerHTML = \"\"\n }\n\n this.imagesBase64List = []\n this.rowCount = 1\n this.showSubmit = false\n }\n }\n\n scrollToBottom() {\n const container = this.el.shadowRoot.querySelector(\".chat-body\")\n if (container) {\n container.scroll({\n top: container.scrollHeight,\n behavior: \"smooth\",\n })\n }\n }\n\n defaultTemplate() {\n return (\n <div class={{ \"prose\": true, \"floating-icon\": !this.isBot, \"right\": this.botSettings?.botPosition === \"right\", \"left\": this.botSettings?.botPosition === \"left\" }}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"white\" height=\"30px\" width=\"30px\" version=\"1.1\" id=\"Capa_1\" viewBox=\"0 0 60.019 60.019\">\n <g>\n <path d=\"M59.888,47.514l-3.839-11.518c2.056-3.615,3.14-7.716,3.14-11.893c0-13.286-10.809-24.095-24.095-24.095 c-8.242,0-15.824,4.223-20.219,11.007c3.089-1.291,6.477-2.007,10.029-2.007C39.294,9.01,51,20.716,51,35.104 c0,3.996-0.905,7.783-2.518,11.172l10.263,2.701c0.085,0.022,0.17,0.033,0.255,0.033c0.006,0,0.014-0.001,0.02,0 c0.553,0,1-0.448,1-1C60.019,47.829,59.972,47.66,59.888,47.514z\" />\n <path d=\"M24.905,11.01C11.619,11.01,0.81,21.819,0.81,35.104c0,4.176,1.084,8.277,3.14,11.893L0.051,58.693 c-0.116,0.349-0.032,0.732,0.219,1C0.462,59.898,0.727,60.01,1,60.01c0.085,0,0.17-0.011,0.255-0.033l12.788-3.365 c3.35,1.694,7.097,2.587,10.862,2.587C38.191,59.199,49,48.39,49,35.104S38.191,11.01,24.905,11.01z M41.246,26.799 c-0.152,0.083-0.317,0.123-0.479,0.123c-0.354,0-0.696-0.188-0.878-0.519c-2.795-5.097-8.115-8.679-13.883-9.349 c-0.549-0.063-0.941-0.56-0.878-1.108c0.063-0.548,0.558-0.942,1.108-0.878c6.401,0.743,12.304,4.718,15.406,10.373 C41.908,25.926,41.73,26.534,41.246,26.799z\" />\n </g>\n </svg>\n </div>\n )\n }\n\n handleFollowUp(_e) {\n // console.log(\"follow up\", e)\n this.messages = [...[]]\n this.conversationId = \"\"\n this.showWelcomeScreen = true\n }\n\n showButton(e) {\n if (e.target.value.length > 0) {\n this.showSubmit = true\n } else {\n this.showSubmit = false\n }\n }\n\n toggleTextarea() {\n // console.log(\"toggleTextarea\", this.showTextarea)\n this.showTextarea = false // Remove textarea\n setTimeout(() => {\n this.showTextarea = true // Re-add textarea after a short delay\n // console.log(\"toggleTextarea2\", this.showTextarea)\n }, 50) // Small delay ensures the element is fully unmounted\n }\n render() {\n // const imageSrc = getAssetPath(`./assets/ai12z-bot/img/chatbot.jpg`)\n const style = {\n width: this.botSettings?.botWidth ?? \"35%\",\n height: this.botSettings?.botHeight ?? \"80%\",\n }\n return this.botSettings.botVersion === \"v1\" ? (\n <div>\n <div\n class={{\n \"right\": this.botSettings?.botPosition === \"right\",\n \"left\": this.botSettings?.botPosition === \"left\",\n \"custom-floating-icon \": this.isBot,\n \"hide-chatbot\": this.isChatOpen,\n }}\n onClick={() => this.action(\"open\")}\n >\n {!this.isBot && this.botSettings?.botPosition && this.defaultTemplate()}\n {this.isBot && <slot name=\"bot\" />}\n </div>\n {!this.isChatOpen && this.botSettings?.popover?.returnMessage && <bot-popover popoverConfig={this.botSettings?.popover}></bot-popover>}\n {this.isChatOpen && (\n <div\n class={{\n \"chat-window\": true,\n \"chat-window-open\": this.isChatOpen,\n \"chat-window-close\": !this.isChatOpen,\n \"chat-right\": this.botSettings?.botPosition === \"right\",\n \"chat-left\": this.botSettings?.botPosition === \"left\",\n }}\n style={style}\n >\n {!this.hideInput && (\n <div class=\"chat-header\">\n {this.botSettings?.buttons?.length > 0 && (\n <button class=\"hamburger\" onClick={e => this.toggleMenu(e)}>\n ☰ {/* Hamburger Icon */}\n </button>\n )}\n <img class=\"avatar\" src={this.botSettings?.botLogo ?? this.botlogo} alt=\"Avatar\" />\n <span class=\"chat-name\">{this.botSettings?.botName}</span>\n {this.showHistory && (\n <button onClick={() => this.loadConversation()}>\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"#ffffff\" width=\"25\" height=\"25\">\n <path fill=\"none\" d=\"M0 0L24 0 24 24 0 24z\"></path>{\" \"}\n <path d=\"M12 2c5.523 0 10 4.477 10 10s-4.477 10-10 10c-1.702 0-3.305-.425-4.708-1.175L2 22l1.176-5.29C2.426 15.306 2 13.703 2 12 2 6.477 6.477 2 12 2zm0 2c-4.418 0-8 3.582-8 8 0 1.335.326 2.618.94 3.766l.35.654-.656 2.946 2.948-.654.653.349c1.148.614 2.43.939 3.765.939 4.418 0 8-3.582 8-8s-3.582-8-8-8zm1 3v5h4v2h-6V7h2z\"></path>{\" \"}\n </svg>\n </button>\n )}\n <button class=\"minimizebtn\" onClick={() => this.action(\"minimize\")}>\n <svg fill=\"white\" height=\"20px\" width=\"20px\" version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path d=\"M505.752,6.248c-8.331-8.331-21.839-8.331-30.17,0L320,161.83V64c0-11.782-9.551-21.333-21.333-21.333 c-11.782,0-21.333,9.551-21.333,21.333v149.333c0,0.007,0.001,0.015,0.001,0.022c0.001,0.695,0.037,1.39,0.105,2.083 c0.031,0.318,0.091,0.627,0.136,0.94c0.054,0.375,0.098,0.75,0.171,1.122c0.071,0.359,0.17,0.708,0.259,1.061 c0.081,0.322,0.151,0.645,0.248,0.964c0.105,0.346,0.234,0.68,0.356,1.018c0.114,0.318,0.219,0.639,0.349,0.953 c0.131,0.316,0.284,0.618,0.43,0.926c0.152,0.323,0.296,0.649,0.465,0.966c0.158,0.295,0.338,0.575,0.509,0.861 c0.186,0.311,0.361,0.626,0.564,0.929c0.211,0.316,0.447,0.613,0.674,0.917c0.19,0.253,0.365,0.513,0.568,0.759 c0.892,1.087,1.889,2.085,2.977,2.977c0.246,0.202,0.506,0.378,0.759,0.568c0.304,0.228,0.601,0.463,0.917,0.674 c0.303,0.203,0.618,0.379,0.929,0.564c0.286,0.171,0.566,0.351,0.861,0.509c0.317,0.169,0.643,0.313,0.966,0.465 c0.308,0.145,0.611,0.299,0.926,0.43c0.314,0.13,0.635,0.235,0.953,0.349c0.338,0.122,0.672,0.251,1.018,0.356 c0.318,0.096,0.642,0.167,0.964,0.248c0.353,0.089,0.701,0.188,1.061,0.259c0.372,0.074,0.748,0.118,1.122,0.171 c0.314,0.045,0.622,0.104,0.94,0.136c0.693,0.068,1.388,0.105,2.083,0.105c0.007,0,0.015,0.001,0.022,0.001H448 c11.782,0,21.333-9.551,21.333-21.333c0-11.782-9.551-21.333-21.333-21.333h-97.83L505.752,36.418 C514.083,28.087,514.083,14.58,505.752,6.248z\"></path>{\" \"}\n <path d=\"M234.56,296.562c-0.031-0.318-0.091-0.627-0.136-0.94c-0.054-0.375-0.098-0.75-0.171-1.122 c-0.071-0.359-0.17-0.708-0.259-1.061c-0.081-0.322-0.151-0.645-0.248-0.964c-0.105-0.346-0.234-0.68-0.356-1.018 c-0.114-0.318-0.219-0.639-0.349-0.953c-0.131-0.316-0.284-0.618-0.43-0.926c-0.152-0.323-0.296-0.649-0.465-0.966 c-0.158-0.295-0.338-0.575-0.509-0.861c-0.186-0.311-0.361-0.626-0.564-0.929c-0.211-0.316-0.447-0.613-0.674-0.917 c-0.19-0.253-0.365-0.513-0.568-0.759c-0.892-1.087-1.889-2.085-2.977-2.977c-0.246-0.202-0.506-0.378-0.759-0.568 c-0.304-0.228-0.601-0.463-0.917-0.674c-0.303-0.203-0.618-0.379-0.929-0.564c-0.286-0.171-0.566-0.351-0.861-0.509 c-0.317-0.169-0.643-0.313-0.966-0.465c-0.308-0.145-0.611-0.299-0.926-0.43c-0.314-0.13-0.635-0.235-0.953-0.349 c-0.338-0.122-0.672-0.251-1.018-0.356c-0.318-0.096-0.642-0.167-0.964-0.248c-0.353-0.089-0.701-0.188-1.061-0.259 c-0.372-0.074-0.748-0.118-1.122-0.171c-0.314-0.045-0.622-0.104-0.94-0.136c-0.7-0.069-1.402-0.106-2.105-0.106l0,0H64 c-11.782,0-21.333,9.551-21.333,21.333C42.667,310.449,52.218,320,64,320h97.83L6.248,475.582c-8.331,8.331-8.331,21.839,0,30.17 c8.331,8.331,21.839,8.331,30.17,0L192,350.17V448c0,11.782,9.551,21.333,21.333,21.333c11.782,0,21.333-9.551,21.333-21.333 V298.667l0,0C234.667,297.964,234.629,297.262,234.56,296.562z\"></path>{\" \"}\n </svg>\n </button>\n\n <button class=\"close-btn\" onClick={() => this.action(\"close\")}>\n <svg aria-hidden=\"true\" width=\"25\" height=\"13\" viewBox=\"0 0 23 23\" fill=\"none\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n fill=\"white\"\n d=\"M9.34583 11.2L0.384011 2.23818C-0.128004 1.72617 -0.128004 0.896026 0.384011 0.384011C0.896026 -0.128004 1.72617 -0.128004 2.23818 0.384011L11.2 9.34583L20.1618 0.384011C20.6738 -0.128004 21.504 -0.128004 22.016 0.384011C22.528 0.896026 22.528 1.72617 22.016 2.23818L13.0542 11.2L22.016 20.1618C22.528 20.6738 22.528 21.504 22.016 22.016C21.504 22.528 20.6738 22.528 20.1618 22.016L11.2 13.0542L2.23818 22.016C1.72617 22.528 0.896026 22.528 0.384011 22.016C-0.128003 21.504 -0.128003 20.6738 0.384011 20.1618L9.34583 11.2Z\"\n ></path>\n </svg>\n </button>\n </div>\n )}\n <div class={`menu ${this.isMenuOpen ? \"open\" : \"closed\"}`} ref={el => (this.menuRef = el)}>\n <ul>\n {this.botSettings?.buttons?.map(item => (\n <li\n onClick={() => {\n this.isMenuOpen = !this.isMenuOpen\n this.query = item.action\n this.handleSend(item.label)\n }}\n >\n {item.label}\n </li>\n ))}\n </ul>\n </div>\n {this.hideInput && (\n <div class=\"chat-header\">\n <button\n onClick={() => {\n this.showWelcomeScreen = true\n this.hideInput = false\n this.checkHistory()\n }}\n >\n <svg aria-hidden=\"true\" width=\"20\" height=\"20\" viewBox=\"0 0 10 19\">\n <path\n fill=\"#FFFFFF\"\n d=\"M9.70711 0.542893C10.0976 0.933418 10.0976 1.56658 9.70711 1.95711L2.41421 9.25L9.70711 16.5429C10.0976 16.9334 10.0976 17.5666 9.70711 17.9571C9.31658 18.3476 8.68342 18.3476 8.29289 17.9571L0.292893 9.95711C0.105357 9.76957 -4.04995e-07 9.51522 -3.93402e-07 9.25C-3.81809e-07 8.98478 0.105357 8.73043 0.292893 8.54289L8.29289 0.542893C8.68342 0.152369 9.31658 0.152369 9.70711 0.542893Z\"\n clip-rule=\"evenodd\"\n fill-rule=\"evenodd\"\n ></path>\n </svg>\n </button>\n <span class=\"header-title\">Conversation History</span>\n </div>\n )}\n\n <div class=\"chat-body\">\n {this.showWelcomeScreen && (\n <chatbot-welcome\n welcomeMessage={this.botSettings?.welcome?.message}\n buttonsList={this.botSettings?.welcome?.buttons || this.botSettings?.welcome?.welcomeButtons}\n welcomelogo={this.botSettings?.welcome?.image}\n />\n )}\n {this.showHistory && this.conversationHistory.length > 0 && this.hideInput && (\n <chatbot-history chatList={this.conversationHistory} botName={this.botSettings?.botName}></chatbot-history>\n )}\n {!this.showWelcomeScreen && this.messages.length > 0 && <p class=\"timestamp\">{this.timestamp}</p>}\n {!this.showWelcomeScreen &&\n this.messages.length > 0 &&\n this.messages.map(msg => (\n <div class={{ \"message\": true, \"message-user\": msg.isUser }}>\n <div class={{ \"msg-wrapper\": true, \"pl-1\": true, \"md:pl-0\": true }}>\n {!msg.isUser && <img class=\"bot-avatar hidden md:block\" src={this.botSettings?.botAvatar ?? this.botAvatar} alt=\"Bot Avatar\" />}\n <div class={{ \"message-content\": true, \"bubble-width\": !msg.isUser }}>\n <span class={{ \"message-text\": true, \"message-bot\": !msg.isUser, \"prose\": true, \"p-2.5\": true }} id={msg.id} innerHTML={msg.text}>\n {msg?.images?.map(img => {\n return <img src={img} class=\"thumbnail\" alt=\"thumbnail\" />\n })}\n {!msg.isUser && msg.text === \"\" && (\n <svg class=\"animate-spin h-5 w-5 text-gray-400\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" id=\"spinner\">\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\n <path\n class=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 0 1 4 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n ></path>\n </svg>\n )}\n </span>\n <span class=\"message-timestamp\">{msg.timestamp}</span>\n </div>\n </div>\n </div>\n ))}\n </div>\n\n <div id=\"previewContainer\"></div>\n\n {/* {!this.hideInput && (\n <div class=\"chat-footer\">\n {this.messages.length === 0 && (\n <div class=\"custom-privacy\">\n <slot name=\"custom-privacy\" />\n </div>\n )}\n {this.messages?.length > 0 && (\n <div class=\"follow-up\">\n <input\n ref={el => (this.followUpElem = el as HTMLInputElement)}\n type=\"checkbox\"\n name=\"followUp\"\n id=\"followUp\"\n defaultChecked={true}\n class=\"follow-up-input\"\n onChange={ev => this.handleFollowUp(ev)}\n />\n <label htmlFor=\"followUp\">Do you have a follow up question?</label>\n <svg\n onClick={() => this.followUpElem.click()}\n class=\"custom-svg-checkbox\n peer-checked:block text-white\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"4\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <polyline points=\"20 6 9 17 4 12\"></polyline>\n </svg>\n </div>\n )}\n <div style={{ display: \"flex\" }}>\n <textarea\n rows={this.rowCount}\n placeholder={this.botSettings?.botPlaceholderText ?? \"Type your message...\"}\n ref={el => (this.inputEl = el as HTMLTextAreaElement)}\n onKeyUp={this.adjustHeight}\n />\n {this.botSettings.imageUpload && (\n <div class=\"custom-attachment\">\n <input\n type=\"file\"\n multiple\n name=\"files[]\"\n id=\"fileInput\"\n accept=\"image/*\"\n class=\"image-upload__input\"\n onChange={($event: any) => this.onInputChange($event.target.files)}\n ref={el => (this.uploadElem = el as HTMLInputElement)}\n />\n <svg onClick={() => this.uploadElem.click()} aria-hidden=\"true\" width=\"18\" height=\"16\" viewBox=\"0 0 16 18\">\n <path\n fill=\"#687882\"\n fill-rule=\"evenodd\"\n d=\"M8.078 16a.71.71 0 0 1-.513-.222.784.784 0 0 1 0-1.075l7.53-7.879c.562-.587.871-1.368.871-2.199 0-.83-.31-1.611-.87-2.197a2.883 2.883 0 0 0-4.204 0l-8.735 9.139c-.493.516-.73 1.012-.703 1.476.026.452.298.801.46.968.27.284.563.402.892.358.413-.054.888-.35 1.375-.86l6.854-7.172a.703.703 0 0 1 1.026 0 .784.784 0 0 1 0 1.074l-6.853 7.172c-.728.761-1.475 1.196-2.222 1.293-.783.102-1.509-.172-2.1-.79-.528-.553-.841-1.246-.881-1.952-.053-.917.326-1.805 1.125-2.64l8.735-9.14a4.292 4.292 0 0 1 6.257 0 4.706 4.706 0 0 1 1.296 3.271c0 1.236-.461 2.4-1.296 3.274l-7.53 7.879a.71.71 0 0 1-.514.222z\"\n ></path>\n </svg>\n </div>\n )}\n <button onClick={() => this.handleSend(this.inputEl.value)}>\n <svg aria-hidden=\"true\" width=\"17\" height=\"16\" viewBox=\"0 0 17 16\">\n <path\n fill=\"#687882\"\n fill-rule=\"evenodd\"\n stroke=\"#687882\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M1 1l2.166 5.39 8.5 1.564-8.5 1.666L1 15l16-7z\"\n ></path>\n </svg>\n </button>\n </div>\n </div>\n )} */}\n <div class=\"ml-2\">\n {this.messages.length === 0 && (\n <div class=\"custom-privacy\">\n <slot name=\"custom-privacy\" />\n </div>\n )}\n {this.messages?.length > 0 && (\n <div class=\"follow-up\">\n <input\n ref={el => (this.followUpElem = el as HTMLInputElement)}\n type=\"checkbox\"\n name=\"followUp\"\n id=\"followUp\"\n defaultChecked={true}\n class=\"follow-up-input\"\n onChange={ev => this.handleFollowUp(ev)}\n />\n <label htmlFor=\"followUp\">Do you have a follow up question?</label>\n <svg\n onClick={() => this.followUpElem.click()}\n class=\"custom-svg-checkbox\n peer-checked:block text-white\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"4\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <polyline points=\"20 6 9 17 4 12\"></polyline>\n </svg>\n </div>\n )}\n </div>\n {!this.hideInput && (\n <div class=\"chat-footer border-t border-gray-300\">\n <div class=\"flex items-center flex-row\">\n {this.botSettings?.imageUpload && (\n <div class=\"relative inline-block\" style={{ width: \"5%\" }}>\n {/* Plus Button */}\n {!this.hideAllButtons && (\n <button class=\"w-8 h-8 text-blue-500\" onClick={this.toggleBox}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" width=\"20\" height=\"20\">\n <path d=\"M10.75 4.75a.75.75 0 0 0-1.5 0v4.5h-4.5a.75.75 0 0 0 0 1.5h4.5v4.5a.75.75 0 0 0 1.5 0v-4.5h4.5a.75.75 0 0 0 0-1.5h-4.5v-4.5Z\"></path>\n </svg>\n </button>\n )}\n\n {/* Option Box */}\n <div\n class={`absolute bottom-12 left-0 w-44 bg-white rounded-lg shadow-lg transition-all duration-300 ease-in-out \n ${this.isOpen ? \"opacity-100 scale-100 pointer-events-auto\" : \"opacity-0 scale-90 pointer-events-none\"}`}\n >\n <ul class=\"space-y-2\">\n {/* <li class=\"px-4 py-2 hover:bg-gray-100 cursor-pointer flex\">\n <div class=\"mr-1\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" width=\"20\" height=\"20\">\n <path d=\"M12 9a3.75 3.75 0 1 0 0 7.5A3.75 3.75 0 0 0 12 9Z\"></path>\n <path\n fill-rule=\"evenodd\"\n d=\"M9.344 3.071a49.52 49.52 0 0 1 5.312 0c.967.052 1.83.585 2.332 1.39l.821 1.317c.24.383.645.643 1.11.71.386.054.77.113 1.152.177 1.432.239 2.429 1.493 2.429 2.909V18a3 3 0 0 1-3 3h-15a3 3 0 0 1-3-3V9.574c0-1.416.997-2.67 2.429-2.909.382-.064.766-.123 1.151-.178a1.56 1.56 0 0 0 1.11-.71l.822-1.315a2.942 2.942 0 0 1 2.332-1.39ZM6.75 12.75a5.25 5.25 0 1 1 10.5 0 5.25 5.25 0 0 1-10.5 0Zm12-1.5a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z\"\n clip-rule=\"evenodd\"\n ></path>\n </svg>\n </div>\n <div>Capture</div>\n </li> */}\n <li\n class=\"px-4 py-2 hover:bg-gray-100 cursor-pointer flex\"\n onClick={() => {\n this.uploadElem.click()\n this.isOpen = false\n }}\n >\n <input\n type=\"file\"\n multiple\n name=\"files[]\"\n id=\"fileInput\"\n accept=\"image/*\"\n class=\"image-upload__input\"\n onChange={($event: any) => this.onInputChange($event.target.files)}\n ref={el => (this.uploadElem = el as HTMLInputElement)}\n />\n <div class=\"mr-1\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"h-5 w-5 shrink-0\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M18.0322 5.02393C17.7488 5.00078 17.3766 5 16.8 5H11.5002C11.3 6 11.0989 6.91141 10.8903 7.85409C10.7588 8.44955 10.6432 8.97304 10.3675 9.41399C10.1262 9.80009 9.80009 10.1262 9.41399 10.3675C8.97304 10.6432 8.44955 10.7588 7.85409 10.8903C7.81276 10.8994 7.77108 10.9086 7.72906 10.9179L5.21693 11.4762C5.1442 11.4924 5.07155 11.5001 5 11.5002V16.8C5 17.3766 5.00078 17.7488 5.02393 18.0322C5.04612 18.3038 5.0838 18.4045 5.109 18.454C5.20487 18.6422 5.35785 18.7951 5.54601 18.891C5.59546 18.9162 5.69617 18.9539 5.96784 18.9761C6.25118 18.9992 6.62345 19 7.2 19H10C10.5523 19 11 19.4477 11 20C11 20.5523 10.5523 21 10 21H7.16144C6.6343 21 6.17954 21 5.80497 20.9694C5.40963 20.9371 5.01641 20.8658 4.63803 20.673C4.07354 20.3854 3.6146 19.9265 3.32698 19.362C3.13419 18.9836 3.06287 18.5904 3.03057 18.195C2.99997 17.8205 2.99998 17.3657 3 16.8385L3 11C3 8.92477 4.02755 6.93324 5.4804 5.4804C6.93324 4.02755 8.92477 3 11 3L16.8385 3C17.3657 2.99998 17.8205 2.99997 18.195 3.03057C18.5904 3.06287 18.9836 3.13419 19.362 3.32698C19.9265 3.6146 20.3854 4.07354 20.673 4.63803C20.8658 5.01641 20.9371 5.40963 20.9694 5.80497C21 6.17954 21 6.6343 21 7.16144V10C21 10.5523 20.5523 11 20 11C19.4477 11 19 10.5523 19 10V7.2C19 6.62345 18.9992 6.25118 18.9761 5.96784C18.9539 5.69617 18.9162 5.59546 18.891 5.54601C18.7951 5.35785 18.6422 5.20487 18.454 5.109C18.4045 5.0838 18.3038 5.04612 18.0322 5.02393ZM5.28014 9.41336L7.2952 8.96556C8.08861 8.78925 8.24308 8.74089 8.35381 8.67166C8.48251 8.59121 8.59121 8.48251 8.67166 8.35381C8.74089 8.24308 8.78925 8.08861 8.96556 7.2952L9.41336 5.28014C8.51014 5.59289 7.63524 6.15398 6.89461 6.89461C6.15398 7.63524 5.59289 8.51014 5.28014 9.41336ZM17 15C17 14.4477 17.4477 14 18 14C18.5523 14 19 14.4477 19 15V17H21C21.5523 17 22 17.4477 22 18C22 18.5523 21.5523 19 21 19H19V21C19 21.5523 18.5523 22 18 22C17.4477 22 17 21.5523 17 21V19H15C14.4477 19 14 18.5523 14 18C14 17.4477 14.4477 17 15 17H17V15Z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </div>\n <div>Upload Images</div>\n </li>\n </ul>\n </div>\n </div>\n )}\n {/* Chat Input */}\n\n {!this.hideAllButtons && (\n <div style={{ width: \"80%\" }}>\n <textarea\n rows={this.rowCount}\n placeholder={this.botSettings?.botPlaceholderText ?? \"Type your message...\"}\n ref={el => (this.inputEl = el as HTMLTextAreaElement)}\n onKeyUp={this.adjustHeight}\n onFocus={e => this.showButton(e)}\n class=\"flex-1 px-4 py-2 w-full focus:outline-none\"\n />\n </div>\n )}\n <audio-recorder\n component-type=\"bot\"\n onStartRecord={_ev => {\n // console.log(\"test\", ev)\n this.hideAllButtons = true\n }}\n onStopRecord={_ev => {\n this.hideAllButtons = false\n }}\n onSendTranscript={ev => {\n // console.log(\"ev\", ev)\n\n setTimeout(() => {\n // console.log(\"input\", this.inputEl)\n if (this.inputEl) {\n this.inputEl.value = ev.detail\n this.adjustHeight()\n this.showSubmit = true\n }\n }, 1000)\n }}\n style={{ width: this.hideAllButtons ? \"100%\" : \"10%\" }}\n ></audio-recorder>\n {/* )} */}\n {!this.hideAllButtons && (\n <div>\n <button\n class=\"relative w-10 h-10 flex items-center justify-center rounded-full transition-transform duration-300 ease-in-out bg-blue-500\"\n onClick={() => this.handleSend(this.inputEl.value)}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" fill=\"white\" class=\"w-5 h-5\">\n <path\n fill-rule=\"evenodd\"\n d=\"M8 14a.75.75 0 0 1-.75-.75V4.56L4.03 7.78a.75.75 0 0 1-1.06-1.06l4.5-4.5a.75.75 0 0 1 1.06 0l4.5 4.5a.75.75 0 0 1-1.06 1.06L8.75 4.56v8.69A.75.75 0 0 1 8 14Z\"\n clip-rule=\"evenodd\"\n ></path>\n </svg>\n </button>\n </div>\n )}\n {/* {!this.showSubmit && !this.hideAllButtons && (\n <div>\n <button class=\"relative w-10 h-10 flex items-center justify-center rounded-full transition-transform duration-300 ease-in-out bg-blue-500\">\n <svg aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"white\" viewBox=\"0 0 24 24\" stroke-width=\"0\" stroke=\"currentColor\" width=\"20\" height=\"20\">\n <path\n fill-rule=\"evenodd\"\n d=\"M12 5a7 7 0 0 0-7 7v1.17c.313-.11.65-.17 1-.17h2a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1H6a3 3 0 0 1-3-3v-6a9 9 0 0 1 18 0v6a3 3 0 0 1-3 3h-2a1 1 0 0 1-1-1v-6a1 1 0 0 1 1-1h2c.35 0 .687.06 1 .17V12a7 7 0 0 0-7-7Z\"\n clip-rule=\"evenodd\"\n ></path>\n </svg>\n </button>\n </div>\n )} */}\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n ) : (\n <div\n class={`layout pt-0 show-grid search-flex ${this.isOpened ? \"is-open\" : \"\"} ${this.isExpanded ? \"is-expanded\" : \"\"} ${this.isAnimated ? \"transition ease-out duration-300\" : \"\"}`}\n style={{\n gridTemplateColumns: `0fr minmax(${this.botSettings.minWidth ?? \"340px\"}, ${this.botSettings.maxWidth ?? \"375px\"}) 0fr`,\n paddingTop: this.botSettings?.paddingTop ?? \"96px\",\n }}\n >\n <div\n class={`modal-overlay`}\n role=\"button\"\n aria-label=\"Close Modal\"\n style={{\n display: this.isExpanded && this.isOpened ? \"grid\" : \"none\",\n opacity: this.isExpanded && this.isOpened ? \"1\" : \"0\",\n pointerEvents: this.isExpanded && this.isOpened ? \"all\" : \"none\",\n }}\n ></div>\n {/* {this.isOpen && ( */}\n <div\n class=\"modal\"\n data-testid=\"modal\"\n aria-hidden=\"false\"\n role=\"dialog\"\n aria-modal=\"true\"\n tabindex=\"-1\"\n style={{ display: this.isOpened ? \"grid\" : \"none\", opacity: this.isOpened ? \"1\" : \"0\", transform: this.isOpened ? \"none\" : \"translateY(100%)\" }}\n >\n <div class=\"toolbar flex bg-white overflow-hidden border-b border-gray-90 border-solid md:pl-3 pl-4 justify-end md:rounded-t-xl items-center\">\n <div class=\"toolbar-overflow-actions\">\n <button\n class=\"rounded-full flex items-center justify-center disabled:cursor-not-allowed bg-transparent hover:bg-blue-95 disabled:bg-transparent disabled:hover:bg-transparent h-6 w-6\"\n tabindex=\"0\"\n aria-label=\"options menu\"\n aria-haspopup=\"menu\"\n aria-expanded=\"false\"\n aria-controls=\"toolbar-dropdown-menu\"\n onClick={e => {\n this.toggleBot(e)\n }}\n >\n <i class=\"modal-toolbar-icon block wes-icon--loading text-body2\">\n <svg viewBox=\"0 0 24 24\" id=\"align-left-2\" data-name=\"Flat Line\" xmlns=\"http://www.w3.org/2000/svg\" class=\"icon flat-line\" fill=\"currentColor\">\n <g id=\"SVGRepo_bgCarrier\" stroke-width=\"0\"></g>\n <g id=\"SVGRepo_tracerCarrier\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></g>\n <g id=\"SVGRepo_iconCarrier\">\n <path id=\"primary\" d=\"M3,12H17M3,6H21M3,18H13\" style={{ fill: \"none\", stroke: \"currentColor\" }}></path>\n </g>\n </svg>\n </i>\n </button>\n <div\n id=\"dropdown-menu\"\n role=\"menu\"\n class={`dropdown-menu flex flex-col gap-y-1 grow-wrap absolute bg-white border-b border-gray-80 border-solid rounded-lg shadow-lg p-2 mt-4 min-w-[200px] left-5 overflow-hidden ${this.isToggled ? \"show\" : \"\"}`}\n style={{ height: \"auto\" }}\n ref={el => (this.menuV2Ref = el)}\n >\n {this.botSettings?.buttons?.map(button => (\n <div class=\"dropdown-item w-full\" role=\"menuitem\" tabindex=\"-1\">\n <button\n class=\"dropdown-item-button\"\n onClick={e => {\n this.toggleBot(e)\n this.showHistory = false\n this.showWelcomeScreen = true\n this.handleSend(button.label)\n }}\n >\n {button.label}\n </button>\n </div>\n ))}\n <div class=\"dropdown-item w-full\" role=\"menuitem\" tabindex=\"-1\">\n <button\n class=\"dropdown-item-button\"\n onClick={e => {\n this.toggleBot(e)\n this.showHistory = true\n // this.hideInput = true\n this.loadConversation()\n // console.log(\"this.show\", this.conversationHistory)\n }}\n >\n View Recent chat\n </button>\n </div>\n <div class=\"dropdown-item w-full\" role=\"menuitem\" tabindex=\"-1\">\n <button\n class=\"dropdown-item-button\"\n onClick={ev => {\n ev.preventDefault()\n this.messages = [...[]]\n this.conversationId = \"\"\n this.isOpened = false\n this.isMinimized = this.isExpanded ? false : true\n this.showWelcomeScreen = true\n this.toggleBot(ev)\n this.showHistory = false\n }}\n >\n End conversation\n </button>\n </div>\n </div>\n </div>\n {this.botSettings?.botLogo && <img src={this.botSettings?.botLogo} class=\"w-8 h-8 rounded-lg\"></img>}\n <h2 class=\"heading text-body1 flex-1 pl-2\">{this.botSettings?.botName}</h2>\n <div class=\"buttons flex gap-2 p-[10px]\">\n <button\n class=\"rounded-full flex items-center justify-center disabled:cursor-not-allowed bg-transparent hover:bg-blue-95 disabled:bg-transparent disabled:hover:bg-transparent h-6 w-6 hidden md:flex\"\n tabindex=\"0\"\n onClick={() => {\n this.isExpanded = !this.isExpanded\n this.isAnimated = true\n }}\n aria-label=\"Collapse Agentforce to Side Panel\"\n >\n <i class=\"modal-toolbar-icon wes-block wes-icon--loading wes-text-body2\">\n {this.isExpanded && (\n <svg viewBox=\"0 0 32 32\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M18.215 14.7076H27.692C28.3074 14.7076 28.492 14.0307 27.9997 13.5383L24.9843 10.4614L30.5228 4.86149C30.8305 4.5538 30.8305 3.99995 30.5228 3.69226L28.2459 1.41536C27.9382 1.16921 27.4459 1.16921 27.0767 1.4769L21.5381 7.01532L18.3997 3.99995C17.9073 3.50765 17.2304 3.69226 17.2304 4.30764V13.7845C17.2304 14.2153 17.7843 14.7076 18.215 14.7076ZM13.7847 17.2308H4.30766C3.69227 17.2308 3.50765 17.9077 3.99996 18.4L7.01537 21.4769L1.47686 27.0769C1.16917 27.3846 1.16917 27.9384 1.47686 28.2461L3.75381 30.523C4.0615 30.8307 4.55381 30.8307 4.92305 30.523L10.5231 24.923L13.6616 27.9384C14.0924 28.4923 14.7693 28.3076 14.7693 27.6923V18.2769C14.7693 17.8462 14.2154 17.2308 13.7847 17.2308Z\"\n ></path>\n </svg>\n )}\n {!this.isExpanded && (\n <svg viewBox=\"0 0 32 32\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M30.0308 1.23071H20.4923C19.8769 1.23071 19.6923 1.78455 20.1846 2.27686L23.2 5.29222L17.6615 10.8306C17.3538 11.1383 17.3538 11.6306 17.6615 11.9999L19.9384 14.2768C20.2461 14.5845 20.7384 14.5845 21.1077 14.2768L26.7077 8.67681L29.7231 11.6922C30.2154 12.1845 30.7692 11.9999 30.7692 11.3845V1.90763C30.7692 1.5384 30.4 1.23071 30.0308 1.23071ZM2.15379 30.7692H11.6307C12.2461 30.7692 12.4307 30.0923 11.9384 29.6L8.92303 26.5231L14.4615 20.9231C14.7692 20.6154 14.7692 20.0616 14.4615 19.7539L12.1846 17.477C11.8769 17.1693 11.3846 17.1693 11.0153 17.477L5.47687 23.0154L2.39995 20C1.8461 19.5077 1.23071 19.6923 1.23071 20.3077V29.7846C1.23071 30.2153 1.72302 30.7692 2.15379 30.7692Z\"\n ></path>\n </svg>\n )}\n </i>\n </button>\n <button\n class=\"rounded-full flex items-center justify-center disabled:cursor-not-allowed bg-transparent hover:bg-blue-95 disabled:bg-transparent disabled:hover:bg-transparent h-6 w-6\"\n tabindex=\"0\"\n data-testid=\"modal-minimize\"\n aria-label=\"Minimize\"\n onClick={() => {\n this.isOpened = false\n // this.isContent = false\n this.isContent = this.isExpanded ? true : false\n this.isMinimized = this.isExpanded ? false : true\n this.isAnimated = false\n this.updateScreenSize()\n }}\n >\n <i class=\"modal-toolbar-icon block wes-icon--loading text-body2\">\n <svg viewBox=\"0 0 26 26\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M25 24.25C25 24.65 24.65 25 24.25 25H1.75C1.35 25 1 24.65 1 24.25V22.75C1 22.35 1.35 22 1.75 22H24.25C24.65 22 25 22.35 25 22.75V24.25Z\"\n ></path>\n </svg>\n </i>\n </button>\n </div>\n </div>\n <div class=\"main flex-1 flex flex-col\">\n <div class=\"h-full flex flex-col chat-body\">\n <div class=\"messages-container px-5 flex-[1_1_0] min-h-[calc(100%-1px)] flex flex-col gap-y-3 @md:px-3\" role=\"region\" aria-label=\"messages\">\n {/* <h3 class=\"text-display5 font-avant-garde text-[#001E5B] @md:text-display4 text-center @md:px-6 pb-3 @md:pb-7 @md:pt-8 pt-5\">\n How can <strong class=\"text-[#0344D1]\">Agentforce</strong> help?\n </h3> */}\n {this.showWelcomeScreen && <div class=\"text-display5 @md:px-6 pb-3 @md:pb-7 @md:pt-8 pt-5\" innerHTML={this.botSettings?.welcome?.message}></div>}\n {/* <div class=\"message-item flex pb-3 gap-x-2 @md:gap-x-3 justify-center\" style={{ opacity: \"1\", transform: \"none\" }}>\n <div class=\"flex flex-col\">\n <div class=\"timestamp text-gray-30 text-body4 pt-2\">Agentforce joined • 12:45 PM</div>\n </div>\n </div> */}\n {this.messages.length > 0 &&\n this.messages.map((message, _idx) => {\n // const showAvatar = !message.isUser && (idx === this.messages.length - 1 || this.messages[idx + 1]?.isUser === true)\n\n return (\n <div\n class={`message-item flex pb-3 gap-x-2 @md:gap-x-3 end-user-message \n ${message.isUser ? \"self-end\" : \"\"}\n ${message.isUser ? \"justify-end\" : \"\"}`}\n style={{ opacity: \"1\", transform: \"none\" }}\n >\n {message.isUser && (\n <div class=\"flex flex-col items-end\">\n <div\n data-testid=\"message\"\n class=\"break-words text-body3 @md:text-body2 box-border @md:pr-4 flex-1 rounded-lg py-2 px-4 user-msg\"\n innerHTML={message.text}\n >\n {message?.images?.map(img => {\n return <img src={img} class=\"thumbnail\" alt=\"thumbnail\" />\n })}\n </div>\n\n <div class=\"text-gray-30 text-body4 pt-2 text-right\">Sent {message.timestamp}</div>\n </div>\n )}\n {!message.isUser && (\n <div class=\"avatar-column\">\n <div role=\"img\" aria-label=\"Agentforce said: \" class=\"rounded-full h-6 w-6 p-2 grid place-content-center bg-blue\">\n {this.botSettings.botAvatar && <img src={this.botSettings.botAvatar} class=\"w-8 h-8 rounded-full\"></img>}\n {!this.botSettings.botAvatar && (\n // <i class=\"_wes-icon_9ngz3_1 block text-body1\" style={{ color: \"rgb(2, 80, 217)\" }}>\n // <svg viewBox=\"0 0 32 32\" xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20}>\n // <path d=\"M19.3786 16.9969H19.3909C18.8863 17.04 18.437 17.1262 18.0493 17.2492C18.0493 17.2492 17.4832 17.4277 16.6155 17.5508C16.4124 17.5816 16.154 17.5816 16.0124 17.5816H15.9078C15.7663 17.5816 15.5017 17.5692 15.3047 17.5385C14.437 17.3969 13.877 17.2 13.877 17.2C13.4893 17.0769 13.0401 16.9846 12.5355 16.9292C9.77243 16.6462 8.57858 17.6985 8.51089 17.8954C8.4432 18.0923 8.74473 20.6523 8.96627 21.0585C9.18166 21.4585 9.51396 21.6923 9.8155 21.8216C10.1232 21.9508 12.6524 22.2031 13.4955 22.0862C14.3386 21.9692 14.4678 21.6862 14.6955 21.2554C14.8555 20.9477 15.2678 19.5569 15.4955 18.7385C15.5509 18.5785 15.557 18.2585 15.9447 18.2339C16.3324 18.2646 16.3386 18.5908 16.3878 18.7508C16.6093 19.5692 16.997 20.9723 17.1509 21.28C17.3663 21.7169 17.4955 22 18.3386 22.1354C19.1755 22.2646 21.7109 22.0616 22.0186 21.9385C22.3263 21.8154 22.6586 21.5877 22.8801 21.1877C23.1017 20.7877 23.4463 18.2339 23.3847 18.0369C23.3232 17.8339 22.1478 16.7631 19.3786 16.9969Z\"></path>\n // <path d=\"M28.0124 8.95386H28.0186C27.2494 7.9754 26.3386 7.10771 25.3294 6.36309C26.3755 6.17848 27.1694 5.26771 27.1694 4.17232C27.1694 2.94155 26.1724 1.93848 24.9355 1.93848C23.6986 1.93848 22.7017 2.9354 22.7017 4.17232C22.7017 4.41848 22.7509 4.65232 22.8247 4.87386C21.237 4.12309 19.5017 3.63078 17.6863 3.44002C14.6463 3.12002 11.7109 3.66155 9.18166 4.8554C9.24935 4.64001 9.29858 4.41232 9.29858 4.17232C9.29858 2.94155 8.30166 1.93848 7.06473 1.93848C5.82781 1.93848 4.83089 2.9354 4.83089 4.17232C4.83089 5.26771 5.61858 6.17232 6.65243 6.36309C3.78473 8.48001 1.78473 11.5631 1.32935 15.1385C0.904735 18.4431 1.84627 21.7539 3.98781 24.4616C6.41243 27.5262 10.1786 29.5385 14.314 29.9754C14.8924 30.0369 15.4647 30.0677 16.0309 30.0677C23.4094 30.0677 29.797 25.0585 30.6709 18.2769C31.0955 14.9723 30.154 11.6616 28.0124 8.95386ZM16.0124 26.2523H16.0063C10.4555 26.2462 5.93858 22.5416 5.93858 17.9877C5.93858 16.6154 6.35704 15.2985 7.11397 14.1292C7.18166 14.5477 7.30473 14.9108 7.44012 15.1816C7.62473 15.5508 7.99397 15.7662 8.38166 15.7662C8.5355 15.7662 8.6955 15.7354 8.8432 15.6616C9.36627 15.4092 9.58166 14.7816 9.34166 14.2585C9.21243 13.9816 8.88012 13.0646 9.68627 12.3631C10.4678 13.0708 11.5878 13.9016 12.8493 14.3077C15.2001 15.0523 16.9786 14.6154 17.0524 14.5969C17.4093 14.5046 17.6863 14.24 17.797 13.8892C17.9078 13.5385 17.8278 13.1569 17.5878 12.8862C16.4001 11.52 15.834 10.5231 15.5878 9.92002C20.4001 10.5723 21.3232 14.4062 21.3601 14.5785C21.4647 15.0708 21.9017 15.4092 22.3878 15.4092C22.4617 15.4092 22.5294 15.4031 22.6032 15.3846C23.1755 15.2677 23.5386 14.7077 23.4217 14.1354C23.274 13.4216 22.8863 12.4554 22.197 11.4892C24.554 13.0031 26.0801 15.3539 26.0801 17.9939C26.0801 22.5477 21.5632 26.2523 16.0124 26.2523Z\"></path>\n // </svg>\n // </i>\n <i class=\"_wes-icon_9ngz3_1 block text-body1 default-botAvatar\">\n <svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 16 16\" height={20} width={20} xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8 1a5 5 0 0 0-5 5v1h1a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6a6 6 0 1 1 12 0v6a2.5 2.5 0 0 1-2.5 2.5H9.366a1 1 0 0 1-.866.5h-1a1 1 0 1 1 0-2h1a1 1 0 0 1 .866.5H11.5A1.5 1.5 0 0 0 13 12h-1a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1h1V6a5 5 0 0 0-5-5\"></path>\n </svg>\n </i>\n )}\n </div>\n </div>\n )}\n {!message.isUser && (\n <div class=\"flex flex-col\" style={{ width: \"100%\" }}>\n <div\n data-testid=\"message\"\n class=\"prose max-w-full break-words text-body3 @md:text-body2 box-border @md:pr-4 flex-1 rounded-lg text-gray-30 pr-2\"\n innerHTML={message.text}\n id={message.id}\n >\n {message.text === \"\" && (\n <div class=\"w-full rounded-md\" id=\"spinner\">\n <div class=\"flex animate-pulse space-x-4\">\n {/* <div class=\"size-10 rounded-full bg-gray-200\"></div> */}\n <div class=\"flex-1 space-y-3 py-1\">\n <div class=\"h-4 rounded bg-gray-200\"></div>\n <div class=\"space-y-3\">\n <div class=\"grid grid-cols-3 gap-4\">\n <div class=\"col-span-2 h-4 rounded bg-gray-200\"></div>\n <div class=\"col-span-1 h-4 rounded bg-gray-200\"></div>\n </div>\n <div class=\"h-4 rounded bg-gray-200\"></div>\n </div>\n </div>\n </div>\n </div>\n )}\n </div>\n <div class=\"text-gray-30 text-body4 pt-2\">\n {this.botSettings.botName} • {message.timestamp}\n </div>\n </div>\n )}\n </div>\n )\n })}\n {this.showHistory && <chatbot-history chatList={this.conversationHistory} botName={this.botSettings?.botName}></chatbot-history>}\n <div class=\"h-px pt-2px\" style={{ overflowAnchor: \"auto\" }}></div>\n </div>\n\n <div aria-live=\"polite\" class=\"absolute w-[1px] h-[1px] p-0 m-[-1px] overflow-hidden whitespace-nowrap border-0\"></div>\n </div>\n </div>\n </div>\n {/* )} */}\n {/* {!this.isMinimized && ( */}\n <form\n data-testid=\"user-input\"\n class={`user-input relative pointer-events-auto searchform ${this.isOpened ? \"p-2.5\" : \"\"}`}\n role=\"region\"\n aria-label=\"Message Area\"\n aria-hidden=\"false\"\n style={{ opacity: !this.isMinimized ? \"1\" : \"0\", transform: \"translateX(0)\", pointerEvents: !this.isMinimized ? \"auto\" : \"none\" }}\n >\n {!this.isOpened && (\n <div class={`minimize-input absolute right-4 md:right-0 border-2 border-white border-solid rounded-full ${this.isContent ? \"\" : \"top-0\"}`}>\n <button\n class=\"rounded-full flex items-center justify-center disabled:cursor-not-allowed bg-gray-500 bg-opacity-60 hover:bg-opacity-80 h-5 w-5\"\n tabindex=\"0\"\n onClick={e => {\n e.preventDefault()\n this.isMinimized = !this.isMinimized\n }}\n >\n <i class=\"ai-minimize-icon block ai-text-caption\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"52\" width=\"52\" viewBox=\"0 0 520 520\" fill=\"#fff\">\n <path d=\"M500 275c0 8-7 15-15 15H35c-8 0-15-7-15-15v-30c0-8 7-15 15-15h450c8 0 15 7 15 15z\"></path>\n </svg>\n </i>\n </button>\n </div>\n )}\n <fieldset class={`flex flex-col @md:mx-0 @md:rounded-t-xl ${this.isMinimized && !this.isExpanded ? \"\" : \"p-4 user-input-fieldset\"} transition-colors`}>\n {/* <div class={`text-white wes-text-display7 pb-3 help-text ${this.isOpen ? \"hide-title\" : \"\"}`} aria-hidden=\"true\">\n Need help? Ask AI.\n </div> */}\n {!this.isExpanded && this.isOpened && this.messages.length === 0 && <privacy-modal show={this.showPrivacy} message={this.botSettings.privacyTemplate}></privacy-modal>}\n <div class=\"flex-1 align-bottom\">\n <div class=\"grow-wrap show-grid after:whitespace-pre-wrap after:invisible relative\" data-replicated-value=\"\" aria-disabled=\"false\">\n {this.botSettings.imageUpload && (\n <div\n aria-disabled=\"true\"\n class={`agent-input-icon wes-transition-opacity absolute flex items-center left-0 bottom-0 h-full pl-4 pr-2 ${this.hideAllButtons ? \"hidden\" : \"\"} ${this.isContent ? \"hidden\" : \"\"}`}\n >\n <button\n class=\"plus-icon\"\n onClick={e => {\n e.stopPropagation()\n e.preventDefault()\n this.showMenu = !this.showMenu\n }}\n >\n <i class=\"plus-icon wes-block wes-text-body1\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" width=\"20\" height=\"20\">\n <path d=\"M10.75 4.75a.75.75 0 0 0-1.5 0v4.5h-4.5a.75.75 0 0 0 0 1.5h4.5v4.5a.75.75 0 0 0 1.5 0v-4.5h4.5a.75.75 0 0 0 0-1.5h-4.5v-4.5Z\"></path>\n </svg>\n </i>\n </button>\n {/* Option Box */}\n <div\n class={`absolute bottom-6 left-0 w-44 bg-white rounded-lg shadow-lg transition-all duration-300 ease-in-out z-10\n ${this.showMenu ? \"opacity-100 scale-100 pointer-events-auto\" : \"opacity-0 scale-90 pointer-events-none\"}`}\n >\n <ul class=\"space-y-2\" ref={el => (this.plusIconRef = el)}>\n <li\n class=\"px-4 py-2 hover:bg-gray-100 cursor-pointer flex\"\n onClick={() => {\n this.uploadElem.click()\n this.isOpen = false\n this.showMenu = false\n }}\n >\n <input\n type=\"file\"\n multiple\n name=\"files[]\"\n id=\"fileInput\"\n accept=\"image/*\"\n class=\"image-upload__input\"\n onChange={($event: any) => {\n // this.isImage = true\n this.onInputChange($event.target.files)\n }}\n ref={el => (this.uploadElem = el as HTMLInputElement)}\n />\n <div class=\"mr-1\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"h-5 w-5 shrink-0\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M18.0322 5.02393C17.7488 5.00078 17.3766 5 16.8 5H11.5002C11.3 6 11.0989 6.91141 10.8903 7.85409C10.7588 8.44955 10.6432 8.97304 10.3675 9.41399C10.1262 9.80009 9.80009 10.1262 9.41399 10.3675C8.97304 10.6432 8.44955 10.7588 7.85409 10.8903C7.81276 10.8994 7.77108 10.9086 7.72906 10.9179L5.21693 11.4762C5.1442 11.4924 5.07155 11.5001 5 11.5002V16.8C5 17.3766 5.00078 17.7488 5.02393 18.0322C5.04612 18.3038 5.0838 18.4045 5.109 18.454C5.20487 18.6422 5.35785 18.7951 5.54601 18.891C5.59546 18.9162 5.69617 18.9539 5.96784 18.9761C6.25118 18.9992 6.62345 19 7.2 19H10C10.5523 19 11 19.4477 11 20C11 20.5523 10.5523 21 10 21H7.16144C6.6343 21 6.17954 21 5.80497 20.9694C5.40963 20.9371 5.01641 20.8658 4.63803 20.673C4.07354 20.3854 3.6146 19.9265 3.32698 19.362C3.13419 18.9836 3.06287 18.5904 3.03057 18.195C2.99997 17.8205 2.99998 17.3657 3 16.8385L3 11C3 8.92477 4.02755 6.93324 5.4804 5.4804C6.93324 4.02755 8.92477 3 11 3L16.8385 3C17.3657 2.99998 17.8205 2.99997 18.195 3.03057C18.5904 3.06287 18.9836 3.13419 19.362 3.32698C19.9265 3.6146 20.3854 4.07354 20.673 4.63803C20.8658 5.01641 20.9371 5.40963 20.9694 5.80497C21 6.17954 21 6.6343 21 7.16144V10C21 10.5523 20.5523 11 20 11C19.4477 11 19 10.5523 19 10V7.2C19 6.62345 18.9992 6.25118 18.9761 5.96784C18.9539 5.69617 18.9162 5.59546 18.891 5.54601C18.7951 5.35785 18.6422 5.20487 18.454 5.109C18.4045 5.0838 18.3038 5.04612 18.0322 5.02393ZM5.28014 9.41336L7.2952 8.96556C8.08861 8.78925 8.24308 8.74089 8.35381 8.67166C8.48251 8.59121 8.59121 8.48251 8.67166 8.35381C8.74089 8.24308 8.78925 8.08861 8.96556 7.2952L9.41336 5.28014C8.51014 5.59289 7.63524 6.15398 6.89461 6.89461C6.15398 7.63524 5.59289 8.51014 5.28014 9.41336ZM17 15C17 14.4477 17.4477 14 18 14C18.5523 14 19 14.4477 19 15V17H21C21.5523 17 22 17.4477 22 18C22 18.5523 21.5523 19 21 19H19V21C19 21.5523 18.5523 22 18 22C17.4477 22 17 21.5523 17 21V19H15C14.4477 19 14 18.5523 14 18C14 17.4477 14.4477 17 15 17H17V15Z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </div>\n <div>Upload Images</div>\n </li>\n\n {/* <li\n class=\"px-4 pb-2 hover:bg-gray-100 cursor-pointer flex\"\n onClick={() => {\n // this.captureScreen()\n // this.toggleBox()\n this.showMenu = !this.showMenu\n }}\n >\n <div class=\"mr-1 mt-px\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" width=\"20\" height=\"20\">\n <path d=\"M12 9a3.75 3.75 0 1 0 0 7.5A3.75 3.75 0 0 0 12 9Z\"></path>\n <path\n fill-rule=\"evenodd\"\n d=\"M9.344 3.071a49.52 49.52 0 0 1 5.312 0c.967.052 1.83.585 2.332 1.39l.821 1.317c.24.383.645.643 1.11.71.386.054.77.113 1.152.177 1.432.239 2.429 1.493 2.429 2.909V18a3 3 0 0 1-3 3h-15a3 3 0 0 1-3-3V9.574c0-1.416.997-2.67 2.429-2.909.382-.064.766-.123 1.151-.178a1.56 1.56 0 0 0 1.11-.71l.822-1.315a2.942 2.942 0 0 1 2.332-1.39ZM6.75 12.75a5.25 5.25 0 1 1 10.5 0 5.25 5.25 0 0 1-10.5 0Zm12-1.5a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z\"\n clip-rule=\"evenodd\"\n ></path>\n </svg>\n </div>\n <div>Capture</div>\n </li> */}\n </ul>\n </div>\n </div>\n )}\n <div class={`textarea ${this.isContent ? \"hidden\" : \"\"}`}>\n <div id=\"previewContainer\"></div>\n {this.showTextarea && (\n <textarea\n class={`resize-none overflow-hidden text-ellipsis focus:outline-none w-full ${this.hideAllButtons ? \"hidden\" : \"\"}`}\n data-testid=\"user-input-textarea\"\n rows={this.rowCount}\n name=\"userMessage\"\n placeholder={this.botSettings?.botPlaceholderText ?? \"Ask me anything\"}\n // aria-labelledby=\"message-submit\"\n ref={el => (this.inputEl = el as HTMLTextAreaElement)}\n onKeyUp={_e => {\n this.adjustHeight()\n }}\n onKeyDown={e => {\n this.handleKeyDown(e)\n if (e.key === \"Enter\" && !e.shiftKey) {\n this.isOpened = true\n }\n }}\n ></textarea>\n )}\n </div>\n {this.botSettings.enableMic && (\n <label class={`absolute bottom-0 ${this.isContent ? \"hidden\" : \"\"} ${this.hideAllButtons ? \"w-full\" : \"right-8\"}`}>\n <audio-recorder\n component-type=\"bot\"\n onStartRecord={_ev => {\n // console.log(\"test\", ev)\n this.hideAllButtons = true\n }}\n onStopRecord={_ev => {\n this.hideAllButtons = false\n }}\n onSendTranscript={ev => {\n // console.log(\"ev\", ev)\n\n setTimeout(() => {\n // console.log(\"input\", this.inputEl)\n if (this.inputEl) {\n this.inputEl.value = ev.detail\n this.adjustHeight()\n this.showSubmit = true\n }\n }, 1000)\n }}\n style={{ width: this.hideAllButtons ? \"100%\" : \"10%\" }}\n ></audio-recorder>\n </label>\n )}\n <label class={`absolute right-0 bottom-0 ${this.isContent ? \"hidden\" : \"\"} ${this.hideAllButtons ? \"hidden\" : \"\"}`}>\n <button\n class=\"btn-bg-color text-white transition rounded-full p-1.5 self-center\"\n // class=\"rounded-full flex items-center justify-center disabled:cursor-not-allowed bg-transparent hover:bg-blue-95 disabled:bg-transparent disabled:hover:bg-transparent h-8 w-8\"\n tabindex=\"-1\"\n id=\"message-submit\"\n // type=\"submit\"\n onClick={e => {\n e.preventDefault()\n if (!this.inputEl || this.inputEl.value.trim() === \"\") {\n return\n }\n this.isOpened = true\n // this.handleMessageSubmit(e)\n this.handleSend(this.inputEl?.value)\n }}\n >\n <i class=\"ai-icon block text-body1\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" fill=\"currentColor\" class=\"size-6\">\n <path\n fill-rule=\"evenodd\"\n d=\"M8 14a.75.75 0 0 1-.75-.75V4.56L4.03 7.78a.75.75 0 0 1-1.06-1.06l4.5-4.5a.75.75 0 0 1 1.06 0l4.5 4.5a.75.75 0 0 1-1.06 1.06L8.75 4.56v8.69A.75.75 0 0 1 8 14Z\"\n clip-rule=\"evenodd\"\n ></path>\n </svg>\n </i>\n </button>\n </label>\n\n <button\n class={`${this.isContent && !this.isMinimized ? \"block\" : \"hidden\"} rounded-full isContent`}\n aria-label=\"Return to AI\"\n onClick={ev => {\n ev.preventDefault()\n this.isContent = false\n this.isOpened = true\n this.isExpanded = true\n }}\n >\n <div class=\"font-bold text-body2 text-white hidden md:flex pl-3 items-center\">\n Return to AI\n <i class=\"inline-block pl-3 ai-minimize-icon block wes-icon--loading text-body1\" style={{ color: \" rgb(255, 255, 255)\" }}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 16\" fill=\"none\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M1.30775 9.15362H14.077C14.4231 9.15362 14.577 9.5767 14.3462 9.80747L10.6539 13.4998C10.4231 13.7305 10.4231 14.0767 10.6539 14.3075L11.5001 15.1536C11.7308 15.3844 12.077 15.3844 12.3077 15.1536L19.0385 8.38439C19.2693 8.15362 19.2693 7.80747 19.0385 7.5767L12.3077 0.845928C12.077 0.615159 11.7308 0.615159 11.5001 0.845928L10.6924 1.65362C10.4616 1.88439 10.4616 2.23054 10.6924 2.46131L14.3847 6.15362C14.6154 6.42285 14.4616 6.84593 14.1154 6.84593H1.34621C1.03852 6.84593 0.769287 7.0767 0.769287 7.38439V8.53824C0.769287 8.84593 1.00006 9.15362 1.30775 9.15362Z\"\n fill=\"white\"\n ></path>\n </svg>\n </i>\n </div>\n </button>\n </div>\n\n {this.isExpanded && !this.isOpened && <privacy-modal show={this.showPrivacy} message={this.botSettings.privacyTemplate}></privacy-modal>}\n </div>\n </fieldset>\n </form>\n {/* )} */}\n\n <div\n slot=\"bot\"\n class=\"fab pointer-events-auto fixed right-7 whitespace-nowrap transition-transform duration-300 ease-in-out\"\n style={{\n opacity: this.isMinimized ? \"1\" : \"0\",\n transform: this.isMinimized ? \"translateX(0)\" : \"translateX(-100%)\",\n pointerEvents: this.isMinimized ? \"auto\" : \"none\",\n transformOrigin: \"50% 50% 0px\",\n }}\n >\n <button\n class=\"rounded-full flex cursor-pointer items-center pr-[14px] md:gap-x-3 focus:outline focus:outline-2 focus:outline-offset-2 focus:outline-blue-focused\"\n tabindex=\"0\"\n onClick={() => {\n this.openChat()\n }}\n >\n {/* <div class=\"fixed bottom-4 left-4 flex items-center space-x-2 bg-gradient-to-r from-green-400 to-teal-500 text-white px-4 py-2 rounded-full shadow-lg\"> */}\n <div class=\"w-10 h-10 flex items-center justify-center bg-white rounded-full border relative\">\n {/* <div class=\"absolute bottom-[-2px] left-[3px] w-2 h-2 border-r-2 border-b-2 border-white rotate-45\"></div> */}\n {/* <svg class=\"w-5 h-5 text-gray-600\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 12l2 2 4-4\"></path>\n </svg> */}\n {this.botSettings.botLaunchIcon && <img src={this.botSettings.botLaunchIcon} alt=\"bot icon\" class=\"w-8 h-8 rounded-lg\" />}\n\n {!this.botSettings.botLaunchIcon && (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" stroke=\"#2095ae\">\n <g stroke-width=\"0\"></g>\n <g stroke-linecap=\"round\" stroke-linejoin=\"round\"></g>\n <g>\n {\" \"}\n <path\n d=\"M21 12C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12Z\"\n stroke=\"#2095ae\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n ></path>{\" \"}\n </g>\n </svg>\n )}\n </div>\n <span class=\"font-medium text-white\">Ask {this.botSettings?.botName}</span>\n </button>\n </div>\n </div>\n )\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ai12z-bot.js","sourceRoot":"","sources":["../../../src/components/ai12z-bot/ai12z-bot.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, h, State, Prop, Element, Watch, Listen, Event, EventEmitter, Method, Env, Host } from \"@stencil/core\"\nimport { io, Socket } from \"socket.io-client\"\nimport showdown from \"showdown\"\nimport {\n getEndpoint,\n generateUUID,\n updateButtonEvents,\n getConfig,\n getOrCreateVisitorId,\n getComponentByControlType,\n splitContent,\n getMetaInfo,\n checkStatus,\n} from \"../../utils/utils\"\nimport Handlebars from \"handlebars\"\nimport { setBotElement } from \"../../utils/global-store\"\n// import $ from \"jquery\"\n// import { Model } from \"survey-jquery\"\n\n@Component({\n tag: \"ai12z-bot\",\n styleUrls: [\"./ai12z-bot.css\", \"../../global/tailwind.min.css\", \"../../global/survey.min.css\", \"./ai12z-chatbot.css\"],\n shadow: true,\n})\nexport class Ai12zBot {\n private cdnPath: string = \"https://cdn.ai12z.net/assets/bot\"\n @Element() el: HTMLElement\n\n @Prop({ reflect: true }) dataKey: string = Env.DATA_KEY || \"\"\n @Prop({ reflect: true }) dataMode: string = Env.DATA_MODE || \"prod\" // \"local\", \"dev\", or \"prod\"\n @Prop({ reflect: true }) configId: string\n @Prop({ reflect: true }) dataAttributes: string\n @Prop() excludeTags: Array<string> = []\n @Prop() includeTags: Array<string> = []\n\n // @Prop({ reflect: true }) type: string = \"v1\"\n\n @State() botSettings: any = {}\n @State() canRender = true\n @State() isOpen: boolean = false\n @State() isListening: boolean = false\n @State() showSubmit: boolean = false\n @State() hideAllButtons: boolean = false\n @State() showMenu: boolean = false\n\n @State() botlogo: string = this.cdnPath + `/v1/ai12z-bot/img/chatbot.jpg`\n @State() botAvatar: string = this.cdnPath + `/v1/ai12z-bot/img/chatbot.jpg`\n\n @State() showWelcomeScreen: boolean = true\n @State() hideInput: boolean = false\n @State() showHistory: boolean = false\n @State() conversationId: string = \"\"\n @State() surveyDomId: string = \"\"\n @State() searchResults: any = {}\n @State() buttons: Array<{ id: string; label: string }> = []\n @State() currentDomId: string = \"\"\n @State() messages: { text: string; isUser: boolean; id: string; timestamp: string; images: any[]; conversationId: string; formModel: any; surveyDomId: string }[] = [\n // { text: this.welcomeMessage === \"\" ? \"Hi there! How can I assist you today\" : this.welcomeMessage, isUser: false, id: `chatbot-${generateUUID()}`, timestamp: \"\", images: [] },\n ]\n @State() questionCounter: number = 0\n @State() isChatOpen: boolean = false\n @State() visitorID: string\n @State() timestamp: string = \"\"\n @State() rowCount = 1\n @State() isBot = false\n @State() conversationHistory = []\n @State() isMenuOpen: boolean = false\n @State() query: string = \"\"\n @State() scriptArray = []\n private timer: NodeJS.Timeout\n private inputEl!: HTMLTextAreaElement\n private uploadElem: HTMLInputElement\n private followUpElem: HTMLInputElement\n menuRef: HTMLElement\n menuV2Ref: HTMLElement\n plusIconRef: HTMLElement\n private socket: Socket\n imagesBase64List = []\n\n /* new ersion of bot */\n @State() isAnimated = false\n @State() isMinimized = false\n @State() isOpened = false\n @State() isContent = false\n @State() isExpanded = true\n @State() isToggled = false\n @State() showTextarea: boolean = false // Changing this will trigger a re-render\n @State() showPrivacy: boolean = false // Changing this will trigger a re-render\n @Event({\n eventName: \"messageSent\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n messageSent: EventEmitter\n @Event({\n eventName: \"messageReceived\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n messageReceived: EventEmitter\n\n @Event({\n eventName: \"close\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n close: EventEmitter\n\n @Event({\n eventName: \"open\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n open: EventEmitter\n\n @Event({\n eventName: \"minimize\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n minimize: EventEmitter\n\n @Event({\n eventName: \"errored\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n errored: EventEmitter\n\n @Event({\n eventName: \"formSubmitted\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n formSubmitted!: EventEmitter<any>\n\n toggleBox = () => {\n this.isOpen = !this.isOpen\n }\n\n toggleBot = e => {\n e.stopPropagation()\n this.isToggled = !this.isToggled\n }\n toggleListening = () => {\n this.isListening = !this.isListening\n }\n\n @Listen(\"buttonClick\")\n buttonClickHandler(event: CustomEvent) {\n this.showWelcomeScreen = false\n this.hideInput = false\n this.query = event.detail.action\n this.handleSend(event.detail.label)\n }\n\n @Listen(\"sendQueryToBot\")\n sendQueryToBotHandler(event: CustomEvent) {\n this.showWelcomeScreen = false\n this.hideInput = false\n this.query = event.detail\n this.handleSend(event.detail)\n }\n\n @Listen(\"deleteChatHistory\")\n deleteChatHistoryHandler(event: CustomEvent) {\n const chatHistory = this.getConversationHistory()\n const updatedHistory = chatHistory.filter(item => item.conversationId !== event.detail.conversationId)\n localStorage.setItem(`${this.visitorID}`, JSON.stringify(updatedHistory))\n this.conversationHistory = updatedHistory\n }\n\n @Listen(\"chatClick\")\n chatClickHandler(event: CustomEvent) {\n this.messages = event.detail\n this.showWelcomeScreen = false\n this.hideInput = false\n this.showHistory = false\n }\n\n @Listen(\"openChat\")\n openChatHandler(_event: CustomEvent) {\n // console.log(\"open chat event\", event)\n this.isChatOpen = true\n }\n\n @Listen(\"formComplete\")\n formSubmittedHandler(event: CustomEvent) {\n event.stopPropagation()\n // console.log(\"Form submitted\", event.detail)\n this.formSubmitted.emit(event.detail.data)\n }\n\n handleClickOutside(event: MouseEvent) {\n // Check if the clicked target is outside the menu\n const target = event.target as HTMLElement\n if (this.isMenuOpen && this.menuRef && !this.menuRef.contains(target)) {\n this.isMenuOpen = false\n }\n\n if (this.isToggled && this.menuV2Ref && !this.menuV2Ref.contains(target)) {\n // console.log(\"Clicked outside the menu, closing...\")\n this.isToggled = false\n }\n\n if (this.showMenu && this.plusIconRef && !this.plusIconRef.contains(target)) {\n this.showMenu = false\n }\n }\n\n componentDidLoad() {\n setBotElement(this.el) // register globally\n // console.log(\"Bot Settings getAssetPath\")\n this.updateScreenSize()\n window.addEventListener(\"resize\", this.updateScreenSize.bind(this))\n // debugger;\n document.addEventListener(\"click\", this.handleClickOutside.bind(this))\n // Load jQuery first\n const jQueryScript = document.createElement(\"script\")\n jQueryScript.src = this.cdnPath + \"/v1/jquery.min.js\" // Path relative to the www root\n jQueryScript.onload = () => {\n // console.log(\"jQuery loaded\")\n // Load the script that loads and exposes SurveyJS\n const loadSurveyScript = document.createElement(\"script\")\n loadSurveyScript.src = this.cdnPath + \"/v1/survey.jquery.min.js\" // Path relative to the www root\n loadSurveyScript.onload = () => {\n // console.log(\"SurveyJS loaded and SurveyModel exposed\")\n }\n loadSurveyScript.onerror = err => {\n console.error(\"Failed to load Forms:\", err)\n }\n document.head.appendChild(loadSurveyScript)\n this.el.shadowRoot.appendChild(loadSurveyScript)\n }\n jQueryScript.onerror = err => {\n console.error(\"Failed to load jQuery:\", err)\n }\n document.head.appendChild(jQueryScript)\n\n const ai12zHeading = document.createElement(\"script\")\n ai12zHeading.text = `\n var ai12zChat = window[\"ai12z\"] = {}\n `\n document.head.appendChild(ai12zHeading)\n this.el.shadowRoot.appendChild(ai12zHeading)\n this.el.shadowRoot.appendChild(jQueryScript)\n }\n\n disconnectedCallback() {\n // Remove event listener when component is destroyed\n document.removeEventListener(\"click\", this.handleClickOutside.bind(this))\n\n window.removeEventListener(\"resize\", this.updateScreenSize)\n\n // clearInterval(this.timer)\n }\n\n checkHistory = () => {\n const storedMessages = localStorage.getItem(`${this.visitorID}`)\n let chatHistory = []\n if (storedMessages) {\n chatHistory = JSON.parse(storedMessages)\n chatHistory = chatHistory.filter(item => item.projectId === this.botSettings?.pId)\n }\n this.showHistory = chatHistory.length > 0 && this.botSettings.botVersion === \"v1\" ? true : false\n // console.log(\"showHistory\", this.showHistory)\n }\n\n @Method()\n async sendMessage(message: string, displayText?: string) {\n this.query = message\n if (!this.isChatOpen) {\n this.isChatOpen = true\n }\n\n this.handleSend(displayText ?? message)\n }\n\n @Method()\n async sendQuery(query: string) {\n console.warn(\"sendQuery mehtdod is deprecated, use sendMessage instead\")\n this.handleSend(query)\n }\n\n @Method()\n async sendJSON(jsonData: Object, displayText: string) {\n this.query = JSON.stringify(jsonData)\n if (!this.isChatOpen) {\n this.isChatOpen = true\n }\n this.handleSend(displayText)\n }\n\n setLocalData() {\n const botData = { qCounter: this.questionCounter }\n localStorage.setItem(`ai12z-bot-data`, JSON.stringify(botData))\n }\n\n @Method()\n async openBot() {\n this.openChat()\n }\n\n @Method()\n async action(type) {\n // this.isChatOpen = !this.isChatOpen\n if (type === \"open\") {\n this.isChatOpen = true\n this.open.emit(\"open\")\n this.setLocalData()\n }\n if (type === \"minimize\") {\n this.isChatOpen = false\n this.minimize.emit(\"minimize\")\n }\n const getVisitorKey = localStorage.getItem(`ai12z-visitorId`)\n this.visitorID = \"ai12z-\" + getVisitorKey\n this.checkHistory()\n if (type === \"close\") {\n this.isChatOpen = false\n this.searchResults = {}\n this.surveyDomId = \"\"\n this.showWelcomeScreen = true\n this.showHistory = this.messages.length > 0 ? true : false\n // this.saveConversation()\n this.messages = [...[]]\n this.conversationId = \"\"\n this.close.emit(\"close\")\n clearInterval(this.timer)\n }\n }\n\n openChat() {\n this.isOpened = true\n this.isExpanded = false\n this.isMinimized = false\n this.isContent = false\n this.open.emit(\"open\")\n this.toggleTextarea()\n }\n\n private get mainObject(): any {\n if (!window[\"ai12z\"]) {\n window[\"ai12z\"] = {}\n }\n return window[\"ai12z\"]\n }\n\n toggleMenu(e) {\n e.stopPropagation()\n this.isMenuOpen = !this.isMenuOpen\n }\n\n adjustHeight() {\n if (this.inputEl) {\n this.inputEl.style.height = \"auto\"\n this.inputEl.style.height = this.inputEl.scrollHeight + \"px\"\n }\n }\n\n connectedCallback() {\n //this.parseMyObjectProp(this.myObject);\n checkStatus(this.dataKey, this.dataMode).then(enable => {\n this.canRender = enable\n // if (!enable) {\n // console.log(\"ai12z canRender\", this.canRender)\n // }\n })\n this.configBot()\n }\n\n componentWillLoad() {\n this.checkCustomSlot()\n this.timestamp = this.formatTimestamp(new Date())\n this.socketConnection()\n\n // this.configBot()\n }\n\n configBot() {\n const payload = {\n apiKey: this.dataKey,\n configId: this.configId,\n configType: \"bot\",\n }\n getConfig(payload, this.dataMode).then(data => {\n if (data) {\n // console.log(\"Bot Settings\", data)\n this.botSettings = data\n if (!this.botSettings.botVersion) {\n this.botSettings.botVersion = \"v1\" // Default to v1 if not specified\n }\n if (this.botSettings.botVersion === \"v2\" && !this.botSettings.isExpanded && !this.isBot) {\n // this.botSettings.imageUpload = true\n this.isMinimized = true\n }\n if (!this.botSettings.linkTarget) {\n this.botSettings.linkTarget = \"_blank\"\n }\n if (this.botSettings.botVersion === \"v2\") {\n const getVisitorKey = localStorage.getItem(`ai12z-visitorId`)\n this.visitorID = \"ai12z-\" + getVisitorKey\n this.toggleTextarea()\n }\n if (this.botSettings.privacyTemplate && this.botSettings.privacyTemplate !== \"\") {\n this.showPrivacy = true\n }\n }\n })\n }\n\n checkCustomSlot() {\n const slot = this.el[\"children\"]\n let slotHasContent = slot && slot.length > 0\n if (slotHasContent) {\n for (var i = 0; i < slot.length; i++) {\n if (slot[i].tagName.toLowerCase() === \"bot\" || slot[i].getAttribute(\"slot\") === \"bot\") {\n this.isBot = true\n this.isExpanded = false\n }\n }\n }\n }\n\n @Watch(\"currentDomId\")\n watchStateHandler(_newValue: boolean, _oldValue: boolean) {\n this.socket.off(\"response\")\n this.socket.off(\"end_response\")\n // console.log(\"currentDomId changed\")\n // console.log(\"questionCounter\", this.botSettings.maxQuestion)\n if (this.botSettings.maxQuestion === undefined || this.botSettings.maxQuestion === 0) {\n this.botSettings.maxQuestion = 0\n this.handleBotMessages()\n } else if (this.questionCounter <= this.botSettings.maxQuestion) {\n this.handleBotMessages()\n }\n }\n\n generateMessage() {\n return {\n text: \"\",\n isUser: false,\n id: `chatbot-${generateUUID()}`,\n timestamp: new Date().toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" }),\n images: [],\n conversationId: this.conversationId,\n formModel: {},\n surveyDomId: \"\",\n }\n }\n hideSpinner(chatData) {\n // Logic for hiding the spinner (assumed to return a Promise if async is needed)\n return new Promise(resolve => {\n const renderedBubble = this.el.shadowRoot.querySelector(`#${chatData.id}`)\n if (renderedBubble) {\n ;(renderedBubble.querySelector(\"#spinner\") as HTMLElement).style.display = \"none\"\n }\n // Assume some async action here, then resolve\n console.log(\"Spinner hidden\")\n resolve(true)\n })\n }\n\n async processTemplateData(chatData, data) {\n // Step 1: Hide the spinner\n await this.hideSpinner(chatData)\n let handletemplate\n let currentResponse\n\n if (data.controlType === \"template\") {\n const currentTemplate = data.controlData?.template\n currentResponse = data.controlData?.data.source\n handletemplate = Handlebars.compile(currentTemplate[0]?.content)\n }\n\n // Step 3: Append the control element if both it and the target container exist\n const targetContainer = this.el.shadowRoot.querySelector(`#${chatData.id}`)\n if (targetContainer) {\n Handlebars.registerHelper(\"processArray\", function (array) {\n if (!Array.isArray(array)) {\n return \"\" // Return an empty string if the input is not an array\n }\n return new Handlebars.SafeString(JSON.stringify(array))\n })\n // console.log(\"data\", data.controlData)\n if (data.controlData && data.controlData.data) {\n data.controlData.data.msgId = chatData.id //`msg-${chatData.id}`\n }\n targetContainer.innerHTML = handletemplate({ msgId: `${chatData.id}`, source: currentResponse, llm: data.controlData.data.llm })\n targetContainer.classList.add(\"overflow-x-auto\")\n targetContainer.classList.add(\"scroll-nobar\")\n setTimeout(() => {\n this.renderTemplateData(chatData)\n }, 1000)\n // Step 4: Wait until the control element is rendered\n await this.waitForElementRender(targetContainer as HTMLElement)\n\n // Step 5: Retrieve the content and emit the updated data\n chatData.text = targetContainer.innerHTML\n\n this.messages = this.messages.map(item => (item.id === chatData.id ? chatData : item))\n }\n }\n\n renderTemplateData(chatData) {\n // console.log(`#${chatData.id}`)\n\n if (!this.mainObject[`${chatData.id}`]) {\n this.mainObject[`${chatData.id}`] = {}\n }\n const scripts = this.el.shadowRoot.querySelectorAll(`#${chatData.id} script`)\n scripts.forEach(script => {\n const newScript = document.createElement(\"script\")\n newScript.type = \"text/javascript\"\n\n // If it's an external script (with `src`), copy the `src` attribute\n if ((script as HTMLScriptElement).src) {\n newScript.src = (script as HTMLScriptElement).src\n } else {\n // If it's inline, set the JavaScript code as the content of the new <script> element\n // newScript.innerHTML = `const source = ${JSON.stringify(chatData.data.source)};\\n`\n // newScript.innerHTML += `const llm = ${JSON.stringify(chatData.data.llm)};\\n`\n newScript.innerHTML += script.innerHTML\n }\n // Append the new script to the document body to execute it\n if (!newScript.src) {\n this.scriptArray.push(newScript)\n }\n script.parentNode?.removeChild(script)\n\n // Optionally, remove the old <script> tag from the DOM\n\n if (newScript.src && !this.el.shadowRoot.querySelector(`script[src=\"${newScript.src}\"]`)) {\n this.el.shadowRoot.appendChild(newScript)\n } else {\n const scriptDom = this.el.shadowRoot.querySelector(`script[type=\"text/javascript\"]`)\n // console.log(\"scriptDom\", scriptDom)\n // console.log(\"newScript\", newScript)\n if (scriptDom && !newScript.src) {\n console.log(\"scriptDom\", this.scriptArray)\n if (this.scriptArray.length > 0) {\n this.scriptArray.forEach(script => {\n if (!script.src && script.innerHTML !== newScript.innerHTML) {\n this.el.shadowRoot.appendChild(newScript)\n }\n })\n } else {\n // console.log(\"ele\", this.el.shadowRoot)\n this.el.shadowRoot.appendChild(newScript)\n }\n // this.el.shadowRoot.appendChild(newScript)\n } else {\n // console.log(\"scriptDom not found\")\n this.el.shadowRoot.appendChild(newScript)\n }\n }\n })\n // Step 4: Ensure Google Charts is loaded, then call the `drawGoogleChart` function\n setTimeout(() => {\n this.initializeScript(chatData.id)\n }, 1000)\n }\n\n initializeScript(id) {\n if (typeof this.mainObject[`${id}`][\"onLoadCallback\"] === \"function\") {\n this.mainObject[`${id}`][\"onLoadCallback\"]()\n }\n // window[\"google\"]?.charts.load(\"current\", { packages: [\"corechart\"] })\n // window[\"google\"]?.charts.setOnLoadCallback()\n }\n\n async processChatData(chatData, data) {\n // Step 1: Hide the spinner\n await this.hideSpinner(chatData)\n\n // Step 2: Get the control element based on control type\n const controlElement = getComponentByControlType(data, \"bot\")\n\n const tmpControlType = data.controlData?.data?.source?.carousel?.type\n\n // Step 3: Append the control element if both it and the target container exist\n const targetContainer = this.el.shadowRoot.querySelector(`#${chatData.id}`)\n if (targetContainer && controlElement) {\n // console.log(\"controlElement\", targetContainer)\n targetContainer.appendChild(controlElement)\n targetContainer[\"style\"].width = \"98%\"\n\n if (tmpControlType === \"custom\" || tmpControlType === \"list\" || tmpControlType === \"slider\") {\n targetContainer.classList.remove(\"p-2.5\")\n targetContainer.classList.add(\"p-0\")\n targetContainer.classList.add(\"md:p-2.5\")\n }\n\n // Step 4: Wait until the control element is rendered\n await this.waitForElementRender(targetContainer as HTMLElement)\n\n // Step 5: Retrieve the content and emit the updated data\n chatData.text = targetContainer.innerHTML\n this.messages = this.messages.map(item => (item.id === chatData.id ? chatData : item))\n }\n }\n\n // Helper function to detect when the target element is rendered\n waitForElementRender(element: HTMLElement) {\n return new Promise<void>(resolve => {\n const observer = new MutationObserver(_mutations => {\n resolve()\n observer.disconnect()\n })\n observer.observe(element, { childList: true, subtree: true })\n })\n }\n\n handleBotMessages() {\n // const domId = this.messages[this.messages.length - 1].id\n this.socket.on(\"response\", event => {\n this.handleMessage(event.data, `${this.currentDomId}`) // Use the unique ID to handle messages\n })\n this.socket.on(\"end_response\", data => {\n // console.log(\"end_response\")\n this.messageReceived.emit(data)\n const converter = new showdown.Converter()\n let finalHtml = converter.makeHtml(data.answer)\n // document.getElementById(\"messageId\").innerHTML = finalHtml;\n finalHtml = this.updateAnchorTags(finalHtml)\n finalHtml = updateButtonEvents(finalHtml).body\n this.buttons = updateButtonEvents(finalHtml).buttons\n this.searchResults = data\n this.conversationId = data.conversationId\n if (finalHtml.indexOf(\"[control\") > -1) {\n // console.log(\"controlType\", data.controlType)\n switch (data.controlType) {\n case \"form\":\n this.surveyDomId = \"surveyElement-\" + generateUUID()\n finalHtml = finalHtml.replace(RegExp(/\\[[^>]*]/gm), `<div id=${this.surveyDomId} style=\"width:${this.botSettings.botVersion === \"v1\" ? \"330px\" : \"100%\"}\"></div>`)\n // finalHtml = `<div id=${this.surveyDomId} style=\"width:${this.botSettings.botVersion === \"v1\" ? \"330px\" : \"100%\"}\"></div>`\n this.el.shadowRoot.querySelector(`#${this.currentDomId}`).innerHTML = finalHtml\n this.updateConversations(finalHtml, data)\n break\n case \"carousel\":\n case \"list\":\n case \"template\":\n if (data.controlType && data.controlType !== null) {\n const newContent = splitContent(finalHtml)\n finalHtml = newContent.before\n this.updateConversations(finalHtml, data)\n const newMessage = this.generateMessage()\n this.messages = [...this.messages, newMessage]\n setTimeout(() => {\n data.controlType === \"template\" ? this.processTemplateData(newMessage, data) : this.processChatData(newMessage, data)\n }, 2000)\n if (newContent.after.trim().length > 0) {\n const afterMessage = this.generateMessage()\n afterMessage.text = newContent.after\n this.messages = [...this.messages, afterMessage]\n setTimeout(() => {\n if (afterMessage.id) {\n const bubbleEle = this.el.shadowRoot.querySelector(`#${afterMessage.id}`)\n if (bubbleEle && (bubbleEle.querySelector(\"#spinner\") as HTMLElement)) {\n ;(bubbleEle.querySelector(\"#spinner\") as HTMLElement).style.display = \"none\"\n }\n }\n }, 500)\n }\n }\n }\n } else {\n const currentDomElement = this.el.shadowRoot.querySelector(`#${this.currentDomId}`) as HTMLElement\n if (currentDomElement) {\n currentDomElement.style.width = \"auto\"\n }\n this.el.shadowRoot.querySelector(`#${this.currentDomId}`).innerHTML = finalHtml\n this.updateConversations(finalHtml, data)\n }\n\n this.saveConversation()\n this.scrollToBottom()\n })\n }\n\n updateAnchorTags(htmlContent: string) {\n const parser = new DOMParser()\n const doc = parser.parseFromString(htmlContent, \"text/html\")\n const anchorTags = Array.from(doc.querySelectorAll(\"a\"))\n\n anchorTags.forEach(anchor => {\n // console.log(\"targtet\")\n anchor.setAttribute(\"target\", this.botSettings.linkTarget)\n anchor.classList.add(\"ai12z-link\")\n })\n\n // Update the htmlContent with the modified anchor tags\n return doc.body.innerHTML\n }\n\n updateConversations(finalHtml, data) {\n const updatedmsg = {\n id: this.currentDomId,\n text: finalHtml,\n isUser: false,\n timestamp: new Date().toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" }),\n images: [],\n conversationId: this.conversationId,\n formModel: data.controlData?.data?.source ?? data.controlData ?? {},\n surveyDomId: this.surveyDomId,\n }\n this.addEventListeners(`#${this.currentDomId}`)\n this.messages = this.messages.map(item => (item.id === this.currentDomId ? updatedmsg : item))\n }\n\n @Watch(\"surveyDomId\")\n watchSurveyDomIdHandler(_newValue: boolean, _oldValue: boolean) {\n setTimeout(() => {\n this.renderSurvey(this.searchResults)\n }, 1000)\n }\n\n alertResults = sender => {\n console.log(\"Survey results\", sender.keyName)\n this.formSubmitted.emit(sender.data)\n // console.log(\"survey results\", sender.jsonObj)\n // const results = JSON.stringify(sender.data)\n let results = JSON.parse(JSON.stringify(sender.data))\n results.description = sender.jsonObj.description ? sender.jsonObj.description : \"\"\n const completedHtml = sender.jsonObj.completedHtml ? sender.jsonObj.completedHtml : \"Thank You!\"\n const completeText = sender.jsonObj.completeText ? sender.jsonObj.completeText : \"Submit\"\n // Object.assign(results.data, { description: sender.jsonObj.description })\n // console.log(\"sender\", results)\n // const query = \"Here is the data you requested:\" + results\n // this.query = query\n const domId = sender.implementor.renderedElement.id\n // const surveyDataId = domId.replace(\"surveyElement-\", \"\")\n // sender.implementor.renderedElement.innerHTML = `<p><b>Thank you</b></p>`\n // console.log(\"messages\", this.messages)\n const idx = this.messages.findIndex(item => item.surveyDomId === domId)\n this.currentDomId = this.messages[idx].id\n this.surveyDomId = domId\n this.updateConversations(completedHtml, {})\n const jsonData = `This JSON is from a form submission [${sender.keyName}]: ${JSON.stringify(results, null, 2)}. There is no need to show the form [${sender.keyName}] again.`\n // this.sendJSON(results, completeText)\n this.sendMessage(jsonData, completeText)\n // const lastMessage = {\n // text: \"\",\n // isUser: false,\n // id: `chatbot-${generateUUID()}`,\n // timestamp: new Date().toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" }),\n // images: [],\n // conversationId: this.conversationId,\n // formModel: {},\n // surveyDomId: \"\",\n // }\n // this.currentDomId = lastMessage.id\n // this.surveyDomId = domId\n\n // if (idx === -1) {\n // // this.handleSubmit(null, query, \"survey-res\", false, null)\n // this.messages.splice(this.messages.length - 1, 1)\n // this.messages = [...this.messages, lastMessage]\n // } else {\n // this.messages = [...this.messages.slice(0, idx), lastMessage, ...this.messages.slice(idx + 1)]\n // }\n\n this.scrollToBottom()\n // this.invokeSocket()\n }\n\n renderSurvey = chat => {\n window[\"Survey\"].Serializer.addProperty(\"survey\", {\n name: \"keyName:string\",\n visible: false, // makes it appear in Survey Creator\n category: \"general\", // optional, groups the property\n default: \"\", // optional default value\n })\n let formModel = chat.controlData?.data?.source ?? chat.controlData\n if (typeof formModel === \"object\") {\n formModel.keyName = chat.keyName\n } else {\n formModel = JSON.parse(formModel)\n formModel.keyName = chat.keyName\n }\n const survey = new window[\"Survey\"].Model(formModel)\n if (this.surveyDomId === \"\") {\n return\n }\n const domELe = this.el.shadowRoot?.querySelector(`#${this.surveyDomId}`)\n if (domELe) {\n window[\"jQuery\"](domELe).Survey({ model: survey })\n } else {\n console.error(\"Survey Element not found\")\n }\n\n if (typeof chat.controlData?.data?.source == \"object\" || typeof chat.controlData === \"object\") {\n this.hideCompleteButton(chat.controlData?.data?.source ?? chat.controlData, survey)\n } else {\n this.hideCompleteButton(JSON.parse(chat.controlData?.data?.source ?? chat.controlData), survey)\n }\n // survey.completeText = \"Submit\"\n survey.showCompletedPage = false\n if (chat.theme) {\n survey.applyTheme(JSON.parse(chat.theme))\n }\n survey.onAfterRenderQuestionInput.add(function (_, options) {\n options.htmlElement.name = options.question.name\n })\n survey.onComplete.add(this.alertResults)\n }\n\n hideCompleteButton(form: any, survey) {\n survey.completeText = form?.completeText ?? \"Submit\"\n survey.completedHTML = form?.completedHtml ?? \"Thank You!\"\n if (form && form.pages) {\n form.pages.forEach((page: any) => {\n if (page.elements) {\n // console.log(\"page.elements\", page.elements)\n page.elements.forEach((element: any) => {\n if (element.type === \"html\") {\n if (element.html.includes(\"<iframe\")) {\n survey.showCompleteButton = false\n }\n }\n })\n }\n })\n }\n }\n\n addEventListeners(msgId) {\n const container = this.el.shadowRoot.querySelector(msgId)\n if (container) {\n this.buttons.forEach(button => {\n const buttonElement = container.querySelector(`#${button.id}`)\n if (buttonElement) {\n const originalCall = buttonElement.getAttribute(\"data-original-click\") // Ensure type safety or handle undefined\n if (!originalCall) {\n console.warn(`originalClickHandler is not defined for button with id: ${button.id}`)\n return\n }\n\n // const match = originalCall.match(/^(\\w+)\\s*\\((.*)\\)$/) // extract name and arguments\n const match = originalCall.match(/^(\\w+)\\s*\\(([\\s\\S]*)\\)$/)\n // console.log(\"match\", match)\n if (match) {\n const funcName = match[1]\n const argsStr = match[2] // string of args, like \"'param', true\"\n const self = this\n const func = self[funcName]\n buttonElement.addEventListener(\"click\", () => {\n if (typeof this[funcName] === \"function\") {\n try {\n // console.log(\"args\", argsStr)\n // Evaluate arguments safely\n switch (funcName) {\n case \"sendQuery\":\n const args = eval(`[${argsStr}]`)\n args[0] = button.label\n func.apply(self, args)\n break\n case \"sendMessage\":\n const msgArgs = eval(`[${argsStr}]`)\n func.apply(self, msgArgs)\n break\n\n case \"sendJSON\":\n const tempArgs = argsStr.match(/^'(.*?)'\\s*,\\s*'(.*?)'$/)\n\n const rawObjectStr = tempArgs[1]\n .replace(/([{,])\\s*(\\w+)\\s*:/g, '$1\"$2\":') // quote keys\n .replace(/:\\s*'([^']*)'/g, ': \"$1\"') // convert single to double quotes\n\n const parsedObj = JSON.parse(rawObjectStr)\n const jsonArgs = [parsedObj, tempArgs[2]]\n func.apply(self, jsonArgs)\n break\n }\n } catch (err) {\n console.error(`Error invoking ${funcName}:`, err)\n }\n } else {\n console.warn(`Function ${funcName} not found on this`)\n }\n })\n // buttonElement.addEventListener(\"click\", this.handleButtonClick(button.label))\n }\n }\n })\n }\n }\n\n handleButtonClick = (label: string) => (_event: Event) => {\n this.inputEl.value = label\n this.handleSend(label)\n }\n\n formatTimestamp(date: Date) {\n const today = new Date()\n today.setHours(0, 0, 0, 0)\n const options: Intl.DateTimeFormatOptions = {\n weekday: \"long\",\n hour: \"numeric\",\n minute: \"numeric\",\n hour12: true,\n }\n const formatter = new Intl.DateTimeFormat(\"en-US\", options)\n const formattedDate = formatter.format(date)\n\n if (date.toDateString() === today.toDateString()) {\n return `Today, ${formattedDate.split(\" \").slice(1).join(\" \")}`\n } else {\n return formattedDate\n }\n }\n\n async socketConnection() {\n let a12z_EndPoint = getEndpoint(this.dataMode)\n this.socket = io(a12z_EndPoint, { transports: [\"polling\"] })\n\n await new Promise<void>(resolve => {\n this.socket.on(\"connect\", () => {\n console.log(\"Connected to Socket.IO server\")\n resolve()\n })\n })\n\n this.socket.on(\"connect_error\", error => {\n this.errored.emit(error)\n console.error(\"Connection error:\", error)\n })\n\n this.socket.on(\"disconnect\", () => {\n console.log(\"Disconnected from Socket.IO server\")\n this.socket.off(\"response\")\n // Handle disconnection if needed\n })\n }\n\n invokeSocket() {\n const data = {\n apiKey: this.dataKey,\n query: this.query !== \"\" ? this.query : this.inputEl.value,\n conversationId: this.conversationId,\n event: \"evaluate_query\",\n attributes: this.dataAttributes,\n excludeTags: this.excludeTags,\n includeTags: this.includeTags,\n base64Images: this.imagesBase64List,\n meta: getMetaInfo(),\n }\n this.messageSent.emit(JSON.stringify(data))\n\n this.socket.emit(\"evaluate_query\", data, (error, _response) => {\n if (error) {\n this.errored.emit(error)\n console.error(\"Error:\", error)\n } else {\n // console.log(\"Response:\", response)\n }\n })\n // this.currentDomId = this.messages[this.messages.length - 1].id\n if (this.inputEl) {\n this.inputEl.value = \"\"\n this.adjustHeight()\n }\n this.query = \"\"\n }\n\n handleMessage = (data, aiMessageId) => {\n const converter = new showdown.Converter()\n // const aiMessageBubble = document.getElementById(aiMessageId);\n\n const aiMessageBubble = this.el.shadowRoot?.querySelector(`#${aiMessageId}`)\n // const aiMessageBubble = this.element.querySelector('.ai12z-suggest-answer')\n\n if (!aiMessageBubble) {\n console.error(`Message bubble with ID ${aiMessageId} not found.`)\n return\n }\n var bubbleText = aiMessageBubble.getAttribute(\"data-bubbleText\") || \"\"\n bubbleText = bubbleText + data\n aiMessageBubble.setAttribute(\"data-bubbleText\", bubbleText)\n\n // Assuming data is a string containing the message content\n let html = converter.makeHtml(bubbleText)\n // Append new content to the existing chat bubble\n aiMessageBubble.innerHTML = html\n }\n\n onInputChange(files: FileList) {\n if (files.length > 0) {\n this.uploadImage(files)\n } else {\n console.error(files.length === 0 || \"NO IMAGE UPLOADED\")\n return false\n }\n }\n\n private uploadImage(files) {\n let newFile\n let tempImagesBase64List = []\n if (files.length > 10 || this.imagesBase64List.length > 10) {\n // this.showErrorMessage = true\n // console.error('You can upload a maximum of 10 images once at a time.');\n return\n }\n for (var i = 0; i < files.length; i++) {\n const mimeType = files[i].type\n if (!mimeType.match(\"image.*\")) {\n console.log(\"file is not an image\")\n return\n }\n newFile = files[i]\n\n const reader = new FileReader()\n\n reader.onload = () => {\n const imagePreviewContainer: HTMLElement = this.el.shadowRoot.querySelector(\"#previewContainer\")\n\n const base64Image = `data:${mimeType};base64,${(reader.result as string).split(\",\")[1]}`\n this.imagesBase64List.push(base64Image)\n tempImagesBase64List = this.imagesBase64List\n\n const newDiv = document.createElement(\"div\")\n newDiv.classList.add(\"image-Container\")\n newDiv.classList.add(\"sc-ai12z-input-form\")\n\n const img = document.createElement(\"img\")\n img.setAttribute(\"src\", reader.result as string)\n img.style.width = \"70px\"\n img.style.height = \"50px\"\n\n const deleteSpan = document.createElement(\"span\")\n deleteSpan.textContent = \"x\"\n deleteSpan.classList.add(\"delete-image\")\n deleteSpan.classList.add(\"sc-ai12z-input-form\")\n imagePreviewContainer.appendChild(newDiv)\n\n newDiv.appendChild(img)\n newDiv.appendChild(deleteSpan)\n\n deleteSpan.onclick = function (event) {\n let imgSrc = event.target[\"previousSibling\"] ? event.target[\"previousSibling\"].src : null\n let index = tempImagesBase64List.indexOf(imgSrc)\n if (index > -1) {\n tempImagesBase64List.splice(index, 1)\n }\n newDiv.remove()\n }\n\n // console.log('uploading finished, emitting an image blob to the outside world');\n }\n reader.readAsDataURL(newFile)\n reader.onloadend = () => {\n console.log(\"upload finished\")\n }\n\n reader.onerror = err => {\n console.error(\"something went wrong...\", err)\n }\n }\n }\n\n getConversationHistory() {\n const storedData = localStorage.getItem(`${this.visitorID}`)\n return storedData ? JSON.parse(storedData) : []\n }\n\n saveConversation() {\n let pastMessages = this.getConversationHistory()\n // console.log(\"saving conversation\", pastMessages)\n if (pastMessages.length > 0) {\n let conversationExists = pastMessages.filter(item => item.conversationId === this.conversationId && item.projectId === this.botSettings?.pId)\n if (conversationExists.length > 0) {\n conversationExists[0].messages = this.messages\n } else {\n pastMessages.push({\n conversationId: this.conversationId,\n projectId: this.botSettings?.pId,\n date: new Date(),\n messages: this.messages,\n })\n }\n } else {\n pastMessages.push({\n conversationId: this.conversationId,\n projectId: this.botSettings?.pId,\n date: new Date(),\n messages: this.messages,\n })\n }\n\n if (this.messages.length > 0) {\n localStorage.setItem(`${this.visitorID}`, JSON.stringify(pastMessages))\n }\n }\n\n loadConversation() {\n this.showWelcomeScreen = false\n this.hideInput = true\n this.messages = []\n const storedMessages = localStorage.getItem(`${this.visitorID}`)\n if (storedMessages) {\n this.conversationHistory = JSON.parse(storedMessages)\n this.conversationHistory = this.conversationHistory.filter(item => item.projectId === this.botSettings?.pId)\n // console.log(\"conversationHistory\", this.conversationHistory)\n // this.messages = chatHistory.map(item => ({ ...item }))\n }\n }\n\n @Listen(\"keydown\")\n handleKeyDown(ev: KeyboardEvent) {\n if (ev.key === \"Enter\" && !ev.shiftKey) {\n // console.log(\"down arrow pressed\")\n ev.preventDefault()\n if (this.inputEl?.value.trim().length > 0) {\n this.handleSend(this.inputEl.value)\n }\n }\n }\n\n startTimer() {\n // const startTime = Date.now()\n this.timer = setInterval(() => {\n this.questionCounter = 0\n // const endTime = Date.now()\n // console.log(`Timer executed after ${endTime - startTime} milliseconds`)\n localStorage.setItem(`ai12z-bot-data`, JSON.stringify({ qCounter: this.questionCounter }))\n }, this.botSettings.autoResetTimer)\n }\n\n updateScreenSize = () => {\n // console.log(\"updateScreenSize\")\n if (window.innerWidth < 640) {\n this.isMinimized = this.isOpened ? false : true\n } else if (window.innerWidth < 768) {\n this.isMinimized = this.isOpened ? false : true\n } else {\n // console.log(\"content\", this.isContent)\n this.isMinimized = this.isExpanded ? false : true\n this.isExpanded = true\n }\n }\n\n handleSend = eleValue => {\n // console.log(\"handle send\", eleValue)\n if (eleValue.trim().length === 0) {\n return\n }\n this.questionCounter = this.questionCounter + 1\n localStorage.setItem(`ai12z-bot-data`, JSON.stringify({ qCounter: this.questionCounter }))\n const inputValue = eleValue\n\n if (this.inputEl) {\n this.inputEl.value = inputValue\n }\n if (this.messages.length === 0 && this.botSettings.autoResetTimer > 0) {\n this.startTimer()\n }\n if (this.showWelcomeScreen && this.botSettings.botVersion === \"v1\") {\n this.showWelcomeScreen = false\n }\n\n if (inputValue.trim()) {\n const now = new Date()\n const timestamp = now.toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" })\n\n // Add the new message to the chat\n this.messages = [\n ...this.messages,\n {\n text: inputValue,\n isUser: true,\n id: `user-${generateUUID()}`,\n timestamp: timestamp,\n images: this.imagesBase64List,\n conversationId: this.conversationId,\n formModel: {},\n surveyDomId: \"\",\n },\n {\n text: this.botSettings.maxQuestion > 0 && this.questionCounter > this.botSettings.maxQuestion ? this.botSettings.msgLimit : \"\",\n isUser: false,\n id: `chatbot-${generateUUID()}`,\n timestamp: \"\",\n images: [],\n conversationId: this.conversationId,\n formModel: {},\n surveyDomId: \"\",\n },\n ]\n\n if (this.messages.length === 2) {\n this.visitorID = getOrCreateVisitorId()\n }\n\n this.checkHistory()\n\n setTimeout(() => {\n this.scrollToBottom()\n }, 100)\n if (this.botSettings.maxQuestion > 0 && this.questionCounter > this.botSettings.maxQuestion) {\n console.log(\"Max question limit reached\")\n this.inputEl.value = \"\"\n } else {\n this.currentDomId = this.messages[this.messages.length - 1].id\n this.invokeSocket()\n }\n // this.invokeSocket()\n\n const parent = this.el.shadowRoot.querySelector(\"#previewContainer\")\n if (parent) {\n parent.innerHTML = \"\"\n }\n\n this.imagesBase64List = []\n this.rowCount = 1\n this.showSubmit = false\n }\n }\n\n scrollToBottom() {\n const container = this.el.shadowRoot.querySelector(\".chat-body\")\n if (container) {\n container.scroll({\n top: container.scrollHeight,\n behavior: \"smooth\",\n })\n }\n }\n\n defaultTemplate() {\n return (\n <div class={{ \"prose\": true, \"floating-icon\": !this.isBot, \"right\": this.botSettings?.botPosition === \"right\", \"left\": this.botSettings?.botPosition === \"left\" }}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"white\" height=\"30px\" width=\"30px\" version=\"1.1\" id=\"Capa_1\" viewBox=\"0 0 60.019 60.019\">\n <g>\n <path d=\"M59.888,47.514l-3.839-11.518c2.056-3.615,3.14-7.716,3.14-11.893c0-13.286-10.809-24.095-24.095-24.095 c-8.242,0-15.824,4.223-20.219,11.007c3.089-1.291,6.477-2.007,10.029-2.007C39.294,9.01,51,20.716,51,35.104 c0,3.996-0.905,7.783-2.518,11.172l10.263,2.701c0.085,0.022,0.17,0.033,0.255,0.033c0.006,0,0.014-0.001,0.02,0 c0.553,0,1-0.448,1-1C60.019,47.829,59.972,47.66,59.888,47.514z\" />\n <path d=\"M24.905,11.01C11.619,11.01,0.81,21.819,0.81,35.104c0,4.176,1.084,8.277,3.14,11.893L0.051,58.693 c-0.116,0.349-0.032,0.732,0.219,1C0.462,59.898,0.727,60.01,1,60.01c0.085,0,0.17-0.011,0.255-0.033l12.788-3.365 c3.35,1.694,7.097,2.587,10.862,2.587C38.191,59.199,49,48.39,49,35.104S38.191,11.01,24.905,11.01z M41.246,26.799 c-0.152,0.083-0.317,0.123-0.479,0.123c-0.354,0-0.696-0.188-0.878-0.519c-2.795-5.097-8.115-8.679-13.883-9.349 c-0.549-0.063-0.941-0.56-0.878-1.108c0.063-0.548,0.558-0.942,1.108-0.878c6.401,0.743,12.304,4.718,15.406,10.373 C41.908,25.926,41.73,26.534,41.246,26.799z\" />\n </g>\n </svg>\n </div>\n )\n }\n\n handleFollowUp(_e) {\n // console.log(\"follow up\", e)\n this.messages = [...[]]\n this.conversationId = \"\"\n this.showWelcomeScreen = true\n }\n\n showButton(e) {\n if (e.target.value.length > 0) {\n this.showSubmit = true\n } else {\n this.showSubmit = false\n }\n }\n\n toggleTextarea() {\n // console.log(\"toggleTextarea\", this.showTextarea)\n this.showTextarea = false // Remove textarea\n setTimeout(() => {\n this.showTextarea = true // Re-add textarea after a short delay\n // console.log(\"toggleTextarea2\", this.showTextarea)\n }, 50) // Small delay ensures the element is fully unmounted\n }\n render() {\n // const imageSrc = getAssetPath(`./assets/ai12z-bot/img/chatbot.jpg`)\n const style = {\n width: this.botSettings?.botWidth ?? \"35%\",\n height: this.botSettings?.botHeight ?? \"80%\",\n }\n\n if (!this.canRender) {\n return (\n <Host>\n <span style={{ display: \"none\" }}>Failed to load ai12z bot control due to insufficient fund</span>\n </Host>\n )\n }\n return this.botSettings.botVersion === \"v1\" ? (\n <div>\n <div\n class={{\n \"right\": this.botSettings?.botPosition === \"right\",\n \"left\": this.botSettings?.botPosition === \"left\",\n \"custom-floating-icon \": this.isBot,\n \"hide-chatbot\": this.isChatOpen,\n }}\n onClick={() => this.action(\"open\")}\n >\n {!this.isBot && this.botSettings?.botPosition && this.defaultTemplate()}\n {this.isBot && <slot name=\"bot\" />}\n </div>\n {!this.isChatOpen && this.botSettings?.popover?.returnMessage && <bot-popover popoverConfig={this.botSettings?.popover}></bot-popover>}\n {this.isChatOpen && (\n <div\n class={{\n \"chat-window\": true,\n \"chat-window-open\": this.isChatOpen,\n \"chat-window-close\": !this.isChatOpen,\n \"chat-right\": this.botSettings?.botPosition === \"right\",\n \"chat-left\": this.botSettings?.botPosition === \"left\",\n }}\n style={style}\n >\n {!this.hideInput && (\n <div class=\"chat-header\">\n {this.botSettings?.buttons?.length > 0 && (\n <button class=\"hamburger\" onClick={e => this.toggleMenu(e)}>\n ☰ {/* Hamburger Icon */}\n </button>\n )}\n <img class=\"avatar\" src={this.botSettings?.botLogo ?? this.botlogo} alt=\"Avatar\" />\n <span class=\"chat-name\">{this.botSettings?.botName}</span>\n {this.showHistory && (\n <button onClick={() => this.loadConversation()}>\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"#ffffff\" width=\"25\" height=\"25\">\n <path fill=\"none\" d=\"M0 0L24 0 24 24 0 24z\"></path>{\" \"}\n <path d=\"M12 2c5.523 0 10 4.477 10 10s-4.477 10-10 10c-1.702 0-3.305-.425-4.708-1.175L2 22l1.176-5.29C2.426 15.306 2 13.703 2 12 2 6.477 6.477 2 12 2zm0 2c-4.418 0-8 3.582-8 8 0 1.335.326 2.618.94 3.766l.35.654-.656 2.946 2.948-.654.653.349c1.148.614 2.43.939 3.765.939 4.418 0 8-3.582 8-8s-3.582-8-8-8zm1 3v5h4v2h-6V7h2z\"></path>{\" \"}\n </svg>\n </button>\n )}\n <button class=\"minimizebtn\" onClick={() => this.action(\"minimize\")}>\n <svg fill=\"white\" height=\"20px\" width=\"20px\" version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path d=\"M505.752,6.248c-8.331-8.331-21.839-8.331-30.17,0L320,161.83V64c0-11.782-9.551-21.333-21.333-21.333 c-11.782,0-21.333,9.551-21.333,21.333v149.333c0,0.007,0.001,0.015,0.001,0.022c0.001,0.695,0.037,1.39,0.105,2.083 c0.031,0.318,0.091,0.627,0.136,0.94c0.054,0.375,0.098,0.75,0.171,1.122c0.071,0.359,0.17,0.708,0.259,1.061 c0.081,0.322,0.151,0.645,0.248,0.964c0.105,0.346,0.234,0.68,0.356,1.018c0.114,0.318,0.219,0.639,0.349,0.953 c0.131,0.316,0.284,0.618,0.43,0.926c0.152,0.323,0.296,0.649,0.465,0.966c0.158,0.295,0.338,0.575,0.509,0.861 c0.186,0.311,0.361,0.626,0.564,0.929c0.211,0.316,0.447,0.613,0.674,0.917c0.19,0.253,0.365,0.513,0.568,0.759 c0.892,1.087,1.889,2.085,2.977,2.977c0.246,0.202,0.506,0.378,0.759,0.568c0.304,0.228,0.601,0.463,0.917,0.674 c0.303,0.203,0.618,0.379,0.929,0.564c0.286,0.171,0.566,0.351,0.861,0.509c0.317,0.169,0.643,0.313,0.966,0.465 c0.308,0.145,0.611,0.299,0.926,0.43c0.314,0.13,0.635,0.235,0.953,0.349c0.338,0.122,0.672,0.251,1.018,0.356 c0.318,0.096,0.642,0.167,0.964,0.248c0.353,0.089,0.701,0.188,1.061,0.259c0.372,0.074,0.748,0.118,1.122,0.171 c0.314,0.045,0.622,0.104,0.94,0.136c0.693,0.068,1.388,0.105,2.083,0.105c0.007,0,0.015,0.001,0.022,0.001H448 c11.782,0,21.333-9.551,21.333-21.333c0-11.782-9.551-21.333-21.333-21.333h-97.83L505.752,36.418 C514.083,28.087,514.083,14.58,505.752,6.248z\"></path>{\" \"}\n <path d=\"M234.56,296.562c-0.031-0.318-0.091-0.627-0.136-0.94c-0.054-0.375-0.098-0.75-0.171-1.122 c-0.071-0.359-0.17-0.708-0.259-1.061c-0.081-0.322-0.151-0.645-0.248-0.964c-0.105-0.346-0.234-0.68-0.356-1.018 c-0.114-0.318-0.219-0.639-0.349-0.953c-0.131-0.316-0.284-0.618-0.43-0.926c-0.152-0.323-0.296-0.649-0.465-0.966 c-0.158-0.295-0.338-0.575-0.509-0.861c-0.186-0.311-0.361-0.626-0.564-0.929c-0.211-0.316-0.447-0.613-0.674-0.917 c-0.19-0.253-0.365-0.513-0.568-0.759c-0.892-1.087-1.889-2.085-2.977-2.977c-0.246-0.202-0.506-0.378-0.759-0.568 c-0.304-0.228-0.601-0.463-0.917-0.674c-0.303-0.203-0.618-0.379-0.929-0.564c-0.286-0.171-0.566-0.351-0.861-0.509 c-0.317-0.169-0.643-0.313-0.966-0.465c-0.308-0.145-0.611-0.299-0.926-0.43c-0.314-0.13-0.635-0.235-0.953-0.349 c-0.338-0.122-0.672-0.251-1.018-0.356c-0.318-0.096-0.642-0.167-0.964-0.248c-0.353-0.089-0.701-0.188-1.061-0.259 c-0.372-0.074-0.748-0.118-1.122-0.171c-0.314-0.045-0.622-0.104-0.94-0.136c-0.7-0.069-1.402-0.106-2.105-0.106l0,0H64 c-11.782,0-21.333,9.551-21.333,21.333C42.667,310.449,52.218,320,64,320h97.83L6.248,475.582c-8.331,8.331-8.331,21.839,0,30.17 c8.331,8.331,21.839,8.331,30.17,0L192,350.17V448c0,11.782,9.551,21.333,21.333,21.333c11.782,0,21.333-9.551,21.333-21.333 V298.667l0,0C234.667,297.964,234.629,297.262,234.56,296.562z\"></path>{\" \"}\n </svg>\n </button>\n\n <button class=\"close-btn\" onClick={() => this.action(\"close\")}>\n <svg aria-hidden=\"true\" width=\"25\" height=\"13\" viewBox=\"0 0 23 23\" fill=\"none\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n fill=\"white\"\n d=\"M9.34583 11.2L0.384011 2.23818C-0.128004 1.72617 -0.128004 0.896026 0.384011 0.384011C0.896026 -0.128004 1.72617 -0.128004 2.23818 0.384011L11.2 9.34583L20.1618 0.384011C20.6738 -0.128004 21.504 -0.128004 22.016 0.384011C22.528 0.896026 22.528 1.72617 22.016 2.23818L13.0542 11.2L22.016 20.1618C22.528 20.6738 22.528 21.504 22.016 22.016C21.504 22.528 20.6738 22.528 20.1618 22.016L11.2 13.0542L2.23818 22.016C1.72617 22.528 0.896026 22.528 0.384011 22.016C-0.128003 21.504 -0.128003 20.6738 0.384011 20.1618L9.34583 11.2Z\"\n ></path>\n </svg>\n </button>\n </div>\n )}\n <div class={`menu ${this.isMenuOpen ? \"open\" : \"closed\"}`} ref={el => (this.menuRef = el)}>\n <ul>\n {this.botSettings?.buttons?.map(item => (\n <li\n onClick={() => {\n this.isMenuOpen = !this.isMenuOpen\n this.query = item.action\n this.handleSend(item.label)\n }}\n >\n {item.label}\n </li>\n ))}\n </ul>\n </div>\n {this.hideInput && (\n <div class=\"chat-header\">\n <button\n onClick={() => {\n this.showWelcomeScreen = true\n this.hideInput = false\n this.checkHistory()\n }}\n >\n <svg aria-hidden=\"true\" width=\"20\" height=\"20\" viewBox=\"0 0 10 19\">\n <path\n fill=\"#FFFFFF\"\n d=\"M9.70711 0.542893C10.0976 0.933418 10.0976 1.56658 9.70711 1.95711L2.41421 9.25L9.70711 16.5429C10.0976 16.9334 10.0976 17.5666 9.70711 17.9571C9.31658 18.3476 8.68342 18.3476 8.29289 17.9571L0.292893 9.95711C0.105357 9.76957 -4.04995e-07 9.51522 -3.93402e-07 9.25C-3.81809e-07 8.98478 0.105357 8.73043 0.292893 8.54289L8.29289 0.542893C8.68342 0.152369 9.31658 0.152369 9.70711 0.542893Z\"\n clip-rule=\"evenodd\"\n fill-rule=\"evenodd\"\n ></path>\n </svg>\n </button>\n <span class=\"header-title\">Conversation History</span>\n </div>\n )}\n\n <div class=\"chat-body\">\n {this.showWelcomeScreen && (\n <chatbot-welcome\n welcomeMessage={this.botSettings?.welcome?.message}\n buttonsList={this.botSettings?.welcome?.buttons || this.botSettings?.welcome?.welcomeButtons}\n welcomelogo={this.botSettings?.welcome?.image}\n />\n )}\n {this.showHistory && this.conversationHistory.length > 0 && this.hideInput && (\n <chatbot-history chatList={this.conversationHistory} botName={this.botSettings?.botName}></chatbot-history>\n )}\n {!this.showWelcomeScreen && this.messages.length > 0 && <p class=\"timestamp\">{this.timestamp}</p>}\n {!this.showWelcomeScreen &&\n this.messages.length > 0 &&\n this.messages.map(msg => (\n <div class={{ \"message\": true, \"message-user\": msg.isUser }}>\n <div class={{ \"msg-wrapper\": true, \"pl-1\": true, \"md:pl-0\": true }}>\n {!msg.isUser && <img class=\"bot-avatar hidden md:block\" src={this.botSettings?.botAvatar ?? this.botAvatar} alt=\"Bot Avatar\" />}\n <div class={{ \"message-content\": true, \"bubble-width\": !msg.isUser }}>\n <span class={{ \"message-text\": true, \"message-bot\": !msg.isUser, \"prose\": true, \"p-2.5\": true }} id={msg.id} innerHTML={msg.text}>\n {msg?.images?.map(img => {\n return <img src={img} class=\"thumbnail\" alt=\"thumbnail\" />\n })}\n {!msg.isUser && msg.text === \"\" && (\n <svg class=\"animate-spin h-5 w-5 text-gray-400\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" id=\"spinner\">\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\n <path\n class=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 0 1 4 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n ></path>\n </svg>\n )}\n </span>\n <span class=\"message-timestamp\">{msg.timestamp}</span>\n </div>\n </div>\n </div>\n ))}\n </div>\n\n <div id=\"previewContainer\"></div>\n\n {/* {!this.hideInput && (\n <div class=\"chat-footer\">\n {this.messages.length === 0 && (\n <div class=\"custom-privacy\">\n <slot name=\"custom-privacy\" />\n </div>\n )}\n {this.messages?.length > 0 && (\n <div class=\"follow-up\">\n <input\n ref={el => (this.followUpElem = el as HTMLInputElement)}\n type=\"checkbox\"\n name=\"followUp\"\n id=\"followUp\"\n defaultChecked={true}\n class=\"follow-up-input\"\n onChange={ev => this.handleFollowUp(ev)}\n />\n <label htmlFor=\"followUp\">Do you have a follow up question?</label>\n <svg\n onClick={() => this.followUpElem.click()}\n class=\"custom-svg-checkbox\n peer-checked:block text-white\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"4\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <polyline points=\"20 6 9 17 4 12\"></polyline>\n </svg>\n </div>\n )}\n <div style={{ display: \"flex\" }}>\n <textarea\n rows={this.rowCount}\n placeholder={this.botSettings?.botPlaceholderText ?? \"Type your message...\"}\n ref={el => (this.inputEl = el as HTMLTextAreaElement)}\n onKeyUp={this.adjustHeight}\n />\n {this.botSettings.imageUpload && (\n <div class=\"custom-attachment\">\n <input\n type=\"file\"\n multiple\n name=\"files[]\"\n id=\"fileInput\"\n accept=\"image/*\"\n class=\"image-upload__input\"\n onChange={($event: any) => this.onInputChange($event.target.files)}\n ref={el => (this.uploadElem = el as HTMLInputElement)}\n />\n <svg onClick={() => this.uploadElem.click()} aria-hidden=\"true\" width=\"18\" height=\"16\" viewBox=\"0 0 16 18\">\n <path\n fill=\"#687882\"\n fill-rule=\"evenodd\"\n d=\"M8.078 16a.71.71 0 0 1-.513-.222.784.784 0 0 1 0-1.075l7.53-7.879c.562-.587.871-1.368.871-2.199 0-.83-.31-1.611-.87-2.197a2.883 2.883 0 0 0-4.204 0l-8.735 9.139c-.493.516-.73 1.012-.703 1.476.026.452.298.801.46.968.27.284.563.402.892.358.413-.054.888-.35 1.375-.86l6.854-7.172a.703.703 0 0 1 1.026 0 .784.784 0 0 1 0 1.074l-6.853 7.172c-.728.761-1.475 1.196-2.222 1.293-.783.102-1.509-.172-2.1-.79-.528-.553-.841-1.246-.881-1.952-.053-.917.326-1.805 1.125-2.64l8.735-9.14a4.292 4.292 0 0 1 6.257 0 4.706 4.706 0 0 1 1.296 3.271c0 1.236-.461 2.4-1.296 3.274l-7.53 7.879a.71.71 0 0 1-.514.222z\"\n ></path>\n </svg>\n </div>\n )}\n <button onClick={() => this.handleSend(this.inputEl.value)}>\n <svg aria-hidden=\"true\" width=\"17\" height=\"16\" viewBox=\"0 0 17 16\">\n <path\n fill=\"#687882\"\n fill-rule=\"evenodd\"\n stroke=\"#687882\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M1 1l2.166 5.39 8.5 1.564-8.5 1.666L1 15l16-7z\"\n ></path>\n </svg>\n </button>\n </div>\n </div>\n )} */}\n <div class=\"ml-2\">\n {this.messages.length === 0 && (\n <div class=\"custom-privacy\">\n <slot name=\"custom-privacy\" />\n </div>\n )}\n {this.messages?.length > 0 && (\n <div class=\"follow-up\">\n <input\n ref={el => (this.followUpElem = el as HTMLInputElement)}\n type=\"checkbox\"\n name=\"followUp\"\n id=\"followUp\"\n defaultChecked={true}\n class=\"follow-up-input\"\n onChange={ev => this.handleFollowUp(ev)}\n />\n <label htmlFor=\"followUp\">Do you have a follow up question?</label>\n <svg\n onClick={() => this.followUpElem.click()}\n class=\"custom-svg-checkbox\n peer-checked:block text-white\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"4\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <polyline points=\"20 6 9 17 4 12\"></polyline>\n </svg>\n </div>\n )}\n </div>\n {!this.hideInput && (\n <div class=\"chat-footer border-t border-gray-300\">\n <div class=\"flex items-center flex-row\">\n {this.botSettings?.imageUpload && (\n <div class=\"relative inline-block\" style={{ width: \"5%\" }}>\n {/* Plus Button */}\n {!this.hideAllButtons && (\n <button class=\"w-8 h-8 text-blue-500\" onClick={this.toggleBox}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" width=\"20\" height=\"20\">\n <path d=\"M10.75 4.75a.75.75 0 0 0-1.5 0v4.5h-4.5a.75.75 0 0 0 0 1.5h4.5v4.5a.75.75 0 0 0 1.5 0v-4.5h4.5a.75.75 0 0 0 0-1.5h-4.5v-4.5Z\"></path>\n </svg>\n </button>\n )}\n\n {/* Option Box */}\n <div\n class={`absolute bottom-12 left-0 w-44 bg-white rounded-lg shadow-lg transition-all duration-300 ease-in-out \n ${this.isOpen ? \"opacity-100 scale-100 pointer-events-auto\" : \"opacity-0 scale-90 pointer-events-none\"}`}\n >\n <ul class=\"space-y-2\">\n {/* <li class=\"px-4 py-2 hover:bg-gray-100 cursor-pointer flex\">\n <div class=\"mr-1\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" width=\"20\" height=\"20\">\n <path d=\"M12 9a3.75 3.75 0 1 0 0 7.5A3.75 3.75 0 0 0 12 9Z\"></path>\n <path\n fill-rule=\"evenodd\"\n d=\"M9.344 3.071a49.52 49.52 0 0 1 5.312 0c.967.052 1.83.585 2.332 1.39l.821 1.317c.24.383.645.643 1.11.71.386.054.77.113 1.152.177 1.432.239 2.429 1.493 2.429 2.909V18a3 3 0 0 1-3 3h-15a3 3 0 0 1-3-3V9.574c0-1.416.997-2.67 2.429-2.909.382-.064.766-.123 1.151-.178a1.56 1.56 0 0 0 1.11-.71l.822-1.315a2.942 2.942 0 0 1 2.332-1.39ZM6.75 12.75a5.25 5.25 0 1 1 10.5 0 5.25 5.25 0 0 1-10.5 0Zm12-1.5a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z\"\n clip-rule=\"evenodd\"\n ></path>\n </svg>\n </div>\n <div>Capture</div>\n </li> */}\n <li\n class=\"px-4 py-2 hover:bg-gray-100 cursor-pointer flex\"\n onClick={() => {\n this.uploadElem.click()\n this.isOpen = false\n }}\n >\n <input\n type=\"file\"\n multiple\n name=\"files[]\"\n id=\"fileInput\"\n accept=\"image/*\"\n class=\"image-upload__input\"\n onChange={($event: any) => this.onInputChange($event.target.files)}\n ref={el => (this.uploadElem = el as HTMLInputElement)}\n />\n <div class=\"mr-1\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"h-5 w-5 shrink-0\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M18.0322 5.02393C17.7488 5.00078 17.3766 5 16.8 5H11.5002C11.3 6 11.0989 6.91141 10.8903 7.85409C10.7588 8.44955 10.6432 8.97304 10.3675 9.41399C10.1262 9.80009 9.80009 10.1262 9.41399 10.3675C8.97304 10.6432 8.44955 10.7588 7.85409 10.8903C7.81276 10.8994 7.77108 10.9086 7.72906 10.9179L5.21693 11.4762C5.1442 11.4924 5.07155 11.5001 5 11.5002V16.8C5 17.3766 5.00078 17.7488 5.02393 18.0322C5.04612 18.3038 5.0838 18.4045 5.109 18.454C5.20487 18.6422 5.35785 18.7951 5.54601 18.891C5.59546 18.9162 5.69617 18.9539 5.96784 18.9761C6.25118 18.9992 6.62345 19 7.2 19H10C10.5523 19 11 19.4477 11 20C11 20.5523 10.5523 21 10 21H7.16144C6.6343 21 6.17954 21 5.80497 20.9694C5.40963 20.9371 5.01641 20.8658 4.63803 20.673C4.07354 20.3854 3.6146 19.9265 3.32698 19.362C3.13419 18.9836 3.06287 18.5904 3.03057 18.195C2.99997 17.8205 2.99998 17.3657 3 16.8385L3 11C3 8.92477 4.02755 6.93324 5.4804 5.4804C6.93324 4.02755 8.92477 3 11 3L16.8385 3C17.3657 2.99998 17.8205 2.99997 18.195 3.03057C18.5904 3.06287 18.9836 3.13419 19.362 3.32698C19.9265 3.6146 20.3854 4.07354 20.673 4.63803C20.8658 5.01641 20.9371 5.40963 20.9694 5.80497C21 6.17954 21 6.6343 21 7.16144V10C21 10.5523 20.5523 11 20 11C19.4477 11 19 10.5523 19 10V7.2C19 6.62345 18.9992 6.25118 18.9761 5.96784C18.9539 5.69617 18.9162 5.59546 18.891 5.54601C18.7951 5.35785 18.6422 5.20487 18.454 5.109C18.4045 5.0838 18.3038 5.04612 18.0322 5.02393ZM5.28014 9.41336L7.2952 8.96556C8.08861 8.78925 8.24308 8.74089 8.35381 8.67166C8.48251 8.59121 8.59121 8.48251 8.67166 8.35381C8.74089 8.24308 8.78925 8.08861 8.96556 7.2952L9.41336 5.28014C8.51014 5.59289 7.63524 6.15398 6.89461 6.89461C6.15398 7.63524 5.59289 8.51014 5.28014 9.41336ZM17 15C17 14.4477 17.4477 14 18 14C18.5523 14 19 14.4477 19 15V17H21C21.5523 17 22 17.4477 22 18C22 18.5523 21.5523 19 21 19H19V21C19 21.5523 18.5523 22 18 22C17.4477 22 17 21.5523 17 21V19H15C14.4477 19 14 18.5523 14 18C14 17.4477 14.4477 17 15 17H17V15Z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </div>\n <div>Upload Images</div>\n </li>\n </ul>\n </div>\n </div>\n )}\n {/* Chat Input */}\n\n {!this.hideAllButtons && (\n <div style={{ width: \"80%\" }}>\n <textarea\n rows={this.rowCount}\n placeholder={this.botSettings?.botPlaceholderText ?? \"Type your message...\"}\n ref={el => (this.inputEl = el as HTMLTextAreaElement)}\n onKeyUp={this.adjustHeight}\n onFocus={e => this.showButton(e)}\n class=\"flex-1 px-4 py-2 w-full focus:outline-none\"\n />\n </div>\n )}\n <audio-recorder\n component-type=\"bot\"\n onStartRecord={_ev => {\n // console.log(\"test\", ev)\n this.hideAllButtons = true\n }}\n onStopRecord={_ev => {\n this.hideAllButtons = false\n }}\n onSendTranscript={ev => {\n // console.log(\"ev\", ev)\n\n setTimeout(() => {\n // console.log(\"input\", this.inputEl)\n if (this.inputEl) {\n this.inputEl.value = ev.detail\n this.adjustHeight()\n this.showSubmit = true\n }\n }, 1000)\n }}\n style={{ width: this.hideAllButtons ? \"100%\" : \"10%\" }}\n ></audio-recorder>\n {/* )} */}\n {!this.hideAllButtons && (\n <div>\n <button\n class=\"relative w-10 h-10 flex items-center justify-center rounded-full transition-transform duration-300 ease-in-out bg-blue-500\"\n onClick={() => this.handleSend(this.inputEl.value)}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" fill=\"white\" class=\"w-5 h-5\">\n <path\n fill-rule=\"evenodd\"\n d=\"M8 14a.75.75 0 0 1-.75-.75V4.56L4.03 7.78a.75.75 0 0 1-1.06-1.06l4.5-4.5a.75.75 0 0 1 1.06 0l4.5 4.5a.75.75 0 0 1-1.06 1.06L8.75 4.56v8.69A.75.75 0 0 1 8 14Z\"\n clip-rule=\"evenodd\"\n ></path>\n </svg>\n </button>\n </div>\n )}\n {/* {!this.showSubmit && !this.hideAllButtons && (\n <div>\n <button class=\"relative w-10 h-10 flex items-center justify-center rounded-full transition-transform duration-300 ease-in-out bg-blue-500\">\n <svg aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"white\" viewBox=\"0 0 24 24\" stroke-width=\"0\" stroke=\"currentColor\" width=\"20\" height=\"20\">\n <path\n fill-rule=\"evenodd\"\n d=\"M12 5a7 7 0 0 0-7 7v1.17c.313-.11.65-.17 1-.17h2a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1H6a3 3 0 0 1-3-3v-6a9 9 0 0 1 18 0v6a3 3 0 0 1-3 3h-2a1 1 0 0 1-1-1v-6a1 1 0 0 1 1-1h2c.35 0 .687.06 1 .17V12a7 7 0 0 0-7-7Z\"\n clip-rule=\"evenodd\"\n ></path>\n </svg>\n </button>\n </div>\n )} */}\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n ) : (\n <div\n class={`layout pt-0 show-grid search-flex ${this.isOpened ? \"is-open\" : \"\"} ${this.isExpanded ? \"is-expanded\" : \"\"} ${this.isAnimated ? \"transition ease-out duration-300\" : \"\"}`}\n style={{\n gridTemplateColumns: `0fr minmax(${this.botSettings.minWidth ?? \"340px\"}, ${this.botSettings.maxWidth ?? \"375px\"}) 0fr`,\n paddingTop: this.botSettings?.paddingTop ?? \"96px\",\n }}\n >\n <div\n class={`modal-overlay`}\n role=\"button\"\n aria-label=\"Close Modal\"\n style={{\n display: this.isExpanded && this.isOpened ? \"grid\" : \"none\",\n opacity: this.isExpanded && this.isOpened ? \"1\" : \"0\",\n pointerEvents: this.isExpanded && this.isOpened ? \"all\" : \"none\",\n }}\n ></div>\n {/* {this.isOpen && ( */}\n <div\n class=\"modal\"\n data-testid=\"modal\"\n aria-hidden=\"false\"\n role=\"dialog\"\n aria-modal=\"true\"\n tabindex=\"-1\"\n style={{ display: this.isOpened ? \"grid\" : \"none\", opacity: this.isOpened ? \"1\" : \"0\", transform: this.isOpened ? \"none\" : \"translateY(100%)\" }}\n >\n <div class=\"toolbar flex bg-white overflow-hidden border-b border-gray-90 border-solid md:pl-3 pl-4 justify-end md:rounded-t-xl items-center\">\n <div class=\"toolbar-overflow-actions\">\n <button\n class=\"rounded-full flex items-center justify-center disabled:cursor-not-allowed bg-transparent hover:bg-blue-95 disabled:bg-transparent disabled:hover:bg-transparent h-6 w-6\"\n tabindex=\"0\"\n aria-label=\"options menu\"\n aria-haspopup=\"menu\"\n aria-expanded=\"false\"\n aria-controls=\"toolbar-dropdown-menu\"\n onClick={e => {\n this.toggleBot(e)\n }}\n >\n <i class=\"modal-toolbar-icon block wes-icon--loading text-body2\">\n <svg viewBox=\"0 0 24 24\" id=\"align-left-2\" data-name=\"Flat Line\" xmlns=\"http://www.w3.org/2000/svg\" class=\"icon flat-line\" fill=\"currentColor\">\n <g id=\"SVGRepo_bgCarrier\" stroke-width=\"0\"></g>\n <g id=\"SVGRepo_tracerCarrier\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></g>\n <g id=\"SVGRepo_iconCarrier\">\n <path id=\"primary\" d=\"M3,12H17M3,6H21M3,18H13\" style={{ fill: \"none\", stroke: \"currentColor\" }}></path>\n </g>\n </svg>\n </i>\n </button>\n <div\n id=\"dropdown-menu\"\n role=\"menu\"\n class={`dropdown-menu flex flex-col gap-y-1 grow-wrap absolute bg-white border-b border-gray-80 border-solid rounded-lg shadow-lg p-2 mt-4 min-w-[200px] left-5 overflow-hidden ${this.isToggled ? \"show\" : \"\"}`}\n style={{ height: \"auto\" }}\n ref={el => (this.menuV2Ref = el)}\n >\n {this.botSettings?.buttons?.map(button => (\n <div class=\"dropdown-item w-full\" role=\"menuitem\" tabindex=\"-1\">\n <button\n class=\"dropdown-item-button\"\n onClick={e => {\n this.toggleBot(e)\n this.showHistory = false\n this.showWelcomeScreen = true\n this.handleSend(button.label)\n }}\n >\n {button.label}\n </button>\n </div>\n ))}\n <div class=\"dropdown-item w-full\" role=\"menuitem\" tabindex=\"-1\">\n <button\n class=\"dropdown-item-button\"\n onClick={e => {\n this.toggleBot(e)\n this.showHistory = true\n // this.hideInput = true\n this.loadConversation()\n // console.log(\"this.show\", this.conversationHistory)\n }}\n >\n View Recent chat\n </button>\n </div>\n <div class=\"dropdown-item w-full\" role=\"menuitem\" tabindex=\"-1\">\n <button\n class=\"dropdown-item-button\"\n onClick={ev => {\n ev.preventDefault()\n this.messages = [...[]]\n this.conversationId = \"\"\n this.isOpened = false\n this.isMinimized = this.isExpanded ? false : true\n this.showWelcomeScreen = true\n this.toggleBot(ev)\n this.showHistory = false\n }}\n >\n End conversation\n </button>\n </div>\n </div>\n </div>\n {this.botSettings?.botLogo && <img src={this.botSettings?.botLogo} class=\"w-8 h-8 rounded-lg\"></img>}\n <h2 class=\"heading text-body1 flex-1 pl-2\">{this.botSettings?.botName}</h2>\n <div class=\"buttons flex gap-2 p-[10px]\">\n <button\n class=\"rounded-full flex items-center justify-center disabled:cursor-not-allowed bg-transparent hover:bg-blue-95 disabled:bg-transparent disabled:hover:bg-transparent h-6 w-6 hidden md:flex\"\n tabindex=\"0\"\n onClick={() => {\n this.isExpanded = !this.isExpanded\n this.isAnimated = true\n }}\n aria-label=\"Collapse Agentforce to Side Panel\"\n >\n <i class=\"modal-toolbar-icon wes-block wes-icon--loading wes-text-body2\">\n {this.isExpanded && (\n <svg viewBox=\"0 0 32 32\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M18.215 14.7076H27.692C28.3074 14.7076 28.492 14.0307 27.9997 13.5383L24.9843 10.4614L30.5228 4.86149C30.8305 4.5538 30.8305 3.99995 30.5228 3.69226L28.2459 1.41536C27.9382 1.16921 27.4459 1.16921 27.0767 1.4769L21.5381 7.01532L18.3997 3.99995C17.9073 3.50765 17.2304 3.69226 17.2304 4.30764V13.7845C17.2304 14.2153 17.7843 14.7076 18.215 14.7076ZM13.7847 17.2308H4.30766C3.69227 17.2308 3.50765 17.9077 3.99996 18.4L7.01537 21.4769L1.47686 27.0769C1.16917 27.3846 1.16917 27.9384 1.47686 28.2461L3.75381 30.523C4.0615 30.8307 4.55381 30.8307 4.92305 30.523L10.5231 24.923L13.6616 27.9384C14.0924 28.4923 14.7693 28.3076 14.7693 27.6923V18.2769C14.7693 17.8462 14.2154 17.2308 13.7847 17.2308Z\"\n ></path>\n </svg>\n )}\n {!this.isExpanded && (\n <svg viewBox=\"0 0 32 32\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M30.0308 1.23071H20.4923C19.8769 1.23071 19.6923 1.78455 20.1846 2.27686L23.2 5.29222L17.6615 10.8306C17.3538 11.1383 17.3538 11.6306 17.6615 11.9999L19.9384 14.2768C20.2461 14.5845 20.7384 14.5845 21.1077 14.2768L26.7077 8.67681L29.7231 11.6922C30.2154 12.1845 30.7692 11.9999 30.7692 11.3845V1.90763C30.7692 1.5384 30.4 1.23071 30.0308 1.23071ZM2.15379 30.7692H11.6307C12.2461 30.7692 12.4307 30.0923 11.9384 29.6L8.92303 26.5231L14.4615 20.9231C14.7692 20.6154 14.7692 20.0616 14.4615 19.7539L12.1846 17.477C11.8769 17.1693 11.3846 17.1693 11.0153 17.477L5.47687 23.0154L2.39995 20C1.8461 19.5077 1.23071 19.6923 1.23071 20.3077V29.7846C1.23071 30.2153 1.72302 30.7692 2.15379 30.7692Z\"\n ></path>\n </svg>\n )}\n </i>\n </button>\n <button\n class=\"rounded-full flex items-center justify-center disabled:cursor-not-allowed bg-transparent hover:bg-blue-95 disabled:bg-transparent disabled:hover:bg-transparent h-6 w-6\"\n tabindex=\"0\"\n data-testid=\"modal-minimize\"\n aria-label=\"Minimize\"\n onClick={() => {\n this.isOpened = false\n // this.isContent = false\n this.isContent = this.isExpanded ? true : false\n this.isMinimized = this.isExpanded ? false : true\n this.isAnimated = false\n this.updateScreenSize()\n }}\n >\n <i class=\"modal-toolbar-icon block wes-icon--loading text-body2\">\n <svg viewBox=\"0 0 26 26\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M25 24.25C25 24.65 24.65 25 24.25 25H1.75C1.35 25 1 24.65 1 24.25V22.75C1 22.35 1.35 22 1.75 22H24.25C24.65 22 25 22.35 25 22.75V24.25Z\"\n ></path>\n </svg>\n </i>\n </button>\n </div>\n </div>\n <div class=\"main flex-1 flex flex-col\">\n <div class=\"h-full flex flex-col chat-body\">\n <div class=\"messages-container px-5 flex-[1_1_0] min-h-[calc(100%-1px)] flex flex-col gap-y-3 @md:px-3\" role=\"region\" aria-label=\"messages\">\n {/* <h3 class=\"text-display5 font-avant-garde text-[#001E5B] @md:text-display4 text-center @md:px-6 pb-3 @md:pb-7 @md:pt-8 pt-5\">\n How can <strong class=\"text-[#0344D1]\">Agentforce</strong> help?\n </h3> */}\n {this.showWelcomeScreen && <div class=\"text-display5 @md:px-6 pb-3 @md:pb-7 @md:pt-8 pt-5\" innerHTML={this.botSettings?.welcome?.message}></div>}\n {/* <div class=\"message-item flex pb-3 gap-x-2 @md:gap-x-3 justify-center\" style={{ opacity: \"1\", transform: \"none\" }}>\n <div class=\"flex flex-col\">\n <div class=\"timestamp text-gray-30 text-body4 pt-2\">Agentforce joined • 12:45 PM</div>\n </div>\n </div> */}\n {this.messages.length > 0 &&\n this.messages.map((message, _idx) => {\n // const showAvatar = !message.isUser && (idx === this.messages.length - 1 || this.messages[idx + 1]?.isUser === true)\n\n return (\n <div\n class={`message-item flex pb-3 gap-x-2 @md:gap-x-3 end-user-message \n ${message.isUser ? \"self-end\" : \"\"}\n ${message.isUser ? \"justify-end\" : \"\"}`}\n style={{ opacity: \"1\", transform: \"none\" }}\n >\n {message.isUser && (\n <div class=\"flex flex-col items-end\">\n <div\n data-testid=\"message\"\n class=\"break-words text-body3 @md:text-body2 box-border @md:pr-4 flex-1 rounded-lg py-2 px-4 user-msg\"\n innerHTML={message.text}\n >\n {message?.images?.map(img => {\n return <img src={img} class=\"thumbnail\" alt=\"thumbnail\" />\n })}\n </div>\n\n <div class=\"text-gray-30 text-body4 pt-2 text-right\">Sent {message.timestamp}</div>\n </div>\n )}\n {!message.isUser && (\n <div class=\"avatar-column\">\n <div role=\"img\" aria-label=\"Agentforce said: \" class=\"rounded-full h-6 w-6 p-2 grid place-content-center bg-blue\">\n {this.botSettings.botAvatar && <img src={this.botSettings.botAvatar} class=\"w-8 h-8 rounded-full\"></img>}\n {!this.botSettings.botAvatar && (\n // <i class=\"_wes-icon_9ngz3_1 block text-body1\" style={{ color: \"rgb(2, 80, 217)\" }}>\n // <svg viewBox=\"0 0 32 32\" xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20}>\n // <path d=\"M19.3786 16.9969H19.3909C18.8863 17.04 18.437 17.1262 18.0493 17.2492C18.0493 17.2492 17.4832 17.4277 16.6155 17.5508C16.4124 17.5816 16.154 17.5816 16.0124 17.5816H15.9078C15.7663 17.5816 15.5017 17.5692 15.3047 17.5385C14.437 17.3969 13.877 17.2 13.877 17.2C13.4893 17.0769 13.0401 16.9846 12.5355 16.9292C9.77243 16.6462 8.57858 17.6985 8.51089 17.8954C8.4432 18.0923 8.74473 20.6523 8.96627 21.0585C9.18166 21.4585 9.51396 21.6923 9.8155 21.8216C10.1232 21.9508 12.6524 22.2031 13.4955 22.0862C14.3386 21.9692 14.4678 21.6862 14.6955 21.2554C14.8555 20.9477 15.2678 19.5569 15.4955 18.7385C15.5509 18.5785 15.557 18.2585 15.9447 18.2339C16.3324 18.2646 16.3386 18.5908 16.3878 18.7508C16.6093 19.5692 16.997 20.9723 17.1509 21.28C17.3663 21.7169 17.4955 22 18.3386 22.1354C19.1755 22.2646 21.7109 22.0616 22.0186 21.9385C22.3263 21.8154 22.6586 21.5877 22.8801 21.1877C23.1017 20.7877 23.4463 18.2339 23.3847 18.0369C23.3232 17.8339 22.1478 16.7631 19.3786 16.9969Z\"></path>\n // <path d=\"M28.0124 8.95386H28.0186C27.2494 7.9754 26.3386 7.10771 25.3294 6.36309C26.3755 6.17848 27.1694 5.26771 27.1694 4.17232C27.1694 2.94155 26.1724 1.93848 24.9355 1.93848C23.6986 1.93848 22.7017 2.9354 22.7017 4.17232C22.7017 4.41848 22.7509 4.65232 22.8247 4.87386C21.237 4.12309 19.5017 3.63078 17.6863 3.44002C14.6463 3.12002 11.7109 3.66155 9.18166 4.8554C9.24935 4.64001 9.29858 4.41232 9.29858 4.17232C9.29858 2.94155 8.30166 1.93848 7.06473 1.93848C5.82781 1.93848 4.83089 2.9354 4.83089 4.17232C4.83089 5.26771 5.61858 6.17232 6.65243 6.36309C3.78473 8.48001 1.78473 11.5631 1.32935 15.1385C0.904735 18.4431 1.84627 21.7539 3.98781 24.4616C6.41243 27.5262 10.1786 29.5385 14.314 29.9754C14.8924 30.0369 15.4647 30.0677 16.0309 30.0677C23.4094 30.0677 29.797 25.0585 30.6709 18.2769C31.0955 14.9723 30.154 11.6616 28.0124 8.95386ZM16.0124 26.2523H16.0063C10.4555 26.2462 5.93858 22.5416 5.93858 17.9877C5.93858 16.6154 6.35704 15.2985 7.11397 14.1292C7.18166 14.5477 7.30473 14.9108 7.44012 15.1816C7.62473 15.5508 7.99397 15.7662 8.38166 15.7662C8.5355 15.7662 8.6955 15.7354 8.8432 15.6616C9.36627 15.4092 9.58166 14.7816 9.34166 14.2585C9.21243 13.9816 8.88012 13.0646 9.68627 12.3631C10.4678 13.0708 11.5878 13.9016 12.8493 14.3077C15.2001 15.0523 16.9786 14.6154 17.0524 14.5969C17.4093 14.5046 17.6863 14.24 17.797 13.8892C17.9078 13.5385 17.8278 13.1569 17.5878 12.8862C16.4001 11.52 15.834 10.5231 15.5878 9.92002C20.4001 10.5723 21.3232 14.4062 21.3601 14.5785C21.4647 15.0708 21.9017 15.4092 22.3878 15.4092C22.4617 15.4092 22.5294 15.4031 22.6032 15.3846C23.1755 15.2677 23.5386 14.7077 23.4217 14.1354C23.274 13.4216 22.8863 12.4554 22.197 11.4892C24.554 13.0031 26.0801 15.3539 26.0801 17.9939C26.0801 22.5477 21.5632 26.2523 16.0124 26.2523Z\"></path>\n // </svg>\n // </i>\n <i class=\"_wes-icon_9ngz3_1 block text-body1 default-botAvatar\">\n <svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 16 16\" height={20} width={20} xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8 1a5 5 0 0 0-5 5v1h1a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6a6 6 0 1 1 12 0v6a2.5 2.5 0 0 1-2.5 2.5H9.366a1 1 0 0 1-.866.5h-1a1 1 0 1 1 0-2h1a1 1 0 0 1 .866.5H11.5A1.5 1.5 0 0 0 13 12h-1a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1h1V6a5 5 0 0 0-5-5\"></path>\n </svg>\n </i>\n )}\n </div>\n </div>\n )}\n {!message.isUser && (\n <div class=\"flex flex-col\" style={{ width: \"100%\" }}>\n <div\n data-testid=\"message\"\n class=\"prose max-w-full break-words text-body3 @md:text-body2 box-border @md:pr-4 flex-1 rounded-lg text-gray-30 pr-2\"\n innerHTML={message.text}\n id={message.id}\n >\n {message.text === \"\" && (\n <div class=\"w-full rounded-md\" id=\"spinner\">\n <div class=\"flex animate-pulse space-x-4\">\n {/* <div class=\"size-10 rounded-full bg-gray-200\"></div> */}\n <div class=\"flex-1 space-y-3 py-1\">\n <div class=\"h-4 rounded bg-gray-200\"></div>\n <div class=\"space-y-3\">\n <div class=\"grid grid-cols-3 gap-4\">\n <div class=\"col-span-2 h-4 rounded bg-gray-200\"></div>\n <div class=\"col-span-1 h-4 rounded bg-gray-200\"></div>\n </div>\n <div class=\"h-4 rounded bg-gray-200\"></div>\n </div>\n </div>\n </div>\n </div>\n )}\n </div>\n <div class=\"text-gray-30 text-body4 pt-2\">\n {this.botSettings.botName} • {message.timestamp}\n </div>\n </div>\n )}\n </div>\n )\n })}\n {this.showHistory && <chatbot-history chatList={this.conversationHistory} botName={this.botSettings?.botName}></chatbot-history>}\n <div class=\"h-px pt-2px\" style={{ overflowAnchor: \"auto\" }}></div>\n </div>\n\n <div aria-live=\"polite\" class=\"absolute w-[1px] h-[1px] p-0 m-[-1px] overflow-hidden whitespace-nowrap border-0\"></div>\n </div>\n </div>\n </div>\n {/* )} */}\n {/* {!this.isMinimized && ( */}\n <form\n data-testid=\"user-input\"\n class={`user-input relative pointer-events-auto searchform ${this.isOpened ? \"p-2.5\" : \"\"}`}\n role=\"region\"\n aria-label=\"Message Area\"\n aria-hidden=\"false\"\n style={{ opacity: !this.isMinimized ? \"1\" : \"0\", transform: \"translateX(0)\", pointerEvents: !this.isMinimized ? \"auto\" : \"none\" }}\n >\n {!this.isOpened && (\n <div class={`minimize-input absolute right-4 md:right-0 border-2 border-white border-solid rounded-full ${this.isContent ? \"\" : \"top-0\"}`}>\n <button\n class=\"rounded-full flex items-center justify-center disabled:cursor-not-allowed bg-gray-500 bg-opacity-60 hover:bg-opacity-80 h-5 w-5\"\n tabindex=\"0\"\n onClick={e => {\n e.preventDefault()\n this.isMinimized = !this.isMinimized\n }}\n >\n <i class=\"ai-minimize-icon block ai-text-caption\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"52\" width=\"52\" viewBox=\"0 0 520 520\" fill=\"#fff\">\n <path d=\"M500 275c0 8-7 15-15 15H35c-8 0-15-7-15-15v-30c0-8 7-15 15-15h450c8 0 15 7 15 15z\"></path>\n </svg>\n </i>\n </button>\n </div>\n )}\n <fieldset class={`flex flex-col @md:mx-0 @md:rounded-t-xl ${this.isMinimized && !this.isExpanded ? \"\" : \"p-4 user-input-fieldset\"} transition-colors`}>\n {/* <div class={`text-white wes-text-display7 pb-3 help-text ${this.isOpen ? \"hide-title\" : \"\"}`} aria-hidden=\"true\">\n Need help? Ask AI.\n </div> */}\n {!this.isExpanded && this.isOpened && this.messages.length === 0 && <privacy-modal show={this.showPrivacy} message={this.botSettings.privacyTemplate}></privacy-modal>}\n <div class=\"flex-1 align-bottom\">\n <div class=\"grow-wrap show-grid after:whitespace-pre-wrap after:invisible relative\" data-replicated-value=\"\" aria-disabled=\"false\">\n {this.botSettings.imageUpload && (\n <div\n aria-disabled=\"true\"\n class={`agent-input-icon wes-transition-opacity absolute flex items-center left-0 bottom-0 h-full pl-4 pr-2 ${this.hideAllButtons ? \"hidden\" : \"\"} ${this.isContent ? \"hidden\" : \"\"}`}\n >\n <button\n class=\"plus-icon\"\n onClick={e => {\n e.stopPropagation()\n e.preventDefault()\n this.showMenu = !this.showMenu\n }}\n >\n <i class=\"plus-icon wes-block wes-text-body1\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" width=\"20\" height=\"20\">\n <path d=\"M10.75 4.75a.75.75 0 0 0-1.5 0v4.5h-4.5a.75.75 0 0 0 0 1.5h4.5v4.5a.75.75 0 0 0 1.5 0v-4.5h4.5a.75.75 0 0 0 0-1.5h-4.5v-4.5Z\"></path>\n </svg>\n </i>\n </button>\n {/* Option Box */}\n <div\n class={`absolute bottom-6 left-0 w-44 bg-white rounded-lg shadow-lg transition-all duration-300 ease-in-out z-10\n ${this.showMenu ? \"opacity-100 scale-100 pointer-events-auto\" : \"opacity-0 scale-90 pointer-events-none\"}`}\n >\n <ul class=\"space-y-2\" ref={el => (this.plusIconRef = el)}>\n <li\n class=\"px-4 py-2 hover:bg-gray-100 cursor-pointer flex\"\n onClick={() => {\n this.uploadElem.click()\n this.isOpen = false\n this.showMenu = false\n }}\n >\n <input\n type=\"file\"\n multiple\n name=\"files[]\"\n id=\"fileInput\"\n accept=\"image/*\"\n class=\"image-upload__input\"\n onChange={($event: any) => {\n // this.isImage = true\n this.onInputChange($event.target.files)\n }}\n ref={el => (this.uploadElem = el as HTMLInputElement)}\n />\n <div class=\"mr-1\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"h-5 w-5 shrink-0\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M18.0322 5.02393C17.7488 5.00078 17.3766 5 16.8 5H11.5002C11.3 6 11.0989 6.91141 10.8903 7.85409C10.7588 8.44955 10.6432 8.97304 10.3675 9.41399C10.1262 9.80009 9.80009 10.1262 9.41399 10.3675C8.97304 10.6432 8.44955 10.7588 7.85409 10.8903C7.81276 10.8994 7.77108 10.9086 7.72906 10.9179L5.21693 11.4762C5.1442 11.4924 5.07155 11.5001 5 11.5002V16.8C5 17.3766 5.00078 17.7488 5.02393 18.0322C5.04612 18.3038 5.0838 18.4045 5.109 18.454C5.20487 18.6422 5.35785 18.7951 5.54601 18.891C5.59546 18.9162 5.69617 18.9539 5.96784 18.9761C6.25118 18.9992 6.62345 19 7.2 19H10C10.5523 19 11 19.4477 11 20C11 20.5523 10.5523 21 10 21H7.16144C6.6343 21 6.17954 21 5.80497 20.9694C5.40963 20.9371 5.01641 20.8658 4.63803 20.673C4.07354 20.3854 3.6146 19.9265 3.32698 19.362C3.13419 18.9836 3.06287 18.5904 3.03057 18.195C2.99997 17.8205 2.99998 17.3657 3 16.8385L3 11C3 8.92477 4.02755 6.93324 5.4804 5.4804C6.93324 4.02755 8.92477 3 11 3L16.8385 3C17.3657 2.99998 17.8205 2.99997 18.195 3.03057C18.5904 3.06287 18.9836 3.13419 19.362 3.32698C19.9265 3.6146 20.3854 4.07354 20.673 4.63803C20.8658 5.01641 20.9371 5.40963 20.9694 5.80497C21 6.17954 21 6.6343 21 7.16144V10C21 10.5523 20.5523 11 20 11C19.4477 11 19 10.5523 19 10V7.2C19 6.62345 18.9992 6.25118 18.9761 5.96784C18.9539 5.69617 18.9162 5.59546 18.891 5.54601C18.7951 5.35785 18.6422 5.20487 18.454 5.109C18.4045 5.0838 18.3038 5.04612 18.0322 5.02393ZM5.28014 9.41336L7.2952 8.96556C8.08861 8.78925 8.24308 8.74089 8.35381 8.67166C8.48251 8.59121 8.59121 8.48251 8.67166 8.35381C8.74089 8.24308 8.78925 8.08861 8.96556 7.2952L9.41336 5.28014C8.51014 5.59289 7.63524 6.15398 6.89461 6.89461C6.15398 7.63524 5.59289 8.51014 5.28014 9.41336ZM17 15C17 14.4477 17.4477 14 18 14C18.5523 14 19 14.4477 19 15V17H21C21.5523 17 22 17.4477 22 18C22 18.5523 21.5523 19 21 19H19V21C19 21.5523 18.5523 22 18 22C17.4477 22 17 21.5523 17 21V19H15C14.4477 19 14 18.5523 14 18C14 17.4477 14.4477 17 15 17H17V15Z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </div>\n <div>Upload Images</div>\n </li>\n\n {/* <li\n class=\"px-4 pb-2 hover:bg-gray-100 cursor-pointer flex\"\n onClick={() => {\n // this.captureScreen()\n // this.toggleBox()\n this.showMenu = !this.showMenu\n }}\n >\n <div class=\"mr-1 mt-px\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" width=\"20\" height=\"20\">\n <path d=\"M12 9a3.75 3.75 0 1 0 0 7.5A3.75 3.75 0 0 0 12 9Z\"></path>\n <path\n fill-rule=\"evenodd\"\n d=\"M9.344 3.071a49.52 49.52 0 0 1 5.312 0c.967.052 1.83.585 2.332 1.39l.821 1.317c.24.383.645.643 1.11.71.386.054.77.113 1.152.177 1.432.239 2.429 1.493 2.429 2.909V18a3 3 0 0 1-3 3h-15a3 3 0 0 1-3-3V9.574c0-1.416.997-2.67 2.429-2.909.382-.064.766-.123 1.151-.178a1.56 1.56 0 0 0 1.11-.71l.822-1.315a2.942 2.942 0 0 1 2.332-1.39ZM6.75 12.75a5.25 5.25 0 1 1 10.5 0 5.25 5.25 0 0 1-10.5 0Zm12-1.5a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z\"\n clip-rule=\"evenodd\"\n ></path>\n </svg>\n </div>\n <div>Capture</div>\n </li> */}\n </ul>\n </div>\n </div>\n )}\n <div class={`textarea ${this.isContent ? \"hidden\" : \"\"}`}>\n <div id=\"previewContainer\"></div>\n {this.showTextarea && (\n <textarea\n class={`resize-none overflow-hidden text-ellipsis focus:outline-none w-full ${this.hideAllButtons ? \"hidden\" : \"\"}`}\n data-testid=\"user-input-textarea\"\n rows={this.rowCount}\n name=\"userMessage\"\n placeholder={this.botSettings?.botPlaceholderText ?? \"Ask me anything\"}\n // aria-labelledby=\"message-submit\"\n ref={el => (this.inputEl = el as HTMLTextAreaElement)}\n onKeyUp={_e => {\n this.adjustHeight()\n }}\n onKeyDown={e => {\n this.handleKeyDown(e)\n if (e.key === \"Enter\" && !e.shiftKey) {\n this.isOpened = true\n }\n }}\n ></textarea>\n )}\n </div>\n {this.botSettings.enableMic && (\n <label class={`absolute bottom-0 ${this.isContent ? \"hidden\" : \"\"} ${this.hideAllButtons ? \"w-full\" : \"right-8\"}`}>\n <audio-recorder\n component-type=\"bot\"\n onStartRecord={_ev => {\n // console.log(\"test\", ev)\n this.hideAllButtons = true\n }}\n onStopRecord={_ev => {\n this.hideAllButtons = false\n }}\n onSendTranscript={ev => {\n // console.log(\"ev\", ev)\n\n setTimeout(() => {\n // console.log(\"input\", this.inputEl)\n if (this.inputEl) {\n this.inputEl.value = ev.detail\n this.adjustHeight()\n this.showSubmit = true\n }\n }, 1000)\n }}\n style={{ width: this.hideAllButtons ? \"100%\" : \"10%\" }}\n ></audio-recorder>\n </label>\n )}\n <label class={`absolute right-0 bottom-0 ${this.isContent ? \"hidden\" : \"\"} ${this.hideAllButtons ? \"hidden\" : \"\"}`}>\n <button\n class=\"btn-bg-color text-white transition rounded-full p-1.5 self-center\"\n // class=\"rounded-full flex items-center justify-center disabled:cursor-not-allowed bg-transparent hover:bg-blue-95 disabled:bg-transparent disabled:hover:bg-transparent h-8 w-8\"\n tabindex=\"-1\"\n id=\"message-submit\"\n // type=\"submit\"\n onClick={e => {\n e.preventDefault()\n if (!this.inputEl || this.inputEl.value.trim() === \"\") {\n return\n }\n this.isOpened = true\n // this.handleMessageSubmit(e)\n this.handleSend(this.inputEl?.value)\n }}\n >\n <i class=\"ai-icon block text-body1\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" fill=\"currentColor\" class=\"size-6\">\n <path\n fill-rule=\"evenodd\"\n d=\"M8 14a.75.75 0 0 1-.75-.75V4.56L4.03 7.78a.75.75 0 0 1-1.06-1.06l4.5-4.5a.75.75 0 0 1 1.06 0l4.5 4.5a.75.75 0 0 1-1.06 1.06L8.75 4.56v8.69A.75.75 0 0 1 8 14Z\"\n clip-rule=\"evenodd\"\n ></path>\n </svg>\n </i>\n </button>\n </label>\n\n <button\n class={`${this.isContent && !this.isMinimized ? \"block\" : \"hidden\"} rounded-full isContent`}\n aria-label=\"Return to AI\"\n onClick={ev => {\n ev.preventDefault()\n this.isContent = false\n this.isOpened = true\n this.isExpanded = true\n }}\n >\n <div class=\"font-bold text-body2 text-white hidden md:flex pl-3 items-center\">\n Return to AI\n <i class=\"inline-block pl-3 ai-minimize-icon block wes-icon--loading text-body1\" style={{ color: \" rgb(255, 255, 255)\" }}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 16\" fill=\"none\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M1.30775 9.15362H14.077C14.4231 9.15362 14.577 9.5767 14.3462 9.80747L10.6539 13.4998C10.4231 13.7305 10.4231 14.0767 10.6539 14.3075L11.5001 15.1536C11.7308 15.3844 12.077 15.3844 12.3077 15.1536L19.0385 8.38439C19.2693 8.15362 19.2693 7.80747 19.0385 7.5767L12.3077 0.845928C12.077 0.615159 11.7308 0.615159 11.5001 0.845928L10.6924 1.65362C10.4616 1.88439 10.4616 2.23054 10.6924 2.46131L14.3847 6.15362C14.6154 6.42285 14.4616 6.84593 14.1154 6.84593H1.34621C1.03852 6.84593 0.769287 7.0767 0.769287 7.38439V8.53824C0.769287 8.84593 1.00006 9.15362 1.30775 9.15362Z\"\n fill=\"white\"\n ></path>\n </svg>\n </i>\n </div>\n </button>\n </div>\n\n {this.isExpanded && !this.isOpened && <privacy-modal show={this.showPrivacy} message={this.botSettings.privacyTemplate}></privacy-modal>}\n </div>\n </fieldset>\n </form>\n {/* )} */}\n\n <div\n // slot=\"bot\"\n class=\"fab pointer-events-auto fixed right-7 whitespace-nowrap transition-transform duration-300 ease-in-out\"\n style={{\n opacity: this.isMinimized ? \"1\" : \"0\",\n transform: this.isMinimized ? \"translateX(0)\" : \"translateX(-100%)\",\n pointerEvents: this.isMinimized ? \"auto\" : \"none\",\n transformOrigin: \"50% 50% 0px\",\n }}\n onClick={() => {\n this.openChat()\n }}\n >\n {this.isBot && <slot name=\"bot\" />}\n {!this.isBot && (\n <button\n class=\"rounded-full flex cursor-pointer items-center pr-[14px] md:gap-x-3 focus:outline focus:outline-2 focus:outline-offset-2 focus:outline-blue-focused\"\n tabindex=\"0\"\n // onClick={() => {\n // this.openChat()\n // }}\n >\n {/* <div class=\"fixed bottom-4 left-4 flex items-center space-x-2 bg-gradient-to-r from-green-400 to-teal-500 text-white px-4 py-2 rounded-full shadow-lg\"> */}\n <div class=\"w-10 h-10 flex items-center justify-center bg-white rounded-full border relative\">\n {/* <div class=\"absolute bottom-[-2px] left-[3px] w-2 h-2 border-r-2 border-b-2 border-white rotate-45\"></div> */}\n {/* <svg class=\"w-5 h-5 text-gray-600\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 12l2 2 4-4\"></path>\n </svg> */}\n {this.botSettings.botLaunchIcon && <img src={this.botSettings.botLaunchIcon} alt=\"bot icon\" class=\"w-8 h-8 rounded-lg\" />}\n\n {!this.botSettings.botLaunchIcon && (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" stroke=\"#2095ae\">\n <g stroke-width=\"0\"></g>\n <g stroke-linecap=\"round\" stroke-linejoin=\"round\"></g>\n <g>\n {\" \"}\n <path\n d=\"M21 12C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12Z\"\n stroke=\"#2095ae\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n ></path>{\" \"}\n </g>\n </svg>\n )}\n </div>\n <span class=\"font-medium text-white\">Ask {this.botSettings?.botName}</span>\n </button>\n )}\n </div>\n </div>\n )\n }\n}\n"]}
|