wineater-bot 3.4.1 → 3.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/wineater-chatbot.mjs +213 -149
- package/dist/wineater-chatbot.umd.js +11 -11
- package/index.html +1 -1
- package/package.json +1 -1
- package/src/js/i18n.js +65 -0
- package/src/js/widget.js +2 -1
|
@@ -384,7 +384,7 @@ var $n = { exports: {} };
|
|
|
384
384
|
return v.prototype.init = function(f) {
|
|
385
385
|
var h, m, g;
|
|
386
386
|
return r(this, void 0, void 0, function() {
|
|
387
|
-
var S, x, D, B, q, O, W, ee, oe, te, ne, ae, ce, ge, Ge, Ke, Me, se, K, Ct, Je, Pn, Xe, _t, Bn, jn, Nt, zn, Ot, Ye,
|
|
387
|
+
var S, x, D, B, q, O, W, ee, oe, te, ne, ae, ce, ge, Ge, Ke, Me, se, K, Ct, Je, Pn, Xe, _t, Bn, jn, Nt, zn, Ot, Ye, Le, Un, ie = this;
|
|
388
388
|
return a(this, function(fe) {
|
|
389
389
|
switch (fe.label) {
|
|
390
390
|
case 0:
|
|
@@ -398,7 +398,7 @@ var $n = { exports: {} };
|
|
|
398
398
|
ie.setLoadingState(i(i({}, ie.loadingState), { isFetching: !1, isLoading: !1, error: le })), oe == null || oe(le);
|
|
399
399
|
}, this.enableLogs = ce || !1, this.cacheOptions = Xe ? { skipAPI: !!Xe.skipAPI, ttl: Xe.ttl || 0, loadStale: !!Xe.loadStale } : this.cacheOptions, !this.cacheOptions.ttl && this.cacheOptions.skipAPI && console.warn("Flagsmith: you have set a cache ttl of 0 and are skipping API calls, this means the API will not be hit unless you clear local storage."), ne && (d = ne), this.enableAnalytics = Ge || !1, this.flags = Object.assign({}, te) || {}, this.datadogRum = ee || null, this.initialised = !0, this.ticks = 1e4, this.timer = this.enableLogs ? (/* @__PURE__ */ new Date()).valueOf() : null, this.cacheFlags = R !== void 0 && !!W, K && (R = K), Ke && typeof window < "u" && this.setupRealtime(se, S.environment.apiKey), Object.keys(this.flags).length && (this.loadingState = i(i({}, this.loadingState), { isLoading: !1, source: c.DEFAULT_FLAGS })), this.setState(Pn), this.log("Initialising with properties", f, this), ge && (typeof dtrum > "u" ? console.error("You have attempted to enable dynatrace but dtrum is undefined, please check you have the Dynatrace RUM JavaScript API installed.") : this.dtrum = dtrum), _t && (d = /* @__PURE__ */ function(le) {
|
|
400
400
|
return function(me, ve) {
|
|
401
|
-
var Te = ve.headers, X = ve.method,
|
|
401
|
+
var Te = ve.headers, X = ve.method, Fe = ve.body;
|
|
402
402
|
return new Promise(function(Oe) {
|
|
403
403
|
switch (X) {
|
|
404
404
|
case "GET":
|
|
@@ -409,7 +409,7 @@ var $n = { exports: {} };
|
|
|
409
409
|
});
|
|
410
410
|
case "POST":
|
|
411
411
|
case "PUT":
|
|
412
|
-
return le.post(me,
|
|
412
|
+
return le.post(me, Fe, { headers: Te }).subscribe(function(xe) {
|
|
413
413
|
Oe({ ok: !0, text: function() {
|
|
414
414
|
return Promise.resolve(xe);
|
|
415
415
|
} });
|
|
@@ -438,7 +438,7 @@ var $n = { exports: {} };
|
|
|
438
438
|
return [3, 8];
|
|
439
439
|
zn = function(le, me) {
|
|
440
440
|
return r(ie, void 0, void 0, function() {
|
|
441
|
-
var ve, Te, X,
|
|
441
|
+
var ve, Te, X, Fe, Oe, xe, Rt, Hn, Dt, At, Mt, Lt, Ft, Pt, Bt, jt, zt, Ut, Ht, $t, qt, Wt, Vt, Gt;
|
|
442
442
|
return a(this, function(Ee) {
|
|
443
443
|
switch (Ee.label) {
|
|
444
444
|
case 0:
|
|
@@ -446,7 +446,7 @@ var $n = { exports: {} };
|
|
|
446
446
|
return [3, 7];
|
|
447
447
|
ve = null, Te = null, Ee.label = 1;
|
|
448
448
|
case 1:
|
|
449
|
-
return Ee.trys.push([1, 5, , 6]), X = JSON.parse(me),
|
|
449
|
+
return Ee.trys.push([1, 5, , 6]), X = JSON.parse(me), Fe = !1, Oe = !1, X && X.api === this.api && ((At = (Dt = X.evaluationContext) === null || Dt === void 0 ? void 0 : Dt.environment) === null || At === void 0 ? void 0 : At.apiKey) === ((Mt = this.evaluationContext.environment) === null || Mt === void 0 ? void 0 : Mt.apiKey) && (xe = !0, this.evaluationContext.identity && ((Ft = (Lt = X.evaluationContext) === null || Lt === void 0 ? void 0 : Lt.identity) === null || Ft === void 0 ? void 0 : Ft.identifier) !== this.evaluationContext.identity.identifier && (this.log("Ignoring cache, identity has changed from " + ((Bt = (Pt = X.evaluationContext) === null || Pt === void 0 ? void 0 : Pt.identity) === null || Bt === void 0 ? void 0 : Bt.identifier) + " to " + this.evaluationContext.identity.identifier), xe = !1), this.cacheOptions.ttl && (!X.ts || (/* @__PURE__ */ new Date()).valueOf() - X.ts > this.cacheOptions.ttl) && (X.ts && !this.cacheOptions.loadStale ? (this.log("Ignoring cache, timestamp is too old ts:" + X.ts + " ttl: " + this.cacheOptions.ttl + " time elapsed since cache: " + ((/* @__PURE__ */ new Date()).valueOf() - X.ts) + "ms"), xe = !1) : X.ts && this.cacheOptions.loadStale && (this.log("Loading stale cache, timestamp ts:" + X.ts + " ttl: " + this.cacheOptions.ttl + " time elapsed since cache: " + ((/* @__PURE__ */ new Date()).valueOf() - X.ts) + "ms"), Oe = !0, xe = !0)), xe && (Fe = !0, Te = u((jt = this.evaluationContext.identity) === null || jt === void 0 ? void 0 : jt.traits, (Ut = (zt = X.evaluationContext) === null || zt === void 0 ? void 0 : zt.identity) === null || Ut === void 0 ? void 0 : Ut.traits), ve = u(this.flags, X.flags), this.setState(i(i({}, X), { evaluationContext: y(i(i({}, X.evaluationContext), { identity: !((Ht = X.evaluationContext) === null || Ht === void 0) && Ht.identity ? i(i({}, ($t = X.evaluationContext) === null || $t === void 0 ? void 0 : $t.identity), { traits: i(i({}, ((Wt = (qt = X.evaluationContext) === null || qt === void 0 ? void 0 : qt.identity) === null || Wt === void 0 ? void 0 : Wt.traits) || {}), Je || {}) }) : void 0 })) })), this.log("Retrieved flags from cache", X))), Fe ? (Rt = !ae && (!this.cacheOptions.skipAPI || Oe), this._onChange(null, { isFromServer: !1, flagsChanged: ve, traitsChanged: Te }, this._loadedState(null, c.CACHE, Rt)), this.oldFlags = this.flags, this.cacheOptions.skipAPI && Fe && !Oe && this.log("Skipping API, using cache"), Rt && this.getFlags(), [3, 4]) : [3, 2];
|
|
450
450
|
case 2:
|
|
451
451
|
return ae ? [3, 4] : [4, this.getFlags()];
|
|
452
452
|
case 3:
|
|
@@ -502,7 +502,7 @@ var $n = { exports: {} };
|
|
|
502
502
|
case 12:
|
|
503
503
|
return [3, 14];
|
|
504
504
|
case 13:
|
|
505
|
-
throw
|
|
505
|
+
throw Le = fe.sent(), this.log("Error during initialisation ", Le), Un = Le instanceof Error ? Le : new Error("".concat(Le)), (g = this.onError) === null || g === void 0 || g.call(this, Un), Le;
|
|
506
506
|
case 14:
|
|
507
507
|
return [2];
|
|
508
508
|
}
|
|
@@ -562,21 +562,21 @@ var $n = { exports: {} };
|
|
|
562
562
|
var f = v.fetch, h = v.AsyncStorage, m = v.eventSource;
|
|
563
563
|
return new I({ fetch: f, AsyncStorage: h, eventSource: m });
|
|
564
564
|
}
|
|
565
|
-
var
|
|
566
|
-
return
|
|
565
|
+
var L, $ = (L = function(v, f) {
|
|
566
|
+
return L = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(h, m) {
|
|
567
567
|
h.__proto__ = m;
|
|
568
568
|
} || function(h, m) {
|
|
569
569
|
for (var g in m)
|
|
570
570
|
Object.prototype.hasOwnProperty.call(m, g) && (h[g] = m[g]);
|
|
571
|
-
},
|
|
571
|
+
}, L(v, f);
|
|
572
572
|
}, function(v, f) {
|
|
573
573
|
if (typeof f != "function" && f !== null)
|
|
574
574
|
throw new TypeError("Class extends value " + String(f) + " is not a constructor or null");
|
|
575
575
|
function h() {
|
|
576
576
|
this.constructor = v;
|
|
577
577
|
}
|
|
578
|
-
|
|
579
|
-
}),
|
|
578
|
+
L(v, f), v.prototype = f === null ? Object.create(f) : (h.prototype = f.prototype, new h());
|
|
579
|
+
}), F = function(v) {
|
|
580
580
|
var f = typeof Symbol == "function" && Symbol.iterator, h = f && v[f], m = 0;
|
|
581
581
|
if (h)
|
|
582
582
|
return h.call(v);
|
|
@@ -636,7 +636,7 @@ Consider loading an EventSource polyfill and making it available globally as Eve
|
|
|
636
636
|
m.onmessage(B);
|
|
637
637
|
};
|
|
638
638
|
try {
|
|
639
|
-
for (var S =
|
|
639
|
+
for (var S = F(Object.keys(this._listeners)), x = S.next(); !x.done; x = S.next()) {
|
|
640
640
|
var D = x.value;
|
|
641
641
|
this._eventSource.addEventListener(D, this._onevent_wrapped);
|
|
642
642
|
}
|
|
@@ -667,7 +667,7 @@ Consider loading an EventSource polyfill and making it available globally as Eve
|
|
|
667
667
|
var g = this._listeners[f.type];
|
|
668
668
|
if (g != null)
|
|
669
669
|
try {
|
|
670
|
-
for (var S =
|
|
670
|
+
for (var S = F(N([], z(g), !1)), x = S.next(); !x.done; x = S.next())
|
|
671
671
|
x.value.call(this, f);
|
|
672
672
|
} catch (D) {
|
|
673
673
|
h = { error: D };
|
|
@@ -855,9 +855,9 @@ for (var J = 280; J < 288; ++J)
|
|
|
855
855
|
var tt = new de(32);
|
|
856
856
|
for (var J = 0; J < 32; ++J)
|
|
857
857
|
tt[J] = 5;
|
|
858
|
-
var Ms = /* @__PURE__ */ qe(Ne, 9, 0),
|
|
858
|
+
var Ms = /* @__PURE__ */ qe(Ne, 9, 0), Ls = /* @__PURE__ */ qe(tt, 5, 0), Tn = function(t) {
|
|
859
859
|
return (t + 7) / 8 | 0;
|
|
860
|
-
},
|
|
860
|
+
}, Fs = function(t, e, n) {
|
|
861
861
|
return (e == null || e < 0) && (e = 0), (n == null || n > t.length) && (n = t.length), new de(t.subarray(e, n));
|
|
862
862
|
}, Si = [
|
|
863
863
|
"unexpected EOF",
|
|
@@ -970,26 +970,26 @@ var Ms = /* @__PURE__ */ qe(Ne, 9, 0), Fs = /* @__PURE__ */ qe(tt, 5, 0), Tn = f
|
|
|
970
970
|
++M[j[I] & 31];
|
|
971
971
|
for (var I = 0; I < C.length; ++I)
|
|
972
972
|
++M[C[I] & 31];
|
|
973
|
-
for (var T = ct(M, 7),
|
|
973
|
+
for (var T = ct(M, 7), L = T.t, $ = T.l, F = 19; F > 4 && !L[an[F - 1]]; --F)
|
|
974
974
|
;
|
|
975
|
-
var z = u + 5 << 3, N = Ue(i, Ne) + Ue(r, tt) + a, P = Ue(i, p) + Ue(r, y) + a + 14 + 3 *
|
|
975
|
+
var z = u + 5 << 3, N = Ue(i, Ne) + Ue(r, tt) + a, P = Ue(i, p) + Ue(r, y) + a + 14 + 3 * F + Ue(M, L) + 2 * M[16] + 3 * M[17] + 7 * M[18];
|
|
976
976
|
if (o >= 0 && z <= N && z <= P)
|
|
977
977
|
return En(e, c, t.subarray(o, o + u));
|
|
978
978
|
var V, G, H, v;
|
|
979
979
|
if (be(e, c, 1 + (P < N)), c += 2, P < N) {
|
|
980
980
|
V = qe(p, b, 0), G = p, H = qe(y, E, 0), v = y;
|
|
981
|
-
var f = qe(
|
|
982
|
-
be(e, c, A - 257), be(e, c + 5, _ - 1), be(e, c + 10,
|
|
983
|
-
for (var I = 0; I <
|
|
984
|
-
be(e, c + 3 * I,
|
|
985
|
-
c += 3 *
|
|
981
|
+
var f = qe(L, $, 0);
|
|
982
|
+
be(e, c, A - 257), be(e, c + 5, _ - 1), be(e, c + 10, F - 4), c += 14;
|
|
983
|
+
for (var I = 0; I < F; ++I)
|
|
984
|
+
be(e, c + 3 * I, L[an[I]]);
|
|
985
|
+
c += 3 * F;
|
|
986
986
|
for (var h = [j, C], m = 0; m < 2; ++m)
|
|
987
987
|
for (var g = h[m], I = 0; I < g.length; ++I) {
|
|
988
988
|
var S = g[I] & 31;
|
|
989
|
-
be(e, c, f[S]), c +=
|
|
989
|
+
be(e, c, f[S]), c += L[S], S > 15 && (be(e, c, g[I] >> 5 & 127), c += g[I] >> 12);
|
|
990
990
|
}
|
|
991
991
|
} else
|
|
992
|
-
V = Ms, G = Ne, H =
|
|
992
|
+
V = Ms, G = Ne, H = Ls, v = tt;
|
|
993
993
|
for (var I = 0; I < l; ++I) {
|
|
994
994
|
var x = s[I];
|
|
995
995
|
if (x > 255) {
|
|
@@ -1007,12 +1007,12 @@ var Ms = /* @__PURE__ */ qe(Ne, 9, 0), Fs = /* @__PURE__ */ qe(tt, 5, 0), Tn = f
|
|
|
1007
1007
|
c && (o[0] = r.r >> 3);
|
|
1008
1008
|
for (var d = Bs[e - 1], p = d >> 13, b = d & 8191, w = (1 << n) - 1, y = r.p || new re(32768), E = r.h || new re(w + 1), R = Math.ceil(n / 3), j = 2 * R, A = function(ne) {
|
|
1009
1009
|
return (t[ne] ^ t[ne + 1] << R ^ t[ne + 2] << j) & w;
|
|
1010
|
-
}, k = new xt(25e3), C = new re(288), _ = new re(32), M = 0, I = 0, T = r.i || 0,
|
|
1010
|
+
}, k = new xt(25e3), C = new re(288), _ = new re(32), M = 0, I = 0, T = r.i || 0, L = 0, $ = r.w || 0, F = 0; T + 2 < a; ++T) {
|
|
1011
1011
|
var z = A(T), N = T & 32767, P = E[z];
|
|
1012
1012
|
if (y[N] = P, E[z] = N, $ <= T) {
|
|
1013
1013
|
var V = a - T;
|
|
1014
|
-
if ((M > 7e3 ||
|
|
1015
|
-
c = un(t, o, 0, k, C, _, I,
|
|
1014
|
+
if ((M > 7e3 || L > 24576) && (V > 423 || !u)) {
|
|
1015
|
+
c = un(t, o, 0, k, C, _, I, L, F, T - F, c), L = M = I = 0, F = T;
|
|
1016
1016
|
for (var G = 0; G < 286; ++G)
|
|
1017
1017
|
C[G] = 0;
|
|
1018
1018
|
for (var G = 0; G < 30; ++G)
|
|
@@ -1036,16 +1036,16 @@ var Ms = /* @__PURE__ */ qe(Ne, 9, 0), Fs = /* @__PURE__ */ qe(tt, 5, 0), Tn = f
|
|
|
1036
1036
|
N = P, P = y[N], h += N - P & 32767;
|
|
1037
1037
|
}
|
|
1038
1038
|
if (v) {
|
|
1039
|
-
k[
|
|
1039
|
+
k[L++] = 268435456 | dt[H] << 18 | cn[v];
|
|
1040
1040
|
var ee = dt[H] & 31, oe = cn[v] & 31;
|
|
1041
1041
|
I += kt[ee] + Tt[oe], ++C[257 + ee], ++_[oe], $ = T + H, ++M;
|
|
1042
1042
|
} else
|
|
1043
|
-
k[
|
|
1043
|
+
k[L++] = t[T], ++C[t[T]];
|
|
1044
1044
|
}
|
|
1045
1045
|
}
|
|
1046
1046
|
for (T = Math.max(T, $); T < a; ++T)
|
|
1047
|
-
k[
|
|
1048
|
-
c = un(t, o, u, k, C, _, I,
|
|
1047
|
+
k[L++] = t[T], ++C[t[T]];
|
|
1048
|
+
c = un(t, o, u, k, C, _, I, L, F, T - F, c), u || (r.r = c & 7 | o[c / 8 | 0] << 3, c -= 7, r.h = E, r.p = y, r.i = T, r.w = $);
|
|
1049
1049
|
} else {
|
|
1050
1050
|
for (var T = r.w || 0; T < a + u; T += 65535) {
|
|
1051
1051
|
var te = T + 65535;
|
|
@@ -1053,7 +1053,7 @@ var Ms = /* @__PURE__ */ qe(Ne, 9, 0), Fs = /* @__PURE__ */ qe(tt, 5, 0), Tn = f
|
|
|
1053
1053
|
}
|
|
1054
1054
|
r.i = a;
|
|
1055
1055
|
}
|
|
1056
|
-
return
|
|
1056
|
+
return Fs(l, 0, s + Tn(c) + i);
|
|
1057
1057
|
}, zs = /* @__PURE__ */ function() {
|
|
1058
1058
|
for (var t = new Int32Array(256), e = 0; e < 256; ++e) {
|
|
1059
1059
|
for (var n = e, s = 9; --s; )
|
|
@@ -1121,7 +1121,7 @@ var Ms = /* @__PURE__ */ qe(Ne, 9, 0), Fs = /* @__PURE__ */ qe(tt, 5, 0), Tn = f
|
|
|
1121
1121
|
var o = xi({}, nt[n].e);
|
|
1122
1122
|
return bi(nt[n].c + ";onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=" + e.toString() + "}", n, o, ki(o), s);
|
|
1123
1123
|
}, Ei = function() {
|
|
1124
|
-
return [de, re, xt, kt, Tt, an, dt, cn, Ms, Ne,
|
|
1124
|
+
return [de, re, xt, kt, Tt, an, dt, cn, Ms, Ne, Ls, tt, ft, Bs, In, qe, be, ze, ct, pt, ln, Ue, En, un, Tn, Fs, js, Cn, _i, Hs];
|
|
1125
1125
|
}, Ii = function() {
|
|
1126
1126
|
return [$s, qs, gt, Us, zs];
|
|
1127
1127
|
}, Hs = function(t) {
|
|
@@ -1462,7 +1462,7 @@ const Pe = {
|
|
|
1462
1462
|
}
|
|
1463
1463
|
return s;
|
|
1464
1464
|
};
|
|
1465
|
-
class
|
|
1465
|
+
class Li {
|
|
1466
1466
|
constructor(e) {
|
|
1467
1467
|
this.app = e, this.flags = [], this.storageKey = "__openreplay_flags";
|
|
1468
1468
|
const n = this.app.sessionStorage.getItem(this.storageKey);
|
|
@@ -1533,7 +1533,7 @@ class Fi {
|
|
|
1533
1533
|
return e.filter((r) => i.findIndex((a) => a.key === r.key) === -1);
|
|
1534
1534
|
}
|
|
1535
1535
|
}
|
|
1536
|
-
const Kn = { htmlmasked: "hidden", masked: "obscured" }, Se = !(typeof window > "u"),
|
|
1536
|
+
const Kn = { htmlmasked: "hidden", masked: "obscured" }, Se = !(typeof window > "u"), Fi = Se && navigator.userAgent.match(/firefox|fxios/i), Pi = 1e5;
|
|
1537
1537
|
let _n = Se ? Date.now() - performance.now() : 0;
|
|
1538
1538
|
function Kt() {
|
|
1539
1539
|
_n = Date.now() - performance.now();
|
|
@@ -2331,7 +2331,7 @@ const Er = {
|
|
|
2331
2331
|
fontStyle: "normal",
|
|
2332
2332
|
fontWeight: "500",
|
|
2333
2333
|
lineHeight: "auto"
|
|
2334
|
-
},
|
|
2334
|
+
}, Lr = {
|
|
2335
2335
|
...Zs,
|
|
2336
2336
|
display: "flex",
|
|
2337
2337
|
padding: "0.25rem 0.9375rem",
|
|
@@ -2340,7 +2340,7 @@ const Er = {
|
|
|
2340
2340
|
gap: "0.5rem",
|
|
2341
2341
|
borderRadius: "0.25rem",
|
|
2342
2342
|
border: "1px solid #394EFF"
|
|
2343
|
-
},
|
|
2343
|
+
}, Fr = {
|
|
2344
2344
|
display: "flex",
|
|
2345
2345
|
justifyContent: "space-between",
|
|
2346
2346
|
alignItems: "center",
|
|
@@ -2662,13 +2662,13 @@ class Vr {
|
|
|
2662
2662
|
fontSize: "13px",
|
|
2663
2663
|
fontWeight: "500",
|
|
2664
2664
|
lineHeight: "auto"
|
|
2665
|
-
}, "Tasks"), r = U("div", "icon", os, "-"), a = U("div", "content", Be), l = U("div", "pagination", Dr), o = U("div", "taskCard", us), u = U("div", "taskText", hs), c = U("div", "taskDescription", Mr), d = U("div", "taskButtons",
|
|
2665
|
+
}, "Tasks"), r = U("div", "icon", os, "-"), a = U("div", "content", Be), l = U("div", "pagination", Dr), o = U("div", "taskCard", us), u = U("div", "taskText", hs), c = U("div", "taskDescription", Mr), d = U("div", "taskButtons", Fr), p = U("div", "taskText", hs);
|
|
2666
2666
|
p.textContent = "Your answer";
|
|
2667
2667
|
const b = U("textarea", "taskDescription", {
|
|
2668
2668
|
resize: "vertical"
|
|
2669
2669
|
}), w = U("div", "inputArea", us);
|
|
2670
2670
|
w.append(p, b);
|
|
2671
|
-
const y = U("div", "closePanelButton", Zs, "Collapse Panel"), E = U("div", "nextButton",
|
|
2671
|
+
const y = U("div", "closePanelButton", Zs, "Collapse Panel"), E = U("div", "nextButton", Lr, "Done, Next");
|
|
2672
2672
|
s.append(i, r), o.append(u, c), d.append(y, E), a.append(l, o, w, d), n.append(s, a);
|
|
2673
2673
|
const R = () => {
|
|
2674
2674
|
const k = e[this.currentTaskIndex];
|
|
@@ -2708,7 +2708,7 @@ class Vr {
|
|
|
2708
2708
|
if (b.value = "", (C = this.signalManager) == null || C.signalTask(e[this.currentTaskIndex].task_id, "done", k), this.currentTaskIndex < e.length - 1) {
|
|
2709
2709
|
this.currentTaskIndex++, R();
|
|
2710
2710
|
const T = (_ = this.signalManager) == null ? void 0 : _.getDurations();
|
|
2711
|
-
T && T.tasks.findIndex((
|
|
2711
|
+
T && T.tasks.findIndex((L) => L.taskId === e[this.currentTaskIndex].task_id) === -1 && (T.tasks.push({
|
|
2712
2712
|
taskId: e[this.currentTaskIndex].task_id,
|
|
2713
2713
|
started: this.app.timestamp()
|
|
2714
2714
|
}), (M = this.signalManager) == null || M.setDurations(T)), (I = this.signalManager) == null || I.signalTask(e[this.currentTaskIndex].task_id, "begin"), A();
|
|
@@ -2760,7 +2760,7 @@ function bt(t) {
|
|
|
2760
2760
|
function Et(t) {
|
|
2761
2761
|
return t.nodeType === Node.DOCUMENT_NODE || t.nodeType === Node.DOCUMENT_FRAGMENT_NODE;
|
|
2762
2762
|
}
|
|
2763
|
-
function
|
|
2763
|
+
function Q(t, e) {
|
|
2764
2764
|
return t.localName === e;
|
|
2765
2765
|
}
|
|
2766
2766
|
class Kr {
|
|
@@ -2769,7 +2769,7 @@ class Kr {
|
|
|
2769
2769
|
this.clear(), this.app.nodes.scanTree(this.captureCanvas);
|
|
2770
2770
|
}, this.captureCanvas = (s) => {
|
|
2771
2771
|
const i = this.app.nodes.getID(s);
|
|
2772
|
-
if (!i || !
|
|
2772
|
+
if (!i || !Q(s, "canvas") || this.app.sanitizer.isObscured(i) || this.app.sanitizer.isHidden(i) || !Q(s, "canvas") || this.snapshots[i])
|
|
2773
2773
|
return;
|
|
2774
2774
|
new IntersectionObserver((l) => {
|
|
2775
2775
|
l.forEach((o) => {
|
|
@@ -2792,7 +2792,7 @@ class Kr {
|
|
|
2792
2792
|
});
|
|
2793
2793
|
}, o = setInterval(() => {
|
|
2794
2794
|
const u = this.app.nodes.getID(s), c = u ? this.app.nodes.getNode(u) : void 0;
|
|
2795
|
-
!c || !
|
|
2795
|
+
!c || !Q(c, "canvas") || c !== s ? (this.app.debug.log("Canvas element not in sync"), clearInterval(o)) : this.snapshots[i].paused || (this.options.useAnimationFrame ? requestAnimationFrame(() => {
|
|
2796
2796
|
l(c);
|
|
2797
2797
|
}) : l(c));
|
|
2798
2798
|
}, this.interval);
|
|
@@ -2993,12 +2993,12 @@ class Rn {
|
|
|
2993
2993
|
s.substr(0, 6) === "xlink:" && (s = s.substr(6)), i === null ? this.app.send(Yn(e, s)) : s === "href" ? (i.length > 1e5 && (i = ""), this.app.send(hn(e, s, i, this.app.getBaseHref()))) : this.app.attributeSender.sendSetAttribute(e, s, i);
|
|
2994
2994
|
return;
|
|
2995
2995
|
}
|
|
2996
|
-
if (!(s === "src" || s === "srcset" || s === "integrity" || s === "crossorigin" || s === "autocomplete" || s.substr(0, 2) === "on") && !(s === "value" &&
|
|
2996
|
+
if (!(s === "src" || s === "srcset" || s === "integrity" || s === "crossorigin" || s === "autocomplete" || s.substr(0, 2) === "on") && !(s === "value" && Q(n, "input") && n.type !== "button" && n.type !== "reset" && n.type !== "submit")) {
|
|
2997
2997
|
if (i === null) {
|
|
2998
2998
|
this.app.send(Yn(e, s));
|
|
2999
2999
|
return;
|
|
3000
3000
|
}
|
|
3001
|
-
if (s === "style" || s === "href" &&
|
|
3001
|
+
if (s === "style" || s === "href" && Q(n, "link")) {
|
|
3002
3002
|
this.app.send(hn(e, s, i, this.app.getBaseHref()));
|
|
3003
3003
|
return;
|
|
3004
3004
|
}
|
|
@@ -3006,7 +3006,7 @@ class Rn {
|
|
|
3006
3006
|
}
|
|
3007
3007
|
}
|
|
3008
3008
|
sendNodeData(e, n, s) {
|
|
3009
|
-
if (
|
|
3009
|
+
if (Q(n, "style")) {
|
|
3010
3010
|
this.app.send(hr(e, s, this.app.getBaseHref()));
|
|
3011
3011
|
return;
|
|
3012
3012
|
}
|
|
@@ -3059,7 +3059,7 @@ class Rn {
|
|
|
3059
3059
|
return !0;
|
|
3060
3060
|
const s = n.parentNode;
|
|
3061
3061
|
let i;
|
|
3062
|
-
if (!
|
|
3062
|
+
if (!Q(n, "html") || !this.isTopContext) {
|
|
3063
3063
|
if (s === null)
|
|
3064
3064
|
return this.unbindTree(n), !1;
|
|
3065
3065
|
if (i = this.app.nodes.getID(s), i === void 0)
|
|
@@ -3222,7 +3222,7 @@ class to extends Rn {
|
|
|
3222
3222
|
super(e, !0), this.iframeOffsets = new eo(), this.contextCallbacks = [], this.contextsSet = /* @__PURE__ */ new Set(), this.iframeObservers = [], this.shadowRootObservers = [], this.options = Object.assign({
|
|
3223
3223
|
captureIFrames: !0
|
|
3224
3224
|
}, n), this.app.nodes.attachNodeCallback((s) => {
|
|
3225
|
-
|
|
3225
|
+
Q(s, "iframe") && (this.options.captureIFrames && !Ae(s, "obscured") || Ae(s, "capture")) && this.handleIframe(s);
|
|
3226
3226
|
}), this.app.nodes.attachNodeCallback((s) => {
|
|
3227
3227
|
ke(s) && s.shadowRoot !== null && this.handleShadowRoot(s.shadowRoot);
|
|
3228
3228
|
});
|
|
@@ -3412,10 +3412,10 @@ class oo {
|
|
|
3412
3412
|
}
|
|
3413
3413
|
}
|
|
3414
3414
|
const Qe = "canceled", gs = "or_uxt_active", en = "or_buffer_1", Ce = (t) => ({ reason: t, success: !1 }), ao = (t) => ({ ...t, success: !0 });
|
|
3415
|
-
var
|
|
3415
|
+
var Y;
|
|
3416
3416
|
(function(t) {
|
|
3417
3417
|
t[t.NotActive = 0] = "NotActive", t[t.Starting = 1] = "Starting", t[t.Active = 2] = "Active", t[t.ColdStart = 3] = "ColdStart";
|
|
3418
|
-
})(
|
|
3418
|
+
})(Y || (Y = {}));
|
|
3419
3419
|
const ti = "https://api.openreplay.com/ingest";
|
|
3420
3420
|
function tn() {
|
|
3421
3421
|
const t = (/* @__PURE__ */ new Date()).getTimezoneOffset() * -1, e = t >= 0 ? "+" : "-", n = Math.floor(Math.abs(t) / 60), s = Math.abs(t) % 60;
|
|
@@ -3437,7 +3437,7 @@ const co = (t) => new Promise((e) => setTimeout(e, t)), ue = {
|
|
|
3437
3437
|
};
|
|
3438
3438
|
let lo = class {
|
|
3439
3439
|
constructor(e, n, s, i, r) {
|
|
3440
|
-
this.signalError = i, this.insideIframe = r, this.messages = [], this.bufferedMessages1 = [], this.bufferedMessages2 = [], this.startCallbacks = [], this.stopCallbacks = [], this.commitCallbacks = [], this.activityState =
|
|
3440
|
+
this.signalError = i, this.insideIframe = r, this.messages = [], this.bufferedMessages1 = [], this.bufferedMessages2 = [], this.startCallbacks = [], this.stopCallbacks = [], this.commitCallbacks = [], this.activityState = Y.NotActive, this.version = "14.0.4", this.socketMode = !1, this.compressionThreshold = 24 * 1e3, this.bc = null, this.canvasRecorder = null, this.conditionsManager = null, this.canStart = !1, this.rootId = null, this.pageFrames = [], this.frameOderNumber = 0, this.initialHostName = location.hostname, this.startTimeout = null, this.coldStartCommitN = 0, this.delay = 0, this.coldInterval = null, this.orderNumber = 0, this.coldStartTs = 0, this.singleBuffer = !1, this.onSessionSent = () => {
|
|
3441
3441
|
}, this.restartCanvasTracking = () => {
|
|
3442
3442
|
var o;
|
|
3443
3443
|
(o = this.canvasRecorder) == null || o.restartTracking();
|
|
@@ -3495,7 +3495,7 @@ let lo = class {
|
|
|
3495
3495
|
const o = location.hostname.split(".").slice(-2).join("_");
|
|
3496
3496
|
this.bc = new BroadcastChannel(`rick_${o}`);
|
|
3497
3497
|
}
|
|
3498
|
-
this.revID = this.options.revID, this.localStorage = this.options.localStorage ?? window.localStorage, this.sessionStorage = this.options.sessionStorage ?? window.sessionStorage, this.sanitizer = new so(this, s), this.nodes = new Qr(this.options.node_id), this.observer = new to(this, s), this.ticker = new oo(this), this.ticker.attach(() => this.commit()), this.debug = new Yr(this.options.__debug__), this.session = new io(this, this.options), this.attributeSender = new Di(this, !!this.options.disableStringDict), this.featureFlags = new
|
|
3498
|
+
this.revID = this.options.revID, this.localStorage = this.options.localStorage ?? window.localStorage, this.sessionStorage = this.options.sessionStorage ?? window.sessionStorage, this.sanitizer = new so(this, s), this.nodes = new Qr(this.options.node_id), this.observer = new to(this, s), this.ticker = new oo(this), this.ticker.attach(() => this.commit()), this.debug = new Yr(this.options.__debug__), this.session = new io(this, this.options), this.attributeSender = new Di(this, !!this.options.disableStringDict), this.featureFlags = new Li(this), this.tagWatcher = new Tr(this.sessionStorage, this.debug.error, (o) => {
|
|
3499
3499
|
this.send(Sr(o));
|
|
3500
3500
|
}), this.session.attachUpdateCallback(({ userID: o, metadata: u }) => {
|
|
3501
3501
|
o != null && this.send(or(o)), u != null && Object.entries(u).forEach(([c, d]) => this.send(Qn(c, d)));
|
|
@@ -3561,7 +3561,7 @@ let lo = class {
|
|
|
3561
3561
|
let y = w;
|
|
3562
3562
|
return this.pageFrames.forEach((E) => {
|
|
3563
3563
|
if (E.dataset.domain === c.data.domain) {
|
|
3564
|
-
const [R, j, A, k, C, _, M] = w, { left: I, top: T, width:
|
|
3564
|
+
const [R, j, A, k, C, _, M] = w, { left: I, top: T, width: L, height: $ } = E.getBoundingClientRect(), F = document.documentElement.scrollWidth, z = document.documentElement.scrollHeight, N = _ / 100 * L + I, P = M / 100 * $ + T, V = N / F, G = P / z;
|
|
3565
3565
|
y = [
|
|
3566
3566
|
R,
|
|
3567
3567
|
j,
|
|
@@ -3667,7 +3667,7 @@ let lo = class {
|
|
|
3667
3667
|
}
|
|
3668
3668
|
send(e, n = !1) {
|
|
3669
3669
|
var s;
|
|
3670
|
-
this.activityState !==
|
|
3670
|
+
this.activityState !== Y.NotActive && (this.activityState === Y.ColdStart ? (this.bufferedMessages1.push(e), this.singleBuffer || this.bufferedMessages2.push(e), (s = this.conditionsManager) == null || s.processMessage(e)) : this.messages.push(e), this.activityState === Y.Active && n && this.commit());
|
|
3671
3671
|
}
|
|
3672
3672
|
/**
|
|
3673
3673
|
* Normal workflow: add timestamp and tab data to batch, then commit it
|
|
@@ -3709,7 +3709,7 @@ let lo = class {
|
|
|
3709
3709
|
this.coldStartCommitN += 1, this.coldStartCommitN === 2 && (this.bufferedMessages1.push(Re(this.timestamp())), this.bufferedMessages1.push(De(this.session.getTabId())), this.bufferedMessages2.push(Re(this.timestamp())), this.bufferedMessages2.push(De(this.session.getTabId())), this.coldStartCommitN = 0);
|
|
3710
3710
|
}
|
|
3711
3711
|
commit() {
|
|
3712
|
-
this.activityState ===
|
|
3712
|
+
this.activityState === Y.ColdStart ? this._cStartCommit() : this._nCommit();
|
|
3713
3713
|
}
|
|
3714
3714
|
postToWorker(e) {
|
|
3715
3715
|
var n;
|
|
@@ -3808,7 +3808,7 @@ let lo = class {
|
|
|
3808
3808
|
return e.startsWith(this.options.ingestPoint);
|
|
3809
3809
|
}
|
|
3810
3810
|
active() {
|
|
3811
|
-
return this.activityState ===
|
|
3811
|
+
return this.activityState === Y.Active;
|
|
3812
3812
|
}
|
|
3813
3813
|
resetNextPageSession(e) {
|
|
3814
3814
|
e ? this.sessionStorage.setItem(this.options.session_reset_key, "t") : this.sessionStorage.removeItem(this.options.session_reset_key);
|
|
@@ -3827,7 +3827,7 @@ let lo = class {
|
|
|
3827
3827
|
const s = 1e3, i = this.checkSessionToken(e.forceNew);
|
|
3828
3828
|
n && await this.setupConditionalStart(e);
|
|
3829
3829
|
const r = () => {
|
|
3830
|
-
this.orderNumber += 1, Kt(), this.coldStartTs = pe(), this.orderNumber % 2 === 0 ? (this.bufferedMessages1.length = 0, this.bufferedMessages1.push(Re(this.timestamp())), this.bufferedMessages1.push(De(this.session.getTabId()))) : (this.bufferedMessages2.length = 0, this.bufferedMessages2.push(Re(this.timestamp())), this.bufferedMessages2.push(De(this.session.getTabId()))), this.stop(!1), this.activityState =
|
|
3830
|
+
this.orderNumber += 1, Kt(), this.coldStartTs = pe(), this.orderNumber % 2 === 0 ? (this.bufferedMessages1.length = 0, this.bufferedMessages1.push(Re(this.timestamp())), this.bufferedMessages1.push(De(this.session.getTabId()))) : (this.bufferedMessages2.length = 0, this.bufferedMessages2.push(Re(this.timestamp())), this.bufferedMessages2.push(De(this.session.getTabId()))), this.stop(!1), this.activityState = Y.ColdStart, e.sessionHash && this.session.applySessionHash(e.sessionHash), e.forceNew && this.session.reset(), this.session.assign({
|
|
3831
3831
|
userID: e.userID,
|
|
3832
3832
|
metadata: e.metadata
|
|
3833
3833
|
}), i || (this.debug.log("continuing session on new tab", this.session.getTabId()), this.send(lt(this.session.getTabId()))), this.observer.observe(), this.ticker.start();
|
|
@@ -3894,7 +3894,7 @@ let lo = class {
|
|
|
3894
3894
|
const a = JSON.parse(i);
|
|
3895
3895
|
this.bufferedMessages1 = Array.isArray(a) ? a : this.bufferedMessages1, this.localStorage.removeItem(en);
|
|
3896
3896
|
}
|
|
3897
|
-
this.bufferedMessages1.push(Re(this.timestamp())), this.bufferedMessages1.push(De(this.session.getTabId())), this.activityState =
|
|
3897
|
+
this.bufferedMessages1.push(Re(this.timestamp())), this.bufferedMessages1.push(De(this.session.getTabId())), this.activityState = Y.ColdStart, e.sessionHash && this.session.applySessionHash(e.sessionHash), e.forceNew && this.session.reset(), this.session.assign({
|
|
3898
3898
|
userID: e.userID,
|
|
3899
3899
|
metadata: e.metadata
|
|
3900
3900
|
});
|
|
@@ -3981,14 +3981,14 @@ let lo = class {
|
|
|
3981
3981
|
this.postToWorker([["q_end"]]), this.clearBuffers();
|
|
3982
3982
|
}
|
|
3983
3983
|
async _start(e = {}, n = !1, s) {
|
|
3984
|
-
const i = this.activityState ===
|
|
3984
|
+
const i = this.activityState === Y.ColdStart;
|
|
3985
3985
|
if (i && this.coldInterval && clearInterval(this.coldInterval), !this.worker) {
|
|
3986
3986
|
const o = "No worker found: perhaps, CSP is not set.";
|
|
3987
3987
|
return this.signalError(o, []), Promise.resolve(Ce(o));
|
|
3988
3988
|
}
|
|
3989
|
-
if (this.activityState ===
|
|
3989
|
+
if (this.activityState === Y.Active || this.activityState === Y.Starting)
|
|
3990
3990
|
return Promise.resolve(Ce("OpenReplay: trying to call `start()` on the instance that has been started already."));
|
|
3991
|
-
this.activityState =
|
|
3991
|
+
this.activityState = Y.Starting, i || Kt(), e.sessionHash && this.session.applySessionHash(e.sessionHash), e.forceNew && this.session.reset(), this.session.assign({
|
|
3992
3992
|
// MBTODO: maybe it would make sense to `forceNew` if the `userID` was changed
|
|
3993
3993
|
userID: e.userID,
|
|
3994
3994
|
metadata: e.metadata
|
|
@@ -4058,7 +4058,7 @@ let lo = class {
|
|
|
4058
4058
|
canvasEnabled: M,
|
|
4059
4059
|
canvasQuality: I,
|
|
4060
4060
|
canvasFPS: T,
|
|
4061
|
-
assistOnly:
|
|
4061
|
+
assistOnly: L
|
|
4062
4062
|
} = await o.json();
|
|
4063
4063
|
if (typeof u != "string" || typeof c != "string" || typeof E != "number" && typeof E < "u" || typeof y != "string" || typeof w != "number" || typeof p != "number" && typeof p < "u") {
|
|
4064
4064
|
const N = `Incorrect server response: ${JSON.stringify(o)}`;
|
|
@@ -4075,13 +4075,13 @@ let lo = class {
|
|
|
4075
4075
|
sessionID: y,
|
|
4076
4076
|
timestamp: E || r,
|
|
4077
4077
|
projectID: d
|
|
4078
|
-
}),
|
|
4078
|
+
}), L ? (this.socketMode = !0, this.worker.postMessage("stop")) : this.worker.postMessage({
|
|
4079
4079
|
type: "auth",
|
|
4080
4080
|
token: u,
|
|
4081
4081
|
beaconSizeLimit: p
|
|
4082
4082
|
}), !l && u === a && (this.debug.log("continuing session on new tab", this.session.getTabId()), this.send(lt(this.session.getTabId()))), Object.entries(this.session.getInfo().metadata).forEach(([N, P]) => this.send(Qn(N, P))), this.localStorage.setItem(this.options.local_uuid_key, c), this.compressionThreshold = b;
|
|
4083
4083
|
const $ = { sessionToken: u, userUUID: c, sessionID: y };
|
|
4084
|
-
if (this.startCallbacks.forEach((N) => N($)), this.featureFlags.reloadFlags(), await this.tagWatcher.fetchTags(this.options.ingestPoint, u), this.activityState =
|
|
4084
|
+
if (this.startCallbacks.forEach((N) => N($)), this.featureFlags.reloadFlags(), await this.tagWatcher.fetchTags(this.options.ingestPoint, u), this.activityState = Y.Active, M && !this.options.canvas.disableCanvas && (this.canvasRecorder = this.canvasRecorder ?? new Kr(this, {
|
|
4085
4085
|
fps: T,
|
|
4086
4086
|
quality: I,
|
|
4087
4087
|
isDebug: this.options.canvas.__save_canvas_locally,
|
|
@@ -4095,16 +4095,16 @@ let lo = class {
|
|
|
4095
4095
|
} else
|
|
4096
4096
|
this.insideIframe && this.rootId ? this.observer.crossdomainObserve(this.rootId, this.frameOderNumber) : this.observer.observe(), this.ticker.start();
|
|
4097
4097
|
this.uxtManager = this.uxtManager ? this.uxtManager : new Vr(this, gs);
|
|
4098
|
-
let
|
|
4098
|
+
let F;
|
|
4099
4099
|
const z = this.localStorage.getItem(gs);
|
|
4100
|
-
if (z && (
|
|
4100
|
+
if (z && (F = parseInt(z, 10)), location != null && location.search) {
|
|
4101
4101
|
const N = new URLSearchParams(location.search);
|
|
4102
4102
|
if (N.has("oruxt")) {
|
|
4103
4103
|
const P = N.get("oruxt");
|
|
4104
|
-
|
|
4104
|
+
F = P ? parseInt(P, 10) : void 0;
|
|
4105
4105
|
}
|
|
4106
4106
|
}
|
|
4107
|
-
return
|
|
4107
|
+
return F && (this.uxtManager.isActive ? this.onUxtCb.forEach((N) => N(F)) : this.uxtManager.getTest(F, u, !!z).then((N) => {
|
|
4108
4108
|
N && this.onUxtCb.forEach((P) => P(N));
|
|
4109
4109
|
})), ao($);
|
|
4110
4110
|
} catch (o) {
|
|
@@ -4133,7 +4133,7 @@ let lo = class {
|
|
|
4133
4133
|
async waitStarted() {
|
|
4134
4134
|
return new Promise((e) => {
|
|
4135
4135
|
const n = () => {
|
|
4136
|
-
this.activityState ===
|
|
4136
|
+
this.activityState === Y.Active ? e(!0) : setTimeout(n, 25);
|
|
4137
4137
|
};
|
|
4138
4138
|
n();
|
|
4139
4139
|
});
|
|
@@ -4143,7 +4143,7 @@ let lo = class {
|
|
|
4143
4143
|
* and here we just apply 10ms delay just in case
|
|
4144
4144
|
* */
|
|
4145
4145
|
async start(...e) {
|
|
4146
|
-
return this.activityState ===
|
|
4146
|
+
return this.activityState === Y.Active || this.activityState === Y.Starting ? Promise.resolve(Ce("OpenReplay: trying to call `start()` on the instance that has been started already.")) : document.hidden ? new Promise((n) => {
|
|
4147
4147
|
const s = async () => {
|
|
4148
4148
|
document.hidden || (await this.waitStart(), document.removeEventListener("visibilitychange", s), n(this._start(...e)));
|
|
4149
4149
|
};
|
|
@@ -4173,11 +4173,11 @@ let lo = class {
|
|
|
4173
4173
|
}
|
|
4174
4174
|
stop(e = !0) {
|
|
4175
4175
|
var n;
|
|
4176
|
-
if (this.activityState !==
|
|
4176
|
+
if (this.activityState !== Y.NotActive)
|
|
4177
4177
|
try {
|
|
4178
4178
|
this.attributeSender.clear(), this.sanitizer.clear(), this.observer.disconnect(), this.nodes.clear(), this.ticker.stop(), this.stopCallbacks.forEach((s) => s()), this.debug.log("OpenReplay tracking stopped."), this.tagWatcher.clear(), this.worker && e && this.worker.postMessage("stop"), (n = this.canvasRecorder) == null || n.clear();
|
|
4179
4179
|
} finally {
|
|
4180
|
-
this.activityState =
|
|
4180
|
+
this.activityState = Y.NotActive;
|
|
4181
4181
|
}
|
|
4182
4182
|
}
|
|
4183
4183
|
};
|
|
@@ -4541,7 +4541,7 @@ function ws(t, e = document.location) {
|
|
|
4541
4541
|
return t = t.trim(), t.startsWith("//") || t.startsWith("http://") || t.startsWith("https://") || t.startsWith("data:") ? t : t.startsWith("/") ? e.origin + t : e.origin + e.pathname + t;
|
|
4542
4542
|
}
|
|
4543
4543
|
function wo(t) {
|
|
4544
|
-
return
|
|
4544
|
+
return Fi && (t.startsWith("data:image/svg+xml") || t.match(/.svg$|/i));
|
|
4545
4545
|
}
|
|
4546
4546
|
const So = "https://static.openreplay.com/tracker/placeholder.jpeg";
|
|
4547
4547
|
function xo(t) {
|
|
@@ -4576,7 +4576,7 @@ function xo(t) {
|
|
|
4576
4576
|
t.attachStopCallback(() => {
|
|
4577
4577
|
a.disconnect();
|
|
4578
4578
|
}), t.nodes.attachNodeCallback((l) => {
|
|
4579
|
-
|
|
4579
|
+
Q(l, "img") && (t.nodes.attachNodeListener(l, "error", () => i(l)), t.nodes.attachNodeListener(l, "load", () => r(l)), r(l), a.observe(l, { attributes: !0, attributeFilter: ["src", "srcset"] }));
|
|
4580
4580
|
});
|
|
4581
4581
|
}
|
|
4582
4582
|
const ko = [
|
|
@@ -4591,10 +4591,10 @@ const ko = [
|
|
|
4591
4591
|
"time"
|
|
4592
4592
|
];
|
|
4593
4593
|
function To(t) {
|
|
4594
|
-
return
|
|
4594
|
+
return Q(t, "textarea") ? !0 : Q(t, "input") ? ko.includes(t.type) : !1;
|
|
4595
4595
|
}
|
|
4596
4596
|
function Eo(t) {
|
|
4597
|
-
if (!
|
|
4597
|
+
if (!Q(t, "input"))
|
|
4598
4598
|
return !1;
|
|
4599
4599
|
const e = t.type;
|
|
4600
4600
|
return e === "checkbox" || e === "radio";
|
|
@@ -4602,7 +4602,7 @@ function Eo(t) {
|
|
|
4602
4602
|
const Io = Se && "labels" in HTMLInputElement.prototype ? (t) => {
|
|
4603
4603
|
let e = t;
|
|
4604
4604
|
for (; (e = e.parentNode) !== null; )
|
|
4605
|
-
if (
|
|
4605
|
+
if (Q(e, "label"))
|
|
4606
4606
|
return e;
|
|
4607
4607
|
const n = t.labels;
|
|
4608
4608
|
if (n !== null && n.length === 1)
|
|
@@ -4610,7 +4610,7 @@ const Io = Se && "labels" in HTMLInputElement.prototype ? (t) => {
|
|
|
4610
4610
|
} : (t) => {
|
|
4611
4611
|
let e = t;
|
|
4612
4612
|
for (; (e = e.parentNode) !== null; )
|
|
4613
|
-
if (
|
|
4613
|
+
if (Q(e, "label"))
|
|
4614
4614
|
return e;
|
|
4615
4615
|
const n = t.id;
|
|
4616
4616
|
if (n) {
|
|
@@ -4687,7 +4687,7 @@ function Co(t, e) {
|
|
|
4687
4687
|
t.nodes.attachNodeCallback(t.safe((c) => {
|
|
4688
4688
|
const d = t.nodes.getID(c);
|
|
4689
4689
|
if (d !== void 0) {
|
|
4690
|
-
if (
|
|
4690
|
+
if (Q(c, "select") && (i(d, c), t.nodes.attachNodeListener(c, "change", () => i(d, c))), To(c)) {
|
|
4691
4691
|
l(d, c);
|
|
4692
4692
|
let p = 0, b = 0, w = 0;
|
|
4693
4693
|
const y = () => {
|
|
@@ -4846,10 +4846,10 @@ function sn(t) {
|
|
|
4846
4846
|
return t.name !== "html" && !t.name.startsWith("#");
|
|
4847
4847
|
}
|
|
4848
4848
|
function ot(...t) {
|
|
4849
|
-
const e = t.filter(
|
|
4849
|
+
const e = t.filter(Lo);
|
|
4850
4850
|
return e.length > 0 ? e : null;
|
|
4851
4851
|
}
|
|
4852
|
-
function
|
|
4852
|
+
function Lo(t) {
|
|
4853
4853
|
return t != null;
|
|
4854
4854
|
}
|
|
4855
4855
|
function* ci(t, e = []) {
|
|
@@ -4876,10 +4876,10 @@ function* ui(t, e, n = {
|
|
|
4876
4876
|
const r = It(i);
|
|
4877
4877
|
if (n.visited.has(r))
|
|
4878
4878
|
return;
|
|
4879
|
-
ai(i) &&
|
|
4879
|
+
ai(i) && Fo(i, e) && (yield i, n.visited.set(r, !0), yield* ui(i, e, n));
|
|
4880
4880
|
}
|
|
4881
4881
|
}
|
|
4882
|
-
function
|
|
4882
|
+
function Fo(t, e) {
|
|
4883
4883
|
return Dn.querySelector(It(t)) === e;
|
|
4884
4884
|
}
|
|
4885
4885
|
function Po(t, e, n) {
|
|
@@ -4926,7 +4926,7 @@ function jo(t, e) {
|
|
|
4926
4926
|
const C = Nn(k);
|
|
4927
4927
|
if (C !== null)
|
|
4928
4928
|
return C;
|
|
4929
|
-
if (
|
|
4929
|
+
if (Q(k, "input"))
|
|
4930
4930
|
return ri(k);
|
|
4931
4931
|
if (xn(k)) {
|
|
4932
4932
|
let _ = "";
|
|
@@ -4953,26 +4953,26 @@ function jo(t, e) {
|
|
|
4953
4953
|
const j = () => {
|
|
4954
4954
|
a && (t.send(tr(i, r)), a = !1);
|
|
4955
4955
|
}, A = (k, C = !1) => {
|
|
4956
|
-
function _(I, T,
|
|
4957
|
-
return u[I] = u[I] || Po(T, k,
|
|
4956
|
+
function _(I, T, L) {
|
|
4957
|
+
return u[I] = u[I] || Po(T, k, L);
|
|
4958
4958
|
}
|
|
4959
4959
|
const M = C ? t.attachEventListener.bind(t) : t.nodes.attachNodeListener.bind(t.nodes);
|
|
4960
4960
|
M(k.documentElement, "mouseover", (I) => {
|
|
4961
4961
|
const T = Ts(I.target, k);
|
|
4962
4962
|
T !== l && (l = T, o = performance.now());
|
|
4963
4963
|
}), M(k, "mousemove", (I) => {
|
|
4964
|
-
const [T,
|
|
4965
|
-
i = I.clientX + T, r = I.clientY +
|
|
4964
|
+
const [T, L] = t.observer.getDocumentOffset(k);
|
|
4965
|
+
i = I.clientX + T, r = I.clientY + L, a = !0;
|
|
4966
4966
|
const $ = Math.sign(I.movementX);
|
|
4967
4967
|
b += Math.abs(I.movementX) + Math.abs(I.movementY), $ !== d && (d = $, p++);
|
|
4968
4968
|
}, !1), M(k, "click", (I) => {
|
|
4969
4969
|
const T = Ts(I.target, k);
|
|
4970
4970
|
if (!I.clientX && !I.clientY || T === null)
|
|
4971
4971
|
return;
|
|
4972
|
-
const
|
|
4973
|
-
if (
|
|
4974
|
-
const $ = I.pageX,
|
|
4975
|
-
j(), t.send(pr(
|
|
4972
|
+
const L = t.nodes.getID(T);
|
|
4973
|
+
if (L !== void 0) {
|
|
4974
|
+
const $ = I.pageX, F = I.pageY, z = k.documentElement.scrollWidth, N = k.documentElement.scrollHeight, P = Es($ / z), V = Es(F / N);
|
|
4975
|
+
j(), t.send(pr(L, l === T ? Math.round(performance.now() - o) : 0, s(T), xn(T) && !n ? _(L, T, e) : "", P, V), !0);
|
|
4976
4976
|
}
|
|
4977
4977
|
l = null;
|
|
4978
4978
|
});
|
|
@@ -4989,7 +4989,7 @@ function zo(t) {
|
|
|
4989
4989
|
for (let i = 0; i < n.length; i++) {
|
|
4990
4990
|
const r = n[i];
|
|
4991
4991
|
let a = "";
|
|
4992
|
-
if (
|
|
4992
|
+
if (Q(r, "img") && (a = r.currentSrc || r.src), !a) {
|
|
4993
4993
|
const w = getComputedStyle(r).getPropertyValue("background-image");
|
|
4994
4994
|
if (w) {
|
|
4995
4995
|
const y = s.exec(w);
|
|
@@ -5264,7 +5264,7 @@ function Go(t) {
|
|
|
5264
5264
|
};
|
|
5265
5265
|
});
|
|
5266
5266
|
s(window), t.observer.attachContextCallback(s), t.nodes.attachNodeCallback((i) => {
|
|
5267
|
-
if (!
|
|
5267
|
+
if (!Q(i, "style") || !i.sheet || i.textContent !== null && i.textContent.trim().length > 0)
|
|
5268
5268
|
return;
|
|
5269
5269
|
const r = t.nodes.getID(i);
|
|
5270
5270
|
if (!r)
|
|
@@ -5283,7 +5283,7 @@ function Ko(t) {
|
|
|
5283
5283
|
}
|
|
5284
5284
|
let n = !1;
|
|
5285
5285
|
t.nodes.attachNodeCallback((s) => {
|
|
5286
|
-
|
|
5286
|
+
Q(s, "body") && (t.nodes.attachNodeListener(s, "focus", (i) => {
|
|
5287
5287
|
ei(i.target) && (e(i.target), n = !1);
|
|
5288
5288
|
}), t.nodes.attachNodeListener(s, "blur", (i) => {
|
|
5289
5289
|
i.relatedTarget === null && (n = !0, setTimeout(() => {
|
|
@@ -5292,7 +5292,7 @@ function Ko(t) {
|
|
|
5292
5292
|
}));
|
|
5293
5293
|
}), t.attachStartCallback(() => {
|
|
5294
5294
|
let s = document.activeElement;
|
|
5295
|
-
for (; s &&
|
|
5295
|
+
for (; s && Q(s, "iframe") && s.contentDocument; )
|
|
5296
5296
|
s = s.contentDocument.activeElement;
|
|
5297
5297
|
s && s !== s.ownerDocument.body && e(s);
|
|
5298
5298
|
}, !0);
|
|
@@ -5336,22 +5336,22 @@ function Xo(t, e, n, s, i) {
|
|
|
5336
5336
|
t.debug.log("Openreplay: attaching axios spy to instance", e);
|
|
5337
5337
|
function r(p) {
|
|
5338
5338
|
t.debug.log("Openreplay: capturing axios response data", p);
|
|
5339
|
-
const { headers: b, data: w, method: y, url: E, baseURL: R } = p.config, { data: j, headers: A, status: k, response: C } = p, { data: _, headers: M, status: I } = C || {}, T = n.ignoreHeaders,
|
|
5339
|
+
const { headers: b, data: w, method: y, url: E, baseURL: R } = p.config, { data: j, headers: A, status: k, response: C } = p, { data: _, headers: M, status: I } = C || {}, T = n.ignoreHeaders, L = Array.isArray(T) ? (H) => T.includes(H) : () => T;
|
|
5340
5340
|
function $(H, v) {
|
|
5341
|
-
|
|
5341
|
+
L(v[0]) || (H[v[0]] = v[1]);
|
|
5342
5342
|
}
|
|
5343
|
-
let
|
|
5344
|
-
b.toJSON ?
|
|
5343
|
+
let F = {}, z = {};
|
|
5344
|
+
b.toJSON ? F = b.toJSON() : b instanceof Headers ? b.forEach((H, v) => $(F, [v, H])) : Array.isArray(b) ? b.forEach((H) => $(F, H)) : typeof b == "object" && Object.entries(b).forEach((H) => $(F, H));
|
|
5345
5345
|
const N = M || A;
|
|
5346
5346
|
N.toJSON ? z = N.toJSON() : N instanceof Headers ? N.forEach((H, v) => $(z, [v, H])) : Array.isArray(N) ? N.forEach((H) => $(z, H)) : typeof N == "object" && Object.entries(N).forEach(([H, v]) => {
|
|
5347
|
-
|
|
5347
|
+
L(H) || (z[H] = v);
|
|
5348
5348
|
});
|
|
5349
5349
|
const P = s({
|
|
5350
5350
|
url: E,
|
|
5351
5351
|
method: y || "",
|
|
5352
5352
|
status: k || I || 0,
|
|
5353
5353
|
request: {
|
|
5354
|
-
headers:
|
|
5354
|
+
headers: F,
|
|
5355
5355
|
body: w
|
|
5356
5356
|
},
|
|
5357
5357
|
response: {
|
|
@@ -5442,7 +5442,7 @@ const et = (t, e) => {
|
|
|
5442
5442
|
case "":
|
|
5443
5443
|
case "text":
|
|
5444
5444
|
case "json":
|
|
5445
|
-
typeof e == "string" ? n = e :
|
|
5445
|
+
typeof e == "string" ? n = e : Ln(e) || Array.isArray(e) ? n = JSON.stringify(e) : typeof e < "u" && (n = Object.prototype.toString.call(e));
|
|
5446
5446
|
break;
|
|
5447
5447
|
case "blob":
|
|
5448
5448
|
case "document":
|
|
@@ -5466,10 +5466,10 @@ const et = (t, e) => {
|
|
|
5466
5466
|
n.push(`${s}=${typeof i == "string" ? i : "[object Object]"}`);
|
|
5467
5467
|
e = n.join(",");
|
|
5468
5468
|
} else
|
|
5469
|
-
t instanceof Blob || t instanceof ReadableStream || t instanceof ArrayBuffer ? e = "byte data" :
|
|
5469
|
+
t instanceof Blob || t instanceof ReadableStream || t instanceof ArrayBuffer ? e = "byte data" : Ln(t) ? e = t : e = `can't parse body ${typeof t}`;
|
|
5470
5470
|
return e;
|
|
5471
5471
|
}, Zo = (t, e = {}) => {
|
|
5472
|
-
|
|
5472
|
+
Ln(e) || (e = {});
|
|
5473
5473
|
let n = t ? t.split("?") : [];
|
|
5474
5474
|
if (n.shift(), n.length > 0) {
|
|
5475
5475
|
n = n.join("?").split("&");
|
|
@@ -5484,7 +5484,7 @@ const et = (t, e) => {
|
|
|
5484
5484
|
}
|
|
5485
5485
|
return e;
|
|
5486
5486
|
};
|
|
5487
|
-
function
|
|
5487
|
+
function Ln(t) {
|
|
5488
5488
|
return t !== null && typeof t == "object";
|
|
5489
5489
|
}
|
|
5490
5490
|
function ea(t) {
|
|
@@ -5828,21 +5828,21 @@ function la(t, e = {}) {
|
|
|
5828
5828
|
return _;
|
|
5829
5829
|
const I = _.clone();
|
|
5830
5830
|
return I.text().then((T) => {
|
|
5831
|
-
const
|
|
5831
|
+
const L = {}, $ = {};
|
|
5832
5832
|
if (s !== !0) {
|
|
5833
5833
|
const N = ([P, V]) => {
|
|
5834
|
-
i(P) || (
|
|
5834
|
+
i(P) || (L[P] = V);
|
|
5835
5835
|
};
|
|
5836
5836
|
k.headers instanceof Headers ? k.headers.forEach((P, V) => N([V, P])) : Array.isArray(k.headers) ? k.headers.forEach(N) : typeof k.headers == "object" && Object.entries(k.headers).forEach(N), I.headers.forEach((P, V) => {
|
|
5837
5837
|
i(V) || ($[V] = P);
|
|
5838
5838
|
});
|
|
5839
5839
|
}
|
|
5840
|
-
const
|
|
5840
|
+
const F = _s(k.method), z = l({
|
|
5841
5841
|
url: String(A),
|
|
5842
|
-
method:
|
|
5842
|
+
method: F,
|
|
5843
5843
|
status: I.status,
|
|
5844
5844
|
request: {
|
|
5845
|
-
headers:
|
|
5845
|
+
headers: L,
|
|
5846
5846
|
// @ts-ignore
|
|
5847
5847
|
body: k.body || null
|
|
5848
5848
|
},
|
|
@@ -5851,7 +5851,7 @@ function la(t, e = {}) {
|
|
|
5851
5851
|
body: T
|
|
5852
5852
|
}
|
|
5853
5853
|
});
|
|
5854
|
-
z && t.send(vt("fetch",
|
|
5854
|
+
z && t.send(vt("fetch", F, String(z.url), o(z.request), o(z.response), I.status, C + Ve(), M, 0));
|
|
5855
5855
|
}).catch((T) => t.debug.error("Could not process Fetch response:", T)), _;
|
|
5856
5856
|
});
|
|
5857
5857
|
};
|
|
@@ -5864,8 +5864,8 @@ function la(t, e = {}) {
|
|
|
5864
5864
|
return C.addEventListener("loadstart", (M) => {
|
|
5865
5865
|
_ = M.timeStamp;
|
|
5866
5866
|
}), C.addEventListener("load", t.safe((M) => {
|
|
5867
|
-
const { headers: I, body: T } = on(C),
|
|
5868
|
-
|
|
5867
|
+
const { headers: I, body: T } = on(C), L = _ > 0 ? M.timeStamp - _ : 0, F = (C.getAllResponseHeaders() || "").trim().split(/[\r\n]+/), z = {};
|
|
5868
|
+
F.forEach(function(V) {
|
|
5869
5869
|
const G = V.split(": "), H = G.shift();
|
|
5870
5870
|
i(H) || (z[H] = G.join(": "));
|
|
5871
5871
|
});
|
|
@@ -5883,7 +5883,7 @@ function la(t, e = {}) {
|
|
|
5883
5883
|
body: C.response
|
|
5884
5884
|
}
|
|
5885
5885
|
});
|
|
5886
|
-
P && t.send(vt("xhr", N, String(P.url), o(P.request), o(P.response), C.status, _ + Ve(),
|
|
5886
|
+
P && t.send(vt("xhr", N, String(P.url), o(P.request), o(P.response), C.status, _ + Ve(), L, 0));
|
|
5887
5887
|
})), b.apply(this, arguments);
|
|
5888
5888
|
}
|
|
5889
5889
|
function R(A) {
|
|
@@ -6979,10 +6979,10 @@ margin: 5px 0;
|
|
|
6979
6979
|
|
|
6980
6980
|
|
|
6981
6981
|
/* Пример более узких экранов (i.e. <480px) можно добавить при необходимости */
|
|
6982
|
-
`,
|
|
6983
|
-
|
|
6984
|
-
|
|
6985
|
-
document.head.appendChild(
|
|
6982
|
+
`, Fn = document.createElement("link");
|
|
6983
|
+
Fn.rel = "stylesheet";
|
|
6984
|
+
Fn.href = "https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,200..800&display=swap";
|
|
6985
|
+
document.head.appendChild(Fn);
|
|
6986
6986
|
const di = document.createElement("style");
|
|
6987
6987
|
var Os;
|
|
6988
6988
|
document.documentElement.style.setProperty("--wineater-color", ((Os = window == null ? void 0 : window.wineaterData) == null ? void 0 : Os.COLOR) || "#7B2BEB");
|
|
@@ -7292,6 +7292,70 @@ class va {
|
|
|
7292
7292
|
headerOccasion: "occasion",
|
|
7293
7293
|
headerOr: "or"
|
|
7294
7294
|
},
|
|
7295
|
+
sr: {
|
|
7296
|
+
lang: "sr",
|
|
7297
|
+
welcomeMessage: "Šta planirate da jedete? Podelite svoje jelo i preporučiću vam savršeno vino uz obrok.",
|
|
7298
|
+
noResultsFound: "Nema rezultata.",
|
|
7299
|
+
somethingWentWrong: "Izvinite, nešto je pošlo po zlu.",
|
|
7300
|
+
chatButton1: "Pronađi vino",
|
|
7301
|
+
chatButton2: "Upari vino sada",
|
|
7302
|
+
chatButton3: "Zatraži preporuku",
|
|
7303
|
+
chatTitle: "Asistent za uparivanje vina 🍷",
|
|
7304
|
+
chatSubtitle: "Opišite svoj obrok i dobijte preporuku za 30 sekundi",
|
|
7305
|
+
inputPlaceholder: "npr. Tuna salata",
|
|
7306
|
+
sendButton: "Upari",
|
|
7307
|
+
poweredBy: "Pokreće",
|
|
7308
|
+
price: "Cena",
|
|
7309
|
+
region: "Regija",
|
|
7310
|
+
type: "Tip",
|
|
7311
|
+
reason: "Preporuka",
|
|
7312
|
+
moreInfo: "Više informacija",
|
|
7313
|
+
winePairingIntro: "Za ovo vino, preporučuju se sledeća jela:",
|
|
7314
|
+
askForDinner: "Šta biste želeli za večeru?",
|
|
7315
|
+
clearChatButton: "Obriši razgovor",
|
|
7316
|
+
widgetTitle: "PRONAĐITE SAVRŠENO VINO",
|
|
7317
|
+
widgetSubtitle: "Podelite bilo šta — obrok, raspoloženje, budžet ili priliku — i naš AI somelijer će vam za par sekundi preporučiti vino",
|
|
7318
|
+
searchPlaceholder: "Unesite ključnu reč ili opis",
|
|
7319
|
+
wineDetails: {
|
|
7320
|
+
price: "Cena",
|
|
7321
|
+
region: "Regija",
|
|
7322
|
+
type: "Tip",
|
|
7323
|
+
moreInfo: "Više informacija",
|
|
7324
|
+
reason: "Razlog",
|
|
7325
|
+
sommSelection: "Izbor somelijera",
|
|
7326
|
+
code: "Šifra",
|
|
7327
|
+
buy: "Kupi"
|
|
7328
|
+
},
|
|
7329
|
+
searchButton: "Pretraga",
|
|
7330
|
+
priceRange: "Cenovni raspon",
|
|
7331
|
+
wineColor: "Boja vina",
|
|
7332
|
+
intensity: "Intenzitet",
|
|
7333
|
+
red: "Crveno",
|
|
7334
|
+
white: "Belo",
|
|
7335
|
+
rose: "Roze",
|
|
7336
|
+
light: "Lako",
|
|
7337
|
+
medium: "Srednje",
|
|
7338
|
+
full: "Puno",
|
|
7339
|
+
/* -- Novi ključevi za bar -- */
|
|
7340
|
+
barTitle: "Jela iz bara",
|
|
7341
|
+
barSubtitle: "Izaberite jela ispod i kliknite ‘Pošalji’",
|
|
7342
|
+
barSendButton: "Pošalji",
|
|
7343
|
+
barResetButton: "Resetuj",
|
|
7344
|
+
barName: "Naziv bara",
|
|
7345
|
+
barNotesPlaceholder: "Dodajte svoje želje ovde...",
|
|
7346
|
+
placeholderSuggestions: [
|
|
7347
|
+
"Vino uz pastu",
|
|
7348
|
+
"Savršeno uz ribu",
|
|
7349
|
+
"Preporuka za žurku"
|
|
7350
|
+
],
|
|
7351
|
+
headerLine1: "Podelite bilo šta što vam je na umu —",
|
|
7352
|
+
headerLine2: "— i dobijte preporuke za savršeno vino za par sekundi",
|
|
7353
|
+
headerMeal: "obrok",
|
|
7354
|
+
headerMood: "raspoloženje",
|
|
7355
|
+
headerBudget: "budžet",
|
|
7356
|
+
headerOccasion: "prilika",
|
|
7357
|
+
headerOr: "ili"
|
|
7358
|
+
},
|
|
7295
7359
|
de: {
|
|
7296
7360
|
lang: "de",
|
|
7297
7361
|
welcomeMessage: "Was möchten Sie essen? Beschreiben Sie Ihr Gericht und ich empfehle Ihnen den perfekten Wein dazu.",
|
|
@@ -7513,11 +7577,11 @@ class va {
|
|
|
7513
7577
|
return s;
|
|
7514
7578
|
}
|
|
7515
7579
|
}
|
|
7516
|
-
const
|
|
7580
|
+
const Z = new va();
|
|
7517
7581
|
class ba {
|
|
7518
7582
|
constructor() {
|
|
7519
|
-
var e, n, s, i;
|
|
7520
|
-
this.widgetType = ((e = window == null ? void 0 : window.wineaterData) == null ? void 0 : e.WIDGET_TYPE) || "store", this.
|
|
7583
|
+
var e, n, s, i, r;
|
|
7584
|
+
this.widgetType = ((e = window == null ? void 0 : window.wineaterData) == null ? void 0 : e.WIDGET_TYPE) || "store", this.countryCode = ((n = window == null ? void 0 : window.wineaterData) == null ? void 0 : n.COUNTRY_CODE) || null, this.widgetWrapper = ((s = window == null ? void 0 : window.wineaterData) == null ? void 0 : s.WIDGET_WRAPPER) || "wineater-widget-conteiner", this.titleText = (i = window == null ? void 0 : window.wineaterData) == null ? void 0 : i.TITLE_TEXT, this.subtitleText = (r = window == null ? void 0 : window.wineaterData) == null ? void 0 : r.SUBTITLE_TEXT, this.api = new fi(), console.log(this.titleText), this.selectedFilters = {
|
|
7521
7585
|
price: null,
|
|
7522
7586
|
color: null,
|
|
7523
7587
|
intensity: null
|
|
@@ -7528,18 +7592,18 @@ class ba {
|
|
|
7528
7592
|
}
|
|
7529
7593
|
getTitle(e) {
|
|
7530
7594
|
return e ? `<h1 class="wine-widget-big-title">${e}</h1>` : `<h1 class="wine-widget-big-title">
|
|
7531
|
-
${
|
|
7595
|
+
${Z.translate("headerLine1")}
|
|
7532
7596
|
<span class="icon icon-meal"></span>
|
|
7533
|
-
<span class="icon-label">${
|
|
7597
|
+
<span class="icon-label">${Z.translate("headerMeal")}</span>,
|
|
7534
7598
|
<span class="icon icon-mood"></span>
|
|
7535
|
-
<span class="icon-label">${
|
|
7599
|
+
<span class="icon-label">${Z.translate("headerMood")}</span>
|
|
7536
7600
|
</br>
|
|
7537
7601
|
<!-- <span class="icon icon-budget"></span> -->
|
|
7538
|
-
<!-- <span class="icon-label">${
|
|
7539
|
-
${
|
|
7602
|
+
<!-- <span class="icon-label">${Z.translate("headerBudget")}</span>, -->
|
|
7603
|
+
${Z.translate("headerOr")}
|
|
7540
7604
|
<span class="icon icon-occasion"></span>
|
|
7541
|
-
<span class="icon-label">${
|
|
7542
|
-
${
|
|
7605
|
+
<span class="icon-label">${Z.translate("headerOccasion")}</span>
|
|
7606
|
+
${Z.translate("headerLine2")}
|
|
7543
7607
|
</h1>`;
|
|
7544
7608
|
}
|
|
7545
7609
|
initializeWidget() {
|
|
@@ -7558,11 +7622,11 @@ class ba {
|
|
|
7558
7622
|
<input
|
|
7559
7623
|
type="text"
|
|
7560
7624
|
id="wine-search-input"
|
|
7561
|
-
placeholder="${
|
|
7625
|
+
placeholder="${Z.translate("searchPlaceholder")}">
|
|
7562
7626
|
|
|
7563
7627
|
<!-- Кнопка -->
|
|
7564
7628
|
<button id="wine-search-button">
|
|
7565
|
-
${
|
|
7629
|
+
${Z.translate("searchButton")}
|
|
7566
7630
|
</button>
|
|
7567
7631
|
</div>
|
|
7568
7632
|
<div id="wine-widget-right">
|
|
@@ -7575,9 +7639,9 @@ class ba {
|
|
|
7575
7639
|
</div>
|
|
7576
7640
|
<div id="powered-by-widget">
|
|
7577
7641
|
<a href="https://wineater.com" target="_blank">
|
|
7578
|
-
<span>${
|
|
7579
|
-
<img src="${
|
|
7580
|
-
<span>${
|
|
7642
|
+
<span>${Z.translate("poweredBy")}</span>
|
|
7643
|
+
<img src="${this.countryCode === "ru" ? "https://czvgkhagwvmknscoerfy.supabase.co/storage/v1/object/public/static-media/divino_logo.svg?x=5" : "https://czvgkhagwvmknscoerfy.supabase.co/storage/v1/object/public/static-media/logo_medium_gray.svg"}" alt="Wineater Logo">
|
|
7644
|
+
<span>${Z.translate("AI sommelier")}</span>
|
|
7581
7645
|
</a>
|
|
7582
7646
|
</div>
|
|
7583
7647
|
</div>
|
|
@@ -7636,18 +7700,18 @@ class ba {
|
|
|
7636
7700
|
e.forEach((o, u) => {
|
|
7637
7701
|
const c = i(o, "title"), d = i(o, "image"), p = i(o, "total"), b = i(o, "url"), w = o.tags || o.Tags, y = r(o, ["type", "country", "region", "grape"]), E = w ? a(w) : "", R = l(o), j = o["Short Description"], A = o.pairing_recommendation, k = o.isSommSelection, C = `
|
|
7638
7702
|
<div class="wine-recommendation-tile ${k ? "somm-selection" : ""}">
|
|
7639
|
-
${k ? `<div class="somm-selection-badge">${
|
|
7703
|
+
${k ? `<div class="somm-selection-badge">${Z.translate("wineDetails.sommSelection")}</div>` : ""}
|
|
7640
7704
|
|
|
7641
7705
|
<div class="tile-top">
|
|
7642
7706
|
${d ? `<img src="${d}" alt="${c}" class="wine-image" />` : ""}
|
|
7643
|
-
<div class="wine-price">${p} ${
|
|
7707
|
+
<div class="wine-price">${p} ${Z.getCurrency("label")}</div>
|
|
7644
7708
|
<h3 class="wine-title">${c}</h3>
|
|
7645
7709
|
</div>
|
|
7646
7710
|
|
|
7647
7711
|
${y ? `<div class="wine-params">${y}</div>` : ""}
|
|
7648
7712
|
|
|
7649
7713
|
<div class="bottom-row">
|
|
7650
|
-
${b ? `<a class="buy-btn" href="${b}" target="_blank">${
|
|
7714
|
+
${b ? `<a class="buy-btn" href="${b}" target="_blank">${Z.translate("wineDetails.buy")}</a>` : `<button class="buy-btn" data-toggle-info>${Z.translate("moreInfo")}</button>`}
|
|
7651
7715
|
</div>
|
|
7652
7716
|
|
|
7653
7717
|
<div class="card-popup hidden">
|
|
@@ -7667,17 +7731,17 @@ class ba {
|
|
|
7667
7731
|
const _ = s.children[u];
|
|
7668
7732
|
if (!b) {
|
|
7669
7733
|
const M = _.querySelector("[data-toggle-info]"), I = _.querySelector(".card-popup"), T = _.querySelector(".card-popup-close");
|
|
7670
|
-
T == null || T.addEventListener("click", (
|
|
7671
|
-
|
|
7672
|
-
}), document.addEventListener("click", (
|
|
7673
|
-
|
|
7674
|
-
}), M == null || M.addEventListener("click", (
|
|
7734
|
+
T == null || T.addEventListener("click", (L) => {
|
|
7735
|
+
L.stopPropagation(), I.classList.add("hidden");
|
|
7736
|
+
}), document.addEventListener("click", (L) => {
|
|
7737
|
+
L.target.closest(".card-popup") || L.target.closest(".mobile-fullscreen-popup") || L.target.closest("[data-toggle-info]") || (document.querySelectorAll(".card-popup").forEach((F) => F.classList.add("hidden")), document.querySelectorAll(".mobile-fullscreen-wrapper").forEach((F) => F.remove()));
|
|
7738
|
+
}), M == null || M.addEventListener("click", (L) => {
|
|
7675
7739
|
var $;
|
|
7676
|
-
if (
|
|
7677
|
-
const
|
|
7740
|
+
if (L.stopPropagation(), document.querySelectorAll(".card-popup").forEach((F) => F.classList.add("hidden")), document.querySelectorAll(".mobile-fullscreen-wrapper").forEach((F) => F.remove()), window.innerWidth <= 768) {
|
|
7741
|
+
const F = I.innerHTML, z = document.createElement("div");
|
|
7678
7742
|
z.className = "mobile-fullscreen-wrapper", z.innerHTML = `
|
|
7679
7743
|
<div class="mobile-fullscreen-overlay"></div>
|
|
7680
|
-
<div class="card-popup mobile-fullscreen-popup">${
|
|
7744
|
+
<div class="card-popup mobile-fullscreen-popup">${F}</div>
|
|
7681
7745
|
`, ($ = z.querySelector(".card-popup-close")) == null || $.addEventListener("click", () => z.remove()), document.body.appendChild(z);
|
|
7682
7746
|
} else
|
|
7683
7747
|
I.classList.remove("hidden");
|
|
@@ -7708,7 +7772,7 @@ class ba {
|
|
|
7708
7772
|
const e = document.getElementById("wine-placeholder");
|
|
7709
7773
|
e.innerHTML = `
|
|
7710
7774
|
<div class="no-results">
|
|
7711
|
-
<p>${
|
|
7775
|
+
<p>${Z.translate("noResultsMessage") || "No recommendations found for your query."}</p>
|
|
7712
7776
|
</div>
|
|
7713
7777
|
`;
|
|
7714
7778
|
}
|
|
@@ -7716,7 +7780,7 @@ class ba {
|
|
|
7716
7780
|
const e = document.getElementById("wine-placeholder");
|
|
7717
7781
|
e.innerHTML = `
|
|
7718
7782
|
<div class="error-message">
|
|
7719
|
-
<p>${
|
|
7783
|
+
<p>${Z.translate("errorMessage") || "Something went wrong. Please try again later."}</p>
|
|
7720
7784
|
</div>
|
|
7721
7785
|
`;
|
|
7722
7786
|
}
|
|
@@ -7730,7 +7794,7 @@ class ba {
|
|
|
7730
7794
|
}
|
|
7731
7795
|
}
|
|
7732
7796
|
initializeSearchAnimation() {
|
|
7733
|
-
const e = document.getElementById("wine-search-input"), n =
|
|
7797
|
+
const e = document.getElementById("wine-search-input"), n = Z.translate("placeholderSuggestions");
|
|
7734
7798
|
let s = 0, i = 0, r = !0, a = !1;
|
|
7735
7799
|
const l = () => {
|
|
7736
7800
|
a || (r ? (e.placeholder = n[s].substring(0, i++), i > n[s].length ? (r = !1, setTimeout(l, 2e3)) : setTimeout(l, 100)) : (e.placeholder = n[s].substring(0, i--), i < 0 ? (r = !0, s = (s + 1) % n.length, setTimeout(l, 500)) : setTimeout(l, 50)));
|
|
@@ -7749,7 +7813,7 @@ class wa {
|
|
|
7749
7813
|
}
|
|
7750
7814
|
async initTranslator() {
|
|
7751
7815
|
const e = this.store ? this.store.charAt(0).toUpperCase() + this.store.slice(1) : "Test";
|
|
7752
|
-
await
|
|
7816
|
+
await Z.fetchConfig(e || "Test");
|
|
7753
7817
|
}
|
|
7754
7818
|
initCookies() {
|
|
7755
7819
|
var e;
|