@locdo.tech/botiq-chat-sdk 0.3.4 → 0.4.0
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/sdk/index.js +1 -1
- package/dist/sdk/{npm-BHJnX0sn.js → npm-DV43YS-n.js} +242 -115
- package/dist/sdk/react.js +1 -1
- package/dist/sdk/vue.js +1 -1
- package/package.json +1 -1
package/dist/sdk/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as e } from "./npm-
|
|
1
|
+
import { t as e } from "./npm-DV43YS-n.js";
|
|
2
2
|
export { e as init };
|
|
@@ -160,30 +160,68 @@ async function S(e, t, n, r, i, a) {
|
|
|
160
160
|
return a.errorMessage;
|
|
161
161
|
}
|
|
162
162
|
}
|
|
163
|
+
var C = {
|
|
164
|
+
messages: [],
|
|
165
|
+
hasMore: !1
|
|
166
|
+
};
|
|
167
|
+
function w(e) {
|
|
168
|
+
if (!e || typeof e != "object") return !1;
|
|
169
|
+
let t = e;
|
|
170
|
+
return typeof t.id == "string" && (t.role === "user" || t.role === "assistant") && typeof t.content == "string";
|
|
171
|
+
}
|
|
172
|
+
async function T(e, t, n, r, i) {
|
|
173
|
+
try {
|
|
174
|
+
let a = new URLSearchParams({
|
|
175
|
+
sessionId: n,
|
|
176
|
+
limit: String(i)
|
|
177
|
+
});
|
|
178
|
+
r && a.set("before", r);
|
|
179
|
+
let o = await fetch(`${e}/widget/messages?${a.toString()}`, {
|
|
180
|
+
method: "GET",
|
|
181
|
+
headers: { "X-Api-Key": t },
|
|
182
|
+
referrerPolicy: "no-referrer-when-downgrade"
|
|
183
|
+
});
|
|
184
|
+
if (!o.ok) return C;
|
|
185
|
+
let s = await o.json();
|
|
186
|
+
return {
|
|
187
|
+
messages: Array.isArray(s.messages) ? s.messages.filter(w) : [],
|
|
188
|
+
hasMore: s.hasMore === !0
|
|
189
|
+
};
|
|
190
|
+
} catch {
|
|
191
|
+
return C;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
function ee(e, t, n, r) {
|
|
195
|
+
return T(e, t, n, void 0, r);
|
|
196
|
+
}
|
|
197
|
+
function te(e, t, n, r, i) {
|
|
198
|
+
return T(e, t, n, r, i);
|
|
199
|
+
}
|
|
163
200
|
//#endregion
|
|
164
201
|
//#region src/core/state.ts
|
|
165
|
-
var
|
|
202
|
+
var E = {
|
|
166
203
|
messages: [],
|
|
167
204
|
isLoading: !1,
|
|
168
|
-
isOpen: !1
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
205
|
+
isOpen: !1,
|
|
206
|
+
loadingOlder: !1
|
|
207
|
+
}, D = /* @__PURE__ */ new Set();
|
|
208
|
+
function O() {
|
|
209
|
+
return E;
|
|
210
|
+
}
|
|
211
|
+
function k(e) {
|
|
212
|
+
Object.assign(E, e);
|
|
175
213
|
let t = {
|
|
176
|
-
...
|
|
177
|
-
messages: [...
|
|
214
|
+
...E,
|
|
215
|
+
messages: [...E.messages]
|
|
178
216
|
};
|
|
179
|
-
|
|
217
|
+
D.forEach((e) => e(t));
|
|
180
218
|
}
|
|
181
|
-
function
|
|
182
|
-
return
|
|
219
|
+
function A(e) {
|
|
220
|
+
return D.add(e), () => D.delete(e);
|
|
183
221
|
}
|
|
184
222
|
//#endregion
|
|
185
223
|
//#region src/core/styles.ts
|
|
186
|
-
var
|
|
224
|
+
var j = {
|
|
187
225
|
inter: {
|
|
188
226
|
url: "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap",
|
|
189
227
|
family: "'Inter', system-ui, -apple-system, sans-serif"
|
|
@@ -192,45 +230,33 @@ var O = {
|
|
|
192
230
|
url: "https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600&display=swap",
|
|
193
231
|
family: "'Plus Jakarta Sans', system-ui, -apple-system, sans-serif"
|
|
194
232
|
},
|
|
195
|
-
poppins: {
|
|
196
|
-
url: "https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600&display=swap",
|
|
197
|
-
family: "'Poppins', system-ui, -apple-system, sans-serif"
|
|
198
|
-
},
|
|
199
233
|
nunito: {
|
|
200
234
|
url: "https://fonts.googleapis.com/css2?family=Nunito:wght@400;500;600&display=swap",
|
|
201
235
|
family: "'Nunito', system-ui, -apple-system, sans-serif"
|
|
202
236
|
},
|
|
203
|
-
"dm-sans": {
|
|
204
|
-
url: "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600&display=swap",
|
|
205
|
-
family: "'DM Sans', system-ui, -apple-system, sans-serif"
|
|
206
|
-
},
|
|
207
237
|
raleway: {
|
|
208
238
|
url: "https://fonts.googleapis.com/css2?family=Raleway:wght@400;500;600&display=swap",
|
|
209
239
|
family: "'Raleway', system-ui, -apple-system, sans-serif"
|
|
210
240
|
},
|
|
211
|
-
lato: {
|
|
212
|
-
url: "https://fonts.googleapis.com/css2?family=Lato:wght@400;700&display=swap",
|
|
213
|
-
family: "'Lato', system-ui, -apple-system, sans-serif"
|
|
214
|
-
},
|
|
215
241
|
playfair: {
|
|
216
242
|
url: "https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;500;600&display=swap",
|
|
217
243
|
family: "'Playfair Display', Georgia, serif"
|
|
218
244
|
}
|
|
219
245
|
};
|
|
220
|
-
function
|
|
246
|
+
function M(e, t) {
|
|
221
247
|
if (!t) return e;
|
|
222
248
|
let n = t.angle ?? 135;
|
|
223
249
|
return t.type === "linear" ? `linear-gradient(${n}deg, ${t.from}, ${t.to})` : `radial-gradient(circle, ${t.from}, ${t.to})`;
|
|
224
250
|
}
|
|
225
|
-
function
|
|
251
|
+
function ne(e) {
|
|
226
252
|
return e.replace(/\/\*[\s\S]*?\*\//g, "").replace(/\\[0-9a-fA-F]{1,6}\s?/g, "x").replace(/@import\b[^;]*;?/gi, "").replace(/url\s*\(\s*["']?\s*(?!data:)[^)]*["']?\s*\)/gi, "url(\"\")").replace(/expression\s*\(/gi, "expression_(").replace(/javascript\s*:/gi, "blocked:").replace(/-moz-binding\s*:/gi, "").replace(/\bbehavior\s*:/gi, "");
|
|
227
253
|
}
|
|
228
|
-
function
|
|
254
|
+
function N(e) {
|
|
229
255
|
let t = e?.bubbleOpen ?? "none", n = e?.typingIndicator ?? "dots-bounce";
|
|
230
256
|
return [t === "fade" ? "@keyframes biq-open-fade { from { opacity: 0; } to { opacity: 1; } }\n.chat-window.open { animation: biq-open-fade .22s ease forwards; }" : t === "slide-up" ? "@keyframes biq-open-slide { from { opacity: 0; transform: scale(1) translateY(20px); } to { opacity: 1; transform: scale(1) translateY(0); } }\n.chat-window.open { animation: biq-open-slide .25s cubic-bezier(.22,1,.36,1) forwards; }" : t === "bounce" ? "@keyframes biq-open-bounce { 0% { opacity: 0; transform: scale(.85) translateY(8px); } 60% { transform: scale(1.03) translateY(-3px); } 100% { opacity: 1; transform: scale(1) translateY(0); } }\n.chat-window.open { animation: biq-open-bounce .35s cubic-bezier(.34,1.56,.64,1) forwards; }" : "", n === "dots-pulse" ? "@keyframes biq-pulse { 0%, 100% { opacity: 0.3; transform: scale(1); } 50% { opacity: 1; transform: scale(1.3); } }\n.typing span { animation: biq-pulse 1.2s infinite ease-in-out; }" : n === "bar" ? ".typing { gap: 3px; align-items: flex-end; }\n.typing span { width: 3px; height: 14px; border-radius: 2px; animation: biq-bar 1s infinite ease-in-out; }\n.typing span:nth-child(1) { animation-delay: 0s; }\n.typing span:nth-child(2) { animation-delay: .15s; height: 20px; }\n.typing span:nth-child(3) { animation-delay: .3s; }\n@keyframes biq-bar { 0%, 100% { transform: scaleY(.4); opacity: .5; } 50% { transform: scaleY(1); opacity: 1; } }" : ""].filter(Boolean).join("\n");
|
|
231
257
|
}
|
|
232
|
-
function
|
|
233
|
-
let { colors: t, layout: n, font: r, gradient: i, animation: a, customCSS: o, whiteLabel: s } = e, c =
|
|
258
|
+
function P(e) {
|
|
259
|
+
let { colors: t, layout: n, font: r, gradient: i, animation: a, customCSS: o, whiteLabel: s } = e, c = j[r] ?? j.inter, l = n.buttonShape === "square" ? "14px" : "50%", u = n.position === "bottom-left" ? "right: auto; left: 24px;" : "right: 24px;", d = n.position === "bottom-left" ? "bottom left" : "bottom right", f = n.position === "bottom-left" ? "right: auto; left: 0;" : "right: 0;", p = M(t.primary, i), m = M(t.header, i), h = M(t.userBubble, i), g = s ? ".botiq-badge { display: none !important; }" : "";
|
|
234
260
|
return `
|
|
235
261
|
@import url('${c.url}');
|
|
236
262
|
|
|
@@ -407,6 +433,37 @@ function M(e) {
|
|
|
407
433
|
background: rgba(255,255,255,.1);
|
|
408
434
|
white-space: pre-wrap;
|
|
409
435
|
}
|
|
436
|
+
.message-bubble del { text-decoration: line-through; opacity: .7; }
|
|
437
|
+
|
|
438
|
+
/* ── Markdown headings ───────────────────────────────── */
|
|
439
|
+
/* Kept modest — the chat bubble is small, so headings are only slightly
|
|
440
|
+
larger than body text, never document-sized. */
|
|
441
|
+
.message-bubble h1,
|
|
442
|
+
.message-bubble h2,
|
|
443
|
+
.message-bubble h3,
|
|
444
|
+
.message-bubble h4,
|
|
445
|
+
.message-bubble h5,
|
|
446
|
+
.message-bubble h6 {
|
|
447
|
+
margin: 8px 0 4px;
|
|
448
|
+
font-weight: 600;
|
|
449
|
+
line-height: 1.3;
|
|
450
|
+
color: #fff;
|
|
451
|
+
}
|
|
452
|
+
.message-bubble h1 { font-size: 16px; }
|
|
453
|
+
.message-bubble h2 { font-size: 15px; }
|
|
454
|
+
.message-bubble h3 { font-size: 14px; }
|
|
455
|
+
.message-bubble h4,
|
|
456
|
+
.message-bubble h5,
|
|
457
|
+
.message-bubble h6 { font-size: 13px; }
|
|
458
|
+
.message-bubble :first-child { margin-top: 0; }
|
|
459
|
+
|
|
460
|
+
/* ── Markdown horizontal rule ────────────────────────── */
|
|
461
|
+
.message-bubble hr {
|
|
462
|
+
border: 0;
|
|
463
|
+
height: 1px;
|
|
464
|
+
background: rgba(255,255,255,.15);
|
|
465
|
+
margin: 8px 0;
|
|
466
|
+
}
|
|
410
467
|
|
|
411
468
|
/* ── Markdown tables ─────────────────────────────────── */
|
|
412
469
|
.message-bubble table {
|
|
@@ -586,144 +643,192 @@ function M(e) {
|
|
|
586
643
|
.send-btn svg { width: 18px; height: 18px; fill: #fff; }
|
|
587
644
|
|
|
588
645
|
${g}
|
|
589
|
-
${
|
|
590
|
-
${o ?
|
|
646
|
+
${N(a)}
|
|
647
|
+
${o ? ne(o) : ""}
|
|
591
648
|
`;
|
|
592
649
|
}
|
|
593
650
|
//#endregion
|
|
594
651
|
//#region src/core/assets.ts
|
|
595
|
-
var
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
652
|
+
var F = "data:image/png;base64,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";
|
|
653
|
+
//#endregion
|
|
654
|
+
//#region src/core/history-pager.ts
|
|
655
|
+
function I() {
|
|
656
|
+
return {
|
|
657
|
+
oldestCursor: null,
|
|
658
|
+
hasMore: !1,
|
|
659
|
+
cursorReady: !1
|
|
660
|
+
};
|
|
661
|
+
}
|
|
662
|
+
function L(e) {
|
|
663
|
+
return {
|
|
664
|
+
oldestCursor: e.messages[0]?.id ?? null,
|
|
665
|
+
hasMore: e.hasMore,
|
|
666
|
+
cursorReady: e.messages.length > 0
|
|
667
|
+
};
|
|
668
|
+
}
|
|
669
|
+
function R(e, t) {
|
|
670
|
+
return {
|
|
671
|
+
oldestCursor: t.messages[0]?.id ?? e.oldestCursor,
|
|
672
|
+
hasMore: t.hasMore,
|
|
673
|
+
cursorReady: e.cursorReady
|
|
674
|
+
};
|
|
675
|
+
}
|
|
676
|
+
function z(e, t) {
|
|
677
|
+
return e.cursorReady && e.hasMore && !t && e.oldestCursor !== null;
|
|
678
|
+
}
|
|
679
|
+
function B(e, t, n) {
|
|
680
|
+
return e + (n - t);
|
|
681
|
+
}
|
|
682
|
+
//#endregion
|
|
683
|
+
//#region src/core/ui.ts
|
|
684
|
+
var V = "https://bot-q-frontend.vercel.app/", H = "<svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M20 2H4a2 2 0 00-2 2v18l4-4h14a2 2 0 002-2V4a2 2 0 00-2-2z\"/>\n</svg>", U = "<svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"/>\n</svg>", W = `<img src="${F}" alt="" style="width:100%;height:100%;object-fit:cover;border-radius:50%" />`, G = "<svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2.01 21L23 12 2.01 3 2 10l15 2-15 2z\"/>\n</svg>", K = "<svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M20 2H4a2 2 0 00-2 2v18l4-4h14a2 2 0 002-2V4a2 2 0 00-2-2zm-2 10H6v-2h12v2zm0-3H6V7h12v2z\"/>\n</svg>";
|
|
685
|
+
function q(e) {
|
|
686
|
+
if (!e || e.type === "icon") return W;
|
|
687
|
+
if (e.type === "emoji") return `<span style="font-size:22px;line-height:1;display:flex;align-items:center;justify-content:center;width:100%;height:100%">${J(e.value)}</span>`;
|
|
599
688
|
if (e.type === "initials") {
|
|
600
689
|
let t = e.bgColor ?? "#F97316";
|
|
601
|
-
return `<div style="width:100%;height:100%;border-radius:50%;background:${/^#[0-9A-Fa-f]{3,6}$/.test(t) ? t : "#F97316"};display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;color:#fff">${
|
|
690
|
+
return `<div style="width:100%;height:100%;border-radius:50%;background:${/^#[0-9A-Fa-f]{3,6}$/.test(t) ? t : "#F97316"};display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;color:#fff">${J(e.value.slice(0, 2).toUpperCase())}</div>`;
|
|
602
691
|
}
|
|
603
|
-
return e.type === "image" ? `<img src="${
|
|
692
|
+
return e.type === "image" ? `<img src="${J(e.value)}" style="width:100%;height:100%;object-fit:cover;border-radius:50%" alt="" />` : W;
|
|
604
693
|
}
|
|
605
|
-
function
|
|
694
|
+
function J(e) {
|
|
606
695
|
return e.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
|
|
607
696
|
}
|
|
608
|
-
function
|
|
697
|
+
function Y(e) {
|
|
609
698
|
let t = [];
|
|
610
|
-
return e = e.replace(/`([^`]+)`/g, (e, n) => (t.push(`<code>${n}</code>`), `\x00CODE${t.length - 1}\x00`)), e = e.replace(/\*\*\*(.+?)\*\*\*/g, "<strong><em>$1</em></strong>"), e = e.replace(/\*\*(.+?)\*\*/g, "<strong>$1</strong>"), e = e.replace(/(?<!\*)\*(?!\*)(.+?)(?<!\*)\*(?!\*)/g, "<em>$1</em>"), e = e.replace(/\[([^\]]+)\]\(([^()]*(?:\([^()]*\))*[^()]*)\)/g, (e, t, n) => /^https?:\/\//.test(n) ? `<a href="${n}" target="_blank" rel="noopener noreferrer">${t}</a>` : t), e = e.replace(/\x00CODE(\d+)\x00/g, (e, n) => t[Number(n)]), e;
|
|
699
|
+
return e = e.replace(/`([^`]+)`/g, (e, n) => (t.push(`<code>${n}</code>`), `\x00CODE${t.length - 1}\x00`)), e = e.replace(/\*\*\*(.+?)\*\*\*/g, "<strong><em>$1</em></strong>"), e = e.replace(/\*\*(.+?)\*\*/g, "<strong>$1</strong>"), e = e.replace(/(?<!\*)\*(?!\*)(.+?)(?<!\*)\*(?!\*)/g, "<em>$1</em>"), e = e.replace(/~~(.+?)~~/g, "<del>$1</del>"), e = e.replace(/__(.+?)__/g, "<strong>$1</strong>"), e = e.replace(/(^|\s)_(?!_)(.+?)_(?!_)(?=\s|$)/g, "$1<em>$2</em>"), e = e.replace(/\[([^\]]+)\]\(([^()]*(?:\([^()]*\))*[^()]*)\)/g, (e, t, n) => /^https?:\/\//.test(n) ? `<a href="${n}" target="_blank" rel="noopener noreferrer">${t}</a>` : t), e = e.replace(/\x00CODE(\d+)\x00/g, (e, n) => t[Number(n)]), e;
|
|
611
700
|
}
|
|
612
|
-
function
|
|
701
|
+
function X(e) {
|
|
613
702
|
return /^\|[\s\-:|]+\|$/.test(e);
|
|
614
703
|
}
|
|
615
|
-
function
|
|
704
|
+
function Z(e) {
|
|
616
705
|
return e.replace(/^\|/, "").replace(/\|$/, "").split("|").map((e) => e.trim());
|
|
617
706
|
}
|
|
618
|
-
function
|
|
619
|
-
let t =
|
|
707
|
+
function re(e) {
|
|
708
|
+
let t = J(e).replace(/\x00/g, "").split("\n"), n = [], r = 0;
|
|
620
709
|
for (; r < t.length;) {
|
|
621
710
|
let e = t[r].trim();
|
|
622
711
|
if (e.startsWith("|") && e.endsWith("|")) {
|
|
623
712
|
let e = [];
|
|
624
713
|
for (; r < t.length && t[r].trim().startsWith("|") && t[r].trim().endsWith("|");) e.push(t[r].trim()), r++;
|
|
625
|
-
let i = e.findIndex(
|
|
626
|
-
a.length > 0 && (s += "<thead>" + a.map((e) => "<tr>" +
|
|
714
|
+
let i = e.findIndex(X), a = i > 0 ? e.slice(0, i) : [], o = i >= 0 ? e.slice(i + 1) : e, s = "<table>";
|
|
715
|
+
a.length > 0 && (s += "<thead>" + a.map((e) => "<tr>" + Z(e).map((e) => `<th>${Y(e)}</th>`).join("") + "</tr>").join("") + "</thead>"), o.length > 0 && (s += "<tbody>" + o.map((e) => "<tr>" + Z(e).map((e) => `<td>${Y(e)}</td>`).join("") + "</tr>").join("") + "</tbody>"), s += "</table>", n.push(s);
|
|
716
|
+
continue;
|
|
717
|
+
}
|
|
718
|
+
if (/^-{3,}$/.test(e)) {
|
|
719
|
+
n.push("<hr>"), r++;
|
|
720
|
+
continue;
|
|
721
|
+
}
|
|
722
|
+
let i = e.match(/^(#{1,6})\s+(.*)$/);
|
|
723
|
+
if (i) {
|
|
724
|
+
let e = i[1].length;
|
|
725
|
+
n.push(`<h${e}>${Y(i[2])}</h${e}>`), r++;
|
|
627
726
|
continue;
|
|
628
727
|
}
|
|
629
728
|
if (/^[-*]\s/.test(e)) {
|
|
630
729
|
let e = [];
|
|
631
730
|
for (; r < t.length && /^\s*[-*]\s/.test(t[r]);) e.push(t[r].trim().replace(/^[-*]\s+/, "")), r++;
|
|
632
|
-
n.push("<ul>" + e.map((e) => `<li>${
|
|
731
|
+
n.push("<ul>" + e.map((e) => `<li>${Y(e)}</li>`).join("") + "</ul>");
|
|
633
732
|
continue;
|
|
634
733
|
}
|
|
635
734
|
if (/^\d+\.\s/.test(e)) {
|
|
636
735
|
let e = [];
|
|
637
736
|
for (; r < t.length && /^\s*\d+\.\s/.test(t[r]);) e.push(t[r].trim().replace(/^\d+\.\s+/, "")), r++;
|
|
638
|
-
n.push("<ol>" + e.map((e) => `<li>${
|
|
737
|
+
n.push("<ol>" + e.map((e) => `<li>${Y(e)}</li>`).join("") + "</ol>");
|
|
639
738
|
continue;
|
|
640
739
|
}
|
|
641
740
|
if (e === "") {
|
|
642
741
|
n.push("<br>"), r++;
|
|
643
742
|
continue;
|
|
644
743
|
}
|
|
645
|
-
n.push(
|
|
744
|
+
n.push(Y(e)), n.push("<br>"), r++;
|
|
646
745
|
}
|
|
647
746
|
for (; n.length > 0 && n[n.length - 1] === "<br>";) n.pop();
|
|
648
747
|
return n.join("");
|
|
649
748
|
}
|
|
650
|
-
function
|
|
651
|
-
let { name:
|
|
652
|
-
function
|
|
653
|
-
e.setAttribute("data-position",
|
|
749
|
+
function ie(e, t, n, r, i, a) {
|
|
750
|
+
let { name: o, design: s } = t, c, l, u, d, f, p, { content: m } = s;
|
|
751
|
+
function h(e) {
|
|
752
|
+
e.setAttribute("data-position", s.layout.position), c = e.attachShadow({ mode: "closed" });
|
|
654
753
|
let t = document.createElement("style");
|
|
655
|
-
t.textContent =
|
|
656
|
-
<span class="icon-chat">${
|
|
657
|
-
<span class="icon-close">${
|
|
658
|
-
`,
|
|
754
|
+
t.textContent = P(s), c.appendChild(t), l = document.createElement("button"), l.className = "bubble", l.setAttribute("aria-label", n.ariaOpenChat), l.innerHTML = `
|
|
755
|
+
<span class="icon-chat">${H}</span>
|
|
756
|
+
<span class="icon-close">${U}</span>
|
|
757
|
+
`, l.addEventListener("click", i), c.appendChild(l), u = document.createElement("div"), u.className = "chat-window", u.setAttribute("role", "dialog"), u.setAttribute("aria-label", `${o} chat`), u.innerHTML = `
|
|
659
758
|
<div class="chat-header">
|
|
660
|
-
<div class="avatar">${
|
|
759
|
+
<div class="avatar">${q(s.avatar)}</div>
|
|
661
760
|
<div class="header-text">
|
|
662
|
-
<span class="bot-name">${
|
|
663
|
-
<span class="bot-status">${
|
|
761
|
+
<span class="bot-name">${J(o)}</span>
|
|
762
|
+
<span class="bot-status">${J(n.statusOnline)}</span>
|
|
664
763
|
</div>
|
|
665
|
-
<button class="close-btn" aria-label="${
|
|
764
|
+
<button class="close-btn" aria-label="${J(n.ariaCloseChat)}">×</button>
|
|
666
765
|
</div>
|
|
667
766
|
<div class="messages" id="messages-container" role="log" aria-live="polite" aria-atomic="false"></div>
|
|
668
767
|
<div class="chat-footer">
|
|
669
768
|
<div class="input-row">
|
|
670
769
|
<textarea
|
|
671
770
|
class="input"
|
|
672
|
-
placeholder="${
|
|
771
|
+
placeholder="${J(m.placeholder || n.inputPlaceholder)}"
|
|
673
772
|
rows="1"
|
|
674
773
|
maxlength="2000"
|
|
675
774
|
aria-label="Message input"
|
|
676
775
|
></textarea>
|
|
677
|
-
<button class="send-btn" aria-label="${
|
|
678
|
-
${
|
|
776
|
+
<button class="send-btn" aria-label="${J(n.ariaSendMessage)}">
|
|
777
|
+
${G}
|
|
679
778
|
</button>
|
|
680
779
|
</div>
|
|
681
|
-
<a class="botiq-badge" href="${
|
|
682
|
-
${
|
|
780
|
+
<a class="botiq-badge" href="${V}" target="_blank" rel="noopener noreferrer">
|
|
781
|
+
${J(n.poweredBy)} <span class="botiq-badge-name">BotIQ</span>
|
|
683
782
|
</a>
|
|
684
783
|
</div>
|
|
685
|
-
`,
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
784
|
+
`, u.querySelector(".close-btn").addEventListener("click", i), d = u.querySelector("#messages-container");
|
|
785
|
+
let r = null;
|
|
786
|
+
d.addEventListener("scroll", () => {
|
|
787
|
+
d.scrollTop <= 48 && !r && (r = setTimeout(() => {
|
|
788
|
+
r = null;
|
|
789
|
+
}, 150), a());
|
|
790
|
+
}), f = u.querySelector(".input"), p = u.querySelector(".send-btn"), f.addEventListener("input", () => {
|
|
791
|
+
f.style.height = "auto", f.style.height = Math.min(f.scrollHeight, 100) + "px";
|
|
792
|
+
}), f.addEventListener("keydown", (e) => {
|
|
793
|
+
e.key === "Enter" && !e.shiftKey && (e.preventDefault(), g());
|
|
794
|
+
}), p.addEventListener("click", g), c.appendChild(u);
|
|
690
795
|
}
|
|
691
|
-
function
|
|
692
|
-
let e =
|
|
693
|
-
!e ||
|
|
796
|
+
function g() {
|
|
797
|
+
let e = f.value.trim();
|
|
798
|
+
!e || p.disabled || (f.value = "", f.style.height = "auto", r(e));
|
|
694
799
|
}
|
|
695
|
-
function
|
|
800
|
+
function _(e) {
|
|
696
801
|
if (e.messages.length === 0 && !e.isLoading) {
|
|
697
|
-
let e =
|
|
698
|
-
|
|
802
|
+
let e = m.suggestionChips.length > 0 ? `<div class="chips">${m.suggestionChips.map((e) => `<button class="chip">${J(e)}</button>`).join("")}</div>` : "";
|
|
803
|
+
d.innerHTML = `
|
|
699
804
|
<div class="empty-state">
|
|
700
|
-
${
|
|
701
|
-
<span class="greeting">${
|
|
805
|
+
${K}
|
|
806
|
+
<span class="greeting">${J(m.greeting || n.defaultGreeting)}</span>
|
|
702
807
|
${e}
|
|
703
808
|
</div>
|
|
704
|
-
`,
|
|
809
|
+
`, d.querySelectorAll(".chip").forEach((e) => {
|
|
705
810
|
e.addEventListener("click", () => r(e.textContent ?? ""));
|
|
706
811
|
});
|
|
707
812
|
return;
|
|
708
813
|
}
|
|
709
814
|
let t = e.messages.map((e) => `
|
|
710
815
|
<div class="message ${e.role}">
|
|
711
|
-
<div class="message-bubble">${e.role === "assistant" ?
|
|
816
|
+
<div class="message-bubble">${e.role === "assistant" ? re(e.content) : J(e.content)}</div>
|
|
712
817
|
</div>
|
|
713
|
-
`).join(""), i = e.isLoading ? "<div class=\"typing\"><span></span><span></span><span></span></div>" : "";
|
|
714
|
-
|
|
818
|
+
`).join(""), i = e.loadingOlder ? "<div class=\"typing\"><span></span><span></span><span></span></div>" : "", a = e.isLoading ? "<div class=\"typing\"><span></span><span></span><span></span></div>" : "", o = d.scrollHeight - d.scrollTop - d.clientHeight < 80, s = d.scrollTop, c = d.scrollHeight;
|
|
819
|
+
d.innerHTML = i + t + a, o ? d.scrollTop = d.scrollHeight : d.scrollTop = B(s, c, d.scrollHeight);
|
|
715
820
|
}
|
|
716
|
-
function
|
|
717
|
-
e.isOpen ? (
|
|
821
|
+
function v(e) {
|
|
822
|
+
e.isOpen ? (u.classList.add("open"), l.classList.add("open"), l.setAttribute("aria-label", n.ariaCloseChat), requestAnimationFrame(() => f.focus())) : (u.classList.remove("open"), l.classList.remove("open"), l.setAttribute("aria-label", n.ariaOpenChat)), p.disabled = e.isLoading, _(e);
|
|
718
823
|
}
|
|
719
824
|
return {
|
|
720
|
-
mount:
|
|
721
|
-
update:
|
|
825
|
+
mount: h,
|
|
826
|
+
update: v
|
|
722
827
|
};
|
|
723
828
|
}
|
|
724
829
|
//#endregion
|
|
725
830
|
//#region src/i18n/vi.ts
|
|
726
|
-
var
|
|
831
|
+
var ae = {
|
|
727
832
|
statusOnline: "Trực tuyến",
|
|
728
833
|
inputPlaceholder: "Nhắn tin...",
|
|
729
834
|
defaultGreeting: "Xin chào! Tôi có thể giúp gì cho bạn?",
|
|
@@ -739,7 +844,7 @@ var q = {
|
|
|
739
844
|
ariaOpenChat: "Mở khung chat",
|
|
740
845
|
ariaCloseChat: "Đóng khung chat",
|
|
741
846
|
ariaSendMessage: "Gửi tin nhắn"
|
|
742
|
-
},
|
|
847
|
+
}, oe = {
|
|
743
848
|
statusOnline: "Online",
|
|
744
849
|
inputPlaceholder: "Type a message...",
|
|
745
850
|
defaultGreeting: "Hello! How can I help you?",
|
|
@@ -758,59 +863,81 @@ var q = {
|
|
|
758
863
|
};
|
|
759
864
|
//#endregion
|
|
760
865
|
//#region src/i18n/index.ts
|
|
761
|
-
function
|
|
762
|
-
return e === "en" ?
|
|
866
|
+
function Q(e) {
|
|
867
|
+
return e === "en" ? oe : ae;
|
|
763
868
|
}
|
|
764
869
|
//#endregion
|
|
765
870
|
//#region src/builds/npm/index.ts
|
|
766
|
-
|
|
871
|
+
var $ = 10;
|
|
872
|
+
function se(e) {
|
|
767
873
|
if (!e.apiKey) return console.warn("[BotIQ] apiKey is required"), () => void 0;
|
|
768
874
|
let t = p(e);
|
|
769
875
|
v();
|
|
770
|
-
let n = t.apiKey.slice(-16), r = y(n);
|
|
771
|
-
|
|
772
|
-
let
|
|
773
|
-
document.body.appendChild(
|
|
774
|
-
let
|
|
876
|
+
let n = t.apiKey.slice(-16), r = y(n), i = b(n, r);
|
|
877
|
+
k({ messages: i });
|
|
878
|
+
let a = I(), o = document.createElement("div");
|
|
879
|
+
document.body.appendChild(o);
|
|
880
|
+
let s = () => void 0, c = !1, l = Q(void 0);
|
|
775
881
|
f(t.apiKey, t.apiUrl).then((e) => {
|
|
776
|
-
if (
|
|
882
|
+
if (c) return;
|
|
777
883
|
if (e === null) {
|
|
778
|
-
console.warn("[BotIQ] Widget not authorised on this origin — skipped mount"),
|
|
884
|
+
console.warn("[BotIQ] Widget not authorised on this origin — skipped mount"), o.remove();
|
|
779
885
|
return;
|
|
780
886
|
}
|
|
781
|
-
|
|
782
|
-
let n =
|
|
783
|
-
n.mount(
|
|
887
|
+
l = Q(e.widgetLanguage);
|
|
888
|
+
let n = ie(t, e, l, h, g, m);
|
|
889
|
+
n.mount(o), s = A((e) => n.update(e)), n.update(O()), i.length > 0 && d();
|
|
784
890
|
});
|
|
785
|
-
function
|
|
786
|
-
|
|
891
|
+
function u(e) {
|
|
892
|
+
return {
|
|
893
|
+
role: e.role,
|
|
894
|
+
content: e.content
|
|
895
|
+
};
|
|
896
|
+
}
|
|
897
|
+
async function d() {
|
|
898
|
+
let e = await ee(t.apiUrl, t.apiKey, r, $);
|
|
899
|
+
e.messages.length > 0 && (a = L(e), k({ messages: e.messages.map(u) }));
|
|
900
|
+
}
|
|
901
|
+
async function m() {
|
|
902
|
+
if (z(a, O().loadingOlder)) {
|
|
903
|
+
k({ loadingOlder: !0 });
|
|
904
|
+
try {
|
|
905
|
+
let e = await te(t.apiUrl, t.apiKey, r, a.oldestCursor, $);
|
|
906
|
+
e.messages.length > 0 && k({ messages: [...e.messages.map(u), ...O().messages] }), a = R(a, e);
|
|
907
|
+
} finally {
|
|
908
|
+
k({ loadingOlder: !1 });
|
|
909
|
+
}
|
|
910
|
+
}
|
|
911
|
+
}
|
|
912
|
+
function h(e) {
|
|
913
|
+
let i = O();
|
|
787
914
|
if (i.isLoading) return;
|
|
788
915
|
let a = {
|
|
789
916
|
role: "user",
|
|
790
917
|
content: e
|
|
791
918
|
};
|
|
792
|
-
|
|
919
|
+
k({
|
|
793
920
|
messages: [...i.messages, a],
|
|
794
921
|
isLoading: !0
|
|
795
|
-
}), S(t.apiUrl, t.apiKey, r, e, i.messages,
|
|
922
|
+
}), S(t.apiUrl, t.apiKey, r, e, i.messages, l).then((e) => {
|
|
796
923
|
let t = {
|
|
797
924
|
role: "assistant",
|
|
798
925
|
content: e
|
|
799
926
|
};
|
|
800
|
-
|
|
801
|
-
messages: [...
|
|
927
|
+
k({
|
|
928
|
+
messages: [...O().messages, t],
|
|
802
929
|
isLoading: !1
|
|
803
930
|
}), x(n, r, [a, t]);
|
|
804
931
|
}).catch(() => {
|
|
805
|
-
|
|
932
|
+
k({ isLoading: !1 });
|
|
806
933
|
});
|
|
807
934
|
}
|
|
808
|
-
function
|
|
809
|
-
|
|
935
|
+
function g() {
|
|
936
|
+
k({ isOpen: !O().isOpen });
|
|
810
937
|
}
|
|
811
938
|
return () => {
|
|
812
|
-
|
|
939
|
+
c = !0, s(), o.remove();
|
|
813
940
|
};
|
|
814
941
|
}
|
|
815
942
|
//#endregion
|
|
816
|
-
export {
|
|
943
|
+
export { se as t };
|
package/dist/sdk/react.js
CHANGED
package/dist/sdk/vue.js
CHANGED