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.
- package/dist/cjs/{ai12z-bot-f536d432.js → ai12z-bot-ef183250.js} +4 -7
- package/dist/cjs/ai12z-bot-ef183250.js.map +1 -0
- package/dist/cjs/ai12z-bot.cjs.entry.js +2 -2
- package/dist/cjs/ai12z-chat_2.cjs.entry.js +1 -1
- package/dist/cjs/{endResponseHelper-aedf327c.js → endResponseHelper-d17497f0.js} +25 -12
- package/dist/cjs/{endResponseHelper-aedf327c.js.map → endResponseHelper-d17497f0.js.map} +1 -1
- package/dist/cjs/index.cjs.js +2 -2
- package/dist/collection/components/ai12z-bot/ai12z-bot.js +2 -5
- package/dist/collection/components/ai12z-bot/ai12z-bot.js.map +1 -1
- package/dist/collection/utils/endResponseHelper.js +24 -11
- package/dist/collection/utils/endResponseHelper.js.map +1 -1
- package/dist/esm/{ai12z-bot-60210b29.js → ai12z-bot-f0e74a1e.js} +4 -7
- package/dist/esm/ai12z-bot-f0e74a1e.js.map +1 -0
- package/dist/esm/ai12z-bot.entry.js +2 -2
- package/dist/esm/ai12z-chat_2.entry.js +1 -1
- package/dist/esm/{endResponseHelper-0a8350cd.js → endResponseHelper-ca69e161.js} +25 -12
- package/dist/esm/{endResponseHelper-0a8350cd.js.map → endResponseHelper-ca69e161.js.map} +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/library/index.esm.js +1 -1
- package/dist/library/library.esm.js +1 -1
- package/dist/library/{p-1a65f5ce.js → p-1d7b52c4.js} +2 -2
- package/dist/library/p-1d7b52c4.js.map +1 -0
- package/dist/library/{p-28b7f8c0.entry.js → p-4119ec5c.entry.js} +2 -2
- package/dist/library/p-86ea805d.entry.js +2 -0
- package/dist/library/{p-a1af8611.js → p-c3c93ba2.js} +2 -2
- package/dist/library/{p-a1af8611.js.map → p-c3c93ba2.js.map} +1 -1
- package/package.json +2 -2
- package/dist/cjs/ai12z-bot-f536d432.js.map +0 -1
- package/dist/esm/ai12z-bot-60210b29.js.map +0 -1
- package/dist/library/p-1a65f5ce.js.map +0 -1
- package/dist/library/p-4626e0e6.entry.js +0 -2
- /package/dist/library/{p-28b7f8c0.entry.js.map → p-4119ec5c.entry.js.map} +0 -0
- /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(
|
|
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
|
-
|
|
48
|
-
|
|
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(
|
|
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":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AA6BnH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAyB;;IAC/D,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAA;IACjD,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,CAAA;IAEjG,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAA;QAC1C,IAAI,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAE/C,uCAAuC;QACvC,SAAS,GAAG,gBAAgB,CAAC,SAAS,EAAE,CAAA,MAAA,MAAM,CAAC,eAAe,0CAAE,UAAU,KAAI,QAAQ,CAAC,CAAA;QACvF,MAAM,YAAY,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAA;QAClD,SAAS,GAAG,YAAY,CAAC,IAAI,CAAA;QAC7B,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;QAEhC,8BAA8B;QAC9B,MAAM,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAA;QAElE,IAAI,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACvC,MAAM,kBAAkB,CAAC,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,CAAC,CAAA;QACzH,CAAC;aAAM,CAAC;YACN,0CAA0C;YAC1C,MAAM,oBAAoB,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC,CAAA;QAC7D,CAAC;IAEH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAA;QACnD,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,SAAiB,EACjB,IAAS,EACT,YAAoB,EACpB,WAAgB,EAChB,cAAwB,EACxB,MAAyB,EACzB,cAAqC,EACrC,SAAkB;IAGnB,IAAG,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAA;QAC1D,MAAM,oBAAoB,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC,CAAA;IAC7D,CAAC;SAAM,IAAG,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,6BAA6B;QAC7B,MAAM,sBAAsB,CAAC,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,CAAC,CAAA;IAC7G,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,SAAiB,EACjB,IAAS,EACT,YAAoB,EACpB,MAAyB,EACzB,cAAqC,EACrC,MAAY;;IAEZ,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,YAAY,CAAC,CAAA;IAClD,MAAM,cAAc,GAAG,iBAAiB,YAAY,EAAE,EAAE,CAAA;IAExD,IAAI,cAAc,EAAE,CAAC;QACnB,cAAc,CAAC,cAAc,CAAC,CAAA;IAChC,CAAC;IAED,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAChC,MAAM,CAAC,YAAY,CAAC,EACpB,WAAW,cAAc,iBAAiB,CAAA,MAAA,MAAM,CAAC,eAAe,0CAAE,UAAU,MAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,mCAAmC,CAC5I,CAAA;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,YAAY,EAAE,CAAC,CAAA;IAE3E,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,GAAG,MAAM,CAAA;QAC/B,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,GAAG,MAAM,CAAA;QAC7C,OAAO,CAAC,SAAS,GAAG,QAAQ,CAAA;QAE5B,gDAAgD;QAChD,MAAA,MAAM,CAAC,mBAAmB,uDAAG,QAAQ,EAAE,IAAI,CAAC,CAAA;QAE5C,0CAA0C;QACxC,IAAI,MAAM,CAAC,WAAW,IAAI,CAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,MAAM,IAAG,CAAC,EAAE,CAAC;YACpD,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CACxC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,KAAK,MAAM,CAAC,WAAW,CAClD,CAAA;YACD,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAAE,aAAa,CAAC,CAAA;YAC9D,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;YACrE,OAAO,CAAC,GAAG,CAAC,cAAc,aAAa,CAAC,MAAM,2BAA2B,MAAM,CAAC,WAAW,EAAE,CAAC,CAAA;QAChG,CAAC;IACL,CAAC;IAED,oBAAoB;IACpB,UAAU,CAAC,GAAG,EAAE;QACd,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;IAC3B,CAAC,EAAE,GAAG,CAAC,CAAA;AACT,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,SAAiB,EACjB,IAAS,EACT,YAAoB,EACpB,WAAgB,EAChB,MAAyB,EACzB,cAAqC,EACrC,SAAkB;;IAGlB,MAAM,aAAa,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAA;IAErD,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvD,OAAO,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAA;QACtD,OAAM;IACR,CAAC;IAED,iCAAiC;IACjC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAChE,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAEzC,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/D,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBAChB,uBAAuB;gBACvB,MAAA,MAAM,CAAC,mBAAmB,uDAAG,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;gBAClD,MAAA,MAAM,CAAC,iBAAiB,uDAAG,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;YAElD,CAAC;iBAAM,CAAC;gBAEN,IAAG,SAAS,KAAK,KAAK,EAAE,CAAC;oBACvB,0BAA0B;oBAC1B,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;oBAEzD,UAAU,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO,CAAA;oBAEhC,WAAW,CAAC,UAAU,CAAC,CAAA;gBAEzB,CAAC;qBAAM,IAAG,SAAS,KAAK,KAAK,EAAE,CAAC;oBAC9B,MAAM,UAAU,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;oBAC9D,WAAW,CAAC,UAAU,CAAC,CAAA;gBACzB,CAAC;gBACD,2CAA2C;gBAC3C,kEAAkE;gBAClE,uCAAuC;YACzC,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,+BAA+B,MAAM,CAAC,WAAW,EAAE,CAAC,CAAA;YAGhE,QAAQ,MAAM,CAAC,WAAW,EAAE,CAAC;gBAC3B,KAAK,MAAM;oBACT,MAAM,iBAAiB,CAAC,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,CAAA;oBACtF,MAAK;gBACP,KAAK,UAAU,CAAC;gBAChB,KAAK,MAAM,CAAC;gBACZ,KAAK,UAAU;oBACb,kCAAkC;oBAClC,MAAM,qBAAqB,CAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,CAAA;oBAC1E,MAAK;gBACP;oBACE,OAAO,CAAC,IAAI,CAAC,yBAAyB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAA;oBAC3D,SAAQ,CAAE,6BAA6B;YAC3C,CAAC;QAEH,CAAC;QAGD,4BAA4B;QAC5B,IAAI,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAA;QACxD,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,IAAS,EACT,MAAyB,EACzB,MAAW,EACX,WAAgB,EAChB,SAAkB;;IAGd,IAAI,cAAmB,CAAC;IAExB,IAAG,SAAS,KAAK,KAAK,EAAE,CAAC;QAEzB,6BAA6B;QAC7B,cAAc,GAAG,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;QAEvD,WAAW,CAAC,cAAc,CAAC,CAAA;IAC3B,CAAC;SACI,IAAG,SAAS,KAAK,KAAK,EAAE,CAAC;QAC5B,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QAChD,WAAW,CAAC,cAAc,CAAC,CAAA;IAC7B,CAAC;IAED,sBAAsB;IACtB,MAAM,oBAAoB,CAAC,IAAI,cAAc,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;IAInE,0CAA0C;IAC1C,IAAI,MAAM,CAAC,WAAW,IAAI,CAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,MAAM,IAAG,CAAC,EAAE,CAAC;QACpD,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CACxC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,KAAK,MAAM,CAAC,WAAW,CAClD,CAAA;QAED,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAA;QACjF,IAAI,CAAC,SAAS,GAAG,cAAc,CAAC,EAAE,CAAA;QAClC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAA;IACvC,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,iCACjC,IAAI,KACP,SAAS,EAAE,cAAc,CAAC,EAAE,IAC5B,CAAC,CAAC,IAAI,CAAA;IAER,oBAAoB;IACpB,IAAI,MAAA,MAAA,WAAW,CAAC,WAAW,0CAAE,IAAI,0CAAE,MAAM,EAAE,CAAC;QAC1C,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,CAAA;QACxE,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAA;IACtE,CAAC;IAGD,qBAAqB,CAAC,KAAK,IAAI,EAAE;QAEjC,UAAU,CAAC,KAAK,IAAI,EAAE;YAChB,sBAAsB;YACtB,IAAI,MAAM,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;gBACtC,MAAM,MAAM,CAAC,mBAAmB,CAAC,cAAc,EAAE,WAAW,CAAC,CAAA;YAC/D,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,CAAC,eAAe,CAAC,cAAc,EAAE,WAAW,CAAC,CAAA;YAC3D,CAAC;YAED,gCAAgC;YAChC,MAAM,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,CAAA;QAC5C,CAAC,EAAE,GAAG,CAAC,CAAA;IACX,CAAC,CAAC,CAAA;AACN,CAAC;AAGD,KAAK,UAAU,oBAAoB,CACjC,SAAiB,EACjB,YAAoB,EACpB,MAAyB;;IAGzB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,YAAY,EAAE,CAAC,CAAA;IAC3E,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,SAAS,GAAG,SAAS,CAAA;QAC7B,MAAM,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAA;QACvC,MAAA,MAAM,CAAC,mBAAmB,uDAAG,SAAS,EAAE,EAAE,CAAC,CAAA;IAC7C,CAAC;AACH,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,oBAAoB,CAAC,QAAgB,EAAE,OAAoB;IACzE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,YAAY,GAAG,GAAG,EAAE;;YACxB,MAAM,EAAE,GAAG,MAAA,OAAO,CAAC,UAAU,0CAAE,aAAa,CAAC,QAAQ,CAAgB,CAAA;YACrE,IAAI,EAAE,EAAE,CAAC;gBACP,OAAO,CAAC,EAAE,CAAC,CAAA;YACb,CAAC;iBAAM,CAAC;gBACN,qBAAqB,CAAC,YAAY,CAAC,CAAA;YACrC,CAAC;QACH,CAAC,CAAA;QACD,YAAY,EAAE,CAAA;IAChB,CAAC,CAAC,CAAA;AACJ,CAAC","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":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AA6BnH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAyB;;IAC/D,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,CAAA;IAEjG,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAA;QAC1C,IAAI,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAE/C,uCAAuC;QACvC,SAAS,GAAG,gBAAgB,CAAC,SAAS,EAAE,CAAA,MAAA,MAAM,CAAC,eAAe,0CAAE,UAAU,KAAI,QAAQ,CAAC,CAAA;QACvF,MAAM,YAAY,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAA;QAClD,SAAS,GAAG,YAAY,CAAC,IAAI,CAAA;QAC7B,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;QAEhC,8BAA8B;QAC9B,MAAM,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAA;QAElE,IAAI,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACvC,MAAM,kBAAkB,CAAC,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,EAAG,SAAS,CAAC,CAAA;QAC1H,CAAC;aAAM,CAAC;YACN,0CAA0C;YAC1C,MAAM,oBAAoB,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC,CAAA;QAC7D,CAAC;IAEH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAA;QACnD,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,SAAiB,EACjB,IAAS,EACT,YAAoB,EACpB,WAAgB,EAChB,cAAwB,EACxB,MAAyB,EACzB,cAAqC,EACrC,SAAkB;IAGnB,IAAG,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,oBAAoB,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC,CAAA;IAC7D,CAAC;SAAM,IAAG,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,6BAA6B;QAC7B,MAAM,sBAAsB,CAAC,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,CAAC,CAAA;IAC7G,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,IAAS,EACT,MAAyB,EACzB,cAAqC,EACrC,SAAkB,EAClB,WAAiB,EACjB,MAAY,EACZ,YAAqB,EACrB,KAAc;;IAEd,MAAM,cAAc,GAAG,iBAAiB,YAAY,EAAE,EAAE,CAAA;IAExD,IAAI,cAAc,EAAE,CAAC;QACnB,cAAc,CAAC,cAAc,CAAC,CAAA;IAChC,CAAC;IAEC,IAAI,cAAmB,CAAC;IAGxB,IAAG,KAAK,KAAK,CAAC,EAAE,CAAC;QAEf,IAAG,SAAS,KAAK,KAAK,EAAE,CAAC;YAEzB,6BAA6B;YAC7B,cAAc,GAAG,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;YAEvD,WAAW,CAAC,cAAc,CAAC,CAAA;QAC3B,CAAC;aACI,IAAG,SAAS,KAAK,KAAK,EAAE,CAAC;YAC5B,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;YAChD,WAAW,CAAC,cAAc,CAAC,CAAA;QAC7B,CAAC;QACE,sBAAsB;QACzB,MAAM,oBAAoB,CAAC,IAAI,cAAc,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;IACrE,CAAC;IAMC,MAAM,QAAQ,GAAG,WAAW,cAAc,iBAAiB,CAAA,MAAA,MAAM,CAAC,eAAe,0CAAE,UAAU,MAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,mCAAmC,CAAA;IAE5J,MAAA,MAAM,CAAC,mBAAmB,uDAAG,QAAQ,EAAE,IAAI,CAAC,CAAA;IAChD,sCAAsC;IACtC,2BAA2B;IAC3B,gJAAgJ;IAChJ,IAAI;IAEJ,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,CAAA;IAE7G,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,GAAG,MAAM,CAAA;QAC/B,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,GAAG,MAAM,CAAA;QAC7C,OAAO,CAAC,SAAS,GAAG,QAAQ,CAAA;QAE5B,gDAAgD;QAGhD,0CAA0C;QACxC,IAAI,MAAM,CAAC,WAAW,IAAI,CAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,MAAM,IAAG,CAAC,EAAE,CAAC;YACpD,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CACxC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,KAAK,MAAM,CAAC,WAAW,CAClD,CAAA;YACD,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QACvE,CAAC;IACL,CAAC;IAED,oBAAoB;IACpB,UAAU,CAAC,GAAG,EAAE;QACd,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;IAC3B,CAAC,EAAE,GAAG,CAAC,CAAA;AACT,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,SAAiB,EACjB,IAAS,EACT,YAAoB,EACpB,WAAgB,EAChB,MAAyB,EACzB,cAAqC,EACrC,SAAkB;;IAGlB,MAAM,aAAa,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAA;IAErD,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvD,OAAO,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAA;QACtD,OAAM;IACR,CAAC;IAED,iCAAiC;IACjC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAChE,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAEzC,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/D,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBAChB,uBAAuB;gBACvB,MAAA,MAAM,CAAC,mBAAmB,uDAAG,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;gBAClD,MAAA,MAAM,CAAC,iBAAiB,uDAAG,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;YAElD,CAAC;iBAAM,CAAC;gBAEN,IAAG,SAAS,KAAK,KAAK,EAAE,CAAC;oBACvB,0BAA0B;oBAC1B,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;oBAEzD,UAAU,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO,CAAA;oBAEhC,WAAW,CAAC,UAAU,CAAC,CAAA;gBAEzB,CAAC;qBAAM,IAAG,SAAS,KAAK,KAAK,EAAE,CAAC;oBAC9B,MAAM,UAAU,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;oBAC9D,WAAW,CAAC,UAAU,CAAC,CAAA;gBACzB,CAAC;gBACD,2CAA2C;gBAC3C,kEAAkE;gBAClE,uCAAuC;YACzC,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACpD,QAAQ,MAAM,CAAC,WAAW,EAAE,CAAC;gBAC3B,KAAK,MAAM;oBACT,MAAM,iBAAiB,CAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAC,MAAM,EAAE,YAAY,EAAE,KAAK,CAAC,CAAA;oBAC1G,MAAK;gBACP,KAAK,UAAU,CAAC;gBAChB,KAAK,MAAM,CAAC;gBACZ,KAAK,UAAU;oBACb,kCAAkC;oBAClC,MAAM,qBAAqB,CAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,CAAA;oBAC1E,MAAK;gBACP;oBACE,OAAO,CAAC,IAAI,CAAC,yBAAyB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAA;oBAC3D,SAAQ,CAAE,6BAA6B;YAC3C,CAAC;QAEH,CAAC;QAGD,4BAA4B;QAC5B,IAAI,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAA;QACxD,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,IAAS,EACT,MAAyB,EACzB,MAAW,EACX,WAAgB,EAChB,SAAkB;;IAGd,IAAI,cAAmB,CAAC;IAExB,IAAG,SAAS,KAAK,KAAK,EAAE,CAAC;QAEzB,6BAA6B;QAC7B,cAAc,GAAG,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;QAEvD,WAAW,CAAC,cAAc,CAAC,CAAA;IAC3B,CAAC;SACI,IAAG,SAAS,KAAK,KAAK,EAAE,CAAC;QAC5B,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QAChD,WAAW,CAAC,cAAc,CAAC,CAAA;IAC7B,CAAC;IAED,sBAAsB;IACtB,MAAM,oBAAoB,CAAC,IAAI,cAAc,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;IAInE,0CAA0C;IAC1C,IAAI,MAAM,CAAC,WAAW,IAAI,CAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,MAAM,IAAG,CAAC,EAAE,CAAC;QACpD,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CACxC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,KAAK,MAAM,CAAC,WAAW,CAClD,CAAA;QAED,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAA;QACjF,IAAI,CAAC,SAAS,GAAG,cAAc,CAAC,EAAE,CAAA;QAClC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAA;IACvC,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,iCACjC,IAAI,KACP,SAAS,EAAE,cAAc,CAAC,EAAE,IAC5B,CAAC,CAAC,IAAI,CAAA;IAER,oBAAoB;IACpB,IAAI,MAAA,MAAA,WAAW,CAAC,WAAW,0CAAE,IAAI,0CAAE,MAAM,EAAE,CAAC;QAC1C,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,CAAA;QACxE,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAA;IACtE,CAAC;IAGD,qBAAqB,CAAC,KAAK,IAAI,EAAE;QAEjC,UAAU,CAAC,KAAK,IAAI,EAAE;YAChB,sBAAsB;YACtB,IAAI,MAAM,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;gBACtC,MAAM,MAAM,CAAC,mBAAmB,CAAC,cAAc,EAAE,WAAW,CAAC,CAAA;YAC/D,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,CAAC,eAAe,CAAC,cAAc,EAAE,WAAW,CAAC,CAAA;YAC3D,CAAC;YAED,gCAAgC;YAChC,MAAM,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,CAAA;QAC5C,CAAC,EAAE,GAAG,CAAC,CAAA;IACX,CAAC,CAAC,CAAA;AACN,CAAC;AAGD,KAAK,UAAU,oBAAoB,CACjC,SAAiB,EACjB,YAAoB,EACpB,MAAyB;;IAGzB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,YAAY,EAAE,CAAC,CAAA;IAC3E,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,SAAS,GAAG,SAAS,CAAA;QAC7B,MAAM,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAA;QACvC,MAAA,MAAM,CAAC,mBAAmB,uDAAG,SAAS,EAAE,EAAE,CAAC,CAAA;QAC3C,MAAM,CAAC,iBAAiB,CAAC,IAAI,YAAY,EAAE,CAAC,CAAA;IAC9C,CAAC;AACH,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,oBAAoB,CAAC,QAAgB,EAAE,OAAoB;IACzE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,YAAY,GAAG,GAAG,EAAE;;YACxB,MAAM,EAAE,GAAG,MAAA,OAAO,CAAC,UAAU,0CAAE,aAAa,CAAC,QAAQ,CAAgB,CAAA;YACrE,IAAI,EAAE,EAAE,CAAC;gBACP,OAAO,CAAC,EAAE,CAAC,CAAA;YACb,CAAC;iBAAM,CAAC;gBACN,qBAAqB,CAAC,YAAY,CAAC,CAAA;YACrC,CAAC;QACH,CAAC,CAAA;QACD,YAAY,EAAE,CAAA;IAChB,CAAC,CAAC,CAAA;AACJ,CAAC","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-
|
|
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-
|
|
2744
|
+
//# sourceMappingURL=ai12z-bot-f0e74a1e.js.map
|