ai12z 3.7.1-alpha.13 → 3.7.1-alpha.14

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.
@@ -1 +1 @@
1
- {"version":3,"file":"Chat.js","sourceRoot":"","sources":["../../../../src/components/ai12z-cta/components/Chat.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, h, Prop, Element, State, Event, EventEmitter, Listen, Watch, Env } from \"@stencil/core\"\nimport showdown from \"showdown\"\nimport hljs from \"highlight.js\"\n// import { io } from \"socket.io-client\"\nimport { /**getComponentByControlType, splitContent, splitContentMultiple, */ getAudioContent, getMetaInfo, generateUUID } from \"../../../utils/utils\"\n// import mustache from \"mustache\"\n// import Handlebars from \"handlebars\"\nimport { Handlebars } from \"../../../utils/helpers\"\nimport { SocketService } from \"../../../utils/socket-service\"\nimport { renderSurvey } from \"../../../utils/surveyHelpers\"\nimport { handleEndResponse, EndResponseConfig } from \"../../../utils/endResponseHelper\"\nimport { processChatData as processChatDataHelper } from \"../../../utils/botHelpers/processCarouselData\"\ndeclare const google: any\n\n@Component({\n tag: \"ai12z-chat\",\n styleUrls: [\"ai12z-chat.css\", \"../../../global/tailwind.min.css\", \"../../../global/survey-core.min.css\"],\n shadow: true,\n // scoped: true\n})\nexport class MyChat {\n private cdnPath: string = \"https://cdn.ai12z.net/assets/bot\"\n private surveyCDNPath: string = \"https://cdn.ai12z.net/pkg/surveyjs\"\n // private socketService: SocketService\n\n @Element() private element: HTMLElement\n @Prop() chatId: string\n @Prop({ mutable: true }) chats: any = []\n @Prop({ mutable: true }) query: string\n @Prop() apiKey: string\n @Prop({ mutable: true }) aiMessageId: string\n @Prop({ mutable: true }) imgFiles: any\n @Prop({ mutable: true }) env: string\n @Prop({ mutable: true }) conversationId: string\n @Prop() dataAttributes: any\n @Prop() chatExcludeTags: Array<string> = []\n @Prop() chatIncludeTags: Array<string> = []\n // @Prop() socket: any\n @Prop() target: string\n @Prop() voiceType: string\n @Prop() voice: string\n @Prop() componentType: string = \"search\"\n @Prop() chatPosition: string = \"below\"\n @Prop() socketIn: SocketService\n @Prop() customstyle: string\n @Prop() customJS: string\n @Prop() avatarUrl: string\n @Prop() settings: any\n\n @State() scrollBottom: any\n @State() copied: boolean = false\n @State() isPlayed: boolean = false\n @State() buttons: Array<{ id: string; label: string }> = []\n @State() itemList: any\n @State() currentChatData: any\n @State() currentTemplate: any\n @State() currentPage: number = 0\n @State() currentResponse: any\n @State() currentSlide: number = 0\n @State() scriptArray = []\n @State() isProse: boolean = true\n @State() isProcessingEndResponse: boolean = false\n @State() surveyDomId: string = \"\"\n @State() focusedIndex: number = -1\n\n private chatItemRefs: Array<HTMLElement | null> = []\n\n @Event() feedback: EventEmitter\n @Event({\n eventName: \"survey\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n survey: EventEmitter\n @Event() stateChanged: EventEmitter\n @Event() messageReceived: EventEmitter<{ data: string; domId: string }>\n @Event({\n eventName: \"formComplete\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n formSubmitted!: EventEmitter<any>\n private styles = [\n `${this.cdnPath}/v1/survey.min.css`,\n // `https://unpkg.com/survey-core/defaultV2.min.css`,\n `${this.cdnPath}/v1/survey-core.min.css`,\n `https://unpkg.com/@highlightjs/cdn-assets@11.9.0/styles/default.min.css`,\n ]\n private audioElement: HTMLAudioElement\n\n handleChatKeyNav(e: KeyboardEvent, idx: number) {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n e.stopPropagation();\n const nextIndex = Math.min(this.chats.length - 1, idx + 1);\n this.focusedIndex = nextIndex;\n this.chatItemRefs[nextIndex]?.focus();\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n e.stopPropagation();\n const prevIndex = Math.max(0, idx - 1);\n this.focusedIndex = prevIndex;\n this.chatItemRefs[prevIndex]?.focus();\n }\n }\n\n componentDidLoad() {\n const ai12zHeading = document.createElement(\"script\")\n ai12zHeading.text = `\n var ai12zChat = window[\"ai12z\"] = {}\n `\n document.head.appendChild(ai12zHeading)\n this.element.shadowRoot.appendChild(ai12zHeading)\n\n setTimeout(() => {\n // console.log(\"componentDidLoad chat.tsx\", this.customstyle)\n // console.log(\"customstyle\", this.customJS)\n if (this.customstyle) {\n const linkEl = document.createElement(\"link\")\n linkEl.setAttribute(\"rel\", \"stylesheet\")\n linkEl.setAttribute(\"href\", this.customstyle)\n this.element.shadowRoot?.appendChild(linkEl)\n }\n if (this.customJS) {\n const scriptEl = document.createElement(\"script\")\n scriptEl.setAttribute(\"type\", \"text/javascript\")\n scriptEl.setAttribute(\"src\", this.customJS)\n this.element.shadowRoot?.appendChild(scriptEl)\n }\n }, 500)\n // this.loadStyles()\n this.loadScriptsSequentially()\n }\n\n private async loadScriptsSequentially() {\n try {\n // 2. Load Survey Core\n await this.loadScript(`${this.surveyCDNPath}/survey-core@2.3.4/survey.core.min.js`)\n\n // 3. Load Survey i18n\n await this.loadScript(`${this.surveyCDNPath}/survey-core@2.3.4/survey.i18n.min.js`)\n\n // 4. Load Survey themes\n await this.loadScript(`${this.surveyCDNPath}/survey-core@2.3.4/themes/index.min.js`)\n\n // 6. Load Survey UI\n await this.loadScript(`${this.surveyCDNPath}/survey-js-ui@2.3.4/survey-js-ui.min.js`)\n\n // console.log(\"All Survey.js scripts loaded successfully\")\n\n this.loadStyles()\n } catch (error) {\n console.error(\"Failed to load Survey.js scripts:\", error)\n }\n }\n\n private loadScript(src: string): Promise<void> {\n return new Promise((resolve, reject) => {\n if (document.querySelector(`script[src=\"${src}\"]`)) {\n resolve()\n return\n }\n\n const script = document.createElement(\"script\")\n script.src = src\n script.async = false\n script.onload = () => resolve()\n script.onerror = () => reject(new Error(`Failed to load script: ${src}`))\n\n // Load in document head for global access\n // document.head.appendChild(script)\n this.element.shadowRoot.appendChild(script)\n })\n }\n\n loadStyles() {\n for (const style of this.styles) {\n const loadStyle = document.createElement(\"link\")\n loadStyle.rel = \"stylesheet\"\n loadStyle.href = style\n loadStyle.onerror = err => {\n console.error(\"Failed to load style:\", err)\n }\n this.element.shadowRoot.appendChild(loadStyle)\n }\n }\n\n private scrollToLatestBubble() {\n const chatContainer = this.element.shadowRoot.querySelector(\".chat-list\")\n const userBubbles = chatContainer?.querySelectorAll(\".non-pending-user\")\n const lastBubble = userBubbles?.[userBubbles.length - 1]\n // const lastBubble = chatContainer?.querySelector(`#${this.aiMessageId}`)\n if (lastBubble) {\n lastBubble.scrollIntoView({ behavior: \"smooth\", block: \"start\" })\n }\n }\n componentWillLoad() {\n this.loadStyles()\n // console.log(\"tags\", this.chatExcludeTags, this.chatIncludeTags)\n // this.loadScripts()\n if (typeof window !== \"undefined\" && !(window as any).Handlebars) {\n ;(window as any).Handlebars = Handlebars\n }\n // setTimeout(() => {\n // if (this.socketIn && (this.query?.trim().length > 0 || this.imgFiles?.length > 0)) {\n // this.invokeSocket()\n // }\n // }, 500)\n }\n\n // componentDidUpdate() {\n // // console.log(\"componentDidUpdate chat.tsx\")\n // // this.scrollToBottom()\n // // this.highlightcode()\n // }\n\n disconnectedCallback() {\n window[\"ai12z\"] = {}\n this.chats = []\n }\n\n @Watch(\"chats\")\n watchHandler(_newValue: any, _oldValue: any) {\n // console.log(\"The new value of chats is: \", _newValue)\n // this.scrollToBottom()\n // this.scrollToLatestBubble()\n }\n @Listen(\"streamResponse\", { target: \"window\" })\n streamResponseHandler(event: CustomEvent) {\n // console.log(\"streamRenderHandler\", event.detail.data, this.aiMessageId)\n if (!this.aiMessageId || this.aiMessageId === \"\") {\n this.aiMessageId = `ai-message-${generateUUID()}`\n // Update the last message with the generated ID\n if (this.chats.length > 0) {\n this.chats[this.chats.length - 1].id = this.aiMessageId\n this.chats = [...this.chats] // Trigger reactivity\n }\n }\n requestAnimationFrame(() => this.handleMessage(event.detail.data, this.aiMessageId))\n }\n\n async renderSurvey(_chat, surveyData) {\n await renderSurvey({\n chat: surveyData,\n surveyDomId: this.surveyDomId,\n shadowRoot: this.element.shadowRoot,\n config: {\n dataKey: this.apiKey,\n dataMode: this.env,\n dataAttributes: this.dataAttributes,\n formSubmitRenderCallback: processedResults => {\n this.handleSurveyCompletionRender(processedResults)\n },\n },\n })\n }\n\n handleSurveyCompletionRender(processedResults) {\n if (processedResults) {\n const surveyDom = this.element.shadowRoot.querySelector(`#${processedResults.domId}`)\n\n surveyDom.parentElement.innerHTML = processedResults.completedHtml\n this.formSubmitted.emit(processedResults)\n this.survey.emit(processedResults)\n }\n }\n\n\n\n @Listen(\"endResponse\", { target: \"window\" })\n endResponseHandler(event: CustomEvent) {\n this.messageReceived.emit({ data: event.detail, domId: this.aiMessageId })\n // console.log(\"listening end_response\", event.detail.data, this.aiMessageId)\n // ✅ Prevent concurrent processing\n\n\n if (this.isProcessingEndResponse) {\n console.log(\"Already processing endResponse, ignoring duplicate\")\n return\n }\n\n this.isProcessingEndResponse = true\n\n const idx = this.chats.findIndex(item => item.id === this.aiMessageId)\n requestAnimationFrame(async () => {\n try {\n // ✅ Create config object\n const config: EndResponseConfig = {\n element: this.element,\n hideSpinner: (chatData) => void this.hideSpinner(chatData),\n getUpdatedChat: (message, data) => {\n return this.getUpdatedChat(data, message)\n },\n updateChatMessage: (message, data) => {\n this.updateChatMessage(message, data)\n },\n // updateConversations: (html, data) => this.getUpdatedChat(html, data),\n renderSurvey: (data) => this.renderSurvey(this.chats[idx],data),\n processTemplateData: (chatData, data) => this.processTemplateData(chatData, data, \"carousel\"),\n processChatData: (chatData, data) => this.processChatData(chatData, data),\n checkHighlightcode: (id) => this.checkHighlightcode(id),\n addEventListeners: (selector) => this.addEventListeners(selector),\n customStyle: this.customstyle,\n customJS: this.customJS,\n conversationId: this.conversationId,\n controlSettings: this.settings,\n }\n \n // ✅ Use the helper function\n await handleEndResponse({\n data: event.detail,\n currentDomId: this.aiMessageId,\n inputType: \"cta\",\n setMessages: (newMessage) => { \n this.chats = [...this.chats, newMessage]\n requestAnimationFrame(() => {\n setTimeout(() => {\n if(newMessage && newMessage.id) {\n this.hideSpinner(newMessage).then(() => {\n // Spinner hidden\n console.log(\"Spinner hidden for text message\")\n })\n }\n }, 100)\n })\n },\n setSurveyDomId: (id) => { this.surveyDomId = id },\n setButtons: (buttons) => { this.buttons = buttons },\n config\n })\n \n // ✅ Common cleanup\n this.conversationId = event.detail.conversationId\n this.aiMessageId = \"\"\n \n } catch (error) {\n console.error(\"Error handling end_response:\", error)\n } finally {\n // ✅ Reset flag after processing\n setTimeout(() => {\n this.isProcessingEndResponse = false\n }, 500)\n }\n })\n // try {\n // this.scrollToLatestBubble()\n // const data = event.detail\n\n // const converter = new showdown.Converter()\n // let finalHtml = converter.makeHtml(data.answer)\n // const idx = this.chats.findIndex(item => item.id === this.aiMessageId)\n\n // const chatId = this.chats[idx].id\n // // this.chats[idx].insightId = data.insight_id\n // this.chats = this.chats.map((item, i) => (i === idx ? { ...item, insightId: data.insightId } : item))\n\n // const controlMatches = finalHtml.match(/\\[control[^\\]]*\\]/g) || []\n\n // // console.log(\"chats\", this.chats[idx])\n // if (finalHtml.indexOf(\"[control\") > -1) {\n // switch (data.controlType) {\n // case \"template\":\n // const newTemplateContent = splitContent(data.answer)\n // const templateData = this.getUpdatedChat(data, \"\")\n\n // this.survey.emit({ results: templateData, type: \"carousel\" })\n\n // this.element.shadowRoot.querySelector(`#${this.aiMessageId}`).innerHTML = newTemplateContent?.before\n // this.processTemplateData(templateData, data, \"carousel\")\n // if (newTemplateContent.after.trim().length > 0) {\n // const afterChatEle = this.getUpdatedChat(data, newTemplateContent?.after)\n\n // this.survey.emit({ results: afterChatEle, type: \"carousel\" })\n\n // this.waitForElementRender(`#${afterChatEle.id}`).then(() => {\n // // console.log(\"Element rendered\")\n // if (afterChatEle.id) {\n // const bubbleEle = this.element.shadowRoot.querySelector(`#${afterChatEle.id}`)\n // if (bubbleEle) {\n // ;(bubbleEle.querySelector(\"#spinner\") as HTMLElement).style.display = \"none\"\n // }\n // }\n // })\n // }\n\n // break\n // case \"form\":\n // finalHtml = finalHtml.replace(RegExp(/\\[[^>]*]/gm), `<div id=surveyContainer-${chatId}></div>`)\n // this.element.shadowRoot.querySelector(`#${this.aiMessageId}`).innerHTML = finalHtml\n // this.element.shadowRoot.querySelector(`#${this.aiMessageId}`)[\"style\"].width = \"100%\"\n // const surveyContainer = this.element.shadowRoot.querySelector(`#${this.aiMessageId}`)\n // if (surveyContainer) {\n // surveyContainer.parentElement[\"style\"].width = \"100%\"\n // }\n // this.chats[idx].formModel = data.controlData?.data?.source ?? data.controlData\n // this.renderSurvey(this.chats[idx], data)\n // // this.invokeSurvey(this.chats[idx], data)\n // break\n // case \"carousel\":\n // case \"list\":\n // if (controlMatches.length > 0) {\n // const controlOutput = splitContentMultiple(finalHtml)\n // if (controlOutput && controlOutput.parts.length > 0) {\n // // ✅ Find and remove the original bubble by ID, not by position\n // const originalBubbleIndex = this.chats.findIndex(chat => chat.id === this.aiMessageId)\n\n // if (originalBubbleIndex !== -1) {\n // // ✅ Remove the original bubble that we're about to replace\n // this.chats.splice(originalBubbleIndex, 1)\n // this.chats = [...this.chats] // Trigger reactivity\n // // console.log(`Removed original bubble: ${this.aiMessageId}`)\n\n // // ✅ Also remove the DOM element manually\n // const originalElement = this.element.shadowRoot.querySelector(`#${this.aiMessageId}`)\n // if (originalElement) {\n // originalElement.parentElement?.remove() // Remove the entire <li> parent\n // }\n // }\n\n // // ✅ Clear the DOM element content\n // const originalElement = this.element.shadowRoot.querySelector(`#${this.aiMessageId}`)\n // if (originalElement) {\n // originalElement.innerHTML = \"\"\n // }\n // controlOutput.parts.forEach((output, index) => {\n // if (output.type === \"text\" && output.content.trim().length > 0) {\n // const textChatEle = this.getUpdatedChat(data, output.content)\n // // Add to chats array\n // this.chats = [...this.chats, textChatEle]\n\n // this.survey.emit({ results: textChatEle, type: \"carousel\" })\n\n // // ✅ Wait for the element to render and update its content\n // this.waitForElementRender(`#${textChatEle.id}`).then(() => {\n // this.hideSpinner(textChatEle)\n // // console.log(`✅ Text bubble created: ${textChatEle.id}`)\n // })\n // }\n // if (output.type === \"control\") {\n // const controlChatEle = this.getUpdatedChat(data, \"\")\n\n // this.chats = [...this.chats, controlChatEle]\n\n // data.messageId = controlChatEle.id\n\n // if (data.controlData?.data?.source) {\n // data.controlData.data.source.customCss = this.customstyle || \"\"\n // data.controlData.data.source.customJs = this.customJS || \"\"\n // }\n // const controlElement = getComponentByControlType(data, \"ai\")\n // this.processChatData(controlChatEle, controlElement)\n\n // this.survey.emit({ results: controlChatEle, type: \"carousel\" })\n\n // // console.log(`✅ Control bubble created: ${controlChatEle.id} (agentDataId: ${output.agentDataId})`)\n // }\n // // ✅ Small delay between each part for better UX\n // if (index < controlOutput.parts.length - 1) {\n // new Promise(resolve => setTimeout(resolve, 300))\n // }\n // })\n // }\n // }\n // break\n // }\n // } else {\n // finalHtml = this.updateAnchorTags(finalHtml)\n // finalHtml = this.updateButtonEvents(finalHtml)\n // this.element.shadowRoot.querySelector(`#${this.aiMessageId}`).innerHTML = finalHtml\n // this.checkHighlightcode(this.aiMessageId)\n // this.addEventListeners(`#${this.aiMessageId}`)\n // }\n\n // this.stateChanged.emit({ state: \"end_response\" })\n\n // this.conversationId = data.conversationId\n // if (data.controlType === null) {\n // this.chats[idx].clipboard = finalHtml\n // // this.chats[this.chats.length - 1].message = finalHtml\n // }\n // this.aiMessageId = \"\"\n // // this.scrollToBottom()\n // } \n \n\n // finally {\n // // ✅ Reset flag after processing\n // setTimeout(() => {\n // this.isProcessingEndResponse = false\n // }, 500)\n // }\n }\n\n checkHighlightcode(highlightcodeId: string = \"\"): void {\n try {\n // Guard clause: Ensure highlightcodeId is provided\n if (!highlightcodeId) {\n console.warn(\"highlightcodeId is empty\")\n this.isProse = true\n return\n }\n\n hljs.configure({\n ignoreUnescapedHTML: true,\n })\n\n // Get the target element by ID from shadow DOM\n const container = this.element.shadowRoot?.querySelector(`#${highlightcodeId}`)\n if (!container) {\n console.warn(`Element with id '${highlightcodeId}' not found in shadowRoot`)\n this.isProse = true\n return\n }\n\n // Select all <pre> elements inside the target container\n const preElements = container.querySelectorAll(\"pre\")\n\n if (preElements.length > 0) {\n // this.isProse = false\n container.classList.remove(\"prose\")\n preElements.forEach(pre => {\n if (pre.dataset.highlighted) {\n console.warn(\"Element previously highlighted...\")\n return\n }\n hljs.highlightElement(pre)\n })\n } else {\n container.classList.add(\"prose\")\n // this.isProse = true\n }\n } catch (error) {\n console.error(\"Error in highlightcode:\", error)\n this.isProse = true\n }\n }\n\n @Listen(\"buttonClick\")\n buttonClickHandler(event: CustomEvent) {\n // this.query = event.detail\n this.survey.emit({ results: event.detail, type: \"button\" })\n // this.handleButtonClick(event.detail)\n }\n\n private get mainObject(): any {\n if (!window[\"ai12z\"]) {\n window[\"ai12z\"] = {}\n }\n return window[\"ai12z\"]\n }\n\n generateUUID() {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function (c) {\n var r = (Math.random() * 16) | 0,\n v = c == \"x\" ? r : (r & 0x3) | 0x8\n return v.toString(16)\n })\n }\n\n getUpdatedChat = (data, message) => {\n const newaiMessageId = `ai-message-${this.generateUUID()}`\n const newthumbsId = this.generateUUID()\n let chatEle = {\n message: message,\n type: \"ai\",\n status: \"success\",\n insightId: data.insightId,\n id: newaiMessageId,\n thumbsId: newthumbsId,\n controlType: data.controlData?.data?.source?.carousel?.type ?? \"\",\n // formModel: response?.formModel,\n }\n this.survey.emit({ results: chatEle, type: \"carousel\" })\n return chatEle\n }\n\n updateChatMessage = ( newMessage, _data) => {\n const idx = this.chats.findIndex(item => item.id === this.aiMessageId)\n if (idx !== -1) {\n this.chats[idx].message = newMessage\n this.chats[idx].clipboard = newMessage\n this.chats = [...this.chats] // Trigger reactivity\n }\n }\n \n\n async processChatData(chatData, data) {\n\n processChatDataHelper(\n chatData,\n data,\n this.element,\n (chatData): Promise<void> => this.hideSpinner(chatData) as Promise<void>,\n (chatData) => {\n this.survey.emit({ results: chatData, type: \"update\" })\n },\n this.customJS,\n this.customstyle,\n false,\n \"ai\"\n )\n\n\n // Step 3: Append the control element if both it and the target container exist\n\n // await this.waitForElementRender(`#${chatData.id}`).then(async () => {\n // // console.log(\"Element rendered\")\n // this.hideSpinner(chatData)\n // const targetContainer = this.element.shadowRoot.querySelector(`#${chatData.id}`)\n // if (targetContainer && controlElement) {\n // targetContainer.appendChild(controlElement)\n // // console.log(\"targetContainer\", targetContainer.parentElement)\n\n // targetContainer.parentElement[\"style\"].width = chatData.controlType === \"slider\" ? \"90%\" : this.componentType === \"inline\" ? \"\" : \"100%\"\n\n // if (chatData.controlType === \"custom\" || chatData.controlType === \"list\" || chatData.controlType === \"slider\") {\n // targetContainer.classList.remove(\"p-4\")\n // targetContainer.classList.add(\"p-0\")\n // targetContainer.classList.add(\"md:p-4\")\n // }\n // // targetContainer[\"style\"].width = \"90%\"\n // await this.waitForElementToAdd(targetContainer as HTMLElement)\n // // Step 5: Retrieve the content and emit the updated data\n // chatData.message = targetContainer.innerHTML\n // this.survey.emit({ results: chatData, type: \"update\" })\n // }\n // })\n }\n\n addEventforReadMore() {\n // Add event listeners to the \"Read More\" buttons\n this.element.shadowRoot.querySelectorAll(\".read-more\").forEach(button => {\n button.addEventListener(\"click\", event => {\n // const index = (event.target as HTMLElement).getAttribute(\"data-index\") // Get index from data-index attribute\n const card = (event.target as HTMLElement).closest(\".card\")\n const shortDescription = card.querySelector(\".short-description\")\n const longDescription = card.querySelector(\".long-description\")\n const cardImage = card.querySelector(\".card-image\")\n\n // Toggle visibility of descriptions\n shortDescription.classList.toggle(\"hidden\")\n longDescription.classList.toggle(\"hidden\")\n\n // Update button text\n if (shortDescription.classList.contains(\"hidden\")) {\n cardImage.classList.add(\"hidden\")\n card.classList.remove(\"md:grid-cols-2\")\n ;(event.target as HTMLElement).textContent = \"Show Less\"\n } else {\n cardImage.classList.remove(\"hidden\")\n card.classList.add(\"md:grid-cols-2\")\n ;(event.target as HTMLElement).textContent = \"Read More\"\n }\n\n // Optionally, you can use the index to log or perform other actions\n // console.log(`Button clicked for card at index: ${index}`)\n })\n })\n }\n\n handlePrev = () => {\n this.currentSlide = (this.currentSlide - 1 + this.itemList.length) % this.itemList.length\n this.processTemplateData(this.currentChatData, \"\", \"pagination\")\n }\n\n handleNext = () => {\n this.currentSlide = (this.currentSlide + 1) % this.itemList.length\n this.processTemplateData(this.currentChatData, \"\", \"pagination\")\n }\n\n addEventforPanel(_template, _query) {\n this.element.shadowRoot.querySelectorAll(\".panel-button\").forEach(button => {\n button.addEventListener(\"click\", event => {\n // const id = (event.target as HTMLElement).getAttribute(\"data-id\") // Get custom data-id attribute\n // console.log(`Button clicked for item with ID: ${id}`)\n\n // Add your logic here\n const type = (event.target as HTMLElement).getAttribute(\"data-type\") // Get custom data-id attribute\n // console.log(`Button clicked for item with ID: ${type}`)\n // Add your logic here\n if (type === \"panel\") {\n this.processTemplateData(this.currentChatData, \"\", \"pagination\")\n // const panelTemplate = Handlebars.compile(template[Number(id) + 2].content)\n // const cardList = this.element.shadowRoot.querySelectorAll(\".carousel-card\")\n // const card = (event.target as HTMLElement).closest(\".carousel-card\")\n // const cardIndex = card.getAttribute(\"data-index\")\n // cardList[cardIndex].innerHTML = panelTemplate({\n // title: query.items[cardIndex].title,\n // description: query.items[cardIndex].description,\n // shortDescription: query.items[cardIndex].shortDescription,\n // images: query.items[cardIndex].images,\n // subtitle: query.items[cardIndex].subtitle,\n // buttons: query.items[cardIndex].buttons,\n // })\n // this.addEventforcardButton(query, template)\n // this.addEventforReadMore()\n }\n })\n })\n }\n\n handleIndicatorClick(index: number) {\n this.currentSlide = index\n this.processTemplateData(this.currentChatData, \"\", \"pagination\")\n }\n\n updateCarousel() {\n const prevButton = this.element.shadowRoot.querySelector(\".prev\") ?? this.element.shadowRoot.querySelector(\".prev-btn\")\n const nextButton = this.element.shadowRoot.querySelector(\".next\") ?? this.element.shadowRoot.querySelector(\".next-btn\")\n\n // Attach event listeners to indicators\n const indicators = this.element.shadowRoot.querySelectorAll(\".indicator\")\n indicators.forEach((indicator, index) => {\n indicator.addEventListener(\"click\", () => this.handleIndicatorClick(index))\n })\n\n prevButton?.addEventListener(\"click\", this.handlePrev)\n\n nextButton?.addEventListener(\"click\", this.handleNext)\n }\n\n renderPagination(templateType) {\n let itemsPerPage, start, end, paginatedItems, context\n switch (templateType) {\n case \"carousel\":\n itemsPerPage = 1\n paginatedItems = this.itemList\n const transformValue = `-${this.currentSlide * 100}%`\n\n context = {\n paginatedItems,\n isFirstSlide: this.currentSlide === 0,\n isLastSlide: this.currentSlide === this.itemList.length - 1,\n transform: transformValue,\n currentSlide: this.currentSlide,\n }\n\n return { context: context, end: end }\n\n case \"list\":\n itemsPerPage = 5\n start = this.currentPage * itemsPerPage\n end = start + itemsPerPage\n paginatedItems = this.itemList.slice(start, end)\n\n context = {\n items: paginatedItems,\n hasPrev: this.currentPage > 0,\n hasNext: end < this.itemList.length,\n }\n\n return { context: context, end: end }\n }\n }\n\n addEventforPagination(end) {\n // Add event listeners for buttons\n this.element.shadowRoot.querySelector(\".prev-btn\")?.addEventListener(\"click\", () => {\n if (this.currentPage > 0) {\n this.currentPage--\n this.processTemplateData(this.currentChatData, \"\", \"pagination\")\n }\n })\n\n this.element.shadowRoot.querySelector(\".next-btn\")?.addEventListener(\"click\", () => {\n if (end < this.itemList.length) {\n this.currentPage++\n this.processTemplateData(this.currentChatData, \"\", \"pagination\")\n }\n })\n }\n\n addEventforcardButton(query, template) {\n // Attach event listeners\n this.element.shadowRoot.querySelectorAll(\".card-button\").forEach(button => {\n button.addEventListener(\"click\", event => {\n // Register a Handlebars helper to stringify objects\n Handlebars.registerHelper(\"json\", function (context) {\n return JSON.stringify(context)\n })\n const id = (event.target as HTMLElement).getAttribute(\"data-id\") // Get custom data-id attribute\n // console.log(`Button clicked for item with ID: ${id}`)\n\n // Add your logic here\n const type = (event.target as HTMLElement).getAttribute(\"data-type\") // Get custom data-id attribute\n // console.log(`Button clicked for item with ID: ${type}`)\n\n const url = (event.target as HTMLElement).getAttribute(\"data-url\")\n // console.log(`Button clicked for item with ID: ${url}`)\n // Add your logic here\n if (type === \"panel\") {\n const panelTemplate = Handlebars.compile(template[Number(id) + 1].content)\n const cardList = this.element.shadowRoot.querySelectorAll(\".carousel-card\")\n const card = (event.target as HTMLElement).closest(\".carousel-card\")\n const cardIndex = card.getAttribute(\"data-index\")\n cardList[cardIndex].innerHTML = panelTemplate({\n form: query.items[cardIndex].panels[Number(id)]?.form,\n formSettings: query.formSettings,\n buttons: query.items[cardIndex].panels[Number(id)]?.buttons,\n })\n this.addEventforPanel(template, query)\n }\n if (type === \"url\") {\n window.open(url, \"_blank\")\n }\n })\n })\n }\n\n async processTemplateData(chatData, data, _inputType) {\n this.currentChatData = chatData\n await this.waitForElementRender(`#${chatData.id}`).then(async () => {\n this.hideSpinner(chatData)\n const targetContainer = this.element.shadowRoot.querySelector(`#${chatData.id}`)\n // console.log(\"targetContainer\", targetContainer.parentElement)\n\n let handletemplate\n if (targetContainer) {\n if (_inputType === \"carousel\") {\n this.currentTemplate = data.controlData?.template\n this.currentResponse = data.controlData?.data.source\n this.itemList = this.currentResponse.items\n }\n\n targetContainer.parentElement[\"style\"].width = \"90%\"\n\n handletemplate = Handlebars.compile(this.currentTemplate[0]?.content)\n // targetContainer[\"dangerouslySetInnerHTML\"] = { __html: handletemplate(this.renderPagination().context, { currentSlide: this.currentSlide }) }\n if (this.currentResponse.process === \"list\") {\n targetContainer.innerHTML = handletemplate(this.renderPagination(\"list\").context)\n this.addEventforPagination(this.renderPagination(\"list\").end)\n } else if (this.currentResponse.process === \"carousel\") {\n // Register the custom 'eq' helper for Handlebars\n Handlebars.registerHelper(\"eq\", function (a, b) {\n return a === b\n })\n targetContainer.innerHTML = handletemplate(this.renderPagination(\"carousel\").context)\n this.updateCarousel()\n } else {\n // Register the helper\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 chatData.data = data.controlData.data\n\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: this.currentResponse, llm: data.controlData.data.llm })\n // targetContainer.innerHTML = handletemplate({ chartId: `chart-${chatData.id}`, source: new Handlebars.SafeString(JSON.stringify(this.currentResponse)) })\n setTimeout(() => {\n this.renderTemplateData(chatData)\n }, 1000)\n }\n\n // targetContainer[\"style\"].width = \"100%\"\n // targetContainer.innerHTML = handletemplate({ localData: new Handlebars.SafeString(JSON.stringify(query)) })\n // finalHtml = mustache.render(template, { chartData: query })\n // this.element.shadowRoot.querySelector(`#${this.aiMessageId}`).innerHTML = finalHtml\n\n this.addEventforReadMore()\n this.addEventforcardButton(this.currentResponse, this.currentTemplate)\n chatData.message = targetContainer.innerHTML\n this.survey.emit({ results: chatData, type: \"update\" })\n }\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.element.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.element.shadowRoot.querySelector(`script[src=\"${newScript.src}\"]`)) {\n this.element.shadowRoot.appendChild(newScript)\n } else {\n const scriptDom = this.element.shadowRoot.querySelector(`script[type=\"text/javascript\"]`)\n if (scriptDom && !newScript.src) {\n if (this.scriptArray.length > 1) {\n this.scriptArray.forEach(script => {\n if (!script.src && script.innerHTML !== newScript.innerHTML) {\n this.element.shadowRoot.appendChild(newScript)\n }\n })\n } else {\n this.element.shadowRoot.appendChild(newScript)\n }\n // this.element.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 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.element.shadowRoot.querySelector(`#${chatData.id}`)\n if (renderedBubble && renderedBubble.querySelector(\"#spinner\")) {\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 waitForElementRender(selector: string) {\n return new Promise<void>(resolve => {\n // Check if the target element is already in the DOM\n if (this.element.shadowRoot.querySelector(selector)) {\n resolve() // Resolve immediately if the element is already present\n return\n }\n\n const observer = new MutationObserver(() => {\n // Check for the target element in each mutation\n const targetElement = this.element.shadowRoot.querySelector(selector)\n if (targetElement) {\n // console.log(\"Element found:\", targetElement)\n resolve() // Resolve the promise once the element is found\n observer.disconnect() // Stop observing after the element is found\n }\n })\n\n // Observe childList changes within the parent element and its subtree\n observer.observe(this.element.shadowRoot, { childList: true, subtree: true })\n })\n }\n\n // Helper function to detect when the target element is rendered\n waitForElementToAdd(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 invokeSocket() {\n const socketId = this.socketIn.getSocketId()\n\n if (socketId) {\n const retrievedService = SocketService.getInstanceById(socketId)\n const socket = retrievedService.getSocket()\n const data = {\n apiKey: this.apiKey ?? Env.DATA_KEY,\n query: this.query,\n conversationId: this.conversationId ?? \"\",\n base64Images: this.imgFiles?.length > 0 ? this.imgFiles : [],\n event: \"evaluate_query\",\n attributes: this.dataAttributes,\n excludeTags: this.chatExcludeTags,\n includeTags: this.chatIncludeTags,\n meta: getMetaInfo(),\n }\n\n socket.emit(\"evaluate_query\", data, (error, _response) => {\n if (error) {\n console.error(\"Error occurred while evaluating query:\", error)\n this.aiMessageId = `chatbot-${generateUUID()}`\n this.chats[this.chats.length - 1].id = this.aiMessageId\n this.chats[this.chats.length - 1].text = \"Error connecting to server. Please try again later.\"\n }\n })\n this.scrollToLatestBubble()\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\", this.target)\n anchor.setAttribute(\"target\", this.target)\n anchor.classList.add(\"ai12z-cta-link\")\n })\n\n // Update the htmlContent with the modified anchor tags\n return doc.body.innerHTML\n }\n updateButtonEvents(htmlContent: string) {\n const parser = new DOMParser()\n const doc = parser.parseFromString(htmlContent, \"text/html\")\n const buttons = Array.from(doc.querySelectorAll(\"button\"))\n\n this.buttons = buttons.map((button, index) => {\n const id = button.id || `button-${index}`\n const label = button.textContent || `Button ${index + 1}`\n button.id = id\n button.setAttribute(\"data-original-click\", button.getAttribute(\"onclick\") || \"\")\n button.removeAttribute(\"onclick\")\n button.classList.add(\"active\")\n return {\n id,\n label,\n onClick: () => alert(`Button ${id} clicked!`),\n }\n })\n\n // Update the htmlContent with the modified buttons\n return doc.body.innerHTML\n }\n\n addEventListeners(msgId) {\n const container = this.element.shadowRoot.querySelector(msgId)\n if (container) {\n this.buttons.forEach(button => {\n const buttonElement = container.querySelector(`#${button.id}`)\n // console.log(\"buttonElement\", buttonElement)\n // if (buttonElement) {\n // buttonElement.addEventListener(\"click\", this.handleButtonClick(button.label))\n // }\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 // Match both 'sendMessage' and 'ai12zCtrl.sendMessage' patterns\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\n // const self = this\n \n // Extract actual method name (handle both 'sendMessage' and 'ai12zCtrl.sendMessage')\n const actualMethodName = funcName.includes('.') ? funcName.split('.').pop() : funcName\n // const func = self[actualMethodName]\n buttonElement.addEventListener(\"click\", () => {\n // if (typeof this[funcName] === \"function\") {\n try {\n // console.log(\"args\", argsStr)\n // Evaluate arguments safely\n switch (actualMethodName) {\n case \"sendQuery\":\n console.warn(\"sendQuery is deprecated, use sendMessage instead\")\n\n this.survey.emit({ results: button.label, type: \"button\" })\n break\n case \"sendMessage\":\n case \"ai12zCtrl.sendMessage\":\n const msgArgs = eval(`[${argsStr}]`)\n this.survey.emit({ results: msgArgs, type: \"sendMessage\" })\n // func.apply(self, msgArgs)\n break\n case \"sendJSON\":\n case \"ai12zCtrl.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\n const jsonArgs = eval(`[${argsStr}]`)\n // func.apply(self, jsonArgs)\n this.survey.emit({ results: jsonArgs, type: \"sendJSON\" })\n break\n }\n } catch (err) {\n console.error(`Error invoking ${funcName}:`, err)\n }\n })\n // buttonElement.addEventListener(\"click\", this.handleButtonClick(button.label))\n }\n }\n })\n }\n }\n\n handleButtonClick = (label: string) => (_event: Event) => {\n // console.log(`${label} clicked! ${event}`)\n // buttonEle.classList.add(\"active\")\n this.survey.emit({ results: label, type: \"button\" })\n }\n\n handleMessage = (data, aiMessageId) => {\n const converter = new showdown.Converter()\n const aiMessageBubble = this.element.shadowRoot.querySelector(`#${aiMessageId}`)\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 aiMessageBubble.setAttribute(\"aria-label\", bubbleText)\n aiMessageBubble.setAttribute(\"role\", \"log\")\n aiMessageBubble.setAttribute(\"aria-live\", \"polite\")\n aiMessageBubble.setAttribute(\"aria-atomic\", \"false\")\n\n\n // Assuming data is a string containing the message content\n let html = converter.makeHtml(bubbleText)\n const spinner = document.getElementById(\"spinner\")\n if (spinner) {\n spinner.style.display = \"none\"\n }\n // Append new content to the existing chat bubble\n aiMessageBubble.innerHTML = html\n\n this.chats[this.chats.length - 1].status = \"success\"\n }\n\n @Listen(\"stopStream\", { target: \"document\" })\n stopStreamInputHandler(_state) {\n if (this.socketIn) {\n // console.log(\"*****stop stream***\", this.socketIn)\n // this.socketIn.disconnect()\n SocketService.disconnectSocketById(_state.detail.socketId)\n }\n }\n\n @Listen(\"startStream\", { target: \"document\" })\n startStreamInputHandler(_state) {\n // console.log(\"*****start stream***\", _state.detail?.search)\n if (_state.detail?.maxQuestion) {\n setTimeout(() => {\n this.hideSpinner(_state.detail.chatData)\n this.scrollToLatestBubble()\n }, 1000)\n } else {\n this.query = _state.detail?.search\n this.imgFiles = _state.detail?.imgFiles\n this.invokeSocket()\n setTimeout(() => {\n this.scrollToLatestBubble()\n }, 500)\n }\n }\n\n highlightcode() {\n hljs.configure({\n ignoreUnescapedHTML: true,\n })\n\n // Select <pre> elements within the shadow DOM\n const preElements = this.element.shadowRoot.querySelectorAll(\"pre\")\n\n if (preElements.length > 0) {\n this.isProse = false\n // Log the <pre> elements or perform other actions\n preElements.forEach(pre => {\n hljs.highlightElement(pre)\n })\n }\n }\n\n scrollToBottom = () => {\n this.scrollBottom = this.element.shadowRoot.querySelector(\".scroll-bottom\")\n this.scrollBottom.scrollIntoView({ behavior: \"smooth\", block: \"end\" })\n }\n disableFeedback = (id: string): void => {\n const thumbsUp = this.element.shadowRoot.querySelector(`#thumbsUp_${id}`)\n const thumbsDown = this.element.shadowRoot.querySelector(`#thumbsDown_${id}`)\n thumbsUp.classList.add(\"not-allowed\")\n thumbsUp.setAttribute(\"disabled\", \"true\")\n thumbsDown.classList.add(\"not-allowed\")\n thumbsDown.setAttribute(\"disabled\", \"true\")\n }\n\n thumbsUp = (id: string, insightId: string): void => {\n const thumbsUp = this.element.shadowRoot.querySelector(`#thumbsUp_${id}`)\n thumbsUp.classList.add(\"thumbs-up\")\n thumbsUp.innerHTML = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M7.493 18.5c-.425 0-.82-.236-.975-.632A7.48 7.48 0 0 1 6 15.125c0-1.75.599-3.358 1.602-4.634.151-.192.373-.309.6-.397.473-.183.89-.514 1.212-.924a9.042 9.042 0 0 1 2.861-2.4c.723-.384 1.35-.956 1.653-1.715a4.498 4.498 0 0 0 .322-1.672V2.75A.75.75 0 0 1 15 2a2.25 2.25 0 0 1 2.25 2.25c0 1.152-.26 2.243-.723 3.218-.266.558.107 1.282.725 1.282h3.126c1.026 0 1.945.694 2.054 1.715.045.422.068.85.068 1.285a11.95 11.95 0 0 1-2.649 7.521c-.388.482-.987.729-1.605.729H14.23c-.483 0-.964-.078-1.423-.23l-3.114-1.04a4.501 4.501 0 0 0-1.423-.23h-.777ZM2.331 10.727a11.969 11.969 0 0 0-.831 4.398 12 12 0 0 0 .52 3.507C2.28 19.482 3.105 20 3.994 20H4.9c.445 0 .72-.498.523-.898a8.963 8.963 0 0 1-.924-3.977c0-1.708.476-3.305 1.302-4.666.245-.403-.028-.959-.5-.959H4.25c-.832 0-1.612.453-1.918 1.227Z\" />\n </svg>\n `\n this.disableFeedback(id)\n this.feedback.emit({ insightId: insightId, feedback: { value: 1 } })\n }\n\n thumbsDown = (id: string, insightId: string): void => {\n const thumbsDown = this.element.shadowRoot.querySelector(`#thumbsDown_${id}`)\n thumbsDown.classList.add(\"thumbs-down\")\n thumbsDown.innerHTML = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M15.73 5.5h1.035A7.465 7.465 0 0 1 18 9.625a7.465 7.465 0 0 1-1.235 4.125h-.148c-.806 0-1.534.446-2.031 1.08a9.04 9.04 0 0 1-2.861 2.4c-.723.384-1.35.956-1.653 1.715a4.499 4.499 0 0 0-.322 1.672v.633A.75.75 0 0 1 9 22a2.25 2.25 0 0 1-2.25-2.25c0-1.152.26-2.243.723-3.218.266-.558-.107-1.282-.725-1.282H3.622c-1.026 0-1.945-.694-2.054-1.715A12.137 12.137 0 0 1 1.5 12.25c0-2.848.992-5.464 2.649-7.521C4.537 4.247 5.136 4 5.754 4H9.77a4.5 4.5 0 0 1 1.423.23l3.114 1.04a4.5 4.5 0 0 0 1.423.23ZM21.669 14.023c.536-1.362.831-2.845.831-4.398 0-1.22-.182-2.398-.52-3.507-.26-.85-1.084-1.368-1.973-1.368H19.1c-.445 0-.72.498-.523.898.591 1.2.924 2.55.924 3.977a8.958 8.958 0 0 1-1.302 4.666c-.245.403.028.959.5.959h1.053c.832 0 1.612-.453 1.918-1.227Z\" />\n </svg>\n `\n this.disableFeedback(id)\n this.feedback.emit({ insightId: insightId, feedback: { value: -1 } })\n }\n\n // Function to copy the text to clipboard\n copyToClipboard(text: string) {\n navigator.clipboard\n .write([\n new ClipboardItem({\n \"text/html\": new Blob([text], { type: \"text/html\" }),\n \"text/plain\": new Blob([this.removeHtmlTags(text)], { type: \"text/plain\" }),\n }),\n ])\n .then(() => {\n // console.log(\"Text copied to clipboard\", text)\n this.copied = true // Set a flag to show copied state\n setTimeout(() => {\n this.copied = false // Reset copied state after 2 seconds\n }, 2000)\n })\n }\n\n // Method to remove HTML tags from a string\n removeHtmlTags(text: string): string {\n const div = document.createElement(\"div\")\n div.innerHTML = text\n return div.textContent || div.innerText || \"\"\n }\n\n // Function to trigger the text-to-speech\n async speakText(msg: string) {\n if (this.voiceType === \"default\") {\n if (\"speechSynthesis\" in window) {\n const voices = window.speechSynthesis.getVoices()\n const voice = voices.find(voice => voice.name === this.voice)\n this.isPlayed = true\n const utterance = new SpeechSynthesisUtterance(msg) // Create a speech synthesis utterance\n utterance.lang = \"en-US\" // Set the language, you can change this as needed\n utterance.rate = 1\n utterance.pitch = 1\n utterance.voice = voice\n // Speak the text\n window.speechSynthesis.speak(utterance)\n } else {\n alert(\"Speech Synthesis API is not supported in your browser.\")\n }\n }\n\n if (this.voiceType === \"google\") {\n const base64audiocontent = await getAudioContent(this.apiKey ?? Env.DATA_KEY, this.env ?? Env.DATA_MODE, msg, this.voice)\n const audioBlob = this.base64ToBlob(base64audiocontent.audio_content, \"audio/mpeg\")\n const audioUrl = URL.createObjectURL(audioBlob)\n\n // Create the audio element\n this.audioElement = new Audio(audioUrl)\n this.audioElement.onended = () => {\n // this.isPlaying = false\n this.isPlayed = false\n }\n if (this.audioElement.paused) {\n this.audioElement.play()\n this.isPlayed = true\n } else {\n this.audioElement.pause()\n this.audioElement.currentTime = 0\n this.audioElement.src = \"\" // Remove the audio source\n this.audioElement = null // Dereference the object\n this.isPlayed = false\n }\n }\n }\n\n base64ToBlob(base64: string, mimeType: string): Blob {\n const byteCharacters = atob(base64)\n const byteNumbers = new Array(byteCharacters.length).fill(0).map((_, i) => byteCharacters.charCodeAt(i))\n const byteArray = new Uint8Array(byteNumbers)\n return new Blob([byteArray], { type: mimeType })\n }\n\n render() {\n const email = \"\"\n\n return (\n <div>\n <ul\n id=\"main-content\"\n tabindex=\"-1\"\n class={{\n \"chat-list\": true,\n \"custom-list\": this.componentType === \"search\",\n // \"custom-chat-top-height\": this.componentType === \"search\",\n \"custom-chat-bottom-height\": this.componentType === \"inline\",\n \"custom-chat-above-height\": this.componentType === \"inline\" && this.chatPosition === \"above\",\n }}\n style={{\n maxHeight: this.componentType !== \"search\" ? \"80vh\" : \"none\",\n overflowY: this.componentType !== \"search\" ? \"auto\" : \"visible\",\n height: this.componentType === \"search\" ? \"auto\" : \"100%\",\n }}\n >\n {this.chats?.map((chat, idx) => {\n const isBot = chat.type === \"ai\"\n // const showAvatar = isBot && (idx === 0 || this.chats[idx - 1].type !== \"ai\")\n const showAvatar = isBot && (idx === this.chats.length - 1 || this.chats[idx + 1]?.type !== \"ai\") // Show avatar only for the last AI response\n return (\n <li\n class={{\n \"text-md\": true,\n \"chat-list-item\": true,\n \"chat-align-list\": chat.type !== \"user\",\n \"chat-not-user-list\": chat.type === \"user\",\n \"pointer-events-none\": chat.type === \"user\",\n }}\n tabindex={idx === this.focusedIndex ? 0 : -1}\n onKeyDown={(e) => this.handleChatKeyNav(e, idx)}\n ref={el => (this.chatItemRefs[idx] = el)}\n role=\"article\"\n aria-label={`${chat.type === 'user' ? 'Your message' : 'Bot response'} ${idx + 1}`}\n >\n {chat.type !== \"user\" && (\n <div class=\"chat-inner-list default-avatar\">\n {!this.avatarUrl && (\n <svg\n stroke=\"currentColor\"\n fill=\"currentColor\"\n stroke-width=\"0\"\n viewBox=\"0 0 16 16\"\n height=\"20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class={`w-8 h-8 ${showAvatar ? \"hidden md:block\" : \"opacity-0\"}`}\n >\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 )}\n {this.avatarUrl && (\n <div class={`avatar-container ${showAvatar ? \"hidden md:block\" : \"opacity-0\"}`}>\n <img src={this.avatarUrl} alt=\"Avatar\" class=\"avatar-image w-8 h-8 rounded-full\" />\n </div>\n )}\n </div>\n )}\n {chat.status === \"pending\" && (\n <div class=\"pending-chat\">\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\">\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 </div>\n )}\n <div\n id=\"parent-element\"\n onMouseEnter={e => {\n let popup = (e.target as HTMLElement).querySelector(\".non-user-container\") as HTMLElement\n if (popup) popup.style.display = \"block\"\n }}\n onMouseLeave={e => {\n let popup = (e.target as HTMLElement).querySelector(\".non-user-container\") as HTMLElement\n if (popup) popup.style.display = \"none\"\n }}\n // style={{ width: chat.type !== \"user\" ? \"90%\" : \"auto\" }}\n >\n {chat.status !== \"pending\" && (\n <div\n class={{\n \"p-4\": true,\n \"max-w-full\": this.componentType === \"search\" ? true : false,\n \"prose\": true,\n \"custom-prose\": true,\n \"transition-all\": true,\n \"duration-300\": true,\n \"opacity-100\": this.isProse,\n \"opacity-90\": !this.isProse,\n \"resize\": chat.formModel?.hasOwnProperty(\"answer\"),\n \"non-pending-user\": true,\n // \"p-0\": chat.controlType === \"list\" ? true : false,\n }}\n id={chat.id}\n innerHTML={chat.message}\n >\n {chat?.images?.map(img => {\n return <img src={img} class=\"thumbnail\" alt=\"thumbnail\" width=\"70\" height=\"50\" />\n })}\n {chat.type !== \"user\" && (\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 </div>\n )}\n {chat.type !== \"user\" && chat.clipboard && (this.settings.showMessageIcons ?? true) && (\n <div class=\"non-user-container\" style={{ display: \"none\" }}>\n {this.isPlayed && (\n <button\n class=\"copy-btn\"\n aria-label=\"Stop\"\n tabindex=\"0\"\n onClick={() => {\n this.isPlayed = false\n window.speechSynthesis.cancel()\n if (this.audioElement) {\n this.audioElement.pause()\n this.audioElement.currentTime = 0\n this.audioElement.src = \"\" // Remove the audio source\n this.audioElement = null // Dereference the object\n }\n // this.isPlayed = false\n }}\n >\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"icon-md-heavy\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12ZM9.5 8.5C8.94772 8.5 8.5 8.94772 8.5 9.5V14.5C8.5 15.0523 8.94772 15.5 9.5 15.5H14.5C15.0523 15.5 15.5 15.0523 15.5 14.5V9.5C15.5 8.94772 15.0523 8.5 14.5 8.5H9.5Z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </button>\n )}\n {!this.isPlayed && (\n <button class=\"copy-btn\" onClick={() => this.speakText(this.removeHtmlTags(chat.clipboard))} aria-label=\"Play\" tabindex=\"0\">\n <svg class=\"w-6 h-6\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M11 4.9099C11 4.47485 10.4828 4.24734 10.1621 4.54132L6.67572 7.7372C6.49129 7.90626 6.25019 8.00005 6 8.00005H4C3.44772 8.00005 3 8.44776 3 9.00005V15C3 15.5523 3.44772 16 4 16H6C6.25019 16 6.49129 16.0938 6.67572 16.2629L10.1621 19.4588C10.4828 19.7527 11 19.5252 11 19.0902V4.9099ZM8.81069 3.06701C10.4142 1.59714 13 2.73463 13 4.9099V19.0902C13 21.2655 10.4142 22.403 8.81069 20.9331L5.61102 18H4C2.34315 18 1 16.6569 1 15V9.00005C1 7.34319 2.34315 6.00005 4 6.00005H5.61102L8.81069 3.06701ZM20.3166 6.35665C20.8019 6.09313 21.409 6.27296 21.6725 6.75833C22.5191 8.3176 22.9996 10.1042 22.9996 12.0001C22.9996 13.8507 22.5418 15.5974 21.7323 17.1302C21.4744 17.6185 20.8695 17.8054 20.3811 17.5475C19.8927 17.2896 19.7059 16.6846 19.9638 16.1962C20.6249 14.9444 20.9996 13.5175 20.9996 12.0001C20.9996 10.4458 20.6064 8.98627 19.9149 7.71262C19.6514 7.22726 19.8312 6.62017 20.3166 6.35665ZM15.7994 7.90049C16.241 7.5688 16.8679 7.65789 17.1995 8.09947C18.0156 9.18593 18.4996 10.5379 18.4996 12.0001C18.4996 13.3127 18.1094 14.5372 17.4385 15.5604C17.1357 16.0222 16.5158 16.1511 16.0539 15.8483C15.5921 15.5455 15.4632 14.9255 15.766 14.4637C16.2298 13.7564 16.4996 12.9113 16.4996 12.0001C16.4996 10.9859 16.1653 10.0526 15.6004 9.30063C15.2687 8.85905 15.3578 8.23218 15.7994 7.90049Z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </button>\n )}\n <button class=\"copy-btn\" onClick={() => this.copyToClipboard(chat.clipboard)} aria-label=\"Copy to Clipboard\" tabindex=\"0\">\n {!this.copied && (\n <svg class=\"w-6 h-6\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M7 5C7 3.34315 8.34315 2 10 2H19C20.6569 2 22 3.34315 22 5V14C22 15.6569 20.6569 17 19 17H17V19C17 20.6569 15.6569 22 14 22H5C3.34315 22 2 20.6569 2 19V10C2 8.34315 3.34315 7 5 7H7V5ZM9 7H14C15.6569 7 17 8.34315 17 10V15H19C19.5523 15 20 14.5523 20 14V5C20 4.44772 19.5523 4 19 4H10C9.44772 4 9 4.44772 9 5V7ZM5 9C4.44772 9 4 9.44772 4 10V19C4 19.5523 4.44772 20 5 20H14C14.5523 20 15 19.5523 15 19V10C15 9.44772 14.5523 9 14 9H5Z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n )}\n {this.copied && (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"w-6 h-6\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M19.8198 6.19526C20.0601 6.45561 20.0601 6.87772 19.8198 7.13807L9.9736 17.8047C9.73328 18.0651 9.34364 18.0651 9.10332 17.8047L4.18024 12.4714C3.93992 12.2111 3.93992 11.7889 4.18024 11.5286C4.42056 11.2682 4.8102 11.2682 5.05053 11.5286L9.53846 16.3905L18.9495 6.19526C19.1898 5.93491 19.5794 5.93491 19.8198 6.19526Z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n )}\n </button>\n <button id={`thumbsUp_${chat.thumbsId}`} onClick={() => this.thumbsUp(chat.thumbsId, chat.insightId)} class={\"chat-thumbs-up\"} aria-label=\"Thumbs Up\" tabindex=\"0\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"w-6 h-6\">\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M6.633 10.25c.806 0 1.533-.446 2.031-1.08a9.041 9.041 0 0 1 2.861-2.4c.723-.384 1.35-.956 1.653-1.715a4.498 4.498 0 0 0 .322-1.672V2.75a.75.75 0 0 1 .75-.75 2.25 2.25 0 0 1 2.25 2.25c0 1.152-.26 2.243-.723 3.218-.266.558.107 1.282.725 1.282m0 0h3.126c1.026 0 1.945.694 2.054 1.715.045.422.068.85.068 1.285a11.95 11.95 0 0 1-2.649 7.521c-.388.482-.987.729-1.605.729H13.48c-.483 0-.964-.078-1.423-.23l-3.114-1.04a4.501 4.501 0 0 0-1.423-.23H5.904m10.598-9.75H14.25M5.904 18.5c.083.205.173.405.27.602.197.4-.078.898-.523.898h-.908c-.889 0-1.713-.518-1.972-1.368a12 12 0 0 1-.521-3.507c0-1.553.295-3.036.831-4.398C3.387 9.953 4.167 9.5 5 9.5h1.053c.472 0 .745.556.5.96a8.958 8.958 0 0 0-1.302 4.665c0 1.194.232 2.333.654 3.375Z\"\n />\n </svg>\n </button>\n\n <button id={`thumbsDown_${chat.thumbsId}`} onClick={() => this.thumbsDown(chat.thumbsId, chat.insightId)} class={\"chat-thumbs-up\"} aria-label=\"Thumbs Down\" tabindex=\"0\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"w-6 h-6\">\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M7.498 15.25H4.372c-1.026 0-1.945-.694-2.054-1.715a12.137 12.137 0 0 1-.068-1.285c0-2.848.992-5.464 2.649-7.521C5.287 4.247 5.886 4 6.504 4h4.016a4.5 4.5 0 0 1 1.423.23l3.114 1.04a4.5 4.5 0 0 0 1.423.23h1.294M7.498 15.25c.618 0 .991.724.725 1.282A7.471 7.471 0 0 0 7.5 19.75 2.25 2.25 0 0 0 9.75 22a.75.75 0 0 0 .75-.75v-.633c0-.573.11-1.14.322-1.672.304-.76.93-1.33 1.653-1.715a9.04 9.04 0 0 0 2.86-2.4c.498-.634 1.226-1.08 2.032-1.08h.384m-10.253 1.5H9.7m8.075-9.75c.01.05.027.1.05.148.593 1.2.925 2.55.925 3.977 0 1.487-.36 2.89-.999 4.125m.023-8.25c-.076-.365.183-.75.575-.75h.908c.889 0 1.713.518 1.972 1.368.339 1.11.521 2.287.521 3.507 0 1.553-.295 3.036-.831 4.398-.306.774-1.086 1.227-1.918 1.227h-1.053c-.472 0-.745-.556-.5-.96a8.95 8.95 0 0 0 .303-.54\"\n />\n </svg>\n </button>\n <button class=\"copy-btn\" tabindex=\"0\" aria-label=\"Send Email\" >\n <a\n href={`mailto:${email}?subject=${encodeURIComponent(this.chats[idx - 1]?.message)}&body=${encodeURIComponent(this.removeHtmlTags(chat.clipboard))}`}\n target=\"_blank\"\n aria-label=\"Send Email\"\n >\n <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" stroke=\"currentColor\" stroke-width=\"0.3\" class=\"w-6 h-6\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M3.75 5.25L3 6V18L3.75 18.75H20.25L21 18V6L20.25 5.25H3.75ZM4.5 7.6955V17.25H19.5V7.69525L11.9999 14.5136L4.5 7.6955ZM18.3099 6.75H5.68986L11.9999 12.4864L18.3099 6.75Z\"\n fill=\"currentColor\"\n ></path>{\" \"}\n </svg>\n </a>\n </button>\n </div>\n )}\n </div>\n </li>\n )\n })}\n <div class=\"scroll-bottom\" />\n </ul>\n </div>\n )\n }\n}\n"]}
1
+ {"version":3,"file":"Chat.js","sourceRoot":"","sources":["../../../../src/components/ai12z-cta/components/Chat.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, h, Prop, Element, State, Event, EventEmitter, Listen, Watch, Env } from \"@stencil/core\"\nimport showdown from \"showdown\"\nimport hljs from \"highlight.js\"\n// import { io } from \"socket.io-client\"\nimport { /**getComponentByControlType, splitContent, splitContentMultiple, */ getAudioContent, getMetaInfo, generateUUID } from \"../../../utils/utils\"\n// import mustache from \"mustache\"\n// import Handlebars from \"handlebars\"\nimport { Handlebars } from \"../../../utils/helpers\"\nimport { SocketService } from \"../../../utils/socket-service\"\nimport { renderSurvey } from \"../../../utils/surveyHelpers\"\nimport { handleEndResponse, EndResponseConfig } from \"../../../utils/endResponseHelper\"\nimport { processChatData as processChatDataHelper } from \"../../../utils/botHelpers/processCarouselData\"\ndeclare const google: any\n\n@Component({\n tag: \"ai12z-chat\",\n styleUrls: [\"ai12z-chat.css\", \"../../../global/tailwind.min.css\", \"../../../global/survey-core.min.css\"],\n shadow: true,\n // scoped: true\n})\nexport class MyChat {\n private cdnPath: string = \"https://cdn.ai12z.net/assets/bot\"\n private surveyCDNPath: string = \"https://cdn.ai12z.net/pkg/surveyjs\"\n // private socketService: SocketService\n\n @Element() private element: HTMLElement\n @Prop() chatId: string\n @Prop({ mutable: true }) chats: any = []\n @Prop({ mutable: true }) query: string\n @Prop() apiKey: string\n @Prop({ mutable: true }) aiMessageId: string\n @Prop({ mutable: true }) imgFiles: any\n @Prop({ mutable: true }) env: string\n @Prop({ mutable: true }) conversationId: string\n @Prop() dataAttributes: any\n @Prop() chatExcludeTags: Array<string> = []\n @Prop() chatIncludeTags: Array<string> = []\n // @Prop() socket: any\n @Prop() target: string\n @Prop() voiceType: string\n @Prop() voice: string\n @Prop() componentType: string = \"search\"\n @Prop() chatPosition: string = \"below\"\n @Prop() socketIn: SocketService\n @Prop() customstyle: string\n @Prop() customJS: string\n @Prop() avatarUrl: string\n @Prop() settings: any\n\n @State() scrollBottom: any\n @State() copied: boolean = false\n @State() isPlayed: boolean = false\n @State() buttons: Array<{ id: string; label: string }> = []\n @State() itemList: any\n @State() currentChatData: any\n @State() currentTemplate: any\n @State() currentPage: number = 0\n @State() currentResponse: any\n @State() currentSlide: number = 0\n @State() scriptArray = []\n @State() isProse: boolean = true\n @State() isProcessingEndResponse: boolean = false\n @State() surveyDomId: string = \"\"\n @State() focusedIndex: number = -1\n\n private chatItemRefs: Array<HTMLElement | null> = []\n\n @Event() feedback: EventEmitter\n @Event({\n eventName: \"survey\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n survey: EventEmitter\n @Event() stateChanged: EventEmitter\n @Event() messageReceived: EventEmitter<{ data: string; domId: string }>\n @Event({\n eventName: \"formComplete\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n formSubmitted!: EventEmitter<any>\n private styles = [\n `${this.cdnPath}/v1/survey.min.css`,\n // `https://unpkg.com/survey-core/defaultV2.min.css`,\n `${this.cdnPath}/v1/survey-core.min.css`,\n `https://unpkg.com/@highlightjs/cdn-assets@11.9.0/styles/default.min.css`,\n ]\n private audioElement: HTMLAudioElement\n\n handleChatKeyNav(e: KeyboardEvent, idx: number) {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n e.stopPropagation();\n const nextIndex = Math.min(this.chats.length - 1, idx + 1);\n this.focusedIndex = nextIndex;\n this.chatItemRefs[nextIndex]?.focus();\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n e.stopPropagation();\n const prevIndex = Math.max(0, idx - 1);\n this.focusedIndex = prevIndex;\n this.chatItemRefs[prevIndex]?.focus();\n }\n }\n\n componentDidLoad() {\n const ai12zHeading = document.createElement(\"script\")\n ai12zHeading.text = `\n var ai12zChat = window[\"ai12z\"] = {}\n `\n document.head.appendChild(ai12zHeading)\n this.element.shadowRoot.appendChild(ai12zHeading)\n\n setTimeout(() => {\n // console.log(\"componentDidLoad chat.tsx\", this.customstyle)\n // console.log(\"customstyle\", this.customJS)\n if (this.customstyle) {\n const linkEl = document.createElement(\"link\")\n linkEl.setAttribute(\"rel\", \"stylesheet\")\n linkEl.setAttribute(\"href\", this.customstyle)\n this.element.shadowRoot?.appendChild(linkEl)\n }\n if (this.customJS) {\n const scriptEl = document.createElement(\"script\")\n scriptEl.setAttribute(\"type\", \"text/javascript\")\n scriptEl.setAttribute(\"src\", this.customJS)\n this.element.shadowRoot?.appendChild(scriptEl)\n }\n }, 500)\n // this.loadStyles()\n this.loadScriptsSequentially()\n }\n\n private async loadScriptsSequentially() {\n try {\n // 2. Load Survey Core\n await this.loadScript(`${this.surveyCDNPath}/survey-core@2.3.4/survey.core.min.js`)\n\n // 3. Load Survey i18n\n await this.loadScript(`${this.surveyCDNPath}/survey-core@2.3.4/survey.i18n.min.js`)\n\n // 4. Load Survey themes\n await this.loadScript(`${this.surveyCDNPath}/survey-core@2.3.4/themes/index.min.js`)\n\n // 6. Load Survey UI\n await this.loadScript(`${this.surveyCDNPath}/survey-js-ui@2.3.4/survey-js-ui.min.js`)\n\n // console.log(\"All Survey.js scripts loaded successfully\")\n\n this.loadStyles()\n } catch (error) {\n console.error(\"Failed to load Survey.js scripts:\", error)\n }\n }\n\n private loadScript(src: string): Promise<void> {\n return new Promise((resolve, reject) => {\n if (document.querySelector(`script[src=\"${src}\"]`)) {\n resolve()\n return\n }\n\n const script = document.createElement(\"script\")\n script.src = src\n script.async = false\n script.onload = () => resolve()\n script.onerror = () => reject(new Error(`Failed to load script: ${src}`))\n\n // Load in document head for global access\n // document.head.appendChild(script)\n this.element.shadowRoot.appendChild(script)\n })\n }\n\n loadStyles() {\n for (const style of this.styles) {\n const loadStyle = document.createElement(\"link\")\n loadStyle.rel = \"stylesheet\"\n loadStyle.href = style\n loadStyle.onerror = err => {\n console.error(\"Failed to load style:\", err)\n }\n this.element.shadowRoot.appendChild(loadStyle)\n }\n }\n\n private scrollToLatestBubble() {\n const chatContainer = this.element.shadowRoot.querySelector(\".chat-list\")\n const userBubbles = chatContainer?.querySelectorAll(\".non-pending-user\")\n const lastBubble = userBubbles?.[userBubbles.length - 1]\n // const lastBubble = chatContainer?.querySelector(`#${this.aiMessageId}`)\n if (lastBubble) {\n lastBubble.scrollIntoView({ behavior: \"smooth\", block: \"start\" })\n }\n }\n componentWillLoad() {\n this.loadStyles()\n // console.log(\"tags\", this.chatExcludeTags, this.chatIncludeTags)\n // this.loadScripts()\n if (typeof window !== \"undefined\" && !(window as any).Handlebars) {\n ;(window as any).Handlebars = Handlebars\n }\n // setTimeout(() => {\n // if (this.socketIn && (this.query?.trim().length > 0 || this.imgFiles?.length > 0)) {\n // this.invokeSocket()\n // }\n // }, 500)\n }\n\n // componentDidUpdate() {\n // // console.log(\"componentDidUpdate chat.tsx\")\n // // this.scrollToBottom()\n // // this.highlightcode()\n // }\n\n disconnectedCallback() {\n window[\"ai12z\"] = {}\n this.chats = []\n }\n\n @Watch(\"chats\")\n watchHandler(_newValue: any, _oldValue: any) {\n // console.log(\"The new value of chats is: \", _newValue)\n // this.scrollToBottom()\n // this.scrollToLatestBubble()\n }\n @Listen(\"streamResponse\", { target: \"window\" })\n streamResponseHandler(event: CustomEvent) {\n // console.log(\"streamRenderHandler\", event.detail.data, this.aiMessageId)\n if (!this.aiMessageId || this.aiMessageId === \"\") {\n this.aiMessageId = `ai-message-${generateUUID()}`\n // Update the last message with the generated ID\n if (this.chats.length > 0) {\n this.chats[this.chats.length - 1].id = this.aiMessageId\n this.chats = [...this.chats] // Trigger reactivity\n }\n }\n requestAnimationFrame(() => this.handleMessage(event.detail.data, this.aiMessageId))\n }\n\n async renderSurvey(_chat, surveyData) {\n await renderSurvey({\n chat: surveyData,\n surveyDomId: this.surveyDomId,\n shadowRoot: this.element.shadowRoot,\n config: {\n dataKey: this.apiKey,\n dataMode: this.env,\n dataAttributes: this.dataAttributes,\n formSubmitRenderCallback: processedResults => {\n this.handleSurveyCompletionRender(processedResults)\n },\n },\n })\n }\n\n handleSurveyCompletionRender(processedResults) {\n if (processedResults) {\n const surveyDom = this.element.shadowRoot.querySelector(`#${processedResults.domId}`)\n\n surveyDom.parentElement.innerHTML = processedResults.completedHtml\n this.formSubmitted.emit(processedResults)\n this.survey.emit(processedResults)\n }\n }\n\n\n\n @Listen(\"endResponse\", { target: \"window\" })\n endResponseHandler(event: CustomEvent) {\n this.messageReceived.emit({ data: event.detail, domId: this.aiMessageId })\n // console.log(\"listening end_response\", event.detail.data, this.aiMessageId)\n // ✅ Prevent concurrent processing\n\n \n if (this.isProcessingEndResponse) {\n console.log(\"Already processing endResponse, ignoring duplicate\")\n return\n }\n this.scrollToLatestBubble()\n this.isProcessingEndResponse = true\n\n const idx = this.chats.findIndex(item => item.id === this.aiMessageId)\n requestAnimationFrame(async () => {\n try {\n // ✅ Create config object\n const config: EndResponseConfig = {\n element: this.element,\n hideSpinner: (chatData) => void this.hideSpinner(chatData),\n getUpdatedChat: (message, data) => {\n return this.getUpdatedChat(data, message)\n },\n updateChatMessage: (message, data) => {\n this.updateChatMessage(message, data)\n },\n // updateConversations: (html, data) => this.getUpdatedChat(html, data),\n renderSurvey: (data) => this.renderSurvey(this.chats[idx],data),\n processTemplateData: (chatData, data) => this.processTemplateData(chatData, data, \"carousel\"),\n processChatData: (chatData, data) => this.processChatData(chatData, data),\n checkHighlightcode: (id) => this.checkHighlightcode(id),\n addEventListeners: (selector) => this.addEventListeners(selector),\n customStyle: this.customstyle,\n customJS: this.customJS,\n conversationId: this.conversationId,\n controlSettings: this.settings,\n }\n \n // ✅ Use the helper function\n await handleEndResponse({\n data: event.detail,\n currentDomId: this.aiMessageId,\n inputType: \"cta\",\n setMessages: (newMessage) => { \n this.chats = [...this.chats, newMessage]\n requestAnimationFrame(() => {\n setTimeout(() => {\n if(newMessage && newMessage.id) {\n this.hideSpinner(newMessage).then(() => {\n // Spinner hidden\n console.log(\"Spinner hidden for text message\")\n })\n }\n }, 100)\n })\n },\n setSurveyDomId: (id) => { this.surveyDomId = id },\n setButtons: (buttons) => { this.buttons = buttons },\n config\n })\n \n // ✅ Common cleanup\n this.conversationId = event.detail.conversationId\n this.aiMessageId = \"\"\n \n } catch (error) {\n console.error(\"Error handling end_response:\", error)\n } finally {\n // ✅ Reset flag after processing\n setTimeout(() => {\n this.isProcessingEndResponse = false\n }, 500)\n }\n })\n // try {\n // this.scrollToLatestBubble()\n // const data = event.detail\n\n // const converter = new showdown.Converter()\n // let finalHtml = converter.makeHtml(data.answer)\n // const idx = this.chats.findIndex(item => item.id === this.aiMessageId)\n\n // const chatId = this.chats[idx].id\n // // this.chats[idx].insightId = data.insight_id\n // this.chats = this.chats.map((item, i) => (i === idx ? { ...item, insightId: data.insightId } : item))\n\n // const controlMatches = finalHtml.match(/\\[control[^\\]]*\\]/g) || []\n\n // // console.log(\"chats\", this.chats[idx])\n // if (finalHtml.indexOf(\"[control\") > -1) {\n // switch (data.controlType) {\n // case \"template\":\n // const newTemplateContent = splitContent(data.answer)\n // const templateData = this.getUpdatedChat(data, \"\")\n\n // this.survey.emit({ results: templateData, type: \"carousel\" })\n\n // this.element.shadowRoot.querySelector(`#${this.aiMessageId}`).innerHTML = newTemplateContent?.before\n // this.processTemplateData(templateData, data, \"carousel\")\n // if (newTemplateContent.after.trim().length > 0) {\n // const afterChatEle = this.getUpdatedChat(data, newTemplateContent?.after)\n\n // this.survey.emit({ results: afterChatEle, type: \"carousel\" })\n\n // this.waitForElementRender(`#${afterChatEle.id}`).then(() => {\n // // console.log(\"Element rendered\")\n // if (afterChatEle.id) {\n // const bubbleEle = this.element.shadowRoot.querySelector(`#${afterChatEle.id}`)\n // if (bubbleEle) {\n // ;(bubbleEle.querySelector(\"#spinner\") as HTMLElement).style.display = \"none\"\n // }\n // }\n // })\n // }\n\n // break\n // case \"form\":\n // finalHtml = finalHtml.replace(RegExp(/\\[[^>]*]/gm), `<div id=surveyContainer-${chatId}></div>`)\n // this.element.shadowRoot.querySelector(`#${this.aiMessageId}`).innerHTML = finalHtml\n // this.element.shadowRoot.querySelector(`#${this.aiMessageId}`)[\"style\"].width = \"100%\"\n // const surveyContainer = this.element.shadowRoot.querySelector(`#${this.aiMessageId}`)\n // if (surveyContainer) {\n // surveyContainer.parentElement[\"style\"].width = \"100%\"\n // }\n // this.chats[idx].formModel = data.controlData?.data?.source ?? data.controlData\n // this.renderSurvey(this.chats[idx], data)\n // // this.invokeSurvey(this.chats[idx], data)\n // break\n // case \"carousel\":\n // case \"list\":\n // if (controlMatches.length > 0) {\n // const controlOutput = splitContentMultiple(finalHtml)\n // if (controlOutput && controlOutput.parts.length > 0) {\n // // ✅ Find and remove the original bubble by ID, not by position\n // const originalBubbleIndex = this.chats.findIndex(chat => chat.id === this.aiMessageId)\n\n // if (originalBubbleIndex !== -1) {\n // // ✅ Remove the original bubble that we're about to replace\n // this.chats.splice(originalBubbleIndex, 1)\n // this.chats = [...this.chats] // Trigger reactivity\n // // console.log(`Removed original bubble: ${this.aiMessageId}`)\n\n // // ✅ Also remove the DOM element manually\n // const originalElement = this.element.shadowRoot.querySelector(`#${this.aiMessageId}`)\n // if (originalElement) {\n // originalElement.parentElement?.remove() // Remove the entire <li> parent\n // }\n // }\n\n // // ✅ Clear the DOM element content\n // const originalElement = this.element.shadowRoot.querySelector(`#${this.aiMessageId}`)\n // if (originalElement) {\n // originalElement.innerHTML = \"\"\n // }\n // controlOutput.parts.forEach((output, index) => {\n // if (output.type === \"text\" && output.content.trim().length > 0) {\n // const textChatEle = this.getUpdatedChat(data, output.content)\n // // Add to chats array\n // this.chats = [...this.chats, textChatEle]\n\n // this.survey.emit({ results: textChatEle, type: \"carousel\" })\n\n // // ✅ Wait for the element to render and update its content\n // this.waitForElementRender(`#${textChatEle.id}`).then(() => {\n // this.hideSpinner(textChatEle)\n // // console.log(`✅ Text bubble created: ${textChatEle.id}`)\n // })\n // }\n // if (output.type === \"control\") {\n // const controlChatEle = this.getUpdatedChat(data, \"\")\n\n // this.chats = [...this.chats, controlChatEle]\n\n // data.messageId = controlChatEle.id\n\n // if (data.controlData?.data?.source) {\n // data.controlData.data.source.customCss = this.customstyle || \"\"\n // data.controlData.data.source.customJs = this.customJS || \"\"\n // }\n // const controlElement = getComponentByControlType(data, \"ai\")\n // this.processChatData(controlChatEle, controlElement)\n\n // this.survey.emit({ results: controlChatEle, type: \"carousel\" })\n\n // // console.log(`✅ Control bubble created: ${controlChatEle.id} (agentDataId: ${output.agentDataId})`)\n // }\n // // ✅ Small delay between each part for better UX\n // if (index < controlOutput.parts.length - 1) {\n // new Promise(resolve => setTimeout(resolve, 300))\n // }\n // })\n // }\n // }\n // break\n // }\n // } else {\n // finalHtml = this.updateAnchorTags(finalHtml)\n // finalHtml = this.updateButtonEvents(finalHtml)\n // this.element.shadowRoot.querySelector(`#${this.aiMessageId}`).innerHTML = finalHtml\n // this.checkHighlightcode(this.aiMessageId)\n // this.addEventListeners(`#${this.aiMessageId}`)\n // }\n\n // this.stateChanged.emit({ state: \"end_response\" })\n\n // this.conversationId = data.conversationId\n // if (data.controlType === null) {\n // this.chats[idx].clipboard = finalHtml\n // // this.chats[this.chats.length - 1].message = finalHtml\n // }\n // this.aiMessageId = \"\"\n // // this.scrollToBottom()\n // } \n \n\n // finally {\n // // ✅ Reset flag after processing\n // setTimeout(() => {\n // this.isProcessingEndResponse = false\n // }, 500)\n // }\n }\n\n checkHighlightcode(highlightcodeId: string = \"\"): void {\n try {\n // Guard clause: Ensure highlightcodeId is provided\n if (!highlightcodeId) {\n console.warn(\"highlightcodeId is empty\")\n this.isProse = true\n return\n }\n\n hljs.configure({\n ignoreUnescapedHTML: true,\n })\n\n // Get the target element by ID from shadow DOM\n const container = this.element.shadowRoot?.querySelector(`#${highlightcodeId}`)\n if (!container) {\n console.warn(`Element with id '${highlightcodeId}' not found in shadowRoot`)\n this.isProse = true\n return\n }\n\n // Select all <pre> elements inside the target container\n const preElements = container.querySelectorAll(\"pre\")\n\n if (preElements.length > 0) {\n // this.isProse = false\n container.classList.remove(\"prose\")\n preElements.forEach(pre => {\n if (pre.dataset.highlighted) {\n console.warn(\"Element previously highlighted...\")\n return\n }\n hljs.highlightElement(pre)\n })\n } else {\n container.classList.add(\"prose\")\n // this.isProse = true\n }\n } catch (error) {\n console.error(\"Error in highlightcode:\", error)\n this.isProse = true\n }\n }\n\n @Listen(\"buttonClick\")\n buttonClickHandler(event: CustomEvent) {\n // this.query = event.detail\n this.survey.emit({ results: event.detail, type: \"button\" })\n // this.handleButtonClick(event.detail)\n }\n\n private get mainObject(): any {\n if (!window[\"ai12z\"]) {\n window[\"ai12z\"] = {}\n }\n return window[\"ai12z\"]\n }\n\n generateUUID() {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function (c) {\n var r = (Math.random() * 16) | 0,\n v = c == \"x\" ? r : (r & 0x3) | 0x8\n return v.toString(16)\n })\n }\n\n getUpdatedChat = (data, message) => {\n const newaiMessageId = `ai-message-${this.generateUUID()}`\n const newthumbsId = this.generateUUID()\n let chatEle = {\n message: message,\n type: \"ai\",\n status: \"success\",\n insightId: data.insightId,\n id: newaiMessageId,\n thumbsId: newthumbsId,\n controlType: data.controlData?.data?.source?.carousel?.type ?? \"\",\n // formModel: response?.formModel,\n }\n this.survey.emit({ results: chatEle, type: \"carousel\" })\n return chatEle\n }\n\n updateChatMessage = ( newMessage, _data) => {\n const idx = this.chats.findIndex(item => item.id === this.aiMessageId)\n if (idx !== -1) {\n this.chats[idx].message = newMessage\n this.chats[idx].clipboard = newMessage\n this.chats = [...this.chats] // Trigger reactivity\n }\n }\n \n\n async processChatData(chatData, data) {\n\n processChatDataHelper(\n chatData,\n data,\n this.element,\n (chatData): Promise<void> => this.hideSpinner(chatData) as Promise<void>,\n (chatData) => {\n this.survey.emit({ results: chatData, type: \"update\" })\n },\n this.customJS,\n this.customstyle,\n false,\n \"ai\"\n )\n\n\n // Step 3: Append the control element if both it and the target container exist\n\n // await this.waitForElementRender(`#${chatData.id}`).then(async () => {\n // // console.log(\"Element rendered\")\n // this.hideSpinner(chatData)\n // const targetContainer = this.element.shadowRoot.querySelector(`#${chatData.id}`)\n // if (targetContainer && controlElement) {\n // targetContainer.appendChild(controlElement)\n // // console.log(\"targetContainer\", targetContainer.parentElement)\n\n // targetContainer.parentElement[\"style\"].width = chatData.controlType === \"slider\" ? \"90%\" : this.componentType === \"inline\" ? \"\" : \"100%\"\n\n // if (chatData.controlType === \"custom\" || chatData.controlType === \"list\" || chatData.controlType === \"slider\") {\n // targetContainer.classList.remove(\"p-4\")\n // targetContainer.classList.add(\"p-0\")\n // targetContainer.classList.add(\"md:p-4\")\n // }\n // // targetContainer[\"style\"].width = \"90%\"\n // await this.waitForElementToAdd(targetContainer as HTMLElement)\n // // Step 5: Retrieve the content and emit the updated data\n // chatData.message = targetContainer.innerHTML\n // this.survey.emit({ results: chatData, type: \"update\" })\n // }\n // })\n }\n\n addEventforReadMore() {\n // Add event listeners to the \"Read More\" buttons\n this.element.shadowRoot.querySelectorAll(\".read-more\").forEach(button => {\n button.addEventListener(\"click\", event => {\n // const index = (event.target as HTMLElement).getAttribute(\"data-index\") // Get index from data-index attribute\n const card = (event.target as HTMLElement).closest(\".card\")\n const shortDescription = card.querySelector(\".short-description\")\n const longDescription = card.querySelector(\".long-description\")\n const cardImage = card.querySelector(\".card-image\")\n\n // Toggle visibility of descriptions\n shortDescription.classList.toggle(\"hidden\")\n longDescription.classList.toggle(\"hidden\")\n\n // Update button text\n if (shortDescription.classList.contains(\"hidden\")) {\n cardImage.classList.add(\"hidden\")\n card.classList.remove(\"md:grid-cols-2\")\n ;(event.target as HTMLElement).textContent = \"Show Less\"\n } else {\n cardImage.classList.remove(\"hidden\")\n card.classList.add(\"md:grid-cols-2\")\n ;(event.target as HTMLElement).textContent = \"Read More\"\n }\n\n // Optionally, you can use the index to log or perform other actions\n // console.log(`Button clicked for card at index: ${index}`)\n })\n })\n }\n\n handlePrev = () => {\n this.currentSlide = (this.currentSlide - 1 + this.itemList.length) % this.itemList.length\n this.processTemplateData(this.currentChatData, \"\", \"pagination\")\n }\n\n handleNext = () => {\n this.currentSlide = (this.currentSlide + 1) % this.itemList.length\n this.processTemplateData(this.currentChatData, \"\", \"pagination\")\n }\n\n addEventforPanel(_template, _query) {\n this.element.shadowRoot.querySelectorAll(\".panel-button\").forEach(button => {\n button.addEventListener(\"click\", event => {\n // const id = (event.target as HTMLElement).getAttribute(\"data-id\") // Get custom data-id attribute\n // console.log(`Button clicked for item with ID: ${id}`)\n\n // Add your logic here\n const type = (event.target as HTMLElement).getAttribute(\"data-type\") // Get custom data-id attribute\n // console.log(`Button clicked for item with ID: ${type}`)\n // Add your logic here\n if (type === \"panel\") {\n this.processTemplateData(this.currentChatData, \"\", \"pagination\")\n // const panelTemplate = Handlebars.compile(template[Number(id) + 2].content)\n // const cardList = this.element.shadowRoot.querySelectorAll(\".carousel-card\")\n // const card = (event.target as HTMLElement).closest(\".carousel-card\")\n // const cardIndex = card.getAttribute(\"data-index\")\n // cardList[cardIndex].innerHTML = panelTemplate({\n // title: query.items[cardIndex].title,\n // description: query.items[cardIndex].description,\n // shortDescription: query.items[cardIndex].shortDescription,\n // images: query.items[cardIndex].images,\n // subtitle: query.items[cardIndex].subtitle,\n // buttons: query.items[cardIndex].buttons,\n // })\n // this.addEventforcardButton(query, template)\n // this.addEventforReadMore()\n }\n })\n })\n }\n\n handleIndicatorClick(index: number) {\n this.currentSlide = index\n this.processTemplateData(this.currentChatData, \"\", \"pagination\")\n }\n\n updateCarousel() {\n const prevButton = this.element.shadowRoot.querySelector(\".prev\") ?? this.element.shadowRoot.querySelector(\".prev-btn\")\n const nextButton = this.element.shadowRoot.querySelector(\".next\") ?? this.element.shadowRoot.querySelector(\".next-btn\")\n\n // Attach event listeners to indicators\n const indicators = this.element.shadowRoot.querySelectorAll(\".indicator\")\n indicators.forEach((indicator, index) => {\n indicator.addEventListener(\"click\", () => this.handleIndicatorClick(index))\n })\n\n prevButton?.addEventListener(\"click\", this.handlePrev)\n\n nextButton?.addEventListener(\"click\", this.handleNext)\n }\n\n renderPagination(templateType) {\n let itemsPerPage, start, end, paginatedItems, context\n switch (templateType) {\n case \"carousel\":\n itemsPerPage = 1\n paginatedItems = this.itemList\n const transformValue = `-${this.currentSlide * 100}%`\n\n context = {\n paginatedItems,\n isFirstSlide: this.currentSlide === 0,\n isLastSlide: this.currentSlide === this.itemList.length - 1,\n transform: transformValue,\n currentSlide: this.currentSlide,\n }\n\n return { context: context, end: end }\n\n case \"list\":\n itemsPerPage = 5\n start = this.currentPage * itemsPerPage\n end = start + itemsPerPage\n paginatedItems = this.itemList.slice(start, end)\n\n context = {\n items: paginatedItems,\n hasPrev: this.currentPage > 0,\n hasNext: end < this.itemList.length,\n }\n\n return { context: context, end: end }\n }\n }\n\n addEventforPagination(end) {\n // Add event listeners for buttons\n this.element.shadowRoot.querySelector(\".prev-btn\")?.addEventListener(\"click\", () => {\n if (this.currentPage > 0) {\n this.currentPage--\n this.processTemplateData(this.currentChatData, \"\", \"pagination\")\n }\n })\n\n this.element.shadowRoot.querySelector(\".next-btn\")?.addEventListener(\"click\", () => {\n if (end < this.itemList.length) {\n this.currentPage++\n this.processTemplateData(this.currentChatData, \"\", \"pagination\")\n }\n })\n }\n\n addEventforcardButton(query, template) {\n // Attach event listeners\n this.element.shadowRoot.querySelectorAll(\".card-button\").forEach(button => {\n button.addEventListener(\"click\", event => {\n // Register a Handlebars helper to stringify objects\n Handlebars.registerHelper(\"json\", function (context) {\n return JSON.stringify(context)\n })\n const id = (event.target as HTMLElement).getAttribute(\"data-id\") // Get custom data-id attribute\n // console.log(`Button clicked for item with ID: ${id}`)\n\n // Add your logic here\n const type = (event.target as HTMLElement).getAttribute(\"data-type\") // Get custom data-id attribute\n // console.log(`Button clicked for item with ID: ${type}`)\n\n const url = (event.target as HTMLElement).getAttribute(\"data-url\")\n // console.log(`Button clicked for item with ID: ${url}`)\n // Add your logic here\n if (type === \"panel\") {\n const panelTemplate = Handlebars.compile(template[Number(id) + 1].content)\n const cardList = this.element.shadowRoot.querySelectorAll(\".carousel-card\")\n const card = (event.target as HTMLElement).closest(\".carousel-card\")\n const cardIndex = card.getAttribute(\"data-index\")\n cardList[cardIndex].innerHTML = panelTemplate({\n form: query.items[cardIndex].panels[Number(id)]?.form,\n formSettings: query.formSettings,\n buttons: query.items[cardIndex].panels[Number(id)]?.buttons,\n })\n this.addEventforPanel(template, query)\n }\n if (type === \"url\") {\n window.open(url, \"_blank\")\n }\n })\n })\n }\n\n async processTemplateData(chatData, data, _inputType) {\n this.currentChatData = chatData\n await this.waitForElementRender(`#${chatData.id}`).then(async () => {\n this.hideSpinner(chatData)\n const targetContainer = this.element.shadowRoot.querySelector(`#${chatData.id}`)\n // console.log(\"targetContainer\", targetContainer.parentElement)\n\n let handletemplate\n if (targetContainer) {\n if (_inputType === \"carousel\") {\n this.currentTemplate = data.controlData?.template\n this.currentResponse = data.controlData?.data.source\n this.itemList = this.currentResponse.items\n }\n\n targetContainer.parentElement[\"style\"].width = \"90%\"\n\n handletemplate = Handlebars.compile(this.currentTemplate[0]?.content)\n // targetContainer[\"dangerouslySetInnerHTML\"] = { __html: handletemplate(this.renderPagination().context, { currentSlide: this.currentSlide }) }\n if (this.currentResponse.process === \"list\") {\n targetContainer.innerHTML = handletemplate(this.renderPagination(\"list\").context)\n this.addEventforPagination(this.renderPagination(\"list\").end)\n } else if (this.currentResponse.process === \"carousel\") {\n // Register the custom 'eq' helper for Handlebars\n Handlebars.registerHelper(\"eq\", function (a, b) {\n return a === b\n })\n targetContainer.innerHTML = handletemplate(this.renderPagination(\"carousel\").context)\n this.updateCarousel()\n } else {\n // Register the helper\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 chatData.data = data.controlData.data\n\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: this.currentResponse, llm: data.controlData.data.llm })\n // targetContainer.innerHTML = handletemplate({ chartId: `chart-${chatData.id}`, source: new Handlebars.SafeString(JSON.stringify(this.currentResponse)) })\n setTimeout(() => {\n this.renderTemplateData(chatData)\n }, 1000)\n }\n\n // targetContainer[\"style\"].width = \"100%\"\n // targetContainer.innerHTML = handletemplate({ localData: new Handlebars.SafeString(JSON.stringify(query)) })\n // finalHtml = mustache.render(template, { chartData: query })\n // this.element.shadowRoot.querySelector(`#${this.aiMessageId}`).innerHTML = finalHtml\n\n this.addEventforReadMore()\n this.addEventforcardButton(this.currentResponse, this.currentTemplate)\n chatData.message = targetContainer.innerHTML\n this.survey.emit({ results: chatData, type: \"update\" })\n }\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.element.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.element.shadowRoot.querySelector(`script[src=\"${newScript.src}\"]`)) {\n this.element.shadowRoot.appendChild(newScript)\n } else {\n const scriptDom = this.element.shadowRoot.querySelector(`script[type=\"text/javascript\"]`)\n if (scriptDom && !newScript.src) {\n if (this.scriptArray.length > 1) {\n this.scriptArray.forEach(script => {\n if (!script.src && script.innerHTML !== newScript.innerHTML) {\n this.element.shadowRoot.appendChild(newScript)\n }\n })\n } else {\n this.element.shadowRoot.appendChild(newScript)\n }\n // this.element.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 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.element.shadowRoot.querySelector(`#${chatData.id}`)\n if (renderedBubble && renderedBubble.querySelector(\"#spinner\")) {\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 waitForElementRender(selector: string) {\n return new Promise<void>(resolve => {\n // Check if the target element is already in the DOM\n if (this.element.shadowRoot.querySelector(selector)) {\n resolve() // Resolve immediately if the element is already present\n return\n }\n\n const observer = new MutationObserver(() => {\n // Check for the target element in each mutation\n const targetElement = this.element.shadowRoot.querySelector(selector)\n if (targetElement) {\n // console.log(\"Element found:\", targetElement)\n resolve() // Resolve the promise once the element is found\n observer.disconnect() // Stop observing after the element is found\n }\n })\n\n // Observe childList changes within the parent element and its subtree\n observer.observe(this.element.shadowRoot, { childList: true, subtree: true })\n })\n }\n\n // Helper function to detect when the target element is rendered\n waitForElementToAdd(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 invokeSocket() {\n const socketId = this.socketIn.getSocketId()\n\n if (socketId) {\n const retrievedService = SocketService.getInstanceById(socketId)\n const socket = retrievedService.getSocket()\n const data = {\n apiKey: this.apiKey ?? Env.DATA_KEY,\n query: this.query,\n conversationId: this.conversationId ?? \"\",\n base64Images: this.imgFiles?.length > 0 ? this.imgFiles : [],\n event: \"evaluate_query\",\n attributes: this.dataAttributes,\n excludeTags: this.chatExcludeTags,\n includeTags: this.chatIncludeTags,\n meta: getMetaInfo(),\n }\n\n socket.emit(\"evaluate_query\", data, (error, _response) => {\n if (error) {\n console.error(\"Error occurred while evaluating query:\", error)\n this.aiMessageId = `chatbot-${generateUUID()}`\n this.chats[this.chats.length - 1].id = this.aiMessageId\n this.chats[this.chats.length - 1].text = \"Error connecting to server. Please try again later.\"\n }\n })\n // this.scrollToLatestBubble()\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\", this.target)\n anchor.setAttribute(\"target\", this.target)\n anchor.classList.add(\"ai12z-cta-link\")\n })\n\n // Update the htmlContent with the modified anchor tags\n return doc.body.innerHTML\n }\n updateButtonEvents(htmlContent: string) {\n const parser = new DOMParser()\n const doc = parser.parseFromString(htmlContent, \"text/html\")\n const buttons = Array.from(doc.querySelectorAll(\"button\"))\n\n this.buttons = buttons.map((button, index) => {\n const id = button.id || `button-${index}`\n const label = button.textContent || `Button ${index + 1}`\n button.id = id\n button.setAttribute(\"data-original-click\", button.getAttribute(\"onclick\") || \"\")\n button.removeAttribute(\"onclick\")\n button.classList.add(\"active\")\n return {\n id,\n label,\n onClick: () => alert(`Button ${id} clicked!`),\n }\n })\n\n // Update the htmlContent with the modified buttons\n return doc.body.innerHTML\n }\n\n addEventListeners(msgId) {\n const container = this.element.shadowRoot.querySelector(msgId)\n if (container) {\n this.buttons.forEach(button => {\n const buttonElement = container.querySelector(`#${button.id}`)\n // console.log(\"buttonElement\", buttonElement)\n // if (buttonElement) {\n // buttonElement.addEventListener(\"click\", this.handleButtonClick(button.label))\n // }\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 // Match both 'sendMessage' and 'ai12zCtrl.sendMessage' patterns\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\n // const self = this\n \n // Extract actual method name (handle both 'sendMessage' and 'ai12zCtrl.sendMessage')\n const actualMethodName = funcName.includes('.') ? funcName.split('.').pop() : funcName\n // const func = self[actualMethodName]\n buttonElement.addEventListener(\"click\", () => {\n // if (typeof this[funcName] === \"function\") {\n try {\n // console.log(\"args\", argsStr)\n // Evaluate arguments safely\n switch (actualMethodName) {\n case \"sendQuery\":\n console.warn(\"sendQuery is deprecated, use sendMessage instead\")\n\n this.survey.emit({ results: button.label, type: \"button\" })\n break\n case \"sendMessage\":\n case \"ai12zCtrl.sendMessage\":\n const msgArgs = eval(`[${argsStr}]`)\n this.survey.emit({ results: msgArgs, type: \"sendMessage\" })\n // func.apply(self, msgArgs)\n break\n case \"sendJSON\":\n case \"ai12zCtrl.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\n const jsonArgs = eval(`[${argsStr}]`)\n // func.apply(self, jsonArgs)\n this.survey.emit({ results: jsonArgs, type: \"sendJSON\" })\n break\n }\n } catch (err) {\n console.error(`Error invoking ${funcName}:`, err)\n }\n })\n // buttonElement.addEventListener(\"click\", this.handleButtonClick(button.label))\n }\n }\n })\n }\n }\n\n handleButtonClick = (label: string) => (_event: Event) => {\n // console.log(`${label} clicked! ${event}`)\n // buttonEle.classList.add(\"active\")\n this.survey.emit({ results: label, type: \"button\" })\n }\n\n handleMessage = (data, aiMessageId) => {\n const converter = new showdown.Converter()\n const aiMessageBubble = this.element.shadowRoot.querySelector(`#${aiMessageId}`)\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 aiMessageBubble.setAttribute(\"aria-label\", bubbleText)\n aiMessageBubble.setAttribute(\"role\", \"log\")\n aiMessageBubble.setAttribute(\"aria-live\", \"polite\")\n aiMessageBubble.setAttribute(\"aria-atomic\", \"false\")\n\n\n // Assuming data is a string containing the message content\n let html = converter.makeHtml(bubbleText)\n const spinner = document.getElementById(\"spinner\")\n if (spinner) {\n spinner.style.display = \"none\"\n }\n // Append new content to the existing chat bubble\n aiMessageBubble.innerHTML = html\n\n this.chats[this.chats.length - 1].status = \"success\"\n }\n\n @Listen(\"stopStream\", { target: \"document\" })\n stopStreamInputHandler(_state) {\n if (this.socketIn) {\n // console.log(\"*****stop stream***\", this.socketIn)\n // this.socketIn.disconnect()\n SocketService.disconnectSocketById(_state.detail.socketId)\n }\n }\n\n @Listen(\"startStream\", { target: \"document\" })\n startStreamInputHandler(_state) {\n // console.log(\"*****start stream***\", _state.detail?.search)\n if (_state.detail?.maxQuestion) {\n setTimeout(() => {\n this.hideSpinner(_state.detail.chatData)\n this.scrollToLatestBubble()\n }, 1000)\n } else {\n this.query = _state.detail?.search\n this.imgFiles = _state.detail?.imgFiles\n this.invokeSocket()\n if(this.chats.length !== 2) {\n setTimeout(() => {\n this.scrollToLatestBubble()\n }, 500)\n }\n }\n }\n\n highlightcode() {\n hljs.configure({\n ignoreUnescapedHTML: true,\n })\n\n // Select <pre> elements within the shadow DOM\n const preElements = this.element.shadowRoot.querySelectorAll(\"pre\")\n\n if (preElements.length > 0) {\n this.isProse = false\n // Log the <pre> elements or perform other actions\n preElements.forEach(pre => {\n hljs.highlightElement(pre)\n })\n }\n }\n\n scrollToBottom = () => {\n this.scrollBottom = this.element.shadowRoot.querySelector(\".scroll-bottom\")\n this.scrollBottom.scrollIntoView({ behavior: \"smooth\", block: \"end\" })\n }\n disableFeedback = (id: string): void => {\n const thumbsUp = this.element.shadowRoot.querySelector(`#thumbsUp_${id}`)\n const thumbsDown = this.element.shadowRoot.querySelector(`#thumbsDown_${id}`)\n thumbsUp.classList.add(\"not-allowed\")\n thumbsUp.setAttribute(\"disabled\", \"true\")\n thumbsDown.classList.add(\"not-allowed\")\n thumbsDown.setAttribute(\"disabled\", \"true\")\n }\n\n thumbsUp = (id: string, insightId: string): void => {\n const thumbsUp = this.element.shadowRoot.querySelector(`#thumbsUp_${id}`)\n thumbsUp.classList.add(\"thumbs-up\")\n thumbsUp.innerHTML = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M7.493 18.5c-.425 0-.82-.236-.975-.632A7.48 7.48 0 0 1 6 15.125c0-1.75.599-3.358 1.602-4.634.151-.192.373-.309.6-.397.473-.183.89-.514 1.212-.924a9.042 9.042 0 0 1 2.861-2.4c.723-.384 1.35-.956 1.653-1.715a4.498 4.498 0 0 0 .322-1.672V2.75A.75.75 0 0 1 15 2a2.25 2.25 0 0 1 2.25 2.25c0 1.152-.26 2.243-.723 3.218-.266.558.107 1.282.725 1.282h3.126c1.026 0 1.945.694 2.054 1.715.045.422.068.85.068 1.285a11.95 11.95 0 0 1-2.649 7.521c-.388.482-.987.729-1.605.729H14.23c-.483 0-.964-.078-1.423-.23l-3.114-1.04a4.501 4.501 0 0 0-1.423-.23h-.777ZM2.331 10.727a11.969 11.969 0 0 0-.831 4.398 12 12 0 0 0 .52 3.507C2.28 19.482 3.105 20 3.994 20H4.9c.445 0 .72-.498.523-.898a8.963 8.963 0 0 1-.924-3.977c0-1.708.476-3.305 1.302-4.666.245-.403-.028-.959-.5-.959H4.25c-.832 0-1.612.453-1.918 1.227Z\" />\n </svg>\n `\n this.disableFeedback(id)\n this.feedback.emit({ insightId: insightId, feedback: { value: 1 } })\n }\n\n thumbsDown = (id: string, insightId: string): void => {\n const thumbsDown = this.element.shadowRoot.querySelector(`#thumbsDown_${id}`)\n thumbsDown.classList.add(\"thumbs-down\")\n thumbsDown.innerHTML = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M15.73 5.5h1.035A7.465 7.465 0 0 1 18 9.625a7.465 7.465 0 0 1-1.235 4.125h-.148c-.806 0-1.534.446-2.031 1.08a9.04 9.04 0 0 1-2.861 2.4c-.723.384-1.35.956-1.653 1.715a4.499 4.499 0 0 0-.322 1.672v.633A.75.75 0 0 1 9 22a2.25 2.25 0 0 1-2.25-2.25c0-1.152.26-2.243.723-3.218.266-.558-.107-1.282-.725-1.282H3.622c-1.026 0-1.945-.694-2.054-1.715A12.137 12.137 0 0 1 1.5 12.25c0-2.848.992-5.464 2.649-7.521C4.537 4.247 5.136 4 5.754 4H9.77a4.5 4.5 0 0 1 1.423.23l3.114 1.04a4.5 4.5 0 0 0 1.423.23ZM21.669 14.023c.536-1.362.831-2.845.831-4.398 0-1.22-.182-2.398-.52-3.507-.26-.85-1.084-1.368-1.973-1.368H19.1c-.445 0-.72.498-.523.898.591 1.2.924 2.55.924 3.977a8.958 8.958 0 0 1-1.302 4.666c-.245.403.028.959.5.959h1.053c.832 0 1.612-.453 1.918-1.227Z\" />\n </svg>\n `\n this.disableFeedback(id)\n this.feedback.emit({ insightId: insightId, feedback: { value: -1 } })\n }\n\n // Function to copy the text to clipboard\n copyToClipboard(text: string) {\n navigator.clipboard\n .write([\n new ClipboardItem({\n \"text/html\": new Blob([text], { type: \"text/html\" }),\n \"text/plain\": new Blob([this.removeHtmlTags(text)], { type: \"text/plain\" }),\n }),\n ])\n .then(() => {\n // console.log(\"Text copied to clipboard\", text)\n this.copied = true // Set a flag to show copied state\n setTimeout(() => {\n this.copied = false // Reset copied state after 2 seconds\n }, 2000)\n })\n }\n\n // Method to remove HTML tags from a string\n removeHtmlTags(text: string): string {\n const div = document.createElement(\"div\")\n div.innerHTML = text\n return div.textContent || div.innerText || \"\"\n }\n\n // Function to trigger the text-to-speech\n async speakText(msg: string) {\n if (this.voiceType === \"default\") {\n if (\"speechSynthesis\" in window) {\n const voices = window.speechSynthesis.getVoices()\n const voice = voices.find(voice => voice.name === this.voice)\n this.isPlayed = true\n const utterance = new SpeechSynthesisUtterance(msg) // Create a speech synthesis utterance\n utterance.lang = \"en-US\" // Set the language, you can change this as needed\n utterance.rate = 1\n utterance.pitch = 1\n utterance.voice = voice\n // Speak the text\n window.speechSynthesis.speak(utterance)\n } else {\n alert(\"Speech Synthesis API is not supported in your browser.\")\n }\n }\n\n if (this.voiceType === \"google\") {\n const base64audiocontent = await getAudioContent(this.apiKey ?? Env.DATA_KEY, this.env ?? Env.DATA_MODE, msg, this.voice)\n const audioBlob = this.base64ToBlob(base64audiocontent.audio_content, \"audio/mpeg\")\n const audioUrl = URL.createObjectURL(audioBlob)\n\n // Create the audio element\n this.audioElement = new Audio(audioUrl)\n this.audioElement.onended = () => {\n // this.isPlaying = false\n this.isPlayed = false\n }\n if (this.audioElement.paused) {\n this.audioElement.play()\n this.isPlayed = true\n } else {\n this.audioElement.pause()\n this.audioElement.currentTime = 0\n this.audioElement.src = \"\" // Remove the audio source\n this.audioElement = null // Dereference the object\n this.isPlayed = false\n }\n }\n }\n\n base64ToBlob(base64: string, mimeType: string): Blob {\n const byteCharacters = atob(base64)\n const byteNumbers = new Array(byteCharacters.length).fill(0).map((_, i) => byteCharacters.charCodeAt(i))\n const byteArray = new Uint8Array(byteNumbers)\n return new Blob([byteArray], { type: mimeType })\n }\n\n render() {\n const email = \"\"\n\n return (\n <div>\n <ul\n id=\"main-content\"\n tabindex=\"-1\"\n class={{\n \"chat-list\": true,\n \"custom-list\": this.componentType === \"search\",\n // \"custom-chat-top-height\": this.componentType === \"search\",\n \"custom-chat-bottom-height\": this.componentType === \"inline\",\n \"custom-chat-above-height\": this.componentType === \"inline\" && this.chatPosition === \"above\",\n }}\n style={{\n maxHeight: this.componentType !== \"search\" ? \"80vh\" : \"none\",\n overflowY: this.componentType !== \"search\" ? \"auto\" : \"visible\",\n height: this.componentType === \"search\" ? \"auto\" : \"100%\",\n }}\n >\n {this.chats?.map((chat, idx) => {\n const isBot = chat.type === \"ai\"\n // const showAvatar = isBot && (idx === 0 || this.chats[idx - 1].type !== \"ai\")\n const showAvatar = isBot && (idx === this.chats.length - 1 || this.chats[idx + 1]?.type !== \"ai\") // Show avatar only for the last AI response\n return (\n <li\n class={{\n \"text-md\": true,\n \"chat-list-item\": true,\n \"chat-align-list\": chat.type !== \"user\",\n \"chat-not-user-list\": chat.type === \"user\",\n \"pointer-events-none\": chat.type === \"user\",\n }}\n tabindex={idx === this.focusedIndex ? 0 : -1}\n onKeyDown={(e) => this.handleChatKeyNav(e, idx)}\n ref={el => (this.chatItemRefs[idx] = el)}\n role=\"article\"\n aria-label={`${chat.type === 'user' ? 'Your message' : 'Bot response'} ${idx + 1}`}\n >\n {chat.type !== \"user\" && (\n <div class=\"chat-inner-list default-avatar\">\n {!this.avatarUrl && (\n <svg viewBox=\"0 0 48 48\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\" class={`w-8 h-8 ${showAvatar ? \"hidden md:block\" : \"opacity-0\"}`}>\n <path d=\"M24 2c-3 8-8 13-16 16 8 3 13 8 16 16 3-8 8-13 16-16-8-3-13-8-16-16z\"/>\n </svg>\n\n // <svg\n // stroke=\"currentColor\"\n // fill=\"currentColor\"\n // stroke-width=\"0\"\n // viewBox=\"0 0 16 16\"\n // height=\"20\"\n // width=\"20\"\n // xmlns=\"http://www.w3.org/2000/svg\"\n // class={`w-8 h-8 ${showAvatar ? \"hidden md:block\" : \"opacity-0\"}`}\n // >\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 )}\n {this.avatarUrl && (\n <div class={`avatar-container ${showAvatar ? \"hidden md:block\" : \"opacity-0\"}`}>\n <img src={this.avatarUrl} alt=\"Avatar\" class=\"avatar-image w-8 h-8 rounded-full\" />\n </div>\n )}\n </div>\n )}\n {chat.status === \"pending\" && (\n <div class=\"pending-chat\">\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\">\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 </div>\n )}\n <div\n id=\"parent-element\"\n onMouseEnter={e => {\n let popup = (e.target as HTMLElement).querySelector(\".non-user-container\") as HTMLElement\n if (popup) popup.style.display = \"block\"\n }}\n onMouseLeave={e => {\n let popup = (e.target as HTMLElement).querySelector(\".non-user-container\") as HTMLElement\n if (popup) popup.style.display = \"none\"\n }}\n // style={{ width: chat.type !== \"user\" ? \"90%\" : \"auto\" }}\n >\n {chat.status !== \"pending\" && (\n <div\n class={{\n \"p-4\": true,\n \"max-w-full\": this.componentType === \"search\" ? true : false,\n \"prose\": true,\n \"custom-prose\": true,\n \"transition-all\": true,\n \"duration-300\": true,\n \"opacity-100\": this.isProse,\n \"opacity-90\": !this.isProse,\n \"resize\": chat.formModel?.hasOwnProperty(\"answer\"),\n \"non-pending-user\": true,\n // \"p-0\": chat.controlType === \"list\" ? true : false,\n }}\n id={chat.id}\n innerHTML={chat.message}\n >\n {chat?.images?.map(img => {\n return <img src={img} class=\"thumbnail\" alt=\"thumbnail\" width=\"70\" height=\"50\" />\n })}\n {chat.type !== \"user\" && (\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 </div>\n )}\n {chat.type !== \"user\" && chat.clipboard && (this.settings.showMessageIcons ?? true) && (\n <div class=\"non-user-container\" style={{ display: \"none\" }}>\n {this.isPlayed && (\n <button\n class=\"copy-btn\"\n aria-label=\"Stop\"\n tabindex=\"0\"\n onClick={() => {\n this.isPlayed = false\n window.speechSynthesis.cancel()\n if (this.audioElement) {\n this.audioElement.pause()\n this.audioElement.currentTime = 0\n this.audioElement.src = \"\" // Remove the audio source\n this.audioElement = null // Dereference the object\n }\n // this.isPlayed = false\n }}\n >\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"icon-md-heavy\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12ZM9.5 8.5C8.94772 8.5 8.5 8.94772 8.5 9.5V14.5C8.5 15.0523 8.94772 15.5 9.5 15.5H14.5C15.0523 15.5 15.5 15.0523 15.5 14.5V9.5C15.5 8.94772 15.0523 8.5 14.5 8.5H9.5Z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </button>\n )}\n {!this.isPlayed && (\n <button class=\"copy-btn\" onClick={() => this.speakText(this.removeHtmlTags(chat.clipboard))} aria-label=\"Play\" tabindex=\"0\">\n <svg class=\"w-6 h-6\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M11 4.9099C11 4.47485 10.4828 4.24734 10.1621 4.54132L6.67572 7.7372C6.49129 7.90626 6.25019 8.00005 6 8.00005H4C3.44772 8.00005 3 8.44776 3 9.00005V15C3 15.5523 3.44772 16 4 16H6C6.25019 16 6.49129 16.0938 6.67572 16.2629L10.1621 19.4588C10.4828 19.7527 11 19.5252 11 19.0902V4.9099ZM8.81069 3.06701C10.4142 1.59714 13 2.73463 13 4.9099V19.0902C13 21.2655 10.4142 22.403 8.81069 20.9331L5.61102 18H4C2.34315 18 1 16.6569 1 15V9.00005C1 7.34319 2.34315 6.00005 4 6.00005H5.61102L8.81069 3.06701ZM20.3166 6.35665C20.8019 6.09313 21.409 6.27296 21.6725 6.75833C22.5191 8.3176 22.9996 10.1042 22.9996 12.0001C22.9996 13.8507 22.5418 15.5974 21.7323 17.1302C21.4744 17.6185 20.8695 17.8054 20.3811 17.5475C19.8927 17.2896 19.7059 16.6846 19.9638 16.1962C20.6249 14.9444 20.9996 13.5175 20.9996 12.0001C20.9996 10.4458 20.6064 8.98627 19.9149 7.71262C19.6514 7.22726 19.8312 6.62017 20.3166 6.35665ZM15.7994 7.90049C16.241 7.5688 16.8679 7.65789 17.1995 8.09947C18.0156 9.18593 18.4996 10.5379 18.4996 12.0001C18.4996 13.3127 18.1094 14.5372 17.4385 15.5604C17.1357 16.0222 16.5158 16.1511 16.0539 15.8483C15.5921 15.5455 15.4632 14.9255 15.766 14.4637C16.2298 13.7564 16.4996 12.9113 16.4996 12.0001C16.4996 10.9859 16.1653 10.0526 15.6004 9.30063C15.2687 8.85905 15.3578 8.23218 15.7994 7.90049Z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </button>\n )}\n <button class=\"copy-btn\" onClick={() => this.copyToClipboard(chat.clipboard)} aria-label=\"Copy to Clipboard\" tabindex=\"0\">\n {!this.copied && (\n <svg class=\"w-6 h-6\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M7 5C7 3.34315 8.34315 2 10 2H19C20.6569 2 22 3.34315 22 5V14C22 15.6569 20.6569 17 19 17H17V19C17 20.6569 15.6569 22 14 22H5C3.34315 22 2 20.6569 2 19V10C2 8.34315 3.34315 7 5 7H7V5ZM9 7H14C15.6569 7 17 8.34315 17 10V15H19C19.5523 15 20 14.5523 20 14V5C20 4.44772 19.5523 4 19 4H10C9.44772 4 9 4.44772 9 5V7ZM5 9C4.44772 9 4 9.44772 4 10V19C4 19.5523 4.44772 20 5 20H14C14.5523 20 15 19.5523 15 19V10C15 9.44772 14.5523 9 14 9H5Z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n )}\n {this.copied && (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"w-6 h-6\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M19.8198 6.19526C20.0601 6.45561 20.0601 6.87772 19.8198 7.13807L9.9736 17.8047C9.73328 18.0651 9.34364 18.0651 9.10332 17.8047L4.18024 12.4714C3.93992 12.2111 3.93992 11.7889 4.18024 11.5286C4.42056 11.2682 4.8102 11.2682 5.05053 11.5286L9.53846 16.3905L18.9495 6.19526C19.1898 5.93491 19.5794 5.93491 19.8198 6.19526Z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n )}\n </button>\n <button id={`thumbsUp_${chat.thumbsId}`} onClick={() => this.thumbsUp(chat.thumbsId, chat.insightId)} class={\"chat-thumbs-up\"} aria-label=\"Thumbs Up\" tabindex=\"0\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"w-6 h-6\">\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M6.633 10.25c.806 0 1.533-.446 2.031-1.08a9.041 9.041 0 0 1 2.861-2.4c.723-.384 1.35-.956 1.653-1.715a4.498 4.498 0 0 0 .322-1.672V2.75a.75.75 0 0 1 .75-.75 2.25 2.25 0 0 1 2.25 2.25c0 1.152-.26 2.243-.723 3.218-.266.558.107 1.282.725 1.282m0 0h3.126c1.026 0 1.945.694 2.054 1.715.045.422.068.85.068 1.285a11.95 11.95 0 0 1-2.649 7.521c-.388.482-.987.729-1.605.729H13.48c-.483 0-.964-.078-1.423-.23l-3.114-1.04a4.501 4.501 0 0 0-1.423-.23H5.904m10.598-9.75H14.25M5.904 18.5c.083.205.173.405.27.602.197.4-.078.898-.523.898h-.908c-.889 0-1.713-.518-1.972-1.368a12 12 0 0 1-.521-3.507c0-1.553.295-3.036.831-4.398C3.387 9.953 4.167 9.5 5 9.5h1.053c.472 0 .745.556.5.96a8.958 8.958 0 0 0-1.302 4.665c0 1.194.232 2.333.654 3.375Z\"\n />\n </svg>\n </button>\n\n <button id={`thumbsDown_${chat.thumbsId}`} onClick={() => this.thumbsDown(chat.thumbsId, chat.insightId)} class={\"chat-thumbs-up\"} aria-label=\"Thumbs Down\" tabindex=\"0\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"w-6 h-6\">\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M7.498 15.25H4.372c-1.026 0-1.945-.694-2.054-1.715a12.137 12.137 0 0 1-.068-1.285c0-2.848.992-5.464 2.649-7.521C5.287 4.247 5.886 4 6.504 4h4.016a4.5 4.5 0 0 1 1.423.23l3.114 1.04a4.5 4.5 0 0 0 1.423.23h1.294M7.498 15.25c.618 0 .991.724.725 1.282A7.471 7.471 0 0 0 7.5 19.75 2.25 2.25 0 0 0 9.75 22a.75.75 0 0 0 .75-.75v-.633c0-.573.11-1.14.322-1.672.304-.76.93-1.33 1.653-1.715a9.04 9.04 0 0 0 2.86-2.4c.498-.634 1.226-1.08 2.032-1.08h.384m-10.253 1.5H9.7m8.075-9.75c.01.05.027.1.05.148.593 1.2.925 2.55.925 3.977 0 1.487-.36 2.89-.999 4.125m.023-8.25c-.076-.365.183-.75.575-.75h.908c.889 0 1.713.518 1.972 1.368.339 1.11.521 2.287.521 3.507 0 1.553-.295 3.036-.831 4.398-.306.774-1.086 1.227-1.918 1.227h-1.053c-.472 0-.745-.556-.5-.96a8.95 8.95 0 0 0 .303-.54\"\n />\n </svg>\n </button>\n <button class=\"copy-btn\" tabindex=\"0\" aria-label=\"Send Email\" >\n <a\n href={`mailto:${email}?subject=${encodeURIComponent(this.chats[idx - 1]?.message)}&body=${encodeURIComponent(this.removeHtmlTags(chat.clipboard))}`}\n target=\"_blank\"\n aria-label=\"Send Email\"\n >\n <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" stroke=\"currentColor\" stroke-width=\"0.3\" class=\"w-6 h-6\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M3.75 5.25L3 6V18L3.75 18.75H20.25L21 18V6L20.25 5.25H3.75ZM4.5 7.6955V17.25H19.5V7.69525L11.9999 14.5136L4.5 7.6955ZM18.3099 6.75H5.68986L11.9999 12.4864L18.3099 6.75Z\"\n fill=\"currentColor\"\n ></path>{\" \"}\n </svg>\n </a>\n </button>\n </div>\n )}\n </div>\n </li>\n )\n })}\n <div class=\"scroll-bottom\" />\n </ul>\n </div>\n )\n }\n}\n"]}