ai12z 3.7.1-alpha.2 → 3.7.1-alpha.3

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.
Files changed (33) hide show
  1. package/dist/cjs/{ai12z-bot-f536d432.js → ai12z-bot-ef183250.js} +4 -7
  2. package/dist/cjs/ai12z-bot-ef183250.js.map +1 -0
  3. package/dist/cjs/ai12z-bot.cjs.entry.js +2 -2
  4. package/dist/cjs/ai12z-chat_2.cjs.entry.js +1 -1
  5. package/dist/cjs/{endResponseHelper-aedf327c.js → endResponseHelper-d17497f0.js} +25 -12
  6. package/dist/cjs/{endResponseHelper-aedf327c.js.map → endResponseHelper-d17497f0.js.map} +1 -1
  7. package/dist/cjs/index.cjs.js +2 -2
  8. package/dist/collection/components/ai12z-bot/ai12z-bot.js +2 -5
  9. package/dist/collection/components/ai12z-bot/ai12z-bot.js.map +1 -1
  10. package/dist/collection/utils/endResponseHelper.js +24 -11
  11. package/dist/collection/utils/endResponseHelper.js.map +1 -1
  12. package/dist/esm/{ai12z-bot-60210b29.js → ai12z-bot-f0e74a1e.js} +4 -7
  13. package/dist/esm/ai12z-bot-f0e74a1e.js.map +1 -0
  14. package/dist/esm/ai12z-bot.entry.js +2 -2
  15. package/dist/esm/ai12z-chat_2.entry.js +1 -1
  16. package/dist/esm/{endResponseHelper-0a8350cd.js → endResponseHelper-ca69e161.js} +25 -12
  17. package/dist/esm/{endResponseHelper-0a8350cd.js.map → endResponseHelper-ca69e161.js.map} +1 -1
  18. package/dist/esm/index.js +2 -2
  19. package/dist/library/index.esm.js +1 -1
  20. package/dist/library/library.esm.js +1 -1
  21. package/dist/library/{p-1a65f5ce.js → p-1d7b52c4.js} +2 -2
  22. package/dist/library/p-1d7b52c4.js.map +1 -0
  23. package/dist/library/{p-28b7f8c0.entry.js → p-4119ec5c.entry.js} +2 -2
  24. package/dist/library/p-86ea805d.entry.js +2 -0
  25. package/dist/library/{p-a1af8611.js → p-c3c93ba2.js} +2 -2
  26. package/dist/library/{p-a1af8611.js.map → p-c3c93ba2.js.map} +1 -1
  27. package/package.json +2 -2
  28. package/dist/cjs/ai12z-bot-f536d432.js.map +0 -1
  29. package/dist/esm/ai12z-bot-60210b29.js.map +0 -1
  30. package/dist/library/p-1a65f5ce.js.map +0 -1
  31. package/dist/library/p-4626e0e6.entry.js +0 -2
  32. /package/dist/library/{p-28b7f8c0.entry.js.map → p-4119ec5c.entry.js.map} +0 -0
  33. /package/dist/library/{p-4626e0e6.entry.js.map → p-86ea805d.entry.js.map} +0 -0
@@ -2,7 +2,6 @@ import showdown from "showdown";
2
2
  import { splitContentMultiple, generateMessage, updateAnchorTags, updateButtonEvents, generateUUID } from "./utils";
