@access-ci/ui 0.8.0 → 0.9.0-beta2

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.
@@ -1,1898 +0,0 @@
1
- import { l as Y, _ as N, b as _, k as SA, H as QA, h as S, g as Xe, p as qe, y as X, a as VA, A as $, F as We, T as uA, q as H, x as pA, P as Ke, G as mA, m as ro, B as YA, D as ao, E as io, u as c } from "./index-CGLHL48j.js";
2
- var De = /[\s\n\\/='"\0<>]/, Ee = /^(xlink|xmlns|xml)([A-Z])/, so = /^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]/, lo = /^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/, co = /* @__PURE__ */ new Set(["draggable", "spellcheck"]), uo = /["&<]/;
3
- function FA(A) {
4
- if (A.length === 0 || uo.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 Qe = {}, fo = /* @__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"]), go = /[A-Z]/g;
24
- function wo(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 : Qe[t] || (Qe[t] = t.replace(go, "-$&").toLowerCase()), a = ";";
30
- typeof o != "number" || n.startsWith("--") || fo.has(n) || (a = "px;"), e = e + n + ":" + o + a;
31
- }
32
- }
33
- return e || void 0;
34
- }
35
- function Ce() {
36
- this.__d = !0;
37
- }
38
- function vo(A, e) {
39
- return { __v: A, context: e, props: A.props, setState: Ce, forceUpdate: Ce, __d: !0, __h: new Array(0) };
40
- }
41
- var ie, kA, jA, OA, fe = {}, xe = [], LA = Array.isArray, se = Object.assign, iA = "";
42
- function ke(A, e, t) {
43
- var o = Y.__s;
44
- Y.__s = !0, ie = Y.__b, kA = Y.diffed, jA = Y.__r, OA = Y.unmount;
45
- var n = N(_, null);
46
- n.__k = [A];
47
- try {
48
- var a = DA(A, e || fe, !1, void 0, n, !1, t);
49
- return LA(a) ? a.join(iA) : a;
50
- } catch (r) {
51
- throw r.then ? new Error('Use "renderToStringAsync" for suspenseful rendering.') : r;
52
- } finally {
53
- Y.__c && Y.__c(A, xe), Y.__s = o, xe.length = 0;
54
- }
55
- }
56
- function Ie(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 = fe), t.__s == null && (t.__s = t.state), o.getDerivedStateFromProps ? t.state = se({}, 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(), jA && jA(A), t.render(t.props, t.state, e);
59
- }
60
- function DA(A, e, t, o, n, a, r) {
61
- if (A == null || A === !0 || A === !1 || A === iA) return iA;
62
- var i = typeof A;
63
- if (i != "object") return i == "function" ? iA : i == "string" ? FA(A) : A + iA;
64
- if (LA(A)) {
65
- var s, l = iA;
66
- n.__k = A;
67
- for (var d = 0; d < A.length; d++) {
68
- var g = A[d];
69
- if (g != null && typeof g != "boolean") {
70
- var p, w = DA(g, e, t, o, n, a, r);
71
- typeof w == "string" ? l += w : (s || (s = []), l && s.push(l), l = iA, LA(w) ? (p = s).push.apply(p, w) : s.push(w));
72
- }
73
- }
74
- return s ? (l && s.push(l), s) : l;
75
- }
76
- if (A.constructor !== void 0) return iA;
77
- A.__ = n, ie && ie(A);
78
- var u = A.type, f = A.props;
79
- if (typeof u == "function") {
80
- var h, v, b, P = e;
81
- if (u === _) {
82
- if ("tpl" in f) {
83
- for (var m = iA, B = 0; B < f.tpl.length; B++) if (m += f.tpl[B], f.exprs && B < f.exprs.length) {
84
- var y = f.exprs[B];
85
- if (y == null) continue;
86
- typeof y != "object" || y.constructor !== void 0 && !LA(y) ? m += y : m += DA(y, e, t, o, A, a, r);
87
- }
88
- return m;
89
- }
90
- if ("UNSTABLE_comment" in f) return "<!--" + FA(f.UNSTABLE_comment) + "-->";
91
- v = f.children;
92
- } else {
93
- if ((h = u.contextType) != null) {
94
- var D = e[h.__c];
95
- P = D ? D.props.value : h.__;
96
- }
97
- var U = u.prototype && typeof u.prototype.render == "function";
98
- if (U) v = Ie(A, P), b = A.__c;
99
- else {
100
- A.__c = b = vo(A, P);
101
- for (var T = 0; b.__d && T++ < 25; ) b.__d = !1, jA && jA(A), v = u.call(b, f, P);
102
- b.__d = !0;
103
- }
104
- if (b.getChildContext != null && (e = se({}, e, b.getChildContext())), U && Y.errorBoundaries && (u.getDerivedStateFromError || b.componentDidCatch)) {
105
- v = v != null && v.type === _ && v.key == null && v.props.tpl == null ? v.props.children : v;
106
- try {
107
- return DA(v, e, t, o, A, a, r);
108
- } catch (R) {
109
- return u.getDerivedStateFromError && (b.__s = u.getDerivedStateFromError(R)), b.componentDidCatch && b.componentDidCatch(R, fe), b.__d ? (v = Ie(A, e), (b = A.__c).getChildContext != null && (e = se({}, e, b.getChildContext())), DA(v = v != null && v.type === _ && v.key == null && v.props.tpl == null ? v.props.children : v, e, t, o, A, a, r)) : iA;
110
- } finally {
111
- kA && kA(A), A.__ = null, OA && OA(A);
112
- }
113
- }
114
- }
115
- v = v != null && v.type === _ && v.key == null && v.props.tpl == null ? v.props.children : v;
116
- try {
117
- var k = DA(v, e, t, o, A, a, r);
118
- return kA && kA(A), A.__ = null, Y.unmount && Y.unmount(A), k;
119
- } catch (R) {
120
- if (r && r.onError) {
121
- var M = r.onError(R, A, function(W) {
122
- return DA(W, e, t, o, A, a, r);
123
- });
124
- if (M !== void 0) return M;
125
- var I = Y.__e;
126
- return I && I(R, A), iA;
127
- }
128
- throw R;
129
- }
130
- }
131
- var x, E = "<" + u, Q = iA;
132
- for (var C in f) {
133
- var L = f[C];
134
- if (typeof L != "function" || C === "class" || C === "className") {
135
- switch (C) {
136
- case "children":
137
- x = L;
138
- continue;
139
- case "key":
140
- case "ref":
141
- case "__self":
142
- case "__source":
143
- continue;
144
- case "htmlFor":
145
- if ("for" in f) continue;
146
- C = "for";
147
- break;
148
- case "className":
149
- if ("class" in f) continue;
150
- C = "class";
151
- break;
152
- case "defaultChecked":
153
- C = "checked";
154
- break;
155
- case "defaultSelected":
156
- C = "selected";
157
- break;
158
- case "defaultValue":
159
- case "value":
160
- switch (C = "value", u) {
161
- case "textarea":
162
- x = L;
163
- continue;
164
- case "select":
165
- o = L;
166
- continue;
167
- case "option":
168
- o != L || "selected" in f || (E += " selected");
169
- }
170
- break;
171
- case "dangerouslySetInnerHTML":
172
- Q = L && L.__html;
173
- continue;
174
- case "style":
175
- typeof L == "object" && (L = wo(L));
176
- break;
177
- case "acceptCharset":
178
- C = "accept-charset";
179
- break;
180
- case "httpEquiv":
181
- C = "http-equiv";
182
- break;
183
- default:
184
- if (Ee.test(C)) C = C.replace(Ee, "$1:$2").toLowerCase();
185
- else {
186
- if (De.test(C)) continue;
187
- C[4] !== "-" && !co.has(C) || L == null ? t ? lo.test(C) && (C = C === "panose1" ? "panose-1" : C.replace(/([A-Z])/g, "-$1").toLowerCase()) : so.test(C) && (C = C.toLowerCase()) : L += iA;
188
- }
189
- }
190
- L != null && L !== !1 && (E = L === !0 || L === iA ? E + " " + C : E + " " + C + '="' + (typeof L == "string" ? FA(L) : L + iA) + '"');
191
- }
192
- }
193
- if (De.test(u)) throw new Error(u + " is not a valid HTML tag name in " + E + ">");
194
- if (Q || (typeof x == "string" ? Q = FA(x) : x != null && x !== !1 && x !== !0 && (Q = DA(x, e, u === "svg" || u !== "foreignObject" && t, o, A, a, r))), kA && kA(A), A.__ = null, OA && OA(A), !Q && po.has(u)) return E + "/>";
195
- var z = "</" + u + ">", F = E + ">";
196
- return LA(Q) ? [F].concat(Q, [z]) : typeof Q != "string" ? [F, Q, z] : F + Q + z;
197
- }
198
- var po = /* @__PURE__ */ new Set(["area", "base", "br", "col", "command", "embed", "hr", "img", "input", "keygen", "link", "meta", "param", "source", "track", "wbr"]);
199
- function le(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 ce(A, e) {
205
- this.props = A, this.context = e;
206
- }
207
- function ho(A, e) {
208
- function t(n) {
209
- var a = this.props.ref, r = a == n.ref;
210
- return !r && a && (a.call ? a(null) : a.current = null), e ? !e(this.props, n) || !r : le(this.props, n);
211
- }
212
- function o(n) {
213
- return this.shouldComponentUpdate = t, N(A, n);
214
- }
215
- return o.displayName = "Memo(" + (A.displayName || A.name) + ")", o.prototype.isReactComponent = !0, o.__f = !0, o;
216
- }
217
- (ce.prototype = new SA()).isPureReactComponent = !0, ce.prototype.shouldComponentUpdate = function(A, e) {
218
- return le(this.props, A) || le(this.state, e);
219
- };
220
- var Se = Y.__b;
221
- Y.__b = function(A) {
222
- A.type && A.type.__f && A.ref && (A.props.ref = A.ref, A.ref = null), Se && Se(A);
223
- };
224
- var bo = 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 = bo, e.render = e, e.prototype.isReactComponent = e.__f = !0, e.displayName = "ForwardRef(" + (A.displayName || A.name) + ")", e;
234
- }
235
- var Te = function(A, e) {
236
- return A == null ? null : QA(QA(A).map(e));
237
- }, mo = { map: Te, forEach: Te, count: function(A) {
238
- return A ? QA(A).length : 0;
239
- }, only: function(A) {
240
- var e = QA(A);
241
- if (e.length !== 1) throw "Children.only";
242
- return e[0];
243
- }, toArray: QA }, Bo = Y.__e;
244
- Y.__e = function(A, e, t, o) {
245
- if (A.then) {
246
- for (var n, a = e; a = a.__; ) if ((n = a.__c) && n.__c) return e.__e == null && (e.__e = t.__e, e.__k = t.__k), n.__c(A, e);
247
- }
248
- Bo(A, e, t, o);
249
- };
250
- var Me = Y.unmount;
251
- function Je(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 a in n) o[a] = n[a];
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 Je(o, e, t);
259
- })), A;
260
- }
261
- function Ve(A, e, t) {
262
- return A && t && (A.__v = null, A.__k = A.__k && A.__k.map(function(o) {
263
- return Ve(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 RA() {
267
- this.__u = 0, this.t = null, this.__b = null;
268
- }
269
- function Ze(A) {
270
- var e = A.__.__c;
271
- return e && e.__a && e.__a(A);
272
- }
273
- function yo(A) {
274
- var e, t, o;
275
- function n(a) {
276
- if (e || (e = A()).then(function(r) {
277
- t = r.default || r;
278
- }, function(r) {
279
- o = r;
280
- }), o) throw o;
281
- if (!t) throw e;
282
- return N(t, a);
283
- }
284
- return n.displayName = "Lazy", n.__f = !0, n;
285
- }
286
- function NA() {
287
- this.u = null, this.o = null;
288
- }
289
- Y.unmount = function(A) {
290
- var e = A.__c;
291
- e && e.__R && e.__R(), e && 32 & A.__u && (A.type = null), Me && Me(A);
292
- }, (RA.prototype = new SA()).__c = function(A, e) {
293
- var t = e.__c, o = this;
294
- o.t == null && (o.t = []), o.t.push(t);
295
- var n = Ze(o.__v), a = !1, r = function() {
296
- a || (a = !0, t.__R = null, n ? n(i) : i());
297
- };
298
- t.__R = r;
299
- var i = function() {
300
- if (!--o.__u) {
301
- if (o.state.__a) {
302
- var s = o.state.__a;
303
- o.__v.__k[0] = Ve(s, s.__c.__P, s.__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(r, r);
310
- }, RA.prototype.componentWillUnmount = function() {
311
- this.t = [];
312
- }, RA.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] = Je(this.__b, t, o.__O = o.__P);
317
- }
318
- this.__b = null;
319
- }
320
- var n = e.__a && N(_, null, A.fallback);
321
- return n && (n.__u &= -33), [N(_, null, e.__a ? null : A.children), n];
322
- };
323
- var He = 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 Po(A) {
331
- return this.getChildContext = function() {
332
- return A.context;
333
- }, A.children;
334
- }
335
- function Do(A) {
336
- var e = this, t = A.i;
337
- e.componentWillUnmount = function() {
338
- YA(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
- } }), YA(N(Po, { context: e.context }, A.__v), e.l);
348
- }
349
- function Eo(A, e) {
350
- var t = N(Do, { __v: A, i: e });
351
- return t.containerInfo = e, t;
352
- }
353
- (NA.prototype = new SA()).__a = function(A) {
354
- var e = this, t = Ze(e.__v), o = e.o.get(A);
355
- return o[0]++, function(n) {
356
- var a = function() {
357
- e.props.revealOrder ? (o.push(n), He(e, A, o)) : n();
358
- };
359
- t ? t(a) : a();
360
- };
361
- }, NA.prototype.render = function(A) {
362
- this.u = null, this.o = /* @__PURE__ */ new Map();
363
- var e = QA(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
- }, NA.prototype.componentDidUpdate = NA.prototype.componentDidMount = function() {
368
- var A = this;
369
- this.o.forEach(function(e, t) {
370
- He(A, t, e);
371
- });
372
- };
373
- var $e = typeof Symbol < "u" && Symbol.for && Symbol.for("react.element") || 60103, Qo = /^(?: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]/, Co = /^on(Ani|Tra|Tou|BeforeInp|Compo)/, xo = /[A-Z0-9]/g, ko = typeof document < "u", Io = function(A) {
374
- return (typeof Symbol < "u" && typeof Symbol() == "symbol" ? /fil|che|rad/ : /fil|che|ra/).test(A);
375
- };
376
- function At(A, e, t) {
377
- return e.__k == null && (e.textContent = ""), YA(A, e), typeof t == "function" && t(), A ? A.__c : null;
378
- }
379
- function et(A, e, t) {
380
- return ao(A, e), typeof t == "function" && t(), A ? A.__c : null;
381
- }
382
- SA.prototype.isReactComponent = {}, ["componentWillMount", "componentWillReceiveProps", "componentWillUpdate"].forEach(function(A) {
383
- Object.defineProperty(SA.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 Oe = Y.event;
390
- function So() {
391
- }
392
- function To() {
393
- return this.cancelBubble;
394
- }
395
- function Mo() {
396
- return this.defaultPrevented;
397
- }
398
- Y.event = function(A) {
399
- return Oe && (A = Oe(A)), A.persist = So, A.isPropagationStopped = To, A.isDefaultPrevented = Mo, A.nativeEvent = A;
400
- };
401
- var ge, Ho = { enumerable: !1, configurable: !0, get: function() {
402
- return this.class;
403
- } }, Le = Y.vnode;
404
- Y.vnode = function(A) {
405
- typeof A.type == "string" && function(e) {
406
- var t = e.props, o = e.type, n = {}, a = o.indexOf("-") === -1;
407
- for (var r in t) {
408
- var i = t[r];
409
- if (!(r === "value" && "defaultValue" in t && i == null || ko && r === "children" && o === "noscript" || r === "class" || r === "className")) {
410
- var s = r.toLowerCase();
411
- r === "defaultValue" && "value" in t && t.value == null ? r = "value" : r === "download" && i === !0 ? i = "" : s === "translate" && i === "no" ? i = !1 : s[0] === "o" && s[1] === "n" ? s === "ondoubleclick" ? r = "ondblclick" : s !== "onchange" || o !== "input" && o !== "textarea" || Io(t.type) ? s === "onfocus" ? r = "onfocusin" : s === "onblur" ? r = "onfocusout" : Co.test(r) && (r = s) : s = r = "oninput" : a && Qo.test(r) ? r = r.replace(xo, "-$&").toLowerCase() : i === null && (i = void 0), s === "oninput" && n[r = s] && (r = "oninputCapture"), n[r] = i;
412
- }
413
- }
414
- o == "select" && n.multiple && Array.isArray(n.value) && (n.value = QA(t.children).forEach(function(l) {
415
- l.props.selected = n.value.indexOf(l.props.value) != -1;
416
- })), o == "select" && n.defaultValue != null && (n.value = QA(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", Ho)) : (t.className && !t.class || t.class && t.className) && (n.class = n.className = t.className), e.props = n;
419
- }(A), A.$$typeof = $e, Le && Le(A);
420
- };
421
- var Ne = Y.__r;
422
- Y.__r = function(A) {
423
- Ne && Ne(A), ge = A.__c;
424
- };
425
- var je = Y.diffed;
426
- Y.diffed = function(A) {
427
- je && je(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), ge = null;
430
- };
431
- var Oo = { ReactCurrentDispatcher: { current: { readContext: function(A) {
432
- return ge.__n[A.__c].props.value;
433
- }, useCallback: H, useContext: pA, useDebugValue: Ke, useDeferredValue: rt, useEffect: X, useId: Xe, useImperativeHandle: We, useInsertionEffect: it, useLayoutEffect: VA, useMemo: uA, useReducer: qe, useRef: $, useState: S, useSyncExternalStore: st, useTransition: at } } };
434
- function Lo(A) {
435
- return N.bind(null, A);
436
- }
437
- function TA(A) {
438
- return !!A && A.$$typeof === $e;
439
- }
440
- function No(A) {
441
- return TA(A) && A.type === _;
442
- }
443
- function jo(A) {
444
- return !!A && !!A.displayName && (typeof A.displayName == "string" || A.displayName instanceof String) && A.displayName.startsWith("Memo(");
445
- }
446
- function Uo(A) {
447
- return TA(A) ? io.apply(null, arguments) : A;
448
- }
449
- function tt(A) {
450
- return !!A.__k && (YA(null, A), !0);
451
- }
452
- function zo(A) {
453
- return A && (A.base || A.nodeType === 1 && A) || null;
454
- }
455
- var Fo = function(A, e) {
456
- return A(e);
457
- }, Ro = function(A, e) {
458
- return A(e);
459
- }, ot = _;
460
- function nt(A) {
461
- A();
462
- }
463
- function rt(A) {
464
- return A;
465
- }
466
- function at() {
467
- return [!1, nt];
468
- }
469
- var it = VA, _o = TA;
470
- function st(A, e) {
471
- var t = e(), o = S({ h: { __: t, v: e } }), n = o[0].h, a = o[1];
472
- return VA(function() {
473
- n.__ = t, n.v = e, te(n) && a({ h: n });
474
- }, [A, t, e]), X(function() {
475
- return te(n) && a({ h: n }), A(function() {
476
- te(n) && a({ h: n });
477
- });
478
- }, [A]), t;
479
- }
480
- function te(A) {
481
- var e, t, o = A.v, n = A.__;
482
- try {
483
- var a = o();
484
- return !((e = n) === (t = a) && (e !== 0 || 1 / e == 1 / t) || e != e && t != t);
485
- } catch {
486
- return !0;
487
- }
488
- }
489
- var bA = { useState: S, useId: Xe, useReducer: qe, useEffect: X, useLayoutEffect: VA, useInsertionEffect: it, useTransition: at, useDeferredValue: rt, useSyncExternalStore: st, startTransition: nt, useRef: $, useImperativeHandle: We, useMemo: uA, useCallback: H, useContext: pA, useDebugValue: Ke, version: "18.3.1", Children: mo, render: At, hydrate: et, unmountComponentAtNode: tt, createPortal: Eo, createElement: N, createContext: mA, createFactory: Lo, cloneElement: Uo, createRef: ro, Fragment: _, isValidElement: TA, isElement: _o, isFragment: No, isMemo: jo, findDOMNode: zo, Component: SA, PureComponent: ce, memo: ho, forwardRef: lA, flushSync: Ro, unstable_batchedUpdates: Fo, StrictMode: ot, Suspense: RA, SuspenseList: NA, lazy: yo, __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: Oo };
490
- function we(A) {
491
- return {
492
- // eslint-disable-next-line
493
- render: function(e) {
494
- At(e, A);
495
- },
496
- // eslint-disable-next-line
497
- unmount: function() {
498
- tt(A);
499
- }
500
- };
501
- }
502
- function Go(A, e) {
503
- return et(e, A), we(A);
504
- }
505
- const Yo = {
506
- createRoot: we,
507
- hydrateRoot: Go
508
- }, Xo = {
509
- renderToString: ke,
510
- renderToStaticMarkup: ke
511
- };
512
- function ue() {
513
- return ue = Object.assign ? Object.assign.bind() : function(A) {
514
- for (var e = 1; e < arguments.length; e++) {
515
- var t = arguments[e];
516
- for (var o in t) ({}).hasOwnProperty.call(t, o) && (A[o] = t[o]);
517
- }
518
- return A;
519
- }, ue.apply(null, arguments);
520
- }
521
- function ve(A, e) {
522
- e === void 0 && (e = {});
523
- var t = e.insertAt;
524
- if (A && typeof document < "u") {
525
- var o = document.head || document.getElementsByTagName("head")[0], n = document.createElement("style");
526
- 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));
527
- }
528
- }
529
- ve('.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:hidden;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:hidden;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" });
530
- const V = { 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" }, Ue = "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", ze = lA((A, e) => N("svg", { viewBox: "0 0 637 637", ref: e, ...A }, N("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" }), N("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" }))), Fe = lA((A, e) => N("svg", { viewBox: "0 -960 960 960", ref: e, ...A }, N("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" }))), qo = lA((A, e) => N("svg", { viewBox: "0 -960 960 960", ref: e, ...A }, N("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" }))), Wo = lA((A, e) => N("svg", { viewBox: "0 -960 960 960", ref: e, ...A }, N("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" }))), Ko = lA((A, e) => N("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 100 100", ref: e, ...A }, N("g", { strokeLinecap: "round", strokeWidth: 10 }, N("path", { d: "m19 19 61 61M80 19 19 80" })))), Jo = lA((A, e) => N("svg", { viewBox: "0 -960 960 960", ref: e, ...A }, N("path", { d: "M94-136v-255l351-93-351-92v-253l816 346L94-136Z" }))), Vo = lA((A, e) => N("svg", { viewBox: "0 -960 960 960", ref: e, ...A }, N("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" }))), Zo = lA((A, e) => N("svg", { viewBox: "0 -960 960 960", ref: e, ...A }, N("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" }))), Re = lA((A, e) => N("svg", { viewBox: "0 -960 960 960", ref: e, ...A }, N("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" }))), $o = lA((A, e) => N("svg", { viewBox: "0 -960 960 960", ref: e, ...A }, N("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" }))), An = lA((A, e) => N("svg", { viewBox: "0 -960 960 960", ref: e, ...A }, N("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" }))), lt = { 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: ze }, 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: Ue, buttons: [V.NOTIFICATION_BUTTON, V.AUDIO_BUTTON, V.CLOSE_CHAT_BUTTON], closeChatIcon: Ko }, notification: { disabled: !1, defaultToggledOn: !0, volume: 0.2, icon: qo, iconDisabled: Wo, 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: $o, iconDisabled: An }, 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: Jo, blockSpam: !0, sendOptionOutput: !0, sendCheckboxOutput: !0, buttons: [V.VOICE_MESSAGE_BUTTON, V.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: Ue, simulateStream: !1, streamSpeed: 30 }, voice: { disabled: !0, defaultToggledOn: !1, language: "en-US", timeoutPeriod: 1e4, autoSendDisabled: !1, autoSendPeriod: 1e3, sendAsAudio: !1, icon: Vo, iconDisabled: Zo }, 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(ze, { style: { width: "80%", height: "80%", fill: "#fff" } }) }, 1), c("span", { style: { fontWeight: "bold" }, children: " React ChatBotify" }, 2)] }), buttons: [V.FILE_ATTACHMENT_BUTTON, V.EMOJI_PICKER_BUTTON] }, fileAttachment: { disabled: !1, multiple: !0, accept: ".png", icon: Fe, iconDisabled: Fe, sendFileName: !0, showMediaDisplay: !1 }, emoji: { disabled: !1, icon: Re, iconDisabled: Re, 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 }, 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 } }, ct = mA({ settings: {}, setSettings: () => null }), O = () => pA(ct), en = ({ children: A, settings: e = lt, setSettings: t }) => c(ct.Provider, { value: { settings: e, setSettings: t }, children: A }), ut = { 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: {} }, dt = mA({ styles: {}, setStyles: () => null }), G = () => pA(dt), tn = ({ children: A, styles: e = ut, setStyles: t }) => c(dt.Provider, { value: { styles: e, setStyles: t }, children: A }), on = ({ buttons: A }) => {
531
- var e, t, o, n, a;
532
- const { settings: r } = O(), { styles: i } = G(), s = { backgroundImage: `linear-gradient(to right, ${(e = r.general) == null ? void 0 : e.secondaryColor},
533
- ${(t = r.general) == null ? void 0 : t.primaryColor})`, ...i.headerStyle };
534
- return c("div", { style: s, className: "rcb-chat-header-container", children: [c("div", { className: "rcb-chat-header", children: [((o = r.header) == null ? void 0 : o.showAvatar) && c("div", { style: { backgroundImage: `url("${(n = r.header) == null ? void 0 : n.avatar}")` }, className: "rcb-bot-avatar" }), (a = r.header) == null ? void 0 : a.title] }), c("div", { className: "rcb-chat-header", children: A == null ? void 0 : A.map((l, d) => c(_, { children: l }, d)) })] });
535
- }, ft = mA({}), rA = () => pA(ft), nn = ({ children: A, botIdRef: e, flowRef: t }) => {
536
- const o = $(null), n = $(""), a = $(/* @__PURE__ */ new Map()), r = $(null), i = $(""), s = $(!1), l = $(null), d = $(null), g = $(null);
537
- return c(ft.Provider, { value: { botIdRef: e, flowRef: t, inputRef: o, streamMessageMap: a, chatBodyRef: r, paramsInputRef: i, keepVoiceOnRef: s, audioContextRef: l, audioBufferRef: d, gainNodeRef: g, prevInputRef: n }, children: A });
538
- }, gt = mA({}), oA = () => pA(gt), rn = ({ children: A, settings: e }) => {
539
- var t, o, n, a, r, i;
540
- const [s, l] = S(!1), [d, g] = S(((t = e == null ? void 0 : e.chatWindow) == null ? void 0 : t.defaultOpen) ?? !1), [p, w] = S(((o = e == null ? void 0 : e.audio) == null ? void 0 : o.defaultToggledOn) ?? !1), [u, f] = S(((n = e == null ? void 0 : e.voice) == null ? void 0 : n.defaultToggledOn) ?? !1), [h, v] = S(((a = e == null ? void 0 : e.notification) == null ? void 0 : a.defaultToggledOn) ?? !0), [b, P] = S(!1), [m, B] = S(!1), [y, D] = S(!1), [U, T] = S(!0), [k, M] = S(!1), [I, x] = S(!1), [E, Q] = S(!1), [C, L] = S(0), [z, F] = S(0), [R, W] = S(!1), [K, Z] = S(null), [j, J] = S(((r = window.visualViewport) == null ? void 0 : r.height) ?? window.innerHeight), [aA, yA] = S(((i = window.visualViewport) == null ? void 0 : i.width) ?? window.innerWidth);
541
- return c(gt.Provider, { value: { isBotTyping: s, setIsBotTyping: l, isChatWindowOpen: d, setIsChatWindowOpen: g, audioToggledOn: p, setAudioToggledOn: w, voiceToggledOn: u, setVoiceToggledOn: f, notificationsToggledOn: h, setNotificationsToggledOn: v, isLoadingChatHistory: b, setIsLoadingChatHistory: P, hasChatHistoryLoaded: m, setHasChatHistoryLoaded: B, isScrolling: y, setIsScrolling: D, textAreaDisabled: U, setTextAreaDisabled: T, textAreaSensitiveMode: k, setTextAreaSensitiveMode: M, hasInteractedPage: I, setHasInteractedPage: x, hasFlowStarted: E, setHasFlowStarted: Q, unreadCount: C, setUnreadCount: L, inputLength: z, setInputLength: F, blockAllowsAttachment: R, setBlockAllowsAttachment: W, timeoutId: K, setTimeoutId: Z, viewportHeight: j, setViewportHeight: J, viewportWidth: aA, setViewportWidth: yA }, children: A });
542
- }, an = () => {
543
- var A, e, t;
544
- const { settings: o } = O(), { styles: n } = G(), { unreadCount: a, isScrolling: r, setIsScrolling: i } = oA(), { chatBodyRef: s } = rA(), [l, d] = S(!1), g = { color: (A = o.general) == null ? void 0 : A.primaryColor, borderColor: (e = o.general) == null ? void 0 : e.primaryColor, ...n.chatMessagePromptHoveredStyle }, p = (u, f, h, v) => (u /= v / 2) < 1 ? h / 2 * u * u + f : -h / 2 * (--u * (u - 2) - 1) + f;
545
- return c("div", { className: "rcb-message-prompt-container " + (s.current && ((w = o.chatWindow) != null && w.showMessagePrompt) && r && a > 0 ? "visible" : "hidden"), children: c("div", { onMouseEnter: () => {
546
- d(!0);
547
- }, onMouseLeave: () => {
548
- d(!1);
549
- }, style: l ? g : { ...n.chatMessagePromptStyle }, onMouseDown: (u) => {
550
- u.preventDefault(), function(f) {
551
- if (!s.current) return;
552
- const h = s.current.scrollTop, v = s.current.scrollHeight - s.current.clientHeight - h;
553
- let b = 0;
554
- (function P() {
555
- if (!s.current) return;
556
- b += 20;
557
- const m = p(b, h, v, f);
558
- s.current.scrollTop = m, b < f ? requestAnimationFrame(P) : i(!1);
559
- })();
560
- }(600);
561
- }, className: "rcb-message-prompt-text", children: (t = o.chatWindow) == null ? void 0 : t.messagePromptText }) });
562
- var w;
563
- }, wt = "rcb-start-speak-audio", vt = "rcb-toggle-audio", pt = "rcb-toggle-notifications", ht = "rcb-toggle-voice", bt = "rcb-toggle-chat-window", mt = "rcb-pre-inject-message", Bt = "rcb-post-inject-message", yt = "rcb-start-simulate-stream-message", Pt = "rcb-stop-simulate-stream-message", Dt = "rcb-start-stream-message", Et = "rcb-chunk-stream-message", Qt = "rcb-stop-stream-message", sn = "rcb-remove-message", Ct = "rcb-load-chat-history", xt = "rcb-change-path", de = "rcb-show-toast", kt = "rcb-dismiss-toast", It = "rcb-user-submit-text", St = "rcb-user-upload-file", Tt = "rcb-text-area-change-value", Mt = "rcb-pre-load-chatbot", Ht = "rcb-post-load-chatbot", ln = { [wt]: !0, [vt]: !0, [ht]: !0, [pt]: !0, [bt]: !0, [mt]: !0, [Bt]: !1, [Mt]: !0, [Ht]: !1, [yt]: !0, [Pt]: !1, [Dt]: !0, [Et]: !0, [Qt]: !0, [Ct]: !0, [xt]: !0, [de]: !0, [kt]: !0, [It]: !0, [St]: !0, [Tt]: !0 }, XA = async (A, e, t) => {
564
- const o = new CustomEvent(A, { detail: e, cancelable: ln[A] });
565
- return o.data = t, o.promises = [], window.dispatchEvent(o), await Promise.all(o.promises), o;
566
- }, Ot = mA({ paths: [], setPaths: () => null }), pe = () => pA(Ot), cn = ({ children: A }) => {
567
- const [e, t] = S([]);
568
- return c(Ot.Provider, { value: { paths: e, setPaths: t }, children: A });
569
- }, ZA = () => {
570
- const { settings: A } = O(), { paths: e, setPaths: t } = pe(), { setIsBotTyping: o, setTextAreaDisabled: n, setTextAreaSensitiveMode: a, blockAllowsAttachment: r, setBlockAllowsAttachment: i } = oA(), { botIdRef: s } = rA(), l = H(() => e.length > 0 ? e[e.length - 1] : null, [e]), d = H(() => e.length > 1 ? e[e.length - 2] : null, [e]), g = H(async (w) => {
571
- var u, f;
572
- if ((u = A.event) != null && u.rcbChangePath) {
573
- const h = l(), v = d(), b = { botId: s.current, currPath: h, prevPath: v };
574
- if (event = await XA(xt, b, { currPath: h, prevPath: v, nextPath: w }), event.defaultPrevented) return !1;
575
- }
576
- return o(!0), (f = A.chatInput) != null && f.blockSpam && n(!0), a(!1), t((h) => [...h, w]), !0;
577
- }, [e, t, A]), p = H((w) => {
578
- t(w);
579
- }, []);
580
- return { getCurrPath: l, getPrevPath: d, goToPath: g, blockAllowsAttachment: r, setBlockAllowsAttachment: i, paths: e, replacePaths: p };
581
- }, hA = () => {
582
- const { getCurrPath: A, getPrevPath: e, paths: t } = (() => {
583
- const { getCurrPath: n, getPrevPath: a, goToPath: r, paths: i, replacePaths: s } = ZA();
584
- return { getCurrPath: n, getPrevPath: a, goToPath: r, paths: i, replacePaths: s };
585
- })(), { botIdRef: o } = rA();
586
- return { callRcbEvent: H(async (n, a) => {
587
- const r = { botId: o.current, currPath: A(), prevPath: e() };
588
- return await XA(n, r, a);
589
- }, [t]) };
590
- }, BA = () => {
591
- const { settings: A } = O(), { isChatWindowOpen: e, setIsChatWindowOpen: t, viewportHeight: o, setViewportHeight: n, viewportWidth: a, setViewportWidth: r, setUnreadCount: i } = oA(), { callRcbEvent: s } = hA(), [l, d] = S(0), g = H(async () => {
592
- var w;
593
- (w = A.event) != null && w.rcbToggleChatWindow && (await s(bt, { currState: e, newState: !e })).defaultPrevented || t((u) => (u || i(0), !u));
594
- }, [e]), p = H(async (w) => {
595
- e !== w && await g();
596
- }, [e]);
597
- return { isChatWindowOpen: e, setIsChatWindowOpen: t, toggleChatWindow: g, openChat: p, chatScrollHeight: l, setChatScrollHeight: d, viewportHeight: o, setViewportHeight: n, viewportWidth: a, setViewportWidth: r };
598
- }, Lt = mA({ messages: [], setMessages: () => null }), he = () => pA(Lt), un = ({ children: A }) => {
599
- const [e, t] = S([]);
600
- return c(Lt.Provider, { value: { messages: e, setMessages: t }, children: A });
601
- }, dn = ({ message: A, isNewSender: e }) => {
602
- var t, o, n, a, r, i;
603
- const { settings: s } = O(), { styles: l } = G(), d = typeof A.content == "string", g = A.content, p = A.contentWrapper ? c(A.contentWrapper, { children: g }) : g, w = { backgroundColor: (t = s.general) == null ? void 0 : t.primaryColor, color: "#fff", maxWidth: (o = s.userBubble) != null && o.showAvatar ? "65%" : "70%", ...l.userBubbleStyle }, u = (n = s.userBubble) != null && n.animate ? "rcb-user-message-entry" : "", f = ((a = s.userBubble) == null ? void 0 : a.showAvatar) && e, h = "rcb-user-message" + (!e && (r = s.userBubble) != null && r.showAvatar ? " rcb-user-message-offset" : "");
604
- return c("div", { className: "rcb-user-message-container", children: [d ? c("div", { style: w, className: `${h} ${u}`, children: p }) : c(_, { children: p }), f && c("div", { style: { backgroundImage: `url("${(i = s.userBubble) == null ? void 0 : i.avatar}")` }, className: "rcb-message-user-avatar" })] });
605
- }, fn = ({ message: A, isNewSender: e }) => {
606
- var t, o, n, a, r, i;
607
- const { settings: s } = O(), { styles: l } = G(), d = typeof A.content == "string", g = A.content, p = A.contentWrapper ? c(A.contentWrapper, { children: g }) : g, w = { backgroundColor: (t = s.general) == null ? void 0 : t.secondaryColor, color: "#fff", maxWidth: (o = s.botBubble) != null && o.showAvatar ? "65%" : "70%", ...l.botBubbleStyle }, u = (n = s.botBubble) != null && n.animate ? "rcb-bot-message-entry" : "", f = ((a = s.botBubble) == null ? void 0 : a.showAvatar) && e, h = "rcb-bot-message" + (!e && (r = s.botBubble) != null && r.showAvatar ? " rcb-bot-message-offset" : "");
608
- return c("div", { className: "rcb-bot-message-container", children: [f && c("div", { style: { backgroundImage: `url("${(i = s.botBubble) == null ? void 0 : i.avatar}")` }, className: "rcb-message-bot-avatar" }), d ? c("div", { style: w, className: `${h} ${u}`, children: p }) : c(_, { children: p })] });
609
- }, gn = () => {
610
- var A, e, t;
611
- const { settings: o } = O(), { styles: n } = G(), a = (A = o.botBubble) != null && A.animate ? "rcb-bot-message-entry" : "";
612
- 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: (r) => {
613
- r.preventDefault();
614
- }, className: `rcb-bot-message ${a}`, 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 } })] }) })] });
615
- }, wn = ({ setChatScrollHeight: A }) => {
616
- var e, t, o;
617
- const { settings: n } = O(), { styles: a } = G(), { messages: r } = he(), { isChatWindowOpen: i } = BA(), { isBotTyping: s, isScrolling: l, setIsScrolling: d, setUnreadCount: g } = oA(), { chatBodyRef: p } = rA(), w = { ...a == null ? void 0 : a.bodyStyle, scrollbarWidth: (e = n.chatWindow) != null && e.showScrollbar ? "auto" : "none" };
618
- return X(() => {
619
- p.current && (A(p.current.scrollHeight), l || (p.current.scrollTop = p.current.scrollHeight));
620
- }, [(t = p.current) == null ? void 0 : t.scrollHeight]), c("div", { style: w, className: "rcb-chat-body-container", ref: p, onScroll: () => {
621
- var u, f;
622
- if (!p.current) return;
623
- A(p.current.scrollHeight);
624
- const { scrollTop: h, clientHeight: v, scrollHeight: b } = p.current, P = h + v < b - (((u = n.chatWindow) == null ? void 0 : u.messagePromptOffset) ?? 30);
625
- d(P), P || (h + v >= b - 1 && (p.current.scrollTop = b - v - 1), (i || (f = n.general) != null && f.embedded) && g(0));
626
- }, children: [r.map((u, f) => {
627
- const h = ((v) => v === 0 || r[v].sender !== r[v - 1].sender)(f);
628
- return u.sender.toUpperCase() === "USER" ? c(dn, { message: u, isNewSender: h }, f) : u.sender.toUpperCase() === "BOT" ? c(fn, { message: u, isNewSender: h }, f) : c("div", { children: u.content }, f);
629
- }), s && ((o = n.chatWindow) == null ? void 0 : o.showTypingIndicator) && c(gn, {}), c(an, {})] });
630
- }, vn = ({ checkboxes: A, checkedItems: e, path: t }) => {
631
- var o, n, a, r, i, s, l, d, g, p, w;
632
- const { settings: u } = O(), { styles: f } = G(), { paths: h } = pe(), { handleSubmitText: v } = HA(), [b, P] = S(/* @__PURE__ */ new Set()), [m, B] = S(!1), y = { cursor: m ? `url("${(o = u.general) == null ? void 0 : o.actionDisabledIcon}"), auto` : "pointer", color: (n = u.general) == null ? void 0 : n.primaryColor, borderColor: (a = u.general) == null ? void 0 : a.primaryColor, ...f.botCheckboxRowStyle }, D = { cursor: m || b.size < A.min ? `url("${(r = u.general) == null ? void 0 : r.actionDisabledIcon}"), auto` : "pointer", color: (i = u.general) == null ? void 0 : i.primaryColor, borderColor: (s = u.general) == null ? void 0 : s.primaryColor, ...f.botCheckboxNextStyle }, U = { cursor: m ? `url("${(l = u.general) == null ? void 0 : l.actionDisabledIcon}"), auto` : "pointer", color: "transparent", ...f.botCheckMarkStyle }, T = { cursor: m ? `url("${(d = u.general) == null ? void 0 : d.actionDisabledIcon}"), auto` : "pointer", color: "#fff", borderColor: (g = u.general) == null ? void 0 : g.primaryColor, backgroundColor: (p = u.general) == null ? void 0 : p.primaryColor, ...f.botCheckMarkSelectedStyle };
633
- return X(() => {
634
- h.length > 0 && h[h.length - 1] !== t && B(!A.reusable);
635
- }, [h]), c("div", { className: "rcb-checkbox-container " + ((w = u.botBubble) != null && w.showAvatar ? "rcb-checkbox-offset" : ""), children: [A.items.map((k) => c("div", { onMouseDown: (M) => {
636
- M.preventDefault(), ((I) => {
637
- m || P((x) => {
638
- const E = new Set(x);
639
- if (E.has(I)) e.delete(I), E.delete(I);
640
- else {
641
- if (b.size == A.max) return x;
642
- e.add(I), E.add(I);
643
- }
644
- return E;
645
- });
646
- })(k);
647
- }, style: y, className: "rcb-checkbox-row-container", children: c("div", { className: "rcb-checkbox-row", children: [c("div", { style: b.has(k) ? T : U, className: "rcb-checkbox-mark" }), c("div", { className: "rcb-checkbox-label", children: k })] }) }, k)), c("div", { style: D, className: "rcb-checkbox-next-button", onMouseDown: (k) => {
648
- var M;
649
- if (k.preventDefault(), m || b.size < A.min) return;
650
- const I = Array.from(e).join(", ");
651
- let x;
652
- B(!A.reusable), x = A.sendOutput != null ? A.sendOutput : ((M = u.chatInput) == null ? void 0 : M.sendCheckboxOutput) ?? !0, v(I, x);
653
- } })] });
654
- }, pn = async (A, e) => {
655
- const t = A.checkboxes;
656
- if (!t) return;
657
- let o;
658
- 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;
659
- 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);
660
- const n = /* @__PURE__ */ new Set(), a = e.currPath, r = c(vn, { checkboxes: o, checkedItems: n, path: a });
661
- await e.injectMessage(r);
662
- }, hn = async (A, e) => {
663
- const t = A.function;
664
- if (!t) return;
665
- const o = t(e);
666
- return o instanceof Promise ? await o : o;
667
- }, bn = async (A, e, t) => {
668
- const o = A.message;
669
- if (!o) return;
670
- if (typeof o == "string") return void (o.trim() !== "" && (t ? await e.simulateStreamMessage(o) : await e.injectMessage(o)));
671
- let n = o(e);
672
- n instanceof Promise && (n = await n), n && n.trim() !== "" && (t ? await e.simulateStreamMessage(n) : await e.injectMessage(n));
673
- }, mn = ({ options: A, path: e }) => {
674
- var t, o, n, a, r, i;
675
- const { settings: s } = O(), { styles: l } = G(), { paths: d } = pe(), { handleSubmitText: g } = HA(), [p, w] = S([]), [u, f] = S(!1), h = { cursor: u ? `url("${(t = s.general) == null ? void 0 : t.actionDisabledIcon}"), auto` : "pointer", color: (o = s.general) == null ? void 0 : o.primaryColor, borderColor: (n = s.general) == null ? void 0 : n.primaryColor, backgroundColor: "#fff", ...l.botOptionStyle }, v = { color: "#fff", borderColor: (a = s.general) == null ? void 0 : a.primaryColor, backgroundColor: (r = s.general) == null ? void 0 : r.primaryColor, ...l.botOptionHoveredStyle };
676
- return X(() => {
677
- d.length > 0 && d[d.length - 1] !== e && f(!A.reusable);
678
- }, [d]), c("div", { className: "rcb-options-container " + ((i = s.botBubble) != null && i.showAvatar ? "rcb-options-offset" : ""), children: A.items.map((b, P) => {
679
- const m = p[P] && !u;
680
- return c("div", { className: "rcb-options", style: m ? v : h, onMouseEnter: () => ((B) => {
681
- w((y) => {
682
- const D = [...y];
683
- return D[B] = !0, D;
684
- });
685
- })(P), onMouseLeave: () => ((B) => {
686
- w((y) => {
687
- const D = [...y];
688
- return D[B] = !1, D;
689
- });
690
- })(P), onMouseDown: (B) => {
691
- var y;
692
- if (B.preventDefault(), u) return;
693
- let D;
694
- f(!A.reusable), D = A.sendOutput != null ? A.sendOutput : ((y = s.chatInput) == null ? void 0 : y.sendOptionOutput) ?? !0, g(b, D);
695
- }, children: b }, b);
696
- }) });
697
- }, Bn = async (A, e) => {
698
- const t = A.options;
699
- if (!t) return;
700
- let o;
701
- 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;
702
- o.reusable == null && (o.reusable = !1);
703
- const n = e.currPath, a = c(mn, { options: o, path: n });
704
- await e.injectMessage(a);
705
- }, yn = async (A, e) => {
706
- const t = A.component;
707
- if (t) {
708
- if (typeof t == "function") {
709
- let o = t(e);
710
- return o instanceof Promise && (o = await o), o ? void await e.injectMessage(o) : void 0;
711
- }
712
- await e.injectMessage(t);
713
- }
714
- }, Pn = async (A, e, t) => {
715
- const o = e.currPath, n = A[o];
716
- if (!n) throw new Error("block is not valid.");
717
- const a = n.transition;
718
- let r;
719
- if (typeof a == "function" ? (r = a(e), r instanceof Promise && (r = await r)) : r = a, typeof r == "number" && (r = { duration: r }), !r || r instanceof Promise || r.duration == null || typeof r.duration != "number") return;
720
- r.interruptable == null && (r.interruptable = !1);
721
- const i = setTimeout(async () => {
722
- await jt(A, e);
723
- }, r.duration);
724
- r.interruptable && t(i);
725
- }, Dn = async (A, e, t) => {
726
- const o = A.chatDisabled;
727
- if (o == null) return;
728
- let n;
729
- typeof o == "function" ? (n = o(e), n instanceof Promise && (n = await n)) : n = o, t(n);
730
- }, Nt = async (A, e, t) => {
731
- const o = A.isSensitive;
732
- if (!o) return void t(!1);
733
- let n;
734
- typeof o == "function" ? (n = o(e), n instanceof Promise && (n = await n)) : n = o, t(n);
735
- }, jt = async (A, e) => {
736
- const t = A[e.currPath];
737
- if (!t) throw new Error("Block is not valid.");
738
- const o = Object.keys(t);
739
- for (const n of o) n === "function" && await hn(t, e);
740
- return !!o.includes("path") && await (async (n, a) => {
741
- const r = n.path;
742
- if (!r) return !1;
743
- if (typeof r == "string") return await a.goToPath(r), !0;
744
- let i = r(a);
745
- if (i instanceof Promise && (i = await i), !i) return !1;
746
- const s = i;
747
- return await a.goToPath(s), !0;
748
- })(t, e);
749
- }, En = () => {
750
- var A;
751
- const { settings: e } = O(), { styles: t } = G();
752
- 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 }) });
753
- }, Qn = () => {
754
- var A;
755
- const { settings: e } = O(), { styles: t } = G(), o = { borderTop: `4px solid ${(A = e.general) == null ? void 0 : A.primaryColor}`, ...t.loadingSpinnerStyle };
756
- return c("div", { className: "rcb-spinner-container", children: c("div", { style: o, className: "rcb-spinner" }) });
757
- }, qA = () => {
758
- try {
759
- if (typeof crypto < "u" && typeof crypto.randomUUID == "function") return crypto.randomUUID();
760
- throw new Error("crypto.randomUUID not available");
761
- } catch (A) {
762
- if (typeof crypto < "u" && typeof crypto.getRandomValues == "function") return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(e) {
763
- const t = crypto.getRandomValues(new Uint8Array(1))[0] % 16;
764
- return (e === "x" ? t : 3 & t | 8).toString(16);
765
- });
766
- throw console.error(A), new Error("crypto.getRandomValues is also not available");
767
- }
768
- }, EA = (A, e) => ({ id: qA(), content: A, sender: e, type: typeof A == "string" ? "string" : "object", timestamp: (/* @__PURE__ */ new Date()).toUTCString(), tags: [] });
769
- let xA, Ut = !1, WA = "rcb-history", _A = 30, zt = !1, KA = [];
770
- const oe = async (A) => {
771
- if (zt || !xA) return;
772
- const e = [], t = Ut ? KA.length : 0;
773
- for (let n = A.length - 1; n >= t; n--) {
774
- const a = A[n];
775
- if (a.sender.toUpperCase() === "SYSTEM" || (a.content !== "" && e.unshift(a), e.length === _A)) break;
776
- }
777
- let o = e.map(kn);
778
- if (o.length < _A) {
779
- const n = _A - o.length;
780
- o = [...KA.slice(-n), ...o];
781
- }
782
- Cn(o);
783
- }, Ft = () => KA, Cn = (A) => {
784
- xA && xA.setItem(WA, JSON.stringify(A));
785
- }, xn = (A) => {
786
- var e, t, o, n, a;
787
- xA = ((t = (e = A.chatHistory) == null ? void 0 : e.storageType) == null ? void 0 : t.toUpperCase()) === "SESSION_STORAGE" ? sessionStorage : localStorage, WA = (o = A.chatHistory) == null ? void 0 : o.storageKey, _A = (n = A.chatHistory) == null ? void 0 : n.maxEntries, zt = (a = A.chatHistory) == null ? void 0 : a.disabled, KA = ((r) => {
788
- if (r != null) try {
789
- return JSON.parse(r);
790
- } catch {
791
- return [];
792
- }
793
- return [];
794
- })(xA.getItem(WA));
795
- }, kn = (A) => TA(A.content) ? structuredClone({ id: A.id, content: Xo.renderToString(A.content), type: A.type, sender: A.sender.toUpperCase(), timestamp: A.timestamp, tags: A.tags }) : A, Rt = (A, e, t) => {
796
- const o = new DOMParser().parseFromString(A, "text/html");
797
- return Array.from(o.body.childNodes).map((n, a) => {
798
- var r;
799
- if (n.nodeType === Node.TEXT_NODE) return n.textContent;
800
- {
801
- const i = n.tagName.toLowerCase();
802
- let s = Array.from(n.attributes).reduce((l, d) => {
803
- const g = d.name.toLowerCase();
804
- if (g === "style") {
805
- const p = d.value.split(";").filter((u) => u.trim() !== ""), w = {};
806
- p.forEach((u) => {
807
- const [f, h] = u.split(":").map((b) => b.trim()), v = f.replace(/-([a-z])/g, (b, P) => P.toUpperCase());
808
- w[v] = h;
809
- }), l[g] = w;
810
- } else i !== "audio" && i !== "video" || g !== "controls" || d.value !== "" ? l[g] = d.value : l[g] = "true";
811
- return l;
812
- }, {});
813
- if (Object.prototype.hasOwnProperty.call(s, "class")) {
814
- const l = n.classList;
815
- s.className = l.toString(), delete s.class, (r = e.botBubble) != null && r.showAvatar && (s = In(l, s)), s = Sn(l, s, e, t), s = Tn(l, s, e, t), s = Mn(l, s, e, t), s = Hn(l, s, e, t);
816
- }
817
- if (["area", "base", "br", "col", "embed", "hr", "img", "input", "link", "meta", "source", "track", "wbr"].includes(i)) return N(i, { key: a, ...s });
818
- {
819
- const l = Rt(n.innerHTML, e, t);
820
- return N(i, { key: a, ...s }, ...l);
821
- }
822
- }
823
- });
824
- }, In = (A, e) => ((A.contains("rcb-options-container") || A.contains("rcb-checkbox-container")) && (e.className = `${A.toString()} rcb-options-offset`), e), Sn = (A, e, t, o) => {
825
- var n, a, r, i, s;
826
- return A.contains("rcb-options") && (e.style = { ...e.style, color: ((n = o.botOptionStyle) == null ? void 0 : n.color) ?? ((a = t.general) == null ? void 0 : a.primaryColor), borderColor: ((r = o.botOptionStyle) == null ? void 0 : r.color) ?? ((i = t.general) == null ? void 0 : i.primaryColor), cursor: `url("${(s = t.general) == null ? void 0 : s.actionDisabledIcon}"), auto`, ...o.botOptionStyle }), e;
827
- }, Tn = (A, e, t, o) => {
828
- var n, a, r, i, s;
829
- return A.contains("rcb-checkbox-row-container") && (e.style = { ...e.style, color: ((n = o.botCheckboxRowStyle) == null ? void 0 : n.color) ?? ((a = t.general) == null ? void 0 : a.primaryColor), borderColor: ((r = o.botCheckboxRowStyle) == null ? void 0 : r.color) ?? ((i = t.general) == null ? void 0 : i.primaryColor), cursor: `url("${(s = t.general) == null ? void 0 : s.actionDisabledIcon}"), auto`, ...o.botCheckboxRowStyle }), e;
830
- }, Mn = (A, e, t, o) => {
831
- var n, a, r, i, s;
832
- return A.contains("rcb-checkbox-next-button") && (e.style = { ...e.style, color: ((n = o.botCheckboxNextStyle) == null ? void 0 : n.color) ?? ((a = t.general) == null ? void 0 : a.primaryColor), borderColor: ((r = o.botCheckboxNextStyle) == null ? void 0 : r.color) ?? ((i = t.general) == null ? void 0 : i.primaryColor), cursor: `url("${(s = t.general) == null ? void 0 : s.actionDisabledIcon}"), auto`, ...o.botCheckboxNextStyle }), e;
833
- }, Hn = (A, e, t, o) => {
834
- var n, a;
835
- 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: (a = t.userBubble) != null && a.showAvatar ? "65%" : "70%", ...o.mediaDisplayContainerStyle }), e;
836
- }, _t = (A) => {
837
- if (!A) return !1;
838
- const e = A.getBoundingClientRect(), t = window.innerHeight ?? document.documentElement.clientHeight, o = window.innerWidth ?? document.documentElement.clientWidth;
839
- return e.top >= 0 && e.left >= 0 && e.bottom <= t && e.right <= o;
840
- }, be = () => {
841
- const { settings: A } = O(), { notificationsToggledOn: e, setNotificationsToggledOn: t, hasInteractedPage: o, unreadCount: n, setUnreadCount: a } = oA(), { audioBufferRef: r, audioContextRef: i, gainNodeRef: s } = rA(), { callRcbEvent: l } = hA(), d = H(async () => {
842
- var w, u;
843
- const f = (w = A.notification) == null ? void 0 : w.sound;
844
- i.current = new AudioContext();
845
- const h = i.current.createGain();
846
- let v;
847
- if (h.gain.value = ((u = A.notification) == null ? void 0 : u.volume) ?? 0.2, s.current = h, f != null && f.startsWith("data:audio")) {
848
- const b = atob(f.split(",")[1]), P = new ArrayBuffer(b.length), m = new Uint8Array(P);
849
- for (let B = 0; B < b.length; B++) m[B] = b.charCodeAt(B);
850
- v = P;
851
- } else v = await (await fetch(f)).arrayBuffer();
852
- r.current = await i.current.decodeAudioData(v);
853
- }, [A.notification]), g = H(() => {
854
- var w;
855
- if ((w = A.notification) != null && w.disabled || !e || !o || !i.current || !r.current) return;
856
- const u = i.current.createBufferSource();
857
- u.buffer = r.current, u.connect(s.current).connect(i.current.destination), u.start();
858
- }, [A.notification, e, o, i, r, s]), p = H(async () => {
859
- var w;
860
- (w = A.event) != null && w.rcbToggleNotifications && (await l(pt, { currState: e, newState: !e })).defaultPrevented || t((u) => !u);
861
- }, [e]);
862
- return { unreadCount: n, setUnreadCount: a, notificationsToggledOn: e, toggleNotifications: p, playNotificationSound: g, setUpNotifications: d };
863
- }, On = (A, e) => {
864
- var t, o, n, a;
865
- ((r, i, s, l, d) => {
866
- if (!window.SpeechSynthesisUtterance) return void console.info("Speech Synthesis API is not supported in this environment.");
867
- const g = new window.SpeechSynthesisUtterance();
868
- g.text = r, g.lang = i, g.rate = l, g.volume = d;
869
- let p = !1;
870
- for (const w of s) if (window.speechSynthesis.getVoices().find((u) => {
871
- if (u.name === w) return g.voice = u, window.speechSynthesis.speak(g), void (p = !0);
872
- }), p) break;
873
- p || window.speechSynthesis.speak(g);
874
- })(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, (a = A.audio) == null ? void 0 : a.volume);
875
- }, Gt = () => {
876
- const { settings: A } = O(), { audioToggledOn: e, setAudioToggledOn: t } = oA(), { callRcbEvent: o } = hA(), n = H(async () => {
877
- var r;
878
- (r = A.event) != null && r.rcbToggleAudio && (await o(vt, { currState: e, newState: !e })).defaultPrevented || t((i) => !i);
879
- }, [e]), a = H(async (r) => {
880
- var i, s;
881
- if ((i = A.audio) != null && i.disabled || !e) return;
882
- let l = r;
883
- if ((s = A.event) != null && s.rcbStartSpeakAudio) {
884
- const d = await o(wt, { textToRead: l });
885
- if (d.defaultPrevented) return;
886
- l = d.data.textToRead;
887
- }
888
- On(A, l);
889
- }, [A, e]);
890
- return { audioToggledOn: e, speakAudio: a, toggleAudio: n };
891
- }, $A = () => {
892
- var A, e, t, o;
893
- const { settings: n } = O(), { messages: a, setMessages: r } = he(), i = $(a);
894
- X(() => {
895
- i.current = a;
896
- }, [a]);
897
- const { audioToggledOn: s, isChatWindowOpen: l, isScrolling: d, setIsBotTyping: g, setUnreadCount: p } = oA(), { streamMessageMap: w, chatBodyRef: u } = rA(), { callRcbEvent: f } = hA(), { speakAudio: h } = Gt(), { playNotificationSound: v } = be(), b = H(async (T, k = "BOT", M = null) => {
898
- var I, x, E, Q, C;
899
- if (typeof T != "string") throw new Error("Content must be of type string to simulate stream.");
900
- k = k.toUpperCase();
901
- let L = EA(T, k);
902
- if ((I = n.event) != null && I.rcbStartSimulateStreamMessage) {
903
- const j = await f(yt, { message: L });
904
- if (j.defaultPrevented) return null;
905
- M = j.data.simulateStreamChunker ? j.data.simulateStreamChunker : M, L = j.data.message;
906
- }
907
- g(!1);
908
- let z = 30;
909
- z = (x = n.botBubble) != null && x.streamSpeed ? (E = n.botBubble) == null ? void 0 : E.streamSpeed : (Q = n.userBubble) == null ? void 0 : Q.streamSpeed;
910
- const F = { ...L, content: "" };
911
- r((j) => {
912
- const J = [...j, F];
913
- return D(J), J;
914
- });
915
- let R = L.content;
916
- M && (R = M(R));
917
- let W = 0;
918
- const K = R.length, Z = new Promise((j) => {
919
- const J = setInterval(() => {
920
- if (W >= K) return clearInterval(J), void j();
921
- r((aA) => {
922
- const yA = [...aA];
923
- for (let IA = yA.length - 1; IA >= 0; IA--) if (yA[IA].id === F.id) {
924
- const UA = R[W];
925
- UA && (F.content += UA, yA[IA] = F), W++;
926
- break;
927
- }
928
- return yA;
929
- });
930
- }, z);
931
- });
932
- return p((j) => j + 1), await Z, oe(a), (C = n.event) != null && C.rcbStopSimulateStreamMessage && (await f(Pt, { message: L })).defaultPrevented, L.id;
933
- }, [n, a, f]), P = H(async (T, k = "BOT") => {
934
- var M, I, x;
935
- k = k.toUpperCase();
936
- let E = EA(T, k);
937
- if ((M = n.event) != null && M.rcbPreInjectMessage) {
938
- const Q = await f(mt, { message: E });
939
- if (Q.defaultPrevented) return null;
940
- E = Q.data.message;
941
- }
942
- return E.sender.toUpperCase() === "BOT" && (l || (I = n.general) != null && I.embedded) && typeof E.content == "string" && E.content.trim() !== "" && h(E.content), p((Q) => Q + 1), (x = n.event) != null && x.rcbPostInjectMessage && await f(Bt, { message: E }), r((Q) => {
943
- const C = [...Q, E];
944
- return D(C), C;
945
- }), E.id;
946
- }, [n, s, l, f]), m = H(async (T) => {
947
- var k;
948
- const M = i.current.find((I) => I.id === T);
949
- return !M || (k = n.event) != null && k.rcbRemoveMessage && (await f(sn, { message: M })).defaultPrevented ? null : (r((I) => {
950
- const x = I.filter((E) => E.id !== T);
951
- return D(x), x;
952
- }), p((I) => Math.max(I - 1, 0)), T);
953
- }, [f, (A = n.event) == null ? void 0 : A.rcbRemoveMessage]), B = H(async (T, k = "BOT") => {
954
- var M, I;
955
- if (k = k.toUpperCase(), !w.current.has(k)) {
956
- const E = EA(T, k);
957
- return (M = n.event) != null && M.rcbStartStreamMessage && (await f(Dt, { message: E })).defaultPrevented ? null : (g(!1), r((Q) => {
958
- const C = [...Q, E];
959
- return D(C), [...Q, E];
960
- }), w.current.set(k, E.id), p((Q) => Q + 1), E.id);
961
- }
962
- const x = { ...EA(T, k), id: w.current.get(k) };
963
- return (I = n.event) != null && I.rcbChunkStreamMessage && (await f(Et, { message: x })).defaultPrevented ? null : (r((E) => {
964
- const Q = [...E];
965
- for (let C = Q.length - 1; C >= 0; C--) if (Q[C].id === x.id) {
966
- Q[C] = x;
967
- break;
968
- }
969
- return D(Q), Q;
970
- }), w.current.get(k) ?? null);
971
- }, [f, (e = n.event) == null ? void 0 : e.rcbChunkStreamMessage, (t = n.event) == null ? void 0 : t.rcbStartStreamMessage, w]), y = H(async (T = "BOT") => {
972
- var k;
973
- if (T = T.toUpperCase(), !w.current.has(T)) return !0;
974
- const M = w.current.get(T), I = i.current.find((x) => x.id === M);
975
- return ((k = n.event) == null || !k.rcbStopStreamMessage || !(await f(Qt, { messageToEndStreamFor: I })).defaultPrevented) && (w.current.delete(T), oe(i.current), !0);
976
- }, [f, (o = n.event) == null ? void 0 : o.rcbStopStreamMessage, w]), D = (T) => {
977
- var k, M;
978
- oe(T);
979
- let I = !0;
980
- (T.length === 0 || l && !d) && (I = !1), (k = n.general) != null && k.embedded && _t(u.current) && (I = !1);
981
- const x = T[T.length - 1];
982
- (!x || x.sender.toUpperCase() === "USER") && (I = !1), I && v(), ((M = n.chatWindow) != null && M.autoJumpToBottom || !d) && setTimeout(() => {
983
- u != null && u.current && (u.current.scrollTop = u.current.scrollHeight);
984
- }, 1);
985
- }, U = H((T) => {
986
- D(T), r(T);
987
- }, [D]);
988
- return { endStreamMessage: y, injectMessage: P, removeMessage: m, simulateStreamMessage: b, streamMessage: B, messages: a, replaceMessages: U };
989
- };
990
- let ne, gA, GA, CA = !1, vA = null;
991
- const me = () => {
992
- if (!ne) {
993
- const A = window.SpeechRecognition || window.webkitSpeechRecognition;
994
- ne = A != null ? new A() : null;
995
- }
996
- return ne;
997
- }, Ln = (A, e, t, o, n, a) => {
998
- var r, i, s;
999
- const l = me();
1000
- if (!l) return;
1001
- if (!CA) try {
1002
- CA = !0, l.lang = (r = A.voice) == null ? void 0 : r.language, l.start();
1003
- } catch {
1004
- }
1005
- const d = (i = A.voice) == null ? void 0 : i.timeoutPeriod, g = (s = A.voice) == null ? void 0 : s.autoSendPeriod;
1006
- l.onresult = (p) => {
1007
- var w, u;
1008
- clearTimeout(gA), gA = null, clearTimeout(GA);
1009
- const f = p.results[p.results.length - 1][0].transcript;
1010
- if (a.current) {
1011
- const h = (w = A.chatInput) == null ? void 0 : w.characterLimit, v = a.current.value + f;
1012
- h != null && h >= 0 && v.length > h ? o(v.slice(0, h)) : o(v), n(a.current.value.length);
1013
- }
1014
- d && (gA = setTimeout(async () => await re(e, a), d)), (u = A.voice) != null && u.autoSendDisabled || (GA = setTimeout(t, g));
1015
- }, l.onend = () => {
1016
- CA ? (l.start(), !gA && d && (gA = setTimeout(async () => await re(e, a), d))) : (clearTimeout(gA), gA = null, clearTimeout(GA));
1017
- }, d && (gA = setTimeout(async () => await re(e, a), d));
1018
- }, Nn = (A, e) => {
1019
- navigator.mediaDevices.getUserMedia({ audio: !0 }).then((t) => {
1020
- if (vA = new MediaRecorder(t), !CA) try {
1021
- CA = !0, vA.start();
1022
- } catch {
1023
- }
1024
- vA.ondataavailable = (o) => {
1025
- e.current && e.current.push(o.data);
1026
- }, vA.onstop = () => {
1027
- A(), t.getTracks().forEach((o) => o.stop());
1028
- };
1029
- }).catch((t) => {
1030
- console.error("Unable to use microphone:", t);
1031
- });
1032
- }, Be = () => {
1033
- const A = me();
1034
- A && (CA = !1, A && A.stop(), vA && vA.state !== "inactive" && (vA.stop(), vA = null), clearTimeout(gA), gA = null, clearTimeout(GA));
1035
- }, re = async (A, e) => {
1036
- var t;
1037
- (t = e.current) != null && t.disabled || await A(), Be();
1038
- }, ye = () => {
1039
- const { settings: A } = O(), { voiceToggledOn: e, setVoiceToggledOn: t } = oA(), { callRcbEvent: o } = hA(), n = H(async () => {
1040
- var r;
1041
- (r = A.event) != null && r.rcbToggleVoice && (await o(ht, { currState: e, newState: !e })).defaultPrevented || t((i) => !i);
1042
- }, [e]), a = H((r) => {
1043
- ((i, s) => {
1044
- var l, d, g;
1045
- const p = me();
1046
- (l = s.voice) != null && l.disabled || (d = s.chatInput) == null || !d.blockSpam || !p || (i && !CA ? (CA = !0, (g = s.voice) != null && g.sendAsAudio ? vA == null || vA.start() : p.start()) : i || Be());
1047
- })(r, A);
1048
- }, [A]);
1049
- return { voiceToggledOn: e, toggleVoice: n, syncVoice: a };
1050
- }, MA = () => {
1051
- const { settings: A } = O(), { inputLength: e, setInputLength: t, textAreaDisabled: o, setTextAreaDisabled: n, textAreaSensitiveMode: a, setTextAreaSensitiveMode: r } = oA(), { inputRef: i, chatBodyRef: s, prevInputRef: l } = rA(), { callRcbEvent: d } = hA(), g = H(async (b) => {
1052
- var P, m, B;
1053
- if (o && i.current) i.current.value = "";
1054
- else if (i.current && l.current !== null) {
1055
- const y = (P = A.chatInput) == null ? void 0 : P.characterLimit, D = (m = A.chatInput) != null && m.allowNewline ? b : b.replace(/\n/g, " ");
1056
- if (y != null && y >= 0 && D.length > y ? i.current.value = D.slice(0, y) : i.current.value = D, (B = A.event) != null && B.rcbTextAreaChangeValue && (await d(Tt, { currValue: i.current.value, prevValue: l.current })).defaultPrevented) return void (i.current.value = l.current);
1057
- l.current = i.current.value;
1058
- }
1059
- }, [o, i, l, A, d]), p = H((b) => {
1060
- var P;
1061
- (P = i.current) != null && P.disabled || setTimeout(() => {
1062
- var m, B, y;
1063
- (m = A.general) != null && m.embedded ? _t(s == null ? void 0 : s.current) && ((B = i.current) == null || B.focus()) : b !== "start" && ((y = i.current) == null || y.focus());
1064
- }, 100);
1065
- }, []), w = H(() => {
1066
- !o && i.current && i.current.focus();
1067
- }, [o]), u = H(() => {
1068
- i.current && i.current.blur();
1069
- }, []), f = H(() => i && i.current ? i.current.value : "", []), h = H(() => {
1070
- n((b) => !b);
1071
- }, []), v = H(() => {
1072
- r((b) => !b);
1073
- }, []);
1074
- return { textAreaDisabled: o, setTextAreaDisabled: n, textAreaSensitiveMode: a, setTextAreaSensitiveMode: r, inputLength: e, setInputLength: t, getTextAreaValue: f, setTextAreaValue: g, updateTextAreaFocus: p, focusTextArea: w, blurTextArea: u, toggleTextAreaDisabled: h, toggleTextAreaSensitiveMode: v };
1075
- }, Yt = mA({ toasts: [], setToasts: () => null }), Xt = () => pA(Yt), jn = ({ children: A }) => {
1076
- const [e, t] = S([]);
1077
- return c(Yt.Provider, { value: { toasts: e, setToasts: t }, children: A });
1078
- }, Ae = () => {
1079
- const { settings: A } = O(), { toasts: e, setToasts: t } = Xt(), { callRcbEvent: o } = hA(), n = $(e);
1080
- X(() => {
1081
- n.current = e;
1082
- }, [e]);
1083
- const a = H(async (s, l) => {
1084
- var d, g, p, w;
1085
- let u = null;
1086
- if (n.current.length >= (((d = A.toast) == null ? void 0 : d.maxCount) ?? 3)) {
1087
- if ((g = A.toast) != null && g.forbidOnMax) return null;
1088
- u = qA();
1089
- let h = { id: u, content: s, timeout: l };
1090
- if ((p = A.event) != null && p.rcbShowToast) {
1091
- const v = await o(de, { toast: h });
1092
- if (v.defaultPrevented) return null;
1093
- h = v.data.toast;
1094
- }
1095
- return t((v) => [...v.slice(1), h]), u;
1096
- }
1097
- u = qA();
1098
- let f = { id: u, content: s, timeout: l };
1099
- if ((w = A.event) != null && w.rcbShowToast) {
1100
- const h = await o(de, { toast: f });
1101
- if (h.defaultPrevented) return null;
1102
- f = h.data.toast;
1103
- }
1104
- return t((h) => [...h, f]), u;
1105
- }, [A, o, t]), r = H(async (s) => {
1106
- var l;
1107
- const d = e.find((g) => g.id === s);
1108
- return !d || (l = A.event) != null && l.rcbDismissToast && (await o(kt, { toast: d })).defaultPrevented ? null : (t((g) => g.filter((p) => p.id !== s)), s);
1109
- }, [o, t]), i = H((s) => {
1110
- t(s);
1111
- }, []);
1112
- return { showToast: a, dismissToast: r, toasts: e, replaceToasts: i };
1113
- }, HA = () => {
1114
- var A, e, t, o;
1115
- const { settings: n } = O(), { endStreamMessage: a, injectMessage: r, removeMessage: i, simulateStreamMessage: s, streamMessage: l } = $A(), { getCurrPath: d, getPrevPath: g, goToPath: p } = ZA(), { timeoutId: w, voiceToggledOn: u, setTextAreaSensitiveMode: f, textAreaSensitiveMode: h, setTextAreaDisabled: v, setIsBotTyping: b, setBlockAllowsAttachment: P, setInputLength: m } = oA(), { flowRef: B, chatBodyRef: y, inputRef: D, keepVoiceOnRef: U, paramsInputRef: T } = rA(), { showToast: k, dismissToast: M } = Ae(), { callRcbEvent: I } = hA(), { syncVoice: x } = ye(), { setTextAreaValue: E } = MA(), { openChat: Q } = BA(), C = H(async (z) => {
1116
- var F, R, W, K, Z, j;
1117
- const J = d();
1118
- if (J && B.current[J]) {
1119
- if (h) {
1120
- if ((F = n == null ? void 0 : n.sensitiveInput) != null && F.hideInUserBubble) return;
1121
- if ((R = n == null ? void 0 : n.sensitiveInput) != null && R.maskInUserBubble) return void ((W = n.userBubble) != null && W.simulateStream ? await s("*".repeat(((K = n.sensitiveInput) == null ? void 0 : K.asterisksCount) ?? 10), "USER") : await r("*".repeat(((Z = n.sensitiveInput) == null ? void 0 : Z.asterisksCount) ?? 10), "USER"));
1122
- }
1123
- (j = n.userBubble) != null && j.simulateStream ? await s(z, "USER") : await r(z, "USER");
1124
- }
1125
- }, [B, d, n, r, h]), L = H(async (z, F, R = !0) => {
1126
- var W, K;
1127
- (F = F.trim()) !== "" && (R && await C(F), w && clearTimeout(w), T.current = F, y.current && (y.current.scrollTop = y.current.scrollHeight), D.current && (E(""), m(0)), (W = n.chatInput) != null && W.blockSpam && v(!0), U.current = u, x(!1), setTimeout(() => {
1128
- b(!0);
1129
- }, 400), f(!1), setTimeout(async () => {
1130
- var Z;
1131
- const j = { prevPath: g(), currPath: d(), goToPath: p, setTextAreaValue: E, userInput: F, injectMessage: r, simulateStreamMessage: s, streamMessage: l, removeMessage: i, endStreamMessage: a, openChat: Q, showToast: k, dismissToast: M };
1132
- if (!await jt(B.current, j)) {
1133
- const J = d();
1134
- if (!J) return;
1135
- const aA = B.current[J];
1136
- if (!aA) return;
1137
- aA.chatDisabled || v((Z = n.chatInput) == null ? void 0 : Z.disabled), Nt(aA, j, f), P(typeof aA.file == "function"), x(U.current), b(!1);
1138
- }
1139
- }, (K = n.chatInput) == null ? void 0 : K.botDelay));
1140
- }, [w, (A = n.chatInput) == null ? void 0 : A.blockSpam, (e = n.chatInput) == null ? void 0 : e.botDelay, (t = n.chatInput) == null ? void 0 : t.disabled, U, u, x, C, g, d, p, r, l, i, a, Q, k, M, B]);
1141
- return { handleSubmitText: H(async (z, F = !0) => {
1142
- var R, W;
1143
- if (z = z ?? ((R = D.current) == null ? void 0 : R.value), (W = n.event) != null && W.rcbUserSubmitText && (await I(It, { inputText: z, sendInChat: F })).defaultPrevented) return;
1144
- const K = d();
1145
- K && L(K, z, F);
1146
- }, [I, d, L, D, (o = n.event) == null ? void 0 : o.rcbUserSubmitText]) };
1147
- }, ee = () => {
1148
- var A;
1149
- const { settings: e } = O();
1150
- return uA(() => {
1151
- var t;
1152
- if (typeof window > "u" || !window.navigator) return !1;
1153
- if ((t = e.device) == null || !t.applyMobileOptimizations) return !0;
1154
- const o = navigator.userAgent, n = !/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(o), a = window.innerWidth >= 768;
1155
- return n && a;
1156
- }, [(A = e.device) == null ? void 0 : A.applyMobileOptimizations]);
1157
- }, Un = ({ buttons: A }) => {
1158
- var e, t, o, n, a, r, i, s, l, d, g;
1159
- const p = ee(), { settings: w } = O(), { styles: u } = G(), { textAreaDisabled: f, textAreaSensitiveMode: h, inputLength: v, hasFlowStarted: b, setHasFlowStarted: P, setInputLength: m } = oA(), { inputRef: B } = rA(), [y, D] = S(!1), [U, T] = S(!1), { handleSubmitText: k } = HA(), { setTextAreaValue: M } = MA(), I = { boxSizing: p ? "content-box" : "border-box", ...u.chatInputAreaStyle }, x = { outline: f ? "" : "none", boxShadow: f ? "" : `0 0 5px ${(e = w.general) == null ? void 0 : e.primaryColor}`, boxSizing: p ? "content-box" : "border-box", ...u.chatInputAreaStyle, ...u.chatInputAreaFocusedStyle }, E = { cursor: `url("${(t = w.general) == null ? void 0 : t.actionDisabledIcon}"), auto`, caretColor: "transparent", boxSizing: p ? "content-box" : "border-box", ...u.chatInputAreaStyle, ...u.chatInputAreaDisabledStyle }, Q = { color: "#989898", ...u.characterLimitStyle }, C = { color: "#ff0000", ...u.characterLimitReachedStyle }, L = f ? (o = w.chatInput) == null ? void 0 : o.disabledPlaceholderText : (n = w.chatInput) == null ? void 0 : n.enabledPlaceholderText, z = () => {
1160
- f || D(!0);
1161
- }, F = () => {
1162
- D(!1);
1163
- }, R = () => {
1164
- T(!0);
1165
- }, W = () => {
1166
- T(!1);
1167
- }, K = async (j) => {
1168
- var J;
1169
- if (!U && j.key === "Enter") {
1170
- if (j.shiftKey) return void ((J = w.chatInput) != null && J.allowNewline || j.preventDefault());
1171
- j.preventDefault(), await k();
1172
- }
1173
- }, Z = (j) => {
1174
- B.current && (M(j.target.value), m(B.current.value.length));
1175
- };
1176
- return c("div", { "aria-label": ((a = w.ariaLabel) == null ? void 0 : a.inputTextArea) ?? "input text area", role: "textbox", onMouseDown: (j) => {
1177
- var J;
1178
- j.stopPropagation(), !b && ((J = w.general) == null ? void 0 : J.flowStartTrigger) === "ON_CHATBOT_INTERACT" && P(!0);
1179
- }, style: { ...u.chatInputContainerStyle }, className: "rcb-chat-input", children: [h && (r = w.sensitiveInput) != null && r.maskInTextArea ? c("input", { ref: B, type: "password", className: "rcb-chat-input-textarea", style: f ? E : y ? x : I, placeholder: L, onChange: Z, onKeyDown: K, onFocus: z, onBlur: F, onCompositionStart: R, onCompositionEnd: W }) : c("textarea", { ref: B, style: f ? E : y ? x : I, rows: 1, className: "rcb-chat-input-textarea", placeholder: L, onChange: Z, onKeyDown: K, onFocus: z, onBlur: F, onCompositionStart: R, onCompositionEnd: W }), c(_, { children: [A == null ? void 0 : A.map((j, J) => c(_, { children: j }, J)), ((i = w.chatInput) == null ? void 0 : i.showCharacterCount) && ((s = w.chatInput) == null ? void 0 : s.characterLimit) != null && ((l = w.chatInput) == null ? void 0 : l.characterLimit) > 0 && c("div", { className: "rcb-chat-input-char-counter", style: v >= ((d = w.chatInput) == null ? void 0 : d.characterLimit) ? C : Q, children: [v, "/", (g = w.chatInput) == null ? void 0 : g.characterLimit] })] })] });
1180
- }, zn = ({ buttons: A }) => {
1181
- var e;
1182
- const { settings: t } = O(), { styles: o } = G();
1183
- 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, a) => c(_, { children: n }, a)) }), c("span", { children: (e = t.footer) == null ? void 0 : e.text })] });
1184
- }, Fn = () => {
1185
- var A, e, t, o, n, a, r;
1186
- const { settings: i } = O(), { styles: s } = G(), { unreadCount: l } = oA(), { isChatWindowOpen: d, toggleChatWindow: g } = BA(), p = { backgroundImage: `linear-gradient(to right, ${(A = i.general) == null ? void 0 : A.secondaryColor},
1187
- ${(e = i.general) == null ? void 0 : e.primaryColor})`, ...s.chatButtonStyle }, w = { backgroundImage: `url(${(t = i.chatButton) == null ? void 0 : t.icon})`, fill: "#fff", width: 75, height: 75, ...s.chatIconStyle };
1188
- return c(_, { children: !((o = i.general) != null && o.embedded) && c("div", { "aria-label": ((n = i.ariaLabel) == null ? void 0 : n.chatButton) ?? "open chat", role: "button", style: p, className: "rcb-toggle-button " + (d ? "rcb-button-hide" : "rcb-button-show"), onClick: g, children: [(() => {
1189
- var u;
1190
- const f = (u = i.chatButton) == null ? void 0 : u.icon;
1191
- return f && typeof f != "string" ? f && c("span", { className: "rcb-toggle-icon", children: c(f, { style: w }) }) : c("span", { className: "rcb-toggle-icon", style: w });
1192
- })(), !((a = i.notification) != null && a.disabled) && ((r = i.notification) == null ? void 0 : r.showCount) && c("span", { style: { ...s.notificationBadgeStyle }, className: "rcb-badge", children: l })] }) });
1193
- }, Rn = () => {
1194
- var A, e, t, o;
1195
- const n = ee(), { settings: a } = O(), { styles: r } = G(), { isChatWindowOpen: i, openChat: s } = BA(), [l, d] = S(!1), [g, p] = S(!1), [w, u] = S(0);
1196
- X(() => {
1197
- var v, b, P;
1198
- const m = (v = a.tooltip) == null ? void 0 : v.mode;
1199
- if (m === "ALWAYS") if (n) {
1200
- let B;
1201
- B = i ? (((b = r.chatWindowStyle) == null ? void 0 : b.width) ?? 375) - (((P = r.chatButtonStyle) == null ? void 0 : P.width) ?? 75) : 0, u(B), d(!0);
1202
- } else d(!i);
1203
- else m === "NEVER" ? d(!1) : m === "START" ? g ? d(!1) : (p(!0), d(!0)) : m === "CLOSE" && d(!i);
1204
- }, [i]);
1205
- const f = { transform: `translateX(-${w}px)`, right: (((A = r.chatButtonStyle) == null ? void 0 : A.width) ?? 75) + 40, bottom: 30, backgroundColor: (e = a.general) == null ? void 0 : e.secondaryColor, color: "#fff", ...r.tooltipStyle }, h = { borderColor: `transparent transparent transparent ${f.backgroundColor}` };
1206
- return c(_, { children: !((t = a.general) != null && t.embedded) && c("div", { "data-testid": "chat-tooltip", style: f, className: "rcb-chat-tooltip " + (l ? "rcb-tooltip-show" : "rcb-tooltip-hide"), onClick: () => s(!0), children: [c("span", { children: (o = a.tooltip) == null ? void 0 : o.text }), c("span", { className: "rcb-chat-tooltip-tail", style: h })] }) });
1207
- }, _n = ({ id: A, content: e, timeout: t }) => {
1208
- var o, n;
1209
- const { settings: a } = O(), { styles: r } = G(), [i] = S({ toastPromptStyle: { ...r.toastPromptStyle }, toastPromptHoveredStyle: { ...r.toastPromptHoveredStyle } }), { dismissToast: s } = Ae(), [l, d] = S(!1), g = { color: (o = a.general) == null ? void 0 : o.primaryColor, borderColor: (n = a.general) == null ? void 0 : n.primaryColor, ...i.toastPromptHoveredStyle };
1210
- return X(() => {
1211
- if (t) {
1212
- const p = setTimeout(() => {
1213
- s(A);
1214
- }, t);
1215
- return () => clearTimeout(p);
1216
- }
1217
- }, [A, s, t]), typeof e == "string" ? c("div", { onMouseEnter: () => {
1218
- d(!0);
1219
- }, onMouseLeave: () => {
1220
- d(!1);
1221
- }, style: l ? g : i.toastPromptStyle, onMouseDown: async (p) => {
1222
- var w;
1223
- (w = a.toast) != null && w.dismissOnClick && (p.preventDefault(), await s(A));
1224
- }, className: "rcb-toast-prompt", children: e }) : c(_, { children: e });
1225
- }, Gn = () => {
1226
- var A, e, t, o;
1227
- const { styles: n } = G(), { toasts: a } = Xt(), r = { bottom: (((A = n.footerStyle) == null ? void 0 : A.height) ?? 50) + (((e = n.chatInputContainerStyle) == null ? void 0 : e.height) ?? 70) + 20, width: 300, minWidth: (((t = n.chatWindowStyle) == null ? void 0 : t.width) ?? 375) / 2, maxWidth: (((o = n.chatWindowStyle) == null ? void 0 : o.width) ?? 375) - 50, ...n.toastPromptContainerStyle };
1228
- return c("div", { className: "rcb-toast-prompt-container", style: r, children: a.map((i) => c(_n, { id: i.id, content: i.content, timeout: i.timeout }, i.id)) });
1229
- }, qt = ({ file: A, fileType: e, fileUrl: t }) => {
1230
- var o, n, a;
1231
- const { settings: r } = O(), { styles: i } = G(), s = { backgroundColor: (o = r.general) == null ? void 0 : o.primaryColor, maxWidth: (n = r.userBubble) != null && n.showAvatar ? "65%" : "70%", ...i.mediaDisplayContainerStyle };
1232
- return c(_, { children: t ? c(_, { children: [e === "image" && t && c("div", { style: s, 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: s, 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: (a = r.userBubble) != null && a.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(_, {}) });
1233
- }, Wt = async (A) => {
1234
- if (!A) return { fileType: null, fileUrl: null };
1235
- const e = A.type.split("/")[0];
1236
- if (!["image", "video", "audio"].includes(e)) return { fileType: null, fileUrl: null };
1237
- try {
1238
- return { fileType: e, fileUrl: await new Promise((t, o) => {
1239
- const n = new FileReader();
1240
- n.onload = () => t(n.result), n.onerror = () => o(new Error("File reading failed")), n.readAsDataURL(A);
1241
- }) };
1242
- } catch (t) {
1243
- return console.error(t), { fileType: null, fileUrl: null };
1244
- }
1245
- }, Yn = () => {
1246
- var A, e, t, o, n, a;
1247
- const { settings: r } = O(), { styles: i } = G(), { injectMessage: s, simulateStreamMessage: l, streamMessage: d, removeMessage: g, endStreamMessage: p } = $A(), { getCurrPath: w, getPrevPath: u, goToPath: f, blockAllowsAttachment: h } = ZA(), { flowRef: v, inputRef: b } = rA(), P = v.current, { showToast: m, dismissToast: B } = Ae(), { callRcbEvent: y } = hA(), { openChat: D } = BA(), { setTextAreaValue: U } = MA(), { handleSubmitText: T } = HA(), k = { cursor: `url("${(A = r.general) == null ? void 0 : A.actionDisabledIcon}"), auto`, ...i.fileAttachmentButtonStyle, ...i.fileAttachmentButtonDisabledStyle }, M = { backgroundImage: `url(${(e = r.fileAttachment) == null ? void 0 : e.icon})`, fill: "#a6a6a6", ...i.fileAttachmentIconStyle }, I = { backgroundImage: `url(${(t = r.fileAttachment) == null ? void 0 : t.icon})`, fill: "#a6a6a6", ...i.fileAttachmentIconStyle, ...i.fileAttachmentIconDisabledStyle };
1248
- return c("label", { "aria-label": ((o = r.ariaLabel) == null ? void 0 : o.fileAttachmentButton) ?? "upload file", role: "button", className: h ? "rcb-attach-button-enabled" : "rcb-attach-button-disabled", style: h ? { ...i.fileAttachmentButtonStyle } : k, children: [c("input", { className: "rcb-attach-input", role: "file", type: "file", onChange: async (x) => {
1249
- var E, Q, C, L;
1250
- const z = x.target.files;
1251
- if (!z || (E = r.event) != null && E.rcbUserUploadFile && (await y(St, { files: z })).defaultPrevented) return;
1252
- const F = w();
1253
- if (!F) return;
1254
- const R = P[F];
1255
- if (!R) return;
1256
- const W = R.file;
1257
- if (W != null) {
1258
- const K = [];
1259
- for (let Z = 0; Z < z.length; Z++) {
1260
- if (K.push(z[Z].name), (Q = r.fileAttachment) == null || !Q.showMediaDisplay) continue;
1261
- const j = await Wt(z[Z]);
1262
- !j.fileType || !j.fileUrl || await s(c(qt, { file: z[Z], fileType: j.fileType, fileUrl: j.fileUrl }), "USER");
1263
- }
1264
- await T("📄 " + K.join(", "), (C = r.fileAttachment) == null ? void 0 : C.sendFileName), await W({ userInput: (L = b.current) == null ? void 0 : L.value, prevPath: u(), currPath: w(), goToPath: f, setTextAreaValue: U, injectMessage: s, simulateStreamMessage: l, streamMessage: d, removeMessage: g, endStreamMessage: p, openChat: D, showToast: m, dismissToast: B, files: z });
1265
- }
1266
- }, multiple: (n = r.fileAttachment) == null ? void 0 : n.multiple, accept: (a = r.fileAttachment) == null ? void 0 : a.accept, disabled: !h }), (() => {
1267
- var x, E;
1268
- const Q = h ? (x = r.fileAttachment) == null ? void 0 : x.icon : (E = r.fileAttachment) == null ? void 0 : E.iconDisabled;
1269
- return Q && typeof Q != "string" ? Q && c("span", { className: h ? "rcb-attach-icon-enabled" : "rcb-attach-icon-disabled", children: c(Q, { style: h ? M : I }) }) : c("span", { className: h ? "rcb-attach-icon-enabled" : "rcb-attach-icon-disabled", style: h ? M : I });
1270
- })()] });
1271
- }, Xn = () => {
1272
- var A, e, t, o, n, a;
1273
- const { settings: r } = O(), { styles: i } = G(), { inputRef: s } = rA(), { textAreaDisabled: l, setTextAreaValue: d } = MA(), g = $(null), p = $(null), [w, u] = S(!1), f = { cursor: `url("${(A = r.general) == null ? void 0 : A.actionDisabledIcon}"), auto`, ...i.emojiButtonStyle, ...i.emojiButtonDisabledStyle }, h = { backgroundImage: `url(${(e = r.emoji) == null ? void 0 : e.icon})`, fill: "#a6a6a6", ...i.emojiIconStyle }, v = { backgroundImage: `url(${(t = r.emoji) == null ? void 0 : t.icon})`, fill: "#a6a6a6", ...i.emojiIconStyle, ...i.emojiIconDisabledStyle };
1274
- return X(() => {
1275
- const b = (m) => {
1276
- const B = m.composedPath();
1277
- g.current && !B.includes(g.current) && p.current && !B.includes(p.current) && u(!1);
1278
- }, P = () => {
1279
- (() => {
1280
- if (g.current && p.current) {
1281
- const m = p.current.getBoundingClientRect(), B = g.current.offsetHeight, y = m.top - B - 8;
1282
- g.current.style.left = `${m.left}px`, g.current.style.top = `${y}px`;
1283
- }
1284
- })();
1285
- };
1286
- return document.addEventListener("mousedown", b), window.addEventListener("resize", P), () => {
1287
- document.removeEventListener("mousedown", b), window.removeEventListener("resize", P);
1288
- };
1289
- }, []), c(_, { children: [c("div", { "aria-label": ((o = r.ariaLabel) == null ? void 0 : o.emojiButton) ?? "emoji picker", role: "button", ref: p, className: l ? "rcb-emoji-button-disabled" : "rcb-emoji-button-enabled", style: l ? f : { ...i.emojiButtonStyle }, onMouseDown: (b) => {
1290
- b.preventDefault(), u(!l && !w);
1291
- }, children: (() => {
1292
- var b, P;
1293
- const m = l ? (b = r.emoji) == null ? void 0 : b.iconDisabled : (P = r.emoji) == null ? void 0 : P.icon;
1294
- return m && typeof m != "string" ? m && c("span", { className: l ? "rcb-emoji-icon-disabled" : "rcb-emoji-icon-enabled", children: c(m, { style: l ? v : h }) }) : c("span", { className: l ? "rcb-emoji-icon-disabled" : "rcb-emoji-icon-enabled", style: l ? v : h });
1295
- })() }), w && c("div", { className: "rcb-emoji-button-popup", ref: g, children: (a = (n = r.emoji) == null ? void 0 : n.list) == null ? void 0 : a.map((b, P) => c("span", { className: "rcb-emoji", onMouseDown: (m) => ((B, y) => {
1296
- B.preventDefault(), s.current && (d(s.current.value + y), setTimeout(() => {
1297
- const D = s.current;
1298
- if (D) {
1299
- D.focus();
1300
- const U = D.value.length;
1301
- D.setSelectionRange(U, U);
1302
- }
1303
- }, 50)), u(!1);
1304
- })(m, b), children: b }, P)) })] });
1305
- }, qn = () => {
1306
- var A, e, t;
1307
- const { settings: o } = O(), { styles: n } = G(), { audioToggledOn: a, toggleAudio: r } = Gt(), i = { backgroundImage: `url(${(A = o.audio) == null ? void 0 : A.icon})`, fill: "#fcec3d", ...n.audioIconStyle }, s = { backgroundImage: `url(${(e = o.audio) == null ? void 0 : e.iconDisabled})`, fill: "#e8eaed", ...n.audioIconStyle, ...n.audioIconDisabledStyle };
1308
- return c("div", { "aria-label": ((t = o.ariaLabel) == null ? void 0 : t.audioButton) ?? "toggle audio", role: "button", onMouseDown: async (l) => {
1309
- l.preventDefault(), await r();
1310
- }, style: a ? { ...n.audioButtonStyle } : { ...n.audioButtonStyle, ...n.audioButtonDisabledStyle }, children: (() => {
1311
- var l, d;
1312
- const g = a ? (l = o.audio) == null ? void 0 : l.icon : (d = o.audio) == null ? void 0 : d.iconDisabled;
1313
- return g && typeof g != "string" ? g && c("span", { className: "rcb-audio-icon", "data-testid": "rcb-audio-icon", children: c(g, { style: a ? i : s, "data-testid": "rcb-audio-icon-svg" }) }) : c("span", { className: "rcb-audio-icon", "data-testid": "rcb-audio-icon", style: a ? i : s });
1314
- })() });
1315
- }, Wn = () => {
1316
- var A, e;
1317
- const { settings: t } = O(), { styles: o } = G(), { openChat: n } = BA(), a = { backgroundImage: `url(${(A = t.header) == null ? void 0 : A.closeChatIcon})`, fill: "#e8eaed", stroke: "#e8eaed", ...o.closeChatIconStyle };
1318
- return c("div", { "aria-label": ((e = t.ariaLabel) == null ? void 0 : e.closeChatButton) ?? "close chat", role: "button", onMouseDown: (r) => {
1319
- r.stopPropagation(), n(!1);
1320
- }, style: { ...o.closeChatButtonStyle }, children: (() => {
1321
- var r;
1322
- const i = (r = t.header) == null ? void 0 : r.closeChatIcon;
1323
- return i && typeof i != "string" ? i && c("span", { className: "rcb-close-chat-icon", "data-testid": "rcb-close-chat-icon", children: c(i, { style: a }) }) : c("span", { className: "rcb-close-chat-icon", "data-testid": "rcb-close-chat-icon", style: a });
1324
- })() });
1325
- }, Kn = () => {
1326
- var A, e, t;
1327
- const { settings: o } = O(), { styles: n } = G(), { notificationsToggledOn: a, toggleNotifications: r } = (() => {
1328
- const { notificationsToggledOn: l, toggleNotifications: d, playNotificationSound: g } = be();
1329
- return { notificationsToggledOn: l, toggleNotifications: d, playNotificationSound: g };
1330
- })(), i = { backgroundImage: `url(${(A = o.notification) == null ? void 0 : A.icon})`, fill: "#fcec3d", ...n.notificationIconStyle }, s = { backgroundImage: `url(${(e = o.notification) == null ? void 0 : e.iconDisabled})`, fill: "#e8eaed", ...n.notificationIconStyle, ...n.notificationIconDisabledStyle };
1331
- return c("div", { "aria-label": ((t = o.ariaLabel) == null ? void 0 : t.notificationButton) ?? "toggle notifications", role: "button", onMouseDown: async (l) => {
1332
- l.preventDefault(), await r();
1333
- }, style: a ? { ...n.notificationButtonStyle } : { ...n.notificationButtonStyle, ...n.notificationButtonDisabledStyle }, children: (() => {
1334
- var l, d;
1335
- const g = a ? (l = o.notification) == null ? void 0 : l.icon : (d = o.notification) == null ? void 0 : d.iconDisabled;
1336
- return g && typeof g != "string" ? g && c("span", { className: "rcb-notification-icon", "data-testid": "rcb-notification-icon", children: c(g, { style: a ? i : s, "data-testid": "rcb-notification-icon-svg" }) }) : c("span", { className: "rcb-notification-icon", "data-testid": "rcb-notification-icon", style: a ? i : s });
1337
- })() });
1338
- }, Jn = () => {
1339
- var A, e, t;
1340
- const { settings: o } = O(), { styles: n } = G(), { injectMessage: a } = $A(), { inputRef: r } = rA(), { voiceToggledOn: i, toggleVoice: s } = ye(), { setInputLength: l, setTextAreaValue: d, textAreaDisabled: g } = MA(), { handleSubmitText: p } = HA(), w = $([]), [u, f] = S(!1);
1341
- X(() => {
1342
- var m;
1343
- (m = o.voice) != null && m.sendAsAudio ? (P(), w.current = []) : p();
1344
- }, [u]), X(() => {
1345
- i ? ((m, B, y, D, U, T, k) => {
1346
- var M;
1347
- (M = m.voice) != null && M.sendAsAudio ? Nn(y, T) : Ln(m, B, y, D, U, k);
1348
- })(o, s, b, d, l, w, r) : Be();
1349
- }, [i]);
1350
- const h = { backgroundImage: `url(${(A = o.voice) == null ? void 0 : A.icon})`, fill: "#9aa0a6", ...n.voiceIconStyle }, v = { backgroundImage: `url(${(e = o.voice) == null ? void 0 : e.iconDisabled})`, fill: "#9aa0a6", ...n.voiceIconStyle, ...n.voiceIconDisabledStyle }, b = () => {
1351
- f((m) => !m);
1352
- }, P = async () => {
1353
- const m = new Blob(w.current, { type: "audio/wav" }), B = new File([m], "voice-input.wav", { type: "audio/wav" }), y = await Wt(B);
1354
- !y.fileType || !y.fileUrl || await a(c(qt, { file: B, fileType: y.fileType, fileUrl: y.fileUrl }), "USER");
1355
- };
1356
- return c("div", { "aria-label": ((t = o.ariaLabel) == null ? void 0 : t.voiceButton) ?? "toggle voice", role: "button", onMouseDown: async (m) => {
1357
- m.preventDefault(), !g && await s();
1358
- }, style: i && !g ? { ...n.voiceButtonStyle } : { ...n.voiceButtonStyle, ...n.voiceButtonDisabledStyle }, className: i && !g ? "rcb-voice-button-enabled" : "rcb-voice-button-disabled", children: (() => {
1359
- var m, B;
1360
- const y = i ? (m = o.voice) == null ? void 0 : m.icon : (B = o.voice) == null ? void 0 : B.iconDisabled;
1361
- return y && typeof y != "string" ? y && c("span", { className: "rcb-voice-icon " + (i && !g ? "on" : ""), children: c(y, { style: i && !g ? h : v }) }) : c("span", { className: "rcb-voice-icon" + (i && !g ? "-on" : ""), "data-testid": "rcb-voice-icon", style: i && !g ? h : v });
1362
- })() });
1363
- }, Vn = () => {
1364
- var A, e, t, o, n, a, r, i;
1365
- const { settings: s } = O(), { styles: l } = G(), { textAreaDisabled: d } = oA(), [g, p] = S(!1), { handleSubmitText: w } = HA(), u = { backgroundColor: (A = s.general) == null ? void 0 : A.primaryColor, ...l.sendButtonStyle }, f = { cursor: `url("${(e = s.general) == null ? void 0 : e.actionDisabledIcon}"), auto`, backgroundColor: (t = s.general) == null ? void 0 : t.primaryColor, ...l.sendButtonStyle, ...l.sendButtonDisabledStyle }, h = { backgroundColor: (o = s.general) == null ? void 0 : o.secondaryColor, ...l.sendButtonStyle, ...l.sendButtonHoveredStyle }, v = { backgroundImage: `url(${(n = s.chatInput) == null ? void 0 : n.sendButtonIcon})`, fill: "#fff", ...l.sendIconStyle }, b = { backgroundImage: `url(${(a = s.chatInput) == null ? void 0 : a.sendButtonIcon})`, fill: "#fff", ...l.sendIconStyle, ...l.sendIconDisabledStyle }, P = { backgroundImage: `url(${(r = s.chatInput) == null ? void 0 : r.sendButtonIcon})`, fill: "#fff", ...l.sendIconStyle, ...l.sendIconHoveredStyle };
1366
- return c("div", { "aria-label": ((i = s.ariaLabel) == null ? void 0 : i.sendButton) ?? "send message", role: "button", onMouseEnter: () => {
1367
- p(!0);
1368
- }, onMouseLeave: () => {
1369
- p(!1);
1370
- }, onMouseDown: async (m) => {
1371
- m == null || m.preventDefault(), !d && await w();
1372
- }, style: d ? f : g ? h : u, className: "rcb-send-button", children: (() => {
1373
- var m;
1374
- const B = (m = s.chatInput) == null ? void 0 : m.sendButtonIcon;
1375
- return B && typeof B != "string" ? B && c("span", { className: "rcb-send-icon", "data-testid": "rcb-send-icon", children: c(B, { style: d ? b : g ? P : v }) }) : c("span", { className: "rcb-send-icon", "data-testid": "rcb-send-icon", style: d ? b : g ? P : v });
1376
- })() });
1377
- }, Zn = (A, e) => {
1378
- var t, o, n, a, r, i, s, l, d;
1379
- const g = { [V.AUDIO_BUTTON]: (t = A.audio) == null ? void 0 : t.disabled, [V.CLOSE_CHAT_BUTTON]: (o = A.general) == null ? void 0 : o.embedded, [V.EMOJI_PICKER_BUTTON]: (n = A.emoji) == null ? void 0 : n.disabled, [V.FILE_ATTACHMENT_BUTTON]: (a = A.fileAttachment) == null ? void 0 : a.disabled, [V.NOTIFICATION_BUTTON]: (r = A.notification) == null ? void 0 : r.disabled, [V.SEND_MESSAGE_BUTTON]: !1, [V.VOICE_MESSAGE_BUTTON]: (i = A.voice) == null ? void 0 : i.disabled }, p = {}, w = (u) => u ? u.map((f) => {
1380
- if (typeof f == "string") {
1381
- if (((h) => Object.values(V).includes(h))(f) && !g[f]) {
1382
- if (p[f]) return p[f];
1383
- const h = e[f];
1384
- if (typeof h == "function") {
1385
- const v = h();
1386
- return p[f] = v, v;
1387
- }
1388
- return null;
1389
- }
1390
- return null;
1391
- }
1392
- return f;
1393
- }).filter((f) => f !== null) : [];
1394
- return { header: w((s = A.header) == null ? void 0 : s.buttons), chatInput: w((l = A.chatInput) == null ? void 0 : l.buttons), footer: w((d = A.footer) == null ? void 0 : d.buttons) };
1395
- }, $n = () => {
1396
- const { settings: A } = O(), e = uA(() => ({ [V.CLOSE_CHAT_BUTTON]: () => c(Wn, {}), [V.AUDIO_BUTTON]: () => c(qn, {}), [V.NOTIFICATION_BUTTON]: () => c(Kn, {}), [V.EMOJI_PICKER_BUTTON]: () => c(Xn, {}), [V.FILE_ATTACHMENT_BUTTON]: () => c(Yn, {}), [V.SEND_MESSAGE_BUTTON]: () => c(Vn, {}), [V.VOICE_MESSAGE_BUTTON]: () => c(Jn, {}) }), []), { header: t, chatInput: o, footer: n } = uA(() => Zn(A, e), [A, e]);
1397
- return { headerButtons: uA(() => t, [t]), chatInputButtons: uA(() => o, [o]), footerButtons: uA(() => n, [n]) };
1398
- }, Kt = () => {
1399
- const { settings: A } = O(), { styles: e } = G(), { setMessages: t } = he(), { isLoadingChatHistory: o, setIsLoadingChatHistory: n, hasChatHistoryLoaded: a, setHasChatHistoryLoaded: r } = oA(), { chatBodyRef: i } = rA(), { callRcbEvent: s } = hA(), { chatScrollHeight: l } = BA(), d = H(async () => {
1400
- var g;
1401
- const p = Ft();
1402
- p && ((g = A.event) != null && g.rcbLoadChatHistory && (await s(Ct, {})).defaultPrevented || (n(!0), ((w, u, f, h, v, b, P, m) => {
1403
- var B;
1404
- if (Ut = !0, f != null) try {
1405
- h((D) => {
1406
- const U = EA(c(Qn, {}), "SYSTEM");
1407
- return D.shift(), [U, ...D];
1408
- });
1409
- const y = f.map((D) => {
1410
- if (D.type === "object") {
1411
- const U = Rt(D.content, w, u);
1412
- return { ...D, content: U };
1413
- }
1414
- return D;
1415
- });
1416
- setTimeout(() => {
1417
- h((D) => {
1418
- var U;
1419
- let T;
1420
- return D.shift(), T = (U = w.chatHistory) != null && U.autoLoad ? EA(c(_, {}), "SYSTEM") : EA(c(En, {}), "SYSTEM"), [...y, T, ...D];
1421
- }), m(!0);
1422
- }, 500), setTimeout(() => {
1423
- if (!v.current) return;
1424
- const { scrollHeight: D } = v.current, U = D - b;
1425
- v.current.scrollTop = v.current.scrollTop + U, P(!1);
1426
- }, 510);
1427
- } catch {
1428
- xA.removeItem((B = w.chatHistory) == null ? void 0 : B.storageKey);
1429
- }
1430
- })(A, e, p, t, i, l, n, r)));
1431
- }, [A, e, t]);
1432
- return { isLoadingChatHistory: o, setIsLoadingChatHistory: n, hasChatHistoryLoaded: a, showChatHistory: d };
1433
- }, Ar = () => {
1434
- var A, e, t;
1435
- const { settings: o } = O(), { styles: n } = G(), { showChatHistory: a } = Kt(), [r, i] = S(!1), s = { color: (A = o.general) == null ? void 0 : A.primaryColor, borderColor: (e = o.general) == null ? void 0 : e.primaryColor, ...n.chatHistoryButtonStyle, ...n.chatHistoryButtonHoveredStyle };
1436
- return c("div", { className: "rcb-view-history-container", children: c("div", { onMouseEnter: () => {
1437
- i(!0);
1438
- }, onMouseLeave: () => {
1439
- i(!1);
1440
- }, style: r ? s : { ...n.chatHistoryButtonStyle }, onMouseDown: (l) => {
1441
- l.preventDefault(), a();
1442
- }, className: "rcb-view-history-button", role: "button", tabIndex: 0, children: c("p", { children: (t = o.chatHistory) == null ? void 0 : t.viewChatHistoryButtonText }) }) });
1443
- }, er = () => {
1444
- var A, e, t, o, n;
1445
- const a = ee(), { settings: r } = O(), { endStreamMessage: i, injectMessage: s, removeMessage: l, simulateStreamMessage: d, streamMessage: g, replaceMessages: p } = $A(), { getCurrPath: w, getPrevPath: u, goToPath: f, paths: h } = ZA(), { showToast: v, dismissToast: b } = Ae(), { isBotTyping: P, isChatWindowOpen: m, isScrolling: B, hasFlowStarted: y, setIsChatWindowOpen: D, setTextAreaDisabled: U, setAudioToggledOn: T, setVoiceToggledOn: k, setIsBotTyping: M, setTextAreaSensitiveMode: I, setBlockAllowsAttachment: x, setTimeoutId: E } = oA(), { chatBodyRef: Q, flowRef: C, streamMessageMap: L, paramsInputRef: z, keepVoiceOnRef: F } = rA(), R = C.current, { viewportHeight: W, setViewportHeight: K, setViewportWidth: Z, openChat: j } = BA(), { setUpNotifications: J } = be(), { handleFirstInteraction: aA } = (() => {
1446
- var q;
1447
- const { settings: tA } = O(), { hasInteractedPage: nA, setHasInteractedPage: sA, hasFlowStarted: dA, setHasFlowStarted: fA } = oA(), AA = H(() => {
1448
- var eA;
1449
- if (sA(!0), !dA && ((eA = tA.general) == null ? void 0 : eA.flowStartTrigger) === "ON_PAGE_INTERACT" && fA(!0), !window.SpeechSynthesisUtterance) return void console.info("Speech Synthesis API is not supported in this environment.");
1450
- const cA = new window.SpeechSynthesisUtterance();
1451
- cA.text = "", cA.onend = () => {
1452
- window.removeEventListener("click", AA), window.removeEventListener("keydown", AA), window.removeEventListener("touchstart", AA);
1453
- }, window.speechSynthesis.speak(cA);
1454
- }, [dA, (q = tA.general) == null ? void 0 : q.flowStartTrigger]);
1455
- return { hasInteractedPage: nA, handleFirstInteraction: AA };
1456
- })(), { showChatHistory: yA } = Kt(), { updateTextAreaFocus: IA, setTextAreaValue: UA } = MA(), { syncVoice: eo } = ye(), Pe = $(0);
1457
- X(() => (window.addEventListener("click", aA), window.addEventListener("keydown", aA), window.addEventListener("touchstart", aA), () => {
1458
- window.removeEventListener("click", aA), window.removeEventListener("keydown", aA), window.removeEventListener("touchstart", aA);
1459
- }), []), X(() => {
1460
- var q, tA, nA;
1461
- U((q = r.chatInput) == null ? void 0 : q.disabled), D((tA = r.chatWindow) == null ? void 0 : tA.defaultOpen), T((nA = r.audio) == null ? void 0 : nA.defaultToggledOn), setTimeout(() => {
1462
- var sA;
1463
- k((sA = r.voice) == null ? void 0 : sA.defaultToggledOn);
1464
- }, 1);
1465
- }, []), X(() => {
1466
- var q;
1467
- (q = r.notification) != null && q.disabled || J();
1468
- }, [(A = r.notification) == null ? void 0 : A.disabled]), X(() => {
1469
- !B && Q != null && Q.current && (Q.current.scrollTop = Q.current.scrollHeight);
1470
- }, [P]), X(() => {
1471
- var q, tA;
1472
- if ((q = r.chatHistory) != null && q.disabled) xA && xA.removeItem(WA);
1473
- else if (xn(r), Ft().length > 0) {
1474
- const nA = EA(c(Ar, {}), "SYSTEM");
1475
- p([nA]), (tA = r.chatHistory) != null && tA.autoLoad && yA();
1476
- }
1477
- }, [(e = r.chatHistory) == null ? void 0 : e.storageKey, (t = r.chatHistory) == null ? void 0 : t.maxEntries, (o = r.chatHistory) == null ? void 0 : o.disabled]), X(() => {
1478
- var q;
1479
- a || (q = r.general) != null && q.embedded || !navigator.virtualKeyboard || (navigator.virtualKeyboard.overlaysContent = !0, navigator.virtualKeyboard.addEventListener("geometrychange", (tA) => {
1480
- if (!tA.target) return;
1481
- const { x: nA, y: sA, width: dA, height: fA } = tA.target.boundingRect;
1482
- nA == 0 && sA == 0 && dA == 0 && fA == 0 ? (setTimeout(() => {
1483
- var AA;
1484
- K((AA = window.visualViewport) == null ? void 0 : AA.height);
1485
- }, 101), setTimeout(() => {
1486
- var AA, eA;
1487
- W != ((AA = window.visualViewport) == null ? void 0 : AA.height) && K((eA = window.visualViewport) == null ? void 0 : eA.height);
1488
- }, 1001)) : setTimeout(() => {
1489
- var AA;
1490
- K(((AA = window.visualViewport) == null ? void 0 : AA.height) - fA);
1491
- }, 101);
1492
- }));
1493
- }, [a]), X(() => {
1494
- var q, tA, nA, sA;
1495
- if (a) return;
1496
- m && (K((q = window.visualViewport) == null ? void 0 : q.height), Z((tA = window.visualViewport) == null ? void 0 : tA.width));
1497
- const dA = () => window.scrollTo({ top: 0, left: 0, behavior: "auto" }), fA = () => Pe.current = window.scrollY, AA = () => {
1498
- var cA, zA;
1499
- K((cA = window.visualViewport) == null ? void 0 : cA.height), Z((zA = window.visualViewport) == null ? void 0 : zA.width);
1500
- }, eA = () => {
1501
- var cA;
1502
- window.removeEventListener("scroll", dA), window.removeEventListener("scroll", fA), (cA = window.visualViewport) == null || cA.removeEventListener("resize", AA);
1503
- };
1504
- return m ? (eA(), document.body.style.position = "fixed", window.addEventListener("scroll", dA), (nA = window.visualViewport) == null || nA.addEventListener("resize", AA)) : (document.body.style.position = "static", eA(), window.scrollTo({ top: Pe.current, left: 0, behavior: "auto" }), window.addEventListener("scroll", fA), (sA = window.visualViewport) == null || sA.removeEventListener("resize", AA)), eA;
1505
- }, [m, a]), X(() => {
1506
- const q = w();
1507
- if (!q) return;
1508
- const tA = R[q];
1509
- if (!tA) return void M(!1);
1510
- (async (nA, sA) => {
1511
- var dA, fA;
1512
- await (async (AA, eA, cA, zA, to, oo) => {
1513
- const PA = AA[eA.currPath];
1514
- if (!PA) throw new Error("Block is not valid.");
1515
- for (const no of Object.keys(PA)) switch (no) {
1516
- case "message":
1517
- await bn(PA, eA, cA);
1518
- break;
1519
- case "options":
1520
- await Bn(PA, eA);
1521
- break;
1522
- case "checkboxes":
1523
- await pn(PA, eA);
1524
- break;
1525
- case "component":
1526
- await yn(PA, eA);
1527
- break;
1528
- case "chatDisabled":
1529
- await Dn(PA, eA, zA);
1530
- break;
1531
- case "isSensitive":
1532
- await Nt(PA, eA, to);
1533
- break;
1534
- case "transition":
1535
- await Pn(AA, eA, oo);
1536
- }
1537
- })(R, sA, ((dA = r.botBubble) == null ? void 0 : dA.simulateStream) ?? !1, U, I, E), M(!1), "chatDisabled" in nA || U((fA = r.chatInput) == null ? void 0 : fA.disabled), "isSensitive" in nA || I(!1), x(typeof nA.file == "function"), IA(q), eo(F.current && !nA.chatDisabled), sA.currPath !== sA.prevPath && L.current.clear();
1538
- })(tA, { prevPath: u(), currPath: q, goToPath: f, setTextAreaValue: UA, userInput: z.current, endStreamMessage: i, injectMessage: s, removeMessage: l, simulateStreamMessage: d, streamMessage: g, openChat: j, showToast: v, dismissToast: b });
1539
- }, [h]), X(() => {
1540
- var q;
1541
- (y || ((q = r.general) == null ? void 0 : q.flowStartTrigger) === "ON_LOAD") && f("start");
1542
- }, [y, (n = r.general) == null ? void 0 : n.flowStartTrigger]);
1543
- }, tr = "https://cdn.jsdelivr.net/gh/tjtanjin/react-chatbotify-themes/themes", or = "2592000", _e = "RCB_THEME_CACHE_DATA", Ge = async (A, e) => {
1544
- const { id: t, version: o, baseUrl: n = tr, cacheDuration: a = or } = e, r = o || await (async (v, b) => {
1545
- const P = `${b}/${v}/meta.json`;
1546
- try {
1547
- const m = await fetch(P);
1548
- return m.ok ? (await m.json()).version : (console.error(`Failed to fetch meta.json from ${P}`), null);
1549
- } catch (m) {
1550
- return console.error(`Failed to fetch meta.json from ${P}`, m), null;
1551
- }
1552
- })(t, n);
1553
- if (!r) return console.error(`Unable to find version for theme: ${t}`), { settings: {}, inlineStyles: {}, cssStylesText: "" };
1554
- const i = ((v, b, P) => {
1555
- const m = localStorage.getItem(`${_e}_${v}_${b}`);
1556
- if (!m) return null;
1557
- try {
1558
- const B = JSON.parse(m), y = (/* @__PURE__ */ new Date()).getTime(), D = Math.floor(y / 1e3);
1559
- return B.cacheDate + P >= D ? B : null;
1560
- } catch (B) {
1561
- return console.error(`Unable to fetch cache for ${v}`, B), null;
1562
- }
1563
- })(t, r, a);
1564
- if (i) {
1565
- const v = Ye(A, i.cssStylesText);
1566
- return { settings: i.settings, inlineStyles: i.inlineStyles, cssStylesText: v };
1567
- }
1568
- const s = `${n}/${t}/${r}/styles.css`, l = `${n}/${t}/${r}/settings.json`, d = `${n}/${t}/${r}/styles.json`;
1569
- let g = "";
1570
- const p = await fetch(s);
1571
- p.ok ? g = await p.text() : console.info(`Could not fetch styles.css from ${s}`);
1572
- const w = await fetch(l);
1573
- let u = {};
1574
- w.ok ? u = await w.json() : console.info(`Could not fetch settings.json from ${l}`);
1575
- const f = await fetch(d);
1576
- let h = {};
1577
- return f.ok ? h = await f.json() : console.info(`Could not fetch styles.json from ${d}`), ((v, b, P, m, B) => {
1578
- const y = (/* @__PURE__ */ new Date()).getTime(), D = { settings: P, inlineStyles: m, cssStylesText: B, cacheDate: Math.floor(y / 1e3) };
1579
- localStorage.setItem(`${_e}_${v}_${b}`, JSON.stringify(D));
1580
- })(t, r, u, h, g), { settings: u, inlineStyles: h, cssStylesText: Ye(A, g) };
1581
- }, Ye = (A, e) => e.split(new RegExp("(?<=})")).map((t) => {
1582
- const o = t.trim();
1583
- return o.startsWith("@import") || o.startsWith("@keyframes") || o.startsWith("@media") ? o : o ? `#${A} ${o}` : "";
1584
- }).join(`
1585
- `), nr = async (A, e, t, o) => {
1586
- var n, a;
1587
- let r = JA(lt), i = JA(ut), s = "";
1588
- if (o != null) if (Array.isArray(o)) for (const l of o) {
1589
- const d = await Ge(A, l);
1590
- r = wA(d.settings, r), i = wA(d.inlineStyles, i), s += d.cssStylesText;
1591
- }
1592
- else {
1593
- const l = await Ge(A, o);
1594
- r = wA(l.settings, r), i = wA(l.inlineStyles, i), s += l.cssStylesText;
1595
- }
1596
- return e != null && (r = wA(e, r)), t != null && (i = wA(t, i)), ((n = r.chatInput) == null ? void 0 : n.botDelay) != null && ((a = r.chatInput) == null ? void 0 : a.botDelay) < 500 && (r.chatInput.botDelay = 500), { settings: r, inlineStyles: i, cssStylesText: s };
1597
- }, wA = (A, e) => {
1598
- const t = [{ source: A, target: e }];
1599
- for (; t.length; ) {
1600
- const o = t.pop();
1601
- if (o == null) continue;
1602
- const { source: n, target: a } = o;
1603
- for (const r of Object.keys(n)) {
1604
- const i = r;
1605
- if (TA(n[i])) a[i] = n[i];
1606
- else if (typeof n[i] != "object" || n[i] === null || Array.isArray(n[i])) try {
1607
- a[i] = n[i];
1608
- } catch {
1609
- }
1610
- else (typeof a[i] != "object" || a[i] === null) && (a[i] = {}), t.push({ source: n[i], target: a[i] });
1611
- }
1612
- }
1613
- return e;
1614
- }, JA = (A) => {
1615
- if (A === null || typeof A != "object") return A;
1616
- const e = Array.isArray(A) ? [] : {}, t = [{ source: A, target: e }], o = /* @__PURE__ */ new WeakMap();
1617
- for (o.set(A, e); t.length; ) {
1618
- const n = t.pop();
1619
- if (n == null) continue;
1620
- const { source: a, target: r } = n;
1621
- for (const i in a) if (Object.prototype.hasOwnProperty.call(a, i)) {
1622
- const s = a[i];
1623
- if (s && typeof s == "object") if (o.has(s)) r[i] = o.get(s);
1624
- else {
1625
- const l = Array.isArray(s) ? [] : {};
1626
- o.set(s, l), r[i] = l, t.push({ source: s, target: l });
1627
- }
1628
- else r[i] = s;
1629
- }
1630
- }
1631
- return e;
1632
- }, rr = (A) => {
1633
- const { updateSettings: e } = (() => {
1634
- const { settings: n, setSettings: a } = O(), r = H((s) => {
1635
- !s || Object.keys(s).length === 0 || a(JA(wA(s, n)));
1636
- }, [n]), i = H((s) => {
1637
- a(s);
1638
- }, []);
1639
- return { settings: n, replaceSettings: i, updateSettings: r };
1640
- })(), { updateStyles: t } = (() => {
1641
- const { styles: n, setStyles: a } = G(), r = H((s) => {
1642
- !s || Object.keys(s).length === 0 || a(JA(wA(s, n)));
1643
- }, [n]), i = H((s) => {
1644
- a(s);
1645
- }, []);
1646
- return { styles: n, replaceStyles: i, updateStyles: r };
1647
- })(), o = A == null ? void 0 : A.map((n) => n());
1648
- X(() => {
1649
- let n = {}, a = {};
1650
- o == null || o.forEach((r) => {
1651
- r != null && r.settings && Object.keys(r == null ? void 0 : r.settings).length !== 0 && (n = wA(r.settings, n)), r != null && r.styles && Object.keys(r == null ? void 0 : r.styles).length !== 0 && (a = wA(r.styles, a));
1652
- }), e(n), t(a);
1653
- }, []);
1654
- }, ar = ({ plugins: A }) => {
1655
- var e, t, o, n;
1656
- const a = ee(), { settings: r } = O(), { styles: i } = G(), { hasFlowStarted: s, setHasFlowStarted: l } = oA(), { inputRef: d } = rA(), { setChatScrollHeight: g, viewportHeight: p, viewportWidth: w, isChatWindowOpen: u } = BA(), { headerButtons: f, chatInputButtons: h, footerButtons: v } = $n();
1657
- er(), rr(A);
1658
- const b = uA(() => {
1659
- var B;
1660
- const y = "rcb-chatbot-global ";
1661
- return (B = r.general) != null && B.embedded ? y + "rcb-window-embedded" : u ? y + "rcb-window-open" : y + "rcb-window-close";
1662
- }, [r, u]);
1663
- return c(_, { children: (a && ((P = r.device) == null ? void 0 : P.desktopEnabled) || !a && ((m = r.device) == null ? void 0 : m.mobileEnabled)) && c("div", { onMouseDown: (B) => {
1664
- var y, D;
1665
- !s && ((y = r.general) == null ? void 0 : y.flowStartTrigger) === "ON_CHATBOT_INTERACT" && l(!0), a ? (D = d.current) == null || D.blur() : B == null || B.preventDefault();
1666
- }, className: b, children: [c(Rn, {}), c(Fn, {}), u && !a && !((e = r.general) != null && e.embedded) && c(_, { children: [c("style", { children: `
1667
- html {
1668
- overflow: hidden !important;
1669
- touch-action: none !important;
1670
- scroll-behavior: auto !important;
1671
- }
1672
- ` }), c("div", { style: { position: "fixed", top: 0, left: 0, width: "100%", height: "100%", backgroundColor: "#fff", zIndex: 9999 } })] }), c("div", { style: (() => {
1673
- var B, y;
1674
- return a || (B = r.general) != null && B.embedded ? (y = r.general) != null && y.embedded ? { ...i.chatWindowStyle } : { ...i.chatWindowStyle, zIndex: 1e4 } : { ...i.chatWindowStyle, borderRadius: "0px", left: "0px", right: "auto", top: "0px", bottom: "auto", width: `${w}px`, height: `${p}px`, zIndex: 1e4 };
1675
- })(), className: "rcb-chat-window", children: [((t = r.general) == null ? void 0 : t.showHeader) && c(on, { buttons: f }), c(wn, { setChatScrollHeight: g }), c(Gn, {}), ((o = r.general) == null ? void 0 : o.showInputRow) && c(Un, { buttons: h }), ((n = r.general) == null ? void 0 : n.showFooter) && c(zn, { buttons: v })] })] }) });
1676
- var P, m;
1677
- }, Jt = mA(void 0), Vt = () => pA(Jt), ir = ({ children: A }) => {
1678
- var e;
1679
- const t = $(""), o = $({}), [n, a] = S({}), [r, i] = S({}), [s, l] = S(!1);
1680
- return X(() => {
1681
- l(!0);
1682
- }, []), s ? c("div", { style: { fontFamily: (e = n.general) == null ? void 0 : e.fontFamily }, children: c(Jt.Provider, { value: { loadConfig: async (d, g, p, w, u, f) => {
1683
- t.current = d, o.current = g;
1684
- const h = await nr(d, p, w, u);
1685
- f.current && (f.current.textContent = h.cssStylesText), a(h.settings), i(h.inlineStyles);
1686
- } }, children: c(en, { settings: n, setSettings: a, children: c(tn, { styles: r, setStyles: i, children: c(jn, { children: c(nn, { botIdRef: t, flowRef: o, children: c(cn, { children: c(rn, { settings: n, children: c(un, { children: A }) }) }) }) }) }) }) }) }) : null;
1687
- }, sr = ({ id: A, flow: e, settings: t, styles: o, themes: n, plugins: a, setConfigLoaded: r, styleRootRef: i }) => {
1688
- const s = uA(() => A, []), l = Vt(), { flowRef: d } = rA();
1689
- return d && d.current !== e && (d.current = e), X(() => {
1690
- (async () => {
1691
- var g, p;
1692
- (g = t.event) != null && g.rcbPreLoadChatBot && (await XA(Mt, { botId: s, currPath: null, prevPath: null }, { flow: e, settings: t, styles: o, themes: n, plugins: a })).defaultPrevented || (l != null && l.loadConfig && (await l.loadConfig(s, e, t, o, n, i), r(!0)), (p = t.event) != null && p.rcbPostLoadChatBot && XA(Ht, { botId: s, currPath: null, prevPath: null }, { flow: e, settings: t, styles: o, themes: n, plugins: a }));
1693
- })();
1694
- }, [n]), null;
1695
- }, ae = ["Quickstart", "API Docs", "Examples", "Github", "Discord"], lr = { 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: ae, path: "process_options" }, prompt_again: { message: "Do you need any other help?", options: ae, 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: ae, path: "process_options" }, process_options: { transition: { duration: 0 }, path: (A) => {
1696
- let e = "";
1697
- switch (A.userInput) {
1698
- case "Quickstart":
1699
- e = "https://react-chatbotify.com/docs/introduction/quickstart/";
1700
- break;
1701
- case "API Docs":
1702
- e = "https://react-chatbotify.com/docs/api/bot_options";
1703
- break;
1704
- case "Examples":
1705
- e = "https://react-chatbotify.com/docs/examples/basic_form";
1706
- break;
1707
- case "Github":
1708
- e = "https://github.com/tjtanjin/react-chatbotify/";
1709
- break;
1710
- case "Discord":
1711
- e = "https://discord.gg/6R4DK4G5Zh";
1712
- break;
1713
- default:
1714
- return "unknown_input";
1715
- }
1716
- return A.injectMessage("Sit tight! I'll send you right there!"), setTimeout(() => {
1717
- window.open(e);
1718
- }, 1e3), "repeat";
1719
- } }, repeat: { transition: { duration: 3e3 }, path: "prompt_again" } }, cr = ({ id: A, flow: e, settings: t, styles: o, themes: n, plugins: a }) => {
1720
- const r = uA(() => A || "rcb-" + qA(), []), i = e && Object.keys(e).length !== 0 ? e : lr, s = t || {}, l = o || {}, d = a || [], [g, p] = S(!1), w = Vt(), u = $(null), [f, h] = S(n || []);
1721
- X(() => {
1722
- n && h(n);
1723
- }, [n]);
1724
- const v = () => c(_, { children: [c(sr, { styleRootRef: u, id: r, flow: i, settings: s, styles: l, themes: f, plugins: d, setConfigLoaded: p }), g && c(ar, { plugins: a })] });
1725
- return c(w == null ? ir : _, { children: [c("style", { ref: u }), c("div", { id: r, children: v() })] });
1726
- };
1727
- ve(".rcb-toggle-button.rcb-button-show{background-color:#1a5b6e;background-position:50%;background-repeat:no-repeat;background-size:72%}.rcb-chat-window{max-width:100%;width:550px!important;.rcb-bot-avatar{background-position:50%;background-repeat:no-repeat;background-size:contain;border-radius:0}.rcb-chat-header{align-items:center;display:flex;flex-direction:row;font-weight:700}a{color:#000;font-weight:700;text-decoration:underline}a:hover{color:#107180}.rcb-bot-message a{color:#fff;text-decoration:none}.rcb-bot-message a:hover{text-decoration:underline}.rcb-chat-input-textarea{overflow-y:auto}.rcb-chat-footer-container{font-size:10px}}.embedded-qa-bot{.rcb-chat-window{max-width:100%;width:100%!important}}", { insertAt: "top" });
1728
- const Zt = (A) => {
1729
- const e = A.welcome || "Hello! What can I help you with?", t = A.prompt || "Questions should stand alone and not refer to previous ones.", o = A.embedded || !1, n = $(null), a = A.isLoggedIn !== void 0 && A.isLoggedIn, r = A.isAnonymous !== void 0 ? A.isAnonymous : !a, i = A.disabled !== void 0 ? A.disabled : r, s = A.isOpen !== void 0 && A.isOpen, l = A.onClose, d = A.apiKey || process.env.REACT_APP_API_KEY;
1730
- let g = !1;
1731
- X(() => {
1732
- n.current && n.current.parentElement;
1733
- }, []);
1734
- const p = { start: { message: e, path: "loop" }, loop: { message: async (w) => {
1735
- await (async (u) => {
1736
- try {
1737
- const f = { method: "POST", headers: { "Content-Type": "application/json", "X-API-KEY": d }, body: JSON.stringify({ query: u.userInput }) }, h = await fetch("https://access-ai.ccs.uky.edu/api/query", f), v = (await h.json()).response;
1738
- for (let b = 0; b < v.length; b++) await u.streamMessage(v.slice(0, b + 1)), await new Promise((P) => setTimeout(P, 2));
1739
- } catch {
1740
- await u.injectMessage("Unable to contact the Q&A Bot. Please try again later."), g = !0;
1741
- }
1742
- })(w);
1743
- }, path: () => g ? "start" : "loop" } };
1744
- return bA.createElement("div", { className: "access-qa-bot", ref: n }, bA.createElement(cr, { settings: { general: (() => {
1745
- const w = (u, f) => {
1746
- if (n.current) {
1747
- const h = getComputedStyle(n.current).getPropertyValue(u);
1748
- if (h && h.trim() !== "") return h.trim();
1749
- if (n.current.parentElement) {
1750
- const v = getComputedStyle(n.current.parentElement).getPropertyValue(u);
1751
- if (v && v.trim() !== "") return v.trim();
1752
- }
1753
- }
1754
- return f;
1755
- };
1756
- return { primaryColor: w("--primary-color", "#1a5b6e"), secondaryColor: w("--secondary-color", "#107180"), fontFamily: w("--font-family", "Arial, sans-serif"), embedded: o };
1757
- })(), header: { title: "ACCESS Q&A Bot", avatar: "https://support.access-ci.org/themes/contrib/asp-theme/images/icons/ACCESS-arrrow.svg" }, chatInput: { enabledPlaceholderText: t, disabledPlaceholderText: "Please log in to ask questions.", disabled: i }, chatHistory: { disabled: !0 }, botBubble: { simStream: !0, dangerouslySetInnerHtml: !0 }, chatButton: { icon: "https://support.access-ci.org/themes/contrib/asp-theme/images/icons/ACCESS-arrrow.svg" }, tooltip: { text: "Ask me about ACCESS! 😊" }, audio: { disabled: !0 }, emoji: { disabled: !0 }, fileAttachment: { disabled: !0 }, notification: { disabled: !0 }, footer: { text: bA.createElement("div", null, "Find out more ", bA.createElement("a", { href: "https://support.access-ci.org/tools/access-qa-tool" }, "about this tool"), " or ", bA.createElement("a", { href: "https://docs.google.com/forms/d/e/1FAIpQLSeWnE1r738GU1u_ri3TRpw9dItn6JNPi7-FH7QFB9bAHSVN0w/viewform" }, "give us feedback"), ".") } }, isOpen: s, onClose: l, flow: p }));
1758
- };
1759
- function ur(A) {
1760
- return bA.createElement(Zt, { embedded: A.embedded, welcome: A.welcome, prompt: A.prompt, isLoggedIn: A.isLoggedIn, isAnonymous: A.isAnonymous, disabled: A.disabled, isOpen: A.isOpen, onClose: A.onClose, apiKey: A.apiKey });
1761
- }
1762
- ve("body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}", { insertAt: "top" });
1763
- class $t extends HTMLElement {
1764
- constructor() {
1765
- super(), this.attachShadow({ mode: "open" }), this.container = document.createElement("div"), this.container.className = "qa-bot-container", this.shadowRoot.appendChild(this.container), this.injectStyles();
1766
- }
1767
- injectStyles() {
1768
- const e = document.createElement("style");
1769
- e.textContent = `
1770
- :host {
1771
- display: block;
1772
- --primary-color: #1a5b6e;
1773
- --secondary-color: #107180;
1774
- --font-family: Arial, sans-serif;
1775
- }
1776
-
1777
- .qa-bot-container {
1778
- width: 100%;
1779
- height: 100%;
1780
- font-family: var(--font-family);
1781
- }
1782
- `, this.shadowRoot.appendChild(e);
1783
- const t = document.createElement("style");
1784
- if (t.textContent = `
1785
- /* Essential styles from react-chatbotify */
1786
- .rcb-header-avatar {
1787
- width: 24px !important;
1788
- height: 24px !important;
1789
- margin-right: 8px !important;
1790
- }
1791
-
1792
- .rcb-chat-header {
1793
- background-color: var(--primary-color) !important;
1794
- }
1795
-
1796
- .rcb-chat-button {
1797
- background-color: var(--primary-color) !important;
1798
- }
1799
-
1800
- /* Ensure proper z-index for floating button */
1801
- .rcb-floating-button {
1802
- z-index: 1000 !important;
1803
- }
1804
-
1805
- /* Make links in footer readable */
1806
- .rcb-chat-footer a {
1807
- color: var(--primary-color) !important;
1808
- }
1809
-
1810
- /* Fix button styling */
1811
- .rcb-send-button {
1812
- background-color: var(--primary-color) !important;
1813
- }
1814
- `, this.shadowRoot.appendChild(t), document.styleSheets) try {
1815
- const o = document.createElement("style");
1816
- let n = "";
1817
- for (let a = 0; a < document.styleSheets.length; a++) try {
1818
- const r = document.styleSheets[a];
1819
- if (r.href && !r.href.startsWith(window.location.origin)) continue;
1820
- const i = r.cssRules || r.rules;
1821
- if (!i) continue;
1822
- for (let s = 0; s < i.length; s++) i[s].selectorText && (i[s].selectorText.includes(".rcb-") || i[s].selectorText.includes(".access-qa-bot")) && (n += i[s].cssText + `
1823
- `);
1824
- } catch {
1825
- continue;
1826
- }
1827
- n && (o.textContent = n, this.shadowRoot.appendChild(o));
1828
- } catch (o) {
1829
- console.warn("Failed to copy document styles to shadow DOM", o);
1830
- }
1831
- }
1832
- static get observedAttributes() {
1833
- return ["welcome", "prompt", "embedded", "is-logged-in", "is-anonymous", "disabled", "is-open", "api-key"];
1834
- }
1835
- attributeChangedCallback(e, t, o) {
1836
- t !== o && this._render();
1837
- }
1838
- _getProps() {
1839
- return { welcome: this.getAttribute("welcome"), prompt: this.getAttribute("prompt"), embedded: this.hasAttribute("embedded"), isLoggedIn: this.hasAttribute("is-logged-in"), isAnonymous: this.hasAttribute("is-anonymous"), disabled: this.hasAttribute("disabled"), isOpen: this.hasAttribute("is-open"), apiKey: this.getAttribute("api-key") || "demo-key", onClose: () => {
1840
- this.dispatchEvent(new CustomEvent("qabot-close"));
1841
- } };
1842
- }
1843
- connectedCallback() {
1844
- this.syncStyles(), this._render(), this.styleObserver = new MutationObserver(() => this.syncStyles()), this.styleObserver.observe(this, { attributes: !0, attributeFilter: ["style"] });
1845
- }
1846
- disconnectedCallback() {
1847
- this.styleObserver && this.styleObserver.disconnect(), this.root && this.root.unmount();
1848
- }
1849
- syncStyles() {
1850
- if (this.style.cssText) {
1851
- const e = this.style.cssText.split(";").filter((t) => t.trim().startsWith("--")).map((t) => t.trim());
1852
- if (e.length > 0) {
1853
- const t = this.container.style;
1854
- e.forEach((o) => {
1855
- const [n, a] = o.split(":").map((r) => r.trim());
1856
- t.setProperty(n, a);
1857
- });
1858
- }
1859
- }
1860
- }
1861
- _render() {
1862
- this.root || (this.root = we(this.container));
1863
- const e = this._getProps();
1864
- this.root.render(N(ot, null, N(Zt, e)));
1865
- }
1866
- }
1867
- customElements.define("access-qa-bot", $t);
1868
- const dr = $t;
1869
- function Ao(A) {
1870
- const { target: e, ...t } = A;
1871
- if (!(e && e instanceof HTMLElement)) return void console.error("QA Bot: A valid target DOM element is required");
1872
- const o = document.createElement("access-qa-bot");
1873
- return t.welcome && o.setAttribute("welcome", t.welcome), t.prompt && o.setAttribute("prompt", t.prompt), t.embedded && o.setAttribute("embedded", ""), t.isLoggedIn && o.setAttribute("is-logged-in", ""), t.isAnonymous && o.setAttribute("is-anonymous", ""), t.disabled && o.setAttribute("disabled", ""), t.isOpen && o.setAttribute("is-open", ""), t.apiKey && o.setAttribute("api-key", t.apiKey), t.styles && Object.entries(t.styles).forEach(([n, a]) => {
1874
- n.startsWith("--") && o.style.setProperty(n, a);
1875
- }), t.onClose && o.addEventListener("qabot-close", t.onClose), e.appendChild(o), () => {
1876
- e.removeChild(o);
1877
- };
1878
- }
1879
- function gr(A) {
1880
- const { target: e, version: t, isLoggedIn: o, isOpen: n, isAnonymous: a, ...r } = A;
1881
- if (e && e instanceof HTMLElement) {
1882
- if (typeof window < "u" && typeof customElements < "u" && customElements.get("access-qa-bot")) return Ao({ target: e, isLoggedIn: o, isAnonymous: a, isOpen: n, ...r });
1883
- {
1884
- const i = Yo.createRoot(e);
1885
- return i.render(bA.createElement(bA.StrictMode, null, bA.createElement(ur, ue({ isLoggedIn: o, isAnonymous: a, isOpen: n }, r)))), () => {
1886
- i.unmount();
1887
- };
1888
- }
1889
- }
1890
- console.error("QA Bot: A valid target DOM element is required");
1891
- }
1892
- typeof window < "u" && (window.process = { env: { REACT_APP_API_KEY: "demo-key" } }, window.accessQABot = { WebComponentQABot: dr, qAndATool: Ao });
1893
- export {
1894
- Zt as QABot,
1895
- dr as WebComponentQABot,
1896
- Zt as default,
1897
- gr as qAndATool
1898
- };