ai12z 2.0.13 → 2.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/ai12z-bot_10.cjs.entry.js +1 -1
- package/dist/cjs/{ai12z-cta-4a30aa57.js → ai12z-cta-1cde6caf.js} +15 -11
- package/dist/cjs/ai12z-cta-1cde6caf.js.map +1 -0
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/collection/components/ai12z-bot/ai12z-bot.js +12 -8
- package/dist/collection/components/ai12z-bot/ai12z-bot.js.map +1 -1
- package/dist/esm/ai12z-bot_10.entry.js +2 -2
- package/dist/esm/{ai12z-cta-4beaa3fc.js → ai12z-cta-0a5c610a.js} +13 -9
- package/dist/esm/ai12z-cta-0a5c610a.js.map +1 -0
- package/dist/esm/index.js +1 -1
- package/dist/library/index.esm.js +1 -1
- package/dist/library/library.esm.js +1 -1
- package/dist/library/{p-d34a478c.js → p-0066c5d4.js} +2 -2
- package/dist/library/p-0066c5d4.js.map +1 -0
- package/dist/library/{p-355985e2.entry.js → p-6f92d30a.entry.js} +2 -2
- package/package.json +2 -2
- package/dist/cjs/ai12z-cta-4a30aa57.js.map +0 -1
- package/dist/esm/ai12z-cta-4beaa3fc.js.map +0 -1
- package/dist/library/p-d34a478c.js.map +0 -1
- /package/dist/library/{p-355985e2.entry.js.map → p-6f92d30a.entry.js.map} +0 -0
package/dist/cjs/index.cjs.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
const ai12zCta = require('./ai12z-cta-
|
|
5
|
+
const ai12zCta = require('./ai12z-cta-1cde6caf.js');
|
|
6
6
|
const ai12zKnowledgeBox = require('./ai12z-knowledge-box-5fd8f3c5.js');
|
|
7
7
|
require('./index-171f7ecf.js');
|
|
8
8
|
require('./utils-e71f939d.js');
|
|
@@ -319,10 +319,14 @@ export class Ai12zBot {
|
|
|
319
319
|
this.socket.off("response");
|
|
320
320
|
this.socket.off("end_response");
|
|
321
321
|
// console.log("currentDomId changed")
|
|
322
|
-
|
|
322
|
+
// console.log("questionCounter", this.botSettings.maxQuestion)
|
|
323
|
+
if (this.botSettings.maxQuestion === undefined || this.botSettings.maxQuestion === 0) {
|
|
324
|
+
this.botSettings.maxQuestion = 0;
|
|
325
|
+
this.handleBotMessages();
|
|
326
|
+
}
|
|
327
|
+
else if (this.questionCounter <= this.botSettings.maxQuestion) {
|
|
323
328
|
this.handleBotMessages();
|
|
324
329
|
}
|
|
325
|
-
// this.handleBotMessages()
|
|
326
330
|
}
|
|
327
331
|
generateMessage() {
|
|
328
332
|
return {
|
|
@@ -704,26 +708,26 @@ export class Ai12zBot {
|
|
|
704
708
|
width: (_b = (_a = this.botSettings) === null || _a === void 0 ? void 0 : _a.botWidth) !== null && _b !== void 0 ? _b : "35%",
|
|
705
709
|
height: (_d = (_c = this.botSettings) === null || _c === void 0 ? void 0 : _c.botHeight) !== null && _d !== void 0 ? _d : "80%",
|
|
706
710
|
};
|
|
707
|
-
return (h("div", { key: '
|
|
711
|
+
return (h("div", { key: '71d35538417b5440c700a3c2702aa9f1ea947490' }, h("div", { key: '4565aab18d81809aa7eea4a33306789f406e74cf', class: {
|
|
708
712
|
"right": ((_f = this.botSettings) === null || _f === void 0 ? void 0 : _f.botPosition) === "right",
|
|
709
713
|
"left": ((_g = this.botSettings) === null || _g === void 0 ? void 0 : _g.botPosition) === "left",
|
|
710
714
|
"custom-floating-icon ": this.isBot,
|
|
711
715
|
"hide-chatbot": this.isChatOpen,
|
|
712
|
-
}, onClick: () => this.action("open") }, !this.isBot && ((_h = this.botSettings) === null || _h === void 0 ? void 0 : _h.botPosition) && this.defaultTemplate(), this.isBot && h("slot", { key: '
|
|
716
|
+
}, onClick: () => this.action("open") }, !this.isBot && ((_h = this.botSettings) === null || _h === void 0 ? void 0 : _h.botPosition) && this.defaultTemplate(), this.isBot && h("slot", { key: '4f1f3a383d85d486ff7f06ef433541ff1c0931ae', name: "bot" })), !this.isChatOpen && ((_k = (_j = this.botSettings) === null || _j === void 0 ? void 0 : _j.popover) === null || _k === void 0 ? void 0 : _k.returnMessage) && h("bot-popover", { key: 'e0df075649303a47af780b08b0061d2e6154a5e4', popoverConfig: (_l = this.botSettings) === null || _l === void 0 ? void 0 : _l.popover }), this.isChatOpen && (h("div", { key: 'bb9dc42044aa05c689305ed18d978da4de2d3d8b', class: {
|
|
713
717
|
"chat-window": true,
|
|
714
718
|
"chat-window-open": this.isChatOpen,
|
|
715
719
|
"chat-window-close": !this.isChatOpen,
|
|
716
720
|
"chat-right": ((_m = this.botSettings) === null || _m === void 0 ? void 0 : _m.botPosition) === "right",
|
|
717
721
|
"chat-left": ((_o = this.botSettings) === null || _o === void 0 ? void 0 : _o.botPosition) === "left",
|
|
718
|
-
}, style: style }, !this.hideInput && (h("div", { key: '
|
|
722
|
+
}, style: style }, !this.hideInput && (h("div", { key: '2504320ea26c91b1eaacb82af46d9a6ebc04e02b', class: "chat-header" }, ((_q = (_p = this.botSettings) === null || _p === void 0 ? void 0 : _p.buttons) === null || _q === void 0 ? void 0 : _q.length) > 0 && (h("button", { key: '562929d8d747c17c972b493adda9f3e088d8e501', class: "hamburger", onClick: e => this.toggleMenu(e) }, "\u2630 ")), h("img", { key: 'b6042552918f4f308f8138b3a7e70dd72c715da7', class: "avatar", src: (_s = (_r = this.botSettings) === null || _r === void 0 ? void 0 : _r.botLogo) !== null && _s !== void 0 ? _s : this.botlogo, alt: "Avatar" }), h("span", { key: '75c3d6c3e3ccb4bb56715b268d635ae6ce71436d', class: "chat-name" }, (_t = this.botSettings) === null || _t === void 0 ? void 0 : _t.botName), this.showHistory && (h("button", { key: '92f25d91c948b099fe0bdbf87c2666d20c77c649', onClick: () => this.loadConversation() }, h("svg", { key: 'ee0cd5d6b4d497058662a3d8c98a187387e3a7a5', viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", fill: "#ffffff", width: "25", height: "25" }, h("path", { key: '0890f7d91816c6bca4e5196a3f36bf125c1efbf2', fill: "none", d: "M0 0L24 0 24 24 0 24z" }), " ", h("path", { key: '89563d07884ce7d0a37f8aa15693cad541b6d37b', d: "M12 2c5.523 0 10 4.477 10 10s-4.477 10-10 10c-1.702 0-3.305-.425-4.708-1.175L2 22l1.176-5.29C2.426 15.306 2 13.703 2 12 2 6.477 6.477 2 12 2zm0 2c-4.418 0-8 3.582-8 8 0 1.335.326 2.618.94 3.766l.35.654-.656 2.946 2.948-.654.653.349c1.148.614 2.43.939 3.765.939 4.418 0 8-3.582 8-8s-3.582-8-8-8zm1 3v5h4v2h-6V7h2z" }), " "))), h("button", { key: '5cf3b93ea9afff4e114124783d6b71f1d80a3324', class: "minimizebtn", onClick: () => this.action("minimize") }, h("svg", { key: '09620f8f5c49e8944d0384f0a47ddb2575a10776', fill: "white", height: "20px", width: "20px", version: "1.1", id: "Layer_1", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 512 512" }, h("path", { key: '125cb34f68e273b8966b1785584426834fb5c6f7', d: "M505.752,6.248c-8.331-8.331-21.839-8.331-30.17,0L320,161.83V64c0-11.782-9.551-21.333-21.333-21.333 c-11.782,0-21.333,9.551-21.333,21.333v149.333c0,0.007,0.001,0.015,0.001,0.022c0.001,0.695,0.037,1.39,0.105,2.083 c0.031,0.318,0.091,0.627,0.136,0.94c0.054,0.375,0.098,0.75,0.171,1.122c0.071,0.359,0.17,0.708,0.259,1.061 c0.081,0.322,0.151,0.645,0.248,0.964c0.105,0.346,0.234,0.68,0.356,1.018c0.114,0.318,0.219,0.639,0.349,0.953 c0.131,0.316,0.284,0.618,0.43,0.926c0.152,0.323,0.296,0.649,0.465,0.966c0.158,0.295,0.338,0.575,0.509,0.861 c0.186,0.311,0.361,0.626,0.564,0.929c0.211,0.316,0.447,0.613,0.674,0.917c0.19,0.253,0.365,0.513,0.568,0.759 c0.892,1.087,1.889,2.085,2.977,2.977c0.246,0.202,0.506,0.378,0.759,0.568c0.304,0.228,0.601,0.463,0.917,0.674 c0.303,0.203,0.618,0.379,0.929,0.564c0.286,0.171,0.566,0.351,0.861,0.509c0.317,0.169,0.643,0.313,0.966,0.465 c0.308,0.145,0.611,0.299,0.926,0.43c0.314,0.13,0.635,0.235,0.953,0.349c0.338,0.122,0.672,0.251,1.018,0.356 c0.318,0.096,0.642,0.167,0.964,0.248c0.353,0.089,0.701,0.188,1.061,0.259c0.372,0.074,0.748,0.118,1.122,0.171 c0.314,0.045,0.622,0.104,0.94,0.136c0.693,0.068,1.388,0.105,2.083,0.105c0.007,0,0.015,0.001,0.022,0.001H448 c11.782,0,21.333-9.551,21.333-21.333c0-11.782-9.551-21.333-21.333-21.333h-97.83L505.752,36.418 C514.083,28.087,514.083,14.58,505.752,6.248z" }), " ", h("path", { key: 'fd4d534531bcefee07caac5d64f0b188fc22d3c5', d: "M234.56,296.562c-0.031-0.318-0.091-0.627-0.136-0.94c-0.054-0.375-0.098-0.75-0.171-1.122 c-0.071-0.359-0.17-0.708-0.259-1.061c-0.081-0.322-0.151-0.645-0.248-0.964c-0.105-0.346-0.234-0.68-0.356-1.018 c-0.114-0.318-0.219-0.639-0.349-0.953c-0.131-0.316-0.284-0.618-0.43-0.926c-0.152-0.323-0.296-0.649-0.465-0.966 c-0.158-0.295-0.338-0.575-0.509-0.861c-0.186-0.311-0.361-0.626-0.564-0.929c-0.211-0.316-0.447-0.613-0.674-0.917 c-0.19-0.253-0.365-0.513-0.568-0.759c-0.892-1.087-1.889-2.085-2.977-2.977c-0.246-0.202-0.506-0.378-0.759-0.568 c-0.304-0.228-0.601-0.463-0.917-0.674c-0.303-0.203-0.618-0.379-0.929-0.564c-0.286-0.171-0.566-0.351-0.861-0.509 c-0.317-0.169-0.643-0.313-0.966-0.465c-0.308-0.145-0.611-0.299-0.926-0.43c-0.314-0.13-0.635-0.235-0.953-0.349 c-0.338-0.122-0.672-0.251-1.018-0.356c-0.318-0.096-0.642-0.167-0.964-0.248c-0.353-0.089-0.701-0.188-1.061-0.259 c-0.372-0.074-0.748-0.118-1.122-0.171c-0.314-0.045-0.622-0.104-0.94-0.136c-0.7-0.069-1.402-0.106-2.105-0.106l0,0H64 c-11.782,0-21.333,9.551-21.333,21.333C42.667,310.449,52.218,320,64,320h97.83L6.248,475.582c-8.331,8.331-8.331,21.839,0,30.17 c8.331,8.331,21.839,8.331,30.17,0L192,350.17V448c0,11.782,9.551,21.333,21.333,21.333c11.782,0,21.333-9.551,21.333-21.333 V298.667l0,0C234.667,297.964,234.629,297.262,234.56,296.562z" }), " ")), h("button", { key: '8a4e5d81f3aed18c104ebf96f39e77fb4eade19b', class: "close-btn", onClick: () => this.action("close") }, h("svg", { key: '44e937b76b0bb3c315c2d5ba134ef712432f5bdd', "aria-hidden": "true", width: "25", height: "13", viewBox: "0 0 23 23", fill: "none" }, h("path", { key: '775cc9b646820631f181be02b6b25fd5849b4573', "fill-rule": "evenodd", "clip-rule": "evenodd", fill: "white", d: "M9.34583 11.2L0.384011 2.23818C-0.128004 1.72617 -0.128004 0.896026 0.384011 0.384011C0.896026 -0.128004 1.72617 -0.128004 2.23818 0.384011L11.2 9.34583L20.1618 0.384011C20.6738 -0.128004 21.504 -0.128004 22.016 0.384011C22.528 0.896026 22.528 1.72617 22.016 2.23818L13.0542 11.2L22.016 20.1618C22.528 20.6738 22.528 21.504 22.016 22.016C21.504 22.528 20.6738 22.528 20.1618 22.016L11.2 13.0542L2.23818 22.016C1.72617 22.528 0.896026 22.528 0.384011 22.016C-0.128003 21.504 -0.128003 20.6738 0.384011 20.1618L9.34583 11.2Z" }))))), h("div", { key: '7926603a4b1293c03b6f5ef4227ffbafa2d2cb5b', class: `menu ${this.isMenuOpen ? "open" : "closed"}`, ref: el => (this.menuRef = el) }, h("ul", { key: '13b92ed29f2d78e4a90a0107902b8846c2ce7c8f' }, (_v = (_u = this.botSettings) === null || _u === void 0 ? void 0 : _u.buttons) === null || _v === void 0 ? void 0 : _v.map(item => (h("li", { onClick: () => {
|
|
719
723
|
this.isMenuOpen = !this.isMenuOpen;
|
|
720
724
|
this.menuAction = item.action;
|
|
721
725
|
this.handleSend(item.label);
|
|
722
|
-
} }, item.label))))), this.hideInput && (h("div", { key: '
|
|
726
|
+
} }, item.label))))), this.hideInput && (h("div", { key: 'abb24086c5fc218c9d47663d871772ffde4b9ec8', class: "chat-header" }, h("button", { key: 'ec2106cef28c03d106e08517331ef407ae1a84d2', onClick: () => {
|
|
723
727
|
this.showWelcomeScreen = true;
|
|
724
728
|
this.hideInput = false;
|
|
725
729
|
this.checkHistory();
|
|
726
|
-
} }, h("svg", { key: '
|
|
730
|
+
} }, h("svg", { key: 'b45eda7282b9b2a1346a09f5e625589098159e6f', "aria-hidden": "true", width: "20", height: "20", viewBox: "0 0 10 19" }, h("path", { key: '61d2f0619551a8d69eb2e9d1546c1f61a400e971', fill: "#FFFFFF", d: "M9.70711 0.542893C10.0976 0.933418 10.0976 1.56658 9.70711 1.95711L2.41421 9.25L9.70711 16.5429C10.0976 16.9334 10.0976 17.5666 9.70711 17.9571C9.31658 18.3476 8.68342 18.3476 8.29289 17.9571L0.292893 9.95711C0.105357 9.76957 -4.04995e-07 9.51522 -3.93402e-07 9.25C-3.81809e-07 8.98478 0.105357 8.73043 0.292893 8.54289L8.29289 0.542893C8.68342 0.152369 9.31658 0.152369 9.70711 0.542893Z", "clip-rule": "evenodd", "fill-rule": "evenodd" }))), h("span", { key: '586643a23836801f4132cf3e448dfc7321c03ea0', class: "header-title" }, "Conversation History"))), h("div", { key: '3fc7a26d53cddfd0ad995913060adb574c88f31a', class: "chat-body" }, this.showWelcomeScreen && (h("chatbot-welcome", { key: '26fb157199e39aea3abf469b591117e7d55a5cf1', welcomeMessage: (_x = (_w = this.botSettings) === null || _w === void 0 ? void 0 : _w.welcome) === null || _x === void 0 ? void 0 : _x.message, buttonsList: (_z = (_y = this.botSettings) === null || _y === void 0 ? void 0 : _y.welcome) === null || _z === void 0 ? void 0 : _z.buttons, welcomelogo: (_1 = (_0 = this.botSettings) === null || _0 === void 0 ? void 0 : _0.welcome) === null || _1 === void 0 ? void 0 : _1.image })), this.showHistory && this.conversationHistory.length > 0 && this.hideInput && (h("chatbot-history", { key: '93f61057008bab88e6b7b8309178e703db937e71', chatList: this.conversationHistory, botName: (_2 = this.botSettings) === null || _2 === void 0 ? void 0 : _2.botName })), !this.showWelcomeScreen && this.messages.length > 0 && h("p", { key: 'f536c0a37dc5727616debb01c9d9d9921b8887fe', class: "timestamp" }, this.timestamp), !this.showWelcomeScreen &&
|
|
727
731
|
this.messages.length > 0 &&
|
|
728
732
|
this.messages.map(msg => {
|
|
729
733
|
var _a, _b, _c;
|
|
@@ -731,7 +735,7 @@ export class Ai12zBot {
|
|
|
731
735
|
_c.map(img => {
|
|
732
736
|
return h("img", { src: img, class: "thumbnail", alt: "thumbnail" });
|
|
733
737
|
}), !msg.isUser && msg.text === "" && (h("svg", { class: "animate-spin h-5 w-5 text-gray-400", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", id: "spinner" }, h("circle", { class: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", "stroke-width": "4" }), h("path", { class: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 0 1 4 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" })))), h("span", { class: "message-timestamp" }, msg.timestamp)))));
|
|
734
|
-
})), h("div", { key: '
|
|
738
|
+
})), h("div", { key: '71a0f4d20ad2bc9624f73b5ab301422885d2732e', id: "previewContainer" }), !this.hideInput && (h("div", { key: 'b33f4ceb088f0cf165429a15ce39bba8eaf55881', class: "chat-footer" }, this.messages.length === 0 && (h("div", { key: 'd748ad44a28bf86b847a178d4fc8ef406dde8fe5', class: "custom-privacy" }, h("slot", { key: '561a51c80b2f634e272e9a794199a44e74c0f9be', name: "custom-privacy" }))), ((_3 = this.messages) === null || _3 === void 0 ? void 0 : _3.length) > 0 && (h("div", { key: 'fc971870dbdd43f01cc9834991ee7ec39dd7911f', class: "follow-up" }, h("input", { key: 'f6f9d4889dca67428b7b7ca57a501fa45e1f2694', ref: el => (this.followUpElem = el), type: "checkbox", name: "followUp", id: "followUp", defaultChecked: true, class: "follow-up-input", onChange: ev => this.handleFollowUp(ev) }), h("label", { key: '26f7862bd7ac617acf09935aef0d2ddc3ddc19af', htmlFor: "followUp" }, "Do you have a follow up question?"), h("svg", { key: '82a5a41993971b56e369c56bd50828b9d54064fa', onClick: () => this.followUpElem.click(), class: "custom-svg-checkbox\n peer-checked:block text-white", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "4", "stroke-linecap": "round", "stroke-linejoin": "round" }, h("polyline", { key: '6b15d09196e1b43b329c25cde0b7dd8e797989b0', points: "20 6 9 17 4 12" })))), h("div", { key: '87908d26dd7705595af90f8f938c1717ce6bfda2', style: { display: "flex" } }, h("textarea", { key: 'f1e4f4dd270918c1fcc27bd8ff78e16aa8412b03', rows: this.rowCount, placeholder: (_5 = (_4 = this.botSettings) === null || _4 === void 0 ? void 0 : _4.botPlaceholderText) !== null && _5 !== void 0 ? _5 : "Type your message...", ref: el => (this.inputEl = el), onKeyUp: this.adjustHeight }), this.botSettings.imageUpload && (h("div", { key: '31afc56382eb2232f10ebde2d703c3831713eacb', class: "custom-attachment" }, h("input", { key: 'c40d2c19e38e9e58d6f628ad15cb6857648aea3e', type: "file", multiple: true, name: "files[]", id: "fileInput", accept: "image/*", class: "image-upload__input", onChange: ($event) => this.onInputChange($event.target.files), ref: el => (this.uploadElem = el) }), h("svg", { key: 'bb77cbf19035db64f45e1cdf67598f8e18f37355', onClick: () => this.uploadElem.click(), "aria-hidden": "true", width: "18", height: "16", viewBox: "0 0 16 18" }, h("path", { key: '942e91616b4339a3bba646f5ce34fc6566b7a24b', fill: "#687882", "fill-rule": "evenodd", d: "M8.078 16a.71.71 0 0 1-.513-.222.784.784 0 0 1 0-1.075l7.53-7.879c.562-.587.871-1.368.871-2.199 0-.83-.31-1.611-.87-2.197a2.883 2.883 0 0 0-4.204 0l-8.735 9.139c-.493.516-.73 1.012-.703 1.476.026.452.298.801.46.968.27.284.563.402.892.358.413-.054.888-.35 1.375-.86l6.854-7.172a.703.703 0 0 1 1.026 0 .784.784 0 0 1 0 1.074l-6.853 7.172c-.728.761-1.475 1.196-2.222 1.293-.783.102-1.509-.172-2.1-.79-.528-.553-.841-1.246-.881-1.952-.053-.917.326-1.805 1.125-2.64l8.735-9.14a4.292 4.292 0 0 1 6.257 0 4.706 4.706 0 0 1 1.296 3.271c0 1.236-.461 2.4-1.296 3.274l-7.53 7.879a.71.71 0 0 1-.514.222z" })))), h("button", { key: '6185431ac4dc5d0d5d750b4a95b02ddb29af0813', onClick: () => this.handleSend(this.inputEl.value) }, h("svg", { key: '6197e4a0c679fabfc38562950e44465549cf5ca0', "aria-hidden": "true", width: "17", height: "16", viewBox: "0 0 17 16" }, h("path", { key: 'b28ade30e45550d2d1bdcb23e732e1d0ed4e49c9', fill: "#687882", "fill-rule": "evenodd", stroke: "#687882", "stroke-linecap": "round", "stroke-linejoin": "round", d: "M1 1l2.166 5.39 8.5 1.564-8.5 1.666L1 15l16-7z" }))))))))));
|
|
735
739
|
}
|
|
736
740
|
static get is() { return "ai12z-bot"; }
|
|
737
741
|
static get encapsulation() { return "shadow"; }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai12z-bot.js","sourceRoot":"","sources":["../../../src/components/ai12z-bot/ai12z-bot.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, h, State, Prop, Element, Watch, Listen, Event, EventEmitter, Method } from \"@stencil/core\"\nimport { io, Socket } from \"socket.io-client\"\nimport showdown from \"showdown\"\nimport { getEndpoint, generateUUID, updateButtonEvents, getBotConfig, getOrCreateVisitorId, getComponentByControlType, splitContent } from \"../../utils/utils\"\n\n// import $ from \"jquery\"\n// import { Model } from \"survey-jquery\"\n\n@Component({\n tag: \"ai12z-bot\",\n styleUrls: [\"./ai12z-bot.css\", \"../../global/tailwind.min.css\", \"../../global/survey.min.css\"],\n shadow: true,\n})\nexport class Ai12zBot {\n private cdnPath: string = \"https://cdn.ai12z.net/assets/bot\"\n @Element() el: HTMLElement\n @Prop() assetPath: string = import.meta.url\n @Prop({ reflect: true }) dataKey: string\n @Prop({ reflect: true }) dataMode: string\n @Prop({ reflect: true }) configId: string\n\n @State() botSettings: any = {}\n\n @State() botlogo: string = this.cdnPath + `/v1/ai12z-bot/img/chatbot.jpg`\n @State() botAvatar: string = this.cdnPath + `/v1/ai12z-bot/img/chatbot.jpg`\n\n @State() showWelcomeScreen: boolean = true\n @State() hideInput: boolean = false\n @State() showHistory: boolean = false\n @State() conversationId: string = \"\"\n @State() surveyDomId: string = \"\"\n @State() searchResults: any = {}\n @State() buttons: Array<{ id: string; label: string }> = []\n @State() currentDomId: string = \"\"\n @State() messages: { text: string; isUser: boolean; id: string; timestamp: string; images: any[]; conversationId: string; formModel: any; surveyDomId: string }[] = [\n // { text: this.welcomeMessage === \"\" ? \"Hi there! How can I assist you today\" : this.welcomeMessage, isUser: false, id: `chatbot-${generateUUID()}`, timestamp: \"\", images: [] },\n ]\n @State() questionCounter: number = 0\n @State() isChatOpen: boolean = false\n @State() visitorID: string\n @State() timestamp: string = \"\"\n @State() rowCount = 1\n @State() isBot = false\n @State() conversationHistory = []\n @State() isMenuOpen: boolean = false\n @State() menuAction: string = \"\"\n private timer: NodeJS.Timeout\n private inputEl!: HTMLTextAreaElement\n private uploadElem: HTMLInputElement\n private followUpElem: HTMLInputElement\n menuRef: HTMLElement\n private socket: Socket\n imagesBase64List = []\n @Event({\n eventName: \"messageSent\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n messageSent: EventEmitter\n @Event({\n eventName: \"messageReceived\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n messageReceived: EventEmitter\n\n @Event({\n eventName: \"close\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n close: EventEmitter\n\n @Event({\n eventName: \"open\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n open: EventEmitter\n\n @Event({\n eventName: \"minimize\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n minimize: EventEmitter\n\n @Event({\n eventName: \"errored\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n errored: EventEmitter\n\n @Listen(\"buttonClick\")\n buttonClickHandler(event: CustomEvent) {\n this.showWelcomeScreen = false\n this.hideInput = false\n this.menuAction = event.detail.action\n this.handleSend(event.detail.label)\n }\n\n @Listen(\"sendQueryToBot\")\n sendQueryToBotHandler(event: CustomEvent) {\n this.showWelcomeScreen = false\n this.hideInput = false\n this.menuAction = event.detail\n this.handleSend(event.detail)\n }\n\n @Listen(\"deleteChatHistory\")\n deleteChatHistoryHandler(event: CustomEvent) {\n const chatHistory = this.getConversationHistory()\n const updatedHistory = chatHistory.filter(item => item.conversationId !== event.detail.conversationId)\n localStorage.setItem(`${this.visitorID}`, JSON.stringify(updatedHistory))\n this.conversationHistory = updatedHistory\n }\n\n @Listen(\"chatClick\")\n chatClickHandler(event: CustomEvent) {\n this.messages = event.detail\n this.showWelcomeScreen = false\n this.hideInput = false\n }\n\n @Listen(\"openChat\")\n openChatHandler(_event: CustomEvent) {\n // console.log(\"open chat event\", event)\n this.isChatOpen = true\n }\n\n handleClickOutside(event: MouseEvent) {\n // Check if the clicked target is outside the menu\n const target = event.target as HTMLElement\n if (this.isMenuOpen && this.menuRef && !this.menuRef.contains(target)) {\n this.isMenuOpen = false\n }\n }\n\n componentDidLoad() {\n // console.log(\"Bot Settings getAssetPath\")\n // debugger;\n document.addEventListener(\"click\", this.handleClickOutside.bind(this))\n // Load jQuery first\n const jQueryScript = document.createElement(\"script\")\n jQueryScript.src = this.cdnPath + \"/v1/jquery.min.js\" // Path relative to the www root\n jQueryScript.onload = () => {\n // console.log(\"jQuery loaded\")\n // Load the script that loads and exposes SurveyJS\n const loadSurveyScript = document.createElement(\"script\")\n loadSurveyScript.src = this.cdnPath + \"/v1/survey.jquery.min.js\" // Path relative to the www root\n loadSurveyScript.onload = () => {\n // console.log(\"SurveyJS loaded and SurveyModel exposed\")\n }\n loadSurveyScript.onerror = err => {\n console.error(\"Failed to load Forms:\", err)\n }\n document.head.appendChild(loadSurveyScript)\n this.el.shadowRoot.appendChild(loadSurveyScript)\n }\n jQueryScript.onerror = err => {\n console.error(\"Failed to load jQuery:\", err)\n }\n document.head.appendChild(jQueryScript)\n this.el.shadowRoot.appendChild(jQueryScript)\n }\n\n disconnectedCallback() {\n // Remove event listener when component is destroyed\n document.removeEventListener(\"click\", this.handleClickOutside.bind(this))\n // clearInterval(this.timer)\n }\n\n checkHistory = () => {\n const storedMessages = localStorage.getItem(`${this.visitorID}`)\n let chatHistory = []\n if (storedMessages) {\n chatHistory = JSON.parse(storedMessages)\n chatHistory = chatHistory.filter(item => item.projectId === this.botSettings?.pId)\n }\n this.showHistory = chatHistory.length > 0 ? true : false\n // console.log(\"showHistory\", this.showHistory)\n }\n\n @Method()\n async sendMessage(message) {\n this.menuAction = message\n if (!this.isChatOpen) {\n this.isChatOpen = true\n }\n this.handleSend(message)\n }\n\n setLocalData() {\n const botData = { qCounter: this.questionCounter }\n localStorage.setItem(`ai12z-bot-data`, JSON.stringify(botData))\n }\n\n @Method()\n async action(type) {\n // this.isChatOpen = !this.isChatOpen\n if (type === \"open\") {\n this.isChatOpen = true\n this.open.emit(\"open\")\n this.setLocalData()\n }\n if (type === \"minimize\") {\n this.isChatOpen = false\n this.minimize.emit(\"minimize\")\n }\n const getVisitorKey = localStorage.getItem(`ai12z-visitorId`)\n this.visitorID = \"ai12z-\" + getVisitorKey\n this.checkHistory()\n if (type === \"close\") {\n this.isChatOpen = false\n this.searchResults = {}\n this.surveyDomId = \"\"\n this.showWelcomeScreen = true\n this.showHistory = this.messages.length > 0 ? true : false\n // this.saveConversation()\n this.messages = [...[]]\n this.conversationId = \"\"\n this.close.emit(\"close\")\n clearInterval(this.timer)\n }\n }\n\n toggleMenu(e) {\n e.stopPropagation()\n this.isMenuOpen = !this.isMenuOpen\n }\n\n adjustHeight = () => {\n this.inputEl.style.height = \"auto\"\n this.inputEl.style.height = this.inputEl.scrollHeight + \"px\"\n }\n\n connectedCallback() {\n this.configBot()\n }\n\n componentWillLoad() {\n this.checkCustomSlot()\n this.timestamp = this.formatTimestamp(new Date())\n this.socketConnection()\n // this.configBot()\n }\n\n configBot() {\n const payload = {\n apiKey: this.dataKey,\n configId: this.configId,\n }\n getBotConfig(payload, this.dataMode).then(data => {\n if (data) {\n // console.log(\"Bot Settings\", data)\n this.botSettings = data\n }\n })\n }\n\n checkCustomSlot() {\n const slot = this.el[\"children\"]\n let slotHasContent = slot && slot.length > 0\n if (slotHasContent) {\n for (var i = 0; i < slot.length; i++) {\n if (slot[i].tagName.toLowerCase() === \"bot\" || slot[i].getAttribute(\"slot\") === \"bot\") {\n this.isBot = true\n }\n }\n }\n }\n\n @Watch(\"currentDomId\")\n watchStateHandler(_newValue: boolean, _oldValue: boolean) {\n this.socket.off(\"response\")\n this.socket.off(\"end_response\")\n // console.log(\"currentDomId changed\")\n if (this.questionCounter <= this.botSettings.maxQuestion) {\n this.handleBotMessages()\n }\n // this.handleBotMessages()\n }\n\n generateMessage() {\n return {\n text: \"\",\n isUser: false,\n id: `chatbot-${generateUUID()}`,\n timestamp: new Date().toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" }),\n images: [],\n conversationId: this.conversationId,\n formModel: {},\n surveyDomId: \"\",\n }\n }\n hideSpinner(chatData) {\n // Logic for hiding the spinner (assumed to return a Promise if async is needed)\n return new Promise(resolve => {\n const renderedBubble = this.el.shadowRoot.querySelector(`#${chatData.id}`)\n if (renderedBubble) {\n ;(renderedBubble.querySelector(\"#spinner\") as HTMLElement).style.display = \"none\"\n }\n // Assume some async action here, then resolve\n console.log(\"Spinner hidden\")\n resolve(true)\n })\n }\n\n async processChatData(chatData, data) {\n // Step 1: Hide the spinner\n await this.hideSpinner(chatData)\n\n // Step 2: Get the control element based on control type\n const controlElement = getComponentByControlType(data, \"bot\")\n\n const tmpControlType = data.controlData?.data?.source?.carousel?.type\n\n // Step 3: Append the control element if both it and the target container exist\n const targetContainer = this.el.shadowRoot.querySelector(`#${chatData.id}`)\n if (targetContainer && controlElement) {\n // console.log(\"controlElement\", targetContainer)\n targetContainer.appendChild(controlElement)\n targetContainer[\"style\"].width = \"98%\"\n\n if (tmpControlType === \"custom\" || tmpControlType === \"list\" || tmpControlType === \"slider\") {\n targetContainer.classList.remove(\"p-2.5\")\n targetContainer.classList.add(\"p-0\")\n targetContainer.classList.add(\"md:p-2.5\")\n }\n\n // Step 4: Wait until the control element is rendered\n await this.waitForElementRender(targetContainer as HTMLElement)\n\n // Step 5: Retrieve the content and emit the updated data\n chatData.text = targetContainer.innerHTML\n this.messages = this.messages.map(item => (item.id === chatData.id ? chatData : item))\n }\n }\n\n // Helper function to detect when the target element is rendered\n waitForElementRender(element: HTMLElement) {\n return new Promise<void>(resolve => {\n const observer = new MutationObserver(_mutations => {\n resolve()\n observer.disconnect()\n })\n observer.observe(element, { childList: true, subtree: true })\n })\n }\n\n handleBotMessages() {\n // const domId = this.messages[this.messages.length - 1].id\n this.socket.on(\"response\", event => {\n this.handleMessage(event.data, `${this.currentDomId}`) // Use the unique ID to handle messages\n })\n this.socket.on(\"end_response\", data => {\n // console.log(\"end_response\")\n this.messageReceived.emit(data)\n const converter = new showdown.Converter()\n let finalHtml = converter.makeHtml(data.answer)\n // document.getElementById(\"messageId\").innerHTML = finalHtml;\n finalHtml = updateButtonEvents(finalHtml).body\n this.buttons = updateButtonEvents(finalHtml).buttons\n this.searchResults = data\n this.conversationId = data.conversationId\n if (finalHtml.indexOf(\"[control\") > -1) {\n // console.log(\"controlType\", data.controlType)\n switch (data.controlType) {\n case \"form\":\n this.surveyDomId = \"surveyElement-\" + generateUUID()\n finalHtml = `<div id=${this.surveyDomId} style=\"width:330px\"></div>`\n this.el.shadowRoot.querySelector(`#${this.currentDomId}`).innerHTML = finalHtml\n break\n case \"carousel\":\n case \"list\":\n if (data.controlType && data.controlType !== null) {\n const newContent = splitContent(finalHtml)\n finalHtml = newContent.before\n this.updateConversations(finalHtml, data)\n const newMessage = this.generateMessage()\n this.messages = [...this.messages, newMessage]\n setTimeout(() => {\n this.processChatData(newMessage, data)\n }, 2000)\n if (newContent.after.trim().length > 0) {\n const afterMessage = this.generateMessage()\n afterMessage.text = newContent.after\n this.messages = [...this.messages, afterMessage]\n setTimeout(() => {\n if (afterMessage.id) {\n const bubbleEle = this.el.shadowRoot.querySelector(`#${afterMessage.id}`)\n if (bubbleEle && (bubbleEle.querySelector(\"#spinner\") as HTMLElement)) {\n ;(bubbleEle.querySelector(\"#spinner\") as HTMLElement).style.display = \"none\"\n }\n }\n }, 500)\n }\n }\n }\n } else {\n const currentDomElement = this.el.shadowRoot.querySelector(`#${this.currentDomId}`) as HTMLElement\n if (currentDomElement) {\n currentDomElement.style.width = \"auto\"\n }\n this.el.shadowRoot.querySelector(`#${this.currentDomId}`).innerHTML = finalHtml\n this.updateConversations(finalHtml, data)\n }\n\n this.saveConversation()\n this.scrollToBottom()\n })\n }\n\n updateConversations(finalHtml, data) {\n const updatedmsg = {\n id: this.currentDomId,\n text: finalHtml,\n isUser: false,\n timestamp: new Date().toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" }),\n images: [],\n conversationId: this.conversationId,\n formModel: data.controlData?.data?.source ?? data.controlData ?? {},\n surveyDomId: this.surveyDomId,\n }\n this.addEventListeners(`#${this.currentDomId}`)\n this.messages = this.messages.map(item => (item.id === this.currentDomId ? updatedmsg : item))\n }\n\n @Watch(\"surveyDomId\")\n watchSurveyDomIdHandler(_newValue: boolean, _oldValue: boolean) {\n setTimeout(() => {\n this.renderSurvey(this.searchResults)\n }, 1000)\n }\n\n alertResults = sender => {\n const results = JSON.stringify(sender.data)\n const query = \"Here is the data you requested:\" + results\n sender.implementor.renderedElement.innerHTML = `<p><b>Thank you</b></p>`\n\n this.messages = [\n ...this.messages,\n {\n text: query,\n isUser: false,\n id: `chatbot-${generateUUID()}`,\n timestamp: new Date().toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" }),\n images: [],\n conversationId: this.conversationId,\n formModel: {},\n surveyDomId: \"\",\n },\n ]\n this.scrollToBottom()\n this.invokeSocket()\n }\n\n renderSurvey = chat => {\n const survey = new window[\"Survey\"].Model(chat.controlData?.data?.source ?? chat.controlData)\n if (this.surveyDomId === \"\") {\n return\n }\n const domELe = this.el.shadowRoot?.querySelector(`#${this.surveyDomId}`)\n if (domELe) {\n window[\"jQuery\"](domELe).Survey({ model: survey })\n } else {\n console.error(\"Survey Element not found\")\n }\n\n if (typeof chat.controlData?.data?.source == \"object\" || typeof chat.controlData === \"object\") {\n this.hideCompleteButton(chat.controlData?.data?.source ?? chat.controlData, survey)\n } else {\n this.hideCompleteButton(JSON.parse(chat.controlData?.data?.source ?? chat.controlData), survey)\n }\n survey.showCompletedPage = false\n survey.onComplete.add(this.alertResults)\n }\n\n hideCompleteButton(form: any, survey) {\n if (form.pages) {\n form.pages.forEach((page: any) => {\n if (page.elements) {\n // console.log(\"page.elements\", page.elements)\n page.elements.forEach((element: any) => {\n if (element.type === \"html\") {\n if (element.html.includes(\"<iframe\")) {\n survey.showCompleteButton = false\n }\n }\n })\n }\n })\n }\n }\n\n addEventListeners(msgId) {\n const container = this.el.shadowRoot.querySelector(msgId)\n if (container) {\n this.buttons.forEach(button => {\n const buttonElement = container.querySelector(`#${button.id}`)\n if (buttonElement) {\n buttonElement.addEventListener(\"click\", this.handleButtonClick(button.label))\n }\n })\n }\n }\n\n handleButtonClick = (label: string) => (_event: Event) => {\n this.inputEl.value = label\n this.handleSend(label)\n }\n\n formatTimestamp(date: Date) {\n const today = new Date()\n today.setHours(0, 0, 0, 0)\n const options: Intl.DateTimeFormatOptions = {\n weekday: \"long\",\n hour: \"numeric\",\n minute: \"numeric\",\n hour12: true,\n }\n const formatter = new Intl.DateTimeFormat(\"en-US\", options)\n const formattedDate = formatter.format(date)\n\n if (date.toDateString() === today.toDateString()) {\n return `Today, ${formattedDate.split(\" \").slice(1).join(\" \")}`\n } else {\n return formattedDate\n }\n }\n\n async socketConnection() {\n let a12z_EndPoint = getEndpoint(this.dataMode)\n this.socket = io(a12z_EndPoint, { transports: [\"polling\"] })\n\n await new Promise<void>(resolve => {\n this.socket.on(\"connect\", () => {\n console.log(\"Connected to Socket.IO server\")\n resolve()\n })\n })\n\n this.socket.on(\"connect_error\", error => {\n this.errored.emit(error)\n console.error(\"Connection error:\", error)\n })\n\n this.socket.on(\"disconnect\", () => {\n console.log(\"Disconnected from Socket.IO server\")\n this.socket.off(\"response\")\n // Handle disconnection if needed\n })\n }\n\n invokeSocket() {\n const data = {\n apiKey: this.dataKey,\n query: this.menuAction !== \"\" ? this.menuAction : this.inputEl.value,\n conversationId: this.conversationId,\n event: \"evaluate_query\",\n }\n this.messageSent.emit(JSON.stringify(data))\n\n this.socket.emit(\"evaluate_query\", data, (error, response) => {\n if (error) {\n this.errored.emit(error)\n console.error(\"Error:\", error)\n } else {\n console.log(\"Response:\", response)\n }\n })\n this.currentDomId = this.messages[this.messages.length - 1].id\n if (this.inputEl) {\n this.inputEl.value = \"\"\n }\n this.menuAction = \"\"\n }\n\n handleMessage = (data, aiMessageId) => {\n const converter = new showdown.Converter()\n // const aiMessageBubble = document.getElementById(aiMessageId);\n\n const aiMessageBubble = this.el.shadowRoot?.querySelector(`#${aiMessageId}`)\n // const aiMessageBubble = this.element.querySelector('.ai12z-suggest-answer')\n\n if (!aiMessageBubble) {\n console.error(`Message bubble with ID ${aiMessageId} not found.`)\n return\n }\n var bubbleText = aiMessageBubble.getAttribute(\"data-bubbleText\") || \"\"\n bubbleText = bubbleText + data\n aiMessageBubble.setAttribute(\"data-bubbleText\", bubbleText)\n\n // Assuming data is a string containing the message content\n let html = converter.makeHtml(bubbleText)\n // Append new content to the existing chat bubble\n aiMessageBubble.innerHTML = html\n }\n\n onInputChange(files: FileList) {\n if (files.length > 0) {\n this.uploadImage(files)\n } else {\n console.error(files.length === 0 || \"NO IMAGE UPLOADED\")\n return false\n }\n }\n\n private uploadImage(files) {\n let newFile\n let tempImagesBase64List = []\n if (files.length > 10 || this.imagesBase64List.length > 10) {\n // this.showErrorMessage = true\n // console.error('You can upload a maximum of 10 images once at a time.');\n return\n }\n for (var i = 0; i < files.length; i++) {\n const mimeType = files[i].type\n if (!mimeType.match(\"image.*\")) {\n console.log(\"file is not an image\")\n return\n }\n newFile = files[i]\n\n const reader = new FileReader()\n\n reader.onload = () => {\n const imagePreviewContainer: HTMLElement = this.el.shadowRoot.querySelector(\"#previewContainer\")\n\n const base64Image = `data:${mimeType};base64,${(reader.result as string).split(\",\")[1]}`\n this.imagesBase64List.push(base64Image)\n tempImagesBase64List = this.imagesBase64List\n\n const newDiv = document.createElement(\"div\")\n newDiv.classList.add(\"image-Container\")\n newDiv.classList.add(\"sc-ai12z-input-form\")\n\n const img = document.createElement(\"img\")\n img.setAttribute(\"src\", reader.result as string)\n img.style.width = \"70px\"\n img.style.height = \"50px\"\n\n const deleteSpan = document.createElement(\"span\")\n deleteSpan.textContent = \"x\"\n deleteSpan.classList.add(\"delete-image\")\n deleteSpan.classList.add(\"sc-ai12z-input-form\")\n imagePreviewContainer.appendChild(newDiv)\n\n newDiv.appendChild(img)\n newDiv.appendChild(deleteSpan)\n\n deleteSpan.onclick = function (event) {\n let imgSrc = event.target[\"previousSibling\"] ? event.target[\"previousSibling\"].src : null\n let index = tempImagesBase64List.indexOf(imgSrc)\n if (index > -1) {\n tempImagesBase64List.splice(index, 1)\n }\n newDiv.remove()\n }\n\n // console.log('uploading finished, emitting an image blob to the outside world');\n }\n reader.readAsDataURL(newFile)\n reader.onloadend = () => {\n console.log(\"upload finished\")\n }\n\n reader.onerror = err => {\n console.error(\"something went wrong...\", err)\n }\n }\n }\n\n getConversationHistory() {\n const storedData = localStorage.getItem(`${this.visitorID}`)\n return storedData ? JSON.parse(storedData) : []\n }\n\n saveConversation() {\n let pastMessages = this.getConversationHistory()\n // console.log(\"saving conversation\", pastMessages)\n if (pastMessages.length > 0) {\n let conversationExists = pastMessages.filter(item => item.conversationId === this.conversationId && item.projectId === this.botSettings?.pId)\n if (conversationExists.length > 0) {\n conversationExists[0].messages = this.messages\n } else {\n pastMessages.push({\n conversationId: this.conversationId,\n projectId: this.botSettings?.pId,\n date: new Date(),\n messages: this.messages,\n })\n }\n } else {\n pastMessages.push({\n conversationId: this.conversationId,\n projectId: this.botSettings?.pId,\n date: new Date(),\n messages: this.messages,\n })\n }\n\n if (this.messages.length > 0) {\n localStorage.setItem(`${this.visitorID}`, JSON.stringify(pastMessages))\n }\n }\n\n loadConversation() {\n this.showWelcomeScreen = false\n this.hideInput = true\n this.messages = []\n const storedMessages = localStorage.getItem(`${this.visitorID}`)\n if (storedMessages) {\n this.conversationHistory = JSON.parse(storedMessages)\n this.conversationHistory = this.conversationHistory.filter(item => item.projectId === this.botSettings?.pId)\n // console.log(\"conversationHistory\", this.conversationHistory)\n // this.messages = chatHistory.map(item => ({ ...item }))\n }\n }\n\n @Listen(\"keydown\")\n handleKeyDown(ev: KeyboardEvent) {\n if (ev.key === \"Enter\" && !ev.shiftKey) {\n // console.log(\"down arrow pressed\")\n this.handleSend(this.inputEl.value)\n }\n }\n\n startTimer() {\n // const startTime = Date.now()\n this.timer = setInterval(() => {\n this.questionCounter = 0\n // const endTime = Date.now()\n // console.log(`Timer executed after ${endTime - startTime} milliseconds`)\n localStorage.setItem(`ai12z-bot-data`, JSON.stringify({ qCounter: this.questionCounter }))\n }, this.botSettings.autoResetTimer)\n }\n\n handleSend = eleValue => {\n this.questionCounter = this.questionCounter + 1\n localStorage.setItem(`ai12z-bot-data`, JSON.stringify({ qCounter: this.questionCounter }))\n const inputValue = eleValue\n if (this.inputEl) {\n this.inputEl.value = inputValue\n }\n if (this.messages.length === 0 && this.botSettings.autoResetTimer > 0) {\n this.startTimer()\n }\n if (this.showWelcomeScreen) {\n this.showWelcomeScreen = false\n }\n\n if (inputValue.trim()) {\n const now = new Date()\n const timestamp = now.toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" })\n\n // Add the new message to the chat\n this.messages = [\n ...this.messages,\n {\n text: inputValue,\n isUser: true,\n id: `user-${generateUUID()}`,\n timestamp: timestamp,\n images: this.imagesBase64List,\n conversationId: this.conversationId,\n formModel: {},\n surveyDomId: \"\",\n },\n {\n text: this.botSettings.maxQuestion > 0 && this.questionCounter > this.botSettings.maxQuestion ? this.botSettings.msgLimit : \"\",\n isUser: false,\n id: `chatbot-${generateUUID()}`,\n timestamp: \"\",\n images: [],\n conversationId: this.conversationId,\n formModel: {},\n surveyDomId: \"\",\n },\n ]\n\n if (this.messages.length === 2) {\n this.visitorID = getOrCreateVisitorId()\n }\n\n this.checkHistory()\n\n this.scrollToBottom()\n if (this.botSettings.maxQuestion > 0 && this.questionCounter > this.botSettings.maxQuestion) {\n console.log(\"Max question limit reached\")\n this.inputEl.value = \"\"\n } else {\n this.invokeSocket()\n }\n // this.invokeSocket()\n\n const parent = this.el.shadowRoot.querySelector(\"#previewContainer\")\n if (parent) {\n parent.innerHTML = \"\"\n }\n\n this.imagesBase64List = []\n this.rowCount = 1\n }\n }\n\n scrollToBottom() {\n const container = this.el.shadowRoot.querySelector(\".chat-body\")\n if (container) {\n container.scroll({\n top: container.scrollHeight,\n behavior: \"smooth\",\n })\n }\n }\n\n defaultTemplate() {\n return (\n <div class={{ \"prose\": true, \"floating-icon\": !this.isBot, \"right\": this.botSettings?.botPosition === \"right\", \"left\": this.botSettings?.botPosition === \"left\" }}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"white\" height=\"30px\" width=\"30px\" version=\"1.1\" id=\"Capa_1\" viewBox=\"0 0 60.019 60.019\">\n <g>\n <path d=\"M59.888,47.514l-3.839-11.518c2.056-3.615,3.14-7.716,3.14-11.893c0-13.286-10.809-24.095-24.095-24.095 c-8.242,0-15.824,4.223-20.219,11.007c3.089-1.291,6.477-2.007,10.029-2.007C39.294,9.01,51,20.716,51,35.104 c0,3.996-0.905,7.783-2.518,11.172l10.263,2.701c0.085,0.022,0.17,0.033,0.255,0.033c0.006,0,0.014-0.001,0.02,0 c0.553,0,1-0.448,1-1C60.019,47.829,59.972,47.66,59.888,47.514z\" />\n <path d=\"M24.905,11.01C11.619,11.01,0.81,21.819,0.81,35.104c0,4.176,1.084,8.277,3.14,11.893L0.051,58.693 c-0.116,0.349-0.032,0.732,0.219,1C0.462,59.898,0.727,60.01,1,60.01c0.085,0,0.17-0.011,0.255-0.033l12.788-3.365 c3.35,1.694,7.097,2.587,10.862,2.587C38.191,59.199,49,48.39,49,35.104S38.191,11.01,24.905,11.01z M41.246,26.799 c-0.152,0.083-0.317,0.123-0.479,0.123c-0.354,0-0.696-0.188-0.878-0.519c-2.795-5.097-8.115-8.679-13.883-9.349 c-0.549-0.063-0.941-0.56-0.878-1.108c0.063-0.548,0.558-0.942,1.108-0.878c6.401,0.743,12.304,4.718,15.406,10.373 C41.908,25.926,41.73,26.534,41.246,26.799z\" />\n </g>\n </svg>\n </div>\n )\n }\n\n handleFollowUp(_e) {\n // console.log(\"follow up\", e)\n this.messages = [...[]]\n this.conversationId = \"\"\n this.showWelcomeScreen = true\n }\n\n render() {\n // const imageSrc = getAssetPath(`./assets/ai12z-bot/img/chatbot.jpg`)\n const style = {\n width: this.botSettings?.botWidth ?? \"35%\",\n height: this.botSettings?.botHeight ?? \"80%\",\n }\n return (\n <div>\n <div\n class={{\n \"right\": this.botSettings?.botPosition === \"right\",\n \"left\": this.botSettings?.botPosition === \"left\",\n \"custom-floating-icon \": this.isBot,\n \"hide-chatbot\": this.isChatOpen,\n }}\n onClick={() => this.action(\"open\")}\n >\n {!this.isBot && this.botSettings?.botPosition && this.defaultTemplate()}\n {this.isBot && <slot name=\"bot\" />}\n </div>\n {!this.isChatOpen && this.botSettings?.popover?.returnMessage && <bot-popover popoverConfig={this.botSettings?.popover}></bot-popover>}\n {this.isChatOpen && (\n <div\n class={{\n \"chat-window\": true,\n \"chat-window-open\": this.isChatOpen,\n \"chat-window-close\": !this.isChatOpen,\n \"chat-right\": this.botSettings?.botPosition === \"right\",\n \"chat-left\": this.botSettings?.botPosition === \"left\",\n }}\n style={style}\n >\n {!this.hideInput && (\n <div class=\"chat-header\">\n {this.botSettings?.buttons?.length > 0 && (\n <button class=\"hamburger\" onClick={e => this.toggleMenu(e)}>\n ☰ {/* Hamburger Icon */}\n </button>\n )}\n <img class=\"avatar\" src={this.botSettings?.botLogo ?? this.botlogo} alt=\"Avatar\" />\n <span class=\"chat-name\">{this.botSettings?.botName}</span>\n {this.showHistory && (\n <button onClick={() => this.loadConversation()}>\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"#ffffff\" width=\"25\" height=\"25\">\n <path fill=\"none\" d=\"M0 0L24 0 24 24 0 24z\"></path>{\" \"}\n <path d=\"M12 2c5.523 0 10 4.477 10 10s-4.477 10-10 10c-1.702 0-3.305-.425-4.708-1.175L2 22l1.176-5.29C2.426 15.306 2 13.703 2 12 2 6.477 6.477 2 12 2zm0 2c-4.418 0-8 3.582-8 8 0 1.335.326 2.618.94 3.766l.35.654-.656 2.946 2.948-.654.653.349c1.148.614 2.43.939 3.765.939 4.418 0 8-3.582 8-8s-3.582-8-8-8zm1 3v5h4v2h-6V7h2z\"></path>{\" \"}\n </svg>\n </button>\n )}\n <button class=\"minimizebtn\" onClick={() => this.action(\"minimize\")}>\n <svg fill=\"white\" height=\"20px\" width=\"20px\" version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path d=\"M505.752,6.248c-8.331-8.331-21.839-8.331-30.17,0L320,161.83V64c0-11.782-9.551-21.333-21.333-21.333 c-11.782,0-21.333,9.551-21.333,21.333v149.333c0,0.007,0.001,0.015,0.001,0.022c0.001,0.695,0.037,1.39,0.105,2.083 c0.031,0.318,0.091,0.627,0.136,0.94c0.054,0.375,0.098,0.75,0.171,1.122c0.071,0.359,0.17,0.708,0.259,1.061 c0.081,0.322,0.151,0.645,0.248,0.964c0.105,0.346,0.234,0.68,0.356,1.018c0.114,0.318,0.219,0.639,0.349,0.953 c0.131,0.316,0.284,0.618,0.43,0.926c0.152,0.323,0.296,0.649,0.465,0.966c0.158,0.295,0.338,0.575,0.509,0.861 c0.186,0.311,0.361,0.626,0.564,0.929c0.211,0.316,0.447,0.613,0.674,0.917c0.19,0.253,0.365,0.513,0.568,0.759 c0.892,1.087,1.889,2.085,2.977,2.977c0.246,0.202,0.506,0.378,0.759,0.568c0.304,0.228,0.601,0.463,0.917,0.674 c0.303,0.203,0.618,0.379,0.929,0.564c0.286,0.171,0.566,0.351,0.861,0.509c0.317,0.169,0.643,0.313,0.966,0.465 c0.308,0.145,0.611,0.299,0.926,0.43c0.314,0.13,0.635,0.235,0.953,0.349c0.338,0.122,0.672,0.251,1.018,0.356 c0.318,0.096,0.642,0.167,0.964,0.248c0.353,0.089,0.701,0.188,1.061,0.259c0.372,0.074,0.748,0.118,1.122,0.171 c0.314,0.045,0.622,0.104,0.94,0.136c0.693,0.068,1.388,0.105,2.083,0.105c0.007,0,0.015,0.001,0.022,0.001H448 c11.782,0,21.333-9.551,21.333-21.333c0-11.782-9.551-21.333-21.333-21.333h-97.83L505.752,36.418 C514.083,28.087,514.083,14.58,505.752,6.248z\"></path>{\" \"}\n <path d=\"M234.56,296.562c-0.031-0.318-0.091-0.627-0.136-0.94c-0.054-0.375-0.098-0.75-0.171-1.122 c-0.071-0.359-0.17-0.708-0.259-1.061c-0.081-0.322-0.151-0.645-0.248-0.964c-0.105-0.346-0.234-0.68-0.356-1.018 c-0.114-0.318-0.219-0.639-0.349-0.953c-0.131-0.316-0.284-0.618-0.43-0.926c-0.152-0.323-0.296-0.649-0.465-0.966 c-0.158-0.295-0.338-0.575-0.509-0.861c-0.186-0.311-0.361-0.626-0.564-0.929c-0.211-0.316-0.447-0.613-0.674-0.917 c-0.19-0.253-0.365-0.513-0.568-0.759c-0.892-1.087-1.889-2.085-2.977-2.977c-0.246-0.202-0.506-0.378-0.759-0.568 c-0.304-0.228-0.601-0.463-0.917-0.674c-0.303-0.203-0.618-0.379-0.929-0.564c-0.286-0.171-0.566-0.351-0.861-0.509 c-0.317-0.169-0.643-0.313-0.966-0.465c-0.308-0.145-0.611-0.299-0.926-0.43c-0.314-0.13-0.635-0.235-0.953-0.349 c-0.338-0.122-0.672-0.251-1.018-0.356c-0.318-0.096-0.642-0.167-0.964-0.248c-0.353-0.089-0.701-0.188-1.061-0.259 c-0.372-0.074-0.748-0.118-1.122-0.171c-0.314-0.045-0.622-0.104-0.94-0.136c-0.7-0.069-1.402-0.106-2.105-0.106l0,0H64 c-11.782,0-21.333,9.551-21.333,21.333C42.667,310.449,52.218,320,64,320h97.83L6.248,475.582c-8.331,8.331-8.331,21.839,0,30.17 c8.331,8.331,21.839,8.331,30.17,0L192,350.17V448c0,11.782,9.551,21.333,21.333,21.333c11.782,0,21.333-9.551,21.333-21.333 V298.667l0,0C234.667,297.964,234.629,297.262,234.56,296.562z\"></path>{\" \"}\n </svg>\n </button>\n\n <button class=\"close-btn\" onClick={() => this.action(\"close\")}>\n <svg aria-hidden=\"true\" width=\"25\" height=\"13\" viewBox=\"0 0 23 23\" fill=\"none\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n fill=\"white\"\n d=\"M9.34583 11.2L0.384011 2.23818C-0.128004 1.72617 -0.128004 0.896026 0.384011 0.384011C0.896026 -0.128004 1.72617 -0.128004 2.23818 0.384011L11.2 9.34583L20.1618 0.384011C20.6738 -0.128004 21.504 -0.128004 22.016 0.384011C22.528 0.896026 22.528 1.72617 22.016 2.23818L13.0542 11.2L22.016 20.1618C22.528 20.6738 22.528 21.504 22.016 22.016C21.504 22.528 20.6738 22.528 20.1618 22.016L11.2 13.0542L2.23818 22.016C1.72617 22.528 0.896026 22.528 0.384011 22.016C-0.128003 21.504 -0.128003 20.6738 0.384011 20.1618L9.34583 11.2Z\"\n ></path>\n </svg>\n </button>\n </div>\n )}\n <div class={`menu ${this.isMenuOpen ? \"open\" : \"closed\"}`} ref={el => (this.menuRef = el)}>\n <ul>\n {this.botSettings?.buttons?.map(item => (\n <li\n onClick={() => {\n this.isMenuOpen = !this.isMenuOpen\n this.menuAction = item.action\n this.handleSend(item.label)\n }}\n >\n {item.label}\n </li>\n ))}\n </ul>\n </div>\n {this.hideInput && (\n <div class=\"chat-header\">\n <button\n onClick={() => {\n this.showWelcomeScreen = true\n this.hideInput = false\n this.checkHistory()\n }}\n >\n <svg aria-hidden=\"true\" width=\"20\" height=\"20\" viewBox=\"0 0 10 19\">\n <path\n fill=\"#FFFFFF\"\n d=\"M9.70711 0.542893C10.0976 0.933418 10.0976 1.56658 9.70711 1.95711L2.41421 9.25L9.70711 16.5429C10.0976 16.9334 10.0976 17.5666 9.70711 17.9571C9.31658 18.3476 8.68342 18.3476 8.29289 17.9571L0.292893 9.95711C0.105357 9.76957 -4.04995e-07 9.51522 -3.93402e-07 9.25C-3.81809e-07 8.98478 0.105357 8.73043 0.292893 8.54289L8.29289 0.542893C8.68342 0.152369 9.31658 0.152369 9.70711 0.542893Z\"\n clip-rule=\"evenodd\"\n fill-rule=\"evenodd\"\n ></path>\n </svg>\n </button>\n <span class=\"header-title\">Conversation History</span>\n </div>\n )}\n\n <div class=\"chat-body\">\n {this.showWelcomeScreen && (\n <chatbot-welcome\n welcomeMessage={this.botSettings?.welcome?.message}\n buttonsList={this.botSettings?.welcome?.buttons}\n welcomelogo={this.botSettings?.welcome?.image}\n />\n )}\n {this.showHistory && this.conversationHistory.length > 0 && this.hideInput && (\n <chatbot-history chatList={this.conversationHistory} botName={this.botSettings?.botName}></chatbot-history>\n )}\n {!this.showWelcomeScreen && this.messages.length > 0 && <p class=\"timestamp\">{this.timestamp}</p>}\n {!this.showWelcomeScreen &&\n this.messages.length > 0 &&\n this.messages.map(msg => (\n <div class={{ \"message\": true, \"message-user\": msg.isUser }}>\n <div class={{ \"msg-wrapper\": true, \"pl-1\": true, \"md:pl-0\": true }}>\n {!msg.isUser && <img class=\"bot-avatar hidden md:block\" src={this.botSettings?.botAvatar ?? this.botAvatar} alt=\"Bot Avatar\" />}\n <div class={{ \"message-content\": true, \"bubble-width\": !msg.isUser }}>\n <span class={{ \"message-text\": true, \"message-bot\": !msg.isUser, \"prose\": true, \"p-2.5\": true }} id={msg.id} innerHTML={msg.text}>\n {msg?.images?.map(img => {\n return <img src={img} class=\"thumbnail\" alt=\"thumbnail\" />\n })}\n {!msg.isUser && msg.text === \"\" && (\n <svg class=\"animate-spin h-5 w-5 text-gray-400\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" id=\"spinner\">\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\n <path\n class=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 0 1 4 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n ></path>\n </svg>\n )}\n </span>\n <span class=\"message-timestamp\">{msg.timestamp}</span>\n </div>\n </div>\n </div>\n ))}\n </div>\n\n <div id=\"previewContainer\"></div>\n\n {!this.hideInput && (\n <div class=\"chat-footer\">\n {this.messages.length === 0 && (\n <div class=\"custom-privacy\">\n <slot name=\"custom-privacy\" />\n </div>\n )}\n {this.messages?.length > 0 && (\n <div class=\"follow-up\">\n <input\n ref={el => (this.followUpElem = el as HTMLInputElement)}\n type=\"checkbox\"\n name=\"followUp\"\n id=\"followUp\"\n defaultChecked={true}\n class=\"follow-up-input\"\n onChange={ev => this.handleFollowUp(ev)}\n />\n <label htmlFor=\"followUp\">Do you have a follow up question?</label>\n <svg\n onClick={() => this.followUpElem.click()}\n class=\"custom-svg-checkbox\n peer-checked:block text-white\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"4\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <polyline points=\"20 6 9 17 4 12\"></polyline>\n </svg>\n </div>\n )}\n <div style={{ display: \"flex\" }}>\n <textarea\n rows={this.rowCount}\n placeholder={this.botSettings?.botPlaceholderText ?? \"Type your message...\"}\n ref={el => (this.inputEl = el as HTMLTextAreaElement)}\n onKeyUp={this.adjustHeight}\n />\n {this.botSettings.imageUpload && (\n <div class=\"custom-attachment\">\n <input\n type=\"file\"\n multiple\n name=\"files[]\"\n id=\"fileInput\"\n accept=\"image/*\"\n class=\"image-upload__input\"\n onChange={($event: any) => this.onInputChange($event.target.files)}\n ref={el => (this.uploadElem = el as HTMLInputElement)}\n />\n <svg onClick={() => this.uploadElem.click()} aria-hidden=\"true\" width=\"18\" height=\"16\" viewBox=\"0 0 16 18\">\n <path\n fill=\"#687882\"\n fill-rule=\"evenodd\"\n d=\"M8.078 16a.71.71 0 0 1-.513-.222.784.784 0 0 1 0-1.075l7.53-7.879c.562-.587.871-1.368.871-2.199 0-.83-.31-1.611-.87-2.197a2.883 2.883 0 0 0-4.204 0l-8.735 9.139c-.493.516-.73 1.012-.703 1.476.026.452.298.801.46.968.27.284.563.402.892.358.413-.054.888-.35 1.375-.86l6.854-7.172a.703.703 0 0 1 1.026 0 .784.784 0 0 1 0 1.074l-6.853 7.172c-.728.761-1.475 1.196-2.222 1.293-.783.102-1.509-.172-2.1-.79-.528-.553-.841-1.246-.881-1.952-.053-.917.326-1.805 1.125-2.64l8.735-9.14a4.292 4.292 0 0 1 6.257 0 4.706 4.706 0 0 1 1.296 3.271c0 1.236-.461 2.4-1.296 3.274l-7.53 7.879a.71.71 0 0 1-.514.222z\"\n ></path>\n </svg>\n </div>\n )}\n <button onClick={() => this.handleSend(this.inputEl.value)}>\n <svg aria-hidden=\"true\" width=\"17\" height=\"16\" viewBox=\"0 0 17 16\">\n <path\n fill=\"#687882\"\n fill-rule=\"evenodd\"\n stroke=\"#687882\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M1 1l2.166 5.39 8.5 1.564-8.5 1.666L1 15l16-7z\"\n ></path>\n </svg>\n </button>\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n )\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ai12z-bot.js","sourceRoot":"","sources":["../../../src/components/ai12z-bot/ai12z-bot.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, h, State, Prop, Element, Watch, Listen, Event, EventEmitter, Method } from \"@stencil/core\"\nimport { io, Socket } from \"socket.io-client\"\nimport showdown from \"showdown\"\nimport { getEndpoint, generateUUID, updateButtonEvents, getBotConfig, getOrCreateVisitorId, getComponentByControlType, splitContent } from \"../../utils/utils\"\n\n// import $ from \"jquery\"\n// import { Model } from \"survey-jquery\"\n\n@Component({\n tag: \"ai12z-bot\",\n styleUrls: [\"./ai12z-bot.css\", \"../../global/tailwind.min.css\", \"../../global/survey.min.css\"],\n shadow: true,\n})\nexport class Ai12zBot {\n private cdnPath: string = \"https://cdn.ai12z.net/assets/bot\"\n @Element() el: HTMLElement\n @Prop() assetPath: string = import.meta.url\n @Prop({ reflect: true }) dataKey: string\n @Prop({ reflect: true }) dataMode: string\n @Prop({ reflect: true }) configId: string\n\n @State() botSettings: any = {}\n\n @State() botlogo: string = this.cdnPath + `/v1/ai12z-bot/img/chatbot.jpg`\n @State() botAvatar: string = this.cdnPath + `/v1/ai12z-bot/img/chatbot.jpg`\n\n @State() showWelcomeScreen: boolean = true\n @State() hideInput: boolean = false\n @State() showHistory: boolean = false\n @State() conversationId: string = \"\"\n @State() surveyDomId: string = \"\"\n @State() searchResults: any = {}\n @State() buttons: Array<{ id: string; label: string }> = []\n @State() currentDomId: string = \"\"\n @State() messages: { text: string; isUser: boolean; id: string; timestamp: string; images: any[]; conversationId: string; formModel: any; surveyDomId: string }[] = [\n // { text: this.welcomeMessage === \"\" ? \"Hi there! How can I assist you today\" : this.welcomeMessage, isUser: false, id: `chatbot-${generateUUID()}`, timestamp: \"\", images: [] },\n ]\n @State() questionCounter: number = 0\n @State() isChatOpen: boolean = false\n @State() visitorID: string\n @State() timestamp: string = \"\"\n @State() rowCount = 1\n @State() isBot = false\n @State() conversationHistory = []\n @State() isMenuOpen: boolean = false\n @State() menuAction: string = \"\"\n private timer: NodeJS.Timeout\n private inputEl!: HTMLTextAreaElement\n private uploadElem: HTMLInputElement\n private followUpElem: HTMLInputElement\n menuRef: HTMLElement\n private socket: Socket\n imagesBase64List = []\n @Event({\n eventName: \"messageSent\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n messageSent: EventEmitter\n @Event({\n eventName: \"messageReceived\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n messageReceived: EventEmitter\n\n @Event({\n eventName: \"close\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n close: EventEmitter\n\n @Event({\n eventName: \"open\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n open: EventEmitter\n\n @Event({\n eventName: \"minimize\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n minimize: EventEmitter\n\n @Event({\n eventName: \"errored\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n errored: EventEmitter\n\n @Listen(\"buttonClick\")\n buttonClickHandler(event: CustomEvent) {\n this.showWelcomeScreen = false\n this.hideInput = false\n this.menuAction = event.detail.action\n this.handleSend(event.detail.label)\n }\n\n @Listen(\"sendQueryToBot\")\n sendQueryToBotHandler(event: CustomEvent) {\n this.showWelcomeScreen = false\n this.hideInput = false\n this.menuAction = event.detail\n this.handleSend(event.detail)\n }\n\n @Listen(\"deleteChatHistory\")\n deleteChatHistoryHandler(event: CustomEvent) {\n const chatHistory = this.getConversationHistory()\n const updatedHistory = chatHistory.filter(item => item.conversationId !== event.detail.conversationId)\n localStorage.setItem(`${this.visitorID}`, JSON.stringify(updatedHistory))\n this.conversationHistory = updatedHistory\n }\n\n @Listen(\"chatClick\")\n chatClickHandler(event: CustomEvent) {\n this.messages = event.detail\n this.showWelcomeScreen = false\n this.hideInput = false\n }\n\n @Listen(\"openChat\")\n openChatHandler(_event: CustomEvent) {\n // console.log(\"open chat event\", event)\n this.isChatOpen = true\n }\n\n handleClickOutside(event: MouseEvent) {\n // Check if the clicked target is outside the menu\n const target = event.target as HTMLElement\n if (this.isMenuOpen && this.menuRef && !this.menuRef.contains(target)) {\n this.isMenuOpen = false\n }\n }\n\n componentDidLoad() {\n // console.log(\"Bot Settings getAssetPath\")\n // debugger;\n document.addEventListener(\"click\", this.handleClickOutside.bind(this))\n // Load jQuery first\n const jQueryScript = document.createElement(\"script\")\n jQueryScript.src = this.cdnPath + \"/v1/jquery.min.js\" // Path relative to the www root\n jQueryScript.onload = () => {\n // console.log(\"jQuery loaded\")\n // Load the script that loads and exposes SurveyJS\n const loadSurveyScript = document.createElement(\"script\")\n loadSurveyScript.src = this.cdnPath + \"/v1/survey.jquery.min.js\" // Path relative to the www root\n loadSurveyScript.onload = () => {\n // console.log(\"SurveyJS loaded and SurveyModel exposed\")\n }\n loadSurveyScript.onerror = err => {\n console.error(\"Failed to load Forms:\", err)\n }\n document.head.appendChild(loadSurveyScript)\n this.el.shadowRoot.appendChild(loadSurveyScript)\n }\n jQueryScript.onerror = err => {\n console.error(\"Failed to load jQuery:\", err)\n }\n document.head.appendChild(jQueryScript)\n this.el.shadowRoot.appendChild(jQueryScript)\n }\n\n disconnectedCallback() {\n // Remove event listener when component is destroyed\n document.removeEventListener(\"click\", this.handleClickOutside.bind(this))\n // clearInterval(this.timer)\n }\n\n checkHistory = () => {\n const storedMessages = localStorage.getItem(`${this.visitorID}`)\n let chatHistory = []\n if (storedMessages) {\n chatHistory = JSON.parse(storedMessages)\n chatHistory = chatHistory.filter(item => item.projectId === this.botSettings?.pId)\n }\n this.showHistory = chatHistory.length > 0 ? true : false\n // console.log(\"showHistory\", this.showHistory)\n }\n\n @Method()\n async sendMessage(message) {\n this.menuAction = message\n if (!this.isChatOpen) {\n this.isChatOpen = true\n }\n this.handleSend(message)\n }\n\n setLocalData() {\n const botData = { qCounter: this.questionCounter }\n localStorage.setItem(`ai12z-bot-data`, JSON.stringify(botData))\n }\n\n @Method()\n async action(type) {\n // this.isChatOpen = !this.isChatOpen\n if (type === \"open\") {\n this.isChatOpen = true\n this.open.emit(\"open\")\n this.setLocalData()\n }\n if (type === \"minimize\") {\n this.isChatOpen = false\n this.minimize.emit(\"minimize\")\n }\n const getVisitorKey = localStorage.getItem(`ai12z-visitorId`)\n this.visitorID = \"ai12z-\" + getVisitorKey\n this.checkHistory()\n if (type === \"close\") {\n this.isChatOpen = false\n this.searchResults = {}\n this.surveyDomId = \"\"\n this.showWelcomeScreen = true\n this.showHistory = this.messages.length > 0 ? true : false\n // this.saveConversation()\n this.messages = [...[]]\n this.conversationId = \"\"\n this.close.emit(\"close\")\n clearInterval(this.timer)\n }\n }\n\n toggleMenu(e) {\n e.stopPropagation()\n this.isMenuOpen = !this.isMenuOpen\n }\n\n adjustHeight = () => {\n this.inputEl.style.height = \"auto\"\n this.inputEl.style.height = this.inputEl.scrollHeight + \"px\"\n }\n\n connectedCallback() {\n this.configBot()\n }\n\n componentWillLoad() {\n this.checkCustomSlot()\n this.timestamp = this.formatTimestamp(new Date())\n this.socketConnection()\n // this.configBot()\n }\n\n configBot() {\n const payload = {\n apiKey: this.dataKey,\n configId: this.configId,\n }\n getBotConfig(payload, this.dataMode).then(data => {\n if (data) {\n // console.log(\"Bot Settings\", data)\n this.botSettings = data\n }\n })\n }\n\n checkCustomSlot() {\n const slot = this.el[\"children\"]\n let slotHasContent = slot && slot.length > 0\n if (slotHasContent) {\n for (var i = 0; i < slot.length; i++) {\n if (slot[i].tagName.toLowerCase() === \"bot\" || slot[i].getAttribute(\"slot\") === \"bot\") {\n this.isBot = true\n }\n }\n }\n }\n\n @Watch(\"currentDomId\")\n watchStateHandler(_newValue: boolean, _oldValue: boolean) {\n this.socket.off(\"response\")\n this.socket.off(\"end_response\")\n // console.log(\"currentDomId changed\")\n // console.log(\"questionCounter\", this.botSettings.maxQuestion)\n if (this.botSettings.maxQuestion === undefined || this.botSettings.maxQuestion === 0) {\n this.botSettings.maxQuestion = 0\n this.handleBotMessages()\n } else if (this.questionCounter <= this.botSettings.maxQuestion) {\n this.handleBotMessages()\n }\n }\n\n generateMessage() {\n return {\n text: \"\",\n isUser: false,\n id: `chatbot-${generateUUID()}`,\n timestamp: new Date().toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" }),\n images: [],\n conversationId: this.conversationId,\n formModel: {},\n surveyDomId: \"\",\n }\n }\n hideSpinner(chatData) {\n // Logic for hiding the spinner (assumed to return a Promise if async is needed)\n return new Promise(resolve => {\n const renderedBubble = this.el.shadowRoot.querySelector(`#${chatData.id}`)\n if (renderedBubble) {\n ;(renderedBubble.querySelector(\"#spinner\") as HTMLElement).style.display = \"none\"\n }\n // Assume some async action here, then resolve\n console.log(\"Spinner hidden\")\n resolve(true)\n })\n }\n\n async processChatData(chatData, data) {\n // Step 1: Hide the spinner\n await this.hideSpinner(chatData)\n\n // Step 2: Get the control element based on control type\n const controlElement = getComponentByControlType(data, \"bot\")\n\n const tmpControlType = data.controlData?.data?.source?.carousel?.type\n\n // Step 3: Append the control element if both it and the target container exist\n const targetContainer = this.el.shadowRoot.querySelector(`#${chatData.id}`)\n if (targetContainer && controlElement) {\n // console.log(\"controlElement\", targetContainer)\n targetContainer.appendChild(controlElement)\n targetContainer[\"style\"].width = \"98%\"\n\n if (tmpControlType === \"custom\" || tmpControlType === \"list\" || tmpControlType === \"slider\") {\n targetContainer.classList.remove(\"p-2.5\")\n targetContainer.classList.add(\"p-0\")\n targetContainer.classList.add(\"md:p-2.5\")\n }\n\n // Step 4: Wait until the control element is rendered\n await this.waitForElementRender(targetContainer as HTMLElement)\n\n // Step 5: Retrieve the content and emit the updated data\n chatData.text = targetContainer.innerHTML\n this.messages = this.messages.map(item => (item.id === chatData.id ? chatData : item))\n }\n }\n\n // Helper function to detect when the target element is rendered\n waitForElementRender(element: HTMLElement) {\n return new Promise<void>(resolve => {\n const observer = new MutationObserver(_mutations => {\n resolve()\n observer.disconnect()\n })\n observer.observe(element, { childList: true, subtree: true })\n })\n }\n\n handleBotMessages() {\n // const domId = this.messages[this.messages.length - 1].id\n this.socket.on(\"response\", event => {\n this.handleMessage(event.data, `${this.currentDomId}`) // Use the unique ID to handle messages\n })\n this.socket.on(\"end_response\", data => {\n // console.log(\"end_response\")\n this.messageReceived.emit(data)\n const converter = new showdown.Converter()\n let finalHtml = converter.makeHtml(data.answer)\n // document.getElementById(\"messageId\").innerHTML = finalHtml;\n finalHtml = updateButtonEvents(finalHtml).body\n this.buttons = updateButtonEvents(finalHtml).buttons\n this.searchResults = data\n this.conversationId = data.conversationId\n if (finalHtml.indexOf(\"[control\") > -1) {\n // console.log(\"controlType\", data.controlType)\n switch (data.controlType) {\n case \"form\":\n this.surveyDomId = \"surveyElement-\" + generateUUID()\n finalHtml = `<div id=${this.surveyDomId} style=\"width:330px\"></div>`\n this.el.shadowRoot.querySelector(`#${this.currentDomId}`).innerHTML = finalHtml\n break\n case \"carousel\":\n case \"list\":\n if (data.controlType && data.controlType !== null) {\n const newContent = splitContent(finalHtml)\n finalHtml = newContent.before\n this.updateConversations(finalHtml, data)\n const newMessage = this.generateMessage()\n this.messages = [...this.messages, newMessage]\n setTimeout(() => {\n this.processChatData(newMessage, data)\n }, 2000)\n if (newContent.after.trim().length > 0) {\n const afterMessage = this.generateMessage()\n afterMessage.text = newContent.after\n this.messages = [...this.messages, afterMessage]\n setTimeout(() => {\n if (afterMessage.id) {\n const bubbleEle = this.el.shadowRoot.querySelector(`#${afterMessage.id}`)\n if (bubbleEle && (bubbleEle.querySelector(\"#spinner\") as HTMLElement)) {\n ;(bubbleEle.querySelector(\"#spinner\") as HTMLElement).style.display = \"none\"\n }\n }\n }, 500)\n }\n }\n }\n } else {\n const currentDomElement = this.el.shadowRoot.querySelector(`#${this.currentDomId}`) as HTMLElement\n if (currentDomElement) {\n currentDomElement.style.width = \"auto\"\n }\n this.el.shadowRoot.querySelector(`#${this.currentDomId}`).innerHTML = finalHtml\n this.updateConversations(finalHtml, data)\n }\n\n this.saveConversation()\n this.scrollToBottom()\n })\n }\n\n updateConversations(finalHtml, data) {\n const updatedmsg = {\n id: this.currentDomId,\n text: finalHtml,\n isUser: false,\n timestamp: new Date().toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" }),\n images: [],\n conversationId: this.conversationId,\n formModel: data.controlData?.data?.source ?? data.controlData ?? {},\n surveyDomId: this.surveyDomId,\n }\n this.addEventListeners(`#${this.currentDomId}`)\n this.messages = this.messages.map(item => (item.id === this.currentDomId ? updatedmsg : item))\n }\n\n @Watch(\"surveyDomId\")\n watchSurveyDomIdHandler(_newValue: boolean, _oldValue: boolean) {\n setTimeout(() => {\n this.renderSurvey(this.searchResults)\n }, 1000)\n }\n\n alertResults = sender => {\n const results = JSON.stringify(sender.data)\n const query = \"Here is the data you requested:\" + results\n sender.implementor.renderedElement.innerHTML = `<p><b>Thank you</b></p>`\n\n this.messages = [\n ...this.messages,\n {\n text: query,\n isUser: false,\n id: `chatbot-${generateUUID()}`,\n timestamp: new Date().toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" }),\n images: [],\n conversationId: this.conversationId,\n formModel: {},\n surveyDomId: \"\",\n },\n ]\n this.scrollToBottom()\n this.invokeSocket()\n }\n\n renderSurvey = chat => {\n const survey = new window[\"Survey\"].Model(chat.controlData?.data?.source ?? chat.controlData)\n if (this.surveyDomId === \"\") {\n return\n }\n const domELe = this.el.shadowRoot?.querySelector(`#${this.surveyDomId}`)\n if (domELe) {\n window[\"jQuery\"](domELe).Survey({ model: survey })\n } else {\n console.error(\"Survey Element not found\")\n }\n\n if (typeof chat.controlData?.data?.source == \"object\" || typeof chat.controlData === \"object\") {\n this.hideCompleteButton(chat.controlData?.data?.source ?? chat.controlData, survey)\n } else {\n this.hideCompleteButton(JSON.parse(chat.controlData?.data?.source ?? chat.controlData), survey)\n }\n survey.showCompletedPage = false\n survey.onComplete.add(this.alertResults)\n }\n\n hideCompleteButton(form: any, survey) {\n if (form.pages) {\n form.pages.forEach((page: any) => {\n if (page.elements) {\n // console.log(\"page.elements\", page.elements)\n page.elements.forEach((element: any) => {\n if (element.type === \"html\") {\n if (element.html.includes(\"<iframe\")) {\n survey.showCompleteButton = false\n }\n }\n })\n }\n })\n }\n }\n\n addEventListeners(msgId) {\n const container = this.el.shadowRoot.querySelector(msgId)\n if (container) {\n this.buttons.forEach(button => {\n const buttonElement = container.querySelector(`#${button.id}`)\n if (buttonElement) {\n buttonElement.addEventListener(\"click\", this.handleButtonClick(button.label))\n }\n })\n }\n }\n\n handleButtonClick = (label: string) => (_event: Event) => {\n this.inputEl.value = label\n this.handleSend(label)\n }\n\n formatTimestamp(date: Date) {\n const today = new Date()\n today.setHours(0, 0, 0, 0)\n const options: Intl.DateTimeFormatOptions = {\n weekday: \"long\",\n hour: \"numeric\",\n minute: \"numeric\",\n hour12: true,\n }\n const formatter = new Intl.DateTimeFormat(\"en-US\", options)\n const formattedDate = formatter.format(date)\n\n if (date.toDateString() === today.toDateString()) {\n return `Today, ${formattedDate.split(\" \").slice(1).join(\" \")}`\n } else {\n return formattedDate\n }\n }\n\n async socketConnection() {\n let a12z_EndPoint = getEndpoint(this.dataMode)\n this.socket = io(a12z_EndPoint, { transports: [\"polling\"] })\n\n await new Promise<void>(resolve => {\n this.socket.on(\"connect\", () => {\n console.log(\"Connected to Socket.IO server\")\n resolve()\n })\n })\n\n this.socket.on(\"connect_error\", error => {\n this.errored.emit(error)\n console.error(\"Connection error:\", error)\n })\n\n this.socket.on(\"disconnect\", () => {\n console.log(\"Disconnected from Socket.IO server\")\n this.socket.off(\"response\")\n // Handle disconnection if needed\n })\n }\n\n invokeSocket() {\n const data = {\n apiKey: this.dataKey,\n query: this.menuAction !== \"\" ? this.menuAction : this.inputEl.value,\n conversationId: this.conversationId,\n event: \"evaluate_query\",\n }\n this.messageSent.emit(JSON.stringify(data))\n\n this.socket.emit(\"evaluate_query\", data, (error, response) => {\n if (error) {\n this.errored.emit(error)\n console.error(\"Error:\", error)\n } else {\n console.log(\"Response:\", response)\n }\n })\n this.currentDomId = this.messages[this.messages.length - 1].id\n if (this.inputEl) {\n this.inputEl.value = \"\"\n }\n this.menuAction = \"\"\n }\n\n handleMessage = (data, aiMessageId) => {\n const converter = new showdown.Converter()\n // const aiMessageBubble = document.getElementById(aiMessageId);\n\n const aiMessageBubble = this.el.shadowRoot?.querySelector(`#${aiMessageId}`)\n // const aiMessageBubble = this.element.querySelector('.ai12z-suggest-answer')\n\n if (!aiMessageBubble) {\n console.error(`Message bubble with ID ${aiMessageId} not found.`)\n return\n }\n var bubbleText = aiMessageBubble.getAttribute(\"data-bubbleText\") || \"\"\n bubbleText = bubbleText + data\n aiMessageBubble.setAttribute(\"data-bubbleText\", bubbleText)\n\n // Assuming data is a string containing the message content\n let html = converter.makeHtml(bubbleText)\n // Append new content to the existing chat bubble\n aiMessageBubble.innerHTML = html\n }\n\n onInputChange(files: FileList) {\n if (files.length > 0) {\n this.uploadImage(files)\n } else {\n console.error(files.length === 0 || \"NO IMAGE UPLOADED\")\n return false\n }\n }\n\n private uploadImage(files) {\n let newFile\n let tempImagesBase64List = []\n if (files.length > 10 || this.imagesBase64List.length > 10) {\n // this.showErrorMessage = true\n // console.error('You can upload a maximum of 10 images once at a time.');\n return\n }\n for (var i = 0; i < files.length; i++) {\n const mimeType = files[i].type\n if (!mimeType.match(\"image.*\")) {\n console.log(\"file is not an image\")\n return\n }\n newFile = files[i]\n\n const reader = new FileReader()\n\n reader.onload = () => {\n const imagePreviewContainer: HTMLElement = this.el.shadowRoot.querySelector(\"#previewContainer\")\n\n const base64Image = `data:${mimeType};base64,${(reader.result as string).split(\",\")[1]}`\n this.imagesBase64List.push(base64Image)\n tempImagesBase64List = this.imagesBase64List\n\n const newDiv = document.createElement(\"div\")\n newDiv.classList.add(\"image-Container\")\n newDiv.classList.add(\"sc-ai12z-input-form\")\n\n const img = document.createElement(\"img\")\n img.setAttribute(\"src\", reader.result as string)\n img.style.width = \"70px\"\n img.style.height = \"50px\"\n\n const deleteSpan = document.createElement(\"span\")\n deleteSpan.textContent = \"x\"\n deleteSpan.classList.add(\"delete-image\")\n deleteSpan.classList.add(\"sc-ai12z-input-form\")\n imagePreviewContainer.appendChild(newDiv)\n\n newDiv.appendChild(img)\n newDiv.appendChild(deleteSpan)\n\n deleteSpan.onclick = function (event) {\n let imgSrc = event.target[\"previousSibling\"] ? event.target[\"previousSibling\"].src : null\n let index = tempImagesBase64List.indexOf(imgSrc)\n if (index > -1) {\n tempImagesBase64List.splice(index, 1)\n }\n newDiv.remove()\n }\n\n // console.log('uploading finished, emitting an image blob to the outside world');\n }\n reader.readAsDataURL(newFile)\n reader.onloadend = () => {\n console.log(\"upload finished\")\n }\n\n reader.onerror = err => {\n console.error(\"something went wrong...\", err)\n }\n }\n }\n\n getConversationHistory() {\n const storedData = localStorage.getItem(`${this.visitorID}`)\n return storedData ? JSON.parse(storedData) : []\n }\n\n saveConversation() {\n let pastMessages = this.getConversationHistory()\n // console.log(\"saving conversation\", pastMessages)\n if (pastMessages.length > 0) {\n let conversationExists = pastMessages.filter(item => item.conversationId === this.conversationId && item.projectId === this.botSettings?.pId)\n if (conversationExists.length > 0) {\n conversationExists[0].messages = this.messages\n } else {\n pastMessages.push({\n conversationId: this.conversationId,\n projectId: this.botSettings?.pId,\n date: new Date(),\n messages: this.messages,\n })\n }\n } else {\n pastMessages.push({\n conversationId: this.conversationId,\n projectId: this.botSettings?.pId,\n date: new Date(),\n messages: this.messages,\n })\n }\n\n if (this.messages.length > 0) {\n localStorage.setItem(`${this.visitorID}`, JSON.stringify(pastMessages))\n }\n }\n\n loadConversation() {\n this.showWelcomeScreen = false\n this.hideInput = true\n this.messages = []\n const storedMessages = localStorage.getItem(`${this.visitorID}`)\n if (storedMessages) {\n this.conversationHistory = JSON.parse(storedMessages)\n this.conversationHistory = this.conversationHistory.filter(item => item.projectId === this.botSettings?.pId)\n // console.log(\"conversationHistory\", this.conversationHistory)\n // this.messages = chatHistory.map(item => ({ ...item }))\n }\n }\n\n @Listen(\"keydown\")\n handleKeyDown(ev: KeyboardEvent) {\n if (ev.key === \"Enter\" && !ev.shiftKey) {\n // console.log(\"down arrow pressed\")\n this.handleSend(this.inputEl.value)\n }\n }\n\n startTimer() {\n // const startTime = Date.now()\n this.timer = setInterval(() => {\n this.questionCounter = 0\n // const endTime = Date.now()\n // console.log(`Timer executed after ${endTime - startTime} milliseconds`)\n localStorage.setItem(`ai12z-bot-data`, JSON.stringify({ qCounter: this.questionCounter }))\n }, this.botSettings.autoResetTimer)\n }\n\n handleSend = eleValue => {\n this.questionCounter = this.questionCounter + 1\n localStorage.setItem(`ai12z-bot-data`, JSON.stringify({ qCounter: this.questionCounter }))\n const inputValue = eleValue\n if (this.inputEl) {\n this.inputEl.value = inputValue\n }\n if (this.messages.length === 0 && this.botSettings.autoResetTimer > 0) {\n this.startTimer()\n }\n if (this.showWelcomeScreen) {\n this.showWelcomeScreen = false\n }\n\n if (inputValue.trim()) {\n const now = new Date()\n const timestamp = now.toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" })\n\n // Add the new message to the chat\n this.messages = [\n ...this.messages,\n {\n text: inputValue,\n isUser: true,\n id: `user-${generateUUID()}`,\n timestamp: timestamp,\n images: this.imagesBase64List,\n conversationId: this.conversationId,\n formModel: {},\n surveyDomId: \"\",\n },\n {\n text: this.botSettings.maxQuestion > 0 && this.questionCounter > this.botSettings.maxQuestion ? this.botSettings.msgLimit : \"\",\n isUser: false,\n id: `chatbot-${generateUUID()}`,\n timestamp: \"\",\n images: [],\n conversationId: this.conversationId,\n formModel: {},\n surveyDomId: \"\",\n },\n ]\n\n if (this.messages.length === 2) {\n this.visitorID = getOrCreateVisitorId()\n }\n\n this.checkHistory()\n\n this.scrollToBottom()\n if (this.botSettings.maxQuestion > 0 && this.questionCounter > this.botSettings.maxQuestion) {\n console.log(\"Max question limit reached\")\n this.inputEl.value = \"\"\n } else {\n this.invokeSocket()\n }\n // this.invokeSocket()\n\n const parent = this.el.shadowRoot.querySelector(\"#previewContainer\")\n if (parent) {\n parent.innerHTML = \"\"\n }\n\n this.imagesBase64List = []\n this.rowCount = 1\n }\n }\n\n scrollToBottom() {\n const container = this.el.shadowRoot.querySelector(\".chat-body\")\n if (container) {\n container.scroll({\n top: container.scrollHeight,\n behavior: \"smooth\",\n })\n }\n }\n\n defaultTemplate() {\n return (\n <div class={{ \"prose\": true, \"floating-icon\": !this.isBot, \"right\": this.botSettings?.botPosition === \"right\", \"left\": this.botSettings?.botPosition === \"left\" }}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"white\" height=\"30px\" width=\"30px\" version=\"1.1\" id=\"Capa_1\" viewBox=\"0 0 60.019 60.019\">\n <g>\n <path d=\"M59.888,47.514l-3.839-11.518c2.056-3.615,3.14-7.716,3.14-11.893c0-13.286-10.809-24.095-24.095-24.095 c-8.242,0-15.824,4.223-20.219,11.007c3.089-1.291,6.477-2.007,10.029-2.007C39.294,9.01,51,20.716,51,35.104 c0,3.996-0.905,7.783-2.518,11.172l10.263,2.701c0.085,0.022,0.17,0.033,0.255,0.033c0.006,0,0.014-0.001,0.02,0 c0.553,0,1-0.448,1-1C60.019,47.829,59.972,47.66,59.888,47.514z\" />\n <path d=\"M24.905,11.01C11.619,11.01,0.81,21.819,0.81,35.104c0,4.176,1.084,8.277,3.14,11.893L0.051,58.693 c-0.116,0.349-0.032,0.732,0.219,1C0.462,59.898,0.727,60.01,1,60.01c0.085,0,0.17-0.011,0.255-0.033l12.788-3.365 c3.35,1.694,7.097,2.587,10.862,2.587C38.191,59.199,49,48.39,49,35.104S38.191,11.01,24.905,11.01z M41.246,26.799 c-0.152,0.083-0.317,0.123-0.479,0.123c-0.354,0-0.696-0.188-0.878-0.519c-2.795-5.097-8.115-8.679-13.883-9.349 c-0.549-0.063-0.941-0.56-0.878-1.108c0.063-0.548,0.558-0.942,1.108-0.878c6.401,0.743,12.304,4.718,15.406,10.373 C41.908,25.926,41.73,26.534,41.246,26.799z\" />\n </g>\n </svg>\n </div>\n )\n }\n\n handleFollowUp(_e) {\n // console.log(\"follow up\", e)\n this.messages = [...[]]\n this.conversationId = \"\"\n this.showWelcomeScreen = true\n }\n\n render() {\n // const imageSrc = getAssetPath(`./assets/ai12z-bot/img/chatbot.jpg`)\n const style = {\n width: this.botSettings?.botWidth ?? \"35%\",\n height: this.botSettings?.botHeight ?? \"80%\",\n }\n return (\n <div>\n <div\n class={{\n \"right\": this.botSettings?.botPosition === \"right\",\n \"left\": this.botSettings?.botPosition === \"left\",\n \"custom-floating-icon \": this.isBot,\n \"hide-chatbot\": this.isChatOpen,\n }}\n onClick={() => this.action(\"open\")}\n >\n {!this.isBot && this.botSettings?.botPosition && this.defaultTemplate()}\n {this.isBot && <slot name=\"bot\" />}\n </div>\n {!this.isChatOpen && this.botSettings?.popover?.returnMessage && <bot-popover popoverConfig={this.botSettings?.popover}></bot-popover>}\n {this.isChatOpen && (\n <div\n class={{\n \"chat-window\": true,\n \"chat-window-open\": this.isChatOpen,\n \"chat-window-close\": !this.isChatOpen,\n \"chat-right\": this.botSettings?.botPosition === \"right\",\n \"chat-left\": this.botSettings?.botPosition === \"left\",\n }}\n style={style}\n >\n {!this.hideInput && (\n <div class=\"chat-header\">\n {this.botSettings?.buttons?.length > 0 && (\n <button class=\"hamburger\" onClick={e => this.toggleMenu(e)}>\n ☰ {/* Hamburger Icon */}\n </button>\n )}\n <img class=\"avatar\" src={this.botSettings?.botLogo ?? this.botlogo} alt=\"Avatar\" />\n <span class=\"chat-name\">{this.botSettings?.botName}</span>\n {this.showHistory && (\n <button onClick={() => this.loadConversation()}>\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"#ffffff\" width=\"25\" height=\"25\">\n <path fill=\"none\" d=\"M0 0L24 0 24 24 0 24z\"></path>{\" \"}\n <path d=\"M12 2c5.523 0 10 4.477 10 10s-4.477 10-10 10c-1.702 0-3.305-.425-4.708-1.175L2 22l1.176-5.29C2.426 15.306 2 13.703 2 12 2 6.477 6.477 2 12 2zm0 2c-4.418 0-8 3.582-8 8 0 1.335.326 2.618.94 3.766l.35.654-.656 2.946 2.948-.654.653.349c1.148.614 2.43.939 3.765.939 4.418 0 8-3.582 8-8s-3.582-8-8-8zm1 3v5h4v2h-6V7h2z\"></path>{\" \"}\n </svg>\n </button>\n )}\n <button class=\"minimizebtn\" onClick={() => this.action(\"minimize\")}>\n <svg fill=\"white\" height=\"20px\" width=\"20px\" version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path d=\"M505.752,6.248c-8.331-8.331-21.839-8.331-30.17,0L320,161.83V64c0-11.782-9.551-21.333-21.333-21.333 c-11.782,0-21.333,9.551-21.333,21.333v149.333c0,0.007,0.001,0.015,0.001,0.022c0.001,0.695,0.037,1.39,0.105,2.083 c0.031,0.318,0.091,0.627,0.136,0.94c0.054,0.375,0.098,0.75,0.171,1.122c0.071,0.359,0.17,0.708,0.259,1.061 c0.081,0.322,0.151,0.645,0.248,0.964c0.105,0.346,0.234,0.68,0.356,1.018c0.114,0.318,0.219,0.639,0.349,0.953 c0.131,0.316,0.284,0.618,0.43,0.926c0.152,0.323,0.296,0.649,0.465,0.966c0.158,0.295,0.338,0.575,0.509,0.861 c0.186,0.311,0.361,0.626,0.564,0.929c0.211,0.316,0.447,0.613,0.674,0.917c0.19,0.253,0.365,0.513,0.568,0.759 c0.892,1.087,1.889,2.085,2.977,2.977c0.246,0.202,0.506,0.378,0.759,0.568c0.304,0.228,0.601,0.463,0.917,0.674 c0.303,0.203,0.618,0.379,0.929,0.564c0.286,0.171,0.566,0.351,0.861,0.509c0.317,0.169,0.643,0.313,0.966,0.465 c0.308,0.145,0.611,0.299,0.926,0.43c0.314,0.13,0.635,0.235,0.953,0.349c0.338,0.122,0.672,0.251,1.018,0.356 c0.318,0.096,0.642,0.167,0.964,0.248c0.353,0.089,0.701,0.188,1.061,0.259c0.372,0.074,0.748,0.118,1.122,0.171 c0.314,0.045,0.622,0.104,0.94,0.136c0.693,0.068,1.388,0.105,2.083,0.105c0.007,0,0.015,0.001,0.022,0.001H448 c11.782,0,21.333-9.551,21.333-21.333c0-11.782-9.551-21.333-21.333-21.333h-97.83L505.752,36.418 C514.083,28.087,514.083,14.58,505.752,6.248z\"></path>{\" \"}\n <path d=\"M234.56,296.562c-0.031-0.318-0.091-0.627-0.136-0.94c-0.054-0.375-0.098-0.75-0.171-1.122 c-0.071-0.359-0.17-0.708-0.259-1.061c-0.081-0.322-0.151-0.645-0.248-0.964c-0.105-0.346-0.234-0.68-0.356-1.018 c-0.114-0.318-0.219-0.639-0.349-0.953c-0.131-0.316-0.284-0.618-0.43-0.926c-0.152-0.323-0.296-0.649-0.465-0.966 c-0.158-0.295-0.338-0.575-0.509-0.861c-0.186-0.311-0.361-0.626-0.564-0.929c-0.211-0.316-0.447-0.613-0.674-0.917 c-0.19-0.253-0.365-0.513-0.568-0.759c-0.892-1.087-1.889-2.085-2.977-2.977c-0.246-0.202-0.506-0.378-0.759-0.568 c-0.304-0.228-0.601-0.463-0.917-0.674c-0.303-0.203-0.618-0.379-0.929-0.564c-0.286-0.171-0.566-0.351-0.861-0.509 c-0.317-0.169-0.643-0.313-0.966-0.465c-0.308-0.145-0.611-0.299-0.926-0.43c-0.314-0.13-0.635-0.235-0.953-0.349 c-0.338-0.122-0.672-0.251-1.018-0.356c-0.318-0.096-0.642-0.167-0.964-0.248c-0.353-0.089-0.701-0.188-1.061-0.259 c-0.372-0.074-0.748-0.118-1.122-0.171c-0.314-0.045-0.622-0.104-0.94-0.136c-0.7-0.069-1.402-0.106-2.105-0.106l0,0H64 c-11.782,0-21.333,9.551-21.333,21.333C42.667,310.449,52.218,320,64,320h97.83L6.248,475.582c-8.331,8.331-8.331,21.839,0,30.17 c8.331,8.331,21.839,8.331,30.17,0L192,350.17V448c0,11.782,9.551,21.333,21.333,21.333c11.782,0,21.333-9.551,21.333-21.333 V298.667l0,0C234.667,297.964,234.629,297.262,234.56,296.562z\"></path>{\" \"}\n </svg>\n </button>\n\n <button class=\"close-btn\" onClick={() => this.action(\"close\")}>\n <svg aria-hidden=\"true\" width=\"25\" height=\"13\" viewBox=\"0 0 23 23\" fill=\"none\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n fill=\"white\"\n d=\"M9.34583 11.2L0.384011 2.23818C-0.128004 1.72617 -0.128004 0.896026 0.384011 0.384011C0.896026 -0.128004 1.72617 -0.128004 2.23818 0.384011L11.2 9.34583L20.1618 0.384011C20.6738 -0.128004 21.504 -0.128004 22.016 0.384011C22.528 0.896026 22.528 1.72617 22.016 2.23818L13.0542 11.2L22.016 20.1618C22.528 20.6738 22.528 21.504 22.016 22.016C21.504 22.528 20.6738 22.528 20.1618 22.016L11.2 13.0542L2.23818 22.016C1.72617 22.528 0.896026 22.528 0.384011 22.016C-0.128003 21.504 -0.128003 20.6738 0.384011 20.1618L9.34583 11.2Z\"\n ></path>\n </svg>\n </button>\n </div>\n )}\n <div class={`menu ${this.isMenuOpen ? \"open\" : \"closed\"}`} ref={el => (this.menuRef = el)}>\n <ul>\n {this.botSettings?.buttons?.map(item => (\n <li\n onClick={() => {\n this.isMenuOpen = !this.isMenuOpen\n this.menuAction = item.action\n this.handleSend(item.label)\n }}\n >\n {item.label}\n </li>\n ))}\n </ul>\n </div>\n {this.hideInput && (\n <div class=\"chat-header\">\n <button\n onClick={() => {\n this.showWelcomeScreen = true\n this.hideInput = false\n this.checkHistory()\n }}\n >\n <svg aria-hidden=\"true\" width=\"20\" height=\"20\" viewBox=\"0 0 10 19\">\n <path\n fill=\"#FFFFFF\"\n d=\"M9.70711 0.542893C10.0976 0.933418 10.0976 1.56658 9.70711 1.95711L2.41421 9.25L9.70711 16.5429C10.0976 16.9334 10.0976 17.5666 9.70711 17.9571C9.31658 18.3476 8.68342 18.3476 8.29289 17.9571L0.292893 9.95711C0.105357 9.76957 -4.04995e-07 9.51522 -3.93402e-07 9.25C-3.81809e-07 8.98478 0.105357 8.73043 0.292893 8.54289L8.29289 0.542893C8.68342 0.152369 9.31658 0.152369 9.70711 0.542893Z\"\n clip-rule=\"evenodd\"\n fill-rule=\"evenodd\"\n ></path>\n </svg>\n </button>\n <span class=\"header-title\">Conversation History</span>\n </div>\n )}\n\n <div class=\"chat-body\">\n {this.showWelcomeScreen && (\n <chatbot-welcome\n welcomeMessage={this.botSettings?.welcome?.message}\n buttonsList={this.botSettings?.welcome?.buttons}\n welcomelogo={this.botSettings?.welcome?.image}\n />\n )}\n {this.showHistory && this.conversationHistory.length > 0 && this.hideInput && (\n <chatbot-history chatList={this.conversationHistory} botName={this.botSettings?.botName}></chatbot-history>\n )}\n {!this.showWelcomeScreen && this.messages.length > 0 && <p class=\"timestamp\">{this.timestamp}</p>}\n {!this.showWelcomeScreen &&\n this.messages.length > 0 &&\n this.messages.map(msg => (\n <div class={{ \"message\": true, \"message-user\": msg.isUser }}>\n <div class={{ \"msg-wrapper\": true, \"pl-1\": true, \"md:pl-0\": true }}>\n {!msg.isUser && <img class=\"bot-avatar hidden md:block\" src={this.botSettings?.botAvatar ?? this.botAvatar} alt=\"Bot Avatar\" />}\n <div class={{ \"message-content\": true, \"bubble-width\": !msg.isUser }}>\n <span class={{ \"message-text\": true, \"message-bot\": !msg.isUser, \"prose\": true, \"p-2.5\": true }} id={msg.id} innerHTML={msg.text}>\n {msg?.images?.map(img => {\n return <img src={img} class=\"thumbnail\" alt=\"thumbnail\" />\n })}\n {!msg.isUser && msg.text === \"\" && (\n <svg class=\"animate-spin h-5 w-5 text-gray-400\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" id=\"spinner\">\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\n <path\n class=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 0 1 4 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n ></path>\n </svg>\n )}\n </span>\n <span class=\"message-timestamp\">{msg.timestamp}</span>\n </div>\n </div>\n </div>\n ))}\n </div>\n\n <div id=\"previewContainer\"></div>\n\n {!this.hideInput && (\n <div class=\"chat-footer\">\n {this.messages.length === 0 && (\n <div class=\"custom-privacy\">\n <slot name=\"custom-privacy\" />\n </div>\n )}\n {this.messages?.length > 0 && (\n <div class=\"follow-up\">\n <input\n ref={el => (this.followUpElem = el as HTMLInputElement)}\n type=\"checkbox\"\n name=\"followUp\"\n id=\"followUp\"\n defaultChecked={true}\n class=\"follow-up-input\"\n onChange={ev => this.handleFollowUp(ev)}\n />\n <label htmlFor=\"followUp\">Do you have a follow up question?</label>\n <svg\n onClick={() => this.followUpElem.click()}\n class=\"custom-svg-checkbox\n peer-checked:block text-white\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"4\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <polyline points=\"20 6 9 17 4 12\"></polyline>\n </svg>\n </div>\n )}\n <div style={{ display: \"flex\" }}>\n <textarea\n rows={this.rowCount}\n placeholder={this.botSettings?.botPlaceholderText ?? \"Type your message...\"}\n ref={el => (this.inputEl = el as HTMLTextAreaElement)}\n onKeyUp={this.adjustHeight}\n />\n {this.botSettings.imageUpload && (\n <div class=\"custom-attachment\">\n <input\n type=\"file\"\n multiple\n name=\"files[]\"\n id=\"fileInput\"\n accept=\"image/*\"\n class=\"image-upload__input\"\n onChange={($event: any) => this.onInputChange($event.target.files)}\n ref={el => (this.uploadElem = el as HTMLInputElement)}\n />\n <svg onClick={() => this.uploadElem.click()} aria-hidden=\"true\" width=\"18\" height=\"16\" viewBox=\"0 0 16 18\">\n <path\n fill=\"#687882\"\n fill-rule=\"evenodd\"\n d=\"M8.078 16a.71.71 0 0 1-.513-.222.784.784 0 0 1 0-1.075l7.53-7.879c.562-.587.871-1.368.871-2.199 0-.83-.31-1.611-.87-2.197a2.883 2.883 0 0 0-4.204 0l-8.735 9.139c-.493.516-.73 1.012-.703 1.476.026.452.298.801.46.968.27.284.563.402.892.358.413-.054.888-.35 1.375-.86l6.854-7.172a.703.703 0 0 1 1.026 0 .784.784 0 0 1 0 1.074l-6.853 7.172c-.728.761-1.475 1.196-2.222 1.293-.783.102-1.509-.172-2.1-.79-.528-.553-.841-1.246-.881-1.952-.053-.917.326-1.805 1.125-2.64l8.735-9.14a4.292 4.292 0 0 1 6.257 0 4.706 4.706 0 0 1 1.296 3.271c0 1.236-.461 2.4-1.296 3.274l-7.53 7.879a.71.71 0 0 1-.514.222z\"\n ></path>\n </svg>\n </div>\n )}\n <button onClick={() => this.handleSend(this.inputEl.value)}>\n <svg aria-hidden=\"true\" width=\"17\" height=\"16\" viewBox=\"0 0 17 16\">\n <path\n fill=\"#687882\"\n fill-rule=\"evenodd\"\n stroke=\"#687882\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M1 1l2.166 5.39 8.5 1.564-8.5 1.666L1 15l16-7z\"\n ></path>\n </svg>\n </button>\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n )\n }\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { S as SearchResult } from './ai12z-cta-
|
|
2
|
-
export { A as ai12z_bot, a as ai12z_cta } from './ai12z-cta-
|
|
1
|
+
import { S as SearchResult } from './ai12z-cta-0a5c610a.js';
|
|
2
|
+
export { A as ai12z_bot, a as ai12z_cta } from './ai12z-cta-0a5c610a.js';
|
|
3
3
|
import { r as registerInstance, h, F as Fragment, c as createEvent, g as getElement, E as Env } from './index-9f7965fd.js';
|
|
4
4
|
import { j as getDefaultExportFromCjs, s as showdown, d as splitContent, c as getComponentByControlType, k as debounce$1, m as getTemplate, n as getBotTemplate } from './utils-d054923e.js';
|
|
5
5
|
|