@koredev/agentai-web-sdk 3.22.0-rc → 3.22.1-rc

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 +0,0 @@
1
- {"version":3,"file":"hot/hot-update.js","mappings":"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","sources":["webpack://aa-sdk/./src/components/common/services/rootService.ts","webpack://aa-sdk/webpack/runtime/getFullHash"],"sourcesContent":["import { EVENTS, INTERNAL_EVENTS, SDK_EVENTS } from '../constants/events.cnst';\nimport { ClassMapConstanst, IdMapConstant, ProjConstants, RenderResponseType, storageConst, Tabs } from '../constants/projConsts'\nimport { getHTML } from '../templatemanager/base/domManager';\nimport { FaqAnswerPlacement, FaqExpandCloseBtn } from '../templatemanager/tabs/suggestions/faq/faq';\nimport { handleSendCopyButtons, ActionButtonsSentText, handleSendCopyButtonsForNodes } from '../templatemanager/tabs/atom/actionButtons';\nimport RandomuuidPipe from '../utils/randomuuid';\nimport KoreGenerateuuidPipe from '../utils/koregenerateuuid';\nimport { AskCustomer, AttachmentAskCustomer, DialogEnd, DialogStart, ExpandButtonForEntity, FeedbackWrapperInsideDialog, MybotAttachmentAskCustomer, ReduceButtonForEntity, TellCustomer } from '../templatemanager/tabs/automation/automation';\nimport { HelpfulFeedbackSection, NegativeFeedbackSection } from '../templatemanager/tabs/feedback/feedback';\nimport fetchInstance from '../utils/interceptor';\nimport {FeebackConst} from '../constants/settingsConsts';\nimport { DEFAULT_FEEDBACK_SETTINGS, DEFAULT_WIDGET_SETTINGS } from '../constants/default.config';\nimport { ErrorHandler } from '../templatemanager/tabs/ErrorBoundary/ErrorHandler';\nimport DOMPurify from 'dompurify';\nimport { safeScrollDimensions, safeDimensions } from '../../../utils/domUtils';\nimport { marked } from 'marked';\n\nexport class rootService {\n\n isAutomationOnGoing : boolean = false;\n isMyBotAutomationOnGoing : boolean = false;\n currentAutomationId : string = '';\n currentMybotAutomationId : string = '';\n isCustomTabAutomationOnGoing : boolean = false;\n currentCustomTabAutomationId: string = '';\n grantResponseObj: any = {};\n isInitialInternalTransferTriggered : boolean = false;\n\n prefsAccessObj: any = {\n tabsNTitles: [],\n prefs: {},\n orderTabs: [],\n defaultTab : \"\"\n };\n\n customTabPrefsObj:any ={\n customTabEnabled: false,\n customTabPrefs : {},\n customTabWlD : [],\n customTablbl: ''\n }\n\n prefsOpacity:any;\n\n connectionDetails: any = {};\n\n aaSettings: any = {};\n\n menuResponseArr:any = [];\n\n numOfLines: any = 4;\n maxHeight: any = 'max-content';\n scrollHeight: any = Number.MAX_VALUE;\n\n classConstants : any = ClassMapConstanst;\n idConstants : any = IdMapConstant;\n\n faqambiguityResponse : boolean = false;\n\n activeTab : string = '';\n\n internalTransfer : boolean = false;\n internalTransferData : any = {};\n\n placeholderTextSearch:any;\n proactiveMode : boolean = false;\n OverRideMode : boolean = false;\n manualAssistOverrideMode : boolean = false;\n\n autoScrollStatus : boolean = true;\n isOnReadyCalled : boolean = false;\n agenticStart : boolean = false;\n\n myBotTabSessionId : any = '';\n assistTabSessionId : any = '';\n sentSearchResponse : boolean = false;\n searchedResultData : any = {};\n\n socketConnect : boolean = false;\n tabsNTitles:any = [];\n\n isAnonymousFlowEnabled : boolean = false;\n isAnonymousFlowTriggered : boolean = false;\n isHooksApi : boolean = false;\n isAgenticCoPilotEnabled : boolean = false;\n isAgenticPaused : boolean = false;\n isAgenticAutoSendEnabled : boolean = true;\n sendingTimeForAgenticAutoSend : number = 5000;\n timerForSendingAgenticAutoSend : any;\n\n isPlaybookHistory: boolean = false;\n selCLInx: any;\n selStInx: any;\n selSpInx: any;\n isProceedToClose : boolean = false;\n dynClObjs : any = {};\n DialogsinGroups:any ={};\n\n hideActionButtons : boolean = false;\n hideSendButton : boolean = false;\n hideCopyButton : boolean = false;\n\n isUpdateFeedBackDetailsFlag : boolean = false;\n moreBtnActive : boolean = false;\n\n tabs = {\n ast: ProjConstants.ASSIST,\n mB: ProjConstants.MYBOT,\n srch: ProjConstants.SEARCH,\n trnspt: ProjConstants.TRANSCRIPT\n };\n tabsTitleAsKey = {\n [ProjConstants.ASSIST]: 'ast',\n [ProjConstants.MYBOT]: 'mB',\n [ProjConstants.SEARCH]: 'srch',\n [ProjConstants.TRANSCRIPT]: 'trnspt'\n };\n\n widgetFeedbackData = {\n selectedSuggestions: [] as string[],\n comment: '',\n type: '',\n positionId: ''\n };\n\n isWidgetFeedbackAPICalled : boolean = false;\n widgetHistoryType: string = ''\n\n entitiesValueArray: any = [];\n mybotEntitiestValueArray : any = [];\n\n interruptDialogList : any = [];\n mybotInterruptDialogList : any = [];\n customInterruptDialogList : any = [];\n isExitEventTriggered : boolean = false;\n\n isSearchConvEnabled : boolean = false;\n searchHistoryData: any = [];\n\n\n menuResponse : any = [];\n\n isGroups:boolean = false;\n\n isHistory:boolean = true;\n\n customTabHistoryData:any = [];\n\n aaHelpers : any;\n\n disableWidgetFlag : boolean = false;\n\n defaultFeedbackSettings : any = DEFAULT_FEEDBACK_SETTINGS;\n defaultSuggestionObj : any = DEFAULT_WIDGET_SETTINGS;\n\n tableList = ['table', 'tableList', 'custom_table'];\n realtimeSentiData : any = {\n \n };\n isSummariesGenerated : boolean = false;\n generatedSummaries : any = [];\n maxIntSummaryCount: number = 2;\n currentGenIntSummaryCount: number = 0;\n summaryInProgress = false;\n finalSummaryGenerated = false;\n hiddenClasses : any = [];\n summaryStatus : number = 200;\n summaryRetryCount : number = 0;\n interimSummary: boolean = false;\n customTabEntitiesValueArray: any[] = [];\n agenticNodeArray: any[] = []; \n currCl:any = '';\n currSt:any = '';\n isAgenticStreamingEnabled : boolean = false;\n agenticSearchResultsMap : any = {};\n\n constructor(hostInstance : any) {\n this.aaHelpers = hostInstance.chatWindowInstance.helpers; \n this.handleEmptyLine = this.handleEmptyLine.bind(this); \n }\n\n sanitizeHTML(html: string) {\n const config = {\n ADD_ATTR: ['target', 'rel'], // Allow target and rel attributes\n ALLOWED_ATTR: ['href', 'target', 'rel', 'class'], // Common link attributes\n ALLOW_DATA_ATTR: true,\n FORCE_BODY: true,\n ALLOWED_TAGS: ['a', 'p', 'span', 'b', 'i', 'em', 'strong', 'br'], // Common HTML tags\n };\n return DOMPurify.sanitize(html, config);\n }\n\n updateDefaultFeedbackData() {\n const categories = Object.keys(this.defaultFeedbackSettings);\n \n categories.forEach(category => {\n const languages = Object.keys(this.defaultSuggestionObj[category]);\n this.defaultFeedbackSettings[category].negativeKeyWords = {};\n \n languages.forEach(language => {\n const langArray = this.defaultSuggestionObj[category][language].map((element : any, index : number) => ({\n isEnabled: index <= 4,\n key: element\n }));\n this.defaultFeedbackSettings[category].negativeKeyWords[language] = langArray;\n });\n });\n }\n\n formatSearchResponse(response: any, isSearch = false, suggestionIndex : number, suggestionFrom = ProjConstants.MYBOT) {\n let suggestions = response.suggestions;\n let dialoguesArray = suggestions.dialogs || [];\n let faqArray = suggestions.faqs || [];\n let snippersArray = this.formatSnippetResponse(suggestions?.searchassist?.snippets || [], response, suggestionIndex)\n let filesArray = suggestions?.searchassist?.files || [];\n let searchResponse: any = {};\n if (suggestions?.searchassist && suggestions?.searchassist?.snippets && suggestions?.searchassist?.snippets?.length == 0) {\n delete suggestions.searchassist.snippets;\n }\n let searchassistKeys = Object.keys(suggestions?.searchassist || {});\n if (suggestions?.searchassist && searchassistKeys?.length == 1 && searchassistKeys[0] === 'searchRequestId') {\n suggestions.searchassist = {};\n }\n\n if (dialoguesArray.length || faqArray.length || snippersArray.length || filesArray.length || (suggestions?.searchassist && Object.keys(suggestions?.searchassist)?.length)) {\n searchResponse.dialogs = [];\n searchResponse.faqs = [];\n searchResponse.articles = [];\n searchResponse.snippets = [];\n searchResponse.files = [];\n if (suggestions.searchassist && Object.keys(suggestions.searchassist)?.length > 0) {\n for (let source in suggestions.searchassist) {\n if (source != \"snippets\" && source != \"file\" && source != 'searchRequestId') {\n suggestions.searchassist[source] = this.checkEmptyObjectsInArray(suggestions.searchassist[source]);\n if (suggestions.searchassist[source] && Object.keys(suggestions.searchassist[source])?.length > 0) {\n searchResponse.articles.push.apply(searchResponse.articles, suggestions.searchassist[source]);\n }\n }\n if (source == \"file\") {\n suggestions.searchassist[source] = this.checkEmptyObjectsInArray(suggestions.searchassist[source]);\n if (suggestions.searchassist[source] && Object.keys(suggestions.searchassist[source])?.length > 0) {\n searchResponse.files.push.apply(searchResponse.files, suggestions.searchassist[source]);\n }\n }\n if (source && source != 'searchRequestId') {\n suggestions?.searchassist[source]?.forEach((item: any) => {\n item.subType = source;\n });\n }\n }\n for (let article of searchResponse.articles) {\n article.showMoreButton = true;\n article.showLessButton = false;\n article.content = article.content ? article.content : '';\n article.contentId = article.contentId;\n article.userInput = response.userInput;\n article.sourceMsgId = response.sourceMsgId || '';\n article.subType = article.subType;\n article.intType = isSearch ? 'mybot' : 'assist';\n article.feedbackData = this.prepareFeedbackForSuggestions('article', article, {})\n }\n for (let file of searchResponse.files) {\n file.showMoreButton = true;\n file.showLessButton = false;\n file.content = file.content ? file.content : '';\n file.contentId = file.contentId;\n file.userInput = response.userInput;\n file.sourceMsgId = response.sourceMsgId || '';\n file.subType = file.subType;\n file.intType = isSearch ? 'mybot' : 'assist';\n file.feedbackData = this.prepareFeedbackForSuggestions('file', file, {})\n }\n }\n\n for (let faq of faqArray) {\n let faqObject: any = {\n question: faq.question,\n displayName: faq.displayName,\n taskRefId: faq?.taskRefId,\n answer: (faq.answer && faq.answer.length > 0) ? [] : false,\n showMoreButton: true,\n showLessButton: false,\n answerRender: faq.answer || false,\n childBotId: faq.childBotId,\n childBotName: faq.childBotName,\n answerCount: 1,\n sourceMsgId: response.sourceMsgId || '',\n positionId: faq.positionId,\n userInput: response.userInput,\n intType: response.intType,\n reqId: response?.reqId || '',\n isConversationalSearch: this.isSearchConvEnabled || false\n }\n if (faq.answer && faq.answer.length > 0) {\n for (let ans of faq.answer) {\n let object: any = {\n ans: ans,\n taskRefId: faq.taskRefId,\n showMoreButton: true,\n showLessButton: false,\n displayName: faq.displayName,\n sourceMsgId: response.sourceMsgId || '',\n positionId: faq.positionId\n }\n faqObject.answer.push(object);\n }\n }\n let feedbackData = faq.historyFeedback ? faq.historyFeedback : {};\n faqObject.feedbackData = this.prepareFeedbackForSuggestions('faqs', faqObject, feedbackData);\n faqObject.feedbackData.interactionType = isSearch ? 'mybot' : 'assist';\n searchResponse.faqs.push(faqObject);\n }\n if (suggestions?.searchassist?.snippets?.length > 0) {\n if (snippersArray?.length > 0) {\n searchResponse.snippets = Object.assign([], snippersArray);\n }\n for (let snippet of searchResponse.snippets) {\n snippet.showMoreButton = true;\n snippet.showLessButton = false;\n snippet.subType = 'snippets';\n }\n }\n\n for (let dialog of dialoguesArray) {\n if (dialog.entities && dialog.entities?.length > 0) {\n dialog.entities.forEach((entity: any) => {\n entity.editMode = false;\n });\n }\n searchResponse.dialogs.push({\n intentName: dialog.name,\n childBotId: dialog.childBotId,\n childBotName: dialog.childBotName,\n entities: dialog.entities,\n userInput: response.userInput,\n sourceMsgId: response.sourceMsgId || '',\n positionId : RandomuuidPipe('positionId'),\n traits : response.traits || [],\n dialogId : dialog.dialogId ? dialog.dialogId : this.matchDialogIdfromMenuResponse(dialog),\n suggestionFrom : suggestionFrom || ProjConstants.MYBOT\n });\n }\n }\n return searchResponse;\n }\n\n formatSnippetResponse(snippetsArray: any, response: any, suggestionIndex : number) {\n let snipObje: any = {};\n snipObje['contentArray'] = [];\n snipObje['sources'] = [];\n snipObje['internalInfo'] = [];\n snipObje['sendCopyText'] = '';\n let snippetResponeArray: any = [];\n if (snippetsArray?.length > 0) {\n snippetsArray.forEach((snippet: any) => {\n if (snippet?.templateType) {\n if (snippet.templateType == 'active_citation_snippet' || snippet.templateType == 'citation_snippet') {\n if (\n snippet?.content &&\n Array.isArray(snippet?.content) &&\n snippet?.content?.length > 0\n ) {\n snippet.content.forEach((ansSnippet: any) => {\n let ansObj = {\n ans: ansSnippet.answer_fragment,\n sources: ansSnippet?.sources || [],\n internalFlag: snippet.internalFlag\n };\n snipObje['contentArray'].push(ansObj);\n snipObje.internalFlag = snippet.internalFlag || false;\n snipObje.isActCit = true;\n });\n }\n } else {\n if (snippet?.content) {\n if (Array.isArray(snippet?.content)) {\n snippet.content = snippet?.content.join('\\n');\n }\n snipObje.internalFlag = snippet.internalFlag || false;\n let otherType: any = {\n ans: snippet.content,\n internalFlag: snippet.internalFlag\n }\n if (snippet.url) {\n otherType['sources'] = [{ title: snippet.source, url: snippet.url }];\n }\n snipObje.contentArray.push(otherType);\n }\n }\n snipObje.templateType = snippet.templateType;\n snipObje.positionId = snippet.positionId;\n snipObje.sourceMsgId = response.sourceMsgId || '';\n snipObje.intType = response.intType;\n snipObje.isFromGeneratedSummary = response.isFromGeneratedSummary;\n snipObje.userInput = response.userInput || '';\n }\n });\n let extInfo = '';\n let interlInfo = ''\n let uniqueSource: any = [];\n snipObje['contentArray']\n ?.forEach((entry: any) => {\n let className = '';\n snipObje.sources.push(\n ...(entry?.sources || []).filter((item: any) => {\n let returnValue = item.url && uniqueSource.indexOf(item.title) == -1;\n if (returnValue) {\n uniqueSource.push(item.title);\n }\n if (uniqueSource.indexOf(item.title) != -1) {\n className += `fragment-ext-${uniqueSource.indexOf(item.title) + 1}-${suggestionIndex}`;\n }\n return returnValue;\n })\n );\n\n if (!entry.internalFlag) {\n snipObje['sendCopyText'] += entry.ans;\n }\n let temp = `<span class=\"${className}\">${entry.ans} `;\n if (Array.isArray(entry?.sources) && entry?.sources?.length) {\n for (let source of entry?.sources) {\n if (source?.title && uniqueSource.indexOf(source?.title) != -1) {\n let srcCount = uniqueSource.indexOf(source.title);\n temp += `<span class=\"source-count-num\">${srcCount + 1}</span>`;\n }\n }\n }\n temp += '</span>';\n if (entry.internalFlag) {\n interlInfo += temp;\n } else {\n extInfo += temp;\n }\n });\n snipObje['contentArray'] = [];\n snipObje['internalInfo'] = [];\n if (interlInfo?.trim()) {\n snipObje['internalInfo'].push(interlInfo?.trim());\n }\n if (extInfo?.trim()) {\n snipObje['contentArray'].push(extInfo?.trim());\n }\n snipObje.feedbackData = this.prepareFeedbackForSuggestions('answer', snipObje, {})\n snippetResponeArray.push(snipObje);\n }\n return snippetResponeArray;\n }\n\n updateSearchResponse(assistResponseArray: any, response: any, ambiguityTokenExt: any) {\n response.suggestions.faqs = this.formatFAQResponse(response.suggestions.faqs);\n\n const faqWithoutAnswerIndex = response?.suggestions?.faqs?.findIndex((faq : any, index : number) => {\n if (faq.question === ambiguityTokenExt.question) {\n return faq;\n }\n });\n\n let faqWithoutAnswer : any = {};\n\n if(faqWithoutAnswerIndex >= 0){\n faqWithoutAnswer = response?.suggestions?.faqs[faqWithoutAnswerIndex];\n }\n\n if(faqWithoutAnswer && Object.keys(faqWithoutAnswer)?.length > 0){\n const updatedArray = assistResponseArray.map((item: any, idx: number) => {\n if (idx === ambiguityTokenExt.assistSuggestion) {\n const updatedItem = { ...item };\n let existingFaq : any = updatedItem.searchResponse?.faqs[ambiguityTokenExt.index];\n if(existingFaq && faqWithoutAnswer && faqWithoutAnswer?.answer){\n existingFaq.answer = faqWithoutAnswer?.answer;\n existingFaq.toggle = true;\n existingFaq.showMoreButton = false;\n existingFaq.showLessButton = false;\n existingFaq.showSpinner = false;\n }\n updatedItem.faqArrowClickResponse = true;\n return updatedItem;\n }\n return item;\n });\n return updatedArray;\n }\n }\n\n checkEmptyObjectsInArray(arr: any) {\n arr = arr.filter(\n (obj: any) => (obj && Object.keys(obj)?.length > 0) && (obj.title || obj.content)\n );\n return arr;\n }\n\n formatFAQResponse(faqArray: any) {\n let searchResponse = [];\n if(faqArray && faqArray?.length > 0){\n for (let faq of faqArray) {\n let faqObject: any = {\n question: faq.question,\n taskRefId: faq?.taskRefId,\n answer: (faq?.answer && faq?.answer?.length > 0) ? [] : false\n }\n if (faq.answer && faq.answer.length > 0) {\n for (let ans of faq.answer) {\n let object: any = {\n taskRefId: faq.taskRefId,\n ans: ans,\n showMoreButton: true,\n showLessButton: false,\n }\n faqObject?.answer?.push(object);\n }\n }\n searchResponse.push(faqObject);\n }\n }\n return searchResponse;\n }\n\n openurlInBrowser(url: any, hostInstance: any) {\n // window.open(url, '_blank');\n if (this.aaSettings?.urlOpenBehaviour && this.aaSettings?.urlOpenBehaviour?.sendPostEvent) {\n let message = {\n method: 'AgentAssist.UrlClickedMessage',\n from: 'agent_assist',\n url: url\n };\n // window.parent.postMessage(message, '*');\n hostInstance.emit(SDK_EVENTS.BEFORE_VIEW_INIT, '', { event: SDK_EVENTS.ON_URL_CLICK, data : {message: message}});\n } else {\n window.open(url, '_blank');\n }\n }\n\n extractTextFromElement(element: HTMLElement): string {\n let text = '';\n if (element) {\n const extractText = (node: Node) => {\n if (node.nodeType === Node.TEXT_NODE) {\n text += node.textContent;\n } else if (node.nodeType === Node.ELEMENT_NODE) {\n const childNodes = node.childNodes;\n for (let i = 0; i < childNodes.length; i++) {\n extractText(childNodes[i]);\n }\n }\n };\n extractText(element);\n }\n return text.trim();\n }\n\n handleSendCopyButton(actionType: any, faq_or_article_obj: any, selectType: any) {\n let message: any = {};\n if (actionType == ProjConstants.SEND) {\n message = {\n method: 'send',\n name: ProjConstants.SENDMSG,\n conversationId: this.connectionDetails.conversationId,\n // payload: selectType == ProjConstants.FAQ ? (faq_or_article_obj.answer || faq_or_article_obj.ans) : faq_or_article_obj.content\n payload: faq_or_article_obj.sendContent\n };\n if (selectType === ProjConstants.ARTICLE) {\n message['title'] = faq_or_article_obj.title;\n message['contentId'] = faq_or_article_obj.contentId;\n } else {\n message['title'] = faq_or_article_obj.displayName;\n message['contentId'] = faq_or_article_obj.taskRefId\n }\n } else {\n message = {\n method: 'copy',\n name: ProjConstants.COPYMSG,\n conversationId: this.connectionDetails.conversationId,\n // payload: selectType == ProjConstants.FAQ ? (faq_or_article_obj.answer || faq_or_article_obj.ans) : faq_or_article_obj.content\n payload: faq_or_article_obj.sendContent\n };\n if (selectType === ProjConstants.ARTICLE) {\n message['title'] = faq_or_article_obj.title;\n message['contentId'] = faq_or_article_obj.contentId;\n } else {\n message['title'] = faq_or_article_obj.displayName;\n message['contentId'] = faq_or_article_obj.taskRefId\n }\n }\n message['type'] = (selectType == ProjConstants.FAQ) ? 'faq' : 'article'\n // window.parent.postMessage(message, '*');\n return (this.faqArticleSendorCopyEvent(selectType, message, faq_or_article_obj))\n }\n\n faqArticleSendorCopyEvent(selectType : any, message : any, faq_or_article_obj : any) {\n let data: any = {\n botId: this.connectionDetails.botId,\n conversationId: this.connectionDetails.conversationId,\n experience: this.connectionDetails?.channel,\n source: this.connectionDetails.source,\n usedType: message.method,\n type: message.type,\n name: message.name,\n payload: message.payload,\n title: message.title,\n contentId: message.contentId,\n positionId: faq_or_article_obj.positionId ? faq_or_article_obj.positionId : '',\n sessionId: (this.activeTab == Tabs.MYBOT || this.activeTab == Tabs.SEARCH) ? this.myBotTabSessionId : this.assistTabSessionId,\n };\n data = this.addSourceMsgIdToRequestParams(faq_or_article_obj, data);\n if (this.activeTab == Tabs.SEARCH) {\n data.skipMsg = this.sentSearchResponse;\n data.input = this.searchedResultData?.userInput || '';\n this.sentSearchResponse = true;\n }\n if (faq_or_article_obj.subType) {\n data.subType = faq_or_article_obj.subType;\n }\n return data;\n }\n \n addSourceMsgIdToRequestParams(data : any,requestParams : any){\n if(data.sourceMsgId){\n if(data.sourceMsgId == 'fromLibrary'){\n requestParams['fromLibrary'] = true\n }else{\n requestParams['sourceMsgId'] = data.sourceMsgId\n }\n }\n return requestParams;\n }\n\n addSentOrCopiedTextForFaqs(ansObj: any, ele: any, sendText: any, hostInstance : any) {\n this.sendTextAddAndEmitEvent('faqs', ansObj, ele, sendText, hostInstance);\n }\n\n addSentOrCopiedTextForFiles (file: any, ele: any, sendText: any, hostInstance : any) {\n this.sendTextAddAndEmitEvent('file', file, ele, sendText, hostInstance);\n }\n\n addSentOrCopiedTextForArticle (article: any, ele: any, sendText: any, hostInstance : any) {\n this.sendTextAddAndEmitEvent('article', article, ele, sendText, hostInstance);\n }\n\n addSentOrCopiedTextForSnippets (snippet: any, ele: any, sendText: any, hostInstance : any) { \n this.sendTextAddAndEmitEvent('snippet', snippet, ele, sendText, hostInstance);\n }\n\n sendTextAddAndEmitEvent(type : string, suggestionObj : any, ele : any, sendText : string, hostInstance : any){\n if (!suggestionObj.send) {\n suggestionObj.send = sendText;\n let eachSuggestionSentText: any = getHTML(ActionButtonsSentText, { [type]: suggestionObj }, hostInstance);\n hostInstance.emit(SDK_EVENTS.BEFORE_VIEW_INIT, eachSuggestionSentText, { event: SDK_EVENTS.SENT_BUTTON_TEMPLATE, data: suggestionObj });\n ele.querySelector(this.classConstants.SUGGESTION_EACH_TITLE).append(eachSuggestionSentText);\n }\n if(typeof this.prefsOpacity === 'number'){\n ele.style.opacity = (this.prefsOpacity/100)\n }\n let sendTextele = ele.querySelector(this.classConstants.SEND_TEXT);\n sendTextele.textContent = sendText;\n }\n\n handleSendCopyButtonForFaq (actionType: any, ansObj: any, selectType: any, sourceMsgId: any, faqListHTMLEle : any, hostInstance : any) {\n // let faqTemplate = this.faqcontent.find((element : any, index : any) => index === inx);\n // let faqTemplate = faqList[inx];\n ansObj.sourceMsgId = sourceMsgId;\n ansObj.sendContent = ansObj.answer || ansObj.ans;\n\n let node : any = faqListHTMLEle.querySelector('p');\n ansObj.sendContent = this.prepareSendText(ansObj.sendContent, false, node);\n\n let copyEventData = this.handleSendCopyButton(actionType, ansObj, selectType);\n this.emitSendOrCopyEvent(copyEventData, hostInstance);\n }\n\n handleSendCopyButtonForSnippet (actionType: any, snippetObj: any, selectType: any, snippetListHTMLEle : any, hostInstance : any) { \n snippetObj.sendContent = (snippetObj.sendCopyText);\n\n let node : any = snippetListHTMLEle.querySelector('p');\n snippetObj.sendContent = this.prepareSendText(snippetObj.sendContent, false, node);\n\n let copyEventData = this.handleSendCopyButton(actionType, snippetObj, selectType);\n this.emitSendOrCopyEvent(copyEventData, hostInstance);\n }\n\n handleSendCopyButtonArticleOrFile (actionType: any, articleObj: any, selectType: any, articleListHTMLEle : any, hostInstance : any){\n articleObj.sendContent = articleObj.content;\n\n let node : any = articleListHTMLEle.querySelector('p');\n articleObj.sendContent = this.prepareSendText(articleObj.sendContent, false, node);\n\n let copyEventData = this.handleSendCopyButton(actionType, articleObj, selectType);\n this.emitSendOrCopyEvent(copyEventData, hostInstance);\n };\n\n handleActionTemplateClickEventsForFAQ(eachActionTemplate : any, faq : any, ansObj : any, faqListHTMLEle : any, hostInstance : any){\n hostInstance.eventManager?.addEventListener(this.classConstants.SUGGESTION_SEND_BTN, 'click', () => {\n this.handleSendCopyButtonForFaq(ProjConstants.SEND, ansObj, ProjConstants.FAQ, faq.sourceMsgId, faqListHTMLEle, hostInstance);\n this.addSentOrCopiedTextForFaqs(ansObj, faqListHTMLEle, 'Sent', hostInstance);\n }, eachActionTemplate);\n\n hostInstance.eventManager?.addEventListener(this.classConstants.SUGGESTION_COPY_BTN, 'click', () => {\n this.handleSendCopyButtonForFaq(ProjConstants.COPY, ansObj, ProjConstants.FAQ, faq.sourceMsgId, faqListHTMLEle, hostInstance);\n this.addSentOrCopiedTextForFaqs(ansObj, faqListHTMLEle, 'Copied', hostInstance);\n }, eachActionTemplate);\n }\n\n emitSendOrCopyEvent(copyEventData : any, hostInstance : any){\n if(copyEventData?.usedType === 'send'){\n hostInstance.emit(SDK_EVENTS.BEFORE_VIEW_INIT, '', { event: SDK_EVENTS.AGENT_SEND_MESSAGE, data: copyEventData, msg : copyEventData?.payload });\n }else{\n hostInstance.emit(SDK_EVENTS.BEFORE_VIEW_INIT, '', { event: SDK_EVENTS.AGENT_COPY_MESSAGE, data: copyEventData, msg : copyEventData?.payload });\n }\n hostInstance.socketConnection.emitEvents(EVENTS.agent_send_or_copy, copyEventData);\n }\n\n handleFaqExpandCloseBtnClickEvents(expandClostBtnTemplate : any, faqSuggestionBodyList : any, suggestionHeaderActionTemplate : any, faqListHTMLIndex : any, hostInstance : any){\n let expandElement = expandClostBtnTemplate.querySelector(this.classConstants.SUGGESTION_FAQ_EXPAND);\n let closeElement = expandClostBtnTemplate.querySelector(this.classConstants.SUGGESTION_FAQ_CLOSE);\n let faqAnsLenghtElement = faqListHTMLIndex?.querySelector(`${this.classConstants.SUGGESTION_EACH_HEADER} ${this.classConstants.SUGGESTION_EACH_TITLE} ${this.classConstants.SUGGESTION_FAQ_ANS_LENGTH}`);\n\n hostInstance.eventManager?.addEventListener(this.classConstants.SUGGESTION_FAQ_EXPAND, 'click', () => {\n\n if (closeElement?.classList?.contains(this.classConstants.HIDE_ELEMENT)) {\n closeElement?.classList?.remove(this.classConstants.HIDE_ELEMENT)\n }\n expandElement?.classList?.add(this.classConstants.HIDE_ELEMENT);\n\n faqSuggestionBodyList.forEach((ansTemplate: any, index: any) => {\n if (ansTemplate?.classList?.contains(this.classConstants.HIDE_ELEMENT)) {\n ansTemplate?.classList?.remove(this.classConstants.HIDE_ELEMENT)\n }\n });\n\n faqAnsLenghtElement?.classList?.add(this.classConstants.HIDE_ELEMENT);\n\n //hide header send copy btns\n suggestionHeaderActionTemplate?.classList?.add(this.classConstants.HIDE_ELEMENT);\n\n //add send copy btns for first answer\n let firstAnswerActionBtn = faqSuggestionBodyList[0]?.querySelector(this.classConstants.SUGGESTION_SENDCPY_ACTION);\n if (firstAnswerActionBtn?.classList?.contains(this.classConstants.HIDE_ELEMENT)) {\n firstAnswerActionBtn?.classList?.remove(this.classConstants.HIDE_ELEMENT)\n }\n\n }, expandClostBtnTemplate);\n\n hostInstance.eventManager?.addEventListener(this.classConstants.SUGGESTION_FAQ_CLOSE, 'click', () => {\n\n if (expandElement?.classList?.contains(this.classConstants.HIDE_ELEMENT)) {\n expandElement?.classList?.remove(this.classConstants.HIDE_ELEMENT);\n }\n closeElement?.classList?.add(this.classConstants.HIDE_ELEMENT);\n\n faqSuggestionBodyList.forEach((ansTemplate: any, index: any) => {\n if (index != 0) {\n ansTemplate?.classList?.add(this.classConstants.HIDE_ELEMENT);\n }\n });\n\n if(faqAnsLenghtElement?.classList?.contains(this.classConstants.HIDE_ELEMENT)){\n faqAnsLenghtElement?.classList?.remove(this.classConstants.HIDE_ELEMENT);\n }\n\n //show header send copy btns\n if (suggestionHeaderActionTemplate?.classList?.contains(this.classConstants.HIDE_ELEMENT)) {\n suggestionHeaderActionTemplate?.classList?.remove(this.classConstants.HIDE_ELEMENT);\n }\n\n //remove send copy btns for first answer\n let firstAnswerActionBtn = faqSuggestionBodyList[0]?.querySelector(this.classConstants.SUGGESTION_SENDCPY_ACTION);\n firstAnswerActionBtn?.classList?.add(this.classConstants.HIDE_ELEMENT);\n\n }, expandClostBtnTemplate);\n }\n\n handleActionTemplateClickEventsForSnippet(eachActionTemplate : any, snippet : any, snippetListHtmlEle : any, hostInstance : any){\n hostInstance.eventManager?.addEventListener(this.classConstants.SUGGESTION_SEND_BTN, 'click', () => {\n this.handleSendCopyButtonForSnippet(ProjConstants.SEND, snippet, ProjConstants.ARTICLE, snippetListHtmlEle, hostInstance);\n this.addSentOrCopiedTextForSnippets(snippet, snippetListHtmlEle, 'Sent', hostInstance);\n }, eachActionTemplate);\n\n hostInstance.eventManager?.addEventListener(this.classConstants.SUGGESTION_COPY_BTN, 'click', () => {\n this.handleSendCopyButtonForSnippet(ProjConstants.COPY, snippet, ProjConstants.ARTICLE, snippetListHtmlEle, hostInstance);\n this.addSentOrCopiedTextForSnippets(snippet, snippetListHtmlEle, 'Copied', hostInstance);\n }, eachActionTemplate);\n }\n\n handleActionTemplateClickEventsForArticle(eachActionTemplate : any, article : any, articleListHtmlEle : any, hostInstance : any){\n hostInstance.eventManager?.addEventListener(this.classConstants.SUGGESTION_SEND_BTN, 'click', () => {\n this.handleSendCopyButtonArticleOrFile(ProjConstants.SEND, article, ProjConstants.ARTICLE, articleListHtmlEle, hostInstance);\n this.addSentOrCopiedTextForArticle(article, articleListHtmlEle, 'Sent', hostInstance);\n if(articleListHtmlEle?.querySelector('.aa-agentic-search-results-title')){\n hostInstance?.sendAgentMessage({\n author: {\n id: \"authorids\",\n type: 'AGENT',\n firstName: \"first name\",\n lastName: \"last name\"\n },\n message: article?.sendContent || '',\n type: 'USER',\n })\n }\n }, eachActionTemplate);\n\n hostInstance.eventManager?.addEventListener(this.classConstants.SUGGESTION_COPY_BTN, 'click', () => {\n this.handleSendCopyButtonArticleOrFile(ProjConstants.COPY, article, ProjConstants.ARTICLE, articleListHtmlEle, hostInstance);\n this.addSentOrCopiedTextForArticle(article, articleListHtmlEle, 'Copied', hostInstance);\n if(articleListHtmlEle?.querySelector('.aa-agentic-search-results-title')){\n hostInstance?.sendAgentMessage({\n author: {\n id: \"authorids\",\n type: 'AGENT',\n firstName: \"first name\",\n lastName: \"last name\"\n },\n message: article?.sendContent || '',\n type: 'USER',\n })\n }\n }, eachActionTemplate);\n }\n\n handleActionTemplateClickEventsForFile(eachActionTemplate : any, file : any, fileListHtmlEle : any, hostInstance : any){\n hostInstance.eventManager?.addEventListener(this.classConstants.SUGGESTION_SEND_BTN, 'click', () => {\n this.handleSendCopyButtonArticleOrFile(ProjConstants.SEND, file, ProjConstants.ARTICLE, fileListHtmlEle,hostInstance);\n this.addSentOrCopiedTextForFiles(file, fileListHtmlEle, 'Sent', hostInstance);\n }, eachActionTemplate);\n\n hostInstance.eventManager?.addEventListener(this.classConstants.SUGGESTION_COPY_BTN, 'click', () => {\n this.handleSendCopyButtonArticleOrFile(ProjConstants.COPY, file, ProjConstants.ARTICLE, fileListHtmlEle, hostInstance);\n this.addSentOrCopiedTextForFiles(file, fileListHtmlEle, 'Copied', hostInstance);\n }, eachActionTemplate);\n }\n\n handleSuggestionLessClickEvent (actionHtml : any, suggestionElement: any, listHtml: any, hostInstance : any) {\n let moreElement = actionHtml.querySelector(this.classConstants.SUGGESTION_MORE_LINK);\n let lessElement = actionHtml.querySelector(this.classConstants.SUGGESTION_LESS_LINK);\n hostInstance.eventManager?.addEventListener(this.classConstants.SUGGESTION_MORE_LINK, 'click', () => {\n if (lessElement?.classList?.contains(this.classConstants.HIDE_ELEMENT)) {\n lessElement?.classList?.remove(this.classConstants.HIDE_ELEMENT)\n }\n moreElement?.classList?.add(this.classConstants.HIDE_ELEMENT);\n listHtml.forEach((item: any) => {\n if (item?.classList?.contains(this.classConstants.HIDE_ELEMENT)) {\n item?.classList?.remove(this.classConstants.HIDE_ELEMENT)\n }\n });\n }, suggestionElement)\n\n }\n\n handleSuggestionMoreClickEvent (actionHtml : any, suggestionElement: any, listHtml: any, hostInstance : any) {\n let moreElement = actionHtml.querySelector(this.classConstants.SUGGESTION_MORE_LINK);\n let lessElement = actionHtml.querySelector(this.classConstants.SUGGESTION_LESS_LINK);\n hostInstance?.eventManager?.addEventListener(this.classConstants.SUGGESTION_LESS_LINK, 'click', () => {\n if (moreElement?.classList?.contains(this.classConstants.HIDE_ELEMENT)) {\n moreElement?.classList?.remove(this.classConstants.HIDE_ELEMENT)\n }\n lessElement?.classList?.add(this.classConstants.HIDE_ELEMENT);\n listHtml.forEach((item: any, inx: any) => {\n if (inx >= 2 && item) {\n item?.classList?.add(this.classConstants.HIDE_ELEMENT);\n }\n });\n }, suggestionElement);\n\n }\n\n setFaqIndividualLoader (inx : any, hide = false, id : string, hostInstance : any) {\n let faqSuggestionEle : any = hostInstance?.chatEle?.querySelector(`#${id}`); \n let faqListHTML = faqSuggestionEle?.querySelectorAll(this.classConstants.SUGGESTION_EACH);\n let faqLoaderEle : any = null;\n if(faqListHTML && faqListHTML?.length > 0){\n faqLoaderEle = faqListHTML[inx]?.querySelector(`${this.classConstants.SUGGESTION_EACH_HEADER} ${this.classConstants.SUGGESTION_EACH_TITLE} ${this.classConstants.SUGGESTION_FAQ_ANS_LOADER}`);\n }\n \n \n if(hide && faqLoaderEle){\n faqLoaderEle?.classList?.add(this.classConstants.HIDE_ELEMENT);\n }else if(faqLoaderEle){\n if (faqLoaderEle?.classList?.contains(this.classConstants.HIDE_ELEMENT)) {\n faqLoaderEle?.classList?.remove(this.classConstants.HIDE_ELEMENT)\n }\n setTimeout(() => {\n faqLoaderEle?.classList?.add(this.classConstants.HIDE_ELEMENT);\n }, 10000);\n }\n }\n\n addOrHideFAQArrows(faqUpArrowTemplate : any, faqDownArrowTemplate : any, type : string){\n if(type === 'up'){\n if(faqDownArrowTemplate?.classList?.contains(this.classConstants.HIDE_ELEMENT)){\n faqDownArrowTemplate?.classList?.remove(this.classConstants.HIDE_ELEMENT);\n }\n faqUpArrowTemplate?.classList?.add(this.classConstants.HIDE_ELEMENT);\n }else{\n if(faqUpArrowTemplate?.classList?.contains(this.classConstants.HIDE_ELEMENT)){\n faqUpArrowTemplate?.classList?.remove(this.classConstants.HIDE_ELEMENT);\n }\n faqDownArrowTemplate?.classList?.add(this.classConstants.HIDE_ELEMENT);\n }\n }\n\n toggleArrows(index : number, faqId : string, hostInstance : any){\n let faqSuggestionEle : any = hostInstance?.chatEle?.querySelector(`#${faqId}`); \n let faqListHTML = faqSuggestionEle?.querySelectorAll(this.classConstants.SUGGESTION_EACH);\n if(faqListHTML){\n let suggestionHeaderTemplate = faqListHTML[index]?.querySelector(this.classConstants.SUGGESTION_EACH_HEADER);\n\n let faqUpArrowTemplate = suggestionHeaderTemplate?.querySelector(this.classConstants.SUGGESTION_FAQ_UP_ARROW);\n let faqDownArrowTemplate = suggestionHeaderTemplate?.querySelector(this.classConstants.SUGGESTION_FAQ_DOWN_ARROW);\n this.addOrHideFAQArrows(faqUpArrowTemplate, faqDownArrowTemplate, 'down');\n }\n }\n\n openLinksInBrowser(url: any, hostInstance: any) {\n this.openurlInBrowser(url, hostInstance);\n };\n\n openurlInBrowserForSnippet(url: any, snippet: any, hostInstance : any) {\n this.openurlInBrowser(url, hostInstance);\n this.handleUrlClickEvent(url, snippet, hostInstance);\n }\n \n handleUrlClickEvent (url: any, snippet: any, hostInstance : any) {\n let socketRequestParams: any = this.commonRequestParamsForActivity(snippet);\n socketRequestParams.eventType = \"url_clicked\";\n socketRequestParams.url = url;\n hostInstance.socketConnection.emitEvents(EVENTS.agent_activity_request, socketRequestParams);\n }\n\n commonRequestParamsForActivity (snippet: any) {\n const { botId, conversationId, channel } = this.connectionDetails;\n let socketRequestParams = {\n botId: botId,\n conversationId: conversationId,\n event: \"clicked\",\n sourceMsgId: snippet.sourceMsgId,\n dataSource: \"snippet\",\n positionId: snippet.positionId,\n participant : this?.internalTransferData?.participant || {}\n }\n return socketRequestParams;\n }\n\n emitSearchRequestForAssistSuggestions (value : any, isSearch : any, faq : any, hostInstance : any) {\n let connectionDetails: any = Object.assign({}, this.connectionDetails);\n connectionDetails.value = value;\n connectionDetails.isSearch = isSearch;\n // connectionDetails.positionId = searchObj?.positionId;\n if (connectionDetails.interactiveLanguage && typeof connectionDetails.interactiveLanguage == 'string' && connectionDetails.interactiveLanguage != \"''\") {\n connectionDetails['language'] = connectionDetails.interactiveLanguage; // Return the default value for null, undefined, or \"''\"\n }\n if(faq.sourceMsgId){\n connectionDetails['sourceMsgId'] = faq.sourceMsgId;\n }\n\n let agent_assist_request_params = hostInstance.prepareAgentAssistRequestParams(connectionDetails);\n\n if(faq.ambiguityToken){\n agent_assist_request_params.uiunqref = faq.ambiguityToken;\n }\n hostInstance.socketConnection.emitEvents(EVENTS.agent_assist_request, agent_assist_request_params);\n }\n\n emitSearchRequestForSearch (searchTextObj : any, isSearch: boolean, faq: any = {}, hostInstance : any) {\n let searchTextValue = searchTextObj?.value;\n const connectionDetails = { ...hostInstance?.socketConnection?.configOptions?.connectionDetails, value : searchTextValue, isSearch };\n if (connectionDetails.interactiveLanguage && typeof connectionDetails.interactiveLanguage === 'string' && connectionDetails.interactiveLanguage !== \"''\") {\n connectionDetails.language = connectionDetails.interactiveLanguage;\n }\n if (faq && (faq?.sourceMsgId || faq?.reqId)) {\n connectionDetails.sourceMsgId = faq?.sourceMsgId || faq?.reqId;\n }\n const agentAssistAgentRequestParams = hostInstance.prepareAgentAssistAgentRequestParams(connectionDetails);\n if(isSearch){\n agentAssistAgentRequestParams.startTime = searchTextObj?.stTime;\n agentAssistAgentRequestParams.endTime = searchTextObj?.edTime;\n }\n if(faq.ambiguityToken){\n agentAssistAgentRequestParams.uiunqref = faq.ambiguityToken;\n }\n // Use reqId from searchTextObj if available (for conversation search)\n if(searchTextObj?.isConversationalSearch && searchTextObj?.reqId){\n agentAssistAgentRequestParams.reqId = searchTextObj.reqId;\n }\n // Also check faq parameter (existing logic)\n if(faq?.isConversationalSearch && faq?.reqId){\n agentAssistAgentRequestParams.reqId = faq?.reqId;\n }\n agentAssistAgentRequestParams.participant = this.internalTransferData?.participant || {};\n hostInstance.socketConnection.emitEvents(EVENTS.agent_assist_agent_request, agentAssistAgentRequestParams);\n };\n\n handleFaqAmbiguityDescElement(faqId : string, ambiguityToken : any, faqs : any, hostInstance : any){ \n let faqSuggestionEle : any = hostInstance?.chatEle?.querySelector(`#${faqId}`); \n let faqListHTML = faqSuggestionEle?.querySelectorAll(this.classConstants.SUGGESTION_EACH);\n let faqinx = ambiguityToken?.index;\n let descEle : any;\n let faqwithAns = faqs[faqinx];\n this.setFaqIndividualLoader(faqinx, true, faqId, hostInstance);\n if(faqwithAns && faqwithAns?.answer?.length > 0 && faqListHTML[faqinx]){\n descEle = getHTML(FaqAnswerPlacement, { faq : faqwithAns, hostInstance }, hostInstance);\n hostInstance.emit(SDK_EVENTS.BEFORE_VIEW_INIT, descEle, { event: SDK_EVENTS.FAQ_ANSWER_AFTER_TOGGLE, data: faqs });\n if(descEle){\n const feedbackWrapper = faqListHTML[faqinx]?.querySelector?.(`${this.classConstants.FEEDBACK_WRAPPER}${faqwithAns?.positionId}`);\n if(feedbackWrapper){\n faqListHTML[faqinx].insertBefore(descEle, feedbackWrapper);\n }else{\n faqListHTML[faqinx].append(descEle);\n }\n this.handleSeeMoreButtonsForFaq(faqSuggestionEle, ClassMapConstanst.DESC_TEXT_SUGGESTION, ClassMapConstanst.MORE_BTN_CONTAINER, hostInstance, faqinx);\n }\n }\n \n let suggestionHeaderTemplate = faqListHTML[faqinx]?.querySelector(this.classConstants.SUGGESTION_EACH_HEADER);\n this.addOrHideFAQActionExpandCloseElements(faqwithAns, suggestionHeaderTemplate, faqListHTML, faqinx, hostInstance);\n }\n\n handleFaqToggle (faq : any, index : any , type : string, faqListHTML : any, hostInstance : any, isAssistSuggestion : boolean, props : any) {\n faq.toggle = !faq.toggle;\n faq.seeMoreWrapper = false;\n let faqSuggestionBodyList = faqListHTML[index]?.querySelectorAll(this.classConstants.SUGGESTION_EACH_BODY);\n if(type == 'down' && !faq.answer){\n if(isAssistSuggestion){\n this.checkAnswerAndToggleForAssist(faq, index, hostInstance, props);\n }else{\n this.checkAnswerAndToggleForSearch(faq, index, hostInstance);\n }\n }else if (type == 'down' && faq.answer){\n faqSuggestionBodyList.forEach((ansTemplate: any, index: any) => {\n if (ansTemplate?.classList?.contains(this.classConstants.HIDE_ELEMENT)) {\n ansTemplate?.classList?.remove(this.classConstants.HIDE_ELEMENT)\n }\n });\n }else if(type == 'up'){\n faqSuggestionBodyList.forEach((ansTemplate: any, index: any) => {\n ansTemplate?.classList?.add(this.classConstants.HIDE_ELEMENT);\n });\n }\n }\n\n checkAnswerAndToggleForAssist (faq: any, index : number, hostInstance : any, props : any){\n if (!faq.answer && faq.toggle) {\n faq.ambiguityToken = btoa(JSON.stringify({ question: faq.question, index : index, assistSuggestion: props.suggestionIndex }));\n this.emitSearchRequestForAssistSuggestions(faq.displayName, false, faq, hostInstance);\n let faqId = this.idConstants.ASSIST_FAQ_SUGGESTION + props.suggestionIndex;\n this.setFaqIndividualLoader(index, false, faqId, hostInstance);\n }\n };\n\n checkAnswerAndToggleForSearch(faq: any, index : number, hostInstance : any){\n if (!faq.answer && faq.toggle) {\n faq.ambiguityToken = btoa(JSON.stringify({ question: faq.question, index : index }));\n this.emitSearchRequestForSearch({value : faq.displayName}, false, faq, hostInstance);\n let faqId = faq?.isConversationalSearch ? this.idConstants.SEARCH_FAQ_SUGGESTION + '-xo' + faq?.reqId : this.idConstants.SEARCH_FAQ_SUGGESTION + '-xo';\n this.setFaqIndividualLoader(index, false, faqId, hostInstance);\n }\n }\n\n renderEachFaqInSuggestionList(searchResponse : any, faqListHTML : any, hostInstance : any, isAssistSuggestion : boolean, props : any){\n searchResponse?.faqs?.forEach((faq: any, index : number) => {\n\n let suggestionHeaderTemplate = faqListHTML[index]?.querySelector(this.classConstants.SUGGESTION_EACH_HEADER);\n\n let faqUpArrowTemplate = suggestionHeaderTemplate?.querySelector(this.classConstants.SUGGESTION_FAQ_UP_ARROW);\n let faqDownArrowTemplate = suggestionHeaderTemplate?.querySelector(this.classConstants.SUGGESTION_FAQ_DOWN_ARROW); \n\n hostInstance.eventManager?.addEventListener(this.classConstants.SUGGESTION_FAQ_UP_ARROW, 'click', () => {\n\n this.addOrHideFAQArrows(faqUpArrowTemplate, faqDownArrowTemplate, 'up');\n this.handleFaqToggle(faq, index, 'up', faqListHTML, hostInstance, isAssistSuggestion, props);\n \n }, suggestionHeaderTemplate);\n\n hostInstance.eventManager?.addEventListener(this.classConstants.SUGGESTION_FAQ_DOWN_ARROW, 'click', () => {\n\n this.addOrHideFAQArrows(faqUpArrowTemplate, faqDownArrowTemplate, 'down');\n this.handleFaqToggle(faq, index, 'down', faqListHTML, hostInstance, isAssistSuggestion, props)\n \n }, suggestionHeaderTemplate);\n\n if (faq.answer && faq?.answer?.length > 0 && !this.hideActionButtons) {\n \n this.addOrHideFAQActionExpandCloseElements(faq, suggestionHeaderTemplate, faqListHTML, index, hostInstance)\n \n }\n\n });\n }\n\n renderEachSnippetInSuggestionList(searchResponse : any, snippetListHtml : any, hostInstance : any){\n searchResponse?.snippets?.forEach((snippet: any, index : number) => {\n if(snippet.contentArray.length > 0){\n let eachActionTemplate: any = getHTML(handleSendCopyButtons, { snippet: snippet, hostInstance: hostInstance, rootServiceInstance : hostInstance.rootService }, hostInstance);\n if (eachActionTemplate && eachActionTemplate?.nodeName != '#text') {\n snippetListHtml[index]?.querySelector(this.classConstants.SUGGESTION_EACH_HEADER).append(eachActionTemplate);\n this.handleActionTemplateClickEventsForSnippet(eachActionTemplate, snippet, snippetListHtml[index], hostInstance); \n }\n }\n\n let sourceListHtml = snippetListHtml[index].querySelectorAll(this.classConstants.SUGGESTION_SNIPPET_SOURCE_TAG); \n\n snippet.sources?.forEach((source : any, inx : any) => {\n hostInstance.eventManager?.addEventListener(this.classConstants.SUGGESTION_SNIPPET_LINK, 'click', () => {\n this.openurlInBrowserForSnippet(source.url, snippet, hostInstance)\n }, sourceListHtml[inx]);\n });\n });\n }\n\n handleSendCopyForAgenticSearchResults(agenticSearchResultsElement : any, response:any, hostInstance : any){\n let eachActionTemplate: any = getHTML(handleSendCopyButtons, { agenticSearchResultsElement: agenticSearchResultsElement, hostInstance: hostInstance, rootServiceInstance : hostInstance.rootService }, hostInstance);\n if (eachActionTemplate && eachActionTemplate?.nodeName != '#text') {\n agenticSearchResultsElement?.querySelector(this.classConstants.SUGGESTION_EACH_HEADER).append(eachActionTemplate);\n this.handleActionTemplateClickEventsForArticle(eachActionTemplate, response?.response, agenticSearchResultsElement , hostInstance);\n }\n }\n\n renderEachArticleInSuggestionList(searchResponse : any, articlesListHTML : any, hostInstance : any){\n searchResponse?.articles?.forEach((article: any, index : number) => {\n\n if(article?.content && !article?.internalFlag){\n let eachActionTemplate: any = getHTML(handleSendCopyButtons, { article: article, hostInstance: hostInstance, rootServiceInstance : hostInstance.rootService }, hostInstance);\n if (eachActionTemplate && eachActionTemplate?.nodeName != '#text') {\n articlesListHTML[index]?.querySelector(this.classConstants.SUGGESTION_EACH_HEADER).append(eachActionTemplate);\n this.handleActionTemplateClickEventsForArticle(eachActionTemplate, article, articlesListHTML[index], hostInstance); \n }\n }\n hostInstance.eventManager?.addEventListener(this.classConstants.SUGGESTION_ARTICLE_LINK, 'click', () => {\n this.openLinksInBrowser(article.link, hostInstance);\n }, articlesListHTML[index]);\n\n });\n }\n\n renderEachFileInSuggestionList(searchResponse : any, filesListHtml : any, hostInstance : any){\n searchResponse?.files?.forEach((file: any, index : number) => {\n if(file?.content && !file?.internalFlag){\n let eachActionTemplate: any = getHTML(handleSendCopyButtons, { file: file, hostInstance: hostInstance, rootServiceInstance : hostInstance.rootService }, hostInstance);\n if (eachActionTemplate && eachActionTemplate?.nodeName != '#text') {\n filesListHtml[index]?.querySelector(this.classConstants.SUGGESTION_EACH_HEADER).append(eachActionTemplate);\n this.handleActionTemplateClickEventsForFile(eachActionTemplate, file, filesListHtml[index], hostInstance); \n }\n }\n hostInstance.eventManager?.addEventListener(this.classConstants.SUGGESTION_FILE_LINK, 'click', () => {\n this.openLinksInBrowser(file.link, hostInstance);\n }, filesListHtml[index]);\n });\n\n }\n\n // search\n handleSearchText(searchText : any, hostInstance : any){\n if (searchText.isEntered) {\n this.emitSearchRequestForSearch (searchText, true,{}, hostInstance);\n }\n let inputBlock = hostInstance?.chatEle?.querySelector(this.classConstants.SEARCH_INPUT_BLOCK);\n let inputEle = hostInstance?.chatEle?.querySelector(`#${this.idConstants.SEARCH_INPUT}`);\n if (inputBlock) {\n let inputCloseIcon = inputBlock?.querySelector(this.classConstants.SEARCH_INPUT_CLOSE);\n if (searchText.value) {\n inputCloseIcon.classList.remove(this.classConstants.HIDE_ELEMENT);\n } else {\n inputCloseIcon.classList.add(this.classConstants.HIDE_ELEMENT);\n }\n inputEle.value = searchText.value;\n }\n }\n\n addOrHideFAQActionExpandCloseElements(faq : any, suggestionHeaderTemplate : any, faqListHTML : any, index : any, hostInstance : any){\n let eachActionTemplate: any = getHTML(handleSendCopyButtons, { ansObj: faq.answer[0], hostInstance: hostInstance, addHideClass: false, rootServiceInstance : hostInstance.rootService }, hostInstance);\n\n if (suggestionHeaderTemplate && eachActionTemplate && eachActionTemplate?.nodeName != '#text') {\n\n suggestionHeaderTemplate.append(eachActionTemplate);\n\n this.handleActionTemplateClickEventsForFAQ(eachActionTemplate, faq, faq.answer[0], faqListHTML[index], hostInstance); \n } \n \n if (faq.answer?.length > 1) {\n\n let faqSuggestionBodyList = faqListHTML[index]?.querySelectorAll(this.classConstants.SUGGESTION_EACH_BODY);\n\n faq.answer?.forEach((ansObj: any, inx: any) => {\n\n let eachAnsActionTemplate: any = getHTML(handleSendCopyButtons, { ansObj: ansObj, hostInstance: hostInstance, addHideClass: (inx == 0 ? true : false), rootServiceInstance : hostInstance.rootService }, hostInstance);\n\n if (eachAnsActionTemplate && eachAnsActionTemplate?.nodeName != '#text') {\n\n\n if (faqSuggestionBodyList && faqSuggestionBodyList?.length > 0) {\n\n faqSuggestionBodyList[inx].prepend(eachAnsActionTemplate);\n\n this.handleActionTemplateClickEventsForFAQ(eachAnsActionTemplate, faq, ansObj, faqListHTML[index], hostInstance); \n }\n\n }\n });\n\n let expandClostBtnTemplate: any = getHTML(FaqExpandCloseBtn, {}, hostInstance);\n\n hostInstance.emit(SDK_EVENTS.BEFORE_VIEW_INIT, expandClostBtnTemplate, {\n event: SDK_EVENTS.FAQ_EXPAND_CLOSE_TEMPLATE,\n data : {}\n });\n \n faqListHTML[index]?.append(expandClostBtnTemplate);\n\n let suggestionHeaderActionTemplate = faqListHTML[index]?.querySelector(`${this.classConstants.SUGGESTION_EACH_HEADER} ${this.classConstants.SUGGESTION_SENDCPY_ACTION}`);\n\n this.handleFaqExpandCloseBtnClickEvents(expandClostBtnTemplate, faqSuggestionBodyList, suggestionHeaderActionTemplate, faqListHTML[index], hostInstance)\n \n }\n }\n\n handleSeeMoreButtonsForSearchAssist(suggestionElement : any, descClassName : any, moreContainer : any, hostInstance : any){\n let suggestionBodyFaq : any = suggestionElement?.querySelectorAll('.suggestion-item-card .suggestion-body-faq');\n suggestionBodyFaq?.forEach((bodyele : any, i : number) => {\n let desc = bodyele.querySelector(descClassName);\n if(desc){\n let overlimitContainer = bodyele?.querySelector(moreContainer)\n let moreButton = overlimitContainer?.querySelector(this.classConstants.MORE_BUTTON);\n const scrollDimensions = safeScrollDimensions(desc);\n const clientDimensions = safeDimensions(desc);\n const isOverLimit = scrollDimensions.scrollHeight > clientDimensions.height;\n if (isOverLimit || (this.isAgenticStreamingEnabled && scrollDimensions.scrollHeight >= clientDimensions.height)) {\n overlimitContainer.classList.remove(this.classConstants.HIDE_ELEMENT);\n hostInstance.eventManager?.addEventListener(this.classConstants.MORE_BUTTON, 'click', (e : any) => {\n desc.classList.toggle(this.classConstants.SUGGESTION_EXPANDED);\n moreButton.textContent = desc.classList.contains(this.classConstants.SUGGESTION_EXPANDED) ? ProjConstants.READ_LESS : ProjConstants.READ_MORE;\n }, overlimitContainer);\n }\n }\n });\n }\n\n handleSeeMoreButtonsForFaq(suggestionElement : any, descClassName : any, moreContainer : any, hostInstance : any, faqinx = -1){ \n let suggestionEachFaq: any = suggestionElement?.querySelectorAll(this.classConstants.SUGGESTION_EACH);\n suggestionEachFaq?.forEach((eachFaq : any, i : number) => {\n if(faqinx == -1 || faqinx === i){\n eachFaq.querySelectorAll(this.classConstants.SUGGESTION_EACH_BODY)?.forEach((bodyele : any, ii : number) => {\n let desc = bodyele.querySelector(descClassName);\n if(desc){\n let overlimitContainer = bodyele?.querySelector(moreContainer)\n let moreButton = overlimitContainer?.querySelector(this.classConstants.MORE_BUTTON);\n const scrollDimensions = safeScrollDimensions(desc);\n const clientDimensions = safeDimensions(desc);\n const isOverLimit = scrollDimensions.scrollHeight > clientDimensions.height; \n if (isOverLimit) {\n overlimitContainer.classList.remove(this.classConstants.HIDE_ELEMENT);\n hostInstance.eventManager?.addEventListener(this.classConstants.MORE_BUTTON, 'click', (e : any) => {\n desc.classList.toggle(this.classConstants.SUGGESTION_EXPANDED);\n moreButton.textContent = desc.classList.contains(this.classConstants.SUGGESTION_EXPANDED) ? ProjConstants.READ_LESS : ProjConstants.READ_MORE;\n }, overlimitContainer);\n }\n if(ii > 0){\n bodyele.classList.add(this.classConstants.HIDE_ELEMENT);\n }\n }\n });\n }\n });\n }\n\n\n // playbook related logic.\n prepareChecklistPayload(event : any, checkListData : any, checklistObj : any, step = false, stageId = ''){\n\n let payload : any = {\n \"event\": event,\n \"conversationId\": this.connectionDetails.conversationId,\n \"ccVersion\": checkListData?.ccVersion,\n \"accountId\": checkListData?.accountId,\n \"botId\": (this.connectionDetails?.fromSAT) ? this.connectionDetails?.instanceBotId : this.connectionDetails?.botId,\n \"agentInfo\": {\n \"agentId\": \"\", // mendatory field\n //any other fields\n },\n \"timestamp\": 0,\n \"context\": {}\n };\n\n if(checkListData?.isSuggestedCL){\n payload.isSuggestedCL = true;\n }\n\n if(step){\n payload.checklistStep = checklistObj\n }else{\n payload.checklist = checklistObj\n }\n\n if(stageId){\n payload.checklist.stageId = stageId;\n }\n\n\n\n let payloadStructure : any = {\n \"botId\": (this.connectionDetails?.fromSAT) ? this.connectionDetails?.instanceBotId : this.connectionDetails?.botId,\n \"payload\": payload\n }\n\n return payloadStructure\n }\n\n sendAndCopyForPlaybook(eventName : string, payload : any, eachPlaybookStep : any, hostInstance : any){\n let message : any = {\n method: (eventName == ProjConstants.SEND_METHOD) ? ProjConstants.SEND_METHOD : ProjConstants.COPY_METHOD,\n name: (eventName == ProjConstants.SEND_METHOD) ? ProjConstants.SENDMSG : ProjConstants.COPYMSG,\n conversationId : this.connectionDetails.conversationId,\n payload,\n };\n\n if (eventName == ProjConstants.SEND_METHOD) {\n hostInstance.emit(SDK_EVENTS.BEFORE_VIEW_INIT, eachPlaybookStep, { event: SDK_EVENTS.PLAYBOOK_SEND_EVENT, data : {message}});\n } else if (eventName == ProjConstants.COPY_METHOD) {\n hostInstance.emit(SDK_EVENTS.BEFORE_VIEW_INIT, eachPlaybookStep, { event: SDK_EVENTS.PLAYBOOK_COPY_EVENT, data : {message}});\n }\n }\n\n sendCheckListCompleteEvent(prevCheckListsData: any, id: any, hostInstance: any) {\n let checklistParams: any = this.prepareChecklistPayload('checklist_closed', prevCheckListsData, { \"id\": id });\n hostInstance.socketConnection.emitEvents(EVENTS.checklist_closed, checklistParams);\n }\n\n checkAllStagesCompleted(prevCheckListsData: any, id: any, hostInstance : any) {\n let checklists = prevCheckListsData.checklists;\n let completed = false;\n let i = (checklists || []).findIndex((item: any) => item._id === id);\n if (checklists[i]?.type !== 'primary') {\n completed = (checklists[i].stages[0]?.steps || [])\n .every((item: any) => item.complete);\n if (completed) {\n checklists[i].completed = true;\n this.sendCheckListCompleteEvent(prevCheckListsData, id, hostInstance);\n }\n } else {\n let open = (checklists[i].stages[0]?.steps || [])\n .every((item: any) => item.complete);\n if (open) {\n }\n let close = (checklists[i].stages[1]?.steps || [])\n .every((item: any) => item.complete);\n\n if(close){\n hostInstance?.chatEle?.querySelector(ClassMapConstanst.PROCEEDTOCLOSE_BTN)?.classList?.add(ClassMapConstanst.CHECKLIST_DISABLE_MSG)\n }\n // if (close) {\n // if (!this.openAck) {\n // this.isCloseCompleted = true;\n // setTimeout(() => {\n // this.isCloseCompleted = false;\n // this.openAck = true;\n // }, 3000);\n // }\n // }\n if (open && close) {\n checklists[i].completed = true;\n completed = true;\n }\n if (completed) {\n this.sendCheckListCompleteEvent(prevCheckListsData, id, hostInstance);\n }\n }\n }\n\n updateStepTemplate(prevCheckListsData: any, hostInstance : any){ \n prevCheckListsData.checklists[this.selCLInx]?.stages?.map((stage: any, stInx: number) => {\n stage?.steps?.map((step: any, stepInx: number) => {\n let stepEle = hostInstance?.chatEle?.querySelector(`${ClassMapConstanst.CHECKLIST_EACH_STEP}${stInx}-${stepInx}`);\n let stepCloseEle = stepEle?.querySelector(`${ClassMapConstanst.CHECKLIST_STEP_COMPLETE_BTN}${stInx}-${stepInx}`);\n if (stepEle) {\n if (step.ongoing === false) {\n stepEle?.classList?.remove(ClassMapConstanst.CHECKLIST_STEP_ONGOING);\n stepEle?.querySelector(`${ClassMapConstanst.CHECKLIST_HEADER_STEP}`)?.classList?.add(ClassMapConstanst.CHECKLIST_DISABLE_MSG);\n stepCloseEle?.classList?.add(ClassMapConstanst.HIDE_ELEMENT);\n stepEle?.querySelector(`${ClassMapConstanst.CHECKLIST_STEP_SEND_BLOCK}`)?.classList?.add(ClassMapConstanst.HIDE_ELEMENT);\n }\n if (step.complete === true) {\n stepEle?.querySelector(`${ClassMapConstanst.CHECKLIST_HEADER_STEP_NAME}`)?.classList?.add(ClassMapConstanst.CHECKLIST_STRIKE);\n }\n if (step.ongoing === true) {\n stepEle?.classList?.add(ClassMapConstanst.CHECKLIST_STEP_ONGOING);\n stepEle?.querySelector(`${ClassMapConstanst.CHECKLIST_HEADER_STEP}`)?.classList?.remove(ClassMapConstanst.CHECKLIST_DISABLE_MSG);\n stepCloseEle?.classList?.remove(ClassMapConstanst.HIDE_ELEMENT);\n stepEle?.querySelector(`${ClassMapConstanst.CHECKLIST_STEP_SEND_BLOCK}`)?.classList?.remove(ClassMapConstanst.HIDE_ELEMENT);\n }\n }\n });\n });\n }\n\n selectNextStep(prevCheckListsData: any, clIndex: number, stInx: number, hostInstance : any) {\n let allStepsComplete = true;\n let index = 0;\n this.closeAllStepsInStage(prevCheckListsData, clIndex, stInx);\n\n for (let step of prevCheckListsData.checklists[clIndex]?.stages[stInx]?.steps) {\n if (!step.complete) {\n step.ongoing = true;\n allStepsComplete = false;\n this.selSpInx = index;\n this.scrollView(step._id, hostInstance);\n break;\n }\n index++;\n }\n return allStepsComplete;\n }\n\n closeAllStepsInStage(prevCheckListsData: any, clIndex: number, stInx: number) {\n prevCheckListsData.checklists[clIndex]?.stages.forEach((stage: any) => {\n stage?.steps.forEach((step: any) => {\n step.ongoing = false;\n });\n });\n }\n\n selectStepForRandom (stInx: number, step: any, stepInx: number, hostInstance : any){ \n this.selStInx = stInx;\n this.selSpInx = stepInx;\n step.ongoing = true;\n let stepId = step._id;\n this.scrollView(stepId, hostInstance);\n }\n\n selectStage(prevCheckListsData: any, clIndex: number, stInx: number, hostInstance : any) {\n this.selStInx = stInx;\n this.selectNextStep(prevCheckListsData, clIndex, stInx, hostInstance);\n this.updateStepTemplate(prevCheckListsData, hostInstance);\n }\n\n scrollView (stepId: any, hostInstance : any) {\n if (hostInstance.chatEle.querySelector(`#${stepId}`)) {\n hostInstance.chatEle.querySelector(`#${stepId}`).scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'start' });\n }\n }\n \n // update proceed to close button based on primary checklists\n showProceedToCloseBtn (hostInstance : any) {\n let proceedToClostBtn = hostInstance?.chatEle?.querySelector(`${ClassMapConstanst.PROCEEDTOCLOSE_BTN}`);\n proceedToClostBtn.classList.remove(ClassMapConstanst.HIDE_ELEMENT);\n }\n\n clickStep(prevCheckListsData: any, stInx: number, step: any, stepInx: number, hostInstance : any) {\n let selCLInx = this.selCLInx;\n let selStInx = this.selStInx;\n let selSpInx = this.selSpInx;\n\n let checklists = prevCheckListsData.checklists;\n let cl = checklists[selCLInx];\n\n if (step?.complete || step?.ongoing) {\n return;\n } else if (cl?.order === \"random\") {\n checklists[selCLInx].stages[selStInx].steps[selSpInx].ongoing = false;\n this.selectStepForRandom(stInx, step, stepInx, hostInstance);\n this.updateStepTemplate(prevCheckListsData, hostInstance);\n } else {\n return;\n }\n }\n\n getNumberstepCompInStage (prevCheckListsData : any){\n let stepNum = 0;\n for(let step of prevCheckListsData.checklists[this.selCLInx]?.stages[this.selStInx]?.steps){\n if(step.complete){\n stepNum += 1;\n }\n }\n return stepNum;\n }\n\n handleStageCheck(parentEle : any, stInx : number, stageList : any, hostInstance : any) {\n let selectedStageSpan = hostInstance?.chatEle?.querySelector(`${ClassMapConstanst.SELECTED_STAGE}`);\n if(selectedStageSpan){\n selectedStageSpan.innerText = stageList[stInx]?.name;\n }\n stageList?.map((stage: any, inx: number) => {\n let ele = parentEle?.querySelector(`${ClassMapConstanst.CHECKLIST_SELECTED_STAGE_CHECK}${inx}`);\n inx === stInx ? ele?.classList?.remove(ClassMapConstanst.HIDE_ELEMENT) : ele?.classList?.add(ClassMapConstanst.HIDE_ELEMENT);\n });\n }\n\n selectNextStage (prevCheckListsData: any, clIndex: number, stInx: number, hostInstance : any) {\n let allStepsCompleteInStage = this.selectNextStep(prevCheckListsData, clIndex, stInx, hostInstance);\n if (allStepsCompleteInStage && prevCheckListsData.checklists[clIndex]?.stages[stInx + 1]) {\n if (prevCheckListsData.checklists[clIndex]?.stages[stInx + 1].name != 'Close' || this.isProceedToClose) {\n let stageDropdown = hostInstance?.chatEle?.querySelector(`${ClassMapConstanst.STAGE_DROPDOWN}`);\n this.handleStageCheck(stageDropdown, stInx+1, prevCheckListsData.checklists[clIndex]?.stages, hostInstance);\n this.selectStage(prevCheckListsData, clIndex, stInx + 1, hostInstance);\n }\n }\n this.updateStepTemplate(prevCheckListsData, hostInstance);\n }\n\n confirmationBtnForPlaybook(btn : any, eachPlaybookStep: any, hostInstance : any) {\n let eventName = btn.title === 'yes' ? SDK_EVENTS.PLAYBOOK_CONFIRMATION_YES : SDK_EVENTS.PLAYBOOK_CONFIRMATION_NO;\n hostInstance.emit(SDK_EVENTS.BEFORE_VIEW_INIT, eachPlaybookStep, { event: eventName, data : {btn}});\n }\n\n hideDropdownTemplate(cls : any, hostInstace : any){\n let sharedowns = hostInstace?.chatEle?.getElementsByClassName(cls); \n let i;\n for (i = 0; i < sharedowns.length; i++) {\n let openSharedown = sharedowns[i];\n if (openSharedown.classList.contains('show')) {\n openSharedown.classList.remove('show');\n }\n }\n }\n\n prepareFeedbackForSummary(feedbackData : any){\n let renderResponse: any = {\n type: 'summary',\n positionId: feedbackData?.positionId,\n summaryId: feedbackData?.summaryId,\n traceId: feedbackData?.traceId,\n submitForm: feedbackData?.feedback ? true : false,\n feedback: feedbackData?.feedback ? feedbackData.feedback : '',\n feedbackDetails: feedbackData?.feedbackDetails?.length ? feedbackData.feedbackDetails : [],\n comment: feedbackData?.comment ? feedbackData?.comment : '',\n sourceMsgId: '',\n query: '',\n suggestionType: 'summary',\n interactionType : 'assist', \n }\n return renderResponse;\n }\n\n prepareFeedbackForSuggestions(suggestionType: any, suggestion: any, feedbackData: any = {}) {\n let renderResponse: any = {\n type: RenderResponseType.FEEDBACK,\n positionId: suggestion.positionId,\n submitForm: feedbackData?.feedback ? true : false,\n feedback: feedbackData?.feedback ? feedbackData.feedback : '',\n feedbackDetails: feedbackData?.feedbackDetails?.length ? feedbackData.feedbackDetails : [],\n comment: feedbackData?.comment ? feedbackData?.comment : '',\n sourceMsgId: suggestion.sourceMsgId || '',\n query: suggestion.userInput,\n suggestionType: suggestionType,\n subType: suggestion.subType || ''\n }\n\n if (suggestionType == 'answer') {\n renderResponse.isFromGeneratedSummary = suggestion.isFromGeneratedSummary;\n renderResponse.answerType = suggestion.templateType;\n renderResponse.title = suggestion.title;\n renderResponse.answer = suggestion.sendCopyText || '';\n renderResponse.interactionType = suggestion.intType;\n renderResponse.sources = suggestion.sources;\n if (suggestion.internalInfo?.length > 0) {\n renderResponse.answer += suggestion.internalInfo.join(' ');\n }\n } else if (suggestionType == 'article' || suggestionType == 'file') {\n renderResponse.title = suggestion.title;\n renderResponse.answer = suggestion.content || '';\n renderResponse.interactionType = suggestion.intType;\n } else if (suggestionType == 'faqs') {\n let answer = '';\n if (Array.isArray(suggestion?.answer)) {\n suggestion?.answer?.forEach((element: any) => {\n answer += element.ans;\n });\n }\n renderResponse.title = suggestion.question;\n renderResponse.answer = answer;\n }\n return renderResponse\n }\n\n prepareFeedbackDataForDialog(automation: any, feedbackData: any = {}, isHistory: boolean = false) {\n let renderResponse: any = {\n type: RenderResponseType.FEEDBACK,\n uuid: automation.uuid,\n dialogName: automation.dialogName,\n positionId: automation.dialogId,\n submitForm: feedbackData?.feedback ? true : false,\n feedback: feedbackData?.feedback ? feedbackData.feedback : '',\n feedbackDetails: feedbackData?.feedbackDetails?.length ? feedbackData.feedbackDetails : [],\n comment: feedbackData?.comment ? feedbackData?.comment : '',\n sourceMsgId: automation.sourceMsgId || '',\n isHistory: isHistory\n }\n return renderResponse;\n }\n\n //Assist and mybot tab starts\n\n makeOverrideEvent (hostInstance : any, flag : boolean) {\n if (this.OverRideMode && this.proactiveMode && !this.manualAssistOverrideMode) {\n hostInstance.handleOverrideMode(flag, null);\n }\n }\n\n getTypeOfResponse (data: any){ \n \n let responseType = '';\n if (!this.isAutomationOnGoing && data.suggestions && Object.keys(data.suggestions)?.length > 0) {\n responseType = RenderResponseType.SUGGESTIONS;\n } else if(this.isAutomationOnGoing && data.ambiguityList && Object.keys(data.ambiguityList)?.length > 0){\n responseType = RenderResponseType.SUGGESTIONS;\n } else if (!data.sendMenuRequest) {\n if (this.isAutomationOnGoing && data.buttons?.length > 0 && (this.currentAutomationId && !data.positionId || (data.positionId == this.currentAutomationId))) {\n responseType = RenderResponseType.AUTOMATION_NODE;\n } else if (!this.isAutomationOnGoing && data.buttons?.length > 0) {\n responseType = RenderResponseType.SMALLTALK;\n }\n else if(this.isAutomationOnGoing && data.suggestions && Object.keys(data.suggestions)?.length > 0){\n responseType = RenderResponseType.SUGGESTIONS;\n }\n else{\n responseType = RenderResponseType.AUTOMATION_NODE;\n }\n } else if (data?.buttons?.length > 0) {\n responseType = RenderResponseType.WELCOME_MSG;\n }\n return responseType;\n }\n\n getMybotTypeOfResponse (data : any){\n let responseType = '';\n if (this.isMyBotAutomationOnGoing && data.buttons?.length > 0 && (this.currentMybotAutomationId && !data.positionId || (data.positionId == this.currentMybotAutomationId))) {\n responseType = RenderResponseType.AUTOMATION_NODE;\n } else if (!this.isAutomationOnGoing && data.buttons?.length > 0) {\n responseType = RenderResponseType.SMALLTALK;\n }\n return responseType;\n }\n\n getCustomTabTypeOfResponse (data : any){\n let responseType = '';\n if(this.isCustomTabAutomationOnGoing && data.buttons?.length > 0 && (this.currentCustomTabAutomationId && !data.positionId || (data.positionId == this.currentCustomTabAutomationId))){\n responseType = RenderResponseType.AUTOMATION_NODE;\n } else if (!this.isCustomTabAutomationOnGoing && data.buttons?.length > 0) {\n responseType = RenderResponseType.SMALLTALK;\n }\n return responseType;\n }\n\n sendRunClickEvent(hostInstance : any, dialog : any, intent = false) {\n this.prepareSendCopyEventForRun(hostInstance, dialog, intent);\n \n let connectionDetails: any = Object.assign({}, this.connectionDetails);\n connectionDetails.value = dialog.intentName;\n if (dialog.intentName && intent) {\n connectionDetails.intentName = dialog.intentName;\n }\n connectionDetails.positionId = dialog.positionId;\n connectionDetails.entities = this.entitiesValueArray\n connectionDetails.childBotId = dialog.childBotId;\n connectionDetails.childBotName = dialog.childBotName;\n connectionDetails.sourceMsgId = dialog.sourceMsgId || '';\n \n if(dialog.taskRefId){\n connectionDetails.taskRefId = dialog.taskRefId\n }\n if(dialog.dialogId){\n connectionDetails.dialogId = dialog.dialogId\n }\n if (dialog.userInput) {\n connectionDetails.userInput = dialog.userInput;\n }\n if (dialog.traits && dialog.traits?.length > 0){\n connectionDetails.traits = dialog.traits\n }\n if(dialog.intentName === ProjConstants.DISCARD_ALL && !intent){\n connectionDetails.isDiscard = true;\n }\n\n if(dialog.agentRunButton){\n connectionDetails.isSearch = false;\n let myBotRequestParams = hostInstance.prepareAgentAssistAgentRequestParams(connectionDetails);\n hostInstance.socketConnection.emitEvents(EVENTS.agent_assist_agent_request, myBotRequestParams);\n this.mybotEntitiestValueArray = [];\n }else if(dialog.customTabInterrupt){\n let assistRequestParams = hostInstance.prepareAgentAssistCustomRequestParams(connectionDetails);\n hostInstance.socketConnection.emitEvents(EVENTS.agent_assist_custom_request, assistRequestParams);\n this.customTabEntitiesValueArray = [];\n }\n else{\n let assistRequestParams = hostInstance.prepareAgentAssistRequestParams(connectionDetails);\n hostInstance.socketConnection.emitEvents(EVENTS.agent_assist_request, assistRequestParams);\n this.entitiesValueArray = [];\n }\n \n }\n\n prepareSendCopyEventForRun(hostInstance : any, dialog : any, intent = false) {\n let payloadForBE: any = Object.assign({}, this.connectionDetails);\n if (dialog.intentName && intent) {\n payloadForBE.intentName = dialog.intentName;\n payloadForBE.title = dialog.intentName;\n }\n payloadForBE.type = 'dialog';\n payloadForBE.input = dialog.userInput;\n payloadForBE.sessionId = (dialog.suggestionFrom === ProjConstants.ASSIST || dialog.suggestionFrom === ProjConstants.CUSTOM) ? this.assistTabSessionId : this.myBotTabSessionId;\n payloadForBE = this.addSourceMsgIdToRequestParams(dialog, payloadForBE);\n hostInstance.socketConnection.emitEvents(EVENTS.agent_send_or_copy, payloadForBE);\n }\n\n\n matchDialogIdfromMenuResponse(dialog : any){ \n let taskRefId = dialog.taskRefId;\n if(taskRefId && this.menuResponse && this.menuResponse?.length > 0){\n let response : any = this.menuResponse?.find((obj : any) => obj.taskRefId === taskRefId);\n if(response && response.dialogId){\n dialog.dialogId = response.dialogId;\n }\n }\n return dialog.dialogId;\n }\n\n addEventListenerForDialogSuggestion(menuHTML:any ,suggestion:any , hostInstance: any){\n hostInstance.eventManager?.addEventListener(\n `${this.classConstants.DIALOG_RUN_BTN}${suggestion.positionId}`,\n 'click',\n (e: any) => {\n if(suggestion?.customTabInterrupt){\n suggestion.customTabInterrupt = false;\n }\n suggestion.agentRunButton = false;\n hostInstance.emit(SDK_EVENTS.BEFORE_VIEW_INIT, '', { event: SDK_EVENTS.RUN_CLICK_EVENT, data: suggestion });\n hostInstance.emit(INTERNAL_EVENTS.RUN_CLICK_EVENT, JSON.parse(JSON.stringify(suggestion)));\n },\n menuHTML\n );\n\n hostInstance.eventManager?.addEventListener(\n `${this.classConstants.DIALOG_AGENT_RUN_BTN}${suggestion.positionId}`,\n 'click',\n (e: any) => {\n e.stopPropagation(); // Stop event from bubbling\n suggestion.agentRunButton = true;\n hostInstance.emit(SDK_EVENTS.BEFORE_VIEW_INIT, '', { event: SDK_EVENTS.RUN_CLICK_EVENT, data: suggestion });\n hostInstance.emit(INTERNAL_EVENTS.RUN_CLICK_EVENT, JSON.parse(JSON.stringify(suggestion)));\n },\n menuHTML\n );\n }\n\n\n handleDialogClickEvents (menuHTML : any, dialogs : any, hostInstance : any) {\n\n dialogs?.forEach((suggestion : any, index : number) => {\n\n const suggestionsHtmlList = menuHTML?.querySelectorAll(`${this.classConstants.DIALOG_RUN_BTN}${suggestion.positionId}`);\n const agentRunButtonHtmlList = menuHTML?.querySelectorAll(`${this.classConstants.DIALOG_AGENT_RUN_BTN}${suggestion.positionId}`);\n\n if(suggestionsHtmlList && suggestionsHtmlList?.length > 1){\n suggestionsHtmlList?.forEach((itemList: any) => {\n itemList?.addEventListener('click', (e: any) => {\n e.stopPropagation(); // Stop event from bubbling\n e.stopImmediatePropagation(); // Stop event from bubbling\n\n if(e.currentTarget === e.target || e.currentTarget.contains(e.target)){\n if(suggestion?.customTabInterrupt){\n suggestion.customTabInterrupt = false;\n }\n suggestion.agentRunButton = false;\n hostInstance.emit(SDK_EVENTS.BEFORE_VIEW_INIT, '', { event: SDK_EVENTS.RUN_CLICK_EVENT, data: suggestion });\n hostInstance.emit(INTERNAL_EVENTS.RUN_CLICK_EVENT, JSON.parse(JSON.stringify(suggestion)));\n }\n });\n });\n }\n\n if(agentRunButtonHtmlList && agentRunButtonHtmlList?.length > 1){\n agentRunButtonHtmlList?.forEach((itemList: any) => {\n itemList?.addEventListener('click', (e: any) => {\n e.stopPropagation(); // Stop event from bubbling\n e.stopImmediatePropagation(); // Stop event from bubbling\n\n if(e.currentTarget === e.target || e.currentTarget.contains(e.target)){\n suggestion.agentRunButton = true;\n hostInstance.emit(SDK_EVENTS.BEFORE_VIEW_INIT, '', { event: SDK_EVENTS.RUN_CLICK_EVENT, data: suggestion });\n hostInstance.emit(INTERNAL_EVENTS.RUN_CLICK_EVENT, JSON.parse(JSON.stringify(suggestion)));\n }\n });\n });\n }\n\n if(agentRunButtonHtmlList?.length > 1 || suggestionsHtmlList?.length > 1){\n return;\n }\n\n this.addEventListenerForDialogSuggestion(menuHTML, suggestion, hostInstance);\n });\n\n hostInstance.eventManager?.addEventListener(\n `${this.classConstants.WRONG_SUGGESTION_BTN}`,\n 'click',\n (e: any) => {\n const footerTag = hostInstance.chatEle.querySelector(this.classConstants.FOOTER);\n hostInstance.openSearchTab(footerTag, true);\n },\n menuHTML\n );\n }\n\n // removeRunwithAgentInputs(menuHTML: any) {\n // // Get all currently open dropdowns\n // const openDropdowns = menuHTML?.querySelectorAll('.aa-elipse-dropdown.show');\n // // Close only the other dropdowns, not the one that was just clicked\n // openDropdowns?.forEach((element: any) => {\n // // Check if this dropdown was the one that triggered the event\n // if (!element.contains(event?.target as Node)) {\n // element.classList.remove('show');\n // }\n // });\n // }\n\n\n runDialogForAssistOrMybot(hostInstance: any, dialog: any, runInitent = false) {\n if (!runInitent) {\n this.sendRunClickEvent(hostInstance, dialog, true);\n }\n if (dialog.agentRunButton) {\n this.updateLocalStorageForMybot(hostInstance, dialog, true);\n } else if(dialog.customTabInterrupt){\n this.updateLocalStorageForCustomTab(hostInstance, dialog, true);\n } else {\n this.updateLocalStorageForAssist(hostInstance, dialog, true);\n }\n }\n\n updateLocalStorageForAssist(hostInstance : any, dialog : any, flag : boolean) {\n this.isAutomationOnGoing = flag;\n this.updateAssistDialogTemplate(hostInstance, dialog, flag); \n }\n\n updateLocalStorageForMybot(hostInstance : any, dialog : any, flag : boolean) {\n this.isMyBotAutomationOnGoing = flag;\n this.updateMybotDialogTemplate(hostInstance, dialog, flag); \n }\n\n updateLocalStorageForCustomTab(hostInstance : any, dialog : any, flag : boolean) {\n this.isCustomTabAutomationOnGoing = flag;\n this.updateCustomTabDialogTemplate(hostInstance, dialog, flag); \n }\n\n updateCustomTabDialogTemplate(hostInstance : any, dialog : any, flag : boolean){\n let termianteBtn = hostInstance.chatEle?.querySelector(`${this.classConstants.CUSTOM_TAB_TERMINATE_BTN }`);\n let listviewBtn = hostInstance.chatEle?.querySelector(`${this.classConstants.CUSTOM_TAB_LISTVIEW_BTN}`);\n let customTabHeaderDialogWrapper = hostInstance?.chatEle?.querySelector(`${this.classConstants.CUSTOM_TAB_HEADER_DIALOG_WRAPPER}`);\n let customTabHeaderDialogName = customTabHeaderDialogWrapper?.querySelector(`${this.classConstants.CUSTOM_TAB_HEADER_DIALOG_NAME}`);\n if(flag){\n termianteBtn?.classList?.remove(this.classConstants.HIDE_ELEMENT);\n listviewBtn?.classList?.remove(this.classConstants.HIDE_ELEMENT);\n termianteBtn?.removeAttribute(this.classConstants.DISABLED);\n listviewBtn?.removeAttribute(this.classConstants.DISABLED);\n customTabHeaderDialogWrapper?.classList?.remove(this.classConstants.HIDE_ELEMENT);\n if(customTabHeaderDialogName){\n customTabHeaderDialogName.innerText = dialog.intentName;\n }\n }\n else{ \n termianteBtn?.setAttribute(this.classConstants.DISABLED, true);\n listviewBtn?.setAttribute(this.classConstants.DISABLED, true);\n customTabHeaderDialogWrapper?.classList?.add(this.classConstants.HIDE_ELEMENT);\n }\n\n \n }\n\n updateMybotDialogTemplate(hostInstance : any, dialog : any, flag : boolean){ \n let termianteBtn = hostInstance.chatEle?.querySelector(`${this.classConstants.MYBOT_TERMINATE_BUTTON}`);\n let listviewBtn = hostInstance.chatEle?.querySelector(`${this.classConstants.MYBOT_LISTVIEW_BUTTON}`);\n let mybotHeaderDialogWrapper = hostInstance?.chatEle?.querySelector(`${this.classConstants.MYBOT_HEADER_DIALOG_WRAPPER}`);\n let mybotHeaderDialogName = mybotHeaderDialogWrapper?.querySelector(`${this.classConstants.MYBOT_HEADER_DIALOG_NAME}`);\n if(flag){\n termianteBtn?.classList?.remove(this.classConstants.HIDE_ELEMENT);\n listviewBtn?.classList?.remove(this.classConstants.HIDE_ELEMENT);\n mybotHeaderDialogWrapper?.classList?.remove(this.classConstants.HIDE_ELEMENT);\n mybotHeaderDialogName.innerText = dialog.intentName;\n }else{ \n this.manualAssistOverrideMode = false;\n termianteBtn?.classList?.add(this.classConstants.HIDE_ELEMENT);\n listviewBtn?.classList?.add(this.classConstants.HIDE_ELEMENT);\n mybotHeaderDialogWrapper?.classList?.add(this.classConstants.HIDE_ELEMENT);\n }\n }\n\n updateAssistDialogTemplate(hostInstance : any, dialog : any, flag : boolean){ \n let termianteBtn = hostInstance.chatEle?.querySelector(`${this.classConstants.ASSIST_TERMINATE_BUTTON}`);\n let listviewBtn = hostInstance.chatEle?.querySelector(`${this.classConstants.ASSIST_LISTVIEW_BUTTON}`);\n let assistHeaderDialogWrapper = hostInstance?.chatEle?.querySelector(`${this.classConstants.ASSIST_HEADER_DIALOG_WRAPPER}`);\n let assistHeaderDialogName = assistHeaderDialogWrapper?.querySelector(`${this.classConstants.ASSIST_HEADER_DIALOG_NAME}`);\n if(flag){\n termianteBtn?.removeAttribute(this.classConstants.DISABLED);\n listviewBtn?.removeAttribute(this.classConstants.DISABLED);\n assistHeaderDialogWrapper?.classList?.remove(this.classConstants.HIDE_ELEMENT);\n assistHeaderDialogName.innerText = dialog.intentName;\n }else{ \n this.manualAssistOverrideMode = false;\n termianteBtn?.setAttribute(this.classConstants.DISABLED, true);\n listviewBtn?.setAttribute(this.classConstants.DISABLED, true);\n assistHeaderDialogWrapper?.classList?.add(this.classConstants.HIDE_ELEMENT);\n }\n }\n\n prepareDialogObjForAssistHistory(data : any){\n let dialogObj = this.prepareDialogObjForInitDialog(data);\n return dialogObj;\n }\n\n prepareDialogObjForMybotHistory(data : any){\n let dialogObj = this.prepareDialogObjForInitDialog(data);\n dialogObj.suggestionFrom = ProjConstants.MYBOT;\n return dialogObj;\n }\n\n prepareDialogObjForCustomTabHistory(data : any){\n let dialogObj = this.prepareDialogObjForInitDialog(data);\n dialogObj.suggestionFrom = ProjConstants.CUSTOM;\n return dialogObj;\n }\n\n prepareDialogObjForInitDialog (data : any) {\n let initDialogrenderResp : any = {\n intentName: data.intentName,\n childBotId: data.childBotId,\n childBotName: data.childBotName,\n entities: data.entities || [],\n userInput: data.userInput,\n sourceMsgId: data.sourceMsgId || '',\n positionId : data.positionId,\n traits : data.traits || [],\n dialogId : data.dialogId ? data.dialogId : this.matchDialogIdfromMenuResponse(data),\n suggestionFrom : ProjConstants.ASSIST\n }\n return initDialogrenderResp;\n }\n\n prepareSuggestionResponse (data: any, responseId: string, suggestionIndex : number) {\n const searchResponse = this.formatSearchResponse(data, false, suggestionIndex, ProjConstants.ASSIST);\n let assistDataNode = {\n data: data,\n type: RenderResponseType.SUGGESTIONS,\n uuid: responseId,\n searchResponse: searchResponse\n }\n return assistDataNode;\n }\n\n prepareAutomationReponse (res : any, responseId : string, tab : string) {\n if(tab === ProjConstants.ASSIST){\n this.currentAutomationId = res.positionId;\n }else if(tab === ProjConstants.MYBOT){\n this.currentMybotAutomationId = res.positionId;\n }else{\n this.currentCustomTabAutomationId = res.positionId;\n }\n let renderResponse = {\n data: res,\n type: RenderResponseType.AUTOMATION,\n uuid: responseId,\n dialogId: res.positionId,\n dialogName: res.intentName,\n sourceMsgId : res.sourceMsgId || \"\",\n automationNodes : [this.prepareDialogStartNodeResponse(res.positionId)]\n }\n return renderResponse;\n }\n\n prepareAutomationNodeResponse (data: any, responseId : string) {\n let renderResponse: any = {\n data: data,\n type: RenderResponseType.AUTOMATION_NODE,\n uuid: responseId\n }\n return renderResponse;\n }\n\n prepareDialogStartNodeResponse (dialogId : string){\n let renderResponse : any = {\n type : RenderResponseType.AUTOMATION_START,\n uuid : KoreGenerateuuidPipe(),\n dialogId : dialogId\n }\n return renderResponse\n } \n\n prepareDialogEndNodeResponse (dialogId : string) {\n let renderResponse : any = {\n type : RenderResponseType.AUTOMATION_END,\n uuid : KoreGenerateuuidPipe(),\n dialogId : dialogId\n }\n return renderResponse;\n }\n\n prepareEntityNodeResponse(response : any, dataObj : any, hostInstance : any) {\n let templateRender = response?.templateResult?.parsedPayload ? true : false;\n dataObj.nodeType = RenderResponseType.ENTITY_NODE;\n dataObj.value = response?.buttons[0]?.value;\n dataObj.sendData = response?.buttons[0]?.value;\n dataObj.template = this.getTemplateHtml(templateRender, response.templateResult, hostInstance);\n dataObj.templateRender = templateRender;\n if(dataObj?.attachments){\n dataObj.userInput = response?.userInput;\n }\n return dataObj;\n }\n\n prepareMsgNodeResponse (response : any, dataObj : any, hostInstance : any) {\n let templateRender = response?.templateResult?.parsedPayload ? true : false;\n dataObj.nodeType = RenderResponseType.MSG_NODE;\n dataObj.value = response?.buttons[0]?.value;\n dataObj.sendData = response?.buttons[0]?.value;\n dataObj.template = this.getTemplateHtml(templateRender, response.templateResult, hostInstance);\n dataObj.templateRender = templateRender;\n return dataObj;\n }\n\n prepareSmallTalkResponse (data: any, responseId : string) {\n let renderResponse: any = {\n data: data,\n type: RenderResponseType.SMALLTALK,\n uuid: responseId\n }\n return renderResponse;\n }\n\n prepareWelcomeMsgResponse (data: any, responseId: string) {\n let assistDataNode: any = {\n data: data,\n type: RenderResponseType.WELCOME_MSG,\n uuid : responseId,\n hideOverrideDiv : true,\n toggleOverride : false,\n nodeType : RenderResponseType.MSG_NODE\n }\n return assistDataNode;\n }\n\n toggleInterruptPopup = (hostInstance : any, flag : boolean, currentDialogName : string) => {\n let interruptPopup = hostInstance?.chatEle?.querySelector?.(`${this.classConstants.INTERRUPT_POPUP}`);\n if(flag){\n interruptPopup.querySelector(`${this.classConstants.INTERRUPT_CURRENT_DIALOG}`).innerText = currentDialogName;\n interruptPopup.classList?.remove(ClassMapConstanst.HIDE_ELEMENT);\n }else{\n interruptPopup.classList?.add(ClassMapConstanst.HIDE_ELEMENT);\n }\n }\n\n toggleTerminatePopup = (hostInstance : any, flag : boolean) => {\n let terminatePopup = hostInstance?.chatEle?.querySelector?.(`${this.classConstants.TERMIANTE_POPUP}`);\n if(flag){\n terminatePopup.classList?.remove(ClassMapConstanst.HIDE_ELEMENT);\n }else{\n terminatePopup.classList?.add(ClassMapConstanst.HIDE_ELEMENT);\n }\n }\n\n toggleInterruptDropdown (tab : string, hostInstance : any) {\n let dialogWrapper = this.classConstants.ASSIST_INTERRUPT_WRAPPER;\n let interruptCount = this.classConstants.ASSIST_INTERRUPT_COUNT;\n hostInstance.localStorageService.setInterruptDialogList(this.interruptDialogList);\n let interruptDialogWrapper = hostInstance?.chatEle?.querySelector(`${dialogWrapper}`)\n if(this.interruptDialogList?.length > 0){\n interruptDialogWrapper?.classList?.remove(this.classConstants.HIDE_ELEMENT);\n }else{\n interruptDialogWrapper?.classList?.add(this.classConstants.HIDE_ELEMENT);\n }\n let interruptCountEle = interruptDialogWrapper?.querySelector(`${interruptCount}`);\n if(interruptCountEle){\n interruptCountEle.innerText = this.interruptDialogList?.length;\n }\n }\n\n toggleMybotInterruptDropdown(tab : string, hostInstance : any){ \n let dialogWrapper = this.classConstants.MYBOT_INTERRUPT_WRAPPER;\n let interruptCount = this.classConstants.MYBOT_INTERRUPT_COUNT;\n hostInstance.localStorageService.setInterruptDialogList(this.mybotInterruptDialogList);\n let interruptDialogWrapper = hostInstance?.chatEle?.querySelector(`${dialogWrapper}`)\n if(this.mybotInterruptDialogList?.length > 0){\n interruptDialogWrapper?.classList?.remove(this.classConstants.HIDE_ELEMENT);\n }else{\n interruptDialogWrapper?.classList?.add(this.classConstants.HIDE_ELEMENT);\n }\n let interruptCountEle = interruptDialogWrapper?.querySelector(`${interruptCount}`);\n if(interruptCountEle){\n interruptCountEle.innerText = this.mybotInterruptDialogList?.length;\n }\n }\n\n toggleCustomTabInterruptDropdown(tab : string, hostInstance : any){\n let dialogWrapper = this.classConstants.CUSTOM_TAB_INTERRUPT_WRAPPER;\n let interruptCount = this.classConstants.CUSTOM_TAB_INTERRUPT_COUNT;\n hostInstance.localStorageService.setInterruptDialogList(this.customInterruptDialogList);\n let interruptDialogWrapper = hostInstance?.chatEle?.querySelector(`${dialogWrapper}`)\n if(this.customInterruptDialogList?.length > 0){\n interruptDialogWrapper?.classList?.remove(this.classConstants.HIDE_ELEMENT);\n }else{\n interruptDialogWrapper?.classList?.add(this.classConstants.HIDE_ELEMENT);\n }\n let interruptCountEle = interruptDialogWrapper?.querySelector(`${interruptCount}`);\n if(interruptCountEle){\n interruptCountEle.innerText = this.customInterruptDialogList?.length;\n }\n }\n\n handleEmptyLine(answer : any, quotflag : boolean = false, type : string = '', hostInstace? : any) {\n let eleanswer = '';\n if (typeof answer === 'string') {\n eleanswer = (type === 'faq') ? answer.replace(/(\\r\\n|\\n|\\r)/gm, \"<br>\") : answer; \n eleanswer = this.replaceLtGt(eleanswer, quotflag)\n eleanswer = this.aaHelpers.convertMDtoHTML(eleanswer, \"bot\", eleanswer)\n // if (quotflag) {\n // eleanswer = this.replaceLtGt(eleanswer, quotflag)\n // } \n return this.sanitizeHTML(eleanswer.replace(new RegExp(\"(<br />)+$\"),''));\n \n }\n return this.sanitizeHTML(eleanswer);\n }\n\n replaceLtGt(htmlString : any, quotflag : boolean) {\n let newHtmlStr;\n newHtmlStr = htmlString.replaceAll(\"&lt;\", \"<\");\n newHtmlStr = newHtmlStr.replaceAll(\"&gt;\", \">\");\n if (quotflag) {\n newHtmlStr = newHtmlStr.replaceAll('\"', \"&quot;\");\n }\n return newHtmlStr;\n }\n\n // Welocome message logic starts\n handleWelcomeMsgResponse(\n welcomeMsgResponse: any,\n template: HTMLElement,\n hostInstance: any\n ) {\n welcomeMsgResponse.buttons.forEach((message: any, index: number) => {\n const welcomeMsgObj = this.createWelcomeMessageObject(message.value, index);\n this.insertActionTemplate(welcomeMsgObj, index, template, hostInstance);\n });\n }\n\n handleNodeResponse(\n automationNodeObj: any,\n template: HTMLElement,\n hostInstance: any\n ) {\n this.insertActionTemplate(automationNodeObj, null, template, hostInstance);\n }\n\n insertActionTemplate(\n nodeObj: any,\n index: number | null,\n template: HTMLElement,\n hostInstance: any\n ) {\n const eachActionTemplate: any = getHTML(\n handleSendCopyButtonsForNodes,\n { node: nodeObj, hostInstance: hostInstance, rootServiceInstance: hostInstance.rootService },\n hostInstance\n );\n if (eachActionTemplate && eachActionTemplate?.nodeName !== '#text') {\n const parentNode = this.getParentNode(template, index);\n if(parentNode && this.isHistory && typeof this.prefsOpacity === 'number'){\n template.style.opacity = String(this.prefsOpacity/100)\n }\n if (parentNode) {\n parentNode.insertBefore(eachActionTemplate, parentNode.firstChild);\n this.handleActionTemplateClickEventsForNodes(\n eachActionTemplate,\n nodeObj,\n template,\n hostInstance\n );\n }\n }\n }\n\n getParentNode(template: HTMLElement, index: number | null): HTMLElement | null {\n if (index !== null) {\n return template?.querySelector(`${this.classConstants.WELCOME_MSG_NODE}${index}`);\n }\n return template?.querySelector(this.classConstants.NODE_BODY);\n }\n\n createWelcomeMessageObject(value: string, index: number) {\n return {\n sendData: value,\n index: index,\n type: RenderResponseType.WELCOME_MSG,\n };\n }\n\n handleActionTemplateClickEventsForNodes(\n eachActionTemplate: HTMLElement,\n automationNodeObj: any,\n template: HTMLElement,\n hostInstance: any\n ) {\n const sendTextTemplate: any = template.querySelector?.(`${this.classConstants.NODE_SEND_TEXT}`);\n\n this.addClickEventListenerForActionNodes(\n eachActionTemplate,\n this.classConstants.SUGGESTION_SEND_BTN,\n () => this.handleSendOrCopyClickEvent(ProjConstants.SEND, sendTextTemplate, automationNodeObj, template, hostInstance),\n hostInstance\n );\n\n this.addClickEventListenerForActionNodes(\n eachActionTemplate,\n this.classConstants.SUGGESTION_COPY_BTN,\n () => this.handleSendOrCopyClickEvent(ProjConstants.COPY, sendTextTemplate, automationNodeObj, template, hostInstance),\n hostInstance\n );\n }\n\n addClickEventListenerForActionNodes(\n template: HTMLElement,\n eventSelector: string,\n callback: () => void,\n hostInstance: any\n ) {\n hostInstance.eventManager?.addEventListener(eventSelector, 'click', callback, template);\n }\n // Welocome message logic ends\n\n //Send copy click events handling logic starts\n handleSendOrCopyClickEvent(\n type: string,\n sendTextTemplate: HTMLElement | null,\n automationNodeObj: any,\n template: HTMLElement,\n hostInstance: any\n ) {\n if(typeof this.prefsOpacity === 'number'){\n template.style.opacity = String((this.prefsOpacity/100))\n }\n this.toggleSendTextTemplate(sendTextTemplate, type);\n this.handleSendCopyButtonForNodes(type, automationNodeObj.sendData, automationNodeObj, template, hostInstance);\n automationNodeObj.skipMsg = true;\n\n if (automationNodeObj.type === RenderResponseType.WELCOME_MSG) {\n this.removeWelcomeMessages(automationNodeObj, hostInstance);\n }\n\n if(type === ProjConstants.SEND){\n hostInstance.emit(SDK_EVENTS.BEFORE_VIEW_INIT, template, { event: SDK_EVENTS.AGENT_SEND_MESSAGE, data: automationNodeObj, template : automationNodeObj?.data?.template ? automationNodeObj?.data?.template : false, msg : automationNodeObj?.sendData });\n }else{\n hostInstance.emit(SDK_EVENTS.BEFORE_VIEW_INIT, template, { event: SDK_EVENTS.AGENT_COPY_MESSAGE, data: automationNodeObj, template : automationNodeObj?.data?.template ? automationNodeObj?.data?.template : false, msg : automationNodeObj?.sendData });\n }\n }\n\n toggleSendTextTemplate(sendTextTemplate: HTMLElement | null, type: string) {\n if (!sendTextTemplate) return;\n sendTextTemplate.classList.remove(this.classConstants.HIDE_ELEMENT);\n sendTextTemplate.innerText = type === ProjConstants.SEND ? 'Sent' : 'Copied';\n }\n\n removeWelcomeMessages(automationNodeObj: any, hostInstance: any) {\n const welcomeMsgNodes: NodeListOf<Element> | undefined =\n hostInstance?.chatEle?.querySelectorAll(`${this.classConstants.WELCOME_NODES}`);\n\n welcomeMsgNodes?.forEach((node) => {\n if (!node.classList.contains(`aa-welcome-msg-${automationNodeObj.index}`)) {\n node.parentNode?.removeChild(node);\n }\n });\n }\n\n handleSendCopyButtonForNodes(\n actionType: string,\n sendData: any,\n automation: any,\n template: HTMLElement,\n hostInstance: any\n ) {\n let node : any = template.querySelector?.(`${this.classConstants.NODE_BODY}`)?.querySelector('p');\n sendData = this.prepareSendText(sendData, automation.templateRender, node);\n const message = this.createMessagePayload(actionType, sendData);\n this.messageNodeSendorCopyEvent(actionType, sendData, automation, hostInstance);\n }\n\n prepareSendText(sendData : any, templateRender : any, askCustNode : any){\n if(!templateRender){\n let format = this?.aaSettings?.agentActions?.sharingFormat ? this?.aaSettings?.agentActions?.sharingFormat : 'plainString';\n if(format == 'plainString'){\n sendData = this.extractTextFromElement(askCustNode);\n }\n }\n return sendData;\n }\n\n createMessagePayload(actionType: string, sendData: any) {\n return {\n method: actionType === ProjConstants.SEND ? 'send' : 'copy',\n name: actionType === ProjConstants.SEND ? ProjConstants.SENDMSG : ProjConstants.COPYMSG,\n conversationId: this.connectionDetails.conversationId,\n payload: sendData,\n };\n }\n\n messageNodeSendorCopyEvent(\n eventName: string,\n payload: any,\n automation: any,\n hostInstance: any\n ) {\n const payloadForBE = this.buildBackendPayload(eventName, payload, automation);\n hostInstance.socketConnection.emitEvents(EVENTS.agent_send_or_copy, payloadForBE);\n }\n\n buildBackendPayload(\n eventName: string,\n payload: any,\n automation: any\n ): any {\n const basePayload : any = {\n usedType: eventName === ProjConstants.SEND ? ProjConstants.SEND_METHOD : ProjConstants.COPY_METHOD,\n name: eventName === ProjConstants.SEND ? ProjConstants.SENDMSG : ProjConstants.COPYMSG,\n conversationId: this.connectionDetails.conversationId,\n payload: payload,\n botId: this.connectionDetails.botId,\n positionId: automation?.dialogId,\n type: 'sentence',\n sessionId: this.getSessionId(),\n skipMsg: automation?.data?.errorMsg || automation.skipMsg || false,\n };\n\n if (automation?.data?.isPrompt && automation?.data?.componentType) {\n basePayload.componentType = automation.data.componentType;\n } else if (!automation?.data?.isPrompt) {\n basePayload.partialMessage = true;\n }\n\n return this.addSourceMsgIdToRequestParams(automation, basePayload);\n }\n\n getSessionId(): string {\n return this.activeTab === Tabs.MYBOT ? this.myBotTabSessionId : this.assistTabSessionId;\n }\n //Send copy click events handling logic ends\n\n // Feedback logic for suggestions and automations starts\n renderFeedbackForEachSuggestion (suggestionListTemplate : any, suggestionList : any, feedbackType: string, hostInstance : any) {\n if(this.aaSettings?.feedback[feedbackType]?.isEnabled){\n suggestionListTemplate?.forEach((suggestionTemplate : any, index : number) => {\n let positionId = suggestionList[index]?.positionId;\n let feedbackWrapperTemplate : any = getHTML(FeedbackWrapperInsideDialog, {dialog : {dialogId : positionId}}, hostInstance);\n hostInstance.emit(SDK_EVENTS.BEFORE_VIEW_INIT, feedbackWrapperTemplate, {\n event: SDK_EVENTS.FEEDBACK_WRAPER_TEMPLATE,\n data : {dialog : {dialogId : positionId}}\n });\n suggestionTemplate.append(feedbackWrapperTemplate); \n this.handleFeedbackType({dialogId : positionId, feedbackData : suggestionList[index]?.feedbackData}, suggestionTemplate, feedbackType, hostInstance);\n });\n }\n }\n \n handleFeedbackType(automation: any, dialogWrapper: any, feedbackType : string, hostInstance: any) {\n let dislikeList : any = [];\n \n let language = this.connectionDetails?.interactiveLanguage || 'en';\n language = (FeebackConst.DEFAULT_FEEDBACK_LANGUAGE_LIST.indexOf(language.toLowerCase()) != -1) ? language.toLowerCase() : 'en';\n const suggestionList = (this.aaSettings?.feedback[feedbackType]?.negativeKeyWords?.[language]) ?\n this.aaSettings?.feedback[feedbackType]?.negativeKeyWords?.[language] : this.defaultFeedbackSettings[feedbackType]?.negativeKeyWords?.[language];\n suggestionList?.forEach((element: any) => {\n if (element.isEnabled) {\n dislikeList.push(element.key);\n }\n });\n const showComments = this.aaSettings?.feedback[feedbackType]?.acceptComment; \n\n const feedbackHelpfulSection = dialogWrapper?.querySelector?.(`${this.classConstants.FEEDBACK_HELPFUL_SECTION}${automation.dialogId}`);\n const feedbackWrapper = dialogWrapper?.querySelector?.(`${this.classConstants.FEEDBACK_WRAPPER}${automation.dialogId}`);\n \n const helpSection = getHTML(HelpfulFeedbackSection, { feedbackData : automation?.feedbackData, dialogId: automation.dialogId, suggestionList: dislikeList, showComments, feedbackType }, hostInstance);\n\n const negativeFeedbackSection = getHTML(NegativeFeedbackSection, { feedbackData : automation?.feedbackData, suggestionList: dislikeList, dialogId: automation.dialogId, hostInstance, feedbackType, showComments }, hostInstance);\n \n hostInstance.emit(SDK_EVENTS.BEFORE_VIEW_INIT, helpSection, {\n event: SDK_EVENTS.HELPFUL_FEEDBACK_TEMPLATE,\n data : { dialogId: automation.dialogId }\n });\n\n hostInstance.emit(SDK_EVENTS.BEFORE_VIEW_INIT, negativeFeedbackSection, {\n event: SDK_EVENTS.NEGATIVE_FEEDBACK_TEMPLATE,\n data : { suggestionList: dislikeList, dialogId: automation.dialogId }\n });\n\n helpSection && feedbackHelpfulSection?.append(helpSection);\n negativeFeedbackSection && feedbackWrapper?.append(negativeFeedbackSection);\n \n this.handleFeebackClickEvents(helpSection, negativeFeedbackSection, feedbackWrapper, dislikeList, showComments, automation, hostInstance);\n }\n // Feedback logic for suggestions and automations ends\n\n //Feedback click events start\n handleFeebackClickEvents(\n helpSection: any,\n negativeFeedbackSection: any,\n feedbackWrapper: any,\n dislikeList: any,\n showComments : boolean,\n automation: any,\n hostInstance: any\n ) {\n // Helper to add event listeners\n const addEvent = (selector: string, event: string, handler: (e: any) => void, element: any) => {\n hostInstance.eventManager?.addEventListener(selector, event, handler, element);\n };\n \n // Helper to toggle classes\n const toggleClass = (element: any, className: string, action: 'add' | 'remove' | 'toggle') => {\n element.classList?.[action](className);\n };\n \n //check active button\n const activeButton = (btn : any) => {\n return btn?.classList?.contains(this.classConstants.FEEDBACK_ACTIVE_BUTTON);\n }\n\n // Handle positive feedback\n const handlePositiveFeedback = () => {\n const positiveButton = helpSection.querySelector(`${this.classConstants.FEEDBACK_POSITIVE}`);\n const negativeButton = helpSection.querySelector(`${this.classConstants.FEEDBACK_NEGATIVE}`);\n const negativeArrowBtn = helpSection.querySelector(`${this.classConstants.FEEDBACK_NEGATIVE_DROPDOWN_BTN}`);\n const feedbackNegativeBox = feedbackWrapper.querySelector(`${this.classConstants.FEEDBACK_NEGATIVE_BOX}`);\n\n if(!activeButton(positiveButton)){\n toggleClass(positiveButton, this.classConstants.FEEDBACK_ACTIVE_BUTTON, 'add');\n toggleClass(negativeButton, this.classConstants.FEEDBACK_ACTIVE_BUTTON, 'remove');\n toggleClass(negativeArrowBtn, this.classConstants.HIDE_ELEMENT, 'add');\n toggleClass(negativeArrowBtn, this.classConstants.FEEDBACK_ROTATE_BTN, 'remove');\n toggleClass(feedbackNegativeBox, this.classConstants.HIDE_ELEMENT, 'add');\n this.prepareAndMakeFeedbackRequest(automation, negativeFeedbackSection, commentBox, helpSection, 'like', dislikeList, showComments, hostInstance);\n }\n \n };\n \n // Handle negative feedback\n const handleNegativeFeedback = () => {\n const positiveButton = helpSection.querySelector(`${this.classConstants.FEEDBACK_POSITIVE}`);\n const negativeButton = helpSection.querySelector(`${this.classConstants.FEEDBACK_NEGATIVE}`);\n const negativeArrowBtn = helpSection.querySelector(`${this.classConstants.FEEDBACK_NEGATIVE_DROPDOWN_BTN}`);\n const feedbackNegativeBox = feedbackWrapper.querySelector(`${this.classConstants.FEEDBACK_NEGATIVE_BOX}`);\n\n if(showComments || dislikeList?.length > 0){\n toggleClass(negativeArrowBtn, this.classConstants.HIDE_ELEMENT, 'remove');\n toggleClass(feedbackNegativeBox, this.classConstants.HIDE_ELEMENT, 'remove');\n toggleClass(negativeArrowBtn, this.classConstants.FEEDBACK_ROTATE_BTN, 'add');\n }\n\n if(!activeButton(negativeButton)){\n toggleClass(negativeButton, this.classConstants.FEEDBACK_ACTIVE_BUTTON, 'add');\n toggleClass(positiveButton, this.classConstants.FEEDBACK_ACTIVE_BUTTON, 'remove');\n this.prepareAndMakeFeedbackRequest(automation, negativeFeedbackSection, commentBox, helpSection, 'dislike', dislikeList, showComments, hostInstance);\n }\n };\n \n // Handle dropdown toggle\n const handleDropdownToggle = () => {\n\n const feedbackNegativeBox = feedbackWrapper.querySelector(`${this.classConstants.FEEDBACK_NEGATIVE_BOX}`);\n const negativeArrowBtn = helpSection.querySelector(`${this.classConstants.FEEDBACK_NEGATIVE_DROPDOWN_BTN}`);\n \n toggleClass(feedbackNegativeBox, this.classConstants.HIDE_ELEMENT, 'toggle');\n toggleClass(negativeArrowBtn, this.classConstants.FEEDBACK_ROTATE_BTN, 'toggle');\n };\n \n // Attach event listeners\n addEvent(this.classConstants.FEEDBACK_POSITIVE, 'click', handlePositiveFeedback, helpSection);\n addEvent(this.classConstants.FEEDBACK_NEGATIVE, 'click', handleNegativeFeedback, helpSection);\n addEvent(this.classConstants.FEEDBACK_NEGATIVE_DROPDOWN_BTN, 'click', handleDropdownToggle, helpSection);\n \n // Handle suggestions click\n dislikeList.forEach((suggestion: any, index: number) => {\n const suggestionClassName = `${this.classConstants.FEEDBACK_SUGGESTION}${automation.dialogId}-${index}`;\n const suggestionEle = negativeFeedbackSection.querySelector(`${suggestionClassName}`);\n \n addEvent(suggestionClassName, 'click', () => {\n toggleClass(suggestionEle, this.classConstants.FEEDBACK_NEGATIVE_SUGGESTION_SELECTION, 'toggle');\n }, negativeFeedbackSection);\n });\n \n // Handle submit feedback\n addEvent(this.classConstants.FEEDBACK_SUBMIT, 'click', () => {\n const feedbackNegativeBox = feedbackWrapper.querySelector(`${this.classConstants.FEEDBACK_NEGATIVE_BOX}`);\n const negativeArrowBtn = helpSection.querySelector(`${this.classConstants.FEEDBACK_NEGATIVE_DROPDOWN_BTN}`);\n\n toggleClass(feedbackNegativeBox, this.classConstants.HIDE_ELEMENT, 'add');\n toggleClass(negativeArrowBtn, this.classConstants.FEEDBACK_ROTATE_BTN, 'remove');\n this.prepareAndMakeFeedbackRequest(automation, negativeFeedbackSection, commentBox, helpSection, 'submit', dislikeList, showComments, hostInstance);\n }, negativeFeedbackSection);\n \n // Handle comment box input\n const commentBox = negativeFeedbackSection.querySelector(`${this.classConstants.FEEDBACK_COMMENT}${automation.dialogId}`);\n addEvent(`${this.classConstants.FEEDBACK_COMMENT}${automation.dialogId}`, 'input', (e: any) => {\n const commentLength = commentBox?.value?.length || 0;\n negativeFeedbackSection.querySelector(`${this.classConstants.FEEDBACK_COMMENT_COUNT}`).innerText = `${commentLength}/150`;\n }, negativeFeedbackSection);\n }\n\n handleWidgetFeedbackClickEvents(widgetFeedbackSection: any, type: string, hostInstance: any) {\n const addEvent = (selector: string, event: string, handler: (e: any) => void, element: any) => {\n hostInstance.eventManager?.addEventListener(selector, event, handler, element);\n };\n\n const toggleClassInSubmitButton = (type = 'positive') => {\n\n if(type === 'negative' && !this.widgetFeedbackData.selectedSuggestions?.length && !this.widgetFeedbackData.comment?.length){\n hostInstance?.chatEle?.querySelector?.(this.classConstants.FEEDBACK_SUBMIT_BTN)?.setAttribute('disabled', true);\n return;\n }\n\n\n if(hostInstance?.chatEle?.querySelector?.(this.classConstants.FEEDBACK_SUBMIT_BTN)?.hasAttribute('disabled')){\n hostInstance?.chatEle?.querySelector?.(this.classConstants.FEEDBACK_SUBMIT_BTN)?.removeAttribute('disabled');\n }\n }\n\n const handlePositiveFeedbackSection = (widgetFeedbackSection: any) => {\n\n const positiveSuggestionsBtns = widgetFeedbackSection?.querySelectorAll(this.classConstants.POSITIVE_FEEDBACK);\n const positiveCommentBox = widgetFeedbackSection?.querySelector(this.classConstants.POSITIVE_FEEDBACK_COMMENT);\n\n\n const widgetFeedbackData = this.widgetFeedbackData;\n\n widgetFeedbackData.selectedSuggestions = [];\n\n if(!widgetFeedbackData.type){\n widgetFeedbackData.type = 'positive';\n }\n\n positiveSuggestionsBtns?.forEach((suggestionBtn: any) => {\n addEvent(`.${suggestionBtn.classList[1]}`, 'click', (e:any) => {\n\n if(widgetFeedbackData.type === 'negative'){\n handleAlternateFeedbackSection(widgetFeedbackSection, 'negative', widgetFeedbackData);\n }\n\n toggleClassInSubmitButton();\n\n if(e && e.target?.value?.length > 0){\n if(widgetFeedbackData.selectedSuggestions.includes(e.target.value)){\n widgetFeedbackData.selectedSuggestions = widgetFeedbackData.selectedSuggestions.filter((suggestion: string) => suggestion !== e.target.value);\n suggestionBtn.classList.remove('active-improve-btn');\n }else{\n suggestionBtn.classList.add('active-improve-btn');\n widgetFeedbackData.selectedSuggestions.push(e.target.value);\n }\n }\n\n }, widgetFeedbackSection);\n });\n\n addEvent(`.${positiveCommentBox.classList[2]}`, 'input', (e:any) => {\n \n if(widgetFeedbackData.type === 'negative'){\n handleAlternateFeedbackSection(widgetFeedbackSection, 'negative', widgetFeedbackData);\n }\n\n toggleClassInSubmitButton();\n widgetFeedbackData.comment = e.target?.value || '';\n const positiveCommentBoxCount = hostInstance?.chatEle?.querySelector(`${this.classConstants.FEEDBACK_COMMENT_COUNT}-${widgetFeedbackData.type}`);\n if(positiveCommentBoxCount){\n positiveCommentBoxCount.innerText = `${e.target?.value?.length || 0}/150`;\n }\n\n }, widgetFeedbackSection);\n }\n\n const handleNegativeFeedbackSection = (widgetFeedbackSection: any) => {\n const negativeSuggestionsBtns = widgetFeedbackSection?.querySelectorAll(this.classConstants.NEGATIVE_FEEDBACK);\n const negativeCommentBox = widgetFeedbackSection?.querySelector(this.classConstants.NEGATIVE_FEEDBACK_COMMENT);\n\n\n const widgetFeedbackData = this.widgetFeedbackData;\n\n widgetFeedbackData.selectedSuggestions = [];\n\n if(!widgetFeedbackData.type){\n widgetFeedbackData.type = 'negative';\n }\n\n \n negativeSuggestionsBtns?.forEach((suggestionBtn: any) => {\n addEvent(`.${suggestionBtn.classList[1]}`, 'click', (e:any) => {\n\n if(widgetFeedbackData.type === 'positive'){\n handleAlternateFeedbackSection(widgetFeedbackSection, 'positive', widgetFeedbackData);\n }\n\n if(e && e.target?.value?.length > 0){\n if(widgetFeedbackData.selectedSuggestions.includes(e.target.value)){\n widgetFeedbackData.selectedSuggestions = widgetFeedbackData.selectedSuggestions.filter((suggestion: string) => suggestion !== e.target.value);\n suggestionBtn.classList.remove('active-improve-btn');\n }else{\n suggestionBtn.classList.add('active-improve-btn');\n widgetFeedbackData.selectedSuggestions.push(e.target.value);\n }\n }\n\n toggleClassInSubmitButton('negative');\n\n }, widgetFeedbackSection);\n });\n\n addEvent(`.${negativeCommentBox?.classList[2]}`, 'input', (e:any) => {\n if(widgetFeedbackData.type === 'positive'){\n handleAlternateFeedbackSection(widgetFeedbackSection, 'positive', widgetFeedbackData);\n }\n\n widgetFeedbackData.comment = e.target?.value || '';\n toggleClassInSubmitButton('negative');\n const negativeCommentBoxCount = hostInstance?.chatEle?.querySelector(`${this.classConstants.FEEDBACK_COMMENT_COUNT}-${widgetFeedbackData.type}`);\n if(negativeCommentBoxCount){\n negativeCommentBoxCount.innerText = `${e.target?.value?.length || 0}/150`;\n }\n }, widgetFeedbackSection);\n }\n\n\n const handleAlternateFeedbackSection = (widgetFeedbackSection: any, type: string, widgetFeedbackData: any = this.widgetFeedbackData) => {\n\n if(type === 'negative'){\n const negativeSuggestionsBtns = hostInstance?.chatEle?.querySelectorAll(this.classConstants.NEGATIVE_FEEDBACK);\n const negativeCommentBox = hostInstance?.chatEle?.querySelector(this.classConstants.NEGATIVE_FEEDBACK_COMMENT);\n negativeSuggestionsBtns?.forEach((suggestionBtn: any) => {\n suggestionBtn.classList.remove('active-improve-btn');\n });\n negativeCommentBox.value = '';\n widgetFeedbackData.selectedSuggestions = [];\n widgetFeedbackData.comment = '';\n widgetFeedbackData.type = 'positive';\n }else{\n const positiveSuggestionsBtns = hostInstance?.chatEle?.querySelectorAll(this.classConstants.POSITIVE_FEEDBACK);\n const positiveCommentBox = hostInstance?.chatEle?.querySelector(this.classConstants.POSITIVE_FEEDBACK_COMMENT);\n positiveSuggestionsBtns?.forEach((suggestionBtn: any) => {\n suggestionBtn.classList.remove('active-improve-btn');\n });\n positiveCommentBox.value = '';\n widgetFeedbackData.selectedSuggestions = [];\n widgetFeedbackData.comment = '';\n widgetFeedbackData.type = 'negative';\n }\n\n }\n\n \n \n if(type === 'positive'){\n handlePositiveFeedbackSection(widgetFeedbackSection);\n }else{\n handleNegativeFeedbackSection(widgetFeedbackSection);\n }\n }\n\n\n prepareAndMakeWidgetFeedbackRequest(hostInstance: any) {\n const { botId, conversationId, channel } = this.connectionDetails;\n\n const feedbackType = this.widgetFeedbackData.type && (this.widgetFeedbackData.type === 'positive' ? 'like' : 'dislike') || null;\n const feedbackSuggestions = this.widgetFeedbackData.selectedSuggestions;\n const feedbackComment = this.widgetFeedbackData.comment;\n\n if(!this.widgetFeedbackData.positionId){\n this.widgetFeedbackData.positionId = RandomuuidPipe('positionId') as string;\n }\n\n const feedbackDetails = {\n botId,\n conversationId,\n event: EVENTS.agent_usage_feedback,\n positionId: this.widgetFeedbackData.positionId,\n experience: channel,\n feedback: feedbackType ,\n feedbackDetails: feedbackSuggestions,\n comment: feedbackComment || '',\n type: 'widget',\n interactionType: 'widget'\n }\n\n hostInstance.socketConnection.emitEvents(EVENTS.agent_usage_feedback, feedbackDetails);\n }\n\n prepareAndMakeFeedbackRequest(\n automation: any, \n negativeFeedbackSection: HTMLElement, \n commentBox: HTMLInputElement, \n helpSection: HTMLElement,\n type : string,\n dislikeList : any,\n showComments : boolean,\n hostInstance : any\n ) {\n \n let feedbackData = automation?.feedbackData;\n const { botId, conversationId, channel } = this.connectionDetails;\n const feedbackList: string[] = [];\n \n const activeSuggestionBtnList = negativeFeedbackSection.querySelectorAll(\n `.${this.classConstants.FEEDBACK_NEGATIVE_SUGGESTION_SELECTION}`\n );\n \n activeSuggestionBtnList.forEach((suggestionEle: Element) => {\n const inputElement = suggestionEle as HTMLInputElement;\n if (inputElement?.value) feedbackList.push(inputElement.value);\n });\n \n const activeFeedback = (helpSection\n ?.querySelector(`.${this.classConstants.FEEDBACK_ACTIVE_BUTTON}`) as HTMLInputElement)\n ?.value;\n \n const feedbackDetails: any = {\n botId,\n conversationId,\n event: EVENTS.agent_usage_feedback,\n positionId: feedbackData.positionId,\n experience: channel,\n feedback: activeFeedback || null,\n feedbackDetails: feedbackList,\n comment: commentBox?.value || '',\n };\n \n if (feedbackData.suggestionType) {\n const {\n sourceMsgId, suggestionType, query, subType, title, answer,\n sources, isFromGeneratedSummary, answerType, interactionType\n } = feedbackData;\n \n Object.assign(feedbackDetails, {\n sourceMsgId,\n type: suggestionType,\n query,\n subType,\n title,\n answer,\n interactionType\n });\n \n if (suggestionType === 'answer') {\n Object.assign(feedbackDetails, {\n sources,\n isFromGeneratedSummary,\n answerType\n });\n }\n } else {\n feedbackDetails.taskId = feedbackData.uuid;\n feedbackDetails.taskName = feedbackData.dialogName;\n feedbackDetails.type = 'dialog';\n feedbackDetails.interactionType = this.activeTab == Tabs.ASSIST ? 'assist' : this.activeTab == Tabs.CUSTOM_TAB ? 'custom' : 'mybot'\n }\n\n if(feedbackData?.suggestionType === 'summary'){\n feedbackDetails.summaryId = feedbackData?.summaryId;\n feedbackDetails.traceId = feedbackData?.traceId;\n }\n this.isUpdateFeedBackDetailsFlag = type != 'dislike' || (dislikeList?.length === 0 && !showComments) ? true : false;\n hostInstance.socketConnection.emitEvents(EVENTS.agent_usage_feedback, feedbackDetails);\n }\n //Feedback click events end\n\n //smalltalk template code starts \n addSmallTalkTemplate (smallTalkObj: any, activeTab: string, hostInstance : any) {\n const mybotWrapper = hostInstance?.chatEle?.querySelector(`${this.classConstants.MYBOT_SECTION}`);\n const assistWrapper = hostInstance?.chatEle?.querySelector(`${this.classConstants.ASSIST_SECTION}`);\n const customWrapper = hostInstance?.chatEle?.querySelector(`${this.classConstants.CUSTOM_TAB_SECTION}`);\n const template = this.getSmallTalkTemplate(smallTalkObj, activeTab, hostInstance);\n \n if (template && assistWrapper && activeTab === ProjConstants.ASSIST) {\n assistWrapper.append(template);\n } else if (template && mybotWrapper && activeTab === ProjConstants.MYBOT) {\n mybotWrapper.append(template);\n }\n else if (template && customWrapper && activeTab === ProjConstants.CUSTOM) {\n customWrapper.append(template);\n }\n };\n \n getSmallTalkTemplate (smallTalkObj: any, activeTab: string, hostInstance : any): HTMLElement | null {\n let template: any = null;\n \n switch (smallTalkObj.nodeType) {\n case RenderResponseType.ENTITY_NODE:\n let manualMode = this.manualAssistOverrideMode || !this.proactiveMode;\n let payload : any = { entityNode: smallTalkObj, activeTab, manualMode, hostInstance }\n template = getHTML(AskCustomer, payload , hostInstance);\n hostInstance.emit(SDK_EVENTS.BEFORE_VIEW_INIT, template, {\n event: SDK_EVENTS.ASK_CUSTOMER_TEMPLATE,\n data : payload\n });\n this.appendTemplate(template,smallTalkObj);\n this.handleNodeResponse(smallTalkObj, template, hostInstance);\n this.handleEntityNodeClickEvents(template, smallTalkObj, activeTab, hostInstance);\n break;\n \n case RenderResponseType.MSG_NODE:\n template = getHTML(TellCustomer, { msgNode: smallTalkObj, hostInstance }, hostInstance);\n hostInstance.emit(SDK_EVENTS.BEFORE_VIEW_INIT, template, {\n event: SDK_EVENTS.TELL_CUSTOMER_TEMPLATE,\n data : smallTalkObj\n });\n this.appendTemplate(template,smallTalkObj);\n this.handleNodeResponse(smallTalkObj, template, hostInstance);\n break;\n }\n \n return template;\n };\n //smallTalk template code ends\n\n // Automation template code starts\n addDialogTemplate(automationNodeObj: any, automation: any, activeTab: string, hostInstance: any) {\n const dialogWrapper = this.getDialogWrapper(hostInstance, automation.dialogId);\n let template: any = null;\n\n switch (automationNodeObj.type) {\n case RenderResponseType.AUTOMATION_START:\n template = this.getAutomationStartTemplate(automation, hostInstance);\n hostInstance.emit(SDK_EVENTS.BEFORE_VIEW_INIT, template, {\n event: SDK_EVENTS.DIALOG_START_TEMPLATE,\n data : automation\n });\n break;\n \n case RenderResponseType.AUTOMATION_END:\n this.appendFeedbackWrapper(dialogWrapper, automation, hostInstance);\n template = this.getAutomationEndTemplate(automation, hostInstance);\n hostInstance.emit(SDK_EVENTS.BEFORE_VIEW_INIT, template, {\n event: SDK_EVENTS.DIALOG_END_TEMPLATE,\n data : automation\n });\n break;\n \n case RenderResponseType.AUTOMATION_NODE:\n template = this.getAutomationNodeTemplate(automation, automationNodeObj, activeTab, hostInstance);\n break;\n \n case RenderResponseType.FEEDBACK:\n if(this.aaSettings?.feedback[FeebackConst.DIALOGS]?.isEnabled){\n automation.feedbackData = automationNodeObj;\n this.handleFeedbackType(automation, dialogWrapper, FeebackConst.DIALOGS, hostInstance);\n }\n return;\n \n default:\n return;\n }\n \n this.appendAutomationEachNodeTemplate(dialogWrapper, template, automationNodeObj, automation.dialogId);\n }\n \n getDialogWrapper(hostInstance: any, dialogId: string) {\n return hostInstance?.chatEle?.querySelector?.(`${this.classConstants.DIALOG_WRAPPER}${dialogId}`);\n }\n \n getAutomationStartTemplate(automation: any, hostInstance: any) {\n return getHTML(DialogStart, { dialog: automation }, hostInstance);\n }\n \n getAutomationEndTemplate(automation: any, hostInstance: any) {\n let feedbackEnable = this.aaSettings?.feedback[FeebackConst.DIALOGS]?.isEnabled ? true : false;\n return getHTML(DialogEnd, { dialog: automation, feedbackEnable }, hostInstance);\n }\n \n appendFeedbackWrapper(dialogWrapper: any, automation: any, hostInstance: any) {\n const feedbackWrapperTemplate = getHTML(FeedbackWrapperInsideDialog, { dialog: automation }, hostInstance);\n hostInstance.emit(SDK_EVENTS.BEFORE_VIEW_INIT, feedbackWrapperTemplate, {\n event: SDK_EVENTS.FEEDBACK_WRAPER_TEMPLATE,\n data : automation\n });\n dialogWrapper?.append(feedbackWrapperTemplate);\n }\n \n getAutomationNodeTemplate(automation : any, automationNodeObj: any, activeTab: string, hostInstance: any) {\n\n let template: any = null;\n \n switch (automationNodeObj.nodeType) {\n case RenderResponseType.ENTITY_NODE:\n let manualMode = this.manualAssistOverrideMode || !this.proactiveMode; \n let payload : any = { entityNode: automationNodeObj, activeTab, manualMode, hostInstance }\n if(automationNodeObj.data.entityType != 'attachment'){\n template = getHTML(AskCustomer, payload, hostInstance);\n }else{\n automationNodeObj.fileObj = {};\n if(activeTab == ProjConstants.ASSIST){\n template = getHTML(AttachmentAskCustomer, payload, hostInstance);\n }else{\n template = getHTML(MybotAttachmentAskCustomer, payload, hostInstance);\n }\n }\n hostInstance.emit(SDK_EVENTS.BEFORE_VIEW_INIT, template, {\n event: SDK_EVENTS.ASK_CUSTOMER_TEMPLATE,\n data : payload\n });\n this.appendTemplate(template,automationNodeObj);\n this.templateRenderCheck(template, automationNodeObj, hostInstance);\n this.handleEntityNodeClickEvents(template, automationNodeObj, activeTab, hostInstance);\n break;\n \n case RenderResponseType.MSG_NODE:\n template = getHTML(TellCustomer, { msgNode: automationNodeObj, hostInstance }, hostInstance);\n hostInstance.emit(SDK_EVENTS.BEFORE_VIEW_INIT, template, {\n event: SDK_EVENTS.TELL_CUSTOMER_TEMPLATE,\n data : automationNodeObj\n });\n this.appendTemplate(template,automationNodeObj);\n this.templateRenderCheck(template, automationNodeObj, hostInstance);\n break;\n }\n \n return template;\n }\n\n checkForGreyOut(template: any, automationNodeObj: any, hostInstance: any) {\n if(this.isHistory && typeof this.prefsOpacity === 'number'){\n template.style.opacity = (this.prefsOpacity/100).toString();\n }\n }\n\n templateRenderCheck(template: any, automationNodeObj: any, hostInstance: any) {\n if(automationNodeObj?.templateRender !== true){\n this.handleNodeResponse(automationNodeObj, template, hostInstance);\n }\n else{\n this.checkForGreyOut(template, automationNodeObj, hostInstance);\n } \n }\n \n appendTemplate = (template : any, entityNode : any) => {\n this.appendTemplateToContainer(template, entityNode);\n }\n\n appendTemplateToContainer(template: HTMLElement | null, entityNode: any): void {\n try {\n // Validate inputs\n if (!template) {\n return;\n }\n \n if (!entityNode?.templateRender) {\n return;\n }\n \n if (!entityNode?.template) {\n return;\n }\n \n // Find container element\n const container = template.querySelector('.chat-container');\n if (!container) {\n console.error('Chat container element not found');\n return;\n }\n \n // Safely append template\n try {\n let timeStamp = entityNode?.template?.querySelector?.(`.top-info`);\n if(timeStamp){\n timeStamp.remove();\n }\n container.append(entityNode.template);\n } catch (appendError) {\n console.error('Failed to append template to container:', appendError);\n // Optionally implement fallback behavior here\n }\n \n } catch (error) {\n console.error('Error in appendTemplateToContainer:', error);\n // Optionally implement error recovery or notification system\n }\n }\n\n handleErrorPrompts(automation : any, automationNodeObj : any, hostInstance : any) {\n let prevEnityNode : any = null;\n for(let i = automation?.automationNodes?.length - 1; i >= 0; i--){ \n prevEnityNode = automation.automationNodes[i]?.data?.isPrompt ? automation.automationNodes[i] : null;\n if(prevEnityNode){\n break;\n }\n } \n if(prevEnityNode){ \n let lastAutomationNodes = hostInstance?.chatEle?.querySelectorAll(`${this.classConstants.ASK_CUST_NODE}${prevEnityNode.uuid}`);\n lastAutomationNodes.forEach((lastAutomationEle : any) => { \n let entityBody = lastAutomationEle?.querySelector(`${this.classConstants.ENTITY_MSG_BODY}`);\n if(prevEnityNode?.data?.isPrompt && automationNodeObj?.data?.isErrorPrompt){\n automationNodeObj.errorCount = (prevEnityNode.errorCount || 0) + 1;\n entityBody?.remove(); \n }else{\n // remove error count from dialog\n let automationEle = hostInstance?.chatEle?.querySelector(`${this.classConstants.DIALOG_WRAPPER}${automation.dialogId}`);\n let errorMsgs = automationEle?.querySelectorAll(`.wrong-res-info`);\n errorMsgs?.forEach((ele : any) => {\n ele.remove();\n });\n\n // remove error count from listview\n let listView = hostInstance?.chatEle?.querySelector(`${this.classConstants.LIST_VIEW_POPUP}`);\n let listViewErrorMsgs = listView?.querySelectorAll(`.wrong-res-info`);\n listViewErrorMsgs?.forEach((ele : any) => {\n ele.remove();\n });\n\n entityBody?.classList?.remove('error-no-reponse');\n }\n\n if(lastAutomationEle && typeof this.prefsOpacity === 'number'){\n lastAutomationEle.style.opacity = (this.prefsOpacity/100).toString();\n }\n });\n // let lastAutomationEle = hostInstance?.chatEle?.querySelector(`${this.classConstants.ASK_CUST_NODE}${prevEnityNode.uuid}`); \n }\n }\n \n appendAutomationEachNodeTemplate(dialogWrapper: any, template: any, automationNodeObj: any, dialogId: string) {\n const feedbackWrapper = dialogWrapper?.querySelector?.(`${this.classConstants.FEEDBACK_WRAPPER}${dialogId}`);\n const feedbackHelpfulSection = dialogWrapper?.querySelector?.(`${this.classConstants.FEEDBACK_HELPFUL_SECTION}${dialogId}`);\n \n if (template && automationNodeObj.type !== RenderResponseType.AUTOMATION_END) {\n dialogWrapper?.append(template);\n } else if (template) {\n feedbackHelpfulSection?.append(template);\n }\n }\n // Automation template code ends\n \n\n //Entity node click events starts\n handleEntityNodeClickEvents(askCustTemplate: any, automationNodeObj: any, currentTab : string, hostInstance: any) {\n\n const inputEle = askCustTemplate.querySelector(`${this.classConstants.ENTITY_INPUT}`);\n const overrideBtn = askCustTemplate.querySelector(`${this.classConstants.ENTITY_OVERRIDE_BTN}`);\n const removeBtn = askCustTemplate.querySelector(`${this.classConstants.ENTITY_REMOVE_BTN}`);\n const checkBtn = askCustTemplate.querySelector(`${this.classConstants.ENTITY_CHECK_BTN}`);\n const agentIcon = askCustTemplate.querySelector(`${this.classConstants.ENTITY_AGENT_ICON}`);\n const errorTemplate = askCustTemplate?.querySelector(`${this.classConstants.ENTITY_ERROR_OVERRIDE_TEXT}`);\n const chooseFileBtn = askCustTemplate?.querySelector(`${this.classConstants.ENTITY_CHOOSE_FILE}`);\n\n if(!inputEle){\n return;\n }\n\n if(currentTab === ProjConstants.CUSTOM || currentTab === ProjConstants.MYBOT){\n agentIcon?.classList?.remove(this.classConstants.HIDE_ELEMENT);\n }\n \n if ((!this.proactiveMode || this.manualAssistOverrideMode) || (currentTab === ProjConstants.MYBOT || currentTab === ProjConstants.CUSTOM)) {\n inputEle.readOnly = false;\n inputEle.focus();\n }\n \n const onOverrideClick = (e: any) => this.handleOverrideClick(e, errorTemplate, inputEle, overrideBtn, askCustTemplate, removeBtn, checkBtn, automationNodeObj, hostInstance);\n const onRemoveClick = (e: any) => this.handleRemoveClick(e, errorTemplate, inputEle, overrideBtn, removeBtn, checkBtn, askCustTemplate, automationNodeObj, hostInstance);\n const onCheckClick = (e: any) => this.handleCheckClick(e, inputEle, automationNodeObj, askCustTemplate, hostInstance);\n const onInputKeydown = (e: any) => this.handleInputKeydown(e, inputEle, automationNodeObj, askCustTemplate, currentTab, hostInstance);\n const onInputChange = (e: any) => this.handleInputChange(e, inputEle, checkBtn);\n const onChooseFile = (e : any) => this.handleChooseFile(e, inputEle, askCustTemplate, automationNodeObj, currentTab,hostInstance);\n const onViewClick = (e : any) => this.handleViewClick(e, inputEle, askCustTemplate, automationNodeObj, hostInstance);\n \n hostInstance.eventManager?.addEventListener(`${this.classConstants.ENTITY_OVERRIDE_BTN}`, 'click', onOverrideClick, askCustTemplate);\n hostInstance.eventManager?.addEventListener(`${this.classConstants.ENTITY_REMOVE_BTN}`, 'click', onRemoveClick, askCustTemplate);\n hostInstance.eventManager?.addEventListener(`${this.classConstants.ENTITY_CHECK_BTN}`, 'click', onCheckClick, askCustTemplate);\n hostInstance.eventManager?.addEventListener(`${this.classConstants.ENTITY_INPUT}`, 'keydown', onInputKeydown, askCustTemplate);\n hostInstance.eventManager?.addEventListener(`${this.classConstants.ENTITY_INPUT}`, 'input', onInputChange, askCustTemplate);\n if(automationNodeObj?.data?.entityType === 'attachment'){\n hostInstance.eventManager?.addEventListener(`${this.classConstants.ENTITY_INPUT}`, 'change', onChooseFile, askCustTemplate);\n hostInstance.eventManager?.addEventListener(`${this.classConstants.ENTITY_ATTACHMENT_VIEW}`, 'click', onViewClick, askCustTemplate);\n\n }\n }\n\n handleViewClick(e : any, inputEle : any, askCustTemplate : any, automationNodeObj : any, hostIns : any){\n let viewModal = hostIns?.chatEle?.querySelector(`${this.classConstants.ENTITY_ATTACHMENT_VIEW_MODAL}`);\n viewModal?.classList?.remove(this.classConstants.HIDE_ELEMENT);\n let image = viewModal?.querySelector(`${this.classConstants.ENTITY_ATTACHMENT_IMAGE}`);\n image.src = automationNodeObj?.attachments[0]?.url?.fileUrl;\n }\n\n handleChooseFile(e : any, inputEle : any, askCustTemplate : any, automationNodeObj : any, currentTab : string, hostInstance : any){\n automationNodeObj.fileObj = e.target.files[0];\n let chooseFileText = askCustTemplate?.querySelector(`${this.classConstants.ENTITY_CHOOSE_FILE}`);\n if(automationNodeObj?.fileObj?.name){\n chooseFileText.innerText = automationNodeObj?.fileObj?.name;\n }\n if((currentTab === ProjConstants.MYBOT || !this.proactiveMode || this.manualAssistOverrideMode) && automationNodeObj?.fileObj?.name){\n this.fileUploadCall(automationNodeObj, hostInstance);\n }\n }\n\n handleOverrideClick(e: any, errorTemplate: any, inputEle: any, overrideBtn : any, askCustTemplate: any, removeBtn: any, checkBtn: any, automationNodeObj: any, hostInstance: any) {\n if(inputEle){\n inputEle.readOnly = false;\n inputEle.placeholder = '';\n inputEle.focus();\n removeBtn?.classList?.remove(this.classConstants.HIDE_ELEMENT);\n checkBtn?.classList?.remove(this.classConstants.HIDE_ELEMENT);\n overrideBtn?.classList?.add(this.classConstants.HIDE_ELEMENT);\n if (!this.OverRideMode) {\n hostInstance.handleOverrideMode(true, automationNodeObj.dialogId);\n }\n errorTemplate.innerText = '| Type to continue';\n if(!automationNodeObj?.errorCount){\n askCustTemplate?.querySelector(`${this.classConstants.ENTITY_OVERRIDE_MSG}`)?.classList?.remove(this.classConstants.HIDE_ELEMENT);\n }\n if(automationNodeObj?.data?.entityType === 'attachment'){\n this.toggleAttachmentDiv(automationNodeObj, askCustTemplate, inputEle, true);\n }\n\n }\n \n }\n \n handleRemoveClick(e: any, errorTemplate : any, inputEle: any, overrideBtn: any, removeBtn: any, checkBtn: any, askCustTemplate : any, automationNodeObj : any, hostInstance : any) {\n inputEle.readOnly = true;\n overrideBtn?.classList?.remove(this.classConstants.HIDE_ELEMENT);\n removeBtn?.classList?.add(this.classConstants.HIDE_ELEMENT);\n checkBtn?.classList?.add(this.classConstants.HIDE_ELEMENT);\n inputEle.placeholder = 'waiting...';\n inputEle.value = '';\n errorTemplate.innerText = '';\n if(!automationNodeObj?.errorCount){\n askCustTemplate?.querySelector(`${this.classConstants.ENTITY_OVERRIDE_MSG}`)?.classList?.add(this.classConstants.HIDE_ELEMENT)\n }\n if(automationNodeObj?.data?.entityType === 'attachment'){\n this.toggleAttachmentDiv(automationNodeObj, askCustTemplate,inputEle, false);\n this.addorRemoveAttachemntFileError(automationNodeObj,hostInstance, true)\n }\n }\n \n handleCheckClick(e: any, inputEle: any, automationNodeObj: any, askCustTemplate: any, hostInstance: any,) {\n if(automationNodeObj?.data?.entityType === 'attachment'){\n if(automationNodeObj.fileObj && automationNodeObj.fileObj.name) {\n this.fileUploadCall(automationNodeObj, hostInstance);\n }\n }else {\n const sanitizedValue = this.sanitizeHTML(inputEle.value);\n inputEle.value = sanitizedValue;\n if(inputEle?.value){\n this.assistInputValue(inputEle.value, automationNodeObj, hostInstance);\n this.showAgentIcon(automationNodeObj, hostInstance);\n }\n }\n }\n \n handleInputKeydown(e: any, inputEle: any, automationNodeObj: any, askCustTemplate: any, currentTab : string, hostInstance: any,) {\n const sanitizedValue = this.sanitizeHTML(inputEle?.value);\n inputEle.value = sanitizedValue;\n if (e.key === 'Enter' && inputEle?.value) {\n if(currentTab === ProjConstants.ASSIST){\n this.assistInputValue(inputEle.value, automationNodeObj, hostInstance);\n this.showAgentIcon(automationNodeObj, hostInstance);\n }else if(currentTab === ProjConstants.MYBOT){\n this.mybotInputValue(inputEle.value, automationNodeObj, hostInstance);\n inputEle.setAttribute('data-inputValue', inputEle?.value);\n const scrollDims = safeScrollDimensions(inputEle);\n if(scrollDims.scrollHeight >= 60){\n this.hideMoreTextInEntityNode(inputEle, hostInstance, scrollDims.scrollHeight);\n }\n this.showAgentIcon(automationNodeObj, hostInstance);\n }else if(currentTab === ProjConstants.CUSTOM){\n this.customInputValue(inputEle.value, automationNodeObj, hostInstance);\n inputEle.setAttribute('data-inputValue', inputEle?.value);\n const scrollDims = safeScrollDimensions(inputEle);\n if(scrollDims.scrollHeight >= 60){\n this.hideMoreTextInEntityNode(inputEle, hostInstance, scrollDims.scrollHeight);\n }\n this.showAgentIcon(automationNodeObj, hostInstance);\n }\n }\n }\n\n\n customInputValue(inputValue: any, automationNodeObj: any, hostInstance: any) {\n this.addLoaderForAutomation(automationNodeObj, hostInstance);\n let connectionDetails = Object.assign({}, this.connectionDetails);\n connectionDetails.value = inputValue;\n connectionDetails.isSearch = false;\n connectionDetails.positionId = automationNodeObj.dialogId;\n connectionDetails.childBotId = automationNodeObj.data.childBotId;\n connectionDetails.childBotName = automationNodeObj.data.childBotName;\n connectionDetails.sourceMsgId = automationNodeObj.sourceMsgId || '';\n if(automationNodeObj?.data?.entityType === 'attachment') {\n let fileObj = automationNodeObj?.fileObj;\n connectionDetails.attachments = [\n {\n \"fileName\": fileObj?.name || '',\n \"fileType\": fileObj?.type,\n \"fileId\": fileObj.fileId || '',\n \"url\": {\n \"fileUrl\": fileObj.fileURL || ''\n }\n }\n ]\n }\n let agent_assist_custom_request_params = hostInstance.prepareAgentAssistCustomRequestParams(connectionDetails);\n hostInstance.socketConnection.emitEvents(EVENTS.agent_assist_custom_request, agent_assist_custom_request_params); \n }\n \n handleInputChange(e: any, inputEle: any, checkBtn: any) {\n if (inputEle?.value) {\n this.AutoExpandTextarea(inputEle);\n checkBtn?.classList?.remove(this.classConstants.AGENTASSIST_DISABLED_MSG);\n } else {\n \n checkBtn?.classList?.add(this.classConstants.AGENTASSIST_DISABLED_MSG);\n }\n }\n\n \n AutoExpandTextarea(inputEle: any) {\n if(inputEle?.value){\n inputEle.style.height = 'auto';\n const scrollDims = safeScrollDimensions(inputEle);\n inputEle.style.height = Math.min(scrollDims.scrollHeight, 60) + 'px';\n } \n }\n\n showAttachmentView(automationNodeObj: any, askCustTemplate : any, inputEle : any){\n let viewBtn = askCustTemplate?.querySelector(`${this.classConstants.ENTITY_ATTACHMENT_VIEW}`);\n let attachments = automationNodeObj?.attachments?.[0];\n let overrideBtn = askCustTemplate?.querySelector(`${this.classConstants.ENTITY_OVERRIDE_BTN}`);\n inputEle.readOnly = true;\n if(attachments?.url?.fileUrl && (attachments?.fileType == 'image/png' || attachments?.fileType == 'image')){\n viewBtn?.classList.remove(this.classConstants.HIDE_ELEMENT);\n overrideBtn?.classList?.add(this.classConstants.HIDE_ELEMENT);\n }\n }\n\n toggleAttachmentDiv (automationNodeObj: any, askCustTemplate : any, inputEle : any, flag : boolean){\n let attachmentDiv = askCustTemplate?.querySelector(`${this.classConstants.ENTITY_ATTACHMENT_DIV}`);\n let entityDisplay = askCustTemplate?.querySelector(`${this.classConstants.ENTITY_DISPLAY_NAME}`);\n let chooseFileText = askCustTemplate?.querySelector(`${this.classConstants.ENTITY_CHOOSE_FILE}`);\n \n if(attachmentDiv){\n if(flag){\n attachmentDiv?.classList?.remove(this.classConstants.HIDE_ELEMENT);\n entityDisplay?.classList?.add(this.classConstants.HIDE_ELEMENT);\n inputEle.type = 'file';\n inputEle?.classList?.add(this.classConstants.INPUT_ATTACHMENT);\n }else{\n attachmentDiv?.classList?.add(this.classConstants.HIDE_ELEMENT);\n entityDisplay?.classList?.remove(this.classConstants.HIDE_ELEMENT);\n inputEle.type = 'text';\n inputEle?.classList?.remove(this.classConstants.INPUT_ATTACHMENT);\n }\n // let textContent = automationNodeObj.data.entityValue ? automationNodeObj.data.entityValue : 'Choose File';\n // chooseFileText.innerText = textContent;\n }\n }\n\n assistInputValue(inputValue: any, automationNodeObj: any, hostInstance: any) {\n this.addLoaderForAutomation(automationNodeObj, hostInstance);\n let connectionDetails = Object.assign({}, this.connectionDetails);\n connectionDetails.value = inputValue;\n connectionDetails.positionId = automationNodeObj.dialogId;\n connectionDetails.childBotId = automationNodeObj.data.childBotId;\n connectionDetails.childBotName = automationNodeObj.data.childBotName;\n connectionDetails.sourceMsgId = automationNodeObj.sourceMsgId || '';\n if(automationNodeObj?.data?.entityType === 'attachment' && this.activeTab === Tabs.ASSIST) {\n let fileObj = automationNodeObj?.fileObj;\n connectionDetails.attachments = [\n {\n \"fileName\": fileObj?.name || '',\n \"fileType\": fileObj?.type,\n \"fileId\": fileObj.fileId || '',\n \"url\": {\n \"fileUrl\": fileObj.fileURL || ''\n }\n }\n ]\n }\n let assistRequestParams = hostInstance.prepareAgentAssistRequestParams(connectionDetails);\n hostInstance.socketConnection.emitEvents(EVENTS.agent_assist_request, assistRequestParams);\n }\n\n\n\n mybotInputValue(inputValue: any, automationNodeObj: any, hostInstance: any) {\n this.addLoaderForAutomation(automationNodeObj, hostInstance);\n let connectionDetails = Object.assign({}, this.connectionDetails);\n connectionDetails.value = inputValue;\n connectionDetails.isSearch = false;\n connectionDetails.positionId = automationNodeObj.dialogId;\n connectionDetails.childBotId = automationNodeObj.data.childBotId;\n connectionDetails.childBotName = automationNodeObj.data.childBotName;\n connectionDetails.sourceMsgId = automationNodeObj.sourceMsgId || '';\n if(automationNodeObj?.data?.entityType === 'attachment') {\n let fileObj = automationNodeObj?.fileObj;\n connectionDetails.attachments = [\n {\n \"fileName\": fileObj?.name || '',\n \"fileType\": fileObj?.type,\n \"fileId\": fileObj.fileId || '',\n \"url\": {\n \"fileUrl\": fileObj.fileURL || ''\n }\n }\n ]\n }\n let agent_assist_agent_request_params = hostInstance.prepareAgentAssistAgentRequestParams(connectionDetails);\n hostInstance.socketConnection.emitEvents(EVENTS.agent_assist_agent_request, agent_assist_agent_request_params);\n }\n\n handleEntityInput(node : any, hostInstance: any, disabled = false) { \n const entityNodes = hostInstance.chatEle?.querySelectorAll(`${this.classConstants.ASK_CUST_NODE}${node.uuid}`);\n entityNodes.forEach((askCustTemplate : any) => { \n let actionButtons: any = askCustTemplate?.querySelector(`${this.classConstants.ENTITY_ACTIONS}`); \n actionButtons?.childNodes?.forEach((btn: any) => {\n let agentIconBtn = btn?.classList?.contains(`aa-entity-agent-icon`);\n let errorBtn = btn?.classList?.contains(`aa-entity-error-btn`);\n let viewBtn = btn?.classList?.contains(`aa-entity-attachment-view`);\n if(btn && !agentIconBtn && (!errorBtn || disabled) && !viewBtn){\n btn?.classList?.add(this.classConstants.HIDE_ELEMENT);\n }\n });\n askCustTemplate?.querySelector(`${this.classConstants.ENTITY_ERROR_MESSAGE}`)?.classList?.add(this.classConstants.HIDE_ELEMENT);\n askCustTemplate?.querySelector(`${this.classConstants.ENTITY_OVERRIDE_MSG}`)?.classList?.add(this.classConstants.HIDE_ELEMENT);\n });\n }\n\n showAgentIcon (node : any, hostInstance : any){\n const entityNodes = hostInstance.chatEle?.querySelectorAll(`${this.classConstants.ASK_CUST_NODE}${node.uuid}`);\n entityNodes.forEach((askCustTemplate : any) => { \n const inputEle = askCustTemplate?.querySelector(`${this.classConstants.ENTITY_INPUT}`);\n inputEle.readOnly = true; \n let actionButtons: any = askCustTemplate?.querySelector(`${this.classConstants.ENTITY_ACTIONS}`); \n actionButtons?.childNodes?.forEach((btn: any) => {\n let agentIconPresent = btn?.classList?.contains(`aa-entity-agent-icon`);\n if(btn && agentIconPresent){\n btn?.classList?.remove(this.classConstants.HIDE_ELEMENT);\n }else if(btn){\n btn?.classList?.add(this.classConstants.HIDE_ELEMENT);\n }\n });\n askCustTemplate?.querySelector(`${this.classConstants.ENTITY_ERROR_MESSAGE}`)?.classList?.add(this.classConstants.HIDE_ELEMENT);\n askCustTemplate?.querySelector(`${this.classConstants.ENTITY_OVERRIDE_MSG}`)?.classList?.add(this.classConstants.HIDE_ELEMENT);\n });\n }\n\n showEntityNodeInputButtons(askCustTemplate: any){\n let actionButtons: any = askCustTemplate?.querySelector(`${this.classConstants.ENTITY_ACTIONS}`); \n actionButtons.childNodes?.forEach((btn: any) => { \n if(btn?.classList.contains('aa-entity-override-btn')){ \n btn?.classList?.remove(this.classConstants.HIDE_ELEMENT);\n }else{\n btn?.classList?.add(this.classConstants.HIDE_ELEMENT);\n }\n });\n }\n //Entity node click events ends\n\n //Process UserMessages for smalltalk and automation starts\n processUserMessages(\n userResponse: any,\n lastObj: any,\n templateClick: boolean,\n getNode: (lastObj: any) => any,\n hostInstance: any\n ) {\n const node = getNode(lastObj);\n \n if (node?.data?.isPrompt) {\n\n let fileName = '';\n \n if(node?.type === RenderResponseType.AUTOMATION_NODE){\n if( node?.data?.entityType === 'attachment'){\n \n if(userResponse?.attachments?.length > 0){\n fileName = userResponse?.attachments[0]?.fileName;\n }\n\n if(userResponse?.entities && Array.isArray(userResponse.entities[userResponse.entityName]) && userResponse?.entities[userResponse?.entityName][0]?.fileId){ \n node.attachments = userResponse?.entities[userResponse?.entityName];\n fileName = !fileName ? userResponse?.entities[userResponse?.entityName][0]?.fileName : fileName;\n }\n } \n }\n\n node.data.entityValue = fileName ? fileName : userResponse?.entityValue || userResponse.userInput;\n\n const entityNodes = hostInstance?.chatEle?.querySelectorAll(\n `${this.classConstants.ASK_CUST_NODE}${node.uuid}`\n );\n \n entityNodes.forEach((askCustNode : any) => {\n const inputEle = askCustNode?.querySelector(\n `${this.classConstants.ENTITY_INPUT}`\n );\n\n if(node?.data?.entityType === 'attachment'){\n \n this.toggleAttachmentDiv(node, askCustNode,inputEle, false);\n this.showAttachmentView(node, askCustNode, inputEle);\n }\n \n if (inputEle) {\n inputEle.value = node.data.entityValue;\n }\n \n const scrollDims = safeScrollDimensions(inputEle);\n if(inputEle && scrollDims.scrollHeight >= 60){\n inputEle.style.height = 'auto';\n inputEle.style.height = 18 + 'px';\n }\n\n if(templateClick){\n askCustNode?.querySelector(`${this.classConstants.ENTITY_AGENT_ICON}`)?.classList?.remove(this.classConstants.HIDE_ELEMENT);\n }\n });\n this.handleEntityInput(node, hostInstance);\n }\n return lastObj;\n };\n\n hideMoreTextInEntityNode(inputEle: any, hostInstance: any, scrollHeight: number){\n inputEle.style.height = 'auto';\n inputEle.style.height = 30 + 'px';\n\n\n const expandBtn = inputEle?.parentElement?.querySelector(`${this.classConstants.ENTITY_EXPAND_BTN}`);\n const reduceBtn = inputEle?.parentElement?.querySelector(`${this.classConstants.ENTITY_REDUCE_BTN}`);\n const inputValue = inputEle?.value;\n\n if(inputValue){\n inputEle.value = inputValue?.slice(0, 40) + '...';\n }\n\n\n if(!expandBtn){\n const expandBtn:any = getHTML(ExpandButtonForEntity, {} , hostInstance);\n hostInstance?.emit(SDK_EVENTS.BEFORE_VIEW_INIT, expandBtn, { event: SDK_EVENTS.ENTITY_EXPAND_BTN, data: { inputEle: inputEle } });\n expandBtn?.classList?.remove(this.classConstants.HIDE_ELEMENT);\n inputEle?.parentElement?.appendChild(expandBtn); \n }\n else if(expandBtn && reduceBtn){\n expandBtn?.classList?.remove(this.classConstants.HIDE_ELEMENT);\n reduceBtn?.classList?.add(this.classConstants.HIDE_ELEMENT); \n return; \n }\n else{\n expandBtn?.classList?.remove(this.classConstants.HIDE_ELEMENT);\n return;\n }\n \n inputEle?.parentElement?.querySelector(`${this.classConstants.ENTITY_EXPAND_BTN}`)?.addEventListener('click', (e: any) => {\n e.stopPropagation();\n this.showMoreTextInEntityNode(inputEle, hostInstance, scrollHeight, inputValue);\n });\n }\n\n showMoreTextInEntityNode(inputEle: any, hostInstance: any, scrollHeight: number, inputValue: string | number, isListView = false){\n\n const expandBtn = inputEle?.parentElement?.querySelector(`${this.classConstants.ENTITY_EXPAND_BTN}`);\n const reduceBtn = inputEle?.parentElement?.querySelector(`${this.classConstants.ENTITY_REDUCE_BTN}`);\n\n \n\n if(isListView){\n inputEle.style.height = 'auto';\n inputEle.style.height = 60 + 'px'; \n }\n else{\n inputEle.style.height = 'auto';\n inputEle.style.height = Math.min(scrollHeight, 60) + 'px';\n }\n\n if(inputValue){\n inputEle.value = inputValue;\n }\n\n if(!reduceBtn){\n const reduceBtnHtml:any = getHTML(ReduceButtonForEntity, {}, hostInstance);\n hostInstance?.emit(SDK_EVENTS.BEFORE_VIEW_INIT, reduceBtnHtml, { event: SDK_EVENTS.ENTITY_REDUCE_BTN, data: { inputEle: inputEle } });\n reduceBtnHtml?.classList?.remove(this.classConstants.HIDE_ELEMENT);\n expandBtn?.classList?.add(this.classConstants.HIDE_ELEMENT);\n inputEle?.parentElement?.appendChild(reduceBtnHtml);\n }\n else if(reduceBtn && expandBtn){\n reduceBtn?.classList?.remove(this.classConstants.HIDE_ELEMENT);\n expandBtn?.classList?.add(this.classConstants.HIDE_ELEMENT);\n }\n else{\n reduceBtn?.classList?.remove(this.classConstants.HIDE_ELEMENT);\n }\n\n inputEle?.parentElement?.querySelector(`${this.classConstants.ENTITY_REDUCE_BTN}`)?.addEventListener('click', (e: any) => {\n e.stopPropagation();\n this.hideMoreTextInEntityNode(inputEle,hostInstance, scrollHeight);\n });\n }\n\n \n\n processUserMessagesForSmallTalk(userResponse: any, lastObj: any, templateClick: boolean, hostInstance: any) {\n return this.processUserMessages(userResponse, lastObj, templateClick, (lastObj) => lastObj, hostInstance);\n };\n\n processUserMessagesForAutomation(userResponse: any, lastObj: any, templateClick: boolean, hostInstance: any) {\n return this.processUserMessages(userResponse, lastObj, templateClick, (lastObj) =>\n lastObj?.automationNodes[lastObj.automationNodes?.length - 1], hostInstance);\n };\n //Process UserMessages for smalltalk and automation ends\n\n\n getTemplateHtml(isTemplateRender: boolean, result: any, hostInstance: any) { \n return ErrorHandler.wrapExternalCall(() => {\n if (!isTemplateRender) return null;\n if (!hostInstance?.chatWindowInstance?.generateMessageDOM) {\n console.warn('generateMessageDOM not available');\n return null;\n }\n return hostInstance.chatWindowInstance.generateMessageDOM(result);\n }, null); \n }\n\n\n handleTemplateClickEvents(value : any, activeTab : string, positionId : string, hostInstance : any) {\n let connectionObj = this.connectionDetails;\n let requestParams : any = {\n \"conversationId\": connectionObj.conversationId,\n \"query\": value,\n \"botId\": connectionObj.botId,\n \"experience\": connectionObj?.channel,\n \"autoBotId\": connectionObj.autoBotId,\n \"positionId\" : positionId\n }\n if (activeTab == Tabs.ASSIST) {\n requestParams.entities = [];\n requestParams.check = true;\n requestParams.intType = \"assist\"\n hostInstance.socketConnection.emitEvents(EVENTS.agent_assist_request, requestParams);\n // this.rootService.setAssistTemplateClick(true);\n } else if (activeTab == Tabs.MYBOT) {\n requestParams.isSearch = false;\n requestParams.intType = \"myBot\";\n hostInstance.socketConnection.emitEvents(EVENTS.agent_assist_agent_request, requestParams);\n // this.rootService.setMyBotTemplateClick(true);\n } else if (activeTab == Tabs.CUSTOM_TAB) {\n requestParams.intType = \"custom\";\n requestParams.crId = \"custom\";\n hostInstance.socketConnection.emitEvents(EVENTS.agent_assist_custom_request, requestParams);\n }\n }\n\n closeListView (hostInstance : any) {\n hostInstance?.chatEle?.querySelector?.(`${this.classConstants.LIST_VIEW_POPUP}`).classList?.add(this.classConstants.HIDE_ELEMENT);\n hostInstance?.chatEle?.querySelector(`${this.classConstants.LIST_VIEW_POPUP}`)?.querySelectorAll(`${this.classConstants.ENTITY_NODE}`)?.forEach((ele: any) => {\n ele.remove();\n });\n }\n\n addorRemoveAttachemntFileError(automationNodeObj : any, hostInstance : any, hide = false){\n if(automationNodeObj?.data.entityType === 'attachment'){\n const entityNodes = hostInstance?.chatEle?.querySelectorAll(\n `${this.classConstants.ASK_CUST_NODE}${automationNodeObj.uuid}`\n );\n \n entityNodes.forEach((askCustNode : any) => {\n let attachmentError = askCustNode?.querySelector(`${this.classConstants.ENTITY_ATTACHMENT_LARGE_FILE_MSG}`);\n let overrideMsg = askCustNode?.querySelector(`${this.classConstants.ENTITY_OVERRIDE_MSG}`);\n if(automationNodeObj?.fileObj?.largeFileFlag && !hide){\n attachmentError?.classList?.remove(this.classConstants.HIDE_ELEMENT);\n overrideMsg?.classList?.add(this.classConstants.HIDE_ELEMENT);\n }else{\n attachmentError?.classList?.add(this.classConstants.HIDE_ELEMENT);\n }\n });\n }\n }\n\n \n\n //attachment file upload\n fileUploadCall(automationNodeObj : any, hostIns : any) {\n let file = automationNodeObj?.fileObj;\n let uploadInprogress = false;\n if (!file) {\n return;\n }\n\n automationNodeObj.fileObj.largeFileFlag = false;\n \n // Restrict file size to 25MB\n if (file.size >= 25000000) {\n automationNodeObj.fileObj.largeFileFlag = true;\n this.addorRemoveAttachemntFileError(automationNodeObj, hostIns);\n return;\n }\n \n const reader = new FileReader();\n reader.readAsText(file);\n \n \n reader.onload = function (e) {\n // handle file read if needed\n };\n \n const CHUNK_SIZE = 1024 * 1024 * 2; // Adjust chunk size (5MB for example)\n \n let chunkUpload = file.size > CHUNK_SIZE;\n \n if (chunkUpload) {\n // Simulate chunk file token retrieval (using Promises instead of Observable)\n hostIns.chunkFileUploadService.getFileToken().then((token : any) => {\n if (token) {\n hostIns.chunkFileUploadService.uploadChunkFile(token, file).then((fileId : any) => {\n if (fileId) {\n this.getuploadedFileURL(automationNodeObj,fileId, hostIns);\n }\n }).catch((err : any) => console.error(\"Error during chunk upload\", err));\n }\n }).catch((err : any) => console.error(\"Error retrieving file token\", err));\n } else {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n \n const formData = new FormData();\n \n formData.append('file', file);\n formData.append('fileContext', 'bulkImport');\n formData.append('fileExtension', file.name.substring(file.name.lastIndexOf('.') + 1));\n formData.append('Content-Type', file.type);\n formData.append('fileName', file.name);\n \n uploadInprogress = true;\n \n // Simulate file upload using fetch instead of Angular's serviceInvoker\n\n fetchInstance('post_uploadfile', {\n method: 'POST',\n body : formData,\n },\n hostIns, {})\n .then(res => {\n automationNodeObj.fileObj.largeFileFlag = false;\n automationNodeObj.fileObj.fileId = res.fileId;\n this.getuploadedFileURL(automationNodeObj, res.fileId, hostIns);\n this.addorRemoveAttachemntFileError(automationNodeObj, hostIns);\n }).catch(err => console.error(\"Error during file upload\", err));\n }\n }\n \n \n getuploadedFileURL(automationNodeObj : any, fileId : any, hostIns : any) {\n // Further logic to handle the uploaded file URL\n\n fetchInstance('get_uploadedfile', {\n method: 'GET'\n }, hostIns, {fileId}).then((res) => {\n automationNodeObj.fileObj.fileURL = res?.fileUrl;\n if(this.activeTab === Tabs.ASSIST){\n this.assistInputValue(automationNodeObj.fileObj.name, automationNodeObj, hostIns);\n }else{\n this.mybotInputValue(automationNodeObj.fileObj.name, automationNodeObj, hostIns);\n }\n }, (error) => {\n\n })\n }\n \n\n scrollToTop(element: any, tab : string, hostInstance : any) {\n element?.scroll({\n top: 0,\n behavior: 'smooth'\n });\n hostInstance.socketConnection.sendScrollEvent(\"scrollup_clicked\", tab);\n }\n\n scrollToTillBottom(element: any, tab : string, hostInstance : any): void {\n if (element) {\n const scrollDims = safeScrollDimensions(element);\n element.scroll({\n top: scrollDims.scrollHeight,\n behavior: 'smooth'\n });\n }\n hostInstance.socketConnection.sendScrollEvent(\"scrolldown_clicked\", tab);\n } \n\n handleAssistScroll(hostInstance : any) {\n setTimeout(() => {\n const assistEle = hostInstance?.chatEle?.querySelector(this.classConstants.ASSIST_SECTION) as HTMLElement;\n if(this?.autoScrollStatus && assistEle){\n const scrollDims = safeScrollDimensions(assistEle);\n assistEle.scrollTop = scrollDims.scrollHeight;\n }\n }, 0);\n };\n\n handleMybotScroll(hostInstance : any) {\n const mybotEle = hostInstance?.chatEle?.querySelector(this.classConstants.MYBOT_SECTION) as HTMLElement;\n if(this?.autoScrollStatus && mybotEle){\n mybotEle.scrollTop = mybotEle.scrollHeight;\n }\n };\n\n handleCustomTabScroll(hostInstance : any) {\n const customTabEle = hostInstance?.chatEle?.querySelector(this.classConstants.CUSTOM_TAB_SECTION) as HTMLElement;\n if(this?.autoScrollStatus && customTabEle){\n customTabEle.scrollTop = customTabEle.scrollHeight;\n }\n }\n\n handleConversationSearchScroll(hostInstance : any) {\n const conversationSearchEle = hostInstance?.chatEle?.querySelector(this.classConstants.CONVERSATION_SEARCH_WRAPPER) as HTMLElement;\n if(conversationSearchEle){\n conversationSearchEle.scrollTop = conversationSearchEle.scrollHeight;\n }\n }\n\n scrollBottomTranscript(hostInstance : any){\n setTimeout(() => {\n const transcriptEle = hostInstance?.chatEle?.querySelector(`.${this.classConstants.TRANSCRIPT_WRAPPER}`) as HTMLElement;\n if(this?.autoScrollStatus && transcriptEle){\n transcriptEle.scrollTop = transcriptEle.scrollHeight;\n }\n }, 0);\n }\n\n \n hideNetworkToastr(hostInstance: any) {\n document.querySelector(`.${hostInstance.config?.container}`)?.querySelector(`.${this.classConstants.NETWORK_ERROR_TOASTR}`)?.classList?.add(this.classConstants.HIDE_ELEMENT);\n }\n\n showNetworkToastr(hostInstance: any) {\n document.querySelector(`.${hostInstance.config?.container}`)?.querySelector(`.${this.classConstants.NETWORK_ERROR_TOASTR}`)?.classList?.remove(this.classConstants.HIDE_ELEMENT);\n }\n\n addLoaderForAutomation(automationNodeObj : any, hostInstance : any){\n let automationNode = hostInstance?.chatEle?.querySelector(`${this.classConstants.ASK_CUST_NODE}${automationNodeObj.uuid} .input-block-entity`);\n hostInstance.renderIndividualLoader(automationNode);\n }\n \n removeLoaderForAutomation(hostInstance : any, parentNode : any){\n hostInstance.removeIndividualLoader(parentNode);\n }\n\n //history api\n\n getWidgetFeedbackHistory(params: any, hostInstance: any) {\n return fetchInstance('get_feedback', {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'botId': params.botId\n }\n }, hostInstance, {\n conversationId: params.conversationId,\n tab: 'widget'\n });\n }\n\n getAssistHistory(params: any, hostInstance: any) {\n const botId = hostInstance.rootService.connectionDetails.botId;\n\n return fetchInstance('post_assist_history', {\n method: 'POST',\n // body : JSON.stringify({limit : -1}),\n headers: {\n 'Content-Type': 'application/json',\n // 'botId': botId,\n // 'excludeAccountId': true\n }\n }, hostInstance, {\n botId,\n convId: params.conversationId,\n });\n }\n\n getAssistFeedback(params: any, hostInstance: any) {\n return fetchInstance('get_feedback', {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'botId': params.botId\n }\n }, hostInstance, {\n tab: 'assist',\n conversationId: params.conversationId\n });\n }\n\n getMybotHistory(params: any, hostInstance: any) {\n const botId = hostInstance.rootService.connectionDetails.botId;\n\n return fetchInstance('post_mybot_history', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n // 'botId': botId,\n // 'excludeAccountId': true\n }\n }, hostInstance, {\n botId,\n convId: params.conversationId\n });\n }\n\n getMybotFeedback(params: any, hostInstance: any) {\n return fetchInstance('get_feedback', {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'botId': params.botId\n }\n }, hostInstance, {\n tab: 'mybot',\n conversationId: params.conversationId\n });\n }\n\n getCustomTabFeedback(params:any , hostInstance:any){\n return fetchInstance('get_feedback', {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'botId': params.botId\n }\n }, hostInstance, {\n tab: 'custom',\n conversationId: params.conversationId\n });\n }\n\n formatHistoryResponseToNormalRender(res : any, feedbackData : any, isAssist = true){\n let result : any = {};\n result = Object.assign({}, res.agentAssistDetails);\n result.type = res.type;\n result.buttons = [];\n result.intentName = res?.agentAssistDetails?.rootTN || res?.tN;\n result._id = res._id;\n result.entityDisplayName = result.newEntityDisplayName ? result.newEntityDisplayName : result.newEntityName;\n result.entityType = result?.newEntityType ? result?.newEntityType : '';\n result.expectedFormat = result.entityType || result.newEntityType;\n\n if(result.entities && result?.entities?.[result?.entityName]?.length > 0){\n result.attachments = result.entities[result?.entityName];\n }\n res?.components?.forEach((element : any) => {\n let value = element?.data?.text;\n result.buttons.push({value, type : element?.cT});\n });\n\n if (isAssist){\n\n if(result?.suggestions?.faqs?.length > 0){\n result.suggestions.faqs[0].answer = [res?.components[0]?.data?.text];\n }\n \n if(result?.ambiguityList && Object.keys(result?.ambiguityList)?.length > 0){\n result.suggestions = result.ambiguityList;\n } \n\n result?.suggestions?.faqs?.forEach((faq : any) => {\n let feedbackObj = (feedbackData || [])?.find((feedback : any) => feedback.positionId === faq.positionId);\n faq.historyFeedback = feedbackObj;\n });\n }\n\n return result;\n }\n\n handlePreviousAutomationNode(entityNode: any, automationNodeObj: any, templateClick: boolean, hostInstance: any) {\n automationNodeObj.expectedFormat = automationNodeObj.entityType;\n if (entityNode?.nodeType === RenderResponseType.ENTITY_NODE) {\n\n const entityNodes = hostInstance?.chatEle?.querySelectorAll(\n `${this.classConstants.ASK_CUST_NODE}${entityNode.uuid}`\n );\n\n entityNodes.forEach((askCustNode: any) => {\n const inputEle = askCustNode?.querySelector(\n `${this.classConstants.ENTITY_INPUT}`\n );\n\n let fileName = '';\n\n if(entityNode?.data?.entityType === 'attachment'){\n entityNode.attachments = automationNodeObj.attachments;\n automationNodeObj.attachments = null;\n this.toggleAttachmentDiv(entityNode, askCustNode,inputEle, false);\n this.showAttachmentView(entityNode, askCustNode, inputEle);\n fileName = entityNode?.attachments?.[0]?.fileName;\n\n }\n\n if (inputEle && !inputEle.value) {\n inputEle.value = fileName ? fileName: (automationNodeObj?.entityValue || automationNodeObj?.userInput || '');\n if(!automationNodeObj?.isErrorPrompt){\n askCustNode?.querySelector(`${this.classConstants.ENTITY_ERROR_MESSAGE}`)?.classList?.add(this.classConstants.HIDE_ELEMENT);\n askCustNode?.querySelector(`${this.classConstants.ENTITY_OVERRIDE_MSG}`)?.classList?.add(this.classConstants.HIDE_ELEMENT);\n }\n if(templateClick){\n askCustNode?.querySelector(`${this.classConstants.ENTITY_AGENT_ICON}`)?.classList?.remove(this.classConstants.HIDE_ELEMENT);\n }\n }\n });\n }\n }\n\n handleHistoryPreviousAutomationNode(entityNode: any, automationNodeObj: any, hostInstance: any) {\n automationNodeObj.expectedFormat = automationNodeObj.entityType;\n if (entityNode?.nodeType === RenderResponseType.ENTITY_NODE) {\n\n const entityNodes = hostInstance?.chatEle?.querySelectorAll(\n `${this.classConstants.ASK_CUST_NODE}${entityNode.uuid}`\n );\n\n entityNodes.forEach((askCustNode: any) => {\n const inputEle = askCustNode?.querySelector(\n `${this.classConstants.ENTITY_INPUT}`\n );\n\n let fileName = '';\n\n if(entityNode?.data?.entityType === 'attachment'){\n entityNode.attachments = automationNodeObj.attachments;\n automationNodeObj.attachments = null;\n this.toggleAttachmentDiv(entityNode, askCustNode,inputEle, false);\n this.showAttachmentView(entityNode, askCustNode, inputEle);\n fileName = entityNode?.attachments?.[0]?.fileName;\n }\n if (inputEle && !inputEle.value) {\n inputEle.value = fileName ? fileName: (automationNodeObj?.userInput || automationNodeObj?.entityValue || '');\n\n\n\n let height = this.getHiddenHeight(inputEle,inputEle?.parentElement);\n\n inputEle.setAttribute('data-inputValue', inputEle?.value);\n\n if(height >= 60){\n inputEle.style.height = 'auto';\n inputEle.style.height = Math.max(height, 60) + 'px';\n this.hideMoreTextInEntityNode(inputEle, hostInstance, height);\n }\n\n if(!automationNodeObj?.isErrorPrompt){\n askCustNode?.querySelector(`${this.classConstants.ENTITY_ERROR_MESSAGE}`)?.classList?.add(this.classConstants.HIDE_ELEMENT);\n askCustNode?.querySelector(`${this.classConstants.ENTITY_OVERRIDE_MSG}`)?.classList?.add(this.classConstants.HIDE_ELEMENT);\n askCustNode?.querySelector(`${this.classConstants.ENTITY_OVERRIDE_BTN}`)?.classList?.add(this.classConstants.HIDE_ELEMENT);\n }\n }\n });\n\n }\n }\n\n checkTransferDetailsAndDisableWidget = (hostInstance : any) => {\n setTimeout(() => {\n let appState = hostInstance?.localStorageService?.getConvObjFromLS();\n \n if(appState){\n let internalTransferDetails = appState[storageConst.INTERNAL_TRANSFER];\n if(internalTransferDetails){\n hostInstance.disableWidget(internalTransferDetails.isDisabled);\n }\n }\n });\n }\n\n getHiddenHeight(inputEle: any,parentEle: any) {\n const hiddenInput = document.createElement('textarea');\n hiddenInput.style.position = 'absolute';\n hiddenInput.style.visibility = 'hidden';\n hiddenInput.style.fontSize = '12px';\n hiddenInput.style.fontFamily = 'inherit';\n hiddenInput.style.fontWeight = '400';\n hiddenInput.style.lineHeight = '18px';\n hiddenInput.style.padding = '0';\n hiddenInput.style.border = '0';\n hiddenInput.style.opacity = '0';\n hiddenInput.style.overflow = 'hidden';\n hiddenInput.textContent = inputEle.value;\n hiddenInput.style.width = '400px';\n document.body.appendChild(hiddenInput);\n const height = hiddenInput.scrollHeight;\n document.body.removeChild(hiddenInput);\n return height;\n }\n\n findTaskInStringAndMake(prefsData:any,dialogPos:any,replacement:any){\n const stDialog = prefsData?.sg?.dT?.tL[dialogPos]?.msg;\n const regex = /\\{\\{task\\}\\}/gi; \n const dialogSplit = stDialog.split(regex);\n if(dialogSplit.length==2){\n return {\n firstSt: dialogSplit[0].trim(),\n lastSt: dialogSplit[1].trim(),\n replaceSt: replacement\n }\n }\n else{\n return {\n firstSt: stDialog,\n lastSt: '',\n replaceSt: ''\n }\n }\n \n }\n\n\n checkDialogGroupingAndMake = (hostInstance:any,suggestionArr:any,prefsData:any) =>{\n if(prefsData.length === 0){\n return suggestionArr\n }\n const botId = hostInstance?.config?.connectionDetails?.botId;\n const isE = prefsData[botId]?.grpConfig?.isE\n const dialogGrp = prefsData[botId]?.grpConfig?.dgGrps;\n if(isE && dialogGrp[0].gn === '_default' && dialogGrp.length===1){\n this.isGroups = false\n return this.defaultGroupMake(dialogGrp[0].dlgs,suggestionArr)\n }\n else if(isE && dialogGrp.length>=1){\n this.isGroups = true\n return this.groupsMake(dialogGrp,suggestionArr)\n }\n return suggestionArr \n\n }\n\n\n defaultGroupMake(dialogs:any,suggestionArr:any){\n if(dialogs.length === 0){\n return suggestionArr\n }\n let newSuggestionArr:Array<[]> = [];\n let hashMapSuggestionArr:any = {};\n for(let index=0;index<suggestionArr.length;index++){\n hashMapSuggestionArr[suggestionArr[index]?.taskRefId] = index\n }\n\n for(let dialog of dialogs){\n if(hashMapSuggestionArr.hasOwnProperty(dialog)){\n newSuggestionArr.push(suggestionArr[hashMapSuggestionArr[dialog]])\n } \n }\n return newSuggestionArr\n }\n\n\n groupsMake = (dialogGroups:any,suggestionArr:any) => {\n let dialogGroupArr:Array<[]> = [];\n let hashMapSuggestionArr:any = {};\n\n for(let index=0;index<suggestionArr.length;index++){\n hashMapSuggestionArr[suggestionArr[index]?.taskRefId] = index\n }\n\n for(let grpObj of dialogGroups){\n const grpObjGroupName = grpObj?.gn;\n const grpObjGroupDialogArr = grpObj?.dlgs\n let dialogArrItems:Array<[]> = []\n\n let dialogGroupArrItem:any = {\n \"gn\": grpObjGroupName,\n \"isExpanded\": grpObj?.isExpanded || false\n }\n \n for(let dialogIds of grpObjGroupDialogArr){\n if(hashMapSuggestionArr.hasOwnProperty(dialogIds)){\n dialogArrItems.push(suggestionArr[hashMapSuggestionArr[dialogIds]])\n this.DialogsinGroups[dialogIds] = 1\n \n }\n }\n dialogGroupArrItem.dlgs = dialogArrItems\n dialogGroupArr.push(dialogGroupArrItem)\n }\n this.checkOthersAndMake(dialogGroupArr,suggestionArr)\n dialogGroupArr = this.checkEmptyGrps(dialogGroupArr)\n return dialogGroupArr \n }\n\n checkOthersAndMake = (dialogGroupArr:any,suggestionArr:any) =>{\n\n let OthersDialogsArr:any = [];\n\n suggestionArr.map((items:any,index:any)=>{\n if(!(items?.taskRefId in this.DialogsinGroups)){\n OthersDialogsArr.push(items) \n }\n }\n )\n\n if(OthersDialogsArr.length>0){\n let OthersGroup:any = {\n \"gn\": \"Others\"\n };\n OthersGroup.dlgs = OthersDialogsArr\n dialogGroupArr.push(OthersGroup)\n }\n }\n \n fetchSummaries = (hostInstance : any) => {\n if(this.isSummariesGenerated){\n return;\n }\n const payload = {\n conversationId : this.connectionDetails.conversationId,\n botId : this.connectionDetails.botId,\n participant : this?.internalTransferData?.participant || {}\n }\n hostInstance.socketConnection.emitEvents(EVENTS.get_summaries, payload);\n }\n\n checkDynamicTasksAndFilter = (hostIns:any,typedText:string) =>{\n const menuResponse = typeof structuredClone === 'function' \n ? structuredClone(this.menuResponseArr) \n : JSON.parse(JSON.stringify(this.menuResponseArr));\n const filterItems = menuResponse.filter((obj:any) => obj?.intentName.toLowerCase().includes(typedText.toLowerCase()))\n return filterItems;\n }\n \n\n checkEmptyGrps = (dialogGroupArr:any) =>{\n return dialogGroupArr.filter((obj:any) => obj?.dlgs?.length>0) \n }\n\n convertAgenticMarkdownToHtml = (markdownContent: string) => {\n markdownContent = markdownContent?.replace(/<[^>]*>/g, '')?.replace(/[^a-zA-Z0-9]n/g, '\\n') || '';\n return marked.parse(markdownContent);\n } \n\n setStreamingAgenticSearchResults = (response : any, resultsElement : any) => {\n \n if(!response || !resultsElement || !response?.requestId){\n return;\n }\n\n if(!this.agenticSearchResultsMap[response?.requestId]){\n this.agenticSearchResultsMap[response?.requestId] = '';\n }\n\n if(response?.isLastEvent){\n return;\n }\n\n let desc = resultsElement?.querySelector(this.classConstants.AGENTIC_SEARCH_RESULTS_TITLE);\n if(desc && !desc?.classList?.contains(this.classConstants.SUGGESTION_EXPANDED)){\n let overlimitContainer = resultsElement?.querySelector(this.classConstants.MORE_BTN_CONTAINER);\n let moreButton = overlimitContainer?.querySelector(this.classConstants.MORE_BUTTON);\n const scrollDimensions = safeScrollDimensions(desc);\n const clientDimensions = safeDimensions(desc);\n const isOverLimit = scrollDimensions.scrollHeight > clientDimensions.height;\n if(isOverLimit){\n overlimitContainer.classList.remove(this.classConstants.HIDE_ELEMENT); \n desc.classList.toggle(this.classConstants.SUGGESTION_EXPANDED);\n moreButton.textContent = desc.classList.contains(this.classConstants.SUGGESTION_EXPANDED) ? ProjConstants.READ_LESS : ProjConstants.READ_MORE;\n }\n }\n\n const searchResultsElement = resultsElement?.querySelector(this.classConstants.AGENTIC_SEARCH_RESULTS_TITLE);\n if(searchResultsElement){\n this.agenticSearchResultsMap[response?.requestId] += response?.response?.[0]?.content || '';\n const finalResultHtml = this.convertAgenticMarkdownToHtml(this.agenticSearchResultsMap[response?.requestId]);\n searchResultsElement.innerHTML = finalResultHtml;\n }\n }\n\n}\n\n\nexport default rootService;\n","__webpack_require__.h = () => (\"0856c7b4c1d1c5c999cf\")"],"names":[],"sourceRoot":""}