@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.
@@ -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 = "&quot;";
9
+ break;
10
+ case 38:
11
+ n = "&amp;";
12
+ break;
13
+ case 60:
14
+ n = "&lt;";
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
+ };