3
3
  export async function handleEndResponse(params) {
4
4
  var _a;
5
- console.log("Handling end response with params:");
6
5
  const { data, currentDomId, setMessages, setSurveyDomId, config, setButtons, inputType } = params;
7
6
  try {
8
7
  const converter = new showdown.Converter();
@@ -29,7 +28,6 @@ export async function handleEndResponse(params) {
29
28
  }
30
29
  async function handleControlTypes(finalHtml, data, currentDomId, setMessages, controlMatches, config, setSurveyDomId, inputType) {
31
30
  if (controlMatches.length === 0) {
32
- console.log("No control matches found in the final HTML.");
33
31
  await handleRegularContent(finalHtml, currentDomId, config);
34
32
  }
35
33
  else if (controlMatches.length > 0) {
@@ -37,27 +35,42 @@ async function handleControlTypes(finalHtml, data, currentDomId, setMessages, co
37
35
  await handleMultipleControls(finalHtml, data, currentDomId, setMessages, config, setSurveyDomId, inputType);
38
36
  }
39
37
  }
40
- async function handleFormControl(finalHtml, data, currentDomId, config, setSurveyDomId, output) {
38
+ async function handleFormControl(data, config, setSurveyDomId, inputType, setMessages, output, currentDomId, index) {
41
39
  var _a, _b, _c;
42
- console.log("Handling form control", currentDomId);
43
40
  const newSurveyDomId = `surveyElement-${generateUUID()}`;
44
41
  if (setSurveyDomId) {
45
42
  setSurveyDomId(newSurveyDomId);
46
43
  }
47
- const formHtml = finalHtml.replace(RegExp(/\[[^>]*]/gm), `<div id=${newSurveyDomId} style="width:${((_a = config.controlSettings) === null || _a === void 0 ? void 0 : _a.botVersion) === "v1" ? "330px" : "100%"}" class="survey-container"></div>`);
48
- const element = config.element.shadowRoot.querySelector(`#${currentDomId}`);
44
+ let newCtrlMessage;
45
+ if (index !== 0) {
46
+ if (inputType === "bot") {
47
+ // Create new control message
48
+ newCtrlMessage = generateMessage(config.conversationId);
49
+ setMessages(newCtrlMessage);
50
+ }
51
+ else if (inputType === "cta") {
52
+ newCtrlMessage = config.getUpdatedChat("", data);
53
+ setMessages(newCtrlMessage);
54
+ }
55
+ // Wait for DOM render
56
+ await waitForElementRender(`#${newCtrlMessage.id}`, config.element);
57
+ }
58
+ const formHtml = `<div id=${newSurveyDomId} style="width:${((_a = config.controlSettings) === null || _a === void 0 ? void 0 : _a.botVersion) === "v1" ? "330px" : "100%"}" class="survey-container"></div>`;
59
+ (_b = config.updateConversations) === null || _b === void 0 ? void 0 : _b.call(config, formHtml, data);
60
+ // const formHtml = finalHtml.replace(
61
+ // RegExp(/\[[^>]*]/gm),
62
+ // `<div id=${newSurveyDomId} style="width:${config.controlSettings?.botVersion === "v1" ? "330px" : "100%"}" class="survey-container"></div>`
63
+ // )
64
+ const element = config.element.shadowRoot.querySelector(`#${index === 0 ? currentDomId : newCtrlMessage.id}`);
49
65
  if (element) {
50
66
  element["style"].width = "100%";
51
67
  element.parentElement["style"].width = "100%";
52
68
  element.innerHTML = formHtml;
53
69
  // config.getUpdatedChat?.(formHtml, data)(null)
54
- (_b = config.updateConversations) === null || _b === void 0 ? void 0 : _b.call(config, formHtml, data);
55
70
  // Filter data by agentDataId if available
56
71
  if (output.agentDataId && ((_c = data.controls) === null || _c === void 0 ? void 0 : _c.length) > 0) {
57
72
  const filteredItems = data.controls.filter(item => item.agent_data_id === output.agentDataId);
58
- console.log("Filtered Items for Form Control:", filteredItems);
59
73
  data.controlData = filteredItems.length > 0 ? filteredItems[0] : null;
60
- console.log(`✅ Filtered ${filteredItems.length} items for agentDataId: ${output.agentDataId}`);
61
74
  }
62
75
  }
63
76
  // Render the survey
@@ -98,10 +111,9 @@ async function handleMultipleControls(finalHtml, data, currentDomId, setMessages
98
111
  }
99
112
  }
100
113
  if (output.type === 'control' && output.controlType) {
101
- console.log(`Processing control of type: ${output.controlType}`);
102
114
  switch (output.controlType) {
103
115
  case "form":
104
- await handleFormControl(finalHtml, data, currentDomId, config, setSurveyDomId, output);
116
+ await handleFormControl(data, config, setSurveyDomId, inputType, setMessages, output, currentDomId, index);
105
117
  break;
106
118
  case "carousel":
107
119
  case "list":
@@ -168,6 +180,7 @@ async function handleRegularContent(finalHtml, currentDomId, config) {
168
180
  element.innerHTML = finalHtml;
169
181
  config.checkHighlightcode(currentDomId);
170
182
  (_a = config.updateConversations) === null || _a === void 0 ? void 0 : _a.call(config, finalHtml, {});
183
+ config.addEventListeners(`#${currentDomId}`);
171
184
  }
172
185
  }
173
186
  // Helper function to wait for element to render
@@ -1 +1 @@
1
- {"version":3,"file":"endResponseHelper.js","sourceRoot":"","sources":["../../src/utils/endResponseHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import showdown from \"showdown\"\nimport { splitContentMultiple, generateMessage, updateAnchorTags, updateButtonEvents, generateUUID } from \"./utils\"\n\nexport interface EndResponseConfig {\n element: HTMLElement\n hideSpinner: (chatData: any) => Promise<void>\n getUpdatedChat?: (message: any, data: any) => any\n updateChatMessage?: (message: any, data: any) => void\n updateConversations?: (html: string, data: any) => void\n renderSurvey: (data: any) => void\n processTemplateData: (chatData: any, data: any) => Promise<void>\n processChatData: (chatData: any, data: any) => Promise<void>\n checkHighlightcode: (id: string) => void\n addEventListeners: (selector: string) => void\n customStyle?: string\n customJS?: string\n controlSettings?: any\n conversationId: string\n}\n\nexport interface EndResponseParams {\n data: any\n currentDomId: string\n setMessages: any\n inputType?: string\n setSurveyDomId?: (id: string) => void\n setButtons?: (buttons: Array<{ id: string; label: string }>) => void\n config: EndResponseConfig\n}\n\nexport async function handleEndResponse(params: EndResponseParams): Promise<void> {\n console.log(\"Handling end response with params:\")\n const { data, currentDomId, setMessages, setSurveyDomId, config, setButtons, inputType } = params\n \n try {\n const converter = new showdown.Converter()\n let finalHtml = converter.makeHtml(data.answer)\n \n // Update anchor tags and button events\n finalHtml = updateAnchorTags(finalHtml, config.controlSettings?.linkTarget || '_blank')\n const buttonResult = updateButtonEvents(finalHtml)\n finalHtml = buttonResult.body\n setButtons(buttonResult.buttons)\n \n // Check for multiple controls\n const controlMatches = finalHtml.match(/\\[control[^\\]]*\\]/g) || []\n \n if (finalHtml.indexOf(\"[control\") > -1) {\n await handleControlTypes(finalHtml, data, currentDomId, setMessages, controlMatches, config, setSurveyDomId, inputType)\n } else {\n // Handle regular content without controls\n await handleRegularContent(finalHtml, currentDomId, config)\n }\n \n } catch (error) {\n console.error(\"Error in handleEndResponse:\", error)\n throw error\n }\n}\n\nasync function handleControlTypes(\n finalHtml: string, \n data: any, \n currentDomId: string, \n setMessages: any,\n controlMatches: string[],\n config: EndResponseConfig,\n setSurveyDomId?: (id: string) => void,\n inputType?: string\n): Promise<void> {\n \n if(controlMatches.length === 0) {\n console.log(\"No control matches found in the final HTML.\")\n await handleRegularContent(finalHtml, currentDomId, config)\n } else if(controlMatches.length > 0) {\n // ✅ Handle multiple controls\n await handleMultipleControls(finalHtml, data, currentDomId, setMessages, config, setSurveyDomId, inputType)\n }\n}\n\nasync function handleFormControl(\n finalHtml: string,\n data: any,\n currentDomId: string,\n config: EndResponseConfig,\n setSurveyDomId?: (id: string) => void,\n output?: any\n): Promise<void> {\n console.log(\"Handling form control\", currentDomId)\n const newSurveyDomId = `surveyElement-${generateUUID()}`\n \n if (setSurveyDomId) {\n setSurveyDomId(newSurveyDomId)\n }\n \n const formHtml = finalHtml.replace(\n RegExp(/\\[[^>]*]/gm), \n `<div id=${newSurveyDomId} style=\"width:${config.controlSettings?.botVersion === \"v1\" ? \"330px\" : \"100%\"}\" class=\"survey-container\"></div>`\n )\n \n const element = config.element.shadowRoot.querySelector(`#${currentDomId}`)\n \n if (element) {\n element[\"style\"].width = \"100%\"\n element.parentElement[\"style\"].width = \"100%\"\n element.innerHTML = formHtml\n\n // config.getUpdatedChat?.(formHtml, data)(null)\n config.updateConversations?.(formHtml, data)\n\n // Filter data by agentDataId if available\n if (output.agentDataId && data.controls?.length > 0) {\n const filteredItems = data.controls.filter(\n item => item.agent_data_id === output.agentDataId\n )\n console.log(\"Filtered Items for Form Control:\", filteredItems)\n data.controlData = filteredItems.length > 0 ? filteredItems[0] : null\n console.log(`✅ Filtered ${filteredItems.length} items for agentDataId: ${output.agentDataId}`)\n }\n }\n \n // Render the survey\n setTimeout(() => {\n config.renderSurvey(data)\n }, 100)\n}\n\nasync function handleMultipleControls(\n finalHtml: string,\n data: any,\n currentDomId: string,\n setMessages: any,\n config: EndResponseConfig,\n setSurveyDomId?: (id: string) => void,\n inputType?: string\n): Promise<void> {\n \n const controlOutput = splitContentMultiple(finalHtml)\n \n if (!controlOutput || controlOutput.parts.length === 0) {\n console.warn('No parts found in splitContentMultiple')\n return\n }\n \n // Process each part sequentially\n for (let index = 0; index < controlOutput.parts.length; index++) {\n const output = controlOutput.parts[index]\n \n if (output.type === 'text' && output.content.trim().length > 0) {\n if (index === 0) {\n // Update first message\n config.updateConversations?.(output.content, data)\n config.updateChatMessage?.(output.content, data)\n \n } else {\n\n if(inputType === \"bot\") {\n // Create new text message\n const newMessage = generateMessage(config.conversationId)\n\n newMessage.text = output.content\n \n setMessages(newMessage)\n \n } else if(inputType === \"cta\") {\n const newMessage = config.getUpdatedChat(output.content, data)\n setMessages(newMessage)\n }\n // // Wait for DOM render then hide spinner\n // await waitForElementRender(`#${newMessage.id}`, config.element)\n // await config.hideSpinner(newMessage)\n }\n }\n \n if (output.type === 'control' && output.controlType) {\n console.log(`Processing control of type: ${output.controlType}`)\n\n \n switch (output.controlType) {\n case \"form\":\n await handleFormControl(finalHtml, data, currentDomId, config, setSurveyDomId, output)\n break\n case \"carousel\":\n case \"list\":\n case \"template\":\n // Proceed to handle control below\n await handleTemplateControl( data, config, output, setMessages, inputType)\n break\n default:\n console.warn(`Unknown control type: ${output.controlType}`)\n continue // Skip unknown control types\n }\n \n }\n \n \n // Small delay between parts\n if (index < controlOutput.parts.length - 1) {\n await new Promise(resolve => setTimeout(resolve, 200))\n }\n }\n}\n\nasync function handleTemplateControl(\n data: any,\n config: EndResponseConfig,\n output: any,\n setMessages: any,\n inputType?: string\n): Promise<void> {\n \n let newCtrlMessage: any;\n \n if(inputType === \"bot\") {\n \n // Create new control message\n newCtrlMessage = generateMessage(config.conversationId)\n \n setMessages(newCtrlMessage)\n }\n else if(inputType === \"cta\") {\n newCtrlMessage = config.getUpdatedChat(\"\", data)\n setMessages(newCtrlMessage)\n }\n \n // Wait for DOM render\n await waitForElementRender(`#${newCtrlMessage.id}`, config.element)\n \n \n \n // Filter data by agentDataId if available\n if (output.agentDataId && data.controls?.length > 0) {\n const filteredItems = data.controls.filter(\n item => item.agent_data_id === output.agentDataId\n )\n\n data.controlData = filteredItems.length > 0 ? filteredItems[0].custom_data : null\n data.messageId = newCtrlMessage.id\n data.controlType = output.controlType\n }\n\n const controlData = data.controlData ? {\n ...data,\n messageId: newCtrlMessage.id,\n } : data\n \n // Set custom styles\n if (controlData.controlData?.data?.source) {\n controlData.controlData.data.source.customCss = config.customStyle || \"\"\n controlData.controlData.data.source.customJs = config.customJS || \"\"\n }\n \n\n requestAnimationFrame(async () => {\n\n setTimeout(async () => {\n // Process the control\n if (output.controlType === \"template\") {\n await config.processTemplateData(newCtrlMessage, controlData)\n } else {\n await config.processChatData(newCtrlMessage, controlData)\n }\n \n // Hide spinner after processing\n await config.hideSpinner(newCtrlMessage)\n }, 100)\n })\n}\n\n\nasync function handleRegularContent(\n finalHtml: string,\n currentDomId: string,\n config: EndResponseConfig\n): Promise<void> {\n \n const element = config.element.shadowRoot.querySelector(`#${currentDomId}`)\n if (element) {\n element.innerHTML = finalHtml\n config.checkHighlightcode(currentDomId)\n config.updateConversations?.(finalHtml, {})\n }\n}\n\n// Helper function to wait for element to render\nexport function waitForElementRender(selector: string, element: HTMLElement): Promise<HTMLElement> {\n return new Promise((resolve) => {\n const checkElement = () => {\n const el = element.shadowRoot?.querySelector(selector) as HTMLElement\n if (el) {\n resolve(el)\n } else {\n requestAnimationFrame(checkElement)\n }\n }\n checkElement()\n })\n}\n\n"]}
1
+ {"version":3,"file":"endResponseHelper.js","sourceRoot":"","sources":["../../src/utils/endResponseHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import showdown from \"showdown\"\nimport { splitContentMultiple, generateMessage, updateAnchorTags, updateButtonEvents, generateUUID } from \"./utils\"\n\nexport interface EndResponseConfig {\n element: HTMLElement\n hideSpinner: (chatData: any) => Promise<void>\n getUpdatedChat?: (message: any, data: any) => any\n updateChatMessage?: (message: any, data: any) => void\n updateConversations?: (html: string, data: any) => void\n renderSurvey: (data: any) => void\n processTemplateData: (chatData: any, data: any) => Promise<void>\n processChatData: (chatData: any, data: any) => Promise<void>\n checkHighlightcode: (id: string) => void\n addEventListeners: (selector: string) => void\n customStyle?: string\n customJS?: string\n controlSettings?: any\n conversationId: string\n}\n\nexport interface EndResponseParams {\n data: any\n currentDomId: string\n setMessages: any\n inputType?: string\n setSurveyDomId?: (id: string) => void\n setButtons?: (buttons: Array<{ id: string; label: string }>) => void\n config: EndResponseConfig\n}\n\nexport async function handleEndResponse(params: EndResponseParams): Promise<void> {\n const { data, currentDomId, setMessages, setSurveyDomId, config, setButtons, inputType } = params\n \n try {\n const converter = new showdown.Converter()\n let finalHtml = converter.makeHtml(data.answer)\n \n // Update anchor tags and button events\n finalHtml = updateAnchorTags(finalHtml, config.controlSettings?.linkTarget || '_blank')\n const buttonResult = updateButtonEvents(finalHtml)\n finalHtml = buttonResult.body\n setButtons(buttonResult.buttons)\n \n // Check for multiple controls\n const controlMatches = finalHtml.match(/\\[control[^\\]]*\\]/g) || []\n \n if (finalHtml.indexOf(\"[control\") > -1) {\n await handleControlTypes(finalHtml, data, currentDomId, setMessages, controlMatches, config, setSurveyDomId, inputType)\n } else {\n // Handle regular content without controls\n await handleRegularContent(finalHtml, currentDomId, config)\n }\n \n } catch (error) {\n console.error(\"Error in handleEndResponse:\", error)\n throw error\n }\n}\n\nasync function handleControlTypes(\n finalHtml: string, \n data: any, \n currentDomId: string, \n setMessages: any,\n controlMatches: string[],\n config: EndResponseConfig,\n setSurveyDomId?: (id: string) => void,\n inputType?: string\n): Promise<void> {\n \n if(controlMatches.length === 0) {\n await handleRegularContent(finalHtml, currentDomId, config)\n } else if(controlMatches.length > 0) {\n // ✅ Handle multiple controls\n await handleMultipleControls(finalHtml, data, currentDomId, setMessages, config, setSurveyDomId, inputType)\n }\n}\n\nasync function handleFormControl(\n data: any,\n config: EndResponseConfig,\n setSurveyDomId?: (id: string) => void,\n inputType?: string,\n setMessages?: any,\n output?: any,\n currentDomId?: string,\n index?: number\n): Promise<void> {\n const newSurveyDomId = `surveyElement-${generateUUID()}`\n \n if (setSurveyDomId) {\n setSurveyDomId(newSurveyDomId)\n }\n\n let newCtrlMessage: any;\n\n \n if(index !== 0) {\n \n if(inputType === \"bot\") {\n \n // Create new control message\n newCtrlMessage = generateMessage(config.conversationId)\n \n setMessages(newCtrlMessage)\n }\n else if(inputType === \"cta\") {\n newCtrlMessage = config.getUpdatedChat(\"\", data)\n setMessages(newCtrlMessage)\n }\n // Wait for DOM render\n await waitForElementRender(`#${newCtrlMessage.id}`, config.element)\n }\n \n \n\n \n\n const formHtml = `<div id=${newSurveyDomId} style=\"width:${config.controlSettings?.botVersion === \"v1\" ? \"330px\" : \"100%\"}\" class=\"survey-container\"></div>`\n \n config.updateConversations?.(formHtml, data)\n // const formHtml = finalHtml.replace(\n // RegExp(/\\[[^>]*]/gm), \n // `<div id=${newSurveyDomId} style=\"width:${config.controlSettings?.botVersion === \"v1\" ? \"330px\" : \"100%\"}\" class=\"survey-container\"></div>`\n // )\n \n const element = config.element.shadowRoot.querySelector(`#${index === 0 ? currentDomId : newCtrlMessage.id}`)\n \n if (element) {\n element[\"style\"].width = \"100%\"\n element.parentElement[\"style\"].width = \"100%\"\n element.innerHTML = formHtml\n\n // config.getUpdatedChat?.(formHtml, data)(null)\n \n\n // Filter data by agentDataId if available\n if (output.agentDataId && data.controls?.length > 0) {\n const filteredItems = data.controls.filter(\n item => item.agent_data_id === output.agentDataId\n )\n data.controlData = filteredItems.length > 0 ? filteredItems[0] : null\n }\n }\n \n // Render the survey\n setTimeout(() => {\n config.renderSurvey(data)\n }, 100)\n}\n\nasync function handleMultipleControls(\n finalHtml: string,\n data: any,\n currentDomId: string,\n setMessages: any,\n config: EndResponseConfig,\n setSurveyDomId?: (id: string) => void,\n inputType?: string\n): Promise<void> {\n \n const controlOutput = splitContentMultiple(finalHtml)\n \n if (!controlOutput || controlOutput.parts.length === 0) {\n console.warn('No parts found in splitContentMultiple')\n return\n }\n \n // Process each part sequentially\n for (let index = 0; index < controlOutput.parts.length; index++) {\n const output = controlOutput.parts[index]\n \n if (output.type === 'text' && output.content.trim().length > 0) {\n if (index === 0) {\n // Update first message\n config.updateConversations?.(output.content, data)\n config.updateChatMessage?.(output.content, data)\n \n } else {\n\n if(inputType === \"bot\") {\n // Create new text message\n const newMessage = generateMessage(config.conversationId)\n\n newMessage.text = output.content\n \n setMessages(newMessage)\n \n } else if(inputType === \"cta\") {\n const newMessage = config.getUpdatedChat(output.content, data)\n setMessages(newMessage)\n }\n // // Wait for DOM render then hide spinner\n // await waitForElementRender(`#${newMessage.id}`, config.element)\n // await config.hideSpinner(newMessage)\n }\n }\n \n if (output.type === 'control' && output.controlType) { \n switch (output.controlType) {\n case \"form\":\n await handleFormControl( data, config, setSurveyDomId, inputType, setMessages,output, currentDomId, index)\n break\n case \"carousel\":\n case \"list\":\n case \"template\":\n // Proceed to handle control below\n await handleTemplateControl( data, config, output, setMessages, inputType)\n break\n default:\n console.warn(`Unknown control type: ${output.controlType}`)\n continue // Skip unknown control types\n }\n \n }\n \n \n // Small delay between parts\n if (index < controlOutput.parts.length - 1) {\n await new Promise(resolve => setTimeout(resolve, 200))\n }\n }\n}\n\nasync function handleTemplateControl(\n data: any,\n config: EndResponseConfig,\n output: any,\n setMessages: any,\n inputType?: string\n): Promise<void> {\n \n let newCtrlMessage: any;\n \n if(inputType === \"bot\") {\n \n // Create new control message\n newCtrlMessage = generateMessage(config.conversationId)\n \n setMessages(newCtrlMessage)\n }\n else if(inputType === \"cta\") {\n newCtrlMessage = config.getUpdatedChat(\"\", data)\n setMessages(newCtrlMessage)\n }\n \n // Wait for DOM render\n await waitForElementRender(`#${newCtrlMessage.id}`, config.element)\n \n \n \n // Filter data by agentDataId if available\n if (output.agentDataId && data.controls?.length > 0) {\n const filteredItems = data.controls.filter(\n item => item.agent_data_id === output.agentDataId\n )\n\n data.controlData = filteredItems.length > 0 ? filteredItems[0].custom_data : null\n data.messageId = newCtrlMessage.id\n data.controlType = output.controlType\n }\n\n const controlData = data.controlData ? {\n ...data,\n messageId: newCtrlMessage.id,\n } : data\n \n // Set custom styles\n if (controlData.controlData?.data?.source) {\n controlData.controlData.data.source.customCss = config.customStyle || \"\"\n controlData.controlData.data.source.customJs = config.customJS || \"\"\n }\n \n\n requestAnimationFrame(async () => {\n\n setTimeout(async () => {\n // Process the control\n if (output.controlType === \"template\") {\n await config.processTemplateData(newCtrlMessage, controlData)\n } else {\n await config.processChatData(newCtrlMessage, controlData)\n }\n \n // Hide spinner after processing\n await config.hideSpinner(newCtrlMessage)\n }, 100)\n })\n}\n\n\nasync function handleRegularContent(\n finalHtml: string,\n currentDomId: string,\n config: EndResponseConfig\n): Promise<void> {\n \n const element = config.element.shadowRoot.querySelector(`#${currentDomId}`)\n if (element) {\n element.innerHTML = finalHtml\n config.checkHighlightcode(currentDomId)\n config.updateConversations?.(finalHtml, {})\n config.addEventListeners(`#${currentDomId}`)\n }\n}\n\n// Helper function to wait for element to render\nexport function waitForElementRender(selector: string, element: HTMLElement): Promise<HTMLElement> {\n return new Promise((resolve) => {\n const checkElement = () => {\n const el = element.shadowRoot?.querySelector(selector) as HTMLElement\n if (el) {\n resolve(el)\n } else {\n requestAnimationFrame(checkElement)\n }\n }\n checkElement()\n })\n}\n\n"]}
@@ -1,7 +1,7 @@
1
1
  import { E as Env, r as registerInstance, c as createEvent, h, a as Host, g as getElement } from './index-9f7965fd.js';
2
2
  import { l as lookup } from './index-a2a24524.js';
3
3
  import { s as showdown } from './showdown-bfc2ff79.js';
4
- import { r as renderSurvey, p as processChatData, h as handleEndResponse, a as hljs } from './endResponseHelper-0a8350cd.js';
4
+ import { r as renderSurvey, p as processChatData, h as handleEndResponse, a as hljs } from './endResponseHelper-ca69e161.js';
5
5
  import { L as Logger, a as LogLevel } from './logger-2e094dec.js';
6
6
  import { g as getEndpoint, a as generateUUID, b as getOrCreateVisitorId, c as checkStatus, f as formatTimestamp, d as getConfig, e as getMetaInfo, h as cleanupOldConversations, i as generateMessage } from './utils-75c1493f.js';
7
7
  import { H as Handlebars } from './index-04121734.js';
@@ -1273,7 +1273,7 @@ const Ai12zBot = class {
1273
1273
  // }
1274
1274
  // ✅ Simplified renderSurvey method
1275
1275
  this.renderSurvey = async (chat) => {
1276
- console.log("Rendering survey for DOM ID:", this.surveyDomId);
1276
+ // console.log("Rendering survey for DOM ID:", this.surveyDomId)
1277
1277
  if (!this.surveyDomId) {
1278
1278
  console.warn("Survey DOM ID is empty");
1279
1279
  return;
@@ -1303,7 +1303,6 @@ const Ai12zBot = class {
1303
1303
  }
1304
1304
  };
1305
1305
  this.handleMessage = (data, aiMessageId) => {
1306
- console.log("handleMessage called with data: and aiMessageId:", aiMessageId);
1307
1306
  const converter = new showdown.Converter();
1308
1307
  // const aiMessageBubble = document.getElementById(aiMessageId);
1309
1308
  // const aiMessageBubble = await waitForElement(`#${aiMessageId}`, this.el)
@@ -1320,7 +1319,6 @@ const Ai12zBot = class {
1320
1319
  let html = converter.makeHtml(bubbleText);
1321
1320
  // Append new content to the existing chat bubble
1322
1321
  aiMessageBubble.innerHTML = html;
1323
- console.log("Updated AI message bubble with ID:", aiMessageBubble.innerHTML);
1324
1322
  };
1325
1323
  this.updateScreenSize = () => {
1326
1324
  // console.log("updateScreenSize")
@@ -2116,7 +2114,7 @@ const Ai12zBot = class {
2116
2114
  insightId: (_f = data === null || data === void 0 ? void 0 : data.insightId) !== null && _f !== void 0 ? _f : null,
2117
2115
  sender: (_g = data === null || data === void 0 ? void 0 : data.sender) !== null && _g !== void 0 ? _g : null,
2118
2116
  };
2119
- this.addEventListeners(`#${this.currentDomId}`);
2117
+ // this.addEventListeners(`#${this.currentDomId}`)
2120
2118
  this.messages = this.messages.map(item => (item.id === this.currentDomId ? updatedmsg : item));
2121
2119
  requestAnimationFrame(() => {
2122
2120
  this.checkHighlightcode(this.currentDomId);
@@ -2190,7 +2188,6 @@ const Ai12zBot = class {
2190
2188
  }
2191
2189
  }
2192
2190
  addEventListeners(msgId) {
2193
- console.log("Adding event listeners for message ID:", msgId);
2194
2191
  const container = this.el.shadowRoot.querySelector(msgId);
2195
2192
  if (container) {
2196
2193
  this.buttons.forEach(button => {
@@ -2744,4 +2741,4 @@ Ai12zBot.style = Ai12zBotStyle0 + (Ai12zBotStyle1 + (Ai12zBotStyle2 + Ai12zBotSt
2744
2741
 
2745
2742
  export { Ai12zBot as A };
2746
2743
 
2747
- //# sourceMappingURL=ai12z-bot-60210b29.js.map
2744
+ //# sourceMappingURL=ai12z-bot-f0e74a1e.js.map