@access-ci/ui 0.8.0 → 0.9.0-beta1
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/README.md +2 -1
- package/dist/access-ci-ui.bundle.js +7 -51
- package/dist/access-ci-ui.js +1 -1
- package/dist/access-ci-ui.umd.cjs +11 -75
- package/dist/access-qa-bot-Cq3q7AAP.js +1921 -0
- package/dist/{icon-DO5WLkIr.js → icon-Cp10d2Q2.js} +1 -1
- package/dist/{index-CGLHL48j.js → index-BdTHsAiI.js} +217 -204
- package/dist/{resource-group-detail-px8JUvEX.js → resource-group-detail-CE_LUC5c.js} +2068 -2159
- package/dist/resource-home-Xq3HiR8e.js +260 -0
- package/package.json +3 -2
- package/dist/access-qa-bot-DT5Eikre.js +0 -1898
- package/dist/resource-home-CI6IFYKT.js +0 -248
|
@@ -0,0 +1,1921 @@
|
|
|
1
|
+
import { l as V, _ as j, b as q, k as CA, H as yA, h as U, g as ze, p as Ge, y as Y, a as WA, A as J, F as le, T as iA, q as M, x as pA, P as Ye, G as bA, m as Mt, B as jA, D as Ot, E as Ht, u as c } from "./index-BdTHsAiI.js";
|
|
2
|
+
var he = /[\s\n\\/='"\0<>]/, be = /^(xlink|xmlns|xml)([A-Z])/, Lt = /^accessK|^auto[A-Z]|^cell|^ch|^col|cont|cross|dateT|encT|form[A-Z]|frame|hrefL|inputM|maxL|minL|noV|playsI|popoverT|readO|rowS|src[A-Z]|tabI|useM|item[A-Z]/, _t = /^ac|^ali|arabic|basel|cap|clipPath$|clipRule$|color|dominant|enable|fill|flood|font|glyph[^R]|horiz|image|letter|lighting|marker[^WUH]|overline|panose|pointe|paint|rendering|shape|stop|strikethrough|stroke|text[^L]|transform|underline|unicode|units|^v[^i]|^w|^xH/, Nt = /* @__PURE__ */ new Set(["draggable", "spellcheck"]), Rt = /["&<]/;
|
|
3
|
+
function _A(A) {
|
|
4
|
+
if (A.length === 0 || Rt.test(A) === !1) return A;
|
|
5
|
+
for (var e = 0, t = 0, o = "", n = ""; t < A.length; t++) {
|
|
6
|
+
switch (A.charCodeAt(t)) {
|
|
7
|
+
case 34:
|
|
8
|
+
n = """;
|
|
9
|
+
break;
|
|
10
|
+
case 38:
|
|
11
|
+
n = "&";
|
|
12
|
+
break;
|
|
13
|
+
case 60:
|
|
14
|
+
n = "<";
|
|
15
|
+
break;
|
|
16
|
+
default:
|
|
17
|
+
continue;
|
|
18
|
+
}
|
|
19
|
+
t !== e && (o += A.slice(e, t)), o += n, e = t + 1;
|
|
20
|
+
}
|
|
21
|
+
return t !== e && (o += A.slice(e, t)), o;
|
|
22
|
+
}
|
|
23
|
+
var me = {}, Ut = /* @__PURE__ */ new Set(["animation-iteration-count", "border-image-outset", "border-image-slice", "border-image-width", "box-flex", "box-flex-group", "box-ordinal-group", "column-count", "fill-opacity", "flex", "flex-grow", "flex-negative", "flex-order", "flex-positive", "flex-shrink", "flood-opacity", "font-weight", "grid-column", "grid-row", "line-clamp", "line-height", "opacity", "order", "orphans", "stop-opacity", "stroke-dasharray", "stroke-dashoffset", "stroke-miterlimit", "stroke-opacity", "stroke-width", "tab-size", "widows", "z-index", "zoom"]), jt = /[A-Z]/g;
|
|
24
|
+
function Ft(A) {
|
|
25
|
+
var e = "";
|
|
26
|
+
for (var t in A) {
|
|
27
|
+
var o = A[t];
|
|
28
|
+
if (o != null && o !== "") {
|
|
29
|
+
var n = t[0] == "-" ? t : me[t] || (me[t] = t.replace(jt, "-$&").toLowerCase()), r = ";";
|
|
30
|
+
typeof o != "number" || n.startsWith("--") || Ut.has(n) || (r = "px;"), e = e + n + ":" + o + r;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return e || void 0;
|
|
34
|
+
}
|
|
35
|
+
function Be() {
|
|
36
|
+
this.__d = !0;
|
|
37
|
+
}
|
|
38
|
+
function zt(A, e) {
|
|
39
|
+
return { __v: A, context: e, props: A.props, setState: Be, forceUpdate: Be, __d: !0, __h: new Array(0) };
|
|
40
|
+
}
|
|
41
|
+
var ne, DA, HA, kA, ce = {}, ye = [], MA = Array.isArray, re = Object.assign, rA = "";
|
|
42
|
+
function Pe(A, e, t) {
|
|
43
|
+
var o = V.__s;
|
|
44
|
+
V.__s = !0, ne = V.__b, DA = V.diffed, HA = V.__r, kA = V.unmount;
|
|
45
|
+
var n = j(q, null);
|
|
46
|
+
n.__k = [A];
|
|
47
|
+
try {
|
|
48
|
+
var r = mA(A, e || ce, !1, void 0, n, !1, t);
|
|
49
|
+
return MA(r) ? r.join(rA) : r;
|
|
50
|
+
} catch (a) {
|
|
51
|
+
throw a.then ? new Error('Use "renderToStringAsync" for suspenseful rendering.') : a;
|
|
52
|
+
} finally {
|
|
53
|
+
V.__c && V.__c(A, ye), V.__s = o, ye.length = 0;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
function Ee(A, e) {
|
|
57
|
+
var t, o = A.type, n = !0;
|
|
58
|
+
return A.__c ? (n = !1, (t = A.__c).state = t.__s) : t = new o(A.props, e), A.__c = t, t.__v = A, t.props = A.props, t.context = e, t.__d = !0, t.state == null && (t.state = ce), t.__s == null && (t.__s = t.state), o.getDerivedStateFromProps ? t.state = re({}, t.state, o.getDerivedStateFromProps(t.props, t.state)) : n && t.componentWillMount ? (t.componentWillMount(), t.state = t.__s !== t.state ? t.__s : t.state) : !n && t.componentWillUpdate && t.componentWillUpdate(), HA && HA(A), t.render(t.props, t.state, e);
|
|
59
|
+
}
|
|
60
|
+
function mA(A, e, t, o, n, r, a) {
|
|
61
|
+
if (A == null || A === !0 || A === !1 || A === rA) return rA;
|
|
62
|
+
var s = typeof A;
|
|
63
|
+
if (s != "object") return s == "function" ? rA : s == "string" ? _A(A) : A + rA;
|
|
64
|
+
if (MA(A)) {
|
|
65
|
+
var i, l = rA;
|
|
66
|
+
n.__k = A;
|
|
67
|
+
for (var u = 0; u < A.length; u++) {
|
|
68
|
+
var d = A[u];
|
|
69
|
+
if (d != null && typeof d != "boolean") {
|
|
70
|
+
var w, p = mA(d, e, t, o, n, r, a);
|
|
71
|
+
typeof p == "string" ? l += p : (i || (i = []), l && i.push(l), l = rA, MA(p) ? (w = i).push.apply(w, p) : i.push(p));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return i ? (l && i.push(l), i) : l;
|
|
75
|
+
}
|
|
76
|
+
if (A.constructor !== void 0) return rA;
|
|
77
|
+
A.__ = n, ne && ne(A);
|
|
78
|
+
var f = A.type, b = A.props;
|
|
79
|
+
if (typeof f == "function") {
|
|
80
|
+
var E, y, m, B = e;
|
|
81
|
+
if (f === q) {
|
|
82
|
+
if ("tpl" in b) {
|
|
83
|
+
for (var h = rA, g = 0; g < b.tpl.length; g++) if (h += b.tpl[g], b.exprs && g < b.exprs.length) {
|
|
84
|
+
var v = b.exprs[g];
|
|
85
|
+
if (v == null) continue;
|
|
86
|
+
typeof v != "object" || v.constructor !== void 0 && !MA(v) ? h += v : h += mA(v, e, t, o, A, r, a);
|
|
87
|
+
}
|
|
88
|
+
return h;
|
|
89
|
+
}
|
|
90
|
+
if ("UNSTABLE_comment" in b) return "<!--" + _A(b.UNSTABLE_comment) + "-->";
|
|
91
|
+
y = b.children;
|
|
92
|
+
} else {
|
|
93
|
+
if ((E = f.contextType) != null) {
|
|
94
|
+
var P = e[E.__c];
|
|
95
|
+
B = P ? P.props.value : E.__;
|
|
96
|
+
}
|
|
97
|
+
var D = f.prototype && typeof f.prototype.render == "function";
|
|
98
|
+
if (D) y = Ee(A, B), m = A.__c;
|
|
99
|
+
else {
|
|
100
|
+
A.__c = m = zt(A, B);
|
|
101
|
+
for (var _ = 0; m.__d && _++ < 25; ) m.__d = !1, HA && HA(A), y = f.call(m, b, B);
|
|
102
|
+
m.__d = !0;
|
|
103
|
+
}
|
|
104
|
+
if (m.getChildContext != null && (e = re({}, e, m.getChildContext())), D && V.errorBoundaries && (f.getDerivedStateFromError || m.componentDidCatch)) {
|
|
105
|
+
y = y != null && y.type === q && y.key == null && y.props.tpl == null ? y.props.children : y;
|
|
106
|
+
try {
|
|
107
|
+
return mA(y, e, t, o, A, r, a);
|
|
108
|
+
} catch (z) {
|
|
109
|
+
return f.getDerivedStateFromError && (m.__s = f.getDerivedStateFromError(z)), m.componentDidCatch && m.componentDidCatch(z, ce), m.__d ? (y = Ee(A, e), (m = A.__c).getChildContext != null && (e = re({}, e, m.getChildContext())), mA(y = y != null && y.type === q && y.key == null && y.props.tpl == null ? y.props.children : y, e, t, o, A, r, a)) : rA;
|
|
110
|
+
} finally {
|
|
111
|
+
DA && DA(A), A.__ = null, kA && kA(A);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
y = y != null && y.type === q && y.key == null && y.props.tpl == null ? y.props.children : y;
|
|
116
|
+
try {
|
|
117
|
+
var O = mA(y, e, t, o, A, r, a);
|
|
118
|
+
return DA && DA(A), A.__ = null, V.unmount && V.unmount(A), O;
|
|
119
|
+
} catch (z) {
|
|
120
|
+
if (a && a.onError) {
|
|
121
|
+
var Q = a.onError(z, A, function(R) {
|
|
122
|
+
return mA(R, e, t, o, A, r, a);
|
|
123
|
+
});
|
|
124
|
+
if (Q !== void 0) return Q;
|
|
125
|
+
var x = V.__e;
|
|
126
|
+
return x && x(z, A), rA;
|
|
127
|
+
}
|
|
128
|
+
throw z;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
var I, k = "<" + f, L = rA;
|
|
132
|
+
for (var S in b) {
|
|
133
|
+
var C = b[S];
|
|
134
|
+
if (typeof C != "function" || S === "class" || S === "className") {
|
|
135
|
+
switch (S) {
|
|
136
|
+
case "children":
|
|
137
|
+
I = C;
|
|
138
|
+
continue;
|
|
139
|
+
case "key":
|
|
140
|
+
case "ref":
|
|
141
|
+
case "__self":
|
|
142
|
+
case "__source":
|
|
143
|
+
continue;
|
|
144
|
+
case "htmlFor":
|
|
145
|
+
if ("for" in b) continue;
|
|
146
|
+
S = "for";
|
|
147
|
+
break;
|
|
148
|
+
case "className":
|
|
149
|
+
if ("class" in b) continue;
|
|
150
|
+
S = "class";
|
|
151
|
+
break;
|
|
152
|
+
case "defaultChecked":
|
|
153
|
+
S = "checked";
|
|
154
|
+
break;
|
|
155
|
+
case "defaultSelected":
|
|
156
|
+
S = "selected";
|
|
157
|
+
break;
|
|
158
|
+
case "defaultValue":
|
|
159
|
+
case "value":
|
|
160
|
+
switch (S = "value", f) {
|
|
161
|
+
case "textarea":
|
|
162
|
+
I = C;
|
|
163
|
+
continue;
|
|
164
|
+
case "select":
|
|
165
|
+
o = C;
|
|
166
|
+
continue;
|
|
167
|
+
case "option":
|
|
168
|
+
o != C || "selected" in b || (k += " selected");
|
|
169
|
+
}
|
|
170
|
+
break;
|
|
171
|
+
case "dangerouslySetInnerHTML":
|
|
172
|
+
L = C && C.__html;
|
|
173
|
+
continue;
|
|
174
|
+
case "style":
|
|
175
|
+
typeof C == "object" && (C = Ft(C));
|
|
176
|
+
break;
|
|
177
|
+
case "acceptCharset":
|
|
178
|
+
S = "accept-charset";
|
|
179
|
+
break;
|
|
180
|
+
case "httpEquiv":
|
|
181
|
+
S = "http-equiv";
|
|
182
|
+
break;
|
|
183
|
+
default:
|
|
184
|
+
if (be.test(S)) S = S.replace(be, "$1:$2").toLowerCase();
|
|
185
|
+
else {
|
|
186
|
+
if (he.test(S)) continue;
|
|
187
|
+
S[4] !== "-" && !Nt.has(S) || C == null ? t ? _t.test(S) && (S = S === "panose1" ? "panose-1" : S.replace(/([A-Z])/g, "-$1").toLowerCase()) : Lt.test(S) && (S = S.toLowerCase()) : C += rA;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
C != null && C !== !1 && (k = C === !0 || C === rA ? k + " " + S : k + " " + S + '="' + (typeof C == "string" ? _A(C) : C + rA) + '"');
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
if (he.test(f)) throw new Error(f + " is not a valid HTML tag name in " + k + ">");
|
|
194
|
+
if (L || (typeof I == "string" ? L = _A(I) : I != null && I !== !1 && I !== !0 && (L = mA(I, e, f === "svg" || f !== "foreignObject" && t, o, A, r, a))), DA && DA(A), A.__ = null, kA && kA(A), !L && Gt.has(f)) return k + "/>";
|
|
195
|
+
var F = "</" + f + ">", H = k + ">";
|
|
196
|
+
return MA(L) ? [H].concat(L, [F]) : typeof L != "string" ? [H, L, F] : H + L + F;
|
|
197
|
+
}
|
|
198
|
+
var Gt = /* @__PURE__ */ new Set(["area", "base", "br", "col", "command", "embed", "hr", "img", "input", "keygen", "link", "meta", "param", "source", "track", "wbr"]);
|
|
199
|
+
function ae(A, e) {
|
|
200
|
+
for (var t in A) if (t !== "__source" && !(t in e)) return !0;
|
|
201
|
+
for (var o in e) if (o !== "__source" && A[o] !== e[o]) return !0;
|
|
202
|
+
return !1;
|
|
203
|
+
}
|
|
204
|
+
function ie(A, e) {
|
|
205
|
+
this.props = A, this.context = e;
|
|
206
|
+
}
|
|
207
|
+
function Yt(A, e) {
|
|
208
|
+
function t(n) {
|
|
209
|
+
var r = this.props.ref, a = r == n.ref;
|
|
210
|
+
return !a && r && (r.call ? r(null) : r.current = null), e ? !e(this.props, n) || !a : ae(this.props, n);
|
|
211
|
+
}
|
|
212
|
+
function o(n) {
|
|
213
|
+
return this.shouldComponentUpdate = t, j(A, n);
|
|
214
|
+
}
|
|
215
|
+
return o.displayName = "Memo(" + (A.displayName || A.name) + ")", o.prototype.isReactComponent = !0, o.__f = !0, o;
|
|
216
|
+
}
|
|
217
|
+
(ie.prototype = new CA()).isPureReactComponent = !0, ie.prototype.shouldComponentUpdate = function(A, e) {
|
|
218
|
+
return ae(this.props, A) || ae(this.state, e);
|
|
219
|
+
};
|
|
220
|
+
var De = V.__b;
|
|
221
|
+
V.__b = function(A) {
|
|
222
|
+
A.type && A.type.__f && A.ref && (A.props.ref = A.ref, A.ref = null), De && De(A);
|
|
223
|
+
};
|
|
224
|
+
var Wt = typeof Symbol < "u" && Symbol.for && Symbol.for("react.forward_ref") || 3911;
|
|
225
|
+
function lA(A) {
|
|
226
|
+
function e(t) {
|
|
227
|
+
if (!("ref" in t)) return A(t, null);
|
|
228
|
+
var o = t.ref;
|
|
229
|
+
delete t.ref;
|
|
230
|
+
var n = A(t, o);
|
|
231
|
+
return t.ref = o, n;
|
|
232
|
+
}
|
|
233
|
+
return e.$$typeof = Wt, e.render = e, e.prototype.isReactComponent = e.__f = !0, e.displayName = "ForwardRef(" + (A.displayName || A.name) + ")", e;
|
|
234
|
+
}
|
|
235
|
+
var Ce = function(A, e) {
|
|
236
|
+
return A == null ? null : yA(yA(A).map(e));
|
|
237
|
+
}, Xt = { map: Ce, forEach: Ce, count: function(A) {
|
|
238
|
+
return A ? yA(A).length : 0;
|
|
239
|
+
}, only: function(A) {
|
|
240
|
+
var e = yA(A);
|
|
241
|
+
if (e.length !== 1) throw "Children.only";
|
|
242
|
+
return e[0];
|
|
243
|
+
}, toArray: yA }, qt = V.__e;
|
|
244
|
+
V.__e = function(A, e, t, o) {
|
|
245
|
+
if (A.then) {
|
|
246
|
+
for (var n, r = e; r = r.__; ) if ((n = r.__c) && n.__c) return e.__e == null && (e.__e = t.__e, e.__k = t.__k), n.__c(A, e);
|
|
247
|
+
}
|
|
248
|
+
qt(A, e, t, o);
|
|
249
|
+
};
|
|
250
|
+
var Qe = V.unmount;
|
|
251
|
+
function We(A, e, t) {
|
|
252
|
+
return A && (A.__c && A.__c.__H && (A.__c.__H.__.forEach(function(o) {
|
|
253
|
+
typeof o.__c == "function" && o.__c();
|
|
254
|
+
}), A.__c.__H = null), (A = function(o, n) {
|
|
255
|
+
for (var r in n) o[r] = n[r];
|
|
256
|
+
return o;
|
|
257
|
+
}({}, A)).__c != null && (A.__c.__P === t && (A.__c.__P = e), A.__c = null), A.__k = A.__k && A.__k.map(function(o) {
|
|
258
|
+
return We(o, e, t);
|
|
259
|
+
})), A;
|
|
260
|
+
}
|
|
261
|
+
function Xe(A, e, t) {
|
|
262
|
+
return A && t && (A.__v = null, A.__k = A.__k && A.__k.map(function(o) {
|
|
263
|
+
return Xe(o, e, t);
|
|
264
|
+
}), A.__c && A.__c.__P === e && (A.__e && t.appendChild(A.__e), A.__c.__e = !0, A.__c.__P = t)), A;
|
|
265
|
+
}
|
|
266
|
+
function NA() {
|
|
267
|
+
this.__u = 0, this.t = null, this.__b = null;
|
|
268
|
+
}
|
|
269
|
+
function qe(A) {
|
|
270
|
+
var e = A.__.__c;
|
|
271
|
+
return e && e.__a && e.__a(A);
|
|
272
|
+
}
|
|
273
|
+
function Kt(A) {
|
|
274
|
+
var e, t, o;
|
|
275
|
+
function n(r) {
|
|
276
|
+
if (e || (e = A()).then(function(a) {
|
|
277
|
+
t = a.default || a;
|
|
278
|
+
}, function(a) {
|
|
279
|
+
o = a;
|
|
280
|
+
}), o) throw o;
|
|
281
|
+
if (!t) throw e;
|
|
282
|
+
return j(t, r);
|
|
283
|
+
}
|
|
284
|
+
return n.displayName = "Lazy", n.__f = !0, n;
|
|
285
|
+
}
|
|
286
|
+
function OA() {
|
|
287
|
+
this.u = null, this.o = null;
|
|
288
|
+
}
|
|
289
|
+
V.unmount = function(A) {
|
|
290
|
+
var e = A.__c;
|
|
291
|
+
e && e.__R && e.__R(), e && 32 & A.__u && (A.type = null), Qe && Qe(A);
|
|
292
|
+
}, (NA.prototype = new CA()).__c = function(A, e) {
|
|
293
|
+
var t = e.__c, o = this;
|
|
294
|
+
o.t == null && (o.t = []), o.t.push(t);
|
|
295
|
+
var n = qe(o.__v), r = !1, a = function() {
|
|
296
|
+
r || (r = !0, t.__R = null, n ? n(s) : s());
|
|
297
|
+
};
|
|
298
|
+
t.__R = a;
|
|
299
|
+
var s = function() {
|
|
300
|
+
if (!--o.__u) {
|
|
301
|
+
if (o.state.__a) {
|
|
302
|
+
var i = o.state.__a;
|
|
303
|
+
o.__v.__k[0] = Xe(i, i.__c.__P, i.__c.__O);
|
|
304
|
+
}
|
|
305
|
+
var l;
|
|
306
|
+
for (o.setState({ __a: o.__b = null }); l = o.t.pop(); ) l.forceUpdate();
|
|
307
|
+
}
|
|
308
|
+
};
|
|
309
|
+
o.__u++ || 32 & e.__u || o.setState({ __a: o.__b = o.__v.__k[0] }), A.then(a, a);
|
|
310
|
+
}, NA.prototype.componentWillUnmount = function() {
|
|
311
|
+
this.t = [];
|
|
312
|
+
}, NA.prototype.render = function(A, e) {
|
|
313
|
+
if (this.__b) {
|
|
314
|
+
if (this.__v.__k) {
|
|
315
|
+
var t = document.createElement("div"), o = this.__v.__k[0].__c;
|
|
316
|
+
this.__v.__k[0] = We(this.__b, t, o.__O = o.__P);
|
|
317
|
+
}
|
|
318
|
+
this.__b = null;
|
|
319
|
+
}
|
|
320
|
+
var n = e.__a && j(q, null, A.fallback);
|
|
321
|
+
return n && (n.__u &= -33), [j(q, null, e.__a ? null : A.children), n];
|
|
322
|
+
};
|
|
323
|
+
var xe = function(A, e, t) {
|
|
324
|
+
if (++t[1] === t[0] && A.o.delete(e), A.props.revealOrder && (A.props.revealOrder[0] !== "t" || !A.o.size)) for (t = A.u; t; ) {
|
|
325
|
+
for (; t.length > 3; ) t.pop()();
|
|
326
|
+
if (t[1] < t[0]) break;
|
|
327
|
+
A.u = t = t[2];
|
|
328
|
+
}
|
|
329
|
+
};
|
|
330
|
+
function Vt(A) {
|
|
331
|
+
return this.getChildContext = function() {
|
|
332
|
+
return A.context;
|
|
333
|
+
}, A.children;
|
|
334
|
+
}
|
|
335
|
+
function Jt(A) {
|
|
336
|
+
var e = this, t = A.i;
|
|
337
|
+
e.componentWillUnmount = function() {
|
|
338
|
+
jA(null, e.l), e.l = null, e.i = null;
|
|
339
|
+
}, e.i && e.i !== t && e.componentWillUnmount(), e.l || (e.i = t, e.l = { nodeType: 1, parentNode: t, childNodes: [], contains: function() {
|
|
340
|
+
return !0;
|
|
341
|
+
}, appendChild: function(o) {
|
|
342
|
+
this.childNodes.push(o), e.i.appendChild(o);
|
|
343
|
+
}, insertBefore: function(o, n) {
|
|
344
|
+
this.childNodes.push(o), e.i.appendChild(o);
|
|
345
|
+
}, removeChild: function(o) {
|
|
346
|
+
this.childNodes.splice(this.childNodes.indexOf(o) >>> 1, 1), e.i.removeChild(o);
|
|
347
|
+
} }), jA(j(Vt, { context: e.context }, A.__v), e.l);
|
|
348
|
+
}
|
|
349
|
+
function Zt(A, e) {
|
|
350
|
+
var t = j(Jt, { __v: A, i: e });
|
|
351
|
+
return t.containerInfo = e, t;
|
|
352
|
+
}
|
|
353
|
+
(OA.prototype = new CA()).__a = function(A) {
|
|
354
|
+
var e = this, t = qe(e.__v), o = e.o.get(A);
|
|
355
|
+
return o[0]++, function(n) {
|
|
356
|
+
var r = function() {
|
|
357
|
+
e.props.revealOrder ? (o.push(n), xe(e, A, o)) : n();
|
|
358
|
+
};
|
|
359
|
+
t ? t(r) : r();
|
|
360
|
+
};
|
|
361
|
+
}, OA.prototype.render = function(A) {
|
|
362
|
+
this.u = null, this.o = /* @__PURE__ */ new Map();
|
|
363
|
+
var e = yA(A.children);
|
|
364
|
+
A.revealOrder && A.revealOrder[0] === "b" && e.reverse();
|
|
365
|
+
for (var t = e.length; t--; ) this.o.set(e[t], this.u = [1, 0, this.u]);
|
|
366
|
+
return A.children;
|
|
367
|
+
}, OA.prototype.componentDidUpdate = OA.prototype.componentDidMount = function() {
|
|
368
|
+
var A = this;
|
|
369
|
+
this.o.forEach(function(e, t) {
|
|
370
|
+
xe(A, t, e);
|
|
371
|
+
});
|
|
372
|
+
};
|
|
373
|
+
var Ke = typeof Symbol < "u" && Symbol.for && Symbol.for("react.element") || 60103, $t = /^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/, Ao = /^on(Ani|Tra|Tou|BeforeInp|Compo)/, eo = /[A-Z0-9]/g, to = typeof document < "u", oo = function(A) {
|
|
374
|
+
return (typeof Symbol < "u" && typeof Symbol() == "symbol" ? /fil|che|rad/ : /fil|che|ra/).test(A);
|
|
375
|
+
};
|
|
376
|
+
function Ve(A, e, t) {
|
|
377
|
+
return e.__k == null && (e.textContent = ""), jA(A, e), typeof t == "function" && t(), A ? A.__c : null;
|
|
378
|
+
}
|
|
379
|
+
function Je(A, e, t) {
|
|
380
|
+
return Ot(A, e), typeof t == "function" && t(), A ? A.__c : null;
|
|
381
|
+
}
|
|
382
|
+
CA.prototype.isReactComponent = {}, ["componentWillMount", "componentWillReceiveProps", "componentWillUpdate"].forEach(function(A) {
|
|
383
|
+
Object.defineProperty(CA.prototype, A, { configurable: !0, get: function() {
|
|
384
|
+
return this["UNSAFE_" + A];
|
|
385
|
+
}, set: function(e) {
|
|
386
|
+
Object.defineProperty(this, A, { configurable: !0, writable: !0, value: e });
|
|
387
|
+
} });
|
|
388
|
+
});
|
|
389
|
+
var Ie = V.event;
|
|
390
|
+
function no() {
|
|
391
|
+
}
|
|
392
|
+
function ro() {
|
|
393
|
+
return this.cancelBubble;
|
|
394
|
+
}
|
|
395
|
+
function ao() {
|
|
396
|
+
return this.defaultPrevented;
|
|
397
|
+
}
|
|
398
|
+
V.event = function(A) {
|
|
399
|
+
return Ie && (A = Ie(A)), A.persist = no, A.isPropagationStopped = ro, A.isDefaultPrevented = ao, A.nativeEvent = A;
|
|
400
|
+
};
|
|
401
|
+
var de, io = { enumerable: !1, configurable: !0, get: function() {
|
|
402
|
+
return this.class;
|
|
403
|
+
} }, Se = V.vnode;
|
|
404
|
+
V.vnode = function(A) {
|
|
405
|
+
typeof A.type == "string" && function(e) {
|
|
406
|
+
var t = e.props, o = e.type, n = {}, r = o.indexOf("-") === -1;
|
|
407
|
+
for (var a in t) {
|
|
408
|
+
var s = t[a];
|
|
409
|
+
if (!(a === "value" && "defaultValue" in t && s == null || to && a === "children" && o === "noscript" || a === "class" || a === "className")) {
|
|
410
|
+
var i = a.toLowerCase();
|
|
411
|
+
a === "defaultValue" && "value" in t && t.value == null ? a = "value" : a === "download" && s === !0 ? s = "" : i === "translate" && s === "no" ? s = !1 : i[0] === "o" && i[1] === "n" ? i === "ondoubleclick" ? a = "ondblclick" : i !== "onchange" || o !== "input" && o !== "textarea" || oo(t.type) ? i === "onfocus" ? a = "onfocusin" : i === "onblur" ? a = "onfocusout" : Ao.test(a) && (a = i) : i = a = "oninput" : r && $t.test(a) ? a = a.replace(eo, "-$&").toLowerCase() : s === null && (s = void 0), i === "oninput" && n[a = i] && (a = "oninputCapture"), n[a] = s;
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
o == "select" && n.multiple && Array.isArray(n.value) && (n.value = yA(t.children).forEach(function(l) {
|
|
415
|
+
l.props.selected = n.value.indexOf(l.props.value) != -1;
|
|
416
|
+
})), o == "select" && n.defaultValue != null && (n.value = yA(t.children).forEach(function(l) {
|
|
417
|
+
l.props.selected = n.multiple ? n.defaultValue.indexOf(l.props.value) != -1 : n.defaultValue == l.props.value;
|
|
418
|
+
})), t.class && !t.className ? (n.class = t.class, Object.defineProperty(n, "className", io)) : (t.className && !t.class || t.class && t.className) && (n.class = n.className = t.className), e.props = n;
|
|
419
|
+
}(A), A.$$typeof = Ke, Se && Se(A);
|
|
420
|
+
};
|
|
421
|
+
var Te = V.__r;
|
|
422
|
+
V.__r = function(A) {
|
|
423
|
+
Te && Te(A), de = A.__c;
|
|
424
|
+
};
|
|
425
|
+
var ke = V.diffed;
|
|
426
|
+
V.diffed = function(A) {
|
|
427
|
+
ke && ke(A);
|
|
428
|
+
var e = A.props, t = A.__e;
|
|
429
|
+
t != null && A.type === "textarea" && "value" in e && e.value !== t.value && (t.value = e.value == null ? "" : e.value), de = null;
|
|
430
|
+
};
|
|
431
|
+
var so = { ReactCurrentDispatcher: { current: { readContext: function(A) {
|
|
432
|
+
return de.__n[A.__c].props.value;
|
|
433
|
+
}, useCallback: M, useContext: pA, useDebugValue: Ye, useDeferredValue: At, useEffect: Y, useId: ze, useImperativeHandle: le, useInsertionEffect: tt, useLayoutEffect: WA, useMemo: iA, useReducer: Ge, useRef: J, useState: U, useSyncExternalStore: ot, useTransition: et } } };
|
|
434
|
+
function lo(A) {
|
|
435
|
+
return j.bind(null, A);
|
|
436
|
+
}
|
|
437
|
+
function QA(A) {
|
|
438
|
+
return !!A && A.$$typeof === Ke;
|
|
439
|
+
}
|
|
440
|
+
function co(A) {
|
|
441
|
+
return QA(A) && A.type === q;
|
|
442
|
+
}
|
|
443
|
+
function uo(A) {
|
|
444
|
+
return !!A && !!A.displayName && (typeof A.displayName == "string" || A.displayName instanceof String) && A.displayName.startsWith("Memo(");
|
|
445
|
+
}
|
|
446
|
+
function fo(A) {
|
|
447
|
+
return QA(A) ? Ht.apply(null, arguments) : A;
|
|
448
|
+
}
|
|
449
|
+
function Ze(A) {
|
|
450
|
+
return !!A.__k && (jA(null, A), !0);
|
|
451
|
+
}
|
|
452
|
+
function go(A) {
|
|
453
|
+
return A && (A.base || A.nodeType === 1 && A) || null;
|
|
454
|
+
}
|
|
455
|
+
var wo = function(A, e) {
|
|
456
|
+
return A(e);
|
|
457
|
+
}, vo = function(A, e) {
|
|
458
|
+
return A(e);
|
|
459
|
+
}, po = q;
|
|
460
|
+
function $e(A) {
|
|
461
|
+
A();
|
|
462
|
+
}
|
|
463
|
+
function At(A) {
|
|
464
|
+
return A;
|
|
465
|
+
}
|
|
466
|
+
function et() {
|
|
467
|
+
return [!1, $e];
|
|
468
|
+
}
|
|
469
|
+
var tt = WA, ho = QA;
|
|
470
|
+
function ot(A, e) {
|
|
471
|
+
var t = e(), o = U({ h: { __: t, v: e } }), n = o[0].h, r = o[1];
|
|
472
|
+
return WA(function() {
|
|
473
|
+
n.__ = t, n.v = e, ZA(n) && r({ h: n });
|
|
474
|
+
}, [A, t, e]), Y(function() {
|
|
475
|
+
return ZA(n) && r({ h: n }), A(function() {
|
|
476
|
+
ZA(n) && r({ h: n });
|
|
477
|
+
});
|
|
478
|
+
}, [A]), t;
|
|
479
|
+
}
|
|
480
|
+
function ZA(A) {
|
|
481
|
+
var e, t, o = A.v, n = A.__;
|
|
482
|
+
try {
|
|
483
|
+
var r = o();
|
|
484
|
+
return !((e = n) === (t = r) && (e !== 0 || 1 / e == 1 / t) || e != e && t != t);
|
|
485
|
+
} catch {
|
|
486
|
+
return !0;
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
var W = { useState: U, useId: ze, useReducer: Ge, useEffect: Y, useLayoutEffect: WA, useInsertionEffect: tt, useTransition: et, useDeferredValue: At, useSyncExternalStore: ot, startTransition: $e, useRef: J, useImperativeHandle: le, useMemo: iA, useCallback: M, useContext: pA, useDebugValue: Ye, version: "18.3.1", Children: Xt, render: Ve, hydrate: Je, unmountComponentAtNode: Ze, createPortal: Zt, createElement: j, createContext: bA, createFactory: lo, cloneElement: fo, createRef: Mt, Fragment: q, isValidElement: QA, isElement: ho, isFragment: co, isMemo: uo, findDOMNode: go, Component: CA, PureComponent: ie, memo: Yt, forwardRef: lA, flushSync: vo, unstable_batchedUpdates: wo, StrictMode: po, Suspense: NA, SuspenseList: OA, lazy: Kt, __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: so };
|
|
490
|
+
function nt(A) {
|
|
491
|
+
return {
|
|
492
|
+
// eslint-disable-next-line
|
|
493
|
+
render: function(e) {
|
|
494
|
+
Ve(e, A);
|
|
495
|
+
},
|
|
496
|
+
// eslint-disable-next-line
|
|
497
|
+
unmount: function() {
|
|
498
|
+
Ze(A);
|
|
499
|
+
}
|
|
500
|
+
};
|
|
501
|
+
}
|
|
502
|
+
function bo(A, e) {
|
|
503
|
+
return Je(e, A), nt(A);
|
|
504
|
+
}
|
|
505
|
+
const mo = {
|
|
506
|
+
createRoot: nt,
|
|
507
|
+
hydrateRoot: bo
|
|
508
|
+
}, Bo = {
|
|
509
|
+
renderToString: Pe,
|
|
510
|
+
renderToStaticMarkup: Pe
|
|
511
|
+
};
|
|
512
|
+
function rt(A, e) {
|
|
513
|
+
e === void 0 && (e = {});
|
|
514
|
+
var t = e.insertAt;
|
|
515
|
+
if (A && typeof document < "u") {
|
|
516
|
+
var o = document.head || document.getElementsByTagName("head")[0], n = document.createElement("style");
|
|
517
|
+
n.type = "text/css", t === "top" && o.firstChild ? o.insertBefore(n, o.firstChild) : o.appendChild(n), n.styleSheet ? n.styleSheet.cssText = A : n.appendChild(document.createTextNode(A));
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
rt('.rcb-chat-header-container{border-bottom:1px solid #ccc;color:#fff;display:flex;justify-content:space-between;max-height:55px;padding:12px}.rcb-chat-header{display:flex;flex-direction:row}.rcb-bot-avatar{background-size:cover;border-radius:50%;height:30px;margin-right:12px;width:30px}.rcb-message-prompt-container.visible{align-items:center;animation:rcb-animation-pop-in .3s ease-in-out;bottom:0;display:flex;justify-content:center;margin:auto;opacity:1;pointer-events:auto;position:sticky}.rcb-message-prompt-container.hidden{height:0;opacity:0;pointer-events:none;visibility:hidden}.rcb-message-prompt-text{background-color:#fff;border:.5px solid #adadad;border-radius:20px;color:#adadad;cursor:pointer;font-size:12px;padding:6px 12px;transition:color .3s ease,border-color .3s ease;z-index:9999}.rcb-message-prompt-container.hidden .rcb-message-prompt-text{padding:0}.rcb-user-message-container{display:flex;flex-direction:row;justify-content:right}.rcb-user-message{border-radius:22px;font-size:15px;height:fit-content;margin-right:16px;margin-top:8px;min-height:20px;overflow:auto;overflow-wrap:anywhere;padding:12px 16px;text-align:right;white-space:pre-wrap;width:fit-content}.rcb-user-message-offset{margin-right:50px}.rcb-user-message-entry{animation:rcb-animation-user-message-entry .3s ease-in backwards}.rcb-message-user-avatar{background-size:cover;border-radius:50%;height:40px;margin-left:-10px;margin-right:6px;margin-top:9px;width:40px}.rcb-bot-message-container{display:flex;flex-direction:row}.rcb-bot-message{border-radius:22px;font-size:15px;height:fit-content;margin-left:16px;margin-top:8px;min-height:20px;overflow:auto;overflow-wrap:anywhere;padding:12px 16px;text-align:left;white-space:pre-wrap;width:fit-content}.rcb-bot-message-offset{margin-left:50px}.rcb-bot-message-entry{animation:rcb-animation-bot-message-entry .3s ease-in backwards}.rcb-message-bot-avatar{background-size:cover;border-radius:50%;height:40px;margin-left:6px;margin-right:-10px;margin-top:9px;width:40px}.rcb-typing-indicator{align-items:center;display:flex}.rcb-dot{animation:rcb-animation-bot-typing 1s infinite;background-color:#ccc;border-radius:50%;height:8px;margin-right:4px;width:8px}.rcb-dot:nth-child(2){animation-delay:.2s}.rcb-dot:nth-child(3){animation-delay:.4s}.rcb-chat-body-container{height:100%;overflow-x:hidden;overflow-y:scroll;padding-bottom:16px;position:relative;touch-action:pan-y;width:100%}.rcb-chat-body-container::-webkit-scrollbar-track{background-color:#f1f1f1}.rcb-chat-body-container::-webkit-scrollbar-thumb{background-color:#ddd;border-radius:4px}.rcb-chat-body-container::-webkit-scrollbar-thumb:hover{background-color:#cfcfcf}.rcb-chat-body-container::-webkit-scrollbar-corner{background-color:#f1f1f1}.rcb-checkbox-container{display:flex;flex-wrap:wrap;gap:10px;margin-left:16px;padding-top:12px}.rcb-checkbox-offset{margin-left:50px!important}.rcb-checkbox-row-container{align-items:center;animation:rcb-animations-checkboxes-entry .5s ease-out;background-color:#fff;border-radius:10px;border-style:solid;border-width:.5px;cursor:pointer;display:flex;gap:5px;max-height:32px;min-height:30px;overflow:hidden;width:80%}.rcb-checkbox-row-container:hover{box-shadow:0 0 5px #0003}.rcb-checkbox-row{align-items:center;cursor:pointer;display:inline-flex;margin-left:10px}.rcb-checkbox-mark{align-items:center;background-color:#f2f2f2;border:none;border-radius:50%;cursor:pointer;display:flex;height:20px;justify-content:center;margin-right:10px;transition:all .3s ease;width:20px}.rcb-checkbox-mark:hover{background-color:#c2c2c2}.rcb-checkbox-mark:before{content:"✓";transition:all .3s ease}.rcb-checkbox-label{font-size:14px}.rcb-checkbox-next-button{align-items:center;animation:rcb-animations-checkboxes-entry .5s ease-out;background-color:#fff;border-radius:10px;border-style:solid;border-width:.5px;cursor:pointer;display:inline-block;font-size:24px;max-height:32px;min-height:30px;text-align:center;width:80%}.rcb-checkbox-next-button:before{content:"→"}.rcb-checkbox-next-button:hover{box-shadow:0 0 5px #0003}.rcb-options-container{display:flex;flex-wrap:wrap;gap:10px;margin-left:16px;max-width:70%;padding-top:12px}.rcb-options-offset{margin-left:50px!important}.rcb-options{align-items:center;animation:rcb-animation-options-entry .5s ease-out;border-radius:20px;border-style:solid;border-width:.5px;cursor:pointer;display:inline-flex;font-size:14px;justify-content:center;overflow:hidden;padding:10px 20px;transition:background-color .3s ease}.rcb-options:hover{box-shadow:0 0 5px #0003}.rcb-line-break-container{align-items:center;display:flex;justify-content:center;max-height:45px;padding-bottom:5px;padding-top:10px}.rcb-line-break-text{color:#adadad;font-size:12px;padding:6px 12px}.rcb-spinner-container{align-items:center;display:flex;justify-content:center;max-height:45px;min-height:35px;padding-bottom:5px;padding-top:10px}.rcb-spinner{animation:rcb-animation-spin 1s linear infinite;border:4px solid #f3f3f3;border-radius:50%;height:22px;width:22px}.rcb-chat-input{align-items:center;background-color:#fff;border-top:1px solid #ccc;display:flex;padding:8px 16px}.rcb-chat-input::placeholder{color:#999}.rcb-chat-input-textarea{background-color:#fff;border:none;border-radius:4px;color:#000;flex:1;font-family:inherit;font-size:16px;height:auto;min-height:38px;outline:none;overflow-y:scroll;padding:8px;resize:none;touch-action:none}.rcb-chat-input-textarea::-webkit-scrollbar,.rcb-chat-input-textarea::-webkit-scrollbar-thumb{background-color:initial}.rcb-chat-input-textarea::-webkit-scrollbar-thumb:hover{background-color:initial}.rcb-chat-input-char-counter{font-size:14px;margin-left:8px;margin-top:3px}.rcb-chat-footer-container{align-items:flex-end;background-color:#f2f2f2;border-top:1px solid #ccc;color:#000;display:flex;font-size:12px;justify-content:space-between;max-height:55px;padding:12px 16px 8px 10px}.rcb-chat-footer,.rcb-toggle-button{display:flex;flex-direction:row}.rcb-toggle-button{border:none;border-radius:50%;bottom:20px;box-shadow:0 2px 4px #0003;cursor:pointer;height:75px;position:fixed;right:20px;width:75px;z-index:9999}.rcb-toggle-button.rcb-button-hide{animation:rcb-animation-collapse .3s ease-in-out forwards;opacity:0;visibility:hidden}.rcb-toggle-button.rcb-button-show{animation:rcb-animation-expand .3s ease-in-out forwards;opacity:1;visibility:visible}.rcb-toggle-icon{background-position:50%;background-repeat:no-repeat;background-size:cover;border-radius:inherit;height:100%;margin:auto;width:100%}.rcb-badge,.rcb-toggle-icon{align-items:center;display:flex;justify-content:center}.rcb-badge{background-color:red;border-radius:50%;color:#fff;height:25px;position:absolute;right:-6px;top:-6px;width:25px}.rcb-chat-tooltip{border-radius:20px;box-shadow:0 2px 6px #0003;cursor:pointer;font-size:20px;padding:16px;position:fixed;transition:transform .3s ease;white-space:nowrap;z-index:9999}.rcb-chat-tooltip-tail{border-style:solid;border-width:10px 0 10px 10px;content:"";margin-top:-10px;position:absolute;right:-10px;top:50%}.rcb-chat-tooltip.rcb-tooltip-hide{animation:rcb-animation-tooltip-out .5s ease-in-out;opacity:0;visibility:hidden}.rcb-chat-tooltip.rcb-tooltip-show{animation:rcb-animation-tooltip-in .5s ease-in-out;opacity:1;visibility:visible}.rcb-toast-prompt{animation:rcb-animation-pop-in .3s ease-in-out;background-color:#fff;border:.5px solid #7a7a7a;border-radius:5px;color:#7a7a7a;cursor:pointer;font-size:12px;margin-top:6px;padding:6px 12px;text-align:center;transition:color .3s ease,border-color .3s ease;width:100%;z-index:9999}.rcb-toast-prompt-container{align-items:center;animation:popIn .3s ease-in-out;bottom:0;display:flex;flex-direction:column;justify-content:flex-end;left:50%;margin:200 auto auto;opacity:1;pointer-events:auto;position:absolute;transform:translate(-50%)}.rcb-media-display-image-container,.rcb-media-display-video-container{border-radius:22px;margin-right:16px;margin-top:8px;padding:16px;width:fit-content}.rcb-media-display-offset{margin-right:50px!important}.rcb-media-display-image{border-radius:22px;height:auto;object-fit:cover;width:100%}.rcb-media-display-video{background-color:#000;border-radius:22px;height:auto;width:100%}.rcb-media-display-audio{border-radius:22px;height:auto;margin-right:16px;margin-top:8px;width:100%}.rcb-media-entry{animation:rcb-animation-user-message-entry .3s ease-in backwards}.rcb-attach-button-disabled,.rcb-attach-button-enabled{background-size:cover;border-radius:6px;display:inline-block;height:30px;position:relative;text-align:center;width:30px}.rcb-attach-button-disabled input[type=file],.rcb-attach-button-enabled input[type=file]{display:none;height:100%;position:absolute;width:100%}.rcb-attach-button-enabled{cursor:pointer}.rcb-attach-button-disabled{opacity:.5}.rcb-attach-button-enabled:after{background-color:#0000001a;border-radius:50%;content:"";height:0;left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);transition:width .2s ease-out,height .2s ease-out,opacity .2s ease-out;width:0}.rcb-attach-button-enabled:hover:after{height:130%;opacity:1;width:130%}.rcb-attach-icon-disabled,.rcb-attach-icon-enabled{background-repeat:no-repeat;background-size:cover;display:inline-block;height:24px;margin-top:2px;transition:background-image .3s ease;width:24px}.rcb-attach-icon-enabled{cursor:pointer}.rcb-emoji-button-disabled,.rcb-emoji-button-enabled{background-size:cover;border-radius:6px;cursor:pointer;display:inline-block;height:30px;position:relative;text-align:center;width:30px}.rcb-emoji-icon-disabled,.rcb-emoji-icon-enabled{background-repeat:no-repeat;background-size:cover;display:inline-block;font-size:20px;height:24px;margin-top:2px;position:relative;width:24px}.rcb-emoji-icon-enabled{cursor:pointer}.rcb-emoji-icon-disabled{opacity:.5}.rcb-emoji-button-enabled:after{background-color:#0000001a;border-radius:50%;content:"";height:0;left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);transition:width .2s ease-out,height .2s ease-out,opacity .2s ease-out;width:0}.rcb-emoji-button-enabled:hover:after{height:130%;opacity:1;width:130%}.rcb-emoji-button-popup{background-color:#fff;border:1px solid #ccc;border-radius:4px;box-shadow:0 2px 4px #0003;max-height:200px;overflow-y:auto;padding:8px;position:absolute;transform:translateY(calc(-100% - 30px));width:158px}.rcb-emoji{cursor:pointer;font-size:24px;padding:3px;transition:transform .2s ease-in-out}.rcb-emoji:hover{transform:scale(1.2)}.rcb-audio-icon{background-size:cover;border:none;cursor:pointer;display:inline-block;height:30px;margin-left:5px;position:relative;width:30px}.rcb-audio-icon:after{background-color:#0000001a;border-radius:50%;content:"";height:0;left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);transition:width .2s ease-out,height .2s ease-out,opacity .2s ease-out;width:0}.rcb-audio-icon:hover:after{height:130%;opacity:1;width:130%}.rcb-close-chat-icon{background-size:cover;border:none;cursor:pointer;display:inline-block;height:30px;margin-left:5px;position:relative;width:30px}.rcb-close-chat-icon:after{background-color:#0000001a;border-radius:50%;content:"";height:0;left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);transition:width .2s ease-out,height .2s ease-out,opacity .2s ease-out;width:0}.rcb-close-chat-icon:hover:after{height:130%;opacity:1;width:130%}.rcb-notification-icon{background-size:cover;border:none;cursor:pointer;display:inline-block;height:30px;margin-left:5px;position:relative;width:30px}.rcb-notification-icon:after{background-color:#0000001a;border-radius:50%;content:"";height:0;left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);transition:width .2s ease-out,height .2s ease-out,opacity .2s ease-out;width:0}.rcb-notification-icon:hover:after{height:130%;opacity:1;width:130%}.rcb-voice-button-disabled,.rcb-voice-button-enabled{align-items:center;background-color:#fff;border-radius:4px;box-shadow:0 0 3px #0000004d;cursor:pointer;display:inline-flex;height:32px;justify-content:center;margin-left:8px;text-transform:uppercase;transition:all .3s ease;width:32px}.rcb-voice-button-enabled{border:1px solid red;box-shadow:0 0 3px #ff000080}.rcb-voice-button-enabled:hover{border:1px solid #3d0000}.rcb-voice-button-disabled{border:1px;border-color:#0003;border-style:solid}.rcb-voice-button-disabled:hover{box-shadow:0 0 3px #8a0000}.rcb-voice-icon{background-position:50%;background-repeat:no-repeat;background-size:cover;background-size:contain;height:60%;object-fit:cover;width:60%}.rcb-voice-icon.on{animation:rcb-animation-ping 1s infinite}.rcb-send-button{border:none;border-radius:4px;box-shadow:0 0 3px #0000004d;cursor:pointer;display:inline-flex;height:32px;justify-content:center;margin-left:8px;text-transform:uppercase;transition:background-color .3s ease;width:51px}.rcb-send-icon{background-position:50%;background-repeat:no-repeat;background-size:cover;background-size:contain;height:50%;object-fit:cover;transform:translateY(20%);width:50%}.rcb-view-history-container{align-items:center;display:flex;justify-content:center;max-height:45px;min-height:35px;padding-bottom:5px;padding-top:10px}.rcb-view-history-button{align-items:center;background-color:#fff;border:.5px solid #adadad;border-radius:20px;color:#adadad;cursor:pointer;display:inline-flex;font-size:12px;justify-content:center;max-width:60%;padding:6px 12px;transition:color .3s ease,border-color .3s ease}.rcb-view-history-button>p{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rcb-chatbot-global{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5;z-index:9999}.rcb-chat-window{background-color:#fff;border-radius:10px;bottom:20px;box-shadow:0 2px 4px #0003;display:flex;flex-direction:column;height:550px;overflow:hidden;position:fixed;right:20px;transition:all .3s ease;width:375px}.rcb-window-embedded .rcb-chat-window{bottom:auto;opacity:1;position:relative;right:auto;visibility:visible}.rcb-window-open .rcb-chat-window{animation:rcb-animation-expand .3s ease-in-out forwards;opacity:1;visibility:visible}.rcb-window-close .rcb-chat-window{animation:rcb-animation-collapse .3s ease-in-out forwards;opacity:0;visibility:hidden}@keyframes rcb-animation-expand{0%{opacity:0;transform:translate(100%,100%) scale(0)}to{opacity:1;transform:translate(0) scale(1)}}@keyframes rcb-animation-collapse{0%{opacity:1;transform:translate(0) scale(1)}to{opacity:0;transform:translate(100%,100%) scale(0)}}@keyframes rcb-animation-ping{0%{filter:brightness(100%);opacity:1}50%{filter:brightness(50%);opacity:.8}}@keyframes rcb-animation-bot-message-entry{0%{opacity:0;transform:translate(-100%,50%) scale(0)}to{opacity:1;transform:translate(0) scale(1)}}@keyframes rcb-animation-user-message-entry{0%{opacity:0;transform:translate(100%,50%) scale(0)}to{opacity:1;transform:translate(0) scale(1)}}@keyframes rcb-animation-bot-typing{0%{opacity:.4}50%{opacity:1}to{opacity:.4}}@keyframes rcb-animation-pop-in{0%{opacity:0;transform:scale(.8)}70%{opacity:1;transform:scale(1.1)}to{transform:scale(1)}}@keyframes rcb-animations-checkboxes-entry{0%{opacity:0;transform:translate(-100%)}to{opacity:1;transform:translate(0)}}@keyframes rcb-animation-options-entry{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes rcb-animation-tooltip-in{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}@keyframes rcb-animation-tooltip-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5px)}}@keyframes rcb-animation-spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}', { insertAt: "top" });
|
|
521
|
+
const $ = { AUDIO_BUTTON: "audio-button", NOTIFICATION_BUTTON: "notification-button", CLOSE_CHAT_BUTTON: "close-chat-button", SEND_MESSAGE_BUTTON: "send-button", VOICE_MESSAGE_BUTTON: "voice-button", FILE_ATTACHMENT_BUTTON: "file-attachment-button", EMOJI_PICKER_BUTTON: "emoji-button" }, Me = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20xml:space='preserve'%20viewBox='0%200%201000%201000'%3e%3crect%20width='100%25'%20height='100%25'%20fill='%23fff'/%3e%3cg%3e%3crect%20width='45'%20height='30'%20x='-22.5'%20y='-15'%20rx='1.5'%20ry='1.5'%20style='stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;is-custom-font:none;font-file-url:none;fill:%2337547a;fill-rule:nonzero;opacity:1'%20transform='rotate(90%20-99%20362)%20scale(3.4003)'/%3e%3cpath%20d='M0%2075q14%200%2014%2017%200%2016-14%2016Z'%20style='stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;is-custom-font:none;font-file-url:none;fill:%2398b0ca;fill-rule:nonzero;opacity:1'%20transform='rotate(180%20106%20386)%20scale(3.4003)'/%3e%3crect%20width='25'%20height='4'%20x='-12.5'%20y='-2'%20rx='.2'%20ry='.2'%20style='stroke:%2346648c;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;is-custom-font:none;font-file-url:none;fill:%2346648c;fill-rule:nonzero;opacity:1'%20transform='rotate(90%20-46%20282)%20scale(3.4003)'/%3e%3cpath%20d='M19%2065h4l5%204v1H14v-1Z'%20style='stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;is-custom-font:none;font-file-url:none;fill:%2346648c;fill-rule:nonzero;opacity:1'%20transform='translate(165%20150)%20scale(3.4003)'/%3e%3crect%20width='25'%20height='2'%20x='-12.5'%20y='-1'%20rx='.1'%20ry='.1'%20style='stroke:%2398b0ca;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;is-custom-font:none;font-file-url:none;fill:%2398b0ca;fill-rule:nonzero;opacity:1'%20transform='rotate(90%20-3%20240)%20scale(3.4003)'/%3e%3ccircle%20r='7.5'%20style='stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;is-custom-font:none;font-file-url:none;fill:%23a478fc;fill-rule:nonzero;opacity:1'%20transform='translate(236%20175)%20scale(3.4003)'/%3e%3crect%20width='45'%20height='30'%20x='-22.5'%20y='-15'%20rx='1.5'%20ry='1.5'%20style='stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;is-custom-font:none;font-file-url:none;fill:%2337547a;fill-rule:nonzero;opacity:1'%20transform='rotate(90%20139%20600)%20scale(3.4003)'/%3e%3cpath%20d='M184%2075q14%200%2014%2017%200%2016-14%2016Z'%20style='stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;is-custom-font:none;font-file-url:none;fill:%2398b0ca;fill-rule:nonzero;opacity:1'%20transform='translate(165%20150)%20scale(3.4003)'/%3e%3crect%20width='25'%20height='4'%20x='-12.5'%20y='-2'%20rx='.2'%20ry='.2'%20style='stroke:%2346648c;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;is-custom-font:none;font-file-url:none;fill:%2346648c;fill-rule:nonzero;opacity:1'%20transform='rotate(90%20219%20548)%20scale(3.4003)'/%3e%3cpath%20d='M175%2065h4l5%204v1h-14v-1Z'%20style='stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;is-custom-font:none;font-file-url:none;fill:%2346648c;fill-rule:nonzero;opacity:1'%20transform='translate(165%20150)%20scale(3.4003)'/%3e%3crect%20width='25'%20height='2'%20x='-12.5'%20y='-1'%20rx='.1'%20ry='.1'%20style='stroke:%2398b0ca;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;is-custom-font:none;font-file-url:none;fill:%2398b0ca;fill-rule:nonzero;opacity:1'%20transform='rotate(90%20262%20505)%20scale(3.4003)'/%3e%3ccircle%20r='7.5'%20style='stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;is-custom-font:none;font-file-url:none;fill:%23a478fc;fill-rule:nonzero;opacity:1'%20transform='translate(767%20175)%20scale(3.4003)'/%3e%3crect%20width='116.7'%20height='70'%20x='-58.4'%20y='-35'%20rx='31.5'%20ry='31.5'%20style='stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;is-custom-font:none;font-file-url:none;fill:%2371c9fc;fill-rule:nonzero;opacity:1'%20transform='translate(502%20877)%20scale(3.4003)'/%3e%3crect%20width='60'%20height='20'%20x='-30'%20y='-10'%20rx='3'%20ry='3'%20style='stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;is-custom-font:none;font-file-url:none;fill:%2337547a;fill-rule:nonzero;opacity:1'%20transform='translate(502%20728)%20scale(3.4003)'/%3e%3ccircle%20r='75'%20style='stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;is-custom-font:none;font-file-url:none;fill:%2371c9fc;fill-rule:nonzero;opacity:1'%20transform='translate(502%20473)%20scale(3.4003)'/%3e%3crect%20width='129.4'%20height='82.3'%20x='-64.7'%20y='-41.1'%20rx='37'%20ry='37'%20style='stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;is-custom-font:none;font-file-url:none;fill:%23fff;fill-rule:nonzero;opacity:1'%20transform='translate(502%20464)%20scale(3.4003)'/%3e%3crect%20width='108'%20height='68.6'%20x='-54'%20y='-34.3'%20rx='30.9'%20ry='30.9'%20style='stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;is-custom-font:none;font-file-url:none;fill:%23162334;fill-rule:nonzero;opacity:1'%20transform='translate(502%20464)%20scale(3.4003)'/%3e%3ccircle%20r='19.4'%20style='stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;is-custom-font:none;font-file-url:none;fill:%23a478fc;fill-rule:nonzero;opacity:1'%20transform='translate(415%20464)%20scale(3.4003)'/%3e%3ccircle%20r='19.4'%20style='stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;is-custom-font:none;font-file-url:none;fill:%23a478fc;fill-rule:nonzero;opacity:1'%20transform='translate(591%20464)%20scale(3.4003)'/%3e%3crect%20width='96'%20height='53.2'%20x='-48'%20y='-26.6'%20rx='23.9'%20ry='23.9'%20style='stroke:%23162334;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;is-custom-font:none;font-file-url:none;fill:%23162334;fill-rule:nonzero;opacity:1'%20transform='translate(503%20875)%20scale(3.4003)'/%3e%3cpath%20stroke-linecap='round'%20d='m68%20215%207-15M81%20222l-7-22M81%20222l7-14M101%20208H87M114%20219l-7-24M113%20219l13-22M131%20214l-5-17M148%20214h-18M69%20214H51M100%20209l7-15'%20style='stroke:%23a478fc;stroke-width:3;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:10;is-custom-font:none;font-file-url:none;fill:none;fill-rule:nonzero;opacity:1'%20transform='translate(165%20150)%20scale(3.4003)'/%3e%3c/g%3e%3c/svg%3e", Oe = lA((A, e) => j("svg", { viewBox: "0 0 637 637", ref: e, ...A }, j("path", { d: "m478 113-13 2-4 1h4l14-2c10-2 35-2 42-1l6 3 3 1c3 0-4-3-8-5-7-1-34-1-44 1m56 6 8 6c7 5 20 17 20 19s7 12 8 12l-3-6-4-6c0-3-15-17-25-24-5-3-8-4-4-1m-198 16-9 1a512 512 0 0 1 9-1m-180 30a412 412 0 0 0-23 4 167 167 0 0 0-32 8 439 439 0 0 1 46-9 304 304 0 0 1 11-2l6-1h-8m369 8 4 3-7-6c-1 0 0 2 3 3m-439 9c-7 3-18 13-18 15l6-5c5-5 9-8 14-10l6-4-8 4m442 12-10 11-7 6 7-6c7-5 14-14 13-16l-3 5M65 205l-1 11c0 9 0 10 4 17 5 10 7 12 22 11 10 0 15 0 38-5l5-1-6 1-16 2-21 2c-13 1-16-1-21-10-3-5-4-6-4-15l1-12c1-4 1-5-1-1m335 1c3 0 3 1 3 3l-2 6c-2 5-35 39-76 80-53 51-120 117-138 137-21 24-22 25-22 27 0 3 6 9 9 9 4 0 14-8 38-27a5073 5073 0 0 1 15-16 1421 1421 0 0 0-17 15l-31 25-6 2-4-3c-3-3-3-4-2-6 3-8 79-85 160-163 57-57 79-80 79-86 0-2-3-4-7-4-2 0-2 0 1 1m165 18c-9 17-25 32-57 53l-10 8 16-11 12-8c15-10 27-22 39-39 5-7 6-8 4-8l-4 5m-221 2a199 199 0 0 0-19 10 183 183 0 0 1 27-12c0-1-1-1-8 2m-34 16c-3 3-2 3 2 0l1-2-3 2m151 3-1 2 2-2c3-3 2-3-1 0m-16 12-11 10a281 281 0 0 0 11-10m-24 18-7 5-7 5-42 31c-10 7-24 19-22 19l7-6 16-12a343 343 0 0 0 35-25 573 573 0 0 0 20-17m-187 0-2 2 4-2 3-2-5 2m-14 6-3 2 4-1 4-3-5 2m-7 3-8 4-18 8 18-7 7-3 3-1c1-2 0-2-2-1m254 24a2672 2672 0 0 1-71 54 601 601 0 0 0 39-29 1352 1352 0 0 1 32-25m-291-8-2 2 4-2 3-2-5 2m-13 5-2 2h3c5-3 4-4-1-2m-19 9-7 3-13 6c-10 5-13 7-14 10-3 4-2 5 1 0 2-3 5-5 14-9l13-6 12-6-6 2m178 36c-17 12-21 16-21 17a390 390 0 0 1 20-17m-206 34 1 4 1 3 1 5 2 8 1 5v-6l-1-8-2-5-1-4-1-2c-1-2-1-2-1 0m222 23-9 7a683 683 0 0 0-56 44 261 261 0 0 0-26 20 1345 1345 0 0 0-46 34c-6 3-7 3-19 3-11 0-12 0-18-3-8-4-10-8-17-20l-5-10 4 10c5 10 12 18 19 22 4 2 6 2 17 2 13 0 14 0 21-3l26-19 42-33a2183 2183 0 0 0 43-34 643 643 0 0 1 24-20", fill: "#fff", fillRule: "evenodd" }), j("path", { d: "M478 114a620 620 0 0 1-39 6l-21 3a5481 5481 0 0 0-19 3 870 870 0 0 1-54 8l-1 1-6 1-12 2-13 2a992 992 0 0 0-76 12 400 400 0 0 1-45 8l-6 1-5 1h-3l-3 1-2 1-26 4-13 2-17 3c-23 5-33 9-43 19-7 8-9 13-9 27 0 8 1 9 4 14 5 9 8 11 21 10l21-2a1133 1133 0 0 1 23-4 659 659 0 0 0 74-14l3-1h3l3-1h3l2-1 2-1h3l2-1h2l24-5 38-7a2100 2100 0 0 1 93-18l3-1 10-1a2082 2082 0 0 1 120-17l2 1c2 0 8 5 8 7l1 2 1 6c0 4 0 6-3 10-2 4-16 16-18 16l-7 5-10 8a1070 1070 0 0 0-11 7 113 113 0 0 1-20 14l-2 2-3 2-2 2h-1a154 154 0 0 1-28 21l-5 4-5 4a573 573 0 0 1-50 37 175 175 0 0 0-24 18l-1 2-2 1-2 1-2 1-1 1-12 10a396 396 0 0 0-32 25l-8 6-6 5-9 7a326 326 0 0 1-25 20l-13 12a5073 5073 0 0 0-17 15c-24 20-34 27-39 27-2 0-8-6-8-9 0-2 1-3 22-27 18-20 85-86 138-137 41-41 74-75 76-80l2-6c0-2 0-3-2-3l-7 1a233 233 0 0 1-26 9l-1 1-1 1h-1l-1 1h-2l-3 2-1 1h-2l-3 2h-1l-5 2-22 10-9 4-4 2-5 2-10 4-2 1-2 1-2 1-13 6a334 334 0 0 1-38 17 75 75 0 0 0-14 6l-5 2-4 1-2 1-3 2-7 3-16 6a247 247 0 0 0-32 14l-1 1h-2l-1 1h-2l-1 1-12 6a103 103 0 0 0-27 15l-2 5-1 1v11l1 5 1 5 1 4c0 3 0 4 2 4v3l1 3 1 2 2 10 1 4 1 5 2 10 2 8 1 4 1 4c3 3 9 25 11 38l1 7v2l1 4v1l1 1v2l1 2 1 3v1l5 10c7 13 9 16 17 20 6 3 7 3 18 3 12 0 13 0 19-3 8-4 11-6 26-18a1345 1345 0 0 1 85-67 683 683 0 0 1 50-39l12-9a513 513 0 0 1 44-33 201 201 0 0 0 22-17 2270 2270 0 0 0 73-54 158 158 0 0 0 58-59c2 0 3-9 4-27l-1-19-1-4-1-6-1-3-4-6-4-6c0-2-6-8-13-14a77 77 0 0 0-28-18c-6-1-34-1-43 1" }))), He = lA((A, e) => j("svg", { viewBox: "0 -960 960 960", ref: e, ...A }, j("path", { d: "M765-321q0 117-84 196-83 80-200 80-118 0-200-80t-83-196v-392q0-85 61-144 61-58 146-58 86 0 147 58 61 59 61 144v374q0 54-39 92-39 37-93 37-55 0-93-37-38-38-38-92v-372h110v372q0 9 6 14t15 5q8 0 15-5t7-14v-374q0-39-29-66t-68-27q-40 0-69 27t-29 66v392q0 71 51 119t122 48q71 0 122-48t51-119v-426h111v426Z" }))), yo = lA((A, e) => j("svg", { viewBox: "0 -960 960 960", ref: e, ...A }, j("path", { d: "M125-165v-113h77v-273q0-93 55-167 56-75 146-100v-19q0-32 22-55 23-23 55-23t55 23q22 23 22 55v19q90 25 146 99 56 73 56 168v273h77v113H125ZM480-32q-38 0-66-27-27-27-27-66h186q0 39-27 66t-66 27Z" }))), Po = lA((A, e) => j("svg", { viewBox: "0 -960 960 960", ref: e, ...A }, j("path", { d: "M137-190v-113h78v-253q0-41 11-79 11-39 35-71l-9 150h10L17-802l74-74L873-92l-74 74-175-172H137Zm609-149L319-769q20-15 41-25t44-16v-28q0-32 22-54t54-22q32 0 55 22t22 54v28q85 23 137 94t52 160v217ZM481-47q-38 0-65-27t-27-65h184q0 38-27 65t-65 27Z" }))), Eo = lA((A, e) => j("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 100 100", ref: e, ...A }, j("g", { strokeLinecap: "round", strokeWidth: 10 }, j("path", { d: "m19 19 61 61M80 19 19 80" })))), Do = lA((A, e) => j("svg", { viewBox: "0 -960 960 960", ref: e, ...A }, j("path", { d: "M94-136v-255l351-93-351-92v-253l816 346L94-136Z" }))), Co = lA((A, e) => j("svg", { viewBox: "0 -960 960 960", ref: e, ...A }, j("path", { d: "M480-372q-61 0-105-43-43-43-43-105v-240q0-61 43-105 43-43 105-43 61 0 105 43 43 44 43 105v240q0 62-43 105t-105 43ZM425-76v-122q-121-16-197-108t-76-214h109q0 91 64 154t155 63q91 0 155-63t64-154h109q0 122-77 214T534-198v122H425Z" }))), Qo = lA((A, e) => j("svg", { viewBox: "0 -960 960 960", ref: e, ...A }, j("path", { d: "m763-343-80-79q8-20 13-44 5-23 5-54h109q0 49-11 95t-36 82ZM625-482 336-770v-2q3-56 45-96t101-40q62 0 105 43t43 105v249l-1 17q-1 7-4 12ZM427-76v-122q-120-16-196-108-77-92-77-214h109q0 91 64 154t155 63q43 0 80-14 37-15 67-41l78 79q-35 32-78 53t-93 28v122H427Zm362 27L41-796l75-75 748 748-75 74Z" }))), Le = lA((A, e) => j("svg", { viewBox: "0 -960 960 960", ref: e, ...A }, j("path", { d: "M625-511q29 0 50-21t20-50q0-29-20-50-21-20-50-20t-50 20-20 50q0 29 20 50 21 21 50 21Zm-290 0q29 0 50-21t20-49q0-30-20-50t-50-21q-29 0-50 20-20 21-20 50 0 30 20 50 21 21 50 21Zm145 268q75 0 137-43t85-115H258q24 72 85 115 62 43 137 43Zm0 198q-90 0-170-34-79-34-138-93T79-310q-34-80-34-170t34-170q34-79 93-138t138-93q80-34 170-34t170 34q79 34 138 93t93 138q34 80 34 170t-34 170q-34 79-93 138T650-79q-80 34-170 34Zm0-435Zm0 322q134 0 228-94t94-228q0-134-94-228t-228-94q-134 0-228 94t-94 228q0 134 94 228t228 94Z" }))), xo = lA((A, e) => j("svg", { viewBox: "0 -960 960 960", ref: e, ...A }, j("path", { d: "M553-64v-108q107-27 173-113 67-87 67-197 0-109-67-195T553-789v-108q152 26 249 144 97 117 97 271 0 155-97 273T553-64ZM61-335v-290h176l236-237v764L237-335H61Zm492 28v-346q51 23 82 70t31 103-31 103q-31 47-82 70Z" }))), Io = lA((A, e) => j("svg", { viewBox: "0 -960 960 960", ref: e, ...A }, j("path", { d: "M807-15 700-123q-33 21-71 37-38 15-80 22v-108q20-4 38-12l35-17-153-154v257L234-335H57v-290h144L10-818l74-75L882-90l-75 75Zm37-264-80-79q13-30 19-60 7-31 7-64 0-109-68-195-67-86-173-112v-108q152 26 249 144 98 117 98 271 0 55-14 107-13 51-38 96ZM661-462 549-575v-78q51 23 83 70 31 47 31 103l-1 9-1 9ZM469-655 366-759l103-103v207Z" }))), at = { general: { primaryColor: "#42b0c5", secondaryColor: "#491d8d", fontFamily: "-apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif", showHeader: !0, showFooter: !0, showInputRow: !0, actionDisabledIcon: "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='32'%20height='32'%20viewBox='0%200%2042%2042'%3e%3cpath%20style='fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke:%23b00000;stroke-opacity:1;stroke-miterlimit:4'%20d='M17%209a8%208%200%200%201-8%208%208%208%200%200%201-8-8%208%208%200%200%201%208-8%208%208%200%200%201%208%208Zm0%200'%20transform='rotate(.086)%20scale(1.77778)'/%3e%3cpath%20style='fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke:%23b00000;stroke-opacity:1;stroke-miterlimit:10'%20d='M14.66%2014.66%203.34%203.34'%20transform='rotate(.086)%20scale(1.77778)'/%3e%3c/svg%3e", embedded: !1, flowStartTrigger: "ON_LOAD" }, tooltip: { mode: "CLOSE", text: "Talk to me! 😊" }, chatButton: { icon: Oe }, header: { title: c("div", { style: { cursor: "pointer", margin: 0, fontSize: 20, fontWeight: "bold" }, onClick: () => window.open("https://github.com/tjtanjin/"), children: "Tan Jin" }), showAvatar: !0, avatar: Me, buttons: [$.NOTIFICATION_BUTTON, $.AUDIO_BUTTON, $.CLOSE_CHAT_BUTTON], closeChatIcon: Eo }, notification: { disabled: !1, defaultToggledOn: !0, volume: 0.2, icon: yo, iconDisabled: Po, sound: "data:audio/wav;base64,UklGRmaIAABXQVZFZm10IBAAAAABAAIAQB8AAAB9AAAEABAATElTVBoAAABJTkZPSVNGVA4AAABMYXZmNjAuMTYuMTAwAGRhdGEgiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////AAAAAAAA//////7/////////AAABAAAAAgABAAEAAQAAAAIAAQABAP//AAD+////AAD+//7////+////AAD//wAA/v8AAAAA/v8AAP//AAAAAAAAAgD////////+////AAABAAEAAgD/////AQABAAAA//8CAP//AAAAAAAA/v8AAAAA//8AAAEA//8EAAAAAAAAAAAA//8BAP//AQABAAEA/////wEA/v///wAAAAACAAAAAAABAAAA//8AAP//AAACAP//////////AAAAAAEAAAAAAAEA//8AAAEAAQADAAIAAgAAAAAA/v///wEAAAAAAAEAAAAAAAEA//8AAAEAAQD//wAA//8AAAEAAAABAAEAAAABAP//AAD//wAAAgAAAP//AQD/////AAAAAP7/AgAAAAIAAAAAAAAAAAABAAAAAQABAP//AAABAP///v8AAP////8AAP//AAD//wAA//8BAP//AAD///7///8BAP7///8AAAIAAgABAAEA/v8AAP//AQADAAEAAAACAAEA/////////v///wEA/v////7/AAD+////AAAAAAAAAgAAAAAAAAD//wEAAAAAAAAAAQABAAIA/v8AAAAA//8AAAEAAAAAAP//AgD//wEA/////wAAAQACAAAAAAAAAP//AQD/////AQAAAAEA/v8AAAEAAQABAAEA///+////AQD//wEAAgD+//7/AAAAAAAAAQAAAAAAAQAAAAAAAAAAAP//AAD//wEAAQD//wAAAQABAP7///8AAP7/AAABAP7/AQABAAEAAAABAAEAAAD+/wIAAAABAAAAAQD/////AQACAP////8AAP//AQD//wEA/v8CAAEAAAAAAAAAAQAAAAIAAQAAAAEAAgD//wEAAAAAAP7///8BAP//AgAAAP///v8CAAAAAgD///////////7/AAACAAEAAgD//wAAAAABAP//AwAAAAMA//8AAAAAAQD+/wAAAAD//wAAAQD//wEA//8BAP7/AAABAAAA//8BAAAA//8AAP//AQADAP3////+////AgD+/////v8BAAEAAQACAAAAAAAAAAAA//8AAP//AAD+/wEA/v8AAP7/AAD//wAAAQACAAAAAQAAAP//AQAAAAAAAAABAAAAAAD+//////8AAAAAAAD//wAAAAABAAEA//8AAAEA//8AAP//AgD+/wAA///+/wAA/v///wAAAQABAAAAAQD//wAA//8AAAEA//8BAAAAAgABAP//AAACAAIAAQABAP//AAAAAAAA//8BAAIAAAABAAAA//8CAAEA/v//////AAAAAAEA////////AQAAAP//AAD//wAAAAAAAP3/AAAAAAEAAAACAAAAAAAAAP//AAD//wAAAAAAAAAAAAAAAP///v///wAAAAABAAAAAAD//wEAAAABAAEAAQD//wAAAAACAAAAAQD+/wAA//8BAAEAAAD+/wAA/////wAAAAABAAAAAAD//////v8AAAAA//8AAAAAAAAAAAIAAAABAAEAAAABAP7/AAD9//////////7///8BAP//AAD///3/AQABAP//AAD//wAAAAABAAAA//8AAP//AAD/////AQABAAEA//8AAAAA//8BAAMA//8AAAAA//8AAP7/AAD//wAAAAAAAP7/AQAAAAAA/v8CAP//AAABAAIAAQABAAAA//8BAAEAAQD///7/AQD//wAAAQABAP//AAD//wEAAAAAAAAAAQAAAAIA//8AAP////8AAP//AQD//////v///wEA/v8AAAIAAgACAAEAAAAAAAEAAAAAAAAAAAAAAAAAAQD//wAA/////wAAAQACAP////8AAAAAAAD//wAAAQD+/wEA//8AAAEAAwD//wEAAQAAAAAAAAABAP////8AAAAAAQAAAAAAAAAAAAEAAQAAAP////////7/AQABAAEAAQD///////8BAAAA//8AAAAAAgABAAEA/v8BAP7///8BAP3/AQABAAIAAAD//wEAAAAAAP//AAABAAIA//8CAAAAAQAAAAEA//8BAAAA/////wAAAAD//wEAAQD//wAAAAAAAP//AAAAAAAAAQABAAAAAQAAAP//AQD//////v8AAAEAAAAAAAAA//8AAAAAAAACAAEAAQAAAP//AAABAAEA/////wAAAgABAAAAAAAAAAEAAAABAP//AQABAP7////+/wEAAAAAAP//AAABAAAAAAABAAEAAAAAAAAA//8BAP///f/+/wEAAQD///7///8AAAAAAQAAAP////8AAAAAAAABAAAAAQD/////AAD//wEA//8AAAIA//8CAAAA//8AAAAAAAD+/wEAAAD+/wAA/////wAA////////AAAAAAAA//8BAAAAAAD//wAAAAD//wEA//8AAP//AQD+/wAAAAAAAP7/AAD+/wEAAQABAP//AAABAAEAAQD//wAA/////wEA//8AAAAAAgAAAAAA//8BAAAAAgAAAAAAAAAAAP7/AQD//wAAAAD+/wAAAAADAAIA/////wAAAQD//wIA//8BAAEA/v8AAAIAAAAAAP3///8AAAAAAAAAAAAAAAABAP///////wAA//8AAAEAAQABAAEAAQABAAAAAQAAAAAAAQABAP7/AQD//wAAAQABAAEA//8BAAAAAgAAAAEAAAABAP//AAD/////AAD//wIA/////wIAAAD///7/AAAAAAAAAAACAP//AAABAP////8AAAAAAAABAAAAAgAAAAAAAQD+/wEA/////wAA/////wAAAAAAAAAA/v//////AAAAAP//AAABAAAAAQAAAAIAAAACAAAA//8AAAAA//8AAP7/AAAAAP//AAACAP//AQABAP//AQABAAAA/////////v8AAP//AQAAAAAA///+/wAAAQD+/wEAAQAAAAEA/////wAAAQD//wAA//8AAAAA/v8BAAEA//8AAP7//v8BAAAAAAAAAAEA//8AAAEA/////wAAAAD//////////wEAAAABAAEA//8CAAEA/f8AAAAA//8BAAAABAABAAEAAQAAAAAAAAAAAP7///8AAAAA/v8BAAAA//8AAAIA//8AAP////8BAP//AAAAAAAAAAD/////AQD///7/////////AQD8////AgABAAIA////////AAD//wAAAAABAAAAAAAAAAEAAgAAAP//AQD//wAAAAAAAP/////+/wAAAAABAAAAAwABAP///////wEAAAADAP//AQACAAAA//8CAAEAAAAAAP///////wIAAAAAAAAAAQAAAAAAAgD//wEAAAABAAAA/v8AAAAAAAAAAAAAAAAAAAEA/v8AAP//AQD//wAA//////7///8AAAAAAAAAAP7/AQD//wAA//8AAAEAAAABAAEAAQD/////AAD//wEAAAD/////AQAAAAEAAAD//wEAAAD/////AgD//wAAAQD//////////wAAAAD//wAAAAABAAAAAAD//wAAAQD///7/AQD//wEAAAD/////AAD//wEA//8AAAEA//8CAAAAAQD//wEAAgAAAAEAAwAAAAAA/v8BAAEAAgD//wEAAAAAAAAAAAD//wEA//8AAAAAAQACAP///////wAAAQABAAEAAAAAAAEAAQD+/wEA/f////////8AAAAA//8AAAEA//8BAAAA/v///wEAAAAAAAEA/////wAAAAAAAP//AAAAAAIAAAABAAAA/////wAAAAD//wAA/v8AAAMAAQD+/wEAAAABAAEA//8BAP//AgAAAAAAAAD//wAA/////wEA/v8CAP3/AAACAP3/AQABAAAAAQACAAEA/v8AAAAA//8BAAAAAgAAAAAAAgACAAEA/v/9/wAAAQABAP7///8AAP//AgD+/////v8CAP////8BAP//AQACAAEAAQABAP//AAD///7/AAABAAEAAgD//wEA//8CAAEAAQABAAEAAAABAAAA/v8AAAEA/v8AAP//AAABAP//AQAAAAEAAgAAAAAA/v///wEAAQAAAAIAAAD/////AgAAAAEA/v8AAP7/AQAAAAAAAQAAAAEAAAACAAEA//8BAP////8AAAIAAAAAAP//AAAAAAIAAAAAAAAAAwABAP///v8BAAAAAAAAAP3/AAABAAEA/v////////////3//v8AAAAAAQABAAIAAAD+/////v8AAAAAAQABAAEAAQAAAP//AAAAAP//AQAAAP//AAABAAAAAAAAAAAA////////AAAAAP//AQD/////AAABAAEA//8CAP7///8AAP7//v8BAAEAAAD+/////////wEAAAAAAAAAAgD//wAAAQAAAP7/AQABAP//AQAAAAAAAAD/////AAACAP////8BAAAAAAD//wAA//8AAAEAAQABAAAAAAABAAAAAQD+/wEA/v8AAAEAAQD/////AAD//wAAAQABAP7//v//////AAACAAAAAAAAAAAAAAACAAAAAQAAAAAA//8BAP//AQD//wAA///+/wIAAQD//wAAAAD//wAA/v8AAP3///8AAAAAAAAAAAAA/f8AAAAA//8CAP7/AAD///7/AAAAAAAAAAD//wEAAAAAAAEAAAAAAAAA//8BAP////8BAP7///8CAAEA//8BAP3///////////8BAAAAAAAAAAEAAgD+//////8BAAMAAQADAAEAAAACAAAAAQD/////AAABAAMAAQAAAP//AQD//wAA//8AAAAA//8CAP7//////wAAAAAAAAIA/v8AAP//AAACAP//AwD//wAA//8AAP//AwD//wEAAQABAAEAAQACAAEAAAD//wAA//8AAAIAAAAAAP///////wAAAQD//wIA//8BAP7/AAD///////8AAAAAAAAAAAEAAAD//wAAAQD//wEA//8BAAAAAAD/////AgABAAIAAAABAAAAAAAAAP//AAAAAAAA//8AAAAAAAD/////AQAAAAAAAQD//wAA///+////AAAAAAEAAgABAAEAAAAAAP//AQAAAAAAAQD+/wAAAAABAAEAAAD/////AQABAP7///8AAAIAAAACAAAA//8AAP//AgACAAAA///+/wAAAAABAAAAAQAAAAEA/v8BAAEA//8CAP//AQD+/////v8AAAAAAAACAP//AAD+/wIA/v8BAAAAAAD/////AAAAAP7///8AAP7//////wEAAAABAAAAAAD//wAAAAAAAAAAAgACAAAAAAABAAAA/f8AAP7/AgAAAAEA//8BAAAAAAD///7/AQD//wAAAAAAAAEAAAAAAAEAAAAAAAAAAQAAAAAA//8AAAAAAAABAP///////wAAAgABAAEA//8AAP//AAACAP//AQABAAEA//8BAAAAAAABAAAA//8AAAEAAAAAAAIA/v8BAP//AQD//wEAAAABAAEAAQACAAEAAAAAAAEAAAABAAAAAAD/////AAABAAEA//8AAAAAAQABAP//AAAAAP//AAD/////AQD//wAAAAABAAEA//8BAAAA//8AAP///f/+/wAA/////wAAAQAAAAIAAAAAAAAAAAD+/wEA/f8CAAAA//8AAAEAAgAAAAMAAAABAAAAAAAAAP//AQAAAAAAAQABAAAAAQAAAP//AAAAAAAA//8AAAAAAAABAAAAAQAAAAAAAAABAAIAAAAAAP7/AQD//wAAAAD+////AAAAAAAAAAABAAAA/////wAA//8AAAAAAAD/////AgD//wAA//8CAP//AQACAAEA/f////////8BAAIAAQABAP//AAD//wAA///+////AAD+/wAAAQD/////AAAAAAAA/////wAAAAABAAAAAQAAAAAA//8AAAIAAAABAP//AQABAAEA//8AAAAAAAADAAEAAAABAP//AgD//wMA//8AAAAAAAD//wAAAAD9/wEA///+/wAA//8BAAEA//8BAAAA//8AAP///v8BAP///////////v8BAAAAAQABAAAAAAAAAAAA//8AAP7/AQAAAAAAAAAAAP7/AQAAAAAAAgABAAEAAAABAAEAAAAAAAAAAAD+/wAAAAD//wEAAAAAAAAAAAAAAP//AgABAAAAAAABAAEAAAD/////AAAAAP//AAABAP////8BAAAAAQABAP7//v/+////AQAAAAAAAQAAAAEAAgAAAAAAAQAAAAEAAAD+/////v8BAP//AAABAP//AQABAAAAAAD//wAA//8CAP//AAAAAAEAAAABAAAAAAAAAP//AAD+////AwAAAAAAAQD//wEAAAACAAEAAAADAAAAAAD/////AAAAAAEAAAABAAAA//8AAAEA//8BAP///v8AAP//AAD//wAAAQABAP//AQAAAAAA/////wEAAQAAAP////8AAAEA//8BAAAAAQAAAP////8AAAAAAQAAAAIAAQAAAAEAAAAAAAEAAAD//wEAAAAAAP////8AAAAA//8BAAEAAAAAAAIA///+/wIA/v8BAAAAAQACAAAAAQAAAP7///8AAP//AAAAAAEAAAAAAP7/AAD+////AAAAAAAAAAD//wAA/v8BAAMAAAABAAIAAgD//wAA//8BAAEA//8BAP7/AAAAAP7///8BAAAAAQAAAP7/AQD/////AAAAAAEAAAABAP//AQABAAAAAgABAAAAAAAAAP///////wEA//8AAAEA//8AAAAAAQAAAAIAAAABAP7//////wAAAQABAAAAAAABAAEA///+/wAA//8BAP///v8AAP///v8BAAAA//8CAAAAAQAAAAEAAQABAAAAAAD+/wAAAAD+/wAAAAAAAAAA/f////////8AAAAAAQABAP///////wEA//8BAAEAAAAAAAAA/////wEA/v//////AAAAAP//AAABAAAAAAD+/wAAAAD9////AQAAAAEAAwD//wEAAQAAAP//AgAAAAAAAAD+/wIAAAAAAAAAAAAAAAIA//8AAAEAAQACAAAAAQD//wAAAAD//wIAAQABAAAAAAD//wEA//8BAAEAAQAAAAAAAQABAP7/AAD//wEAAAACAP7/AQAAAAAAAAD//wIAAQACAAIAAQAAAAAAAAAAAP3///8BAAAAAQACAP//AgD9/wAAAAD//wEA/v////////8AAAAAAAD//wEAAQD//wMAAQAAAAEA//8AAAEA//8AAAAAAAACAAAAAAD//wAAAQD///////8AAAAA//8BAAIA/v8BAAEA/f8AAAAAAAAAAAAAAgD/////AAD+/wAAAAD//wAAAAAAAP//////////AgABAP///v8AAAIAAQAAAP//AAABAAAA/////wAAAAAAAAEAAAABAP///v///wIA//8BAAEAAQAAAAAA///+/wEAAAAAAAAA/////////v8BAP3/AAAAAAAAAAAAAAAA//8AAP//AAAAAP//AAABAAIAAAACAP////8DAAAAAAABAAAAAwABAP//AAABAP//AAAAAP////8BAAAAAgD//wAA///+/wAAAQD//wAA//8AAP7///8AAAAA/v8AAAAAAQD//wEA/v////////8AAAAAAQAAAP//AQACAAAAAAAAAP//AAD//wAAAAD//wAAAAD+/wAAAAAAAP//AQD//wAAAgAAAAAAAQABAAAAAwD+/wAAAAD///7/AQD//wIAAQAAAP//AAD//wAA//8CAAEAAAAAAAAA/////wAAAAD//wEAAQD///////8BAAAA//8BAAEAAAAAAAAA/v///wEAAAAAAAAAAAADAAAAAAAAAAAAAQABAAEAAAD+//7//v8AAP//AQAAAAAAAAABAAEAAgAAAAAAAQD//wAA/f8AAAAAAAABAAAAAQAAAAAAAAAAAAIA//8BAP///////wIA/////wAAAAABAAEA//8BAAAAAAD//wAAAQD//wEAAAAAAAIA/v8BAP//AAAAAAEAAAABAP//AAAAAAAAAQABAP7/AAABAAAAAQD//wIAAAAAAAEA///+/wAA//8AAP//AAAAAAAAAAABAP///////wIAAQAAAAEAAQAAAP7/AQAAAAAAAQAAAAAAAQD/////AQAAAAAA///+//7/AAD+/wEA//8AAAAA///+/wEAAAABAAIAAQABAAAA//8AAP//AAD//wAAAAD//wAAAAAAAP//AQAAAAAA////////AQAAAAAAAQD+////AQABAP7/AAD///7/AgD//wAAAAAAAP//AAAAAAEA//8BAAEAAgAAAAIAAAD//wEA/////wAAAQD///7/AQD//wEAAQD/////AAAAAAEAAgAAAAAAAQD//wEA//8AAP7//////wAA//8BAAEA//8BAAAAAQD/////AAABAP//AAACAP//AQAAAP//AAABAP////8AAAAAAAABAAEAAwABAAAAAgD//wAAAAD//wEAAAABAAAAAAABAAEA/////wAA//8AAAIAAAAAAAEAAQABAAEAAQABAP//AgAAAAAA//8BAP3//v///wAA//8AAAAAAQAAAP//AQD//wEAAAACAAIAAAABAAAA//8BAAEA//8BAP//AAAAAP//AQAAAAIAAAD//wAAAAAAAAEA////////AQAAAP//AQD//wAAAQD+/wEAAAABAP///v///wAAAAAAAP//AAAAAAIAAQD//wAAAgD+/wAAAAD//wAAAAABAP///P//////AAACAP////8AAAIAAAABAAAAAAAAAAAA//8AAAAAAQADAP//AQAAAAAAAAABAAEAAQAAAAAA/v8AAAAAAAD//wAAAQD//wAAAAD//wAA/v////////8CAAEA/v8BAP7/AAAAAAAA//8AAAEAAAD//wIAAQAAAAIAAQAAAAAAAAD///7/AQABAP//AAAAAP//AAACAAEA//8BAAAAAwAAAAAAAAD//wEAAAD//wAA///////////+/wAAAQABAAIAAAABAAEAAAD//wEAAAD/////AAD+/wIAAwABAAEA/v8BAAEAAAD//wAA//8AAP//AAAAAAEAAAAAAP//AAAAAAEAAQABAAEA/v///wAAAAD//wEAAAACAAAA/f/+/wAA/v///wAA//8AAAEAAQD///7/AAAAAAAAAAABAAAAAAACAAAAAAABAAAAAAABAP//AQD//wAA//8BAP7/AgABAAEAAQAAAAAAAQD//wEA/v8AAP////8AAP///////wIAAQD//wAAAAD//wAA/v///wAAAQD//wIA/////wEAAAAAAAIAAAABAAAAAAD//wEA//8AAAAA/////wAAAQAAAAAAAAD//wEAAQAAAAAAAAACAP///////wAAAgD//wAA/v8AAAIAAAAAAAEAAAABAP//AQABAAEAAQAAAP///v8BAAEAAAAAAP////8AAAAAAQD//wIAAQAAAAEAAAAAAAAA//8BAP//AAAAAP7//v///wEAAAAAAAIAAAAAAP//AAD//wEA//8BAAAAAAABAAEAAAABAP7///8AAAIAAAABAP//AAD//wEAAAAAAP//AAAAAAEAAAAAAAAAAAAAAP7/AQD//wAAAQD+/wEA/v8BAP7/AAABAAEAAAACAAIAAAADAAAA//8AAAEAAAABAP//AQD//wIA/////wEA//8AAAEA//8AAAEAAAAAAAAAAQABAAAAAAAAAAAAAAD//////////wAA//8AAP7/AAD+/wAAAQAAAAAA/////wAABAAAAAAA//8AAAEAAAAAAAAA/v8AAP//AAAAAAAAAAD//wAAAAD///////8BAAEAAAD/////AgABAAEA/v/+/wAAAQACAAEAAAD//wAAAwABAP//AgD+/wAA/v8AAAAAAAAAAAEA//8AAAEAAAD+/wEAAAAAAAEAAgAAAAEAAAABAP//AQD+/wIA/////wAAAQD//wAAAQD+/wAAAQABAAAA////////AAACAAAAAQAAAAIA//8BAP///v///wEA//8BAAEAAQD+/wAAAQD9/wAAAQAAAAEAAAABAAAAAgAAAP//AAD+/wAA/f8AAAAA////////AgAAAAcAAQD7/wEA/f8AAAIA//8GAP7//v/+//b/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+P/F//z/rv/i/7r/6v/Z/wYABwAoADAAKQBOABkATAD0/zQA1P8PANv/0//v/6//FwCi/ywAxP8oAPn//v82APT/WwD4/00A+/8yAPv//f/8/83/+v+w/+T/sf/j/9b/AQACACoAIgAtAEIAHwBPAAEAQADe/xcA0v/k/+X/t/8IAKv/IgC//yEA6/8EACMA9/9PAPf/VAD+/zcA+/8JAPn/1P8AALf/6f+w/+P/zf////j/HAAdAC0APgAfAEsABwBCAOP/IADV/+//2v/B//3/rP8PALv/GADd/xEAFgABAEMABABaAP//QgACABcA+//n/wAAwP/w/67/4v+///3/6f8WABcAKQA0ACIARgAQAEcA8f8pANn/9f/U/87/7f+v/wgAtP8RANP/FgANAAIAOQACAFQA/f9HAAAAIAABAO3//P/E/wEAs//q/7n/9P/i/wYAEQAZADEAJABBABMASAAAADEA3/8CANL/1v/g/7H/AACy/w8Axf8ZAPv/CQAzAAIAVQD//1AAAAAsAAIA9v/7/8r/AwC2//P/tf/m/+H/AwADABEAKQApADoAHgBHAAgAPADr/wkA1//f/93/vP/6/7L/CgDA/x4A7/8hACkAAgBPAPz/UgD1/zIABAAEAPz/0v/5/7f/AACy//H/2f/+/wEAAAAkABUAMwAdADoAEQA9APD/EADU//L/1P/H/+z/tf8LALv/HADk/ygAGgADAEMA//9TAPn/QAAAABAAAQDc//z/wf8DALD/7P/Q//z/9/8HABoAFgA3ACMAMAAOADwA+P8ZANv/+P/Y/9H/5v+8/wUAu/8WANf/HgAMAAoAPQABAFMA/f9HAP7/HwAEAN//+v/H/wMAs//2/8r/8//y/wMADgAQAC4AIwAyABMAJwD8/xcA3v8LANP/5v/f/8j/AgC4/w4A1P8eAAQACgAxAAEAUgD+/0gA/v8nAAIA8f/5/8r/BAC6/+3/wP/l/+b/AQAIABkAIwArAC4AIAAoAAkAGADj/w0A0f/r/9//0P8DAL3/CgDN/xkA//8IACUAAgBJAAAATwD+/ysAAQD7//3/z/8DAMT/+f/K/+L/5P/1////EgAcACYALgApAC4ACwAcAPL/EADZ//L/1f/U//f/uv8KAMX/DwDu/wcAHwADAEUABgBNAAEANQAAAAYAAQDf////xf/+/9P/4f/b//X/9v8LAA4AGAAlACoAMAAQABkA9v8TAOL/+f/W/9r/8f/I/wcAxP8MAOr/BwATAAQAOAAGAEcAAABCAAEADwAEAOP//v/F/wIAzf/o/93/8P/s/w4ACwAZACEAKgAyABMAIQD5/xgA6v8DANb/4P/y/9H/AQDJ/wkA4/8DAAoA/f8wAAQAQwABAEAA//8VAAIA7P/+/8r/BADP/+v/2v/s/+n/CwAIAA0AHAAjADQAHAAkAP//GQDy/wQA5v/i//b/0P/7/8f/AADh/wMAAAD+/yUAAAA7AAEAOAAAABwAAAD6/wAA1/8CAMr/AADb/+3/5f8BAAIACAAVABcALwAfACgA+/8XAPn/DgDe/+//7v/Q/wMAz/8JAOP/CwDx////EAAHADEAAQArAAIAHQAEAAcAAADr/wEAzv8CANj//f/k/wEA+f/+/xQABwAqAB4ALAD+/x4A8P8SAOb/8//f/9j//f/N/wEA3v8LAO7/AgAMAAQALAAEAC0AAQAdAAQADwABAPP/BADV/wMA0/8AAOH/AQD1/wAAEAADACQAGwAwAAQAHwD0/xUA8f/4/+L/2//7/8z/AwDc/woA6f8AAAQAAwAoAAcANAAAACcAAgAUAAEA+P8CANv/AgDR/wEA4v8BAOz/AgAIAPv/JAAVADMAFAAhAPP/GQDz//7/3P/l/+3/z/8BANf/CgDn/wkA/P///xoABwAwAAIAJwACABcAAwABAAIA4f8BAND/AgDd//3/6P8CAAYA/f8YAAwALwAZACUA9v8bAPj/AwDq/+r/7P/S//7/1/8EAOX/CQD6//7/GQAFAC8AAQApAAEAGQACAAMAAgDm/wEAzv8BANv//v/p/wIA//8BABMABQArACAALAABAB4A8f8NAOv/7v/m/9n/+P/R/wMA4f8OAPT/AQATAAMAKwAHACoAAwAbAAMABQADAO7/AQDU/wEA2f8AAOL////3////EgAAACUAGgAvAAUAHQD2/xIA9f/0//T/3P/4/8///f/h/wIA7f8AAAoAAQApAAQALQADACAAAgAPAP//9P///9r//f/T/wAA3f/9//D/AQAQAP//HAAHAC8ACQAfAPv/GAD+//f/+P/j/wEA0v/+/9n/AADq/wIABgD//x0AAQAuAAEAIwAAABQAAwD8/wEA3/8AAM//AADe////7f8BAAwA//8ZAAMALwAAACEA//8dAP3//v/9/+n////U//z/1v8BAOT/AAD+/wAAGwD+/ywA/v8kAAIAGAD///3////q/wEA0P///97/AADk/wAABAAAABUAAQAqAAEAKQAAABwAAAAFAP//6f8AANr////X/wAA4/8AAPj/AgAUAAAAKgD//ywAAAAcAP7/AQAAAOv/AADU/wAA2v8CAOP/AAABAAAAFgABABsAAAAqAAEAHwAAABQAAgDv/wEA3v///9H////f////7/8BAAoAAQApAAAALgD//yEAAQAIAAAA8P8BANr//v/V////4f8AAPf//v8UAAAAFAAAACYAAQAhAP7/GwD+//T/AADo/wIA1v8CANr/AgDp/wEABgAAAB8AAQAsAAEAJAAAAAwA///z/wEA3/8AANT/AADh/wEA9P///xQAAgASAAAAJQAAACEAAAAaAP//+v8BAOj////W////2P8BAOf///8DAAAAHwAAAC4AAAAlAAAAEgAAAPL/AQDm////0f8CAN3/AADr//7/EQD//xAAAQAhAAIAJQAAAB8AAAABAP//6v8CAN//AQDX/wAA4/8AAPr/AAAXAAAAKgABACgAAAAbAP///f8AAOj/AADU/wAA2v///+f/AQANAAMAEQD+/xwA/v8kAP7/IQABAAgA/v/p////5/8AANf/AQDd/wEA8v8BABMAAQAjAAAALgAAACAAAQADAAEA7f8BANn/AgDY//7/4P/+/wEAAAAXAAIAFAAFACUA/P8jAP//EgAAAO//AQDo////1/8AAN3/AADx//7/DgAAAB0AAQAoAAAAIwAAAAoAAQDv/wMA4f8AANn/AQDi/wEA+v///xgAAAAQAP3/IwD//yUA/v8XAAAA7/8AAOv/AADc/wAA3P/+/+v/AQALAAEAGgACACkAAAAkAP7/EAABAO/////q//7/1/8AANz/AgDw/wEAEgD//w8AAAAcAAIAJQAAAB0AAAD2////7P8AAOP/AgDa/wAA5P8BAAQAAQAWAAAAIgAAACMAAAAaAP//+P///+v/AQDZ/wAA2////+7/AAARAAAADgAAABYAAAAhAAAAIAABAPz/AQDt/wAA5P8AANr/AQDg/wEA/P8BABcAAAAhAP//KQD//xwAAAD8/wEA7v8AAN3////Z/wAA6f8BAA0AAAARAAEAEQAAACMAAAAgAAEA/f8CAO3/AADv/wAA3v8BANv////1////EgAAABkA//8nAAAAIgAAAAMAAADu/wAA6P8CANn/AQDg////BQD//xMAAQAOAP//IAABACYAAAAGAAAA6f////H/AADg/wEA2f8AAO3///8PAAAAFQACACQAAAAkAAEADQABAO//AADp/wAA2////9z/AQD7/wEAFgAAAAwAAQAXAP7/JQD9/xMAAADx/wAA8f8AAOr/AADc/wEA4/8BAAkAAAAVAAAAIQD//yYA//8UAAEA9P8BAOz/AADf/wAA3P8AAPP/AAAQAAAADQABAA0AAAAlAAEAGAD///H//v/0/wEA7v8CAN//AADg//3/BAACABUAAQAfAAAAJwABABgAAQD0//7/7f///+L/AADa/wIA8P///w4A//8SAAMACQAAACAAAQAgAP//+v////P////y/wEA4/8BANr/AQD9/wAAEwD//xkAAQAjAAAAIgABAPz////s/wAA6v8BANX/AQDr//7/BwABABMAAAAHAP//FwAAACYAAAD//wEA9P8BAPb/AQDu////2v8BAPn/AAATAP//FwD//yEAAAAjAAAAAgAAAOn/AQDr//7/2P8CAOT/AAABAP//FgABAAUAAQATAP//IwAAAAEAAgDy/wEA9/8AAPb/AADb/wAA6/8BABAAAAATAP7/IQAAACYA//8UAP//7/8AAPD/AADd/wEA3P/+//7///8OAAAACgAAAAgAAAAhAP//CQACAPT/AQD2/wAA9v///97////m/wIADgABABMAAQAfAP//JwAAABMAAADw/wAA8P///+r/AQDb/wAA9f8AAA8AAAARAAIABAD//wYA/v8HAAAAAQD//wMAAgAGAAAA7f8AAOz/AAALAP//DwACABQA//8bAAAAHgD///f/AADq/wEA6/8BANj//v/t/wAACAD+/xAAAgAEAAAABAABAAcAAQADAAAA//8AAAUA///1/wAA5f///wIAAAAOAAAAEAAAABsAAAAhAAAA/v8BAOj////y////3f8AAOf/AQAGAAEADAAAAAcA//8BAP//CQABAAMA//8BAP//BQAAAAAAAADo/wAA+/8AAAoAAAALAAAAFAAAACAAAQAGAAIA7f8BAPH/AADm/wMA3P8CAP7/AgASAP//CgD//wAAAAAIAP//BQD//wEAAAACAP7/BAAAAPz/AwD8////BAAAAAEA//8HAAAAHQAAAAgA/v/x//7/8f///+f/AQDg/////P///woAAAAMAP//AAABAAYA//8EAAAAAgAAAAUAAAACAAAAAwAAAAIAAAABAAAAAQABAAAAAgAcAP//DgD///T/AQDx/wAA9P8CAOH/AAD3/wAACQAAAAoAAQABAP//AwAAAAcAAAD+/wAAAgACAAEAAAD+////AwD+/wAAAAABAP//+v8BABEAAQATAAAA9f/+//L//f/z/wIA6f8AAPb/AQAFAP//DAAAAAAAAAAFAP//BQD//wEA//8DAAEAAQAAAP7///8AAAAA//8BAAIAAAD+/wAAEAABABYAAgD6/wEA8v8BAPX/AwDp/wAA8////wMA//8JAAEABAABAAEA//8FAAEA//8AAAMAAQACAP//AQAAAAEAAgAFAP//AQABAAAAAQAAAP//EQABAAAAAAD5/wEA+P8AAPr////6/wAA+/8BAAIA//8BAAAA//8CAAUA//8BAP7/AAABAAEAAgAAAAAAAwAAAAEA/v8DAAIAAAACAAQA//8TAAAA/P8BAPr////3//////8AAPz/AQD7/wEAAgD/////AAABAAEABAAAAP//////////AAAAAAAAAAADAAAAAwAAAAAA//8EAP///v/+/xAA//8HAAAA+/////j/AQD8////AAD///n///8AAAAA//8AAP////8DAP//AgAAAAAAAAACAAIAAAD+/wAAAQD//wAA/////wIAAgD9////CQACAAYA///9////+f8BAPr/AQAAAAIA/v///wAA//8AAAAAAAAAAAEAAAABAAAAAgAAAAEAAAAAAAEAAQABAAAAAgABAP//AAD//wEAAAD///////8BAAIAAQAAAAAA/v/+//////8BAAAAAQABAP//AAD///////8BAAAAAQABAP////8CAAEAAQD//wEA/v//////AQAAAAAAAAAAAAAAAAD9/wMA/////wAAAQD+/wEA/v/+//7/AQD//wMAAAAAAAAAAAABAAEA//////7/AAACAP3/AAD//wAAAQAAAP//AQD//wAAAAAAAAEA//8CAP//AAAAAAAA/v8AAAAA//8BAP//AAABAP//AAAAAP//AQD//wAAAQABAAAAAAABAAEA/v///wAAAAD//////////wAAAAAAAP//AAD////////8/wIAAAADAAEA/////wEA/v8BAP7/AgAAAAEAAgAAAP//AgD/////AQD//wEA//////7/AQD//wMAAAAAAAAA//8CAP//AQAAAP//AAACAAAAAAABAP//AQD+/wAA/////wAA/f///wAAAAAAAP7/AAAAAAAAAgD//wEAAQACAP//AAAAAAEAAQD//wAAAAAAAAAA//8BAAMA/v8AAP7/AQAAAAAAAQAAAAAA///+//7/AAAAAAAA//8BAP7/AQAAAP//AQABAAAAAQAAAP//AAD//wIA/v///wAAAQABAP//AAD//wEA//8BAP//AgAAAP///////wAAAQABAP//AwABAAAAAAAAAAAA/////wIAAwACAAAA/v8BAAAAAAAAAAAA//8AAP////8AAAAA/////wAA/////wEA/v8CAAEAAQD//wAAAAABAAAAAAD//wEAAQABAAAA//8CAAAAAAAAAP7/AAABAAAAAQABAAAAAgABAAAAAQD//wEAAwD+/wAA/v8AAAEAAAAAAAAAAAAAAAEAAAD//wMA/v///wAAAAACAAEAAAAAAP7///8DAAEAAQD//wEA/f8BAAEAAQD//wEAAQABAAMAAgAAAAEA//8AAP//BAAAAAIA/v//////AQABAAAAAAD//wEAAAACAAIAAQAAAAAAAgAAAAAAAAABAAIAAAABAAIAAQAAAP////8AAAAAAAD//wAAAQACAP//AAAAAAAAAQAAAAEA//8AAAAAAAD/////AQD//wAAAQD9////AQAAAAAA//8BAAAA///+/////v8BAAAAAQAAAAAAAAAAAAIA//8BAAAAAAACAP//AQD//wAAAAD/////AAD9/wAAAAACAAAAAgAAAAEAAQABAAEAAAAAAAEA//8AAAEAAQACAAAAAQAAAAEA//8BAAIAAAACAP//AAABAAAAAAAAAAAAAAD//wAAAQD/////AAAAAP////8AAAEAAAAAAP7///8BAAIAAQD//wEAAQAAAP//AgAAAAAAAAD//wAA//8CAP7/AQAAAP7/AAD+////AAAAAAAAAQABAAAA//8AAAEAAAABAP7/AAAAAP7/AAD+/wAAAQABAAEA/////////v8BAP///v///wIAAAAAAAAAAQAAAAIAAQAAAAAAAAABAAEAAAAAAAAAAAD//wEAAQD//wAAAQABAAAA/v/+/////////wAAAAD//wAAAAD/////AAAAAP7/AAD//wIA//8CAP//AQAAAP////8AAAAAAQABAP////8AAP//AQACAAAAAQAAAAAAAAAAAAAA//8BAAAAAAD+/wAA/v///wEAAAD+//7///8CAP7/AAABAP3/AwAAAAAAAAABAAIAAAABAAAAAQABAAIAAAAAAP//AAAAAAEAAAACAAEAAAACAAAAAAABAAAAAwAAAAAAAAD+/wAAAQD9//////8BAAAA/v8AAAAAAAAAAAAAAAD//wMA/v8BAAEAAQACAAAA/v8BAP//AwABAAIAAQABAP//AQAAAAEAAAAAAAEA//8AAAAAAAD/////AAABAAEAAAAAAP////8AAAAAAAAAAAAA/v8AAP//AQAAAP//AAABAAIAAQAAAAAAAgABAAAA/////wAAAQABAP//AQABAAEA/////wAAAAAAAAAAAAABAAEAAQAAAAAAAAAAAAAA//8AAP7/AQD9/wAAAgD//wEAAQABAAEA/v8AAAEA/////wAAAAAAAP//AAABAAAAAAAAAAAA//8CAP//AAABAAEAAQABAAAA//8BAAIAAgD//wAA/v8AAAEAAAD///7/AAAAAAEAAAABAAAAAQABAAAAAQACAAAA///+/wAAAQABAP7////+/wAA//8AAAAAAgAAAP//AQD9/wAAAAD//wAA//8AAAAAAQAAAAAAAQD//wAAAAAAAP//AQABAAAA/v8CAP//AAD///////8AAAAAAAACAAEA//8BAP7/AAAAAAEA//8BAAAAAQD//wAAAQD+/wAA/////wAAAAD//wAAAQABAAAA//8AAAEA/////wAA//8AAAAA/v/+/wEAAgABAP//AgD//wIA/////wAA//8AAAEAAQAAAAAAAQAAAAMAAAACAP//", showCount: !0 }, audio: { disabled: !0, defaultToggledOn: !1, language: "en-US", voiceNames: ["Microsoft David - English (United States)", "Alex (English - United States)"], rate: 1, volume: 1, icon: xo, iconDisabled: Io }, chatHistory: { disabled: !1, maxEntries: 30, storageKey: "rcb-history", storageType: "LOCAL_STORAGE", viewChatHistoryButtonText: "Load Chat History ⟳", chatHistoryLineBreakText: "----- Previous Chat History -----", autoLoad: !1 }, chatInput: { disabled: !1, allowNewline: !1, enabledPlaceholderText: "Type your message...", disabledPlaceholderText: "", showCharacterCount: !1, characterLimit: -1, botDelay: 1e3, sendButtonIcon: Do, blockSpam: !0, sendOptionOutput: !0, sendCheckboxOutput: !0, buttons: [$.VOICE_MESSAGE_BUTTON, $.SEND_MESSAGE_BUTTON] }, chatWindow: { showScrollbar: !1, showTypingIndicator: !0, autoJumpToBottom: !1, showMessagePrompt: !0, messagePromptText: "New Messages ↓", messagePromptOffset: 30, defaultOpen: !1 }, sensitiveInput: { maskInTextArea: !0, maskInUserBubble: !0, asterisksCount: 10, hideInUserBubble: !1 }, userBubble: { animate: !0, showAvatar: !1, avatar: "data:image/svg+xml,%3csvg%20width='140'%20height='140'%20xmlns='http://www.w3.org/2000/svg'%3e%3ccircle%20cy='60.044'%20cx='70'%20fill='%235c5c5c'%20r='29'/%3e%3cpath%20d='m16.36%20156.186-.01-30.5c-.005-16.844%2024.168-30.507%2053.991-30.516%2029.823-.009%2054.004%2013.64%2054.01%2030.484l.008%2030.5-108%20.032z'%20fill='%235c5c5c'/%3e%3c/svg%3e", simulateStream: !1, streamSpeed: 30 }, botBubble: { animate: !0, showAvatar: !1, avatar: Me, simulateStream: !1, streamSpeed: 30 }, voice: { disabled: !0, defaultToggledOn: !1, language: "en-US", timeoutPeriod: 1e4, autoSendDisabled: !1, autoSendPeriod: 1e3, sendAsAudio: !1, icon: Co, iconDisabled: Qo }, footer: { text: c("div", { style: { cursor: "pointer", display: "flex", flexDirection: "row", alignItems: "center", columnGap: 3 }, onClick: () => window.open("https://react-chatbotify.com"), children: [c("span", { children: "Powered By " }, 0), c("div", { style: { borderRadius: "50%", width: 14, height: 14, display: "flex", justifyContent: "center", alignItems: "center", background: "linear-gradient(to right, #42b0c5, #491d8d)" }, children: c(Oe, { style: { width: "80%", height: "80%", fill: "#fff" } }) }, 1), c("span", { style: { fontWeight: "bold" }, children: " React ChatBotify" }, 2)] }), buttons: [$.FILE_ATTACHMENT_BUTTON, $.EMOJI_PICKER_BUTTON] }, fileAttachment: { disabled: !1, multiple: !0, accept: ".png", icon: He, iconDisabled: He, sendFileName: !0, showMediaDisplay: !1 }, emoji: { disabled: !1, icon: Le, iconDisabled: Le, list: ["😀", "😃", "😄", "😅", "😊", "😌", "😇", "🙃", "🤣", "😍", "🥰", "🥳", "🎉", "🎈", "🚀", "⭐️"] }, toast: { maxCount: 3, forbidOnMax: !1, dismissOnClick: !0 }, event: { rcbPreInjectMessage: !1, rcbPostInjectMessage: !1, rcbStartSimulateStreamMessage: !1, rcbStopSimulateStreamMessage: !1, rcbStartStreamMessage: !1, rcbChunkStreamMessage: !1, rcbStopStreamMessage: !1, rcbRemoveMessage: !1, rcbLoadChatHistory: !1, rcbToggleChatWindow: !1, rcbStartSpeakAudio: !1, rcbToggleAudio: !1, rcbToggleNotifications: !1, rcbToggleVoice: !1, rcbChangePath: !1, rcbShowToast: !1, rcbDismissToast: !1, rcbUserSubmitText: !1, rcbUserUploadFile: !1, rcbTextAreaChangeValue: !1, rcbPreLoadChatBot: !1, rcbPostLoadChatBot: !1, rcbPreProcessBlock: !1, rcbPostProcessBlock: !1 }, ariaLabel: { chatButton: "open chat", audioButton: "toggle audio", closeChatButton: "close chat", emojiButton: "emoji picker", fileAttachmentButton: "upload file", notificationButton: "toggle notifications", sendButton: "send message", voiceButton: "toggle voice", inputTextArea: "input text area" }, device: { desktopEnabled: !0, mobileEnabled: !0, applyMobileOptimizations: !0 } }, it = bA({ settings: {}, setSettings: () => null }), N = () => pA(it), So = ({ children: A, settings: e = at, setSettings: t }) => c(it.Provider, { value: { settings: e, setSettings: t }, children: A }), st = { tooltipStyle: {}, notificationBadgeStyle: {}, chatWindowStyle: {}, headerStyle: {}, bodyStyle: {}, chatInputContainerStyle: {}, chatInputAreaStyle: {}, chatInputAreaFocusedStyle: {}, chatInputAreaDisabledStyle: {}, userBubbleStyle: {}, botBubbleStyle: {}, botOptionStyle: {}, botOptionHoveredStyle: {}, botCheckboxRowStyle: {}, botCheckboxNextStyle: {}, botCheckMarkStyle: {}, botCheckMarkSelectedStyle: {}, characterLimitStyle: {}, characterLimitReachedStyle: {}, chatHistoryLineBreakStyle: {}, chatMessagePromptStyle: {}, chatMessagePromptHoveredStyle: {}, footerStyle: {}, loadingSpinnerStyle: {}, mediaDisplayContainerStyle: {}, chatButtonStyle: {}, chatHistoryButtonStyle: {}, chatHistoryButtonHoveredStyle: {}, sendButtonStyle: {}, sendButtonHoveredStyle: {}, sendButtonDisabledStyle: {}, audioButtonStyle: {}, audioButtonDisabledStyle: {}, closeChatButtonStyle: {}, emojiButtonStyle: {}, emojiButtonDisabledStyle: {}, fileAttachmentButtonStyle: {}, fileAttachmentButtonDisabledStyle: {}, notificationButtonStyle: {}, notificationButtonDisabledStyle: {}, voiceButtonStyle: {}, voiceButtonDisabledStyle: {}, chatIconStyle: {}, audioIconStyle: {}, audioIconDisabledStyle: {}, closeChatIconStyle: {}, emojiIconStyle: {}, emojiIconDisabledStyle: {}, fileAttachmentIconStyle: {}, fileAttachmentIconDisabledStyle: {}, notificationIconStyle: {}, notificationIconDisabledStyle: {}, voiceIconStyle: {}, voiceIconDisabledStyle: {}, sendIconStyle: {}, sendIconDisabledStyle: {}, sendIconHoveredStyle: {}, rcbTypingIndicatorContainerStyle: {}, rcbTypingIndicatorDotStyle: {}, toastPromptContainerStyle: {}, toastPromptStyle: {}, toastPromptHoveredStyle: {} }, lt = bA({ styles: {}, setStyles: () => null }), K = () => pA(lt), To = ({ children: A, styles: e = st, setStyles: t }) => c(lt.Provider, { value: { styles: e, setStyles: t }, children: A }), ko = ({ buttons: A }) => {
|
|
522
|
+
var e, t, o, n, r;
|
|
523
|
+
const { settings: a } = N(), { styles: s } = K(), i = { backgroundImage: `linear-gradient(to right, ${(e = a.general) == null ? void 0 : e.secondaryColor},
|
|
524
|
+
${(t = a.general) == null ? void 0 : t.primaryColor})`, ...s.headerStyle };
|
|
525
|
+
return c("div", { style: i, className: "rcb-chat-header-container", children: [c("div", { className: "rcb-chat-header", children: [((o = a.header) == null ? void 0 : o.showAvatar) && c("div", { style: { backgroundImage: `url("${(n = a.header) == null ? void 0 : n.avatar}")` }, className: "rcb-bot-avatar" }), (r = a.header) == null ? void 0 : r.title] }), c("div", { className: "rcb-chat-header", children: A == null ? void 0 : A.map((l, u) => c(q, { children: l }, u)) })] });
|
|
526
|
+
}, ct = bA({}), oA = () => pA(ct), Mo = ({ children: A, botIdRef: e, flowRef: t }) => {
|
|
527
|
+
const o = J(null), n = J(""), r = J(null), a = J(/* @__PURE__ */ new Map()), s = J(null), i = J(""), l = J(!1), u = J(null), d = J(null), w = J(null);
|
|
528
|
+
return c(ct.Provider, { value: { botIdRef: e, flowRef: t, inputRef: o, timeoutIdRef: r, streamMessageMap: a, chatBodyRef: s, paramsInputRef: i, keepVoiceOnRef: l, audioContextRef: u, audioBufferRef: d, gainNodeRef: w, prevInputRef: n }, children: A });
|
|
529
|
+
}, dA = (A) => {
|
|
530
|
+
const [e, t] = U(A), o = J(A);
|
|
531
|
+
return [e, (n) => {
|
|
532
|
+
const r = typeof n == "function" ? n(o.current) : n;
|
|
533
|
+
o.current = r, t(r);
|
|
534
|
+
}, o];
|
|
535
|
+
}, dt = bA({}), tA = () => pA(dt), Oo = ({ children: A, settings: e }) => {
|
|
536
|
+
var t, o, n, r, a, s;
|
|
537
|
+
const [i, l, u] = dA(!1), [d, w, p] = dA(((t = e == null ? void 0 : e.chatWindow) == null ? void 0 : t.defaultOpen) ?? !1), [f, b, E] = dA(((o = e == null ? void 0 : e.audio) == null ? void 0 : o.defaultToggledOn) ?? !1), [y, m, B] = dA(((n = e == null ? void 0 : e.voice) == null ? void 0 : n.defaultToggledOn) ?? !1), [h, g, v] = dA(((r = e == null ? void 0 : e.notification) == null ? void 0 : r.defaultToggledOn) ?? !0), [P, D] = U(!1), [_, O] = U(!1), [Q, x, I] = dA(!1), [k, L, S] = dA(!0), [C, F, H] = dA(!1), [z, R] = U(!1), [X, AA] = U(!1), [G, Z] = U(0), [fA, sA] = U(0), [TA, aA] = U(!1), [hA, KA] = U(((a = window.visualViewport) == null ? void 0 : a.height) ?? window.innerHeight), [VA, JA] = U(((s = window.visualViewport) == null ? void 0 : s.width) ?? window.innerWidth);
|
|
538
|
+
return c(dt.Provider, { value: { isBotTyping: i, setSyncedIsBotTyping: l, syncedIsBotTypingRef: u, isChatWindowOpen: d, setSyncedIsChatWindowOpen: w, syncedIsChatWindowOpenRef: p, audioToggledOn: f, setSyncedAudioToggledOn: b, syncedAudioToggledOnRef: E, voiceToggledOn: y, setSyncedVoiceToggledOn: m, syncedVoiceToggledOnRef: B, notificationsToggledOn: h, setSyncedNotificationsToggledOn: g, syncedNotificationsToggledOnRef: v, isLoadingChatHistory: P, setIsLoadingChatHistory: D, hasChatHistoryLoaded: _, setHasChatHistoryLoaded: O, isScrolling: Q, setSyncedIsScrolling: x, syncedIsScrollingRef: I, textAreaDisabled: k, setSyncedTextAreaDisabled: L, syncedTextAreaDisabledRef: S, textAreaSensitiveMode: C, setSyncedTextAreaSensitiveMode: F, syncedTextAreaSensitiveModeRef: H, hasInteractedPage: z, setHasInteractedPage: R, hasFlowStarted: X, setHasFlowStarted: AA, unreadCount: G, setUnreadCount: Z, inputLength: fA, setInputLength: sA, blockAllowsAttachment: TA, setBlockAllowsAttachment: aA, viewportHeight: hA, setViewportHeight: KA, viewportWidth: VA, setViewportWidth: JA }, children: A });
|
|
539
|
+
};
|
|
540
|
+
var T = ((A) => (A.START_SPEAK_AUDIO = "rcb-start-speak-audio", A.TOGGLE_AUDIO = "rcb-toggle-audio", A.TOGGLE_NOTIFICATIONS = "rcb-toggle-notifications", A.TOGGLE_VOICE = "rcb-toggle-voice", A.TOGGLE_CHAT_WINDOW = "rcb-toggle-chat-window", A.PRE_INJECT_MESSAGE = "rcb-pre-inject-message", A.POST_INJECT_MESSAGE = "rcb-post-inject-message", A.START_SIMULATE_STREAM_MESSAGE = "rcb-start-simulate-stream-message", A.STOP_SIMULATE_STREAM_MESSAGE = "rcb-stop-simulate-stream-message", A.START_STREAM_MESSAGE = "rcb-start-stream-message", A.CHUNK_STREAM_MESSAGE = "rcb-chunk-stream-message", A.STOP_STREAM_MESSAGE = "rcb-stop-stream-message", A.REMOVE_MESSAGE = "rcb-remove-message", A.LOAD_CHAT_HISTORY = "rcb-load-chat-history", A.CHANGE_PATH = "rcb-change-path", A.SHOW_TOAST = "rcb-show-toast", A.DISMISS_TOAST = "rcb-dismiss-toast", A.USER_SUBMIT_TEXT = "rcb-user-submit-text", A.USER_UPLOAD_FILE = "rcb-user-upload-file", A.TEXT_AREA_CHANGE_VALUE = "rcb-text-area-change-value", A.PRE_LOAD_CHATBOT = "rcb-pre-load-chatbot", A.POST_LOAD_CHATBOT = "rcb-post-load-chatbot", A.PRE_PROCESS_BLOCK = "rcb-pre-process-block", A.POST_PROCESS_BLOCK = "rcb-post-process-block", A))(T || {});
|
|
541
|
+
const Ho = { [T.START_SPEAK_AUDIO]: !0, [T.TOGGLE_AUDIO]: !0, [T.TOGGLE_VOICE]: !0, [T.TOGGLE_NOTIFICATIONS]: !0, [T.TOGGLE_CHAT_WINDOW]: !0, [T.PRE_INJECT_MESSAGE]: !0, [T.POST_INJECT_MESSAGE]: !1, [T.PRE_LOAD_CHATBOT]: !0, [T.POST_LOAD_CHATBOT]: !1, [T.START_SIMULATE_STREAM_MESSAGE]: !0, [T.STOP_SIMULATE_STREAM_MESSAGE]: !1, [T.START_STREAM_MESSAGE]: !0, [T.CHUNK_STREAM_MESSAGE]: !0, [T.STOP_STREAM_MESSAGE]: !0, [T.REMOVE_MESSAGE]: !0, [T.LOAD_CHAT_HISTORY]: !0, [T.CHANGE_PATH]: !0, [T.SHOW_TOAST]: !0, [T.DISMISS_TOAST]: !0, [T.USER_SUBMIT_TEXT]: !0, [T.USER_UPLOAD_FILE]: !0, [T.TEXT_AREA_CHANGE_VALUE]: !0, [T.PRE_PROCESS_BLOCK]: !0, [T.POST_PROCESS_BLOCK]: !0 }, se = async (A, e, t) => {
|
|
542
|
+
const o = new CustomEvent(A, { detail: e, cancelable: Ho[A] });
|
|
543
|
+
return o.data = t, o.promises = [], window.dispatchEvent(o), await Promise.all(o.promises), o;
|
|
544
|
+
}, ut = bA({ paths: [], setSyncedPaths: () => {
|
|
545
|
+
}, syncedPathsRef: { current: [] } }), LA = () => pA(ut), Lo = ({ children: A }) => {
|
|
546
|
+
const [e, t, o] = dA([]);
|
|
547
|
+
return c(ut.Provider, { value: { paths: e, setSyncedPaths: t, syncedPathsRef: o }, children: A });
|
|
548
|
+
}, uA = () => {
|
|
549
|
+
const { botIdRef: A } = oA(), { syncedPathsRef: e } = LA(), t = M(() => e.current.length > 0 ? e.current.at(-1) ?? null : null, []), o = M(() => e.current.length > 1 ? e.current.at(-2) ?? null : null, []);
|
|
550
|
+
return { dispatchRcbEvent: M(async (n, r) => {
|
|
551
|
+
const a = { botId: A.current, currPath: t(), prevPath: o() };
|
|
552
|
+
return await se(n, a, r);
|
|
553
|
+
}, [A]) };
|
|
554
|
+
}, cA = () => {
|
|
555
|
+
const { settings: A } = N(), { isChatWindowOpen: e, setSyncedIsChatWindowOpen: t, viewportHeight: o, setViewportHeight: n, viewportWidth: r, setViewportWidth: a, setUnreadCount: s, setSyncedIsBotTyping: i, setSyncedIsScrolling: l, syncedIsBotTypingRef: u, syncedIsChatWindowOpenRef: d } = tA(), { chatBodyRef: w } = oA(), { dispatchRcbEvent: p } = uA(), f = M(async (m) => {
|
|
556
|
+
var B;
|
|
557
|
+
m !== d.current && ((B = A.event) != null && B.rcbToggleChatWindow && (await p(T.TOGGLE_CHAT_WINDOW, { currState: d.current, newState: !d.current })).defaultPrevented || t((h) => (h || s(0), !h)));
|
|
558
|
+
}, [d]), b = M(async (m) => {
|
|
559
|
+
m !== u.current && i((B) => !B);
|
|
560
|
+
}, [u]), E = M((m, B, h, g) => (m /= g / 2) < 1 ? h / 2 * m * m + B : -h / 2 * (--m * (m - 2) - 1) + B, []), y = M((m = 0) => {
|
|
561
|
+
if (!w.current) return;
|
|
562
|
+
const B = w.current.scrollHeight - w.current.clientHeight;
|
|
563
|
+
if (m <= 0) return w.current.scrollTop = B, void l(!1);
|
|
564
|
+
const h = w.current.scrollTop, g = B - h;
|
|
565
|
+
let v = 0;
|
|
566
|
+
const P = () => {
|
|
567
|
+
if (!w.current) return;
|
|
568
|
+
v += 20;
|
|
569
|
+
const D = E(v, h, g, m);
|
|
570
|
+
w.current.scrollTop = D, v < m ? requestAnimationFrame(P) : l(!1);
|
|
571
|
+
};
|
|
572
|
+
P();
|
|
573
|
+
}, [w]);
|
|
574
|
+
return { isChatWindowOpen: e, setSyncedIsChatWindowOpen: t, toggleChatWindow: f, viewportHeight: o, setViewportHeight: n, viewportWidth: r, setViewportWidth: a, toggleIsBotTyping: b, scrollToBottom: y };
|
|
575
|
+
}, _o = () => {
|
|
576
|
+
var A, e, t;
|
|
577
|
+
const { settings: o } = N(), { styles: n } = K(), { unreadCount: r, isScrolling: a } = tA(), { chatBodyRef: s } = oA(), { scrollToBottom: i } = cA(), [l, u] = U(!1), d = { color: (A = o.general) == null ? void 0 : A.primaryColor, borderColor: (e = o.general) == null ? void 0 : e.primaryColor, ...n.chatMessagePromptHoveredStyle };
|
|
578
|
+
return c("div", { className: "rcb-message-prompt-container " + (s.current && ((w = o.chatWindow) != null && w.showMessagePrompt) && a && r > 0 ? "visible" : "hidden"), children: c("div", { onMouseEnter: () => {
|
|
579
|
+
u(!0);
|
|
580
|
+
}, onMouseLeave: () => {
|
|
581
|
+
u(!1);
|
|
582
|
+
}, style: l ? d : { ...n.chatMessagePromptStyle }, onMouseDown: (p) => {
|
|
583
|
+
p.preventDefault(), i(600);
|
|
584
|
+
}, className: "rcb-message-prompt-text", children: (t = o.chatWindow) == null ? void 0 : t.messagePromptText }) });
|
|
585
|
+
var w;
|
|
586
|
+
}, ft = bA({ messages: [], setSyncedMessages: () => {
|
|
587
|
+
}, syncedMessagesRef: { current: [] } }), ue = () => pA(ft), No = ({ children: A }) => {
|
|
588
|
+
const [e, t, o] = dA([]);
|
|
589
|
+
return c(ft.Provider, { value: { messages: e, setSyncedMessages: t, syncedMessagesRef: o }, children: A });
|
|
590
|
+
}, Ro = ({ message: A, isNewSender: e }) => {
|
|
591
|
+
var t, o, n, r, a, s;
|
|
592
|
+
const { settings: i } = N(), { styles: l } = K(), u = typeof A.content == "string", d = A.content, w = A.contentWrapper ? c(A.contentWrapper, { children: d }) : d, p = { backgroundColor: (t = i.general) == null ? void 0 : t.primaryColor, color: "#fff", maxWidth: (o = i.userBubble) != null && o.showAvatar ? "65%" : "70%", ...l.userBubbleStyle }, f = (n = i.userBubble) != null && n.animate ? "rcb-user-message-entry" : "", b = ((r = i.userBubble) == null ? void 0 : r.showAvatar) && e, E = "rcb-user-message" + (!e && (a = i.userBubble) != null && a.showAvatar ? " rcb-user-message-offset" : "");
|
|
593
|
+
return c("div", { className: "rcb-user-message-container", children: [u ? c("div", { style: p, className: `${E} ${f}`, children: w }) : c(q, { children: w }), b && c("div", { style: { backgroundImage: `url("${(s = i.userBubble) == null ? void 0 : s.avatar}")` }, className: "rcb-message-user-avatar" })] });
|
|
594
|
+
}, Uo = ({ message: A, isNewSender: e }) => {
|
|
595
|
+
var t, o, n, r, a, s;
|
|
596
|
+
const { settings: i } = N(), { styles: l } = K(), u = typeof A.content == "string", d = A.content, w = A.contentWrapper ? c(A.contentWrapper, { children: d }) : d, p = { backgroundColor: (t = i.general) == null ? void 0 : t.secondaryColor, color: "#fff", maxWidth: (o = i.botBubble) != null && o.showAvatar ? "65%" : "70%", ...l.botBubbleStyle }, f = (n = i.botBubble) != null && n.animate ? "rcb-bot-message-entry" : "", b = ((r = i.botBubble) == null ? void 0 : r.showAvatar) && e, E = "rcb-bot-message" + (!e && (a = i.botBubble) != null && a.showAvatar ? " rcb-bot-message-offset" : "");
|
|
597
|
+
return c("div", { className: "rcb-bot-message-container", children: [b && c("div", { style: { backgroundImage: `url("${(s = i.botBubble) == null ? void 0 : s.avatar}")` }, className: "rcb-message-bot-avatar" }), u ? c("div", { style: p, className: `${E} ${f}`, children: w }) : c(q, { children: w })] });
|
|
598
|
+
}, jo = () => {
|
|
599
|
+
var A, e, t;
|
|
600
|
+
const { settings: o } = N(), { styles: n } = K(), r = (A = o.botBubble) != null && A.animate ? "rcb-bot-message-entry" : "";
|
|
601
|
+
return c("div", { className: "rcb-bot-message-container", children: [((e = o.botBubble) == null ? void 0 : e.showAvatar) && c("div", { style: { backgroundImage: `url("${(t = o.botBubble) == null ? void 0 : t.avatar}")` }, className: "rcb-message-bot-avatar" }), c("div", { onMouseDown: (a) => {
|
|
602
|
+
a.preventDefault();
|
|
603
|
+
}, className: `rcb-bot-message ${r}`, children: c("div", { className: "rcb-typing-indicator", style: { ...n == null ? void 0 : n.rcbTypingIndicatorContainerStyle }, children: [c("span", { className: "rcb-dot", style: { ...n == null ? void 0 : n.rcbTypingIndicatorDotStyle } }), c("span", { className: "rcb-dot", style: { ...n == null ? void 0 : n.rcbTypingIndicatorDotStyle } }), c("span", { className: "rcb-dot", style: { ...n == null ? void 0 : n.rcbTypingIndicatorDotStyle } })] }) })] });
|
|
604
|
+
}, Fo = () => {
|
|
605
|
+
var A, e, t;
|
|
606
|
+
const { settings: o } = N(), { styles: n } = K(), { messages: r } = ue(), { scrollToBottom: a } = cA(), { isBotTyping: s, syncedIsScrollingRef: i } = tA(), { chatBodyRef: l } = oA(), u = { ...n == null ? void 0 : n.bodyStyle, scrollbarWidth: (A = o.chatWindow) != null && A.showScrollbar ? "auto" : "none" };
|
|
607
|
+
return Y(() => {
|
|
608
|
+
i.current || a();
|
|
609
|
+
}, [(e = l.current) == null ? void 0 : e.scrollHeight]), c("div", { style: u, className: "rcb-chat-body-container", ref: l, children: [r.map((d, w) => {
|
|
610
|
+
const p = ((f) => f === 0 || r[f].sender !== r[f - 1].sender)(w);
|
|
611
|
+
return d.sender.toUpperCase() === "USER" ? c(Ro, { message: d, isNewSender: p }, w) : d.sender.toUpperCase() === "BOT" ? c(Uo, { message: d, isNewSender: p }, w) : c("div", { children: d.content }, w);
|
|
612
|
+
}), s && ((t = o.chatWindow) == null ? void 0 : t.showTypingIndicator) && c(jo, {}), c(_o, {})] });
|
|
613
|
+
}, zo = ({ checkboxes: A, checkedItems: e, path: t }) => {
|
|
614
|
+
var o, n, r, a, s, i, l, u, d, w, p;
|
|
615
|
+
const { settings: f } = N(), { styles: b } = K(), { paths: E } = LA(), { handleSubmitText: y } = SA(), [m, B] = U(/* @__PURE__ */ new Set()), [h, g] = U(!1), v = { cursor: h ? `url("${(o = f.general) == null ? void 0 : o.actionDisabledIcon}"), auto` : "pointer", color: (n = f.general) == null ? void 0 : n.primaryColor, borderColor: (r = f.general) == null ? void 0 : r.primaryColor, ...b.botCheckboxRowStyle }, P = { cursor: h || m.size < A.min ? `url("${(a = f.general) == null ? void 0 : a.actionDisabledIcon}"), auto` : "pointer", color: (s = f.general) == null ? void 0 : s.primaryColor, borderColor: (i = f.general) == null ? void 0 : i.primaryColor, ...b.botCheckboxNextStyle }, D = { cursor: h ? `url("${(l = f.general) == null ? void 0 : l.actionDisabledIcon}"), auto` : "pointer", color: "transparent", ...b.botCheckMarkStyle }, _ = { cursor: h ? `url("${(u = f.general) == null ? void 0 : u.actionDisabledIcon}"), auto` : "pointer", color: "#fff", borderColor: (d = f.general) == null ? void 0 : d.primaryColor, backgroundColor: (w = f.general) == null ? void 0 : w.primaryColor, ...b.botCheckMarkSelectedStyle };
|
|
616
|
+
return Y(() => {
|
|
617
|
+
E.length > 0 && E[E.length - 1] !== t && g(!A.reusable);
|
|
618
|
+
}, [E]), c("div", { className: "rcb-checkbox-container " + ((p = f.botBubble) != null && p.showAvatar ? "rcb-checkbox-offset" : ""), children: [A.items.map((O) => c("div", { onMouseDown: (Q) => {
|
|
619
|
+
Q.preventDefault(), ((x) => {
|
|
620
|
+
h || B((I) => {
|
|
621
|
+
const k = new Set(I);
|
|
622
|
+
if (k.has(x)) e.delete(x), k.delete(x);
|
|
623
|
+
else {
|
|
624
|
+
if (m.size == A.max) return I;
|
|
625
|
+
e.add(x), k.add(x);
|
|
626
|
+
}
|
|
627
|
+
return k;
|
|
628
|
+
});
|
|
629
|
+
})(O);
|
|
630
|
+
}, style: v, className: "rcb-checkbox-row-container", children: c("div", { className: "rcb-checkbox-row", children: [c("div", { style: m.has(O) ? _ : D, className: "rcb-checkbox-mark" }), c("div", { className: "rcb-checkbox-label", children: O })] }) }, O)), c("div", { style: P, className: "rcb-checkbox-next-button", onMouseDown: (O) => {
|
|
631
|
+
var Q;
|
|
632
|
+
if (O.preventDefault(), h || m.size < A.min) return;
|
|
633
|
+
const x = Array.from(e).join(", ");
|
|
634
|
+
let I;
|
|
635
|
+
g(!A.reusable), I = A.sendOutput != null ? A.sendOutput : ((Q = f.chatInput) == null ? void 0 : Q.sendCheckboxOutput) ?? !0, y(x, I);
|
|
636
|
+
} })] });
|
|
637
|
+
}, Go = async (A, e) => {
|
|
638
|
+
const t = A.checkboxes;
|
|
639
|
+
if (!t) return;
|
|
640
|
+
let o;
|
|
641
|
+
if (typeof t == "function" ? (o = t(e), o instanceof Promise && (o = await o)) : o = t, Array.isArray(o) && (o = { items: o }), !("items" in o) || o.items.length == 0) return;
|
|
642
|
+
o.min == null && (o.min = 1), o.max == null && (o.max = o.items.length), o.min > o.max && (o.min = o.max), o.reusable == null && (o.reusable = !1);
|
|
643
|
+
const n = /* @__PURE__ */ new Set(), r = e.currPath, a = c(zo, { checkboxes: o, checkedItems: n, path: r });
|
|
644
|
+
await e.injectMessage(a);
|
|
645
|
+
}, Yo = async (A, e) => {
|
|
646
|
+
const t = A.function;
|
|
647
|
+
if (!t) return;
|
|
648
|
+
const o = t(e);
|
|
649
|
+
return o instanceof Promise ? await o : o;
|
|
650
|
+
}, Wo = async (A, e, t) => {
|
|
651
|
+
const o = A.message;
|
|
652
|
+
if (!o) return;
|
|
653
|
+
if (typeof o == "string") return void (o.trim() !== "" && (t ? await e.simulateStreamMessage(o) : await e.injectMessage(o)));
|
|
654
|
+
let n = o(e);
|
|
655
|
+
n instanceof Promise && (n = await n), typeof n == "string" && n.trim() !== "" && (t ? await e.simulateStreamMessage(n) : await e.injectMessage(n));
|
|
656
|
+
}, Xo = ({ options: A, path: e }) => {
|
|
657
|
+
var t, o, n, r, a, s;
|
|
658
|
+
const { settings: i } = N(), { styles: l } = K(), { paths: u } = LA(), { handleSubmitText: d } = SA(), [w, p] = U([]), [f, b] = U(!1), E = { cursor: f ? `url("${(t = i.general) == null ? void 0 : t.actionDisabledIcon}"), auto` : "pointer", color: (o = i.general) == null ? void 0 : o.primaryColor, borderColor: (n = i.general) == null ? void 0 : n.primaryColor, backgroundColor: "#fff", ...l.botOptionStyle }, y = { color: "#fff", borderColor: (r = i.general) == null ? void 0 : r.primaryColor, backgroundColor: (a = i.general) == null ? void 0 : a.primaryColor, ...l.botOptionHoveredStyle };
|
|
659
|
+
return Y(() => {
|
|
660
|
+
u.length > 0 && u[u.length - 1] !== e && b(!A.reusable);
|
|
661
|
+
}, [u]), c("div", { className: "rcb-options-container " + ((s = i.botBubble) != null && s.showAvatar ? "rcb-options-offset" : ""), children: A.items.map((m, B) => {
|
|
662
|
+
const h = w[B] && !f;
|
|
663
|
+
return c("div", { className: "rcb-options", style: h ? y : E, onMouseEnter: () => ((g) => {
|
|
664
|
+
p((v) => {
|
|
665
|
+
const P = [...v];
|
|
666
|
+
return P[g] = !0, P;
|
|
667
|
+
});
|
|
668
|
+
})(B), onMouseLeave: () => ((g) => {
|
|
669
|
+
p((v) => {
|
|
670
|
+
const P = [...v];
|
|
671
|
+
return P[g] = !1, P;
|
|
672
|
+
});
|
|
673
|
+
})(B), onMouseDown: (g) => {
|
|
674
|
+
var v;
|
|
675
|
+
if (g.preventDefault(), f) return;
|
|
676
|
+
let P;
|
|
677
|
+
b(!A.reusable), P = A.sendOutput != null ? A.sendOutput : ((v = i.chatInput) == null ? void 0 : v.sendOptionOutput) ?? !0, d(m, P);
|
|
678
|
+
}, children: m }, m);
|
|
679
|
+
}) });
|
|
680
|
+
}, qo = async (A, e) => {
|
|
681
|
+
const t = A.options;
|
|
682
|
+
if (!t) return;
|
|
683
|
+
let o;
|
|
684
|
+
if (typeof t == "function" ? (o = t(e), o instanceof Promise && (o = await o)) : o = t, Array.isArray(o) && (o = { items: o }), !("items" in o) || o.items.length == 0) return;
|
|
685
|
+
o.reusable == null && (o.reusable = !1);
|
|
686
|
+
const n = e.currPath, r = c(Xo, { options: o, path: n });
|
|
687
|
+
await e.injectMessage(r);
|
|
688
|
+
}, Ko = async (A, e) => {
|
|
689
|
+
const t = A.component;
|
|
690
|
+
if (t) {
|
|
691
|
+
if (typeof t == "function") {
|
|
692
|
+
let o = t(e);
|
|
693
|
+
return o instanceof Promise && (o = await o), o ? void await e.injectMessage(o) : void 0;
|
|
694
|
+
}
|
|
695
|
+
await e.injectMessage(t);
|
|
696
|
+
}
|
|
697
|
+
}, Vo = async (A, e, t, o) => {
|
|
698
|
+
const n = A.transition;
|
|
699
|
+
let r;
|
|
700
|
+
if (typeof n == "function" ? (r = n(e), r instanceof Promise && (r = await r)) : r = n, typeof r == "number" && (r = { duration: r }), !r || r instanceof Promise || r.duration == null || typeof r.duration != "number") return;
|
|
701
|
+
r.interruptable == null && (r.interruptable = !1);
|
|
702
|
+
const a = setTimeout(async () => {
|
|
703
|
+
const s = await o(A);
|
|
704
|
+
s && await wt(s, e);
|
|
705
|
+
}, r.duration);
|
|
706
|
+
r.interruptable && (t.current = a);
|
|
707
|
+
}, Jo = async (A, e, t) => {
|
|
708
|
+
const o = A.chatDisabled;
|
|
709
|
+
if (o == null) return;
|
|
710
|
+
let n;
|
|
711
|
+
typeof o == "function" ? (n = o(e), n instanceof Promise && (n = await n)) : n = o, t(n);
|
|
712
|
+
}, gt = async (A, e, t) => {
|
|
713
|
+
const o = A.isSensitive;
|
|
714
|
+
if (!o) return void t(!1);
|
|
715
|
+
let n;
|
|
716
|
+
typeof o == "function" ? (n = o(e), n instanceof Promise && (n = await n)) : n = o, t(n);
|
|
717
|
+
}, wt = async (A, e) => {
|
|
718
|
+
if (!A) throw new Error("Block is not valid.");
|
|
719
|
+
const t = Object.keys(A);
|
|
720
|
+
for (const o of t) o === "function" && await Yo(A, e);
|
|
721
|
+
t.includes("path") && await (async (o, n) => {
|
|
722
|
+
const r = o.path;
|
|
723
|
+
if (!r) return !1;
|
|
724
|
+
if (typeof r == "string") return await n.goToPath(r), !0;
|
|
725
|
+
let a = r(n);
|
|
726
|
+
if (a instanceof Promise && (a = await a), !a) return !1;
|
|
727
|
+
const s = a;
|
|
728
|
+
return await n.goToPath(s), !0;
|
|
729
|
+
})(A, e);
|
|
730
|
+
}, Zo = () => {
|
|
731
|
+
var A;
|
|
732
|
+
const { settings: e } = N(), { styles: t } = K();
|
|
733
|
+
return c("div", { className: "rcb-line-break-container", children: c("div", { style: { ...t.chatHistoryLineBreakStyle }, className: "rcb-line-break-text", "data-testid": "chat-history-line-break-text", children: (A = e.chatHistory) == null ? void 0 : A.chatHistoryLineBreakText }) });
|
|
734
|
+
}, $o = () => {
|
|
735
|
+
var A;
|
|
736
|
+
const { settings: e } = N(), { styles: t } = K(), o = { borderTop: `4px solid ${(A = e.general) == null ? void 0 : A.primaryColor}`, ...t.loadingSpinnerStyle };
|
|
737
|
+
return c("div", { className: "rcb-spinner-container", children: c("div", { style: o, className: "rcb-spinner" }) });
|
|
738
|
+
}, FA = () => {
|
|
739
|
+
try {
|
|
740
|
+
if (typeof crypto < "u" && typeof crypto.randomUUID == "function") return crypto.randomUUID();
|
|
741
|
+
throw new Error("crypto.randomUUID not available");
|
|
742
|
+
} catch (A) {
|
|
743
|
+
if (typeof crypto < "u" && typeof crypto.getRandomValues == "function") return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(e) {
|
|
744
|
+
const t = crypto.getRandomValues(new Uint8Array(1))[0] % 16;
|
|
745
|
+
return (e === "x" ? t : 3 & t | 8).toString(16);
|
|
746
|
+
});
|
|
747
|
+
throw console.error(A), new Error("crypto.getRandomValues is also not available");
|
|
748
|
+
}
|
|
749
|
+
}, BA = (A, e) => ({ id: FA(), content: A, sender: e, type: typeof A == "string" ? "string" : "object", timestamp: (/* @__PURE__ */ new Date()).toUTCString(), tags: [] });
|
|
750
|
+
let EA, vt = !1, zA = "rcb-history", RA = 30, pt = !1, GA = [];
|
|
751
|
+
const $A = async (A) => {
|
|
752
|
+
if (pt || !EA) return;
|
|
753
|
+
const e = [], t = vt ? GA.length : 0;
|
|
754
|
+
for (let n = A.length - 1; n >= t; n--) {
|
|
755
|
+
const r = A[n];
|
|
756
|
+
if (r.sender.toUpperCase() !== "SYSTEM" && (r.content !== "" && e.unshift(r), e.length === RA)) break;
|
|
757
|
+
}
|
|
758
|
+
let o = e.map(tn);
|
|
759
|
+
if (o.length < RA) {
|
|
760
|
+
const n = RA - o.length;
|
|
761
|
+
o = [...GA.slice(-n), ...o];
|
|
762
|
+
}
|
|
763
|
+
An(o);
|
|
764
|
+
}, ht = () => GA, An = (A) => {
|
|
765
|
+
EA && EA.setItem(zA, JSON.stringify(A));
|
|
766
|
+
}, en = (A) => {
|
|
767
|
+
var e, t, o, n, r;
|
|
768
|
+
EA = ((t = (e = A.chatHistory) == null ? void 0 : e.storageType) == null ? void 0 : t.toUpperCase()) === "SESSION_STORAGE" ? sessionStorage : localStorage, zA = (o = A.chatHistory) == null ? void 0 : o.storageKey, RA = (n = A.chatHistory) == null ? void 0 : n.maxEntries, pt = (r = A.chatHistory) == null ? void 0 : r.disabled, GA = ((a) => {
|
|
769
|
+
if (a != null) try {
|
|
770
|
+
return JSON.parse(a);
|
|
771
|
+
} catch {
|
|
772
|
+
return [];
|
|
773
|
+
}
|
|
774
|
+
return [];
|
|
775
|
+
})(EA.getItem(zA));
|
|
776
|
+
}, tn = (A) => QA(A.content) ? structuredClone({ id: A.id, content: Bo.renderToString(A.content), type: A.type, sender: A.sender.toUpperCase(), timestamp: A.timestamp, tags: A.tags }) : A, bt = (A, e, t) => {
|
|
777
|
+
const o = new DOMParser().parseFromString(A, "text/html");
|
|
778
|
+
return Array.from(o.body.childNodes).map((n, r) => {
|
|
779
|
+
var a;
|
|
780
|
+
if (n.nodeType === Node.TEXT_NODE) return n.textContent;
|
|
781
|
+
{
|
|
782
|
+
const s = n.tagName.toLowerCase();
|
|
783
|
+
let i = Array.from(n.attributes).reduce((l, u) => {
|
|
784
|
+
const d = u.name.toLowerCase();
|
|
785
|
+
if (d === "style") {
|
|
786
|
+
const w = u.value.split(";").filter((f) => f.trim() !== ""), p = {};
|
|
787
|
+
w.forEach((f) => {
|
|
788
|
+
const [b, E] = f.split(":").map((m) => m.trim()), y = b.replace(/-([a-z])/g, (m, B) => B.toUpperCase());
|
|
789
|
+
p[y] = E;
|
|
790
|
+
}), l[d] = p;
|
|
791
|
+
} else s !== "audio" && s !== "video" || d !== "controls" || u.value !== "" ? l[d] = u.value : l[d] = "true";
|
|
792
|
+
return l;
|
|
793
|
+
}, {});
|
|
794
|
+
if (Object.prototype.hasOwnProperty.call(i, "class")) {
|
|
795
|
+
const l = n.classList;
|
|
796
|
+
i.className = l.toString(), delete i.class, (a = e.botBubble) != null && a.showAvatar && (i = on(l, i)), i = nn(l, i, e, t), i = rn(l, i, e, t), i = an(l, i, e, t), i = sn(l, i, e, t);
|
|
797
|
+
}
|
|
798
|
+
if (["area", "base", "br", "col", "embed", "hr", "img", "input", "link", "meta", "source", "track", "wbr"].includes(s)) return j(s, { key: r, ...i });
|
|
799
|
+
{
|
|
800
|
+
const l = bt(n.innerHTML, e, t);
|
|
801
|
+
return j(s, { key: r, ...i }, ...l);
|
|
802
|
+
}
|
|
803
|
+
}
|
|
804
|
+
});
|
|
805
|
+
}, on = (A, e) => ((A.contains("rcb-options-container") || A.contains("rcb-checkbox-container")) && (e.className = `${A.toString()} rcb-options-offset`), e), nn = (A, e, t, o) => {
|
|
806
|
+
var n, r, a, s, i;
|
|
807
|
+
return A.contains("rcb-options") && (e.style = { ...e.style, color: ((n = o.botOptionStyle) == null ? void 0 : n.color) ?? ((r = t.general) == null ? void 0 : r.primaryColor), borderColor: ((a = o.botOptionStyle) == null ? void 0 : a.color) ?? ((s = t.general) == null ? void 0 : s.primaryColor), cursor: `url("${(i = t.general) == null ? void 0 : i.actionDisabledIcon}"), auto`, ...o.botOptionStyle }), e;
|
|
808
|
+
}, rn = (A, e, t, o) => {
|
|
809
|
+
var n, r, a, s, i;
|
|
810
|
+
return A.contains("rcb-checkbox-row-container") && (e.style = { ...e.style, color: ((n = o.botCheckboxRowStyle) == null ? void 0 : n.color) ?? ((r = t.general) == null ? void 0 : r.primaryColor), borderColor: ((a = o.botCheckboxRowStyle) == null ? void 0 : a.color) ?? ((s = t.general) == null ? void 0 : s.primaryColor), cursor: `url("${(i = t.general) == null ? void 0 : i.actionDisabledIcon}"), auto`, ...o.botCheckboxRowStyle }), e;
|
|
811
|
+
}, an = (A, e, t, o) => {
|
|
812
|
+
var n, r, a, s, i;
|
|
813
|
+
return A.contains("rcb-checkbox-next-button") && (e.style = { ...e.style, color: ((n = o.botCheckboxNextStyle) == null ? void 0 : n.color) ?? ((r = t.general) == null ? void 0 : r.primaryColor), borderColor: ((a = o.botCheckboxNextStyle) == null ? void 0 : a.color) ?? ((s = t.general) == null ? void 0 : s.primaryColor), cursor: `url("${(i = t.general) == null ? void 0 : i.actionDisabledIcon}"), auto`, ...o.botCheckboxNextStyle }), e;
|
|
814
|
+
}, sn = (A, e, t, o) => {
|
|
815
|
+
var n, r;
|
|
816
|
+
return (A.contains("rcb-media-display-image-container") || A.contains("rcb-media-display-video-container")) && (e.style = { ...e.style, backgroundColor: (n = t.general) == null ? void 0 : n.primaryColor, maxWidth: (r = t.userBubble) != null && r.showAvatar ? "65%" : "70%", ...o.mediaDisplayContainerStyle }), e;
|
|
817
|
+
}, mt = (A) => {
|
|
818
|
+
if (!A) return !1;
|
|
819
|
+
const e = A.getBoundingClientRect(), t = window.innerHeight ?? document.documentElement.clientHeight, o = window.innerWidth ?? document.documentElement.clientWidth;
|
|
820
|
+
return e.top >= 0 && e.left >= 0 && e.bottom <= t && e.right <= o;
|
|
821
|
+
}, fe = () => {
|
|
822
|
+
const { settings: A } = N(), { notificationsToggledOn: e, setSyncedNotificationsToggledOn: t, hasInteractedPage: o, unreadCount: n, setUnreadCount: r, syncedNotificationsToggledOnRef: a } = tA(), { audioBufferRef: s, audioContextRef: i, gainNodeRef: l } = oA(), { dispatchRcbEvent: u } = uA(), d = M(async () => {
|
|
823
|
+
var p, f;
|
|
824
|
+
const b = (p = A.notification) == null ? void 0 : p.sound;
|
|
825
|
+
i.current = new AudioContext();
|
|
826
|
+
const E = i.current.createGain();
|
|
827
|
+
let y;
|
|
828
|
+
if (E.gain.value = ((f = A.notification) == null ? void 0 : f.volume) ?? 0.2, l.current = E, b != null && b.startsWith("data:audio")) {
|
|
829
|
+
const m = atob(b.split(",")[1]), B = new ArrayBuffer(m.length), h = new Uint8Array(B);
|
|
830
|
+
for (let g = 0; g < m.length; g++) h[g] = m.charCodeAt(g);
|
|
831
|
+
y = B;
|
|
832
|
+
} else y = await (await fetch(b)).arrayBuffer();
|
|
833
|
+
s.current = await i.current.decodeAudioData(y);
|
|
834
|
+
}, [A.notification]), w = M(() => {
|
|
835
|
+
var p;
|
|
836
|
+
if ((p = A.notification) != null && p.disabled || !a.current || !o || !i.current || !s.current) return;
|
|
837
|
+
const f = i.current.createBufferSource();
|
|
838
|
+
f.buffer = s.current, f.connect(l.current).connect(i.current.destination), f.start();
|
|
839
|
+
}, [A.notification, a, o, i, s, l]);
|
|
840
|
+
return { unreadCount: n, setUnreadCount: r, notificationsToggledOn: e, toggleNotifications: M(async (p) => {
|
|
841
|
+
var f;
|
|
842
|
+
p !== a.current && ((f = A.event) != null && f.rcbToggleNotifications && (await u(T.TOGGLE_NOTIFICATIONS, { currState: a.current, newState: !a.current })).defaultPrevented || t((b) => !b));
|
|
843
|
+
}, [a]), playNotificationSound: w, setUpNotifications: d };
|
|
844
|
+
}, ln = (A, e) => {
|
|
845
|
+
var t, o, n, r;
|
|
846
|
+
((a, s, i, l, u) => {
|
|
847
|
+
if (!window.SpeechSynthesisUtterance) return void console.info("Speech Synthesis API is not supported in this environment.");
|
|
848
|
+
const d = new window.SpeechSynthesisUtterance();
|
|
849
|
+
d.text = a, d.lang = s, d.rate = l, d.volume = u;
|
|
850
|
+
let w = !1;
|
|
851
|
+
for (const p of i) if (window.speechSynthesis.getVoices().find((f) => {
|
|
852
|
+
if (f.name === p) return d.voice = f, window.speechSynthesis.speak(d), void (w = !0);
|
|
853
|
+
}), w) break;
|
|
854
|
+
w || window.speechSynthesis.speak(d);
|
|
855
|
+
})(e, (t = A.audio) == null ? void 0 : t.language, (o = A.audio) == null ? void 0 : o.voiceNames, (n = A.audio) == null ? void 0 : n.rate, (r = A.audio) == null ? void 0 : r.volume);
|
|
856
|
+
}, Bt = () => {
|
|
857
|
+
const { settings: A } = N(), { audioToggledOn: e, setSyncedAudioToggledOn: t, syncedAudioToggledOnRef: o } = tA(), { dispatchRcbEvent: n } = uA(), r = M(async (a) => {
|
|
858
|
+
var s;
|
|
859
|
+
a !== o.current && ((s = A.event) != null && s.rcbToggleAudio && (await n(T.TOGGLE_AUDIO, { currState: o.current, newState: !o.current })).defaultPrevented || t((i) => !i));
|
|
860
|
+
}, [o]);
|
|
861
|
+
return { audioToggledOn: e, speakAudio: M(async (a) => {
|
|
862
|
+
var s, i;
|
|
863
|
+
if ((s = A.audio) != null && s.disabled || !o.current) return;
|
|
864
|
+
let l = a;
|
|
865
|
+
if ((i = A.event) != null && i.rcbStartSpeakAudio) {
|
|
866
|
+
const u = await n(T.START_SPEAK_AUDIO, { textToRead: l });
|
|
867
|
+
if (u.defaultPrevented) return;
|
|
868
|
+
l = u.data.textToRead;
|
|
869
|
+
}
|
|
870
|
+
ln(A, l);
|
|
871
|
+
}, [A, o]), toggleAudio: r };
|
|
872
|
+
}, xA = () => {
|
|
873
|
+
var A, e;
|
|
874
|
+
const { settings: t } = N(), { messages: o, setSyncedMessages: n, syncedMessagesRef: r } = ue(), { setSyncedIsBotTyping: a, setUnreadCount: s, syncedIsScrollingRef: i, syncedIsChatWindowOpenRef: l } = tA(), { streamMessageMap: u, chatBodyRef: d, paramsInputRef: w } = oA(), { scrollToBottom: p } = cA(), { dispatchRcbEvent: f } = uA(), { speakAudio: b } = Bt(), { playNotificationSound: E } = fe(), y = M((m, B = !1) => {
|
|
875
|
+
var h, g;
|
|
876
|
+
$A(m);
|
|
877
|
+
let v = !0;
|
|
878
|
+
const P = m[m.length - 1];
|
|
879
|
+
if (!P) return;
|
|
880
|
+
const D = P.sender.toUpperCase();
|
|
881
|
+
D === "USER" && (v = !1), (h = t.general) != null && h.embedded && mt(d.current) && (v = !1), (l.current && !i.current || B) && (v = !1), v && E(), !B && (D !== "USER" && (g = t.chatWindow) != null && g.autoJumpToBottom || D === "USER" || !i.current) && setTimeout(() => p(), 1);
|
|
882
|
+
}, [t, d, l, i, E, p]);
|
|
883
|
+
return { simulateStreamMessage: M(async (m, B = "BOT", h = null) => {
|
|
884
|
+
var g, v, P, D, _;
|
|
885
|
+
if (typeof m != "string") throw new Error("Content must be of type string to simulate stream.");
|
|
886
|
+
B = B.toUpperCase();
|
|
887
|
+
let O = BA(m, B);
|
|
888
|
+
if ((g = t.event) != null && g.rcbStartSimulateStreamMessage) {
|
|
889
|
+
const C = await f(T.START_SIMULATE_STREAM_MESSAGE, { message: O });
|
|
890
|
+
if (C.defaultPrevented) return null;
|
|
891
|
+
h = C.data.simulateStreamChunker || h, O = C.data.message;
|
|
892
|
+
}
|
|
893
|
+
a(!1);
|
|
894
|
+
let Q = 30;
|
|
895
|
+
Q = B === "BOT" ? (v = t.botBubble) == null ? void 0 : v.streamSpeed : (P = t.userBubble) == null ? void 0 : P.streamSpeed;
|
|
896
|
+
const x = { ...O, content: "" };
|
|
897
|
+
n((C) => [...C, x]), y(r.current);
|
|
898
|
+
let I = O.content;
|
|
899
|
+
h && (I = h(I));
|
|
900
|
+
let k = 0;
|
|
901
|
+
const L = I.length;
|
|
902
|
+
O.sender.toUpperCase() === "BOT" && (l.current || (D = t.general) != null && D.embedded) && typeof O.content == "string" && O.content.trim() !== "" && b(O.content);
|
|
903
|
+
const S = new Promise((C) => {
|
|
904
|
+
const F = setInterval(() => {
|
|
905
|
+
if (k >= L) return clearInterval(F), void C();
|
|
906
|
+
n((H) => {
|
|
907
|
+
const z = [...H];
|
|
908
|
+
for (let R = z.length - 1; R >= 0; R--) if (z[R].id === x.id) {
|
|
909
|
+
const X = I[k];
|
|
910
|
+
X && (x.content += X, z[R] = x), k++;
|
|
911
|
+
break;
|
|
912
|
+
}
|
|
913
|
+
return z;
|
|
914
|
+
});
|
|
915
|
+
}, Q);
|
|
916
|
+
});
|
|
917
|
+
return (i.current || !l.current) && s((C) => C + 1), await S, $A(r.current), (_ = t.event) != null && _.rcbStopSimulateStreamMessage && await f(T.STOP_SIMULATE_STREAM_MESSAGE, { message: O }), B === "USER" && (w.current = m), O;
|
|
918
|
+
}, [t, f, y, r, w, a, s, l, b]), injectMessage: M(async (m, B = "BOT") => {
|
|
919
|
+
var h, g, v;
|
|
920
|
+
B = B.toUpperCase();
|
|
921
|
+
let P = BA(m, B);
|
|
922
|
+
if ((h = t.event) != null && h.rcbPreInjectMessage) {
|
|
923
|
+
const D = await f(T.PRE_INJECT_MESSAGE, { message: P });
|
|
924
|
+
if (D.defaultPrevented) return null;
|
|
925
|
+
P = D.data.message;
|
|
926
|
+
}
|
|
927
|
+
return P.sender.toUpperCase() === "BOT" && (l.current || (g = t.general) != null && g.embedded) && typeof P.content == "string" && P.content.trim() !== "" && b(P.content), (i.current || !l.current) && s((D) => D + 1), (v = t.event) != null && v.rcbPostInjectMessage && await f(T.POST_INJECT_MESSAGE, { message: P }), n((D) => [...D, P]), y(r.current), B === "USER" && typeof m == "string" && (w.current = m), P;
|
|
928
|
+
}, [t, f, y, w, r, l, b, s]), removeMessage: M(async (m) => {
|
|
929
|
+
var B;
|
|
930
|
+
const h = r.current.find((g) => g.id === m);
|
|
931
|
+
return !h || (B = t.event) != null && B.rcbRemoveMessage && (await f(T.REMOVE_MESSAGE, { message: h })).defaultPrevented ? null : (n((g) => g.filter((v) => v.id !== m)), y(r.current), s((g) => Math.max(g - 1, 0)), h);
|
|
932
|
+
}, [f, (A = t.event) == null ? void 0 : A.rcbRemoveMessage, y, r, s]), streamMessage: M(async (m, B = "BOT") => {
|
|
933
|
+
var h, g;
|
|
934
|
+
if (B = B.toUpperCase(), !u.current.has(B)) {
|
|
935
|
+
const P = BA(m, B);
|
|
936
|
+
return (h = t.event) != null && h.rcbStartStreamMessage && (await f(T.START_STREAM_MESSAGE, { message: P })).defaultPrevented ? null : (a(!1), n((D) => [...D, P]), y(r.current), u.current.set(B, P.id), (i.current || !l.current) && s((D) => D + 1), P);
|
|
937
|
+
}
|
|
938
|
+
const v = { ...BA(m, B), id: u.current.get(B) };
|
|
939
|
+
return (g = t.event) != null && g.rcbChunkStreamMessage && (await f(T.CHUNK_STREAM_MESSAGE, { message: v })).defaultPrevented ? null : (n((P) => P.map((D) => D.id === v.id ? v : D)), y(r.current, !0), v);
|
|
940
|
+
}, [f, t.event, y, r, a, s, u]), endStreamMessage: M(async (m = "BOT") => {
|
|
941
|
+
var B;
|
|
942
|
+
if (m = m.toUpperCase(), !u.current.has(m)) return !0;
|
|
943
|
+
const h = u.current.get(m);
|
|
944
|
+
let g;
|
|
945
|
+
for (let v = 0; v < 3; v++) {
|
|
946
|
+
const P = r.current.find((D) => D.id === h);
|
|
947
|
+
P && (g = P), await new Promise((D) => setTimeout(D, 20));
|
|
948
|
+
}
|
|
949
|
+
return ((B = t.event) == null || !B.rcbStopStreamMessage || !(await f(T.STOP_STREAM_MESSAGE, { message: g })).defaultPrevented) && (u.current.delete(m), $A(r.current), m === "USER" && typeof (g == null ? void 0 : g.content) == "string" && (w.current = g.content), !0);
|
|
950
|
+
}, [f, (e = t.event) == null ? void 0 : e.rcbStopStreamMessage, u, w]), replaceMessages: M((m) => {
|
|
951
|
+
n(m), y(m);
|
|
952
|
+
}, [y]), messages: o };
|
|
953
|
+
};
|
|
954
|
+
let Ae, gA, UA, PA = !1, vA = null;
|
|
955
|
+
const ge = () => {
|
|
956
|
+
if (!Ae) {
|
|
957
|
+
const A = window.SpeechRecognition || window.webkitSpeechRecognition;
|
|
958
|
+
Ae = A != null ? new A() : null;
|
|
959
|
+
}
|
|
960
|
+
return Ae;
|
|
961
|
+
}, cn = (A, e, t, o, n, r) => {
|
|
962
|
+
var a, s, i;
|
|
963
|
+
const l = ge();
|
|
964
|
+
if (!l) return;
|
|
965
|
+
if (!PA) try {
|
|
966
|
+
PA = !0, l.lang = (a = A.voice) == null ? void 0 : a.language, l.start();
|
|
967
|
+
} catch {
|
|
968
|
+
}
|
|
969
|
+
const u = (s = A.voice) == null ? void 0 : s.timeoutPeriod, d = (i = A.voice) == null ? void 0 : i.autoSendPeriod;
|
|
970
|
+
l.onresult = (w) => {
|
|
971
|
+
var p, f;
|
|
972
|
+
clearTimeout(gA), gA = null, clearTimeout(UA);
|
|
973
|
+
const b = w.results[w.results.length - 1][0].transcript;
|
|
974
|
+
if (r.current) {
|
|
975
|
+
const E = (p = A.chatInput) == null ? void 0 : p.characterLimit, y = r.current.value + b;
|
|
976
|
+
E != null && E >= 0 && y.length > E ? o(y.slice(0, E)) : o(y), n(r.current.value.length);
|
|
977
|
+
}
|
|
978
|
+
u && (gA = setTimeout(async () => await ee(e, r), u)), (f = A.voice) != null && f.autoSendDisabled || (UA = setTimeout(t, d));
|
|
979
|
+
}, l.onend = () => {
|
|
980
|
+
PA ? (l.start(), !gA && u && (gA = setTimeout(async () => await ee(e, r), u))) : (clearTimeout(gA), gA = null, clearTimeout(UA));
|
|
981
|
+
}, u && (gA = setTimeout(async () => await ee(e, r), u));
|
|
982
|
+
}, dn = (A, e) => {
|
|
983
|
+
navigator.mediaDevices.getUserMedia({ audio: !0 }).then((t) => {
|
|
984
|
+
if (vA = new MediaRecorder(t), !PA) try {
|
|
985
|
+
PA = !0, vA.start();
|
|
986
|
+
} catch {
|
|
987
|
+
}
|
|
988
|
+
vA.ondataavailable = (o) => {
|
|
989
|
+
e.current && e.current.push(o.data);
|
|
990
|
+
}, vA.onstop = () => {
|
|
991
|
+
A(), t.getTracks().forEach((o) => o.stop());
|
|
992
|
+
};
|
|
993
|
+
}).catch((t) => {
|
|
994
|
+
console.error("Unable to use microphone:", t);
|
|
995
|
+
});
|
|
996
|
+
}, we = () => {
|
|
997
|
+
const A = ge();
|
|
998
|
+
A && (PA = !1, A && A.stop(), vA && vA.state !== "inactive" && (vA.stop(), vA = null), clearTimeout(gA), gA = null, clearTimeout(UA));
|
|
999
|
+
}, ee = async (A, e) => {
|
|
1000
|
+
var t;
|
|
1001
|
+
(t = e.current) != null && t.disabled || await A(), we();
|
|
1002
|
+
}, ve = () => {
|
|
1003
|
+
const { settings: A } = N(), { voiceToggledOn: e, setSyncedVoiceToggledOn: t, syncedVoiceToggledOnRef: o } = tA(), { dispatchRcbEvent: n } = uA(), r = M(async (s) => {
|
|
1004
|
+
var i;
|
|
1005
|
+
s !== o.current && ((i = A.event) != null && i.rcbToggleVoice && (await n(T.TOGGLE_VOICE, { currState: o.current, newState: !o.current })).defaultPrevented || t((l) => !l));
|
|
1006
|
+
}, [o]), a = M((s) => {
|
|
1007
|
+
((i, l) => {
|
|
1008
|
+
var u, d, w;
|
|
1009
|
+
const p = ge();
|
|
1010
|
+
(u = l.voice) != null && u.disabled || (d = l.chatInput) == null || !d.blockSpam || !p || (i && !PA ? (PA = !0, (w = l.voice) != null && w.sendAsAudio ? vA == null || vA.start() : p.start()) : i || we());
|
|
1011
|
+
})(s, A);
|
|
1012
|
+
}, [A]);
|
|
1013
|
+
return { voiceToggledOn: e, toggleVoice: r, syncVoice: a };
|
|
1014
|
+
}, IA = () => {
|
|
1015
|
+
const { settings: A } = N(), { inputLength: e, setInputLength: t, textAreaDisabled: o, setSyncedTextAreaDisabled: n, textAreaSensitiveMode: r, setSyncedTextAreaSensitiveMode: a, syncedTextAreaDisabledRef: s, syncedTextAreaSensitiveModeRef: i } = tA(), { inputRef: l, chatBodyRef: u, prevInputRef: d } = oA(), { dispatchRcbEvent: w } = uA(), p = M(async (h) => {
|
|
1016
|
+
var g, v, P;
|
|
1017
|
+
if (s.current && l.current) l.current.value = "";
|
|
1018
|
+
else if (l.current && d.current !== null) {
|
|
1019
|
+
const D = (g = A.chatInput) == null ? void 0 : g.characterLimit, _ = (v = A.chatInput) != null && v.allowNewline ? h : h.replace(/\n/g, " ");
|
|
1020
|
+
if (D != null && D >= 0 && _.length > D ? l.current.value = _.slice(0, D) : l.current.value = _, (P = A.event) != null && P.rcbTextAreaChangeValue && (await w(T.TEXT_AREA_CHANGE_VALUE, { currValue: l.current.value, prevValue: d.current })).defaultPrevented) return void (l.current.value = d.current);
|
|
1021
|
+
d.current = l.current.value;
|
|
1022
|
+
}
|
|
1023
|
+
}, [s, l, d, A, w]), f = M((h) => {
|
|
1024
|
+
var g;
|
|
1025
|
+
(g = l.current) != null && g.disabled || setTimeout(() => {
|
|
1026
|
+
var v, P, D;
|
|
1027
|
+
(v = A.general) != null && v.embedded ? mt(u == null ? void 0 : u.current) && ((P = l.current) == null || P.focus()) : h !== "start" && ((D = l.current) == null || D.focus());
|
|
1028
|
+
}, 100);
|
|
1029
|
+
}, []), b = M(() => {
|
|
1030
|
+
l.current && l.current.focus();
|
|
1031
|
+
}, []), E = M(() => {
|
|
1032
|
+
l.current && l.current.blur();
|
|
1033
|
+
}, []), y = M(() => l && l.current ? l.current.value : "", []), m = M((h) => {
|
|
1034
|
+
h !== s.current && n((g) => !g);
|
|
1035
|
+
}, [s]), B = M((h) => {
|
|
1036
|
+
h !== i.current && a((g) => !g);
|
|
1037
|
+
}, [i]);
|
|
1038
|
+
return { textAreaDisabled: o, setSyncedTextAreaDisabled: n, textAreaSensitiveMode: r, setSyncedTextAreaSensitiveMode: a, inputLength: e, setInputLength: t, getTextAreaValue: y, setTextAreaValue: p, updateTextAreaFocus: f, focusTextArea: b, blurTextArea: E, toggleTextAreaDisabled: m, toggleTextAreaSensitiveMode: B };
|
|
1039
|
+
}, yt = bA({ toasts: [], setSyncedToasts: () => {
|
|
1040
|
+
}, syncedToastsRef: { current: [] } }), Pt = () => pA(yt), un = ({ children: A }) => {
|
|
1041
|
+
const [e, t, o] = dA([]);
|
|
1042
|
+
return c(yt.Provider, { value: { toasts: e, setSyncedToasts: t, syncedToastsRef: o }, children: A });
|
|
1043
|
+
}, XA = () => {
|
|
1044
|
+
const { settings: A } = N(), { toasts: e, setSyncedToasts: t, syncedToastsRef: o } = Pt(), { dispatchRcbEvent: n } = uA();
|
|
1045
|
+
return { showToast: M(async (r, a) => {
|
|
1046
|
+
var s, i, l, u;
|
|
1047
|
+
let d = null;
|
|
1048
|
+
if (o.current.length >= (((s = A.toast) == null ? void 0 : s.maxCount) ?? 3)) {
|
|
1049
|
+
if ((i = A.toast) != null && i.forbidOnMax) return null;
|
|
1050
|
+
d = FA();
|
|
1051
|
+
let p = { id: d, content: r, timeout: a };
|
|
1052
|
+
if ((l = A.event) != null && l.rcbShowToast) {
|
|
1053
|
+
const f = await n(T.SHOW_TOAST, { toast: p });
|
|
1054
|
+
if (f.defaultPrevented) return null;
|
|
1055
|
+
p = f.data.toast;
|
|
1056
|
+
}
|
|
1057
|
+
return t((f) => [...f.slice(1), p]), d;
|
|
1058
|
+
}
|
|
1059
|
+
d = FA();
|
|
1060
|
+
let w = { id: d, content: r, timeout: a };
|
|
1061
|
+
if ((u = A.event) != null && u.rcbShowToast) {
|
|
1062
|
+
const p = await n(T.SHOW_TOAST, { toast: w });
|
|
1063
|
+
if (p.defaultPrevented) return null;
|
|
1064
|
+
w = p.data.toast;
|
|
1065
|
+
}
|
|
1066
|
+
return t((p) => [...p, w]), d;
|
|
1067
|
+
}, [A, n]), dismissToast: M(async (r) => {
|
|
1068
|
+
var a;
|
|
1069
|
+
const s = o.current.find((i) => i.id === r);
|
|
1070
|
+
return !s || (a = A.event) != null && a.rcbDismissToast && (await n(T.DISMISS_TOAST, { toast: s })).defaultPrevented ? null : (t((i) => i.filter((l) => l.id !== r)), r);
|
|
1071
|
+
}, [n]), toasts: e, replaceToasts: M((r) => {
|
|
1072
|
+
t(r);
|
|
1073
|
+
}, []) };
|
|
1074
|
+
}, pe = () => {
|
|
1075
|
+
var A, e, t, o, n;
|
|
1076
|
+
const { settings: r } = N(), { paths: a, setSyncedPaths: s, syncedPathsRef: i } = LA(), { flowRef: l, streamMessageMap: u, paramsInputRef: d, keepVoiceOnRef: w, timeoutIdRef: p } = oA(), { setSyncedIsBotTyping: f, setSyncedTextAreaDisabled: b, setSyncedTextAreaSensitiveMode: E, blockAllowsAttachment: y, setBlockAllowsAttachment: m } = tA(), { dispatchRcbEvent: B } = uA(), { endStreamMessage: h, injectMessage: g, removeMessage: v, simulateStreamMessage: P, streamMessage: D } = xA(), { showToast: _, dismissToast: O } = XA(), { toggleChatWindow: Q } = cA(), { updateTextAreaFocus: x, setTextAreaValue: I } = IA(), { syncVoice: k } = ve(), L = M(async (R) => {
|
|
1077
|
+
var X;
|
|
1078
|
+
if ((X = r.event) != null && X.rcbPostProcessBlock) {
|
|
1079
|
+
const AA = await B(T.POST_PROCESS_BLOCK, { block: R });
|
|
1080
|
+
if (AA.defaultPrevented) return null;
|
|
1081
|
+
R = AA.data.block;
|
|
1082
|
+
}
|
|
1083
|
+
return R;
|
|
1084
|
+
}, [(A = r.event) == null ? void 0 : A.rcbPostProcessBlock, B]), S = M(async (R, X) => {
|
|
1085
|
+
var AA, G, Z, fA;
|
|
1086
|
+
if (!R) return;
|
|
1087
|
+
let sA = l.current[R];
|
|
1088
|
+
if (!sA) return void f(!1);
|
|
1089
|
+
if ((AA = r.event) != null && AA.rcbPreProcessBlock) {
|
|
1090
|
+
const aA = await B(T.PRE_PROCESS_BLOCK, { block: sA });
|
|
1091
|
+
if (aA.defaultPrevented) return;
|
|
1092
|
+
sA = aA.data.block;
|
|
1093
|
+
}
|
|
1094
|
+
f(!0), (G = r.chatInput) != null && G.blockSpam && b(!0), E(!1);
|
|
1095
|
+
const TA = { prevPath: X, currPath: R, goToPath: H, setTextAreaValue: I, userInput: d.current, endStreamMessage: h, injectMessage: g, removeMessage: v, simulateStreamMessage: P, streamMessage: D, toggleChatWindow: Q, showToast: _, dismissToast: O };
|
|
1096
|
+
await (async (aA, hA, KA, VA, JA, St, Tt) => {
|
|
1097
|
+
if (!aA) throw new Error("Block is not valid.");
|
|
1098
|
+
for (const kt of Object.keys(aA)) switch (kt) {
|
|
1099
|
+
case "message":
|
|
1100
|
+
await Wo(aA, hA, KA);
|
|
1101
|
+
break;
|
|
1102
|
+
case "options":
|
|
1103
|
+
await qo(aA, hA);
|
|
1104
|
+
break;
|
|
1105
|
+
case "checkboxes":
|
|
1106
|
+
await Go(aA, hA);
|
|
1107
|
+
break;
|
|
1108
|
+
case "component":
|
|
1109
|
+
await Ko(aA, hA);
|
|
1110
|
+
break;
|
|
1111
|
+
case "chatDisabled":
|
|
1112
|
+
await Jo(aA, hA, JA);
|
|
1113
|
+
break;
|
|
1114
|
+
case "isSensitive":
|
|
1115
|
+
await gt(aA, hA, St);
|
|
1116
|
+
break;
|
|
1117
|
+
case "transition":
|
|
1118
|
+
await Vo(aA, hA, VA, Tt);
|
|
1119
|
+
}
|
|
1120
|
+
})(sA, TA, ((Z = r.botBubble) == null ? void 0 : Z.simulateStream) ?? !1, p, b, E, L), f(!1), "chatDisabled" in sA || b((fA = r.chatInput) == null ? void 0 : fA.disabled), "isSensitive" in sA || E(!1), m(typeof sA.file == "function"), x(R), k(w.current && !sA.chatDisabled), R !== X && u.current.clear();
|
|
1121
|
+
}, [l, x, k, (e = r.botBubble) == null ? void 0 : e.simulateStream, (t = r.chatInput) == null ? void 0 : t.disabled, d, h, g, v, P, D, Q, _, O, w, u]), C = M(() => i.current.length > 0 ? i.current.at(-1) ?? null : null, []), F = M(() => i.current.length > 1 ? i.current.at(-2) ?? null : null, []), H = M(async (R) => {
|
|
1122
|
+
var X;
|
|
1123
|
+
const AA = C(), G = F();
|
|
1124
|
+
return ((X = r.event) == null || !X.rcbChangePath || !(await B(T.CHANGE_PATH, { currPath: AA, prevPath: G, nextPath: R })).defaultPrevented) && (s((Z) => [...Z, R]), await S(R, AA), !0);
|
|
1125
|
+
}, [(o = r.chatInput) == null ? void 0 : o.blockSpam, (n = r.event) == null ? void 0 : n.rcbChangePath, S, B]), z = M((R) => {
|
|
1126
|
+
s(R);
|
|
1127
|
+
}, []);
|
|
1128
|
+
return { getCurrPath: C, getPrevPath: F, goToPath: H, blockAllowsAttachment: y, setBlockAllowsAttachment: m, paths: a, replacePaths: z, firePostProcessBlockEvent: L };
|
|
1129
|
+
}, SA = () => {
|
|
1130
|
+
var A, e, t, o;
|
|
1131
|
+
const { settings: n } = N(), { endStreamMessage: r, injectMessage: a, removeMessage: s, simulateStreamMessage: i, streamMessage: l } = xA(), { syncedPathsRef: u } = LA(), { getCurrPath: d, getPrevPath: w, goToPath: p, firePostProcessBlockEvent: f } = pe(), { setSyncedTextAreaSensitiveMode: b, setSyncedTextAreaDisabled: E, setSyncedIsBotTyping: y, setBlockAllowsAttachment: m, setInputLength: B, syncedVoiceToggledOnRef: h, syncedTextAreaSensitiveModeRef: g } = tA(), { flowRef: v, inputRef: P, keepVoiceOnRef: D, paramsInputRef: _, timeoutIdRef: O } = oA(), { showToast: Q, dismissToast: x } = XA(), { dispatchRcbEvent: I } = uA(), { syncVoice: k } = ve(), { setTextAreaValue: L } = IA(), { toggleChatWindow: S } = cA(), C = M(async (H) => {
|
|
1132
|
+
var z, R, X, AA, G, Z;
|
|
1133
|
+
const fA = d();
|
|
1134
|
+
if (fA && v.current[fA]) {
|
|
1135
|
+
if (g.current) {
|
|
1136
|
+
if ((z = n == null ? void 0 : n.sensitiveInput) != null && z.hideInUserBubble) return;
|
|
1137
|
+
if ((R = n == null ? void 0 : n.sensitiveInput) != null && R.maskInUserBubble) return void ((X = n.userBubble) != null && X.simulateStream ? await i("*".repeat(((AA = n.sensitiveInput) == null ? void 0 : AA.asterisksCount) ?? 10), "USER") : await a("*".repeat(((G = n.sensitiveInput) == null ? void 0 : G.asterisksCount) ?? 10), "USER"));
|
|
1138
|
+
}
|
|
1139
|
+
(Z = n.userBubble) != null && Z.simulateStream ? await i(H, "USER") : await a(H, "USER");
|
|
1140
|
+
}
|
|
1141
|
+
}, [v, d, n, a, i, g]), F = M(async (H, z = !0) => {
|
|
1142
|
+
var R, X;
|
|
1143
|
+
if ((H = H.trim()) === "") return;
|
|
1144
|
+
z && await C(H), O.current && clearTimeout(O.current), P.current && (L(""), B(0));
|
|
1145
|
+
const AA = d();
|
|
1146
|
+
if (!AA) return;
|
|
1147
|
+
let G = v.current[AA];
|
|
1148
|
+
const Z = await f(G);
|
|
1149
|
+
Z && ((R = n.chatInput) != null && R.blockSpam && E(!0), D.current = h.current, k(!1), setTimeout(() => {
|
|
1150
|
+
y(!0);
|
|
1151
|
+
}, 400), b(!1), setTimeout(async () => {
|
|
1152
|
+
var fA;
|
|
1153
|
+
const sA = { prevPath: w(), currPath: d(), goToPath: p, setTextAreaValue: L, userInput: _.current, injectMessage: a, simulateStreamMessage: i, streamMessage: l, removeMessage: s, endStreamMessage: r, toggleChatWindow: S, showToast: Q, dismissToast: x }, TA = u.current.length;
|
|
1154
|
+
await wt(Z, sA), u.current.length === TA && (E("chatDisabled" in G ? !!G.chatDisabled : !((fA = n.chatInput) == null || !fA.disabled)), gt(G, sA, b), m(typeof G.file == "function"), k(D.current), y(!1));
|
|
1155
|
+
}, (X = n.chatInput) == null ? void 0 : X.botDelay));
|
|
1156
|
+
}, [O, (A = n.chatInput) == null ? void 0 : A.blockSpam, (e = n.chatInput) == null ? void 0 : e.botDelay, (t = n.chatInput) == null ? void 0 : t.disabled, D, h, k, C, w, d, p, a, i, l, s, r, S, Q, x, v]);
|
|
1157
|
+
return { handleSubmitText: M(async (H, z = !0) => {
|
|
1158
|
+
var R, X;
|
|
1159
|
+
H = H ?? ((R = P.current) == null ? void 0 : R.value), !((X = n.event) != null && X.rcbUserSubmitText && (await I(T.USER_SUBMIT_TEXT, { inputText: H, sendInChat: z })).defaultPrevented || !d()) && F(H, z);
|
|
1160
|
+
}, [I, d, F, P, (o = n.event) == null ? void 0 : o.rcbUserSubmitText]) };
|
|
1161
|
+
}, qA = () => {
|
|
1162
|
+
var A;
|
|
1163
|
+
const { settings: e } = N();
|
|
1164
|
+
return iA(() => {
|
|
1165
|
+
var t;
|
|
1166
|
+
if (typeof window > "u" || !window.navigator) return !1;
|
|
1167
|
+
if ((t = e.device) == null || !t.applyMobileOptimizations) return !0;
|
|
1168
|
+
const o = navigator.userAgent, n = !/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(o), r = window.innerWidth >= 768;
|
|
1169
|
+
return n && r;
|
|
1170
|
+
}, [(A = e.device) == null ? void 0 : A.applyMobileOptimizations]);
|
|
1171
|
+
}, fn = ({ buttons: A }) => {
|
|
1172
|
+
var e, t, o, n, r, a, s, i, l, u, d;
|
|
1173
|
+
const w = qA(), { settings: p } = N(), { styles: f } = K(), { textAreaDisabled: b, textAreaSensitiveMode: E, inputLength: y, hasFlowStarted: m, setHasFlowStarted: B, setInputLength: h } = tA(), { inputRef: g } = oA(), [v, P] = U(!1), [D, _] = U(!1), { handleSubmitText: O } = SA(), { setTextAreaValue: Q } = IA(), x = { boxSizing: w ? "content-box" : "border-box", ...f.chatInputAreaStyle }, I = { outline: b ? "" : "none", boxShadow: b ? "" : `0 0 5px ${(e = p.general) == null ? void 0 : e.primaryColor}`, boxSizing: w ? "content-box" : "border-box", ...f.chatInputAreaStyle, ...f.chatInputAreaFocusedStyle }, k = { cursor: `url("${(t = p.general) == null ? void 0 : t.actionDisabledIcon}"), auto`, caretColor: "transparent", boxSizing: w ? "content-box" : "border-box", ...f.chatInputAreaStyle, ...f.chatInputAreaDisabledStyle }, L = { color: "#989898", ...f.characterLimitStyle }, S = { color: "#ff0000", ...f.characterLimitReachedStyle }, C = b ? (o = p.chatInput) == null ? void 0 : o.disabledPlaceholderText : (n = p.chatInput) == null ? void 0 : n.enabledPlaceholderText, F = () => {
|
|
1174
|
+
b || P(!0);
|
|
1175
|
+
}, H = () => {
|
|
1176
|
+
P(!1);
|
|
1177
|
+
}, z = () => {
|
|
1178
|
+
_(!0);
|
|
1179
|
+
}, R = () => {
|
|
1180
|
+
_(!1);
|
|
1181
|
+
}, X = async (G) => {
|
|
1182
|
+
var Z;
|
|
1183
|
+
if (!D && G.key === "Enter") {
|
|
1184
|
+
if (G.shiftKey) return void ((Z = p.chatInput) != null && Z.allowNewline || G.preventDefault());
|
|
1185
|
+
G.preventDefault(), await O();
|
|
1186
|
+
}
|
|
1187
|
+
}, AA = (G) => {
|
|
1188
|
+
g.current && (Q(G.target.value), h(g.current.value.length));
|
|
1189
|
+
};
|
|
1190
|
+
return c("div", { "aria-label": ((r = p.ariaLabel) == null ? void 0 : r.inputTextArea) ?? "input text area", role: "textbox", onMouseDown: (G) => {
|
|
1191
|
+
var Z;
|
|
1192
|
+
G.stopPropagation(), !m && ((Z = p.general) == null ? void 0 : Z.flowStartTrigger) === "ON_CHATBOT_INTERACT" && B(!0);
|
|
1193
|
+
}, style: { ...f.chatInputContainerStyle }, className: "rcb-chat-input", children: [E && (a = p.sensitiveInput) != null && a.maskInTextArea ? c("input", { ref: g, type: "password", className: "rcb-chat-input-textarea", style: b ? k : v ? I : x, placeholder: C, onChange: AA, onKeyDown: X, onFocus: F, onBlur: H, onCompositionStart: z, onCompositionEnd: R }) : c("textarea", { ref: g, style: b ? k : v ? I : x, rows: 1, className: "rcb-chat-input-textarea", placeholder: C, onChange: AA, onKeyDown: X, onFocus: F, onBlur: H, onCompositionStart: z, onCompositionEnd: R }), c(q, { children: [A == null ? void 0 : A.map((G, Z) => c(q, { children: G }, Z)), ((s = p.chatInput) == null ? void 0 : s.showCharacterCount) && ((i = p.chatInput) == null ? void 0 : i.characterLimit) != null && ((l = p.chatInput) == null ? void 0 : l.characterLimit) > 0 && c("div", { className: "rcb-chat-input-char-counter", style: y >= ((u = p.chatInput) == null ? void 0 : u.characterLimit) ? S : L, children: [y, "/", (d = p.chatInput) == null ? void 0 : d.characterLimit] })] })] });
|
|
1194
|
+
}, gn = ({ buttons: A }) => {
|
|
1195
|
+
var e;
|
|
1196
|
+
const { settings: t } = N(), { styles: o } = K();
|
|
1197
|
+
return c("div", { "data-testid": "chatbot-footer-container", style: { ...o.footerStyle }, className: "rcb-chat-footer-container", children: [c("div", { className: "rcb-chat-footer", children: A == null ? void 0 : A.map((n, r) => c(q, { children: n }, r)) }), c("span", { children: (e = t.footer) == null ? void 0 : e.text })] });
|
|
1198
|
+
}, wn = () => {
|
|
1199
|
+
var A, e, t, o, n, r, a;
|
|
1200
|
+
const { settings: s } = N(), { styles: i } = K(), { unreadCount: l } = tA(), { isChatWindowOpen: u, toggleChatWindow: d } = cA(), w = { backgroundImage: `linear-gradient(to right, ${(A = s.general) == null ? void 0 : A.secondaryColor},
|
|
1201
|
+
${(e = s.general) == null ? void 0 : e.primaryColor})`, ...i.chatButtonStyle }, p = { backgroundImage: `url(${(t = s.chatButton) == null ? void 0 : t.icon})`, fill: "#fff", width: 75, height: 75, ...i.chatIconStyle };
|
|
1202
|
+
return c(q, { children: !((o = s.general) != null && o.embedded) && c("div", { "aria-label": ((n = s.ariaLabel) == null ? void 0 : n.chatButton) ?? "open chat", role: "button", style: w, className: "rcb-toggle-button " + (u ? "rcb-button-hide" : "rcb-button-show"), onClick: () => d(!0), children: [(() => {
|
|
1203
|
+
var f;
|
|
1204
|
+
const b = (f = s.chatButton) == null ? void 0 : f.icon;
|
|
1205
|
+
return b && typeof b != "string" ? b && c("span", { className: "rcb-toggle-icon", children: c(b, { style: p }) }) : c("span", { className: "rcb-toggle-icon", style: p });
|
|
1206
|
+
})(), !((r = s.notification) != null && r.disabled) && ((a = s.notification) == null ? void 0 : a.showCount) && c("span", { style: { ...i.notificationBadgeStyle }, className: "rcb-badge", children: l })] }) });
|
|
1207
|
+
}, vn = () => {
|
|
1208
|
+
var A, e, t, o;
|
|
1209
|
+
const n = qA(), { settings: r } = N(), { styles: a } = K(), { chatBodyRef: s } = oA(), { isChatWindowOpen: i, toggleChatWindow: l } = cA(), [u, d] = U(!1), [w, p] = U(!1), [f, b] = U(0);
|
|
1210
|
+
Y(() => {
|
|
1211
|
+
var m, B, h;
|
|
1212
|
+
const g = (m = r.tooltip) == null ? void 0 : m.mode;
|
|
1213
|
+
if (g === "ALWAYS") if (n) {
|
|
1214
|
+
let v;
|
|
1215
|
+
v = i ? (((B = s.current) == null ? void 0 : B.offsetWidth) ?? 375) - (typeof ((h = a.chatButtonStyle) == null ? void 0 : h.width) == "number" ? a.chatButtonStyle.width : 75) : 0, b(v), d(!0);
|
|
1216
|
+
} else d(!i);
|
|
1217
|
+
else g === "NEVER" ? d(!1) : g === "START" ? w ? d(!1) : (p(!0), d(!0)) : g === "CLOSE" && d(!i);
|
|
1218
|
+
}, [i]);
|
|
1219
|
+
const E = { transform: `translateX(-${f}px)`, right: (((A = a.chatButtonStyle) == null ? void 0 : A.width) ?? 75) + 40, bottom: 30, backgroundColor: (e = r.general) == null ? void 0 : e.secondaryColor, color: "#fff", ...a.tooltipStyle }, y = { borderColor: `transparent transparent transparent ${E.backgroundColor}` };
|
|
1220
|
+
return c(q, { children: !((t = r.general) != null && t.embedded) && c("div", { "data-testid": "chat-tooltip", style: E, className: "rcb-chat-tooltip " + (u ? "rcb-tooltip-show" : "rcb-tooltip-hide"), onClick: () => l(!0), children: [c("span", { children: (o = r.tooltip) == null ? void 0 : o.text }), c("span", { className: "rcb-chat-tooltip-tail", style: y })] }) });
|
|
1221
|
+
}, pn = ({ id: A, content: e, timeout: t }) => {
|
|
1222
|
+
var o, n;
|
|
1223
|
+
const { settings: r } = N(), { styles: a } = K(), [s] = U({ toastPromptStyle: { ...a.toastPromptStyle }, toastPromptHoveredStyle: { ...a.toastPromptHoveredStyle } }), { dismissToast: i } = XA(), [l, u] = U(!1), d = { color: (o = r.general) == null ? void 0 : o.primaryColor, borderColor: (n = r.general) == null ? void 0 : n.primaryColor, ...s.toastPromptHoveredStyle };
|
|
1224
|
+
return Y(() => {
|
|
1225
|
+
if (t) {
|
|
1226
|
+
const w = setTimeout(() => {
|
|
1227
|
+
i(A);
|
|
1228
|
+
}, t);
|
|
1229
|
+
return () => clearTimeout(w);
|
|
1230
|
+
}
|
|
1231
|
+
}, [A, i, t]), typeof e == "string" ? c("div", { onMouseEnter: () => {
|
|
1232
|
+
u(!0);
|
|
1233
|
+
}, onMouseLeave: () => {
|
|
1234
|
+
u(!1);
|
|
1235
|
+
}, style: l ? d : s.toastPromptStyle, onMouseDown: async (w) => {
|
|
1236
|
+
var p;
|
|
1237
|
+
(p = r.toast) != null && p.dismissOnClick && (w.preventDefault(), await i(A));
|
|
1238
|
+
}, className: "rcb-toast-prompt", children: e }) : c(q, { children: e });
|
|
1239
|
+
}, hn = () => {
|
|
1240
|
+
var A, e, t, o, n, r, a, s, i, l, u, d;
|
|
1241
|
+
const { styles: w } = K(), { toasts: p } = Pt(), f = { bottom: `calc(${typeof ((A = w.footerStyle) == null ? void 0 : A.height) == "number" ? `${(e = w.footerStyle) == null ? void 0 : e.height}px` : ((t = w.footerStyle) == null ? void 0 : t.height) ?? "50px"} + ${typeof ((o = w.chatInputContainerStyle) == null ? void 0 : o.height) == "number" ? `${(n = w.chatInputContainerStyle) == null ? void 0 : n.height}px` : ((r = w.chatInputContainerStyle) == null ? void 0 : r.height) ?? "70px"} + 20px)`, width: 300, minWidth: `calc(${typeof ((a = w.chatWindowStyle) == null ? void 0 : a.width) == "number" ? `${(s = w.chatWindowStyle) == null ? void 0 : s.width}px` : ((i = w.chatWindowStyle) == null ? void 0 : i.width) ?? "375px"} / 2)`, maxWidth: `calc(${typeof ((l = w.chatWindowStyle) == null ? void 0 : l.width) == "number" ? `${(u = w.chatWindowStyle) == null ? void 0 : u.width}px` : ((d = w.chatWindowStyle) == null ? void 0 : d.width) ?? "375px"} - 50px)`, ...w.toastPromptContainerStyle };
|
|
1242
|
+
return c("div", { className: "rcb-toast-prompt-container", style: f, children: p.map((b) => c(pn, { id: b.id, content: b.content, timeout: b.timeout }, b.id)) });
|
|
1243
|
+
}, Et = ({ file: A, fileType: e, fileUrl: t }) => {
|
|
1244
|
+
var o, n, r;
|
|
1245
|
+
const { settings: a } = N(), { styles: s } = K(), i = { backgroundColor: (o = a.general) == null ? void 0 : o.primaryColor, maxWidth: (n = a.userBubble) != null && n.showAvatar ? "65%" : "70%", ...s.mediaDisplayContainerStyle };
|
|
1246
|
+
return c(q, { children: t ? c(q, { children: [e === "image" && t && c("div", { style: i, className: "rcb-media-display-image-container rcb-media-entry", "data-testid": "media-display-image-container", children: c("img", { src: t, alt: "Image Display", className: "rcb-media-display-image" }) }), e === "video" && t && c("div", { style: i, className: "rcb-media-display-video-container rcb-media-entry", "data-testid": "media-display-video-container", children: c("video", { controls: !0, className: "rcb-media-display-video", children: [c("source", { src: t, type: A.type }), "Your browser does not support the video tag."] }) }), e === "audio" && t && c("audio", { "data-testid": "media-display-audio-container", style: { maxWidth: (r = a.userBubble) != null && r.showAvatar ? "65%" : "70%" }, controls: !0, className: "rcb-media-display-audio rcb-media-entry", children: [c("source", { src: t, type: A.type }), "Your browser does not support the audio tag."] })] }) : c(q, {}) });
|
|
1247
|
+
}, Dt = async (A) => {
|
|
1248
|
+
if (!A) return { fileType: null, fileUrl: null };
|
|
1249
|
+
const e = A.type.split("/")[0];
|
|
1250
|
+
if (!["image", "video", "audio"].includes(e)) return { fileType: null, fileUrl: null };
|
|
1251
|
+
try {
|
|
1252
|
+
return { fileType: e, fileUrl: await new Promise((t, o) => {
|
|
1253
|
+
const n = new FileReader();
|
|
1254
|
+
n.onload = () => t(n.result), n.onerror = () => o(new Error("File reading failed")), n.readAsDataURL(A);
|
|
1255
|
+
}) };
|
|
1256
|
+
} catch (t) {
|
|
1257
|
+
return console.error(t), { fileType: null, fileUrl: null };
|
|
1258
|
+
}
|
|
1259
|
+
}, bn = () => {
|
|
1260
|
+
var A, e, t, o, n, r;
|
|
1261
|
+
const { settings: a } = N(), { styles: s } = K(), { injectMessage: i, simulateStreamMessage: l, streamMessage: u, removeMessage: d, endStreamMessage: w } = xA(), { getCurrPath: p, getPrevPath: f, goToPath: b, blockAllowsAttachment: E } = pe(), { flowRef: y, inputRef: m } = oA(), B = y.current, { showToast: h, dismissToast: g } = XA(), { dispatchRcbEvent: v } = uA(), { toggleChatWindow: P } = cA(), { setTextAreaValue: D } = IA(), { handleSubmitText: _ } = SA(), O = { cursor: `url("${(A = a.general) == null ? void 0 : A.actionDisabledIcon}"), auto`, ...s.fileAttachmentButtonStyle, ...s.fileAttachmentButtonDisabledStyle }, Q = { backgroundImage: `url(${(e = a.fileAttachment) == null ? void 0 : e.icon})`, fill: "#a6a6a6", ...s.fileAttachmentIconStyle }, x = { backgroundImage: `url(${(t = a.fileAttachment) == null ? void 0 : t.icon})`, fill: "#a6a6a6", ...s.fileAttachmentIconStyle, ...s.fileAttachmentIconDisabledStyle };
|
|
1262
|
+
return c("label", { "aria-label": ((o = a.ariaLabel) == null ? void 0 : o.fileAttachmentButton) ?? "upload file", role: "button", className: E ? "rcb-attach-button-enabled" : "rcb-attach-button-disabled", style: E ? { ...s.fileAttachmentButtonStyle } : O, children: [c("input", { className: "rcb-attach-input", role: "file", type: "file", onChange: async (I) => {
|
|
1263
|
+
var k, L, S, C;
|
|
1264
|
+
const F = I.target.files;
|
|
1265
|
+
if (!F) return;
|
|
1266
|
+
const H = Array.from(F);
|
|
1267
|
+
if (I.target.value = "", (k = a.event) != null && k.rcbUserUploadFile && (await v(T.USER_UPLOAD_FILE, { files: H })).defaultPrevented) return;
|
|
1268
|
+
const z = p();
|
|
1269
|
+
if (!z) return;
|
|
1270
|
+
const R = B[z];
|
|
1271
|
+
if (!R) return;
|
|
1272
|
+
const X = R.file;
|
|
1273
|
+
if (X != null) {
|
|
1274
|
+
const AA = [];
|
|
1275
|
+
for (let G = 0; G < H.length; G++) {
|
|
1276
|
+
if (AA.push(H[G].name), (L = a.fileAttachment) == null || !L.showMediaDisplay) continue;
|
|
1277
|
+
const Z = await Dt(H[G]);
|
|
1278
|
+
!Z.fileType || !Z.fileUrl || await i(c(Et, { file: H[G], fileType: Z.fileType, fileUrl: Z.fileUrl }), "USER");
|
|
1279
|
+
}
|
|
1280
|
+
await _("📄 " + AA.join(", "), (S = a.fileAttachment) == null ? void 0 : S.sendFileName), await X({ userInput: (C = m.current) == null ? void 0 : C.value, prevPath: f(), currPath: p(), goToPath: b, setTextAreaValue: D, injectMessage: i, simulateStreamMessage: l, streamMessage: u, removeMessage: d, endStreamMessage: w, toggleChatWindow: P, showToast: h, dismissToast: g, files: H });
|
|
1281
|
+
}
|
|
1282
|
+
}, multiple: (n = a.fileAttachment) == null ? void 0 : n.multiple, accept: (r = a.fileAttachment) == null ? void 0 : r.accept, disabled: !E }), (() => {
|
|
1283
|
+
var I, k;
|
|
1284
|
+
const L = E ? (I = a.fileAttachment) == null ? void 0 : I.icon : (k = a.fileAttachment) == null ? void 0 : k.iconDisabled;
|
|
1285
|
+
return L && typeof L != "string" ? L && c("span", { className: E ? "rcb-attach-icon-enabled" : "rcb-attach-icon-disabled", children: c(L, { style: E ? Q : x }) }) : c("span", { className: E ? "rcb-attach-icon-enabled" : "rcb-attach-icon-disabled", style: E ? Q : x });
|
|
1286
|
+
})()] });
|
|
1287
|
+
}, mn = () => {
|
|
1288
|
+
var A, e, t, o, n, r;
|
|
1289
|
+
const { settings: a } = N(), { styles: s } = K(), { syncedTextAreaDisabledRef: i } = tA(), { inputRef: l } = oA(), { textAreaDisabled: u, setTextAreaValue: d } = IA(), w = J(null), p = J(null), [f, b] = U(!1), E = { cursor: `url("${(A = a.general) == null ? void 0 : A.actionDisabledIcon}"), auto`, ...s.emojiButtonStyle, ...s.emojiButtonDisabledStyle }, y = { backgroundImage: `url(${(e = a.emoji) == null ? void 0 : e.icon})`, fill: "#a6a6a6", ...s.emojiIconStyle }, m = { backgroundImage: `url(${(t = a.emoji) == null ? void 0 : t.icon})`, fill: "#a6a6a6", ...s.emojiIconStyle, ...s.emojiIconDisabledStyle };
|
|
1290
|
+
return Y(() => {
|
|
1291
|
+
const B = (g) => {
|
|
1292
|
+
const v = g.composedPath();
|
|
1293
|
+
w.current && !v.includes(w.current) && p.current && !v.includes(p.current) && b(!1);
|
|
1294
|
+
}, h = () => {
|
|
1295
|
+
(() => {
|
|
1296
|
+
if (w.current && p.current) {
|
|
1297
|
+
const g = p.current.getBoundingClientRect(), v = w.current.offsetHeight, P = g.top - v - 8;
|
|
1298
|
+
w.current.style.left = `${g.left}px`, w.current.style.top = `${P}px`;
|
|
1299
|
+
}
|
|
1300
|
+
})();
|
|
1301
|
+
};
|
|
1302
|
+
return document.addEventListener("mousedown", B), window.addEventListener("resize", h), () => {
|
|
1303
|
+
document.removeEventListener("mousedown", B), window.removeEventListener("resize", h);
|
|
1304
|
+
};
|
|
1305
|
+
}, []), c(q, { children: [c("div", { "aria-label": ((o = a.ariaLabel) == null ? void 0 : o.emojiButton) ?? "emoji picker", role: "button", ref: p, className: u ? "rcb-emoji-button-disabled" : "rcb-emoji-button-enabled", style: u ? E : { ...s.emojiButtonStyle }, onMouseDown: (B) => {
|
|
1306
|
+
B.preventDefault(), i.current ? b(!1) : b((h) => !h);
|
|
1307
|
+
}, children: (() => {
|
|
1308
|
+
var B, h;
|
|
1309
|
+
const g = u ? (B = a.emoji) == null ? void 0 : B.iconDisabled : (h = a.emoji) == null ? void 0 : h.icon;
|
|
1310
|
+
return g && typeof g != "string" ? g && c("span", { className: u ? "rcb-emoji-icon-disabled" : "rcb-emoji-icon-enabled", children: c(g, { style: u ? m : y }) }) : c("span", { className: u ? "rcb-emoji-icon-disabled" : "rcb-emoji-icon-enabled", style: u ? m : y });
|
|
1311
|
+
})() }), f && c("div", { className: "rcb-emoji-button-popup", ref: w, children: (r = (n = a.emoji) == null ? void 0 : n.list) == null ? void 0 : r.map((B, h) => c("span", { className: "rcb-emoji", onMouseDown: (g) => ((v, P) => {
|
|
1312
|
+
v.preventDefault(), l.current && (d(l.current.value + P), setTimeout(() => {
|
|
1313
|
+
const D = l.current;
|
|
1314
|
+
if (D) {
|
|
1315
|
+
D.focus();
|
|
1316
|
+
const _ = D.value.length;
|
|
1317
|
+
D.setSelectionRange(_, _);
|
|
1318
|
+
}
|
|
1319
|
+
}, 50)), b(!1);
|
|
1320
|
+
})(g, B), children: B }, h)) })] });
|
|
1321
|
+
}, Bn = () => {
|
|
1322
|
+
var A, e, t;
|
|
1323
|
+
const { settings: o } = N(), { styles: n } = K(), { audioToggledOn: r, toggleAudio: a } = Bt(), s = { backgroundImage: `url(${(A = o.audio) == null ? void 0 : A.icon})`, fill: "#fcec3d", ...n.audioIconStyle }, i = { backgroundImage: `url(${(e = o.audio) == null ? void 0 : e.iconDisabled})`, fill: "#e8eaed", ...n.audioIconStyle, ...n.audioIconDisabledStyle };
|
|
1324
|
+
return c("div", { "aria-label": ((t = o.ariaLabel) == null ? void 0 : t.audioButton) ?? "toggle audio", role: "button", onMouseDown: async (l) => {
|
|
1325
|
+
l.preventDefault(), await a();
|
|
1326
|
+
}, style: r ? { ...n.audioButtonStyle } : { ...n.audioButtonStyle, ...n.audioButtonDisabledStyle }, children: (() => {
|
|
1327
|
+
var l, u;
|
|
1328
|
+
const d = r ? (l = o.audio) == null ? void 0 : l.icon : (u = o.audio) == null ? void 0 : u.iconDisabled;
|
|
1329
|
+
return d && typeof d != "string" ? d && c("span", { className: "rcb-audio-icon", "data-testid": "rcb-audio-icon", children: c(d, { style: r ? s : i, "data-testid": "rcb-audio-icon-svg" }) }) : c("span", { className: "rcb-audio-icon", "data-testid": "rcb-audio-icon", style: r ? s : i });
|
|
1330
|
+
})() });
|
|
1331
|
+
}, yn = () => {
|
|
1332
|
+
var A, e;
|
|
1333
|
+
const { settings: t } = N(), { styles: o } = K(), { toggleChatWindow: n } = cA(), r = { backgroundImage: `url(${(A = t.header) == null ? void 0 : A.closeChatIcon})`, fill: "#e8eaed", stroke: "#e8eaed", ...o.closeChatIconStyle };
|
|
1334
|
+
return c("div", { "aria-label": ((e = t.ariaLabel) == null ? void 0 : e.closeChatButton) ?? "close chat", role: "button", onMouseDown: (a) => {
|
|
1335
|
+
a.stopPropagation(), n(!1);
|
|
1336
|
+
}, style: { ...o.closeChatButtonStyle }, children: (() => {
|
|
1337
|
+
var a;
|
|
1338
|
+
const s = (a = t.header) == null ? void 0 : a.closeChatIcon;
|
|
1339
|
+
return s && typeof s != "string" ? s && c("span", { className: "rcb-close-chat-icon", "data-testid": "rcb-close-chat-icon", children: c(s, { style: r }) }) : c("span", { className: "rcb-close-chat-icon", "data-testid": "rcb-close-chat-icon", style: r });
|
|
1340
|
+
})() });
|
|
1341
|
+
}, Pn = () => {
|
|
1342
|
+
var A, e, t;
|
|
1343
|
+
const { settings: o } = N(), { styles: n } = K(), { notificationsToggledOn: r, toggleNotifications: a } = (() => {
|
|
1344
|
+
const { notificationsToggledOn: l, toggleNotifications: u, playNotificationSound: d } = fe();
|
|
1345
|
+
return { notificationsToggledOn: l, toggleNotifications: u, playNotificationSound: d };
|
|
1346
|
+
})(), s = { backgroundImage: `url(${(A = o.notification) == null ? void 0 : A.icon})`, fill: "#fcec3d", ...n.notificationIconStyle }, i = { backgroundImage: `url(${(e = o.notification) == null ? void 0 : e.iconDisabled})`, fill: "#e8eaed", ...n.notificationIconStyle, ...n.notificationIconDisabledStyle };
|
|
1347
|
+
return c("div", { "aria-label": ((t = o.ariaLabel) == null ? void 0 : t.notificationButton) ?? "toggle notifications", role: "button", onMouseDown: async (l) => {
|
|
1348
|
+
l.preventDefault(), await a();
|
|
1349
|
+
}, style: r ? { ...n.notificationButtonStyle } : { ...n.notificationButtonStyle, ...n.notificationButtonDisabledStyle }, children: (() => {
|
|
1350
|
+
var l, u;
|
|
1351
|
+
const d = r ? (l = o.notification) == null ? void 0 : l.icon : (u = o.notification) == null ? void 0 : u.iconDisabled;
|
|
1352
|
+
return d && typeof d != "string" ? d && c("span", { className: "rcb-notification-icon", "data-testid": "rcb-notification-icon", children: c(d, { style: r ? s : i, "data-testid": "rcb-notification-icon-svg" }) }) : c("span", { className: "rcb-notification-icon", "data-testid": "rcb-notification-icon", style: r ? s : i });
|
|
1353
|
+
})() });
|
|
1354
|
+
}, En = () => {
|
|
1355
|
+
var A, e, t;
|
|
1356
|
+
const { settings: o } = N(), { styles: n } = K(), { injectMessage: r } = xA(), { inputRef: a } = oA(), { voiceToggledOn: s, toggleVoice: i } = ve(), { setInputLength: l, setTextAreaValue: u, textAreaDisabled: d } = IA(), { handleSubmitText: w } = SA(), p = J([]), [f, b] = U(!1);
|
|
1357
|
+
Y(() => {
|
|
1358
|
+
var h;
|
|
1359
|
+
(h = o.voice) != null && h.sendAsAudio ? (B(), p.current = []) : w();
|
|
1360
|
+
}, [f]), Y(() => {
|
|
1361
|
+
s ? ((h, g, v, P, D, _, O) => {
|
|
1362
|
+
var Q;
|
|
1363
|
+
(Q = h.voice) != null && Q.sendAsAudio ? dn(v, _) : cn(h, g, v, P, D, O);
|
|
1364
|
+
})(o, i, m, u, l, p, a) : we();
|
|
1365
|
+
}, [s]);
|
|
1366
|
+
const E = { backgroundImage: `url(${(A = o.voice) == null ? void 0 : A.icon})`, fill: "#9aa0a6", ...n.voiceIconStyle }, y = { backgroundImage: `url(${(e = o.voice) == null ? void 0 : e.iconDisabled})`, fill: "#9aa0a6", ...n.voiceIconStyle, ...n.voiceIconDisabledStyle }, m = () => {
|
|
1367
|
+
b((h) => !h);
|
|
1368
|
+
}, B = async () => {
|
|
1369
|
+
const h = new Blob(p.current, { type: "audio/wav" }), g = new File([h], "voice-input.wav", { type: "audio/wav" }), v = await Dt(g);
|
|
1370
|
+
!v.fileType || !v.fileUrl || await r(c(Et, { file: g, fileType: v.fileType, fileUrl: v.fileUrl }), "USER");
|
|
1371
|
+
};
|
|
1372
|
+
return c("div", { "aria-label": ((t = o.ariaLabel) == null ? void 0 : t.voiceButton) ?? "toggle voice", role: "button", onMouseDown: async (h) => {
|
|
1373
|
+
h.preventDefault(), !d && await i();
|
|
1374
|
+
}, style: s && !d ? { ...n.voiceButtonStyle } : { ...n.voiceButtonStyle, ...n.voiceButtonDisabledStyle }, className: s && !d ? "rcb-voice-button-enabled" : "rcb-voice-button-disabled", children: (() => {
|
|
1375
|
+
var h, g;
|
|
1376
|
+
const v = s ? (h = o.voice) == null ? void 0 : h.icon : (g = o.voice) == null ? void 0 : g.iconDisabled;
|
|
1377
|
+
return v && typeof v != "string" ? v && c("span", { className: "rcb-voice-icon " + (s && !d ? "on" : ""), children: c(v, { style: s && !d ? E : y }) }) : c("span", { className: "rcb-voice-icon" + (s && !d ? "-on" : ""), "data-testid": "rcb-voice-icon", style: s && !d ? E : y });
|
|
1378
|
+
})() });
|
|
1379
|
+
}, Dn = () => {
|
|
1380
|
+
var A, e, t, o, n, r, a, s;
|
|
1381
|
+
const { settings: i } = N(), { styles: l } = K(), { textAreaDisabled: u } = tA(), [d, w] = U(!1), { handleSubmitText: p } = SA(), f = { backgroundColor: (A = i.general) == null ? void 0 : A.primaryColor, ...l.sendButtonStyle }, b = { cursor: `url("${(e = i.general) == null ? void 0 : e.actionDisabledIcon}"), auto`, backgroundColor: (t = i.general) == null ? void 0 : t.primaryColor, ...l.sendButtonStyle, ...l.sendButtonDisabledStyle }, E = { backgroundColor: (o = i.general) == null ? void 0 : o.secondaryColor, ...l.sendButtonStyle, ...l.sendButtonHoveredStyle }, y = { backgroundImage: `url(${(n = i.chatInput) == null ? void 0 : n.sendButtonIcon})`, fill: "#fff", ...l.sendIconStyle }, m = { backgroundImage: `url(${(r = i.chatInput) == null ? void 0 : r.sendButtonIcon})`, fill: "#fff", ...l.sendIconStyle, ...l.sendIconDisabledStyle }, B = { backgroundImage: `url(${(a = i.chatInput) == null ? void 0 : a.sendButtonIcon})`, fill: "#fff", ...l.sendIconStyle, ...l.sendIconHoveredStyle };
|
|
1382
|
+
return c("div", { "aria-label": ((s = i.ariaLabel) == null ? void 0 : s.sendButton) ?? "send message", role: "button", onMouseEnter: () => {
|
|
1383
|
+
w(!0);
|
|
1384
|
+
}, onMouseLeave: () => {
|
|
1385
|
+
w(!1);
|
|
1386
|
+
}, onMouseDown: async (h) => {
|
|
1387
|
+
h == null || h.preventDefault(), !u && await p();
|
|
1388
|
+
}, style: u ? b : d ? E : f, className: "rcb-send-button", children: (() => {
|
|
1389
|
+
var h;
|
|
1390
|
+
const g = (h = i.chatInput) == null ? void 0 : h.sendButtonIcon;
|
|
1391
|
+
return g && typeof g != "string" ? g && c("span", { className: "rcb-send-icon", "data-testid": "rcb-send-icon", children: c(g, { style: u ? m : d ? B : y }) }) : c("span", { className: "rcb-send-icon", "data-testid": "rcb-send-icon", style: u ? m : d ? B : y });
|
|
1392
|
+
})() });
|
|
1393
|
+
}, Cn = (A, e) => {
|
|
1394
|
+
var t, o, n, r, a, s, i, l, u;
|
|
1395
|
+
const d = { [$.AUDIO_BUTTON]: (t = A.audio) == null ? void 0 : t.disabled, [$.CLOSE_CHAT_BUTTON]: (o = A.general) == null ? void 0 : o.embedded, [$.EMOJI_PICKER_BUTTON]: (n = A.emoji) == null ? void 0 : n.disabled, [$.FILE_ATTACHMENT_BUTTON]: (r = A.fileAttachment) == null ? void 0 : r.disabled, [$.NOTIFICATION_BUTTON]: (a = A.notification) == null ? void 0 : a.disabled, [$.SEND_MESSAGE_BUTTON]: !1, [$.VOICE_MESSAGE_BUTTON]: (s = A.voice) == null ? void 0 : s.disabled }, w = {}, p = (f) => f ? f.map((b) => {
|
|
1396
|
+
if (typeof b == "string") {
|
|
1397
|
+
if (((E) => Object.values($).includes(E))(b) && !d[b]) {
|
|
1398
|
+
if (w[b]) return w[b];
|
|
1399
|
+
const E = e[b];
|
|
1400
|
+
if (typeof E == "function") {
|
|
1401
|
+
const y = E();
|
|
1402
|
+
return w[b] = y, y;
|
|
1403
|
+
}
|
|
1404
|
+
return null;
|
|
1405
|
+
}
|
|
1406
|
+
return null;
|
|
1407
|
+
}
|
|
1408
|
+
return b;
|
|
1409
|
+
}).filter((b) => b !== null) : [];
|
|
1410
|
+
return { header: p((i = A.header) == null ? void 0 : i.buttons), chatInput: p((l = A.chatInput) == null ? void 0 : l.buttons), footer: p((u = A.footer) == null ? void 0 : u.buttons) };
|
|
1411
|
+
}, Qn = () => {
|
|
1412
|
+
const { settings: A } = N(), e = iA(() => ({ [$.CLOSE_CHAT_BUTTON]: () => c(yn, {}), [$.AUDIO_BUTTON]: () => c(Bn, {}), [$.NOTIFICATION_BUTTON]: () => c(Pn, {}), [$.EMOJI_PICKER_BUTTON]: () => c(mn, {}), [$.FILE_ATTACHMENT_BUTTON]: () => c(bn, {}), [$.SEND_MESSAGE_BUTTON]: () => c(Dn, {}), [$.VOICE_MESSAGE_BUTTON]: () => c(En, {}) }), []), { header: t, chatInput: o, footer: n } = iA(() => Cn(A, e), [A, e]);
|
|
1413
|
+
return { headerButtons: iA(() => t, [t]), chatInputButtons: iA(() => o, [o]), footerButtons: iA(() => n, [n]) };
|
|
1414
|
+
}, Ct = () => {
|
|
1415
|
+
const { settings: A } = N(), { styles: e } = K(), { setSyncedMessages: t, syncedMessagesRef: o } = ue(), { isLoadingChatHistory: n, setIsLoadingChatHistory: r, hasChatHistoryLoaded: a, setHasChatHistoryLoaded: s } = tA(), { chatBodyRef: i } = oA(), { dispatchRcbEvent: l } = uA(), u = M(async () => {
|
|
1416
|
+
var d, w;
|
|
1417
|
+
const p = ht();
|
|
1418
|
+
if (!p || (d = A.event) != null && d.rcbLoadChatHistory && (await l(T.LOAD_CHAT_HISTORY, {})).defaultPrevented) return;
|
|
1419
|
+
r(!0);
|
|
1420
|
+
const f = ((w = i.current) == null ? void 0 : w.scrollHeight) ?? 0;
|
|
1421
|
+
((b, E, y, m, B, h, g, v, P) => {
|
|
1422
|
+
var D;
|
|
1423
|
+
if (vt = !0, y != null) try {
|
|
1424
|
+
const _ = BA(c($o, {}), "SYSTEM"), O = B.current.slice(1);
|
|
1425
|
+
m([_, ...O]);
|
|
1426
|
+
const Q = y.map((x) => {
|
|
1427
|
+
if (x.type === "object") {
|
|
1428
|
+
const I = bt(x.content, b, E);
|
|
1429
|
+
return { ...x, content: I };
|
|
1430
|
+
}
|
|
1431
|
+
return x;
|
|
1432
|
+
});
|
|
1433
|
+
setTimeout(() => {
|
|
1434
|
+
var x;
|
|
1435
|
+
const I = B.current.slice(1);
|
|
1436
|
+
let k = (x = b.chatHistory) != null && x.autoLoad ? BA(c(q, {}), "SYSTEM") : BA(c(Zo, {}), "SYSTEM");
|
|
1437
|
+
m([...Q, k, ...I]), P(!0);
|
|
1438
|
+
}, 500), setTimeout(() => {
|
|
1439
|
+
if (!h.current) return;
|
|
1440
|
+
const { scrollHeight: x } = h.current, I = x - g;
|
|
1441
|
+
h.current.scrollTop += I, v(!1);
|
|
1442
|
+
}, 510);
|
|
1443
|
+
} catch {
|
|
1444
|
+
EA.removeItem((D = b.chatHistory) == null ? void 0 : D.storageKey);
|
|
1445
|
+
}
|
|
1446
|
+
})(A, e, p, t, o, i, f, r, s);
|
|
1447
|
+
}, [A, e, l, o, i, r, s]);
|
|
1448
|
+
return { isLoadingChatHistory: n, setIsLoadingChatHistory: r, hasChatHistoryLoaded: a, showChatHistory: u };
|
|
1449
|
+
}, xn = () => {
|
|
1450
|
+
var A, e, t;
|
|
1451
|
+
const { settings: o } = N(), { styles: n } = K(), { showChatHistory: r } = Ct(), [a, s] = U(!1), i = { color: (A = o.general) == null ? void 0 : A.primaryColor, borderColor: (e = o.general) == null ? void 0 : e.primaryColor, ...n.chatHistoryButtonStyle, ...n.chatHistoryButtonHoveredStyle };
|
|
1452
|
+
return c("div", { className: "rcb-view-history-container", children: c("div", { onMouseEnter: () => {
|
|
1453
|
+
s(!0);
|
|
1454
|
+
}, onMouseLeave: () => {
|
|
1455
|
+
s(!1);
|
|
1456
|
+
}, style: a ? i : { ...n.chatHistoryButtonStyle }, onMouseDown: (l) => {
|
|
1457
|
+
l.preventDefault(), r();
|
|
1458
|
+
}, className: "rcb-view-history-button", role: "button", tabIndex: 0, children: c("p", { children: (t = o.chatHistory) == null ? void 0 : t.viewChatHistoryButtonText }) }) });
|
|
1459
|
+
}, In = () => {
|
|
1460
|
+
var A, e, t, o;
|
|
1461
|
+
const n = qA(), { settings: r } = N(), { replaceMessages: a } = xA(), { isBotTyping: s, isChatWindowOpen: i, setUnreadCount: l, setSyncedIsChatWindowOpen: u, setSyncedTextAreaDisabled: d, setSyncedAudioToggledOn: w, setSyncedVoiceToggledOn: p, setSyncedIsScrolling: f, syncedIsScrollingRef: b, syncedIsChatWindowOpenRef: E } = tA(), { chatBodyRef: y } = oA(), { viewportHeight: m, setViewportHeight: B, setViewportWidth: h, scrollToBottom: g } = cA(), { setUpNotifications: v } = fe(), { handleFirstInteraction: P } = (() => {
|
|
1462
|
+
var Q;
|
|
1463
|
+
const { settings: x } = N(), { hasInteractedPage: I, setHasInteractedPage: k, hasFlowStarted: L, setHasFlowStarted: S } = tA(), C = M(() => {
|
|
1464
|
+
var F;
|
|
1465
|
+
if (k(!0), !L && ((F = x.general) == null ? void 0 : F.flowStartTrigger) === "ON_PAGE_INTERACT" && S(!0), !window.SpeechSynthesisUtterance) return void console.info("Speech Synthesis API is not supported in this environment.");
|
|
1466
|
+
const H = new window.SpeechSynthesisUtterance();
|
|
1467
|
+
H.text = "", H.onend = () => {
|
|
1468
|
+
window.removeEventListener("click", C), window.removeEventListener("keydown", C), window.removeEventListener("touchstart", C);
|
|
1469
|
+
}, window.speechSynthesis.speak(H);
|
|
1470
|
+
}, [L, (Q = x.general) == null ? void 0 : Q.flowStartTrigger]);
|
|
1471
|
+
return { hasInteractedPage: I, handleFirstInteraction: C };
|
|
1472
|
+
})(), { showChatHistory: D } = Ct(), _ = J(0), O = J(!1);
|
|
1473
|
+
Y(() => (window.addEventListener("click", P), window.addEventListener("keydown", P), window.addEventListener("touchstart", P), () => {
|
|
1474
|
+
window.removeEventListener("click", P), window.removeEventListener("keydown", P), window.removeEventListener("touchstart", P);
|
|
1475
|
+
}), []), Y(() => {
|
|
1476
|
+
const Q = y.current;
|
|
1477
|
+
if (!Q) return;
|
|
1478
|
+
const x = () => {
|
|
1479
|
+
O.current || (O.current = !0, requestAnimationFrame(() => {
|
|
1480
|
+
var I, k;
|
|
1481
|
+
if (!Q) return;
|
|
1482
|
+
const { scrollTop: L, clientHeight: S, scrollHeight: C } = Q, F = L + S < C - (((I = r.chatWindow) == null ? void 0 : I.messagePromptOffset) ?? 30);
|
|
1483
|
+
f(F), b.current = F, F || (L + S >= C - 1 && (Q.scrollTop = C - S - 1), (E.current || (k = r.general) != null && k.embedded) && l(0)), O.current = !1;
|
|
1484
|
+
}));
|
|
1485
|
+
};
|
|
1486
|
+
return Q.addEventListener("wheel", x, { passive: !0 }), Q.addEventListener("touchmove", x, { passive: !0 }), () => {
|
|
1487
|
+
Q.removeEventListener("wheel", x), Q.removeEventListener("touchmove", x);
|
|
1488
|
+
};
|
|
1489
|
+
}, []), Y(() => {
|
|
1490
|
+
var Q, x, I;
|
|
1491
|
+
d((Q = r.chatInput) == null ? void 0 : Q.disabled), u((x = r.chatWindow) == null ? void 0 : x.defaultOpen), w((I = r.audio) == null ? void 0 : I.defaultToggledOn), setTimeout(() => {
|
|
1492
|
+
var k;
|
|
1493
|
+
p((k = r.voice) == null ? void 0 : k.defaultToggledOn);
|
|
1494
|
+
}, 1);
|
|
1495
|
+
}, []), Y(() => {
|
|
1496
|
+
var Q;
|
|
1497
|
+
(Q = r.notification) != null && Q.disabled || v();
|
|
1498
|
+
}, [(A = r.notification) == null ? void 0 : A.disabled]), Y(() => {
|
|
1499
|
+
!b.current && y != null && y.current && g();
|
|
1500
|
+
}, [s]), Y(() => {
|
|
1501
|
+
var Q, x;
|
|
1502
|
+
if ((Q = r.chatHistory) != null && Q.disabled) EA && EA.removeItem(zA);
|
|
1503
|
+
else if (en(r), ht().length > 0) {
|
|
1504
|
+
const I = BA(c(xn, {}), "SYSTEM");
|
|
1505
|
+
a([I]), (x = r.chatHistory) != null && x.autoLoad && D();
|
|
1506
|
+
}
|
|
1507
|
+
}, [(e = r.chatHistory) == null ? void 0 : e.storageKey, (t = r.chatHistory) == null ? void 0 : t.maxEntries, (o = r.chatHistory) == null ? void 0 : o.disabled]), Y(() => {
|
|
1508
|
+
var Q;
|
|
1509
|
+
n || (Q = r.general) != null && Q.embedded || !navigator.virtualKeyboard || (navigator.virtualKeyboard.overlaysContent = !0, navigator.virtualKeyboard.addEventListener("geometrychange", (x) => {
|
|
1510
|
+
if (!x.target) return;
|
|
1511
|
+
const { x: I, y: k, width: L, height: S } = x.target.boundingRect;
|
|
1512
|
+
I == 0 && k == 0 && L == 0 && S == 0 ? (setTimeout(() => {
|
|
1513
|
+
var C;
|
|
1514
|
+
B((C = window.visualViewport) == null ? void 0 : C.height);
|
|
1515
|
+
}, 101), setTimeout(() => {
|
|
1516
|
+
var C, F;
|
|
1517
|
+
m != ((C = window.visualViewport) == null ? void 0 : C.height) && B((F = window.visualViewport) == null ? void 0 : F.height);
|
|
1518
|
+
}, 1001)) : setTimeout(() => {
|
|
1519
|
+
var C;
|
|
1520
|
+
B(((C = window.visualViewport) == null ? void 0 : C.height) - S);
|
|
1521
|
+
}, 101);
|
|
1522
|
+
}));
|
|
1523
|
+
}, [n]), Y(() => {
|
|
1524
|
+
var Q, x, I, k;
|
|
1525
|
+
if (n) return;
|
|
1526
|
+
i && (B((Q = window.visualViewport) == null ? void 0 : Q.height), h((x = window.visualViewport) == null ? void 0 : x.width));
|
|
1527
|
+
const L = () => window.scrollTo({ top: 0, left: 0, behavior: "auto" }), S = () => _.current = window.scrollY, C = () => {
|
|
1528
|
+
var H, z;
|
|
1529
|
+
B((H = window.visualViewport) == null ? void 0 : H.height), h((z = window.visualViewport) == null ? void 0 : z.width);
|
|
1530
|
+
}, F = () => {
|
|
1531
|
+
var H;
|
|
1532
|
+
window.removeEventListener("scroll", L), window.removeEventListener("scroll", S), (H = window.visualViewport) == null || H.removeEventListener("resize", C);
|
|
1533
|
+
};
|
|
1534
|
+
return i ? (F(), document.body.style.position = "fixed", window.addEventListener("scroll", L), (I = window.visualViewport) == null || I.addEventListener("resize", C)) : (document.body.style.position = "static", F(), window.scrollTo({ top: _.current, left: 0, behavior: "auto" }), window.addEventListener("scroll", S), (k = window.visualViewport) == null || k.removeEventListener("resize", C)), F;
|
|
1535
|
+
}, [i, n]);
|
|
1536
|
+
}, Sn = "https://cdn.jsdelivr.net/gh/tjtanjin/react-chatbotify-themes/themes", Tn = "2592000", _e = "RCB_THEME_CACHE_DATA", Ne = async (A, e) => {
|
|
1537
|
+
const { id: t, version: o, baseUrl: n = Sn, cacheDuration: r = Tn } = e, a = o || await (async (y, m) => {
|
|
1538
|
+
const B = `${m}/${y}/meta.json`;
|
|
1539
|
+
try {
|
|
1540
|
+
const h = await fetch(B);
|
|
1541
|
+
return h.ok ? (await h.json()).version : (console.error(`Failed to fetch meta.json from ${B}`), null);
|
|
1542
|
+
} catch (h) {
|
|
1543
|
+
return console.error(`Failed to fetch meta.json from ${B}`, h), null;
|
|
1544
|
+
}
|
|
1545
|
+
})(t, n);
|
|
1546
|
+
if (!a) return console.error(`Unable to find version for theme: ${t}`), { settings: {}, inlineStyles: {}, cssStylesText: "" };
|
|
1547
|
+
const s = ((y, m, B) => {
|
|
1548
|
+
const h = localStorage.getItem(`${_e}_${y}_${m}`);
|
|
1549
|
+
if (!h) return null;
|
|
1550
|
+
try {
|
|
1551
|
+
const g = JSON.parse(h), v = (/* @__PURE__ */ new Date()).getTime(), P = Math.floor(v / 1e3);
|
|
1552
|
+
return g.cacheDate + B >= P ? g : null;
|
|
1553
|
+
} catch (g) {
|
|
1554
|
+
return console.error(`Unable to fetch cache for ${y}`, g), null;
|
|
1555
|
+
}
|
|
1556
|
+
})(t, a, r);
|
|
1557
|
+
if (s) {
|
|
1558
|
+
const y = Re(A, s.cssStylesText);
|
|
1559
|
+
return { settings: s.settings, inlineStyles: s.inlineStyles, cssStylesText: y };
|
|
1560
|
+
}
|
|
1561
|
+
const i = `${n}/${t}/${a}/styles.css`, l = `${n}/${t}/${a}/settings.json`, u = `${n}/${t}/${a}/styles.json`;
|
|
1562
|
+
let d = "";
|
|
1563
|
+
const w = await fetch(i);
|
|
1564
|
+
w.ok ? d = await w.text() : console.info(`Could not fetch styles.css from ${i}`);
|
|
1565
|
+
const p = await fetch(l);
|
|
1566
|
+
let f = {};
|
|
1567
|
+
p.ok ? f = await p.json() : console.info(`Could not fetch settings.json from ${l}`);
|
|
1568
|
+
const b = await fetch(u);
|
|
1569
|
+
let E = {};
|
|
1570
|
+
return b.ok ? E = await b.json() : console.info(`Could not fetch styles.json from ${u}`), ((y, m, B, h, g) => {
|
|
1571
|
+
const v = (/* @__PURE__ */ new Date()).getTime(), P = { settings: B, inlineStyles: h, cssStylesText: g, cacheDate: Math.floor(v / 1e3) };
|
|
1572
|
+
localStorage.setItem(`${_e}_${y}_${m}`, JSON.stringify(P));
|
|
1573
|
+
})(t, a, f, E, d), { settings: f, inlineStyles: E, cssStylesText: Re(A, d) };
|
|
1574
|
+
}, Re = (A, e) => e.split(new RegExp("(?<=})")).map((t) => {
|
|
1575
|
+
const o = t.trim();
|
|
1576
|
+
return o.startsWith("@import") || o.startsWith("@keyframes") || o.startsWith("@media") ? o : o ? `#${A} ${o}` : "";
|
|
1577
|
+
}).join(`
|
|
1578
|
+
`), kn = async (A, e, t, o) => {
|
|
1579
|
+
var n, r;
|
|
1580
|
+
let a = YA(at), s = YA(st), i = "";
|
|
1581
|
+
if (o != null) if (Array.isArray(o)) for (const l of o) {
|
|
1582
|
+
const u = await Ne(A, l);
|
|
1583
|
+
a = wA(u.settings, a), s = wA(u.inlineStyles, s), i += u.cssStylesText;
|
|
1584
|
+
}
|
|
1585
|
+
else {
|
|
1586
|
+
const l = await Ne(A, o);
|
|
1587
|
+
a = wA(l.settings, a), s = wA(l.inlineStyles, s), i += l.cssStylesText;
|
|
1588
|
+
}
|
|
1589
|
+
return e != null && (a = wA(e, a)), t != null && (s = wA(t, s)), ((n = a.chatInput) == null ? void 0 : n.botDelay) != null && ((r = a.chatInput) == null ? void 0 : r.botDelay) < 500 && (a.chatInput.botDelay = 500), { settings: a, inlineStyles: s, cssStylesText: i };
|
|
1590
|
+
}, wA = (A, e) => {
|
|
1591
|
+
const t = [{ source: A, target: e }];
|
|
1592
|
+
for (; t.length; ) {
|
|
1593
|
+
const o = t.pop();
|
|
1594
|
+
if (o == null) continue;
|
|
1595
|
+
const { source: n, target: r } = o;
|
|
1596
|
+
for (const a of Object.keys(n)) {
|
|
1597
|
+
const s = a;
|
|
1598
|
+
if (QA(n[s])) r[s] = n[s];
|
|
1599
|
+
else if (typeof n[s] != "object" || n[s] === null || Array.isArray(n[s])) try {
|
|
1600
|
+
r[s] = n[s];
|
|
1601
|
+
} catch {
|
|
1602
|
+
}
|
|
1603
|
+
else (typeof r[s] != "object" || r[s] === null) && (r[s] = {}), t.push({ source: n[s], target: r[s] });
|
|
1604
|
+
}
|
|
1605
|
+
}
|
|
1606
|
+
return e;
|
|
1607
|
+
}, YA = (A) => {
|
|
1608
|
+
if (A === null || typeof A != "object") return A;
|
|
1609
|
+
const e = Array.isArray(A) ? [] : {}, t = [{ source: A, target: e }], o = /* @__PURE__ */ new WeakMap();
|
|
1610
|
+
for (o.set(A, e); t.length; ) {
|
|
1611
|
+
const n = t.pop();
|
|
1612
|
+
if (n == null) continue;
|
|
1613
|
+
const { source: r, target: a } = n;
|
|
1614
|
+
for (const s in r) if (Object.prototype.hasOwnProperty.call(r, s)) {
|
|
1615
|
+
const i = r[s];
|
|
1616
|
+
if (i && typeof i == "object") if (o.has(i)) a[s] = o.get(i);
|
|
1617
|
+
else {
|
|
1618
|
+
const l = Array.isArray(i) ? [] : {};
|
|
1619
|
+
o.set(i, l), a[s] = l, t.push({ source: i, target: l });
|
|
1620
|
+
}
|
|
1621
|
+
else a[s] = i;
|
|
1622
|
+
}
|
|
1623
|
+
}
|
|
1624
|
+
return e;
|
|
1625
|
+
}, Mn = (A) => {
|
|
1626
|
+
const { updateSettings: e } = (() => {
|
|
1627
|
+
const { settings: n, setSettings: r } = N(), a = M((i) => {
|
|
1628
|
+
!i || Object.keys(i).length === 0 || r(YA(wA(i, n)));
|
|
1629
|
+
}, [n]), s = M((i) => {
|
|
1630
|
+
r(i);
|
|
1631
|
+
}, []);
|
|
1632
|
+
return { settings: n, replaceSettings: s, updateSettings: a };
|
|
1633
|
+
})(), { updateStyles: t } = (() => {
|
|
1634
|
+
const { styles: n, setStyles: r } = K(), a = M((i) => {
|
|
1635
|
+
!i || Object.keys(i).length === 0 || r(YA(wA(i, n)));
|
|
1636
|
+
}, [n]), s = M((i) => {
|
|
1637
|
+
r(i);
|
|
1638
|
+
}, []);
|
|
1639
|
+
return { styles: n, replaceStyles: s, updateStyles: a };
|
|
1640
|
+
})(), o = A == null ? void 0 : A.map((n) => n());
|
|
1641
|
+
Y(() => {
|
|
1642
|
+
let n = {}, r = {};
|
|
1643
|
+
o == null || o.forEach((a) => {
|
|
1644
|
+
a != null && a.settings && Object.keys(a == null ? void 0 : a.settings).length !== 0 && (n = wA(a.settings, n)), a != null && a.styles && Object.keys(a == null ? void 0 : a.styles).length !== 0 && (r = wA(a.styles, r));
|
|
1645
|
+
}), e(n), t(r);
|
|
1646
|
+
}, []);
|
|
1647
|
+
}, On = ({ plugins: A }) => {
|
|
1648
|
+
var e, t, o, n, r;
|
|
1649
|
+
const a = qA(), { settings: s } = N(), { styles: i } = K(), { hasFlowStarted: l, setHasFlowStarted: u } = tA(), { inputRef: d } = oA(), { viewportHeight: w, viewportWidth: p, isChatWindowOpen: f } = cA(), { goToPath: b } = pe(), { headerButtons: E, chatInputButtons: y, footerButtons: m } = Qn();
|
|
1650
|
+
In(), Mn(A), Y(() => {
|
|
1651
|
+
var v;
|
|
1652
|
+
(l || ((v = s.general) == null ? void 0 : v.flowStartTrigger) === "ON_LOAD") && b("start");
|
|
1653
|
+
}, [l, (e = s.general) == null ? void 0 : e.flowStartTrigger]);
|
|
1654
|
+
const B = iA(() => {
|
|
1655
|
+
var v;
|
|
1656
|
+
const P = "rcb-chatbot-global ";
|
|
1657
|
+
return (v = s.general) != null && v.embedded ? P + "rcb-window-embedded" : f ? P + "rcb-window-open" : P + "rcb-window-close";
|
|
1658
|
+
}, [s, f]);
|
|
1659
|
+
return c(q, { children: (a && ((h = s.device) == null ? void 0 : h.desktopEnabled) || !a && ((g = s.device) == null ? void 0 : g.mobileEnabled)) && c("div", { onMouseDown: (v) => {
|
|
1660
|
+
var P, D;
|
|
1661
|
+
!l && ((P = s.general) == null ? void 0 : P.flowStartTrigger) === "ON_CHATBOT_INTERACT" && u(!0), a ? (D = d.current) == null || D.blur() : v == null || v.preventDefault();
|
|
1662
|
+
}, className: B, children: [c(vn, {}), c(wn, {}), f && !a && !((t = s.general) != null && t.embedded) && c(q, { children: [c("style", { children: `
|
|
1663
|
+
html {
|
|
1664
|
+
overflow: hidden !important;
|
|
1665
|
+
touch-action: none !important;
|
|
1666
|
+
scroll-behavior: auto !important;
|
|
1667
|
+
}
|
|
1668
|
+
` }), c("div", { style: { position: "fixed", top: 0, left: 0, width: "100%", height: "100%", backgroundColor: "#fff", zIndex: 9999 } })] }), c("div", { style: (() => {
|
|
1669
|
+
var v, P;
|
|
1670
|
+
return a || (v = s.general) != null && v.embedded ? (P = s.general) != null && P.embedded ? { ...i.chatWindowStyle } : { ...i.chatWindowStyle, zIndex: 1e4 } : { ...i.chatWindowStyle, borderRadius: "0px", left: "0px", right: "auto", top: "0px", bottom: "auto", width: `${p}px`, height: `${w}px`, zIndex: 1e4 };
|
|
1671
|
+
})(), className: "rcb-chat-window", children: [((o = s.general) == null ? void 0 : o.showHeader) && c(ko, { buttons: E }), c(Fo, {}), c(hn, {}), ((n = s.general) == null ? void 0 : n.showInputRow) && c(fn, { buttons: y }), ((r = s.general) == null ? void 0 : r.showFooter) && c(gn, { buttons: m })] })] }) });
|
|
1672
|
+
var h, g;
|
|
1673
|
+
}, Qt = bA(void 0), xt = () => pA(Qt), It = ({ children: A }) => {
|
|
1674
|
+
var e;
|
|
1675
|
+
const t = J(""), o = J({}), [n, r] = U({}), [a, s] = U({}), [i, l] = U(!1);
|
|
1676
|
+
return Y(() => {
|
|
1677
|
+
l(!0);
|
|
1678
|
+
}, []), i ? c("div", { style: { fontFamily: (e = n.general) == null ? void 0 : e.fontFamily }, children: c(Qt.Provider, { value: { loadConfig: async (u, d, w, p, f, b) => {
|
|
1679
|
+
t.current = u, o.current = d;
|
|
1680
|
+
const E = await kn(u, w, p, f);
|
|
1681
|
+
b.current && (b.current.textContent = E.cssStylesText), r(E.settings), s(E.inlineStyles);
|
|
1682
|
+
} }, children: c(So, { settings: n, setSettings: r, children: c(To, { styles: a, setStyles: s, children: c(un, { children: c(Mo, { botIdRef: t, flowRef: o, children: c(Lo, { children: c(Oo, { settings: n, children: c(No, { children: A }) }) }) }) }) }) }) }) }) : null;
|
|
1683
|
+
}, Hn = ({ id: A, flow: e, settings: t, styles: o, themes: n, plugins: r, setConfigLoaded: a, styleRootRef: s }) => {
|
|
1684
|
+
const i = iA(() => A, []), l = xt(), { flowRef: u } = oA();
|
|
1685
|
+
return u && u.current !== e && (u.current = e), Y(() => {
|
|
1686
|
+
(async () => {
|
|
1687
|
+
var d, w;
|
|
1688
|
+
(d = t.event) != null && d.rcbPreLoadChatBot && (await se(T.PRE_LOAD_CHATBOT, { botId: i, currPath: null, prevPath: null }, { flow: e, settings: t, styles: o, themes: n, plugins: r })).defaultPrevented || (l != null && l.loadConfig && (await l.loadConfig(i, e, t, o, n, s), a(!0)), (w = t.event) != null && w.rcbPostLoadChatBot && se(T.POST_LOAD_CHATBOT, { botId: i, currPath: null, prevPath: null }, { flow: e, settings: t, styles: o, themes: n, plugins: r }));
|
|
1689
|
+
})();
|
|
1690
|
+
}, [n]), null;
|
|
1691
|
+
}, te = ["Quickstart", "API Docs", "Examples", "Github", "Discord"], Ln = { start: { message: "Hello, I am Tan Jin 👋! Welcome to React ChatBotify, I'm excited that you are using our chatbot 😊!", transition: { duration: 1e3 }, chatDisabled: !0, path: "show_options" }, show_options: { message: "It looks like you have not set up a conversation flow yet. No worries! Here are a few helpful things you can check out to get started:", options: te, path: "process_options" }, prompt_again: { message: "Do you need any other help?", options: te, path: "process_options" }, unknown_input: { message: "Sorry, I do not understand your message 😢! If you require further assistance, you may click on the Github option and open an issue there or visit our discord.", options: te, path: "process_options" }, process_options: { transition: { duration: 0 }, path: (A) => {
|
|
1692
|
+
let e = "";
|
|
1693
|
+
switch (A.userInput) {
|
|
1694
|
+
case "Quickstart":
|
|
1695
|
+
e = "https://react-chatbotify.com/docs/introduction/quickstart/";
|
|
1696
|
+
break;
|
|
1697
|
+
case "API Docs":
|
|
1698
|
+
e = "https://react-chatbotify.com/docs/api/bot_options";
|
|
1699
|
+
break;
|
|
1700
|
+
case "Examples":
|
|
1701
|
+
e = "https://react-chatbotify.com/docs/examples/basic_form";
|
|
1702
|
+
break;
|
|
1703
|
+
case "Github":
|
|
1704
|
+
e = "https://github.com/tjtanjin/react-chatbotify/";
|
|
1705
|
+
break;
|
|
1706
|
+
case "Discord":
|
|
1707
|
+
e = "https://discord.gg/6R4DK4G5Zh";
|
|
1708
|
+
break;
|
|
1709
|
+
default:
|
|
1710
|
+
return "unknown_input";
|
|
1711
|
+
}
|
|
1712
|
+
return A.injectMessage("Sit tight! I'll send you right there!"), setTimeout(() => {
|
|
1713
|
+
window.open(e);
|
|
1714
|
+
}, 1e3), "repeat";
|
|
1715
|
+
} }, repeat: { transition: { duration: 3e3 }, path: "prompt_again" } }, _n = ({ id: A, flow: e, settings: t, styles: o, themes: n, plugins: r }) => {
|
|
1716
|
+
const a = iA(() => A || "rcb-" + FA(), []), s = e && Object.keys(e).length !== 0 ? e : Ln, i = t || {}, l = o || {}, u = r || [], [d, w] = U(!1), p = xt(), f = J(null), [b, E] = U(n || []);
|
|
1717
|
+
Y(() => {
|
|
1718
|
+
n && E(n);
|
|
1719
|
+
}, [n]);
|
|
1720
|
+
const y = () => c(q, { children: [c(Hn, { styleRootRef: f, id: a, flow: s, settings: i, styles: l, themes: b, plugins: u, setConfigLoaded: w }), d && c(On, { plugins: r })] });
|
|
1721
|
+
return c(p == null ? It : q, { children: [c("style", { ref: f }), c("div", { id: a, children: y() })] });
|
|
1722
|
+
}, Ue = () => {
|
|
1723
|
+
const { endStreamMessage: A, injectMessage: e, removeMessage: t, simulateStreamMessage: o, streamMessage: n, messages: r, replaceMessages: a } = xA();
|
|
1724
|
+
return { endStreamMessage: A, injectMessage: e, removeMessage: t, simulateStreamMessage: o, streamMessage: n, messages: r, replaceMessages: a };
|
|
1725
|
+
}, nA = [];
|
|
1726
|
+
for (let A = 0; A < 256; ++A) nA.push((A + 256).toString(16).slice(1));
|
|
1727
|
+
let oe;
|
|
1728
|
+
const Nn = new Uint8Array(16);
|
|
1729
|
+
var je = { randomUUID: typeof crypto < "u" && crypto.randomUUID && crypto.randomUUID.bind(crypto) };
|
|
1730
|
+
function Rn(A, e, t) {
|
|
1731
|
+
var n;
|
|
1732
|
+
if (je.randomUUID && !A) return je.randomUUID();
|
|
1733
|
+
const o = (A = A || {}).random ?? ((n = A.rng) == null ? void 0 : n.call(A)) ?? function() {
|
|
1734
|
+
if (!oe) {
|
|
1735
|
+
if (typeof crypto > "u" || !crypto.getRandomValues) throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
|
|
1736
|
+
oe = crypto.getRandomValues.bind(crypto);
|
|
1737
|
+
}
|
|
1738
|
+
return oe(Nn);
|
|
1739
|
+
}();
|
|
1740
|
+
if (o.length < 16) throw new Error("Random bytes length must be >= 16");
|
|
1741
|
+
return o[6] = 15 & o[6] | 64, o[8] = 63 & o[8] | 128, function(r, a = 0) {
|
|
1742
|
+
return (nA[r[a + 0]] + nA[r[a + 1]] + nA[r[a + 2]] + nA[r[a + 3]] + "-" + nA[r[a + 4]] + nA[r[a + 5]] + "-" + nA[r[a + 6]] + nA[r[a + 7]] + "-" + nA[r[a + 8]] + nA[r[a + 9]] + "-" + nA[r[a + 10]] + nA[r[a + 11]] + nA[r[a + 12]] + nA[r[a + 13]] + nA[r[a + 14]] + nA[r[a + 15]]).toLowerCase();
|
|
1743
|
+
}(o);
|
|
1744
|
+
}
|
|
1745
|
+
const eA = { LOGIN_URL: "/login", PROMPT_TEXT: "Questions should stand alone and not refer to previous ones.", WELCOME_MESSAGE: "Hello! What can I help you with?", WELCOME_MESSAGE_LOGGED_OUT: "To ask questions, please log in.", WELCOME_MESSAGE_LOGIN_TRANSITION: "Welcome! You are now logged in. How can I help you today?", WELCOME_MESSAGE_LOGOUT_TRANSITION: "You have been logged out.", API_ENDPOINT: "https://access-ai.ccs.uky.edu/api/query", ERRORS: { API_UNAVAILABLE: "Unable to contact the Q&A Bot. Please try again later." }, BEHAVIOR: { SHOW_RATING_AFTER_FAILED_QUERY: !0 }, THEME: { PRIMARY_COLOR: "#1a5b6e", SECONDARY_COLOR: "#107180", FONT_FAMILY: "Arial, sans-serif" }, CHATBOT: { TITLE: "ACCESS Q&A Bot", AVATAR_URL: "https://support.access-ci.org/themes/contrib/asp-theme/images/icons/ACCESS-arrrow.svg", TOOLTIP_TEXT: "Ask me about ACCESS! 😊" } }, Un = W.forwardRef(({ embedded: A, isBotLoggedIn: e, currentOpen: t }, o) => {
|
|
1746
|
+
const n = Ue(), r = (() => {
|
|
1747
|
+
const { isChatWindowOpen: i, toggleChatWindow: l, toggleIsBotTyping: u, scrollToBottom: d } = cA();
|
|
1748
|
+
return { isChatWindowOpen: i, toggleChatWindow: l, toggleIsBotTyping: u, scrollToBottom: d };
|
|
1749
|
+
})(), a = J(t), s = J(!1);
|
|
1750
|
+
return ((i) => {
|
|
1751
|
+
const l = J(i), { injectMessage: u } = Ue();
|
|
1752
|
+
Y(() => {
|
|
1753
|
+
const d = l.current !== i, w = !l.current && i;
|
|
1754
|
+
d && u(w ? eA.WELCOME_MESSAGE_LOGIN_TRANSITION : eA.WELCOME_MESSAGE_LOGOUT_TRANSITION, "bot"), l.current = i;
|
|
1755
|
+
}, [i, u]);
|
|
1756
|
+
})(e), Y(() => {
|
|
1757
|
+
!A && r && r.toggleChatWindow && (a.current === t || s.current || r && r.toggleChatWindow && (r.toggleChatWindow(t), a.current = t), s.current = !1);
|
|
1758
|
+
}, [t, A, r]), Y(() => {
|
|
1759
|
+
const i = () => {
|
|
1760
|
+
s.current = !0;
|
|
1761
|
+
};
|
|
1762
|
+
o && (o.current || (o.current = {}), o.current._markAsUserInteraction = i);
|
|
1763
|
+
}), le(o, () => ({ addMessage: (i) => {
|
|
1764
|
+
n && n.injectMessage && n.injectMessage(i);
|
|
1765
|
+
} }), [n]), null;
|
|
1766
|
+
}), jn = () => W.createElement("div", { className: "user-login-icon", style: { alignItems: "center", justifyContent: "center", width: "30px", height: "30px", borderRadius: "50%", backgroundColor: "#1a5b6e", marginRight: "5px" }, title: "User logged in" }, W.createElement("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "white", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, W.createElement("path", { d: "M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2" }), W.createElement("circle", { cx: "12", cy: "7", r: "4" }))), Fn = (A, e, t) => {
|
|
1767
|
+
const o = () => {
|
|
1768
|
+
try {
|
|
1769
|
+
const n = localStorage.getItem("rcb-history");
|
|
1770
|
+
if (!n) return null;
|
|
1771
|
+
const r = JSON.parse(n);
|
|
1772
|
+
if (!Array.isArray(r)) return null;
|
|
1773
|
+
let a = null, s = null;
|
|
1774
|
+
for (const i of r) if (i.sender === "USER") {
|
|
1775
|
+
const l = new Date(i.timestamp).getTime();
|
|
1776
|
+
(!s || l > s) && (s = l, a = i);
|
|
1777
|
+
}
|
|
1778
|
+
return a ? a.id : null;
|
|
1779
|
+
} catch (n) {
|
|
1780
|
+
return console.warn("Error parsing chat history:", n), null;
|
|
1781
|
+
}
|
|
1782
|
+
};
|
|
1783
|
+
return M(async (n) => {
|
|
1784
|
+
const { userInput: r } = n, a = o();
|
|
1785
|
+
a && t(a);
|
|
1786
|
+
const s = { "Content-Type": "application/json", "X-Origin": "access", "X-API-KEY": A, "X-Session-ID": e, "X-Query-ID": a };
|
|
1787
|
+
try {
|
|
1788
|
+
const i = { method: "POST", headers: s, body: JSON.stringify({ query: r }) }, l = await fetch(eA.API_ENDPOINT, i), u = (await l.json()).response;
|
|
1789
|
+
return await n.streamMessage(u), !0;
|
|
1790
|
+
} catch {
|
|
1791
|
+
return await n.injectMessage(eA.ERRORS.API_UNAVAILABLE), !1;
|
|
1792
|
+
}
|
|
1793
|
+
}, [A, t, o, e]);
|
|
1794
|
+
}, zn = ({ loginUrl: A, className: e = "", style: t }) => W.createElement("a", { href: A, target: "_blank", rel: "noopener noreferrer", className: `qa-bot-login-button ${e}`, style: { display: "inline-block", padding: "10px 20px", backgroundColor: "white", border: "1px solid #107180", color: "#107180", textDecoration: "none", borderRadius: "4px", fontWeight: "bold", textAlign: "center", margin: "18px", boxShadow: "0 2px 4px rgba(0, 0, 0, 0.2)", ...t } }, "Log In"), Gn = ({ sessionId: A, currentQueryId: e, className: t = "", style: o }) => {
|
|
1795
|
+
const n = { display: "inline-flex", alignItems: "center", justifyContent: "center", padding: "8px 12px", backgroundColor: "white", border: "1px solid #107180", color: "#107180", textDecoration: "none", borderRadius: "4px", fontWeight: "bold", cursor: "pointer", boxShadow: "0 2px 4px rgba(0, 0, 0, 0.2)", fontSize: "14px", minWidth: "60px" }, r = async (a) => {
|
|
1796
|
+
const s = process.env.REACT_APP_API_KEY;
|
|
1797
|
+
if (!s || !A) return void console.warn("Missing apiKey or sessionId for feedback");
|
|
1798
|
+
const i = { "Content-Type": "application/json", "X-Origin": "access", "X-API-KEY": s, "X-Session-ID": A, "X-Query-ID": e, "X-Feedback": a ? 1 : 0 };
|
|
1799
|
+
try {
|
|
1800
|
+
const l = { method: "POST", headers: i }, u = await fetch(`${eA.API_ENDPOINT}/rating`, l);
|
|
1801
|
+
u.ok ? console.log("Feedback sent successfully: " + (a ? "1" : "0")) : console.error("Failed to send feedback:", u.status);
|
|
1802
|
+
} catch (l) {
|
|
1803
|
+
console.error("Error sending feedback:", l);
|
|
1804
|
+
}
|
|
1805
|
+
};
|
|
1806
|
+
return W.createElement("div", { className: `qa-bot-thumbs-feedback ${t}`, style: { display: "flex", flexDirection: "column", alignItems: "center", gap: "10px", margin: "18px", fontFamily: "Arial, sans-serif", ...o } }, W.createElement("div", { style: { display: "flex", gap: "15px" } }, W.createElement("button", { onClick: async () => {
|
|
1807
|
+
console.log("Thumbs up clicked for session:", A), await r(!0);
|
|
1808
|
+
}, style: n, className: "qa-bot-thumbs-up" }, "👍"), W.createElement("button", { onClick: async () => {
|
|
1809
|
+
console.log("Thumbs down clicked for session:", A), await r(!1);
|
|
1810
|
+
}, style: n, className: "qa-bot-thumbs-down" }, "👎")));
|
|
1811
|
+
};
|
|
1812
|
+
function Yn(A, e) {
|
|
1813
|
+
const t = e !== void 0 ? e : eA.WELCOME_MESSAGE;
|
|
1814
|
+
return A ? t : eA.WELCOME_MESSAGE_LOGGED_OUT;
|
|
1815
|
+
}
|
|
1816
|
+
function Fe(A, e) {
|
|
1817
|
+
return A ? null : W.createElement(zn, { loginUrl: e });
|
|
1818
|
+
}
|
|
1819
|
+
const Wn = () => {
|
|
1820
|
+
for (let e = 0; e < localStorage.length; e++) {
|
|
1821
|
+
const t = localStorage.key(e);
|
|
1822
|
+
if (t && t.startsWith("qa_bot_session_")) {
|
|
1823
|
+
const o = localStorage.getItem(t);
|
|
1824
|
+
if (o) return o;
|
|
1825
|
+
}
|
|
1826
|
+
}
|
|
1827
|
+
const A = "qa_bot_session_".concat(Rn());
|
|
1828
|
+
return localStorage.setItem(A, A), A;
|
|
1829
|
+
}, Xn = W.forwardRef((A, e) => {
|
|
1830
|
+
const { apiKey: t, open: o = !1, onOpenChange: n, embedded: r = !1, isLoggedIn: a, loginUrl: s = eA.LOGIN_URL, ringEffect: i = !0, welcome: l } = A, u = t || process.env.REACT_APP_API_KEY, [d, w] = U(a !== void 0 && a), p = J(Wn()).current, [f, b] = U(null);
|
|
1831
|
+
Y(() => {
|
|
1832
|
+
a !== void 0 && w(a);
|
|
1833
|
+
}, [a]), Y(() => {
|
|
1834
|
+
if (!r && n) {
|
|
1835
|
+
const g = (v) => {
|
|
1836
|
+
e && e.current && e.current._markAsUserInteraction && e.current._markAsUserInteraction();
|
|
1837
|
+
const P = v.data.newState;
|
|
1838
|
+
n(P);
|
|
1839
|
+
};
|
|
1840
|
+
return window.addEventListener("rcb-toggle-chat-window", g), () => {
|
|
1841
|
+
window.removeEventListener("rcb-toggle-chat-window", g);
|
|
1842
|
+
};
|
|
1843
|
+
}
|
|
1844
|
+
}, [r, n, e]);
|
|
1845
|
+
const E = ((g, v) => g ? v || eA.WELCOME_MESSAGE : eA.WELCOME_MESSAGE_LOGGED_OUT)(d, l), y = J(null), m = ((g, v = {}) => iA(() => {
|
|
1846
|
+
const P = (D, _) => {
|
|
1847
|
+
if (g.current) {
|
|
1848
|
+
const O = getComputedStyle(g.current).getPropertyValue(D);
|
|
1849
|
+
if (O && O.trim() !== "") return O.trim();
|
|
1850
|
+
if (g.current.parentElement) {
|
|
1851
|
+
const Q = getComputedStyle(g.current.parentElement).getPropertyValue(D);
|
|
1852
|
+
if (Q && Q.trim() !== "") return Q.trim();
|
|
1853
|
+
}
|
|
1854
|
+
}
|
|
1855
|
+
return _;
|
|
1856
|
+
};
|
|
1857
|
+
return { primaryColor: P("--primary-color", v.primaryColor || eA.THEME.PRIMARY_COLOR), secondaryColor: P("--secondary-color", v.secondaryColor || eA.THEME.SECONDARY_COLOR), fontFamily: P("--font-family", v.fontFamily || eA.THEME.FONT_FAMILY) };
|
|
1858
|
+
}, [g, v]))(y), B = (({ themeColors: g, embedded: v, defaultOpen: P, isLoggedIn: D }) => iA(() => ({ general: { ...g, embedded: v }, header: { title: eA.CHATBOT.TITLE, avatar: eA.CHATBOT.AVATAR_URL, buttons: [W.createElement(jn, { key: "user-icon" }), $.CLOSE_CHAT_BUTTON] }, chatWindow: { defaultOpen: !!v || P }, chatInput: { enabledPlaceholderText: eA.PROMPT_TEXT, disabledPlaceholderText: "Please log in to ask questions.", disabled: !1 }, chatHistory: { disabled: !1 }, botBubble: { simulateStream: !0, dangerouslySetInnerHtml: !0 }, chatButton: { icon: eA.CHATBOT.AVATAR_URL }, tooltip: { text: eA.CHATBOT.TOOLTIP_TEXT, mode: "START" }, audio: { disabled: !0 }, emoji: { disabled: !0 }, fileAttachment: { disabled: !0 }, notification: { disabled: !0 }, footer: { text: W.createElement("div", null, "Find out more ", W.createElement("a", { href: "https://support.access-ci.org/tools/access-qa-tool" }, "about this tool"), " or ", W.createElement("a", { href: "https://docs.google.com/forms/d/e/1FAIpQLSeWnE1r738GU1u_ri3TRpw9dItn6JNPi7-FH7QFB9bAHSVN0w/viewform" }, "give us feedback"), ".") }, event: { rcbToggleChatWindow: !0 } }), [g, v, P]))({ themeColors: m, embedded: r, defaultOpen: o, isLoggedIn: d }), h = (({ welcomeMessage: g, isBotLoggedIn: v, loginUrl: P, handleQuery: D, sessionId: _, currentQueryId: O }) => iA(() => ({ start: { message: Yn(v, g), component: Fe(v, P), path: v ? "loop" : "start" }, silentStart: { component: Fe(v, P), path: v ? "loop" : "start" }, ratingForm: { message: "Was this response helpful?", component: W.createElement(Gn, { sessionId: _, currentQueryId: O }), path: "loop" }, loop: { message: async (Q) => (await D(Q), await Q.goToPath("ratingForm"), ""), transition: { duration: 0, interruptable: !1 } } }), [v, P, D, g, _, O]))({ welcomeMessage: E, isBotLoggedIn: d, loginUrl: s, handleQuery: Fn(u, p, b), sessionId: p, currentQueryId: f });
|
|
1859
|
+
return ((g, v) => {
|
|
1860
|
+
Y(() => {
|
|
1861
|
+
v.current && (g ? v.current.classList.add("bot-logged-in") : v.current.classList.remove("bot-logged-in"));
|
|
1862
|
+
}, [g, v]);
|
|
1863
|
+
})(d, y), ((g, v) => {
|
|
1864
|
+
Y(() => {
|
|
1865
|
+
if (!g || !v.current) return;
|
|
1866
|
+
const P = setTimeout(() => {
|
|
1867
|
+
var _;
|
|
1868
|
+
const D = (_ = v.current) == null ? void 0 : _.querySelector(".rcb-tooltip-show");
|
|
1869
|
+
D && D.classList.add("phone-ring");
|
|
1870
|
+
}, 500);
|
|
1871
|
+
return () => {
|
|
1872
|
+
clearTimeout(P);
|
|
1873
|
+
};
|
|
1874
|
+
}, [g, v]);
|
|
1875
|
+
})(i, y), W.createElement("div", { className: "qa-bot ".concat(r ? "embedded-qa-bot" : ""), ref: y }, W.createElement(It, null, W.createElement(Un, { ref: e, embedded: r, isBotLoggedIn: d, currentOpen: o }), W.createElement(_n, { settings: B, flow: h })));
|
|
1876
|
+
});
|
|
1877
|
+
rt(".rcb-toggle-icon{background-color:initial!important;background-position:calc(50% - 1px) calc(50% + 2px);background-repeat:no-repeat;background-size:62%}.rcb-chat-window{max-height:600px;max-width:100%;width:550px!important}.rcb-chat-window .rcb-bot-avatar{background-position:50%;background-repeat:no-repeat;background-size:contain;border-radius:0}.rcb-chat-window .rcb-chat-header{align-items:center;display:flex;flex-direction:row;font-weight:700}.rcb-chat-window a{color:#000;font-weight:700;text-decoration:underline}.rcb-chat-window a:hover{color:#107180}.rcb-chat-window .rcb-bot-message a{color:#fff;text-decoration:none}.rcb-chat-window .rcb-bot-message a:hover{text-decoration:underline}.rcb-chat-window .rcb-chat-input-textarea{overflow-y:auto}.rcb-chat-window .rcb-chat-footer-container{font-size:10px}.qa-bot .user-login-icon{display:none!important}.qa-bot.bot-logged-in .user-login-icon{display:flex!important;transform:scale(1.3) translateY(-2px)}.embedded-qa-bot .rcb-chat-window{max-width:100%;width:100%!important}.qa-bot.hidden{display:none}.embedded-qa-bot .rcb-bot-message,.embedded-qa-bot .rcb-user-message{max-width:90%!important;word-break:break-word}.embedded-qa-bot .rcb-chat-input-textarea{width:100%!important}.qa-bot-container{max-width:100%;width:100%}.rcb-tooltip-show.phone-ring{animation:phone-ring 3s ease-out!important;z-index:10000!important}@keyframes phone-ring{0%{transform:translateX(0) translateY(0) rotate(0deg)}2%{transform:translateX(0) translateY(-8px) rotate(-2deg)}4%{transform:translateX(0) translateY(-6px) rotate(2deg)}6%{transform:translateX(0) translateY(-8px) rotate(-1deg)}8%{transform:translateX(0) translateY(-6px) rotate(1deg)}10%{transform:translateX(0) translateY(-8px) rotate(-2deg)}12%{transform:translateX(0) translateY(-6px) rotate(2deg)}20%{transform:translateX(0) translateY(0) rotate(0deg)}30%{transform:translateX(0) translateY(0) rotate(0deg)}40%{transform:translateX(0) translateY(0) rotate(0deg)}49%{transform:translateX(0) translateY(0) rotate(0deg)}50%{transform:translateX(0) translateY(-8px) rotate(-2deg)}52%{transform:translateX(0) translateY(-6px) rotate(2deg)}54%{transform:translateX(0) translateY(-8px) rotate(-1deg)}56%{transform:translateX(0) translateY(-6px) rotate(1deg)}58%{transform:translateX(0) translateY(-8px) rotate(-2deg)}60%{transform:translateX(0) translateY(-6px) rotate(2deg)}70%{transform:translateX(0) translateY(0) rotate(0deg)}to{transform:translateX(0) translateY(0) rotate(0deg)}}@media (max-width:768px){.embedded-chat-container.open{height:400px}.embedded-chat-closed{font-size:14px;height:40px}.embedded-chat-open-btn{font-size:12px;padding:3px 10px}}@media (max-width:480px){.embedded-chat-container.open{height:350px}}", { insertAt: "top" });
|
|
1878
|
+
const qn = W.forwardRef((A, e) => {
|
|
1879
|
+
const [t, o] = W.useState(A.isLoggedIn || !1), [n, r] = W.useState(A.defaultOpen || !1), a = W.useRef();
|
|
1880
|
+
return W.useImperativeHandle(e, () => ({ addMessage: (s) => {
|
|
1881
|
+
a.current && a.current.addMessage(s);
|
|
1882
|
+
}, setBotIsLoggedIn: (s) => {
|
|
1883
|
+
o(s);
|
|
1884
|
+
}, openChat: () => {
|
|
1885
|
+
!A.embedded && a.current && r(!0);
|
|
1886
|
+
}, closeChat: () => {
|
|
1887
|
+
!A.embedded && a.current && r(!1);
|
|
1888
|
+
}, toggleChat: () => {
|
|
1889
|
+
!A.embedded && a.current && r((s) => !s);
|
|
1890
|
+
} }), [A.embedded]), W.createElement(Xn, { ref: a, apiKey: A.apiKey, embedded: A.embedded, isLoggedIn: t, open: !!A.embedded || n, onOpenChange: A.embedded ? void 0 : r, loginUrl: A.loginUrl, ringEffect: A.ringEffect, welcome: A.welcome });
|
|
1891
|
+
});
|
|
1892
|
+
function Vn(A) {
|
|
1893
|
+
if (!(A.target && A.target instanceof HTMLElement)) return void console.error("QA Bot: A valid target DOM element is required");
|
|
1894
|
+
const e = mo.createRoot(A.target);
|
|
1895
|
+
let t = { current: null };
|
|
1896
|
+
return e.render(W.createElement(W.StrictMode, null, W.createElement(qn, { ref: (o) => {
|
|
1897
|
+
t.current = o;
|
|
1898
|
+
}, apiKey: A.apiKey, defaultOpen: A.defaultOpen, embedded: A.embedded, isLoggedIn: A.isLoggedIn, loginUrl: A.loginUrl, ringEffect: A.ringEffect, welcome: A.welcome }))), { addMessage: (o) => {
|
|
1899
|
+
var n;
|
|
1900
|
+
return (n = t.current) === null || n === void 0 ? void 0 : n.addMessage(o);
|
|
1901
|
+
}, setBotIsLoggedIn: (o) => {
|
|
1902
|
+
var n;
|
|
1903
|
+
return (n = t.current) === null || n === void 0 ? void 0 : n.setBotIsLoggedIn(o);
|
|
1904
|
+
}, openChat: () => {
|
|
1905
|
+
var o;
|
|
1906
|
+
return (o = t.current) === null || o === void 0 ? void 0 : o.openChat();
|
|
1907
|
+
}, closeChat: () => {
|
|
1908
|
+
var o;
|
|
1909
|
+
return (o = t.current) === null || o === void 0 ? void 0 : o.closeChat();
|
|
1910
|
+
}, toggleChat: () => {
|
|
1911
|
+
var o;
|
|
1912
|
+
return (o = t.current) === null || o === void 0 ? void 0 : o.toggleChat();
|
|
1913
|
+
}, destroy: () => {
|
|
1914
|
+
t.current = null, e.unmount();
|
|
1915
|
+
} };
|
|
1916
|
+
}
|
|
1917
|
+
export {
|
|
1918
|
+
Xn as QABot,
|
|
1919
|
+
Vn as default,
|
|
1920
|
+
Vn as qaBot
|
|
1921
|
+
};
|