@wysdym/agent 1.21.0 → 1.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs.js +7 -7
- package/dist/index.es.js +392 -375
- package/package.json +1 -1
package/dist/index.es.js
CHANGED
|
@@ -1853,10 +1853,10 @@ function requireLottie() {
|
|
|
1853
1853
|
function N() {
|
|
1854
1854
|
A || (A = O(function(z) {
|
|
1855
1855
|
function H() {
|
|
1856
|
-
function Q(
|
|
1857
|
-
var ce, ee, te =
|
|
1856
|
+
function Q(me, ne) {
|
|
1857
|
+
var ce, ee, te = me.length, oe, ae, de, ge;
|
|
1858
1858
|
for (ee = 0; ee < te; ee += 1)
|
|
1859
|
-
if (ce =
|
|
1859
|
+
if (ce = me[ee], "ks" in ce && !ce.completed) {
|
|
1860
1860
|
if (ce.completed = !0, ce.hasMask) {
|
|
1861
1861
|
var ye = ce.masksProperties;
|
|
1862
1862
|
for (ae = ye.length, oe = 0; oe < ae; oe += 1)
|
|
@@ -1869,47 +1869,47 @@ function requireLottie() {
|
|
|
1869
1869
|
ce.ty === 0 ? (ce.layers = G(ce.refId, ne), Q(ce.layers, ne)) : ce.ty === 4 ? K(ce.shapes) : ce.ty === 5 && ve(ce);
|
|
1870
1870
|
}
|
|
1871
1871
|
}
|
|
1872
|
-
function j(
|
|
1873
|
-
if (
|
|
1874
|
-
var ce = 0, ee =
|
|
1872
|
+
function j(me, ne) {
|
|
1873
|
+
if (me) {
|
|
1874
|
+
var ce = 0, ee = me.length;
|
|
1875
1875
|
for (ce = 0; ce < ee; ce += 1)
|
|
1876
|
-
|
|
1876
|
+
me[ce].t === 1 && (me[ce].data.layers = G(me[ce].data.refId, ne), Q(me[ce].data.layers, ne));
|
|
1877
1877
|
}
|
|
1878
1878
|
}
|
|
1879
|
-
function J(
|
|
1879
|
+
function J(me, ne) {
|
|
1880
1880
|
for (var ce = 0, ee = ne.length; ce < ee; ) {
|
|
1881
|
-
if (ne[ce].id ===
|
|
1881
|
+
if (ne[ce].id === me)
|
|
1882
1882
|
return ne[ce];
|
|
1883
1883
|
ce += 1;
|
|
1884
1884
|
}
|
|
1885
1885
|
return null;
|
|
1886
1886
|
}
|
|
1887
|
-
function G(
|
|
1888
|
-
var ce = J(
|
|
1887
|
+
function G(me, ne) {
|
|
1888
|
+
var ce = J(me, ne);
|
|
1889
1889
|
return ce ? ce.layers.__used ? JSON.parse(JSON.stringify(ce.layers)) : (ce.layers.__used = !0, ce.layers) : null;
|
|
1890
1890
|
}
|
|
1891
|
-
function K(
|
|
1892
|
-
var ne, ce =
|
|
1891
|
+
function K(me) {
|
|
1892
|
+
var ne, ce = me.length, ee, te;
|
|
1893
1893
|
for (ne = ce - 1; ne >= 0; ne -= 1)
|
|
1894
|
-
if (
|
|
1895
|
-
if (
|
|
1896
|
-
Y(
|
|
1894
|
+
if (me[ne].ty === "sh")
|
|
1895
|
+
if (me[ne].ks.k.i)
|
|
1896
|
+
Y(me[ne].ks.k);
|
|
1897
1897
|
else
|
|
1898
|
-
for (te =
|
|
1899
|
-
|
|
1900
|
-
else
|
|
1898
|
+
for (te = me[ne].ks.k.length, ee = 0; ee < te; ee += 1)
|
|
1899
|
+
me[ne].ks.k[ee].s && Y(me[ne].ks.k[ee].s[0]), me[ne].ks.k[ee].e && Y(me[ne].ks.k[ee].e[0]);
|
|
1900
|
+
else me[ne].ty === "gr" && K(me[ne].it);
|
|
1901
1901
|
}
|
|
1902
|
-
function Y(
|
|
1903
|
-
var ne, ce =
|
|
1902
|
+
function Y(me) {
|
|
1903
|
+
var ne, ce = me.i.length;
|
|
1904
1904
|
for (ne = 0; ne < ce; ne += 1)
|
|
1905
|
-
|
|
1905
|
+
me.i[ne][0] += me.v[ne][0], me.i[ne][1] += me.v[ne][1], me.o[ne][0] += me.v[ne][0], me.o[ne][1] += me.v[ne][1];
|
|
1906
1906
|
}
|
|
1907
|
-
function Z(
|
|
1907
|
+
function Z(me, ne) {
|
|
1908
1908
|
var ce = ne ? ne.split(".") : [100, 100, 100];
|
|
1909
|
-
return
|
|
1909
|
+
return me[0] > ce[0] ? !0 : ce[0] > me[0] ? !1 : me[1] > ce[1] ? !0 : ce[1] > me[1] ? !1 : me[2] > ce[2] ? !0 : ce[2] > me[2] ? !1 : null;
|
|
1910
1910
|
}
|
|
1911
1911
|
var ie = /* @__PURE__ */ (function() {
|
|
1912
|
-
var
|
|
1912
|
+
var me = [4, 4, 14];
|
|
1913
1913
|
function ne(ee) {
|
|
1914
1914
|
var te = ee.t.d;
|
|
1915
1915
|
ee.t.d = {
|
|
@@ -1925,16 +1925,16 @@ function requireLottie() {
|
|
|
1925
1925
|
ee[te].ty === 5 && ne(ee[te]);
|
|
1926
1926
|
}
|
|
1927
1927
|
return function(ee) {
|
|
1928
|
-
if (Z(
|
|
1928
|
+
if (Z(me, ee.v) && (ce(ee.layers), ee.assets)) {
|
|
1929
1929
|
var te, oe = ee.assets.length;
|
|
1930
1930
|
for (te = 0; te < oe; te += 1)
|
|
1931
1931
|
ee.assets[te].layers && ce(ee.assets[te].layers);
|
|
1932
1932
|
}
|
|
1933
1933
|
};
|
|
1934
1934
|
})(), se = /* @__PURE__ */ (function() {
|
|
1935
|
-
var
|
|
1935
|
+
var me = [4, 7, 99];
|
|
1936
1936
|
return function(ne) {
|
|
1937
|
-
if (ne.chars && !Z(
|
|
1937
|
+
if (ne.chars && !Z(me, ne.v)) {
|
|
1938
1938
|
var ce, ee = ne.chars.length;
|
|
1939
1939
|
for (ce = 0; ce < ee; ce += 1) {
|
|
1940
1940
|
var te = ne.chars[ce];
|
|
@@ -1996,7 +1996,7 @@ function requireLottie() {
|
|
|
1996
1996
|
}
|
|
1997
1997
|
};
|
|
1998
1998
|
})(), le = /* @__PURE__ */ (function() {
|
|
1999
|
-
var
|
|
1999
|
+
var me = [5, 7, 15];
|
|
2000
2000
|
function ne(ee) {
|
|
2001
2001
|
var te = ee.t.p;
|
|
2002
2002
|
typeof te.a == "number" && (te.a = {
|
|
@@ -2016,14 +2016,14 @@ function requireLottie() {
|
|
|
2016
2016
|
ee[te].ty === 5 && ne(ee[te]);
|
|
2017
2017
|
}
|
|
2018
2018
|
return function(ee) {
|
|
2019
|
-
if (Z(
|
|
2019
|
+
if (Z(me, ee.v) && (ce(ee.layers), ee.assets)) {
|
|
2020
2020
|
var te, oe = ee.assets.length;
|
|
2021
2021
|
for (te = 0; te < oe; te += 1)
|
|
2022
2022
|
ee.assets[te].layers && ce(ee.assets[te].layers);
|
|
2023
2023
|
}
|
|
2024
2024
|
};
|
|
2025
2025
|
})(), pe = /* @__PURE__ */ (function() {
|
|
2026
|
-
var
|
|
2026
|
+
var me = [4, 1, 9];
|
|
2027
2027
|
function ne(ee) {
|
|
2028
2028
|
var te, oe = ee.length, ae, de;
|
|
2029
2029
|
for (te = 0; te < oe; te += 1)
|
|
@@ -2042,14 +2042,14 @@ function requireLottie() {
|
|
|
2042
2042
|
ee[te].ty === 4 && ne(ee[te].shapes);
|
|
2043
2043
|
}
|
|
2044
2044
|
return function(ee) {
|
|
2045
|
-
if (Z(
|
|
2045
|
+
if (Z(me, ee.v) && (ce(ee.layers), ee.assets)) {
|
|
2046
2046
|
var te, oe = ee.assets.length;
|
|
2047
2047
|
for (te = 0; te < oe; te += 1)
|
|
2048
2048
|
ee.assets[te].layers && ce(ee.assets[te].layers);
|
|
2049
2049
|
}
|
|
2050
2050
|
};
|
|
2051
2051
|
})(), ue = /* @__PURE__ */ (function() {
|
|
2052
|
-
var
|
|
2052
|
+
var me = [4, 4, 18];
|
|
2053
2053
|
function ne(ee) {
|
|
2054
2054
|
var te, oe = ee.length, ae, de;
|
|
2055
2055
|
for (te = oe - 1; te >= 0; te -= 1)
|
|
@@ -2077,21 +2077,21 @@ function requireLottie() {
|
|
|
2077
2077
|
}
|
|
2078
2078
|
}
|
|
2079
2079
|
return function(ee) {
|
|
2080
|
-
if (Z(
|
|
2080
|
+
if (Z(me, ee.v) && (ce(ee.layers), ee.assets)) {
|
|
2081
2081
|
var te, oe = ee.assets.length;
|
|
2082
2082
|
for (te = 0; te < oe; te += 1)
|
|
2083
2083
|
ee.assets[te].layers && ce(ee.assets[te].layers);
|
|
2084
2084
|
}
|
|
2085
2085
|
};
|
|
2086
2086
|
})();
|
|
2087
|
-
function he(
|
|
2088
|
-
|
|
2087
|
+
function he(me) {
|
|
2088
|
+
me.__complete || (pe(me), ie(me), se(me), le(me), ue(me), Q(me.layers, me.assets), j(me.chars, me.assets), me.__complete = !0);
|
|
2089
2089
|
}
|
|
2090
|
-
function ve(
|
|
2091
|
-
|
|
2090
|
+
function ve(me) {
|
|
2091
|
+
me.t.a.length === 0 && "m" in me.t.p;
|
|
2092
2092
|
}
|
|
2093
|
-
var
|
|
2094
|
-
return
|
|
2093
|
+
var ke = {};
|
|
2094
|
+
return ke.completeData = he, ke.checkColors = pe, ke.checkChars = se, ke.checkPathProperties = le, ke.checkShapes = ue, ke.completeLayers = Q, ke;
|
|
2095
2095
|
}
|
|
2096
2096
|
if (L.dataManager || (L.dataManager = H()), L.assetLoader || (L.assetLoader = /* @__PURE__ */ (function() {
|
|
2097
2097
|
function Q(J) {
|
|
@@ -2757,17 +2757,17 @@ function requireLottie() {
|
|
|
2757
2757
|
for (ee = 0; ee < A; ee += 1)
|
|
2758
2758
|
n[ee].animation.setVolume(ne, ce);
|
|
2759
2759
|
}
|
|
2760
|
-
function
|
|
2760
|
+
function ke(ne) {
|
|
2761
2761
|
var ce;
|
|
2762
2762
|
for (ce = 0; ce < A; ce += 1)
|
|
2763
2763
|
n[ce].animation.mute(ne);
|
|
2764
2764
|
}
|
|
2765
|
-
function
|
|
2765
|
+
function me(ne) {
|
|
2766
2766
|
var ce;
|
|
2767
2767
|
for (ce = 0; ce < A; ce += 1)
|
|
2768
2768
|
n[ce].animation.unmute(ne);
|
|
2769
2769
|
}
|
|
2770
|
-
return T.registerAnimation = V, T.loadAnimation = z, T.setSpeed = H, T.setDirection = $, T.play = Q, T.pause = G, T.stop = Y, T.togglePause = Z, T.searchAnimations = se, T.resize = le, T.goToAndStop = K, T.destroy = ie, T.freeze = ue, T.unfreeze = he, T.setVolume = ve, T.mute =
|
|
2770
|
+
return T.registerAnimation = V, T.loadAnimation = z, T.setSpeed = H, T.setDirection = $, T.play = Q, T.pause = G, T.stop = Y, T.togglePause = Z, T.searchAnimations = se, T.resize = le, T.goToAndStop = K, T.destroy = ie, T.freeze = ue, T.unfreeze = he, T.setVolume = ve, T.mute = ke, T.unmute = me, T.getRegisteredAnimations = B, T;
|
|
2771
2771
|
})(), BezierFactory = (function() {
|
|
2772
2772
|
var T = {};
|
|
2773
2773
|
T.getBezierEasing = P;
|
|
@@ -2959,9 +2959,9 @@ function requireLottie() {
|
|
|
2959
2959
|
Q < 0 ? Q = 0 : Q > 1 && (Q = 1);
|
|
2960
2960
|
var G = V(Q, J);
|
|
2961
2961
|
j = j > 1 ? 1 : j;
|
|
2962
|
-
var K = V(j, J), Y, Z = W.length, ie = 1 - G, se = 1 - K, le = ie * ie * ie, pe = G * ie * ie * 3, ue = G * G * ie * 3, he = G * G * G, ve = ie * ie * se,
|
|
2962
|
+
var K = V(j, J), Y, Z = W.length, ie = 1 - G, se = 1 - K, le = ie * ie * ie, pe = G * ie * ie * 3, ue = G * G * ie * 3, he = G * G * G, ve = ie * ie * se, ke = G * ie * se + ie * G * se + ie * ie * K, me = G * G * se + ie * G * K + G * ie * K, ne = G * G * K, ce = ie * se * se, ee = G * se * se + ie * K * se + ie * se * K, te = G * K * se + ie * K * K + G * se * K, oe = G * K * K, ae = se * se * se, de = K * se * se + se * K * se + se * se * K, ge = K * K * se + se * K * K + K * se * K, ye = K * K * K;
|
|
2963
2963
|
for (Y = 0; Y < Z; Y += 1)
|
|
2964
|
-
U[Y * 4] = T.round((le * W[Y] + pe * H[Y] + ue * $[Y] + he * z[Y]) * 1e3) / 1e3, U[Y * 4 + 1] = T.round((ve * W[Y] +
|
|
2964
|
+
U[Y * 4] = T.round((le * W[Y] + pe * H[Y] + ue * $[Y] + he * z[Y]) * 1e3) / 1e3, U[Y * 4 + 1] = T.round((ve * W[Y] + ke * H[Y] + me * $[Y] + ne * z[Y]) * 1e3) / 1e3, U[Y * 4 + 2] = T.round((ce * W[Y] + ee * H[Y] + te * $[Y] + oe * z[Y]) * 1e3) / 1e3, U[Y * 4 + 3] = T.round((ae * W[Y] + de * H[Y] + ge * $[Y] + ye * z[Y]) * 1e3) / 1e3;
|
|
2965
2965
|
return U;
|
|
2966
2966
|
}
|
|
2967
2967
|
return {
|
|
@@ -3022,8 +3022,8 @@ function requireLottie() {
|
|
|
3022
3022
|
else if (T <= J)
|
|
3023
3023
|
A[0] = V.s[0], A[1] = V.s[1], A[2] = V.s[2];
|
|
3024
3024
|
else {
|
|
3025
|
-
var
|
|
3026
|
-
quaternionToEuler(A, slerp(
|
|
3025
|
+
var ke = createQuaternion(V.s), me = createQuaternion(G), ne = (T - J) / (j - J);
|
|
3026
|
+
quaternionToEuler(A, slerp(ke, me, ne));
|
|
3027
3027
|
}
|
|
3028
3028
|
else
|
|
3029
3029
|
for (L = 0; L < O; L += 1)
|
|
@@ -3248,15 +3248,15 @@ function requireLottie() {
|
|
|
3248
3248
|
})(), ShapePropertyFactory = (function() {
|
|
3249
3249
|
var T = -999999;
|
|
3250
3250
|
function n(j, J, G) {
|
|
3251
|
-
var K = G.lastIndex, Y, Z, ie, se, le, pe, ue, he, ve,
|
|
3252
|
-
if (j <
|
|
3253
|
-
Y =
|
|
3254
|
-
else if (j >=
|
|
3255
|
-
Y =
|
|
3251
|
+
var K = G.lastIndex, Y, Z, ie, se, le, pe, ue, he, ve, ke = this.keyframes;
|
|
3252
|
+
if (j < ke[0].t - this.offsetTime)
|
|
3253
|
+
Y = ke[0].s[0], ie = !0, K = 0;
|
|
3254
|
+
else if (j >= ke[ke.length - 1].t - this.offsetTime)
|
|
3255
|
+
Y = ke[ke.length - 1].s ? ke[ke.length - 1].s[0] : ke[ke.length - 2].e[0], ie = !0;
|
|
3256
3256
|
else {
|
|
3257
|
-
for (var
|
|
3258
|
-
|
|
3259
|
-
if (oe = this.keyframesMetadata[
|
|
3257
|
+
for (var me = K, ne = ke.length - 1, ce = !0, ee, te, oe; ce && (ee = ke[me], te = ke[me + 1], !(te.t - this.offsetTime > j)); )
|
|
3258
|
+
me < ne - 1 ? me += 1 : ce = !1;
|
|
3259
|
+
if (oe = this.keyframesMetadata[me] || {}, ie = ee.h === 1, K = me, !ie) {
|
|
3260
3260
|
if (j >= te.t - this.offsetTime)
|
|
3261
3261
|
he = 1;
|
|
3262
3262
|
else if (j < ee.t - this.offsetTime)
|
|
@@ -3354,20 +3354,20 @@ function requireLottie() {
|
|
|
3354
3354
|
this.elem.globalData.frameId !== this.frameId && (this.frameId = this.elem.globalData.frameId, this.iterateDynamicProperties(), this._mdf && this.convertToPath());
|
|
3355
3355
|
},
|
|
3356
3356
|
convertStarToPath: function() {
|
|
3357
|
-
var G = Math.floor(this.pt.v) * 2, K = Math.PI * 2 / G, Y = !0, Z = this.or.v, ie = this.ir.v, se = this.os.v, le = this.is.v, pe = 2 * Math.PI * Z / (G * 2), ue = 2 * Math.PI * ie / (G * 2), he, ve,
|
|
3357
|
+
var G = Math.floor(this.pt.v) * 2, K = Math.PI * 2 / G, Y = !0, Z = this.or.v, ie = this.ir.v, se = this.os.v, le = this.is.v, pe = 2 * Math.PI * Z / (G * 2), ue = 2 * Math.PI * ie / (G * 2), he, ve, ke, me, ne = -Math.PI / 2;
|
|
3358
3358
|
ne += this.r.v;
|
|
3359
3359
|
var ce = this.data.d === 3 ? -1 : 1;
|
|
3360
3360
|
for (this.v._length = 0, he = 0; he < G; he += 1) {
|
|
3361
|
-
ve = Y ? Z : ie,
|
|
3361
|
+
ve = Y ? Z : ie, ke = Y ? se : le, me = Y ? pe : ue;
|
|
3362
3362
|
var ee = ve * Math.cos(ne), te = ve * Math.sin(ne), oe = ee === 0 && te === 0 ? 0 : te / Math.sqrt(ee * ee + te * te), ae = ee === 0 && te === 0 ? 0 : -ee / Math.sqrt(ee * ee + te * te);
|
|
3363
|
-
ee += +this.p.v[0], te += +this.p.v[1], this.v.setTripleAt(ee, te, ee - oe *
|
|
3363
|
+
ee += +this.p.v[0], te += +this.p.v[1], this.v.setTripleAt(ee, te, ee - oe * me * ke * ce, te - ae * me * ke * ce, ee + oe * me * ke * ce, te + ae * me * ke * ce, he, !0), Y = !Y, ne += K * ce;
|
|
3364
3364
|
}
|
|
3365
3365
|
},
|
|
3366
3366
|
convertPolygonToPath: function() {
|
|
3367
3367
|
var G = Math.floor(this.pt.v), K = Math.PI * 2 / G, Y = this.or.v, Z = this.os.v, ie = 2 * Math.PI * Y / (G * 4), se, le = -Math.PI * 0.5, pe = this.data.d === 3 ? -1 : 1;
|
|
3368
3368
|
for (le += this.r.v, this.v._length = 0, se = 0; se < G; se += 1) {
|
|
3369
|
-
var ue = Y * Math.cos(le), he = Y * Math.sin(le), ve = ue === 0 && he === 0 ? 0 : he / Math.sqrt(ue * ue + he * he),
|
|
3370
|
-
ue += +this.p.v[0], he += +this.p.v[1], this.v.setTripleAt(ue, he, ue - ve * ie * Z * pe, he -
|
|
3369
|
+
var ue = Y * Math.cos(le), he = Y * Math.sin(le), ve = ue === 0 && he === 0 ? 0 : he / Math.sqrt(ue * ue + he * he), ke = ue === 0 && he === 0 ? 0 : -ue / Math.sqrt(ue * ue + he * he);
|
|
3370
|
+
ue += +this.p.v[0], he += +this.p.v[1], this.v.setTripleAt(ue, he, ue - ve * ie * Z * pe, he - ke * ie * Z * pe, ue + ve * ie * Z * pe, he + ke * ie * Z * pe, se, !0), le += K * pe;
|
|
3371
3371
|
}
|
|
3372
3372
|
this.paths.length = 0, this.paths[0] = this.v;
|
|
3373
3373
|
}
|
|
@@ -3454,18 +3454,18 @@ function requireLottie() {
|
|
|
3454
3454
|
function W(ee, te, oe) {
|
|
3455
3455
|
return !oe && oe !== 0 && (oe = 1), ee === 1 && te === 1 && oe === 1 ? this : this._t(ee, 0, 0, 0, 0, te, 0, 0, 0, 0, oe, 0, 0, 0, 0, 1);
|
|
3456
3456
|
}
|
|
3457
|
-
function z(ee, te, oe, ae, de, ge, ye, Ee, Pe, Ie, Re, Le, Me,
|
|
3458
|
-
return this.props[0] = ee, this.props[1] = te, this.props[2] = oe, this.props[3] = ae, this.props[4] = de, this.props[5] = ge, this.props[6] = ye, this.props[7] = Ee, this.props[8] = Pe, this.props[9] = Ie, this.props[10] = Re, this.props[11] = Le, this.props[12] = Me, this.props[13] =
|
|
3457
|
+
function z(ee, te, oe, ae, de, ge, ye, Ee, Pe, Ie, Re, Le, Me, Se, Ce, xe) {
|
|
3458
|
+
return this.props[0] = ee, this.props[1] = te, this.props[2] = oe, this.props[3] = ae, this.props[4] = de, this.props[5] = ge, this.props[6] = ye, this.props[7] = Ee, this.props[8] = Pe, this.props[9] = Ie, this.props[10] = Re, this.props[11] = Le, this.props[12] = Me, this.props[13] = Se, this.props[14] = Ce, this.props[15] = xe, this;
|
|
3459
3459
|
}
|
|
3460
3460
|
function H(ee, te, oe) {
|
|
3461
3461
|
return oe = oe || 0, ee !== 0 || te !== 0 || oe !== 0 ? this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, ee, te, oe, 1) : this;
|
|
3462
3462
|
}
|
|
3463
|
-
function $(ee, te, oe, ae, de, ge, ye, Ee, Pe, Ie, Re, Le, Me,
|
|
3463
|
+
function $(ee, te, oe, ae, de, ge, ye, Ee, Pe, Ie, Re, Le, Me, Se, Ce, xe) {
|
|
3464
3464
|
var we = this.props;
|
|
3465
3465
|
if (ee === 1 && te === 0 && oe === 0 && ae === 0 && de === 0 && ge === 1 && ye === 0 && Ee === 0 && Pe === 0 && Ie === 0 && Re === 1 && Le === 0)
|
|
3466
|
-
return we[12] = we[12] * ee + we[15] * Me, we[13] = we[13] * ge + we[15] *
|
|
3466
|
+
return we[12] = we[12] * ee + we[15] * Me, we[13] = we[13] * ge + we[15] * Se, we[14] = we[14] * Re + we[15] * Ce, we[15] *= xe, this._identityCalculated = !1, this;
|
|
3467
3467
|
var Oe = we[0], De = we[1], We = we[2], Fe = we[3], ze = we[4], Ne = we[5], Be = we[6], Ye = we[7], Xe = we[8], qe = we[9], Qe = we[10], Ge = we[11], et = we[12], nt = we[13], Ze = we[14], tt = we[15];
|
|
3468
|
-
return we[0] = Oe * ee + De * de + We * Pe + Fe * Me, we[1] = Oe * te + De * ge + We * Ie + Fe *
|
|
3468
|
+
return we[0] = Oe * ee + De * de + We * Pe + Fe * Me, we[1] = Oe * te + De * ge + We * Ie + Fe * Se, we[2] = Oe * oe + De * ye + We * Re + Fe * Ce, we[3] = Oe * ae + De * Ee + We * Le + Fe * xe, we[4] = ze * ee + Ne * de + Be * Pe + Ye * Me, we[5] = ze * te + Ne * ge + Be * Ie + Ye * Se, we[6] = ze * oe + Ne * ye + Be * Re + Ye * Ce, we[7] = ze * ae + Ne * Ee + Be * Le + Ye * xe, we[8] = Xe * ee + qe * de + Qe * Pe + Ge * Me, we[9] = Xe * te + qe * ge + Qe * Ie + Ge * Se, we[10] = Xe * oe + qe * ye + Qe * Re + Ge * Ce, we[11] = Xe * ae + qe * Ee + Qe * Le + Ge * xe, we[12] = et * ee + nt * de + Ze * Pe + tt * Me, we[13] = et * te + nt * ge + Ze * Ie + tt * Se, we[14] = et * oe + nt * ye + Ze * Re + tt * Ce, we[15] = et * ae + nt * Ee + Ze * Le + tt * xe, this._identityCalculated = !1, this;
|
|
3469
3469
|
}
|
|
3470
3470
|
function Q(ee) {
|
|
3471
3471
|
var te = ee.props;
|
|
@@ -3537,13 +3537,13 @@ function requireLottie() {
|
|
|
3537
3537
|
var ae;
|
|
3538
3538
|
return this.isIdentity() ? ae = [ee, te, oe] : ae = [ee * this.props[0] + te * this.props[4] + oe * this.props[8] + this.props[12], ee * this.props[1] + te * this.props[5] + oe * this.props[9] + this.props[13], ee * this.props[2] + te * this.props[6] + oe * this.props[10] + this.props[14]], ae;
|
|
3539
3539
|
}
|
|
3540
|
-
function
|
|
3540
|
+
function ke(ee, te) {
|
|
3541
3541
|
if (this.isIdentity())
|
|
3542
3542
|
return ee + "," + te;
|
|
3543
3543
|
var oe = this.props;
|
|
3544
3544
|
return Math.round((ee * oe[0] + te * oe[4] + oe[12]) * 100) / 100 + "," + Math.round((ee * oe[1] + te * oe[5] + oe[13]) * 100) / 100;
|
|
3545
3545
|
}
|
|
3546
|
-
function
|
|
3546
|
+
function me() {
|
|
3547
3547
|
for (var ee = 0, te = this.props, oe = "matrix3d(", ae = 1e4; ee < 16; )
|
|
3548
3548
|
oe += A(te[ee] * ae) / ae, oe += ee === 15 ? ")" : ",", ee += 1;
|
|
3549
3549
|
return oe;
|
|
@@ -3557,7 +3557,7 @@ function requireLottie() {
|
|
|
3557
3557
|
return "matrix(" + te + "," + oe + "," + ae + "," + de + "," + ge + "," + ye + ")";
|
|
3558
3558
|
}
|
|
3559
3559
|
return function() {
|
|
3560
|
-
this.reset = R, this.rotate = L, this.rotateX = O, this.rotateY = N, this.rotateZ = V, this.skew = U, this.skewFromAxis = q, this.shear = B, this.scale = W, this.setTransform = z, this.translate = H, this.transform = $, this.multiply = Q, this.applyToPoint = Y, this.applyToX = Z, this.applyToY = ie, this.applyToZ = se, this.applyToPointArray = ve, this.applyToTriplePoints = he, this.applyToPointStringified =
|
|
3560
|
+
this.reset = R, this.rotate = L, this.rotateX = O, this.rotateY = N, this.rotateZ = V, this.skew = U, this.skewFromAxis = q, this.shear = B, this.scale = W, this.setTransform = z, this.translate = H, this.transform = $, this.multiply = Q, this.applyToPoint = Y, this.applyToX = Z, this.applyToY = ie, this.applyToZ = se, this.applyToPointArray = ve, this.applyToTriplePoints = he, this.applyToPointStringified = ke, this.toCSS = me, this.to2dCSS = ce, this.clone = G, this.cloneFromProps = K, this.equals = J, this.inversePoints = ue, this.inversePoint = pe, this.getInverseMatrix = le, this._t = this.transform, this.isIdentity = j, this._identity = !0, this._identityCalculated = !1, this.props = createTypedArray("float32", 16), this.reset();
|
|
3561
3561
|
};
|
|
3562
3562
|
})();
|
|
3563
3563
|
function _typeof$3(T) {
|
|
@@ -4546,11 +4546,11 @@ function requireLottie() {
|
|
|
4546
4546
|
function ve() {
|
|
4547
4547
|
this.isLoaded = !0;
|
|
4548
4548
|
}
|
|
4549
|
-
var
|
|
4549
|
+
var ke = function() {
|
|
4550
4550
|
this.fonts = [], this.chars = null, this.typekitLoaded = 0, this.isLoaded = !1, this._warned = !1, this.initTime = Date.now(), this.setIsLoadedBinded = this.setIsLoaded.bind(this), this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this);
|
|
4551
4551
|
};
|
|
4552
|
-
|
|
4553
|
-
var
|
|
4552
|
+
ke.isModifier = Z, ke.isZeroWidthJoiner = ie, ke.isFlagEmoji = pe, ke.isRegionalCode = le, ke.isCombinedCharacter = ue, ke.isRegionalFlag = he, ke.isVariationSelector = se, ke.BLACK_FLAG_CODE_POINT = A;
|
|
4553
|
+
var me = {
|
|
4554
4554
|
addChars: j,
|
|
4555
4555
|
addFonts: Q,
|
|
4556
4556
|
getCharData: J,
|
|
@@ -4559,7 +4559,7 @@ function requireLottie() {
|
|
|
4559
4559
|
checkLoadedFonts: H,
|
|
4560
4560
|
setIsLoaded: ve
|
|
4561
4561
|
};
|
|
4562
|
-
return
|
|
4562
|
+
return ke.prototype = me, ke;
|
|
4563
4563
|
})();
|
|
4564
4564
|
function SlotManager(T) {
|
|
4565
4565
|
this.animationData = T;
|
|
@@ -5565,8 +5565,8 @@ function requireLottie() {
|
|
|
5565
5565
|
ue || (ue = Math.sqrt(Math.pow(Q[0] - j[0], 2) + Math.pow(Q[1] - j[1], 2)));
|
|
5566
5566
|
var he = Math.atan2(j[1] - Q[1], j[0] - Q[0]), ve = W.h.v;
|
|
5567
5567
|
ve >= 1 ? ve = 0.99 : ve <= -1 && (ve = -0.99);
|
|
5568
|
-
var
|
|
5569
|
-
H.setAttribute("fx",
|
|
5568
|
+
var ke = ue * ve, me = Math.cos(he + W.a.v) * ke + Q[0], ne = Math.sin(he + W.a.v) * ke + Q[1];
|
|
5569
|
+
H.setAttribute("fx", me), H.setAttribute("fy", ne), $ && !W.g._collapsable && (W.of.setAttribute("fx", me), W.of.setAttribute("fy", ne));
|
|
5570
5570
|
}
|
|
5571
5571
|
}
|
|
5572
5572
|
}
|
|
@@ -5767,9 +5767,9 @@ function requireLottie() {
|
|
|
5767
5767
|
ue += J.ascent * T.finalSize / 100, this.canResize && T.finalSize > this.minimumFontSize && pe < ue ? (T.finalSize -= 1, T.finalLineHeight = T.finalSize * T.lh / T.s) : (T.finalText = he, L = T.finalText.length, se = !1);
|
|
5768
5768
|
}
|
|
5769
5769
|
H = -Z, K = 0;
|
|
5770
|
-
var
|
|
5770
|
+
var ke = 0, me;
|
|
5771
5771
|
for (R = 0; R < L; R += 1)
|
|
5772
|
-
if (O = !1,
|
|
5772
|
+
if (O = !1, me = T.finalText[R], ie = me.charCodeAt(0), ie === 13 || ie === 3 ? (ke = 0, z.push(H), $ = H > $ ? H : $, H = -2 * Z, V = "", O = !0, W += 1) : V = me, n.chars ? (G = n.getCharData(me, J.fStyle, n.getFontByName(T.f).fFamily), K = O ? 0 : G.w * T.finalSize / 100) : K = n.measureText(V, T.f, T.finalSize), me === " " ? ke += K + Z : (H += K + Z + ke, ke = 0), A.push({
|
|
5773
5773
|
l: K,
|
|
5774
5774
|
an: K,
|
|
5775
5775
|
add: U,
|
|
@@ -5958,9 +5958,9 @@ function requireLottie() {
|
|
|
5958
5958
|
Y = Z[G].points, K = Y[J - 1], $ = Y[J], ie = $.partialLength;
|
|
5959
5959
|
}
|
|
5960
5960
|
q = W.length, V = 0, B = 0;
|
|
5961
|
-
var
|
|
5961
|
+
var ke = T.finalSize * 1.2 * 0.714, me = !0, ne, ce, ee, te, oe;
|
|
5962
5962
|
te = A.length;
|
|
5963
|
-
var ae, de = -1, ge, ye, Ee, Pe = H, Ie = G, Re = J, Le = -1, Me,
|
|
5963
|
+
var ae, de = -1, ge, ye, Ee, Pe = H, Ie = G, Re = J, Le = -1, Me, Se, Ce, xe, we, Oe, De, We, Fe = "", ze = this.defaultPropsArray, Ne;
|
|
5964
5964
|
if (T.j === 2 || T.j === 1) {
|
|
5965
5965
|
var Be = 0, Ye = 0, Xe = T.j === 2 ? -0.5 : -1, qe = 0, Qe = !0;
|
|
5966
5966
|
for (U = 0; U < q; U += 1)
|
|
@@ -5978,7 +5978,7 @@ function requireLottie() {
|
|
|
5978
5978
|
}
|
|
5979
5979
|
for (U = 0; U < q; U += 1) {
|
|
5980
5980
|
if (L.reset(), Me = 1, W[U].n)
|
|
5981
|
-
V = 0, B += T.yOffset, B +=
|
|
5981
|
+
V = 0, B += T.yOffset, B += me ? 1 : 0, H = Pe, me = !1, this._hasMaskedPath && (G = Ie, J = Re, Y = Z[G].points, K = Y[J - 1], $ = Y[J], ie = $.partialLength, Q = 0), Fe = "", We = "", Oe = "", Ne = "", ze = this.defaultPropsArray;
|
|
5982
5982
|
else {
|
|
5983
5983
|
if (this._hasMaskedPath) {
|
|
5984
5984
|
if (Le !== W[U].line) {
|
|
@@ -5997,20 +5997,20 @@ function requireLottie() {
|
|
|
5997
5997
|
for (ee = 0; ee < te; ee += 1)
|
|
5998
5998
|
ne = A[ee].a, ne.p.propType && (ce = A[ee].s, ae = ce.getMult(W[U].anIndexes[ee], R.a[ee].s.totalChars), ae.length ? Ge += ne.p.v[0] * ae[0] : Ge += ne.p.v[0] * ae), ne.a.propType && (ce = A[ee].s, ae = ce.getMult(W[U].anIndexes[ee], R.a[ee].s.totalChars), ae.length ? Ge += ne.a.v[0] * ae[0] : Ge += ne.a.v[0] * ae);
|
|
5999
5999
|
for (j = !0, this._pathData.a.v && (H = W[0].an * 0.5 + (se - this._pathData.f.v - W[0].an * 0.5 - W[W.length - 1].an * 0.5) * de / (q - 1), H += this._pathData.f.v); j; )
|
|
6000
|
-
Q + ie >= H + Ge || !Y ? (le = (H + Ge - Q) / $.partialLength, ye = K.point[0] + ($.point[0] - K.point[0]) * le, Ee = K.point[1] + ($.point[1] - K.point[1]) * le, L.translate(-P[0] * W[U].an * 5e-3, -(P[1] *
|
|
6000
|
+
Q + ie >= H + Ge || !Y ? (le = (H + Ge - Q) / $.partialLength, ye = K.point[0] + ($.point[0] - K.point[0]) * le, Ee = K.point[1] + ($.point[1] - K.point[1]) * le, L.translate(-P[0] * W[U].an * 5e-3, -(P[1] * ke) * 0.01), j = !1) : Y && (Q += $.partialLength, J += 1, J >= Y.length && (J = 0, G += 1, Z[G] ? Y = Z[G].points : ue.v.c ? (J = 0, G = 0, Y = Z[G].points) : (Q -= $.partialLength, Y = null)), Y && (K = $, $ = Y[J], ie = $.partialLength));
|
|
6001
6001
|
ge = W[U].an / 2 - W[U].add, L.translate(-ge, 0, 0);
|
|
6002
6002
|
} else
|
|
6003
|
-
ge = W[U].an / 2 - W[U].add, L.translate(-ge, 0, 0), L.translate(-P[0] * W[U].an * 5e-3, -P[1] *
|
|
6003
|
+
ge = W[U].an / 2 - W[U].add, L.translate(-ge, 0, 0), L.translate(-P[0] * W[U].an * 5e-3, -P[1] * ke * 0.01, 0);
|
|
6004
6004
|
for (ee = 0; ee < te; ee += 1)
|
|
6005
6005
|
ne = A[ee].a, ne.t.propType && (ce = A[ee].s, ae = ce.getMult(W[U].anIndexes[ee], R.a[ee].s.totalChars), (V !== 0 || T.j !== 0) && (this._hasMaskedPath ? ae.length ? H += ne.t.v * ae[0] : H += ne.t.v * ae : ae.length ? V += ne.t.v * ae[0] : V += ne.t.v * ae));
|
|
6006
|
-
for (T.strokeWidthAnim && (Ce = T.sw || 0), T.strokeColorAnim && (T.sc ?
|
|
6006
|
+
for (T.strokeWidthAnim && (Ce = T.sw || 0), T.strokeColorAnim && (T.sc ? Se = [T.sc[0], T.sc[1], T.sc[2]] : Se = [0, 0, 0]), T.fillColorAnim && T.fc && (xe = [T.fc[0], T.fc[1], T.fc[2]]), ee = 0; ee < te; ee += 1)
|
|
6007
6007
|
ne = A[ee].a, ne.a.propType && (ce = A[ee].s, ae = ce.getMult(W[U].anIndexes[ee], R.a[ee].s.totalChars), ae.length ? L.translate(-ne.a.v[0] * ae[0], -ne.a.v[1] * ae[1], ne.a.v[2] * ae[2]) : L.translate(-ne.a.v[0] * ae, -ne.a.v[1] * ae, ne.a.v[2] * ae));
|
|
6008
6008
|
for (ee = 0; ee < te; ee += 1)
|
|
6009
6009
|
ne = A[ee].a, ne.s.propType && (ce = A[ee].s, ae = ce.getMult(W[U].anIndexes[ee], R.a[ee].s.totalChars), ae.length ? L.scale(1 + (ne.s.v[0] - 1) * ae[0], 1 + (ne.s.v[1] - 1) * ae[1], 1) : L.scale(1 + (ne.s.v[0] - 1) * ae, 1 + (ne.s.v[1] - 1) * ae, 1));
|
|
6010
6010
|
for (ee = 0; ee < te; ee += 1) {
|
|
6011
6011
|
if (ne = A[ee].a, ce = A[ee].s, ae = ce.getMult(W[U].anIndexes[ee], R.a[ee].s.totalChars), ne.sk.propType && (ae.length ? L.skewFromAxis(-ne.sk.v * ae[0], ne.sa.v * ae[1]) : L.skewFromAxis(-ne.sk.v * ae, ne.sa.v * ae)), ne.r.propType && (ae.length ? L.rotateZ(-ne.r.v * ae[2]) : L.rotateZ(-ne.r.v * ae)), ne.ry.propType && (ae.length ? L.rotateY(ne.ry.v * ae[1]) : L.rotateY(ne.ry.v * ae)), ne.rx.propType && (ae.length ? L.rotateX(ne.rx.v * ae[0]) : L.rotateX(ne.rx.v * ae)), ne.o.propType && (ae.length ? Me += (ne.o.v * ae[0] - Me) * ae[0] : Me += (ne.o.v * ae - Me) * ae), T.strokeWidthAnim && ne.sw.propType && (ae.length ? Ce += ne.sw.v * ae[0] : Ce += ne.sw.v * ae), T.strokeColorAnim && ne.sc.propType)
|
|
6012
6012
|
for (we = 0; we < 3; we += 1)
|
|
6013
|
-
ae.length ?
|
|
6013
|
+
ae.length ? Se[we] += (ne.sc.v[we] - Se[we]) * ae[0] : Se[we] += (ne.sc.v[we] - Se[we]) * ae;
|
|
6014
6014
|
if (T.fillColorAnim && T.fc) {
|
|
6015
6015
|
if (ne.fc.propType)
|
|
6016
6016
|
for (we = 0; we < 3; we += 1)
|
|
@@ -6020,8 +6020,8 @@ function requireLottie() {
|
|
|
6020
6020
|
}
|
|
6021
6021
|
for (ee = 0; ee < te; ee += 1)
|
|
6022
6022
|
ne = A[ee].a, ne.p.propType && (ce = A[ee].s, ae = ce.getMult(W[U].anIndexes[ee], R.a[ee].s.totalChars), this._hasMaskedPath ? ae.length ? L.translate(0, ne.p.v[1] * ae[0], -ne.p.v[2] * ae[1]) : L.translate(0, ne.p.v[1] * ae, -ne.p.v[2] * ae) : ae.length ? L.translate(ne.p.v[0] * ae[0], ne.p.v[1] * ae[1], -ne.p.v[2] * ae[2]) : L.translate(ne.p.v[0] * ae, ne.p.v[1] * ae, -ne.p.v[2] * ae));
|
|
6023
|
-
if (T.strokeWidthAnim && (Oe = Ce < 0 ? 0 : Ce), T.strokeColorAnim && (De = "rgb(" + Math.round(
|
|
6024
|
-
if (L.translate(0, -T.ls), L.translate(0, P[1] *
|
|
6023
|
+
if (T.strokeWidthAnim && (Oe = Ce < 0 ? 0 : Ce), T.strokeColorAnim && (De = "rgb(" + Math.round(Se[0] * 255) + "," + Math.round(Se[1] * 255) + "," + Math.round(Se[2] * 255) + ")"), T.fillColorAnim && T.fc && (We = "rgb(" + Math.round(xe[0] * 255) + "," + Math.round(xe[1] * 255) + "," + Math.round(xe[2] * 255) + ")"), this._hasMaskedPath) {
|
|
6024
|
+
if (L.translate(0, -T.ls), L.translate(0, P[1] * ke * 0.01 + B, 0), this._pathData.p.v) {
|
|
6025
6025
|
pe = ($.point[1] - K.point[1]) / ($.point[0] - K.point[0]);
|
|
6026
6026
|
var et = Math.atan(pe) * 180 / Math.PI;
|
|
6027
6027
|
$.point[0] < K.point[0] && (et += 180), L.rotate(-et * Math.PI / 180);
|
|
@@ -6036,7 +6036,7 @@ function requireLottie() {
|
|
|
6036
6036
|
L.translate(W[U].animatorJustifyOffset + T.justifyOffset + (T.boxWidth - T.lineWidths[W[U].line]) / 2, 0, 0);
|
|
6037
6037
|
break;
|
|
6038
6038
|
}
|
|
6039
|
-
L.translate(0, -T.ls), L.translate(ge, 0, 0), L.translate(P[0] * W[U].an * 5e-3, P[1] *
|
|
6039
|
+
L.translate(0, -T.ls), L.translate(ge, 0, 0), L.translate(P[0] * W[U].an * 5e-3, P[1] * ke * 0.01, 0), V += W[U].l + T.tr * 1e-3 * T.finalSize;
|
|
6040
6040
|
}
|
|
6041
6041
|
O === "html" ? Fe = L.toCSS() : O === "svg" ? Fe = L.to2dCSS() : ze = [L.props[0], L.props[1], L.props[2], L.props[3], L.props[4], L.props[5], L.props[6], L.props[7], L.props[8], L.props[9], L.props[10], L.props[11], L.props[12], L.props[13], L.props[14], L.props[15]], Ne = Me;
|
|
6042
6042
|
}
|
|
@@ -7561,9 +7561,9 @@ function requireLottie() {
|
|
|
7561
7561
|
for (ie = 0; ie < A; ie++)
|
|
7562
7562
|
le[ie] = le[se = U & se + G[ie % Y] + (K = le[ie])], le[se] = K;
|
|
7563
7563
|
Z.g = function(pe) {
|
|
7564
|
-
for (var ue, he = 0, ve = Z.i,
|
|
7565
|
-
ue =
|
|
7566
|
-
return Z.i = ve, Z.j =
|
|
7564
|
+
for (var ue, he = 0, ve = Z.i, ke = Z.j, me = Z.S; pe--; )
|
|
7565
|
+
ue = me[ve = U & ve + 1], he = he * A + me[U & (me[ve] = me[ke = U & ke + ue]) + (me[ke] = ue)];
|
|
7566
|
+
return Z.i = ve, Z.j = ke, he;
|
|
7567
7567
|
};
|
|
7568
7568
|
}
|
|
7569
7569
|
function H(G, K) {
|
|
@@ -9340,10 +9340,10 @@ var _excluded$1 = ["animationData", "loop", "autoplay", "initialSegment", "onCom
|
|
|
9340
9340
|
}, ve = function(de, ge) {
|
|
9341
9341
|
var ye;
|
|
9342
9342
|
(ye = Z.current) === null || ye === void 0 || ye.goToAndStop(de, ge);
|
|
9343
|
-
},
|
|
9343
|
+
}, ke = function(de) {
|
|
9344
9344
|
var ge;
|
|
9345
9345
|
(ge = Z.current) === null || ge === void 0 || ge.setDirection(de);
|
|
9346
|
-
},
|
|
9346
|
+
}, me = function(de, ge) {
|
|
9347
9347
|
var ye;
|
|
9348
9348
|
(ye = Z.current) === null || ye === void 0 || ye.playSegments(de, ge);
|
|
9349
9349
|
}, ne = function(de) {
|
|
@@ -9451,8 +9451,8 @@ var _excluded$1 = ["animationData", "loop", "autoplay", "initialSegment", "onCom
|
|
|
9451
9451
|
setSpeed: ue,
|
|
9452
9452
|
goToAndStop: ve,
|
|
9453
9453
|
goToAndPlay: he,
|
|
9454
|
-
setDirection:
|
|
9455
|
-
playSegments:
|
|
9454
|
+
setDirection: ke,
|
|
9455
|
+
playSegments: me,
|
|
9456
9456
|
setSubframe: ne,
|
|
9457
9457
|
getDuration: ce,
|
|
9458
9458
|
destroy: ee,
|
|
@@ -14981,8 +14981,8 @@ function requireLoglevel() {
|
|
|
14981
14981
|
}
|
|
14982
14982
|
if (typeof ue === P)
|
|
14983
14983
|
try {
|
|
14984
|
-
var he = window.document.cookie, ve = encodeURIComponent(Y),
|
|
14985
|
-
|
|
14984
|
+
var he = window.document.cookie, ve = encodeURIComponent(Y), ke = he.indexOf(ve + "=");
|
|
14985
|
+
ke !== -1 && (ue = /^([^;]+)/.exec(he.slice(ke + ve.length + 1))[1]);
|
|
14986
14986
|
} catch {
|
|
14987
14987
|
}
|
|
14988
14988
|
return j.levels[ue] === void 0 && (ue = void 0), ue;
|
|
@@ -15205,7 +15205,7 @@ function requireEvents() {
|
|
|
15205
15205
|
if (typeof he == "function")
|
|
15206
15206
|
n(he, this, Z);
|
|
15207
15207
|
else
|
|
15208
|
-
for (var ve = he.length,
|
|
15208
|
+
for (var ve = he.length, ke = H(he, ve), ie = 0; ie < ve; ++ie) n(ke[ie], this, Z);
|
|
15209
15209
|
return !0;
|
|
15210
15210
|
};
|
|
15211
15211
|
function B(K, Y, Z, ie) {
|
|
@@ -24171,7 +24171,7 @@ class LocalParticipant extends Participant {
|
|
|
24171
24171
|
this.log.debug("finished recording preconnect buffer", Object.assign(Object.assign({}, this.logContext), getLogContextFromTrack(n))), n.stopPreConnectBuffer();
|
|
24172
24172
|
}
|
|
24173
24173
|
}), le && new Promise((he, ve) => __awaiter(this, void 0, void 0, function* () {
|
|
24174
|
-
var
|
|
24174
|
+
var ke, me, ne, ce, ee, te;
|
|
24175
24175
|
try {
|
|
24176
24176
|
this.log.debug("waiting for agent", Object.assign(Object.assign({}, this.logContext), getLogContextFromTrack(n)));
|
|
24177
24177
|
const ge = setTimeout(() => {
|
|
@@ -24190,20 +24190,20 @@ class LocalParticipant extends Participant {
|
|
|
24190
24190
|
}
|
|
24191
24191
|
});
|
|
24192
24192
|
try {
|
|
24193
|
-
for (var oe = !0, ae = __asyncValues(le), de; de = yield ae.next(),
|
|
24193
|
+
for (var oe = !0, ae = __asyncValues(le), de; de = yield ae.next(), ke = de.done, !ke; oe = !0) {
|
|
24194
24194
|
ce = de.value, oe = !1;
|
|
24195
24195
|
const Pe = ce;
|
|
24196
24196
|
yield Ee.write(Pe);
|
|
24197
24197
|
}
|
|
24198
24198
|
} catch (Pe) {
|
|
24199
|
-
|
|
24199
|
+
me = {
|
|
24200
24200
|
error: Pe
|
|
24201
24201
|
};
|
|
24202
24202
|
} finally {
|
|
24203
24203
|
try {
|
|
24204
|
-
!oe && !
|
|
24204
|
+
!oe && !ke && (ne = ae.return) && (yield ne.call(ae));
|
|
24205
24205
|
} finally {
|
|
24206
|
-
if (
|
|
24206
|
+
if (me) throw me.error;
|
|
24207
24207
|
}
|
|
24208
24208
|
}
|
|
24209
24209
|
yield Ee.close(), he();
|
|
@@ -27775,7 +27775,7 @@ const elevenLabsErrorLogger = new ElevenLabsErrorLogger(), useElevenLabsManager
|
|
|
27775
27775
|
}), P?.(oe);
|
|
27776
27776
|
},
|
|
27777
27777
|
onMessage: (oe) => {
|
|
27778
|
-
|
|
27778
|
+
ke(), console.log("[ElevenLabsManager] 📨 Message received:", JSON.stringify(oe).substring(0, 300)), A?.(oe);
|
|
27779
27779
|
}
|
|
27780
27780
|
}), [N, V] = useState("disconnected"), [B, U] = useState(null), [q, W] = useState([]), z = useRef(null);
|
|
27781
27781
|
useEffect(() => {
|
|
@@ -27949,13 +27949,13 @@ const elevenLabsErrorLogger = new ElevenLabsErrorLogger(), useElevenLabsManager
|
|
|
27949
27949
|
const Me = await Le.json();
|
|
27950
27950
|
if (console.log("[ElevenLabsManager] ✅ Asset search result:", Me), Me.success && Me.asset) {
|
|
27951
27951
|
console.log("[ElevenLabsManager] 📤 Dispatching show_asset event to window");
|
|
27952
|
-
const
|
|
27952
|
+
const Se = new CustomEvent("show_asset", {
|
|
27953
27953
|
detail: {
|
|
27954
27954
|
asset: Me.asset,
|
|
27955
27955
|
offer_message: Me.offer_message
|
|
27956
27956
|
}
|
|
27957
27957
|
});
|
|
27958
|
-
window.dispatchEvent(
|
|
27958
|
+
window.dispatchEvent(Se), console.log("[ElevenLabsManager] ✅ Event dispatched successfully");
|
|
27959
27959
|
}
|
|
27960
27960
|
return L?.("speaking"), Me;
|
|
27961
27961
|
} catch (Re) {
|
|
@@ -27996,7 +27996,7 @@ const elevenLabsErrorLogger = new ElevenLabsErrorLogger(), useElevenLabsManager
|
|
|
27996
27996
|
},
|
|
27997
27997
|
custom_cta: async (Ie) => {
|
|
27998
27998
|
console.log("[ElevenLabsManager] 🔗 custom_cta tool called:", Ie), L?.("calling_tool");
|
|
27999
|
-
const Re = oe.customLlmExtraBody?.customCta, Le = oe.customLlmExtraBody?.session_id, Me = oe.customLlmExtraBody?.jwt,
|
|
27999
|
+
const Re = oe.customLlmExtraBody?.customCta, Le = oe.customLlmExtraBody?.session_id, Me = oe.customLlmExtraBody?.jwt, Se = oe.customLlmExtraBody?.agent_id, Ce = oe.customLlmExtraBody?.companyToken || "", xe = Ie.url || Re?.href;
|
|
28000
28000
|
if (!xe)
|
|
28001
28001
|
return console.error("[ElevenLabsManager] ❌ custom_cta: No URL provided and no CTA configured"), L?.("speaking"), { success: !1, error: "No URL to redirect to" };
|
|
28002
28002
|
let we = null;
|
|
@@ -28037,7 +28037,7 @@ const elevenLabsErrorLogger = new ElevenLabsErrorLogger(), useElevenLabsManager
|
|
|
28037
28037
|
De({
|
|
28038
28038
|
sessionId: Le,
|
|
28039
28039
|
widgetJwt: Me,
|
|
28040
|
-
agentId:
|
|
28040
|
+
agentId: Se || "",
|
|
28041
28041
|
companyToken: Ce,
|
|
28042
28042
|
status: "paused",
|
|
28043
28043
|
lastActivityAt: Date.now(),
|
|
@@ -28047,6 +28047,8 @@ const elevenLabsErrorLogger = new ElevenLabsErrorLogger(), useElevenLabsManager
|
|
|
28047
28047
|
}
|
|
28048
28048
|
return L?.("speaking"), { success: !0 };
|
|
28049
28049
|
},
|
|
28050
|
+
// TODO: Remove when show_email_form is deleted from ElevenLabs UI.
|
|
28051
|
+
// Kept here so the client-side handler exists while the ElevenLabs tool definition is still active.
|
|
28050
28052
|
show_email_form: async (Ie) => {
|
|
28051
28053
|
console.log("[ElevenLabsManager] 📧 show_email_form tool called:", Ie), L?.("calling_tool");
|
|
28052
28054
|
try {
|
|
@@ -28064,16 +28066,16 @@ const elevenLabsErrorLogger = new ElevenLabsErrorLogger(), useElevenLabsManager
|
|
|
28064
28066
|
const Re = getCurrentBackendUrl(), Le = oe.customLlmExtraBody?.agent_id;
|
|
28065
28067
|
let Me = `${Re}/api/skills/${Ie.skill_name}/content`;
|
|
28066
28068
|
Le && (Me += `?agent_id=${Le}`);
|
|
28067
|
-
const
|
|
28069
|
+
const Se = await fetch(Me, {
|
|
28068
28070
|
method: "GET",
|
|
28069
28071
|
headers: {
|
|
28070
28072
|
"Content-Type": "application/json",
|
|
28071
28073
|
Authorization: `Bearer ${oe.customLlmExtraBody.jwt || ""}`
|
|
28072
28074
|
}
|
|
28073
28075
|
});
|
|
28074
|
-
if (!
|
|
28075
|
-
throw new Error(`Skill content fetch failed: ${
|
|
28076
|
-
const Ce = await
|
|
28076
|
+
if (!Se.ok)
|
|
28077
|
+
throw new Error(`Skill content fetch failed: ${Se.statusText}`);
|
|
28078
|
+
const Ce = await Se.json();
|
|
28077
28079
|
return console.log("[ElevenLabsManager] ✅ Skill content loaded:", Ce.name), L?.("speaking"), Ce;
|
|
28078
28080
|
} catch (Re) {
|
|
28079
28081
|
return console.error("[ElevenLabsManager] ❌ load_skill error:", Re), L?.("speaking"), { success: !1, error: String(Re) };
|
|
@@ -28143,9 +28145,9 @@ const elevenLabsErrorLogger = new ElevenLabsErrorLogger(), useElevenLabsManager
|
|
|
28143
28145
|
H.current && (clearInterval(H.current), H.current = null, $.current = !1, console.log("[ElevenLabsManager] 🛑 Session renewal stopped"));
|
|
28144
28146
|
}, []), ve = useCallback(() => {
|
|
28145
28147
|
U(null);
|
|
28146
|
-
}, []),
|
|
28148
|
+
}, []), ke = useCallback(() => {
|
|
28147
28149
|
j.current = Date.now();
|
|
28148
|
-
}, []),
|
|
28150
|
+
}, []), me = useCallback(async (oe, ae = 3) => {
|
|
28149
28151
|
if (N === "connecting" || N === "reconnecting")
|
|
28150
28152
|
return console.log("[ElevenLabsManager] ⚠️ Already attempting to connect"), !1;
|
|
28151
28153
|
console.log("[ElevenLabsManager] 🔄 Manual reconnection initiated"), V("reconnecting");
|
|
@@ -28230,8 +28232,8 @@ const elevenLabsErrorLogger = new ElevenLabsErrorLogger(), useElevenLabsManager
|
|
|
28230
28232
|
startSessionRenewal: ue,
|
|
28231
28233
|
stopSessionRenewal: he,
|
|
28232
28234
|
clearError: ve,
|
|
28233
|
-
updateActivity:
|
|
28234
|
-
manualReconnect:
|
|
28235
|
+
updateActivity: ke,
|
|
28236
|
+
manualReconnect: me,
|
|
28235
28237
|
sendKeepAlive: ce,
|
|
28236
28238
|
// Audio control
|
|
28237
28239
|
muteMicrophone: ee,
|
|
@@ -28417,20 +28419,20 @@ const elevenLabsErrorLogger = new ElevenLabsErrorLogger(), useElevenLabsManager
|
|
|
28417
28419
|
console.log("[useVoiceSessionV2] ✅ Got signed URL from backend");
|
|
28418
28420
|
let he;
|
|
28419
28421
|
try {
|
|
28420
|
-
const
|
|
28422
|
+
const me = await fetch(buildApiUrl(`api/widget/session/${P}/personalized-prompt`), {
|
|
28421
28423
|
headers: { Authorization: `Bearer ${A}` }
|
|
28422
28424
|
});
|
|
28423
|
-
if (
|
|
28424
|
-
const { prompt: ne } = await
|
|
28425
|
+
if (me.ok) {
|
|
28426
|
+
const { prompt: ne } = await me.json();
|
|
28425
28427
|
he = (ne || "").replace(/^assistant:\s*/i, "").trim(), console.log("[useVoiceSessionV2] ✅ Using personalized prompt from backend");
|
|
28426
28428
|
} else
|
|
28427
28429
|
throw new Error("Prompt fetch failed");
|
|
28428
|
-
} catch (
|
|
28429
|
-
console.warn("[useVoiceSessionV2] ⚠️ Could not fetch personalized prompt, using agent instructions:",
|
|
28430
|
+
} catch (me) {
|
|
28431
|
+
console.warn("[useVoiceSessionV2] ⚠️ Could not fetch personalized prompt, using agent instructions:", me), he = (T.agent_instructions || "").replace(/^assistant:\s*/i, "").trim();
|
|
28430
28432
|
}
|
|
28431
28433
|
if (!he) {
|
|
28432
|
-
const
|
|
28433
|
-
return console.error("[useVoiceSessionV2] ❌",
|
|
28434
|
+
const me = "Agent instructions are missing. The agent may not have been configured correctly.";
|
|
28435
|
+
return console.error("[useVoiceSessionV2] ❌", me), O(me), !1;
|
|
28434
28436
|
}
|
|
28435
28437
|
console.log("[useVoiceSessionV2] 🎯 Starting ElevenLabs session..."), console.log("[useVoiceSessionV2] 📊 ElevenLabs manager state:", {
|
|
28436
28438
|
conversation: !!G.conversation,
|
|
@@ -28440,17 +28442,17 @@ const elevenLabsErrorLogger = new ElevenLabsErrorLogger(), useElevenLabsManager
|
|
|
28440
28442
|
});
|
|
28441
28443
|
let ve = "";
|
|
28442
28444
|
if (Z && (ie || se) ? (ve = `${ie ? `Welcome back! We were just discussing: "${ie.substring(0, 100)}${ie.length > 100 ? "..." : ""}"` : se ? `Welcome back! I was just saying: "${se.substring(0, 100)}${se.length > 100 ? "..." : ""}"` : "Welcome back! How can I continue helping you?"}. How can I help you continue?`, console.log("[useVoiceSessionV2] 🔄 Using resume-specific first message:", ve)) : T.agent_first_message && R.length === 0 && (ve = T.agent_first_message, console.log("[useVoiceSessionV2] 👋 Using standard welcome message:", ve)), ve) {
|
|
28443
|
-
const
|
|
28445
|
+
const me = {
|
|
28444
28446
|
role: "assistant",
|
|
28445
28447
|
content: ve
|
|
28446
28448
|
};
|
|
28447
|
-
console.log("[useVoiceSessionV2] 🎯 Adding first message to store:",
|
|
28449
|
+
console.log("[useVoiceSessionV2] 🎯 Adding first message to store:", me), L([me]), console.log("[useVoiceSessionV2] 🎤 Setting agent as speaking for initial message"), z.setAgentSpeaking && z.setAgentSpeaking(!0);
|
|
28448
28450
|
}
|
|
28449
|
-
const
|
|
28451
|
+
const ke = setTimeout(() => {
|
|
28450
28452
|
throw console.error("[useVoiceSessionV2] ⏰ Session start timeout - taking too long"), new Error("Session start timeout - taking too long");
|
|
28451
28453
|
}, 3e4);
|
|
28452
28454
|
try {
|
|
28453
|
-
const
|
|
28455
|
+
const me = (T.agent_first_message || "").replace(/^assistant:\s*/i, "").trim(), ne = ve || me || "Hello! How can I help you today?", ce = await G.startSession({
|
|
28454
28456
|
signedUrl: ue,
|
|
28455
28457
|
agent: {
|
|
28456
28458
|
prompt: he,
|
|
@@ -28488,11 +28490,11 @@ const elevenLabsErrorLogger = new ElevenLabsErrorLogger(), useElevenLabsManager
|
|
|
28488
28490
|
companyToken: V || ""
|
|
28489
28491
|
}
|
|
28490
28492
|
});
|
|
28491
|
-
if (clearTimeout(
|
|
28493
|
+
if (clearTimeout(ke), console.log("[useVoiceSessionV2] 📊 ElevenLabs session result:", ce), ce)
|
|
28492
28494
|
return G.startSessionRenewal(), U.current = !0, console.log("[useVoiceSessionV2] 🎯 Session started - ElevenLabs will manage speaking/listening states"), console.log("[useVoiceSessionV2] ✅ Voice session started successfully"), !0;
|
|
28493
28495
|
throw new Error("Failed to start ElevenLabs session");
|
|
28494
|
-
} catch (
|
|
28495
|
-
throw clearTimeout(
|
|
28496
|
+
} catch (me) {
|
|
28497
|
+
throw clearTimeout(ke), me;
|
|
28496
28498
|
}
|
|
28497
28499
|
} catch (le) {
|
|
28498
28500
|
return console.error("[useVoiceSessionV2] ❌ Failed to start voice session:", le), B.current && (B.current.getTracks().forEach((pe) => pe.stop()), B.current = null), le instanceof Error && le.name === "NotAllowedError" ? O("Microphone access denied. Please allow microphone access to use voice mode.") : O(`Failed to start voice mode: ${le instanceof Error ? le.message : "Unknown error"}`), !1;
|
|
@@ -31209,40 +31211,40 @@ const MAX_RECONNECT_ATTEMPTS = 10, BASE_RECONNECT_DELAY = 1e3, initializeSocket
|
|
|
31209
31211
|
}
|
|
31210
31212
|
console.log("[SocketService] Authenticating..."), socket.emit("authenticate", { token: authToken });
|
|
31211
31213
|
}, getSocket = () => socket, useWidgetStore = ({ companyToken: T, agentId: n, analyticsService: P, mode: A = "floating", initialExpanded: R = !1 }) => {
|
|
31212
|
-
const [L, O] = useState(R), [N, V] = useState(!1), [B, U] = useState(!1), [q, W] = useState(null), [z, H] = useState(null), [$, Q] = useState(null), [j, J] = useState(null), [G, K] = useState(!1), [Y, Z] = useState(!1), [ie, se] = useState("voice"), [le, pe] = useState(0), [ue, he] = useState([]), [ve,
|
|
31214
|
+
const [L, O] = useState(R), [N, V] = useState(!1), [B, U] = useState(!1), [q, W] = useState(null), [z, H] = useState(null), [$, Q] = useState(null), [j, J] = useState(null), [G, K] = useState(!1), [Y, Z] = useState(!1), [ie, se] = useState("voice"), [le, pe] = useState(0), [ue, he] = useState([]), [ve, ke] = useState(""), [me, ne] = useState(!1), [ce, ee] = useState(null), [te, oe] = useState(null), [ae, de] = useState(null), [ge, ye] = useState(!1), [Ee, Pe] = useState(!1), [Ie, Re] = useState(!1), [Le, Me] = useState(!1), [Se, Ce] = useState(!1), [xe, we] = useState("active"), [Oe, De] = useState(!1), [We, Fe] = useState("idle"), [ze, Ne] = useState(void 0), [Be, Ye] = useState(!1), [Xe, qe] = useState(!1), [Qe, Ge] = useState("form_active"), [et, nt] = useState(!1);
|
|
31213
31215
|
useEffect(() => {
|
|
31214
31216
|
console.log("[WidgetStoreV2] 📋 hasActiveForm changed to:", Be);
|
|
31215
31217
|
}, [Be]), useEffect(() => {
|
|
31216
|
-
const
|
|
31217
|
-
const Te = (
|
|
31218
|
+
const fe = (be) => {
|
|
31219
|
+
const Te = (be?.detail ?? {}).force_display ?? !1;
|
|
31218
31220
|
console.log("[WidgetStoreV2] 📧 show_email_form event received from agent", { force_display: Te }), Me(!0), Ce(Te);
|
|
31219
31221
|
};
|
|
31220
|
-
return window.addEventListener("show_email_form",
|
|
31222
|
+
return window.addEventListener("show_email_form", fe), () => window.removeEventListener("show_email_form", fe);
|
|
31221
31223
|
}, []);
|
|
31222
31224
|
const Ze = useRef(null), tt = useRef(null), st = useRef(!1), ht = useRef(!1), pt = useRef(!1), ot = useRef(null), kt = useRef(0), At = 1e3, ft = useRef(!1), Rt = useCallback(() => {
|
|
31223
31225
|
W(null);
|
|
31224
|
-
}, []), ut = useCallback((
|
|
31225
|
-
W(
|
|
31226
|
-
}, []), at = useCallback((
|
|
31227
|
-
J(
|
|
31228
|
-
}, [P]), mt = useCallback((
|
|
31229
|
-
he((
|
|
31226
|
+
}, []), ut = useCallback((fe) => {
|
|
31227
|
+
W(fe);
|
|
31228
|
+
}, []), at = useCallback((fe) => {
|
|
31229
|
+
J(fe), fe && P?.setJwt(fe);
|
|
31230
|
+
}, [P]), mt = useCallback((fe) => {
|
|
31231
|
+
he((be) => [...be, fe]);
|
|
31230
31232
|
}, []), St = useCallback(async () => {
|
|
31231
31233
|
if (n) {
|
|
31232
31234
|
U(!0), W(null);
|
|
31233
31235
|
try {
|
|
31234
|
-
const
|
|
31236
|
+
const fe = await fetch(buildApiUrl(`api/widget/bootstrap?agent_id=${n}`), {
|
|
31235
31237
|
method: "GET",
|
|
31236
31238
|
headers: { "Content-Type": "application/json" }
|
|
31237
31239
|
});
|
|
31238
|
-
if (!
|
|
31240
|
+
if (!fe.ok)
|
|
31239
31241
|
throw new Error("Failed to get bootstrap JWT");
|
|
31240
|
-
const { access_token:
|
|
31241
|
-
at(
|
|
31242
|
+
const { access_token: be } = await fe.json();
|
|
31243
|
+
at(be);
|
|
31242
31244
|
const Ae = await fetch(buildApiUrl(`api/widget/session/agent-config/${n}`), {
|
|
31243
31245
|
method: "GET",
|
|
31244
31246
|
headers: {
|
|
31245
|
-
Authorization: `Bearer ${
|
|
31247
|
+
Authorization: `Bearer ${be}`,
|
|
31246
31248
|
"Content-Type": "application/json"
|
|
31247
31249
|
}
|
|
31248
31250
|
});
|
|
@@ -31268,15 +31270,15 @@ const MAX_RECONNECT_ATTEMPTS = 10, BASE_RECONNECT_DELAY = 1e3, initializeSocket
|
|
|
31268
31270
|
all_agent_keys: Object.keys(Te),
|
|
31269
31271
|
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
31270
31272
|
});
|
|
31271
|
-
} catch (
|
|
31272
|
-
console.error("[WidgetStoreV2] ❌ Failed to load agent:",
|
|
31273
|
-
const
|
|
31273
|
+
} catch (fe) {
|
|
31274
|
+
console.error("[WidgetStoreV2] ❌ Failed to load agent:", fe);
|
|
31275
|
+
const be = fe instanceof Error ? fe.message : "Unknown error";
|
|
31274
31276
|
console.error("[WidgetStoreV2] ❌ Error details:", {
|
|
31275
|
-
message:
|
|
31276
|
-
error:
|
|
31277
|
+
message: be,
|
|
31278
|
+
error: fe,
|
|
31277
31279
|
companyToken: T,
|
|
31278
31280
|
agentId: n
|
|
31279
|
-
}), W(`Failed to load agent: ${
|
|
31281
|
+
}), W(`Failed to load agent: ${be}`);
|
|
31280
31282
|
} finally {
|
|
31281
31283
|
U(!1);
|
|
31282
31284
|
}
|
|
@@ -31293,15 +31295,15 @@ const MAX_RECONNECT_ATTEMPTS = 10, BASE_RECONNECT_DELAY = 1e3, initializeSocket
|
|
|
31293
31295
|
console.warn("[WidgetStoreV2] ⚠️ No JWT token available for CTA authentication, skipping...");
|
|
31294
31296
|
return;
|
|
31295
31297
|
}
|
|
31296
|
-
const
|
|
31298
|
+
const fe = new AbortController(), be = setTimeout(() => fe.abort(), 5e3), Ae = await fetch(buildApiUrl(`api/widget/custom-cta/${n}`), {
|
|
31297
31299
|
method: "GET",
|
|
31298
31300
|
headers: {
|
|
31299
31301
|
Authorization: `Bearer ${j || $}`,
|
|
31300
31302
|
"Content-Type": "application/json"
|
|
31301
31303
|
},
|
|
31302
|
-
signal:
|
|
31304
|
+
signal: fe.signal
|
|
31303
31305
|
});
|
|
31304
|
-
if (clearTimeout(
|
|
31306
|
+
if (clearTimeout(be), console.log("[WidgetStoreV2] 🎨 CTA response status:", Ae.status, Ae.statusText), console.log("[WidgetStoreV2] 🎨 CTA response headers:", Object.fromEntries(Ae.headers.entries())), Ae.ok) {
|
|
31305
31307
|
const Te = await Ae.json(), Ue = Te.has_cta && Te.cta ? Te.cta : null;
|
|
31306
31308
|
de(Ue), console.log("[WidgetStoreV2] ✅ Custom CTA loaded:", Ue?.button_text ?? "none");
|
|
31307
31309
|
} else {
|
|
@@ -31313,43 +31315,43 @@ const MAX_RECONNECT_ATTEMPTS = 10, BASE_RECONNECT_DELAY = 1e3, initializeSocket
|
|
|
31313
31315
|
console.warn("[WidgetStoreV2] ⚠️ Could not read CTA error response body");
|
|
31314
31316
|
}
|
|
31315
31317
|
}
|
|
31316
|
-
} catch (
|
|
31317
|
-
|
|
31318
|
+
} catch (fe) {
|
|
31319
|
+
fe instanceof Error && fe.name === "AbortError" ? console.warn("[WidgetStoreV2] ⚠️ Custom CTA request timed out (non-blocking)") : console.warn("[WidgetStoreV2] ⚠️ Failed to load custom CTA (non-blocking):", fe);
|
|
31318
31320
|
}
|
|
31319
31321
|
}, [T, n, j, $]), wt = useCallback(async () => {
|
|
31320
31322
|
if (!n) return;
|
|
31321
|
-
let
|
|
31322
|
-
if (!
|
|
31323
|
+
let fe = j || $;
|
|
31324
|
+
if (!fe)
|
|
31323
31325
|
try {
|
|
31324
|
-
const
|
|
31326
|
+
const be = await fetch(buildApiUrl(`api/widget/bootstrap?agent_id=${n}`), {
|
|
31325
31327
|
method: "GET",
|
|
31326
31328
|
headers: { "Content-Type": "application/json" }
|
|
31327
31329
|
});
|
|
31328
|
-
if (!
|
|
31329
|
-
|
|
31330
|
+
if (!be.ok) return;
|
|
31331
|
+
fe = (await be.json()).access_token, at(fe);
|
|
31330
31332
|
} catch {
|
|
31331
31333
|
return;
|
|
31332
31334
|
}
|
|
31333
31335
|
try {
|
|
31334
|
-
const
|
|
31336
|
+
const be = await fetch(buildApiUrl(`api/widget/session/agent-config/${n}`), {
|
|
31335
31337
|
method: "GET",
|
|
31336
31338
|
headers: {
|
|
31337
|
-
Authorization: `Bearer ${
|
|
31339
|
+
Authorization: `Bearer ${fe}`,
|
|
31338
31340
|
"Content-Type": "application/json"
|
|
31339
31341
|
}
|
|
31340
31342
|
});
|
|
31341
|
-
if (!
|
|
31342
|
-
const Ae = await
|
|
31343
|
+
if (!be.ok) return;
|
|
31344
|
+
const Ae = await be.json();
|
|
31343
31345
|
oe(Ae), Ae.require_email === !1 && (Me(!1), Ce(!1)), console.log("[WidgetStoreV2] ✅ Agent config refreshed (real-time):", { require_email: Ae.require_email });
|
|
31344
|
-
} catch (
|
|
31345
|
-
console.warn("[WidgetStoreV2] ⚠️ Failed to refresh agent config:",
|
|
31346
|
+
} catch (be) {
|
|
31347
|
+
console.warn("[WidgetStoreV2] ⚠️ Failed to refresh agent config:", be);
|
|
31346
31348
|
}
|
|
31347
31349
|
}, [T, n, j, $]);
|
|
31348
31350
|
useEffect(() => {
|
|
31349
|
-
const
|
|
31350
|
-
(
|
|
31351
|
+
const fe = (be) => {
|
|
31352
|
+
(be?.detail ?? {}).agentId === n && (wt(), ct());
|
|
31351
31353
|
};
|
|
31352
|
-
return window.addEventListener("wysdym-agent-config-updated",
|
|
31354
|
+
return window.addEventListener("wysdym-agent-config-updated", fe), () => window.removeEventListener("wysdym-agent-config-updated", fe);
|
|
31353
31355
|
}, [n, wt, ct]);
|
|
31354
31356
|
const Tt = $ || j || "", _e = useVoiceSessionV2({
|
|
31355
31357
|
agent: te,
|
|
@@ -31377,19 +31379,19 @@ const MAX_RECONNECT_ATTEMPTS = 10, BASE_RECONNECT_DELAY = 1e3, initializeSocket
|
|
|
31377
31379
|
console.log("[WidgetStoreV2] ⏳ Starting direct session..."), U(!0);
|
|
31378
31380
|
try {
|
|
31379
31381
|
console.log("[WidgetStoreV2] 📡 Fetching bootstrap JWT...");
|
|
31380
|
-
const
|
|
31382
|
+
const fe = await fetch(buildApiUrl(`api/widget/bootstrap?agent_id=${n}`), {
|
|
31381
31383
|
method: "GET",
|
|
31382
31384
|
headers: { "Content-Type": "application/json" }
|
|
31383
31385
|
});
|
|
31384
|
-
if (!
|
|
31385
|
-
throw console.error("[WidgetStoreV2] ❌ Bootstrap response failed:",
|
|
31386
|
-
const { access_token:
|
|
31387
|
-
console.log("[WidgetStoreV2] ✅ Got bootstrap JWT"), at(
|
|
31386
|
+
if (!fe.ok)
|
|
31387
|
+
throw console.error("[WidgetStoreV2] ❌ Bootstrap response failed:", fe.status, fe.statusText), new Error("Failed to get bootstrap JWT");
|
|
31388
|
+
const { access_token: be } = await fe.json();
|
|
31389
|
+
console.log("[WidgetStoreV2] ✅ Got bootstrap JWT"), at(be);
|
|
31388
31390
|
try {
|
|
31389
31391
|
const $e = await fetch(buildApiUrl(`api/widget/session/agent-config/${n}`), {
|
|
31390
31392
|
method: "GET",
|
|
31391
31393
|
headers: {
|
|
31392
|
-
Authorization: `Bearer ${
|
|
31394
|
+
Authorization: `Bearer ${be}`,
|
|
31393
31395
|
"Content-Type": "application/json"
|
|
31394
31396
|
}
|
|
31395
31397
|
});
|
|
@@ -31405,7 +31407,7 @@ const MAX_RECONNECT_ATTEMPTS = 10, BASE_RECONNECT_DELAY = 1e3, initializeSocket
|
|
|
31405
31407
|
const Te = await fetch(buildApiUrl("api/widget/session/intake"), {
|
|
31406
31408
|
method: "POST",
|
|
31407
31409
|
headers: {
|
|
31408
|
-
Authorization: `Bearer ${
|
|
31410
|
+
Authorization: `Bearer ${be}`,
|
|
31409
31411
|
"Content-Type": "application/json"
|
|
31410
31412
|
},
|
|
31411
31413
|
body: JSON.stringify({
|
|
@@ -31420,12 +31422,12 @@ const MAX_RECONNECT_ATTEMPTS = 10, BASE_RECONNECT_DELAY = 1e3, initializeSocket
|
|
|
31420
31422
|
throw console.error("[WidgetStoreV2] ❌ Intake response failed:", Te.status, Te.statusText), new Error(`Failed to create session: ${Te.statusText}`);
|
|
31421
31423
|
const Ue = await Te.json(), { session_id: Ve, widget_jwt: je, has_email: Je } = Ue;
|
|
31422
31424
|
console.log("[WidgetStoreV2] ✅ Got session data:", { session_id: Ve, hasJwt: !!je, has_email: Je }), H(Ve), Q(je), Z(!0), K(!1), Re(!!Je), console.log("[WidgetStoreV2] 🔌 Initializing socket for session:", Ve), initializeSocket(Ve, je), console.log("[WidgetStoreV2] ✅ Direct session started:", Ve), console.log("[WidgetStoreV2] ⏳ Voice session will start automatically...");
|
|
31423
|
-
} catch (
|
|
31424
|
-
console.error("[WidgetStoreV2] ❌ Failed to start direct session:",
|
|
31425
|
+
} catch (fe) {
|
|
31426
|
+
console.error("[WidgetStoreV2] ❌ Failed to start direct session:", fe), W(`Failed to start session: ${fe instanceof Error ? fe.message : "Unknown error"}`), U(!1);
|
|
31425
31427
|
}
|
|
31426
|
-
}, [T, n, A, P]), It = useCallback(async (
|
|
31427
|
-
const
|
|
31428
|
-
if (console.log("[WidgetStoreV2] 🔍 Email submit attempt:", { email:
|
|
31428
|
+
}, [T, n, A, P]), It = useCallback(async (fe) => {
|
|
31429
|
+
const be = $ || j, Ae = z && $;
|
|
31430
|
+
if (console.log("[WidgetStoreV2] 🔍 Email submit attempt:", { email: fe, sessionId: z, hasActiveSession: Ae, hasJwt: !!be }), !be) {
|
|
31429
31431
|
console.error("[WidgetStoreV2] ❌ Missing JWT for email submission");
|
|
31430
31432
|
return;
|
|
31431
31433
|
}
|
|
@@ -31441,7 +31443,7 @@ const MAX_RECONNECT_ATTEMPTS = 10, BASE_RECONNECT_DELAY = 1e3, initializeSocket
|
|
|
31441
31443
|
"Content-Type": "application/json"
|
|
31442
31444
|
},
|
|
31443
31445
|
body: JSON.stringify({
|
|
31444
|
-
email:
|
|
31446
|
+
email: fe.trim(),
|
|
31445
31447
|
anonymous_user_id: Te || void 0
|
|
31446
31448
|
})
|
|
31447
31449
|
});
|
|
@@ -31459,7 +31461,7 @@ const MAX_RECONNECT_ATTEMPTS = 10, BASE_RECONNECT_DELAY = 1e3, initializeSocket
|
|
|
31459
31461
|
"Content-Type": "application/json"
|
|
31460
31462
|
},
|
|
31461
31463
|
body: JSON.stringify({
|
|
31462
|
-
email:
|
|
31464
|
+
email: fe.trim(),
|
|
31463
31465
|
role: "Widget User",
|
|
31464
31466
|
company: "Widget Demo",
|
|
31465
31467
|
needs: [],
|
|
@@ -31482,19 +31484,19 @@ const MAX_RECONNECT_ATTEMPTS = 10, BASE_RECONNECT_DELAY = 1e3, initializeSocket
|
|
|
31482
31484
|
} finally {
|
|
31483
31485
|
ne(!1);
|
|
31484
31486
|
}
|
|
31485
|
-
}, [z, j, $, n, T, P]), Mt = useCallback(async (
|
|
31486
|
-
se(
|
|
31487
|
+
}, [z, j, $, n, T, P]), Mt = useCallback(async (fe) => {
|
|
31488
|
+
se(fe), console.log(fe === "voice" ? "[WidgetStoreV2] 🎤 Voice mode selected" : "[WidgetStoreV2] 📝 Text mode selected");
|
|
31487
31489
|
}, []), Dt = useCallback(async () => {
|
|
31488
31490
|
if (!z || !(j || $))
|
|
31489
31491
|
return console.error("[WidgetStoreV2] ❌ Cannot reconnect: missing session data"), !1;
|
|
31490
31492
|
try {
|
|
31491
31493
|
if (console.log("[WidgetStoreV2] 🔄 Manual reconnection initiated by user..."), nt(!0), ie === "voice") {
|
|
31492
|
-
const
|
|
31493
|
-
return await _e.startVoiceSession(!0,
|
|
31494
|
+
const fe = ue.filter((Te) => Te.role === "user").slice(-1)[0]?.content || "", be = ue.filter((Te) => Te.role === "assistant").slice(-1)[0]?.content || "";
|
|
31495
|
+
return await _e.startVoiceSession(!0, fe, be) ? (console.log("[WidgetStoreV2] ✅ Voice session reconnected successfully"), qe(!1), !0) : (W("Failed to reconnect voice. Please try again."), !1);
|
|
31494
31496
|
} else
|
|
31495
31497
|
return await rt.startTextSession() ? (console.log("[WidgetStoreV2] ✅ Text session reconnected successfully"), !0) : (W("Failed to reconnect. Please try again."), !1);
|
|
31496
|
-
} catch (
|
|
31497
|
-
return console.error("[WidgetStoreV2] ❌ Manual reconnection failed:",
|
|
31498
|
+
} catch (fe) {
|
|
31499
|
+
return console.error("[WidgetStoreV2] ❌ Manual reconnection failed:", fe), W("Reconnection failed. Please try starting a new conversation."), !1;
|
|
31498
31500
|
} finally {
|
|
31499
31501
|
nt(!1);
|
|
31500
31502
|
}
|
|
@@ -31505,8 +31507,8 @@ const MAX_RECONNECT_ATTEMPTS = 10, BASE_RECONNECT_DELAY = 1e3, initializeSocket
|
|
|
31505
31507
|
}, []), _t = useCallback(() => {
|
|
31506
31508
|
Ze.current = Date.now(), tt.current = setInterval(() => {
|
|
31507
31509
|
if (Ze.current) {
|
|
31508
|
-
const
|
|
31509
|
-
pe(
|
|
31510
|
+
const fe = Math.floor((Date.now() - Ze.current) / 1e3);
|
|
31511
|
+
pe(fe);
|
|
31510
31512
|
}
|
|
31511
31513
|
}, 1e3);
|
|
31512
31514
|
}, []), Ct = useCallback(() => {
|
|
@@ -31533,12 +31535,12 @@ const MAX_RECONNECT_ATTEMPTS = 10, BASE_RECONNECT_DELAY = 1e3, initializeSocket
|
|
|
31533
31535
|
sessionId: z || "none",
|
|
31534
31536
|
hasJwt: !!(j || $)
|
|
31535
31537
|
}), Y && te && !_e.isConnected && !_e.isConnecting && !st.current) {
|
|
31536
|
-
const
|
|
31538
|
+
const fe = te && (z || !te.require_email), be = j || $;
|
|
31537
31539
|
console.log("[WidgetStoreV2] 🎤 Voice session init check:", {
|
|
31538
|
-
hasRequiredData:
|
|
31539
|
-
hasJwt:
|
|
31540
|
+
hasRequiredData: fe,
|
|
31541
|
+
hasJwt: be,
|
|
31540
31542
|
sessionId: z || "none"
|
|
31541
|
-
}),
|
|
31543
|
+
}), fe && be ? (st.current = !0, console.log("[WidgetStoreV2] 🎤 Starting voice session for", A, "mode..."), (async () => {
|
|
31542
31544
|
try {
|
|
31543
31545
|
if (console.log("[WidgetStoreV2] 🎤 About to call startVoiceSession..."), !z || !(j || $) || !te) {
|
|
31544
31546
|
console.error("[WidgetStoreV2] ❌ Missing data for voice session:", {
|
|
@@ -31568,18 +31570,18 @@ const MAX_RECONNECT_ATTEMPTS = 10, BASE_RECONNECT_DELAY = 1e3, initializeSocket
|
|
|
31568
31570
|
if (n) {
|
|
31569
31571
|
V(!0), W(null);
|
|
31570
31572
|
try {
|
|
31571
|
-
const
|
|
31573
|
+
const fe = await fetch(buildApiUrl(`api/widget/bootstrap?agent_id=${n}`), {
|
|
31572
31574
|
method: "GET",
|
|
31573
31575
|
headers: { "Content-Type": "application/json" }
|
|
31574
31576
|
});
|
|
31575
|
-
if (!
|
|
31577
|
+
if (!fe.ok)
|
|
31576
31578
|
throw new Error("Failed to get bootstrap JWT");
|
|
31577
|
-
const { access_token:
|
|
31578
|
-
at(
|
|
31579
|
+
const { access_token: be } = await fe.json();
|
|
31580
|
+
at(be);
|
|
31579
31581
|
const Ae = await fetch(buildApiUrl(`api/widget/session/agent-config/${n}`), {
|
|
31580
31582
|
method: "GET",
|
|
31581
31583
|
headers: {
|
|
31582
|
-
Authorization: `Bearer ${
|
|
31584
|
+
Authorization: `Bearer ${be}`,
|
|
31583
31585
|
"Content-Type": "application/json"
|
|
31584
31586
|
}
|
|
31585
31587
|
});
|
|
@@ -31587,8 +31589,8 @@ const MAX_RECONNECT_ATTEMPTS = 10, BASE_RECONNECT_DELAY = 1e3, initializeSocket
|
|
|
31587
31589
|
throw new Error(`Failed to load agent: ${Ae.statusText}`);
|
|
31588
31590
|
const Te = await Ae.json();
|
|
31589
31591
|
oe(Te), console.log("[WidgetStoreV2] ✅ Agent loaded:", Te.name);
|
|
31590
|
-
} catch (
|
|
31591
|
-
console.error("[WidgetStoreV2] ❌ Failed to load agent:",
|
|
31592
|
+
} catch (fe) {
|
|
31593
|
+
console.error("[WidgetStoreV2] ❌ Failed to load agent:", fe);
|
|
31592
31594
|
} finally {
|
|
31593
31595
|
V(!1);
|
|
31594
31596
|
}
|
|
@@ -31607,7 +31609,7 @@ const MAX_RECONNECT_ATTEMPTS = 10, BASE_RECONNECT_DELAY = 1e3, initializeSocket
|
|
|
31607
31609
|
try {
|
|
31608
31610
|
if (z && $)
|
|
31609
31611
|
try {
|
|
31610
|
-
const
|
|
31612
|
+
const fe = buildApiUrl(`api/widget/session/${z}/end`), be = await fetch(fe, {
|
|
31611
31613
|
method: "POST",
|
|
31612
31614
|
headers: {
|
|
31613
31615
|
Authorization: `Bearer ${$}`,
|
|
@@ -31615,20 +31617,20 @@ const MAX_RECONNECT_ATTEMPTS = 10, BASE_RECONNECT_DELAY = 1e3, initializeSocket
|
|
|
31615
31617
|
"Content-Type": "application/json"
|
|
31616
31618
|
}
|
|
31617
31619
|
});
|
|
31618
|
-
if (
|
|
31620
|
+
if (be.ok)
|
|
31619
31621
|
console.log("[WidgetStoreV2] ✅ Session ended on backend successfully");
|
|
31620
31622
|
else {
|
|
31621
|
-
const Ae = await
|
|
31622
|
-
console.warn("[WidgetStoreV2] ⚠️ Failed to end session on backend:",
|
|
31623
|
+
const Ae = await be.text();
|
|
31624
|
+
console.warn("[WidgetStoreV2] ⚠️ Failed to end session on backend:", be.status, Ae);
|
|
31623
31625
|
}
|
|
31624
|
-
} catch (
|
|
31625
|
-
console.error("[WidgetStoreV2] ⚠️ Error calling end endpoint:",
|
|
31626
|
+
} catch (fe) {
|
|
31627
|
+
console.error("[WidgetStoreV2] ⚠️ Error calling end endpoint:", fe);
|
|
31626
31628
|
}
|
|
31627
31629
|
else
|
|
31628
31630
|
console.warn("[WidgetStoreV2] ⚠️ No sessionId or widgetJwt available for backend session end");
|
|
31629
31631
|
_e.isConnected && await _e.endVoiceSession(), rt.isConnected && await rt.endTextSession(), Z(!1), ye(!0), st.current = !1, ht.current = !1, pt.current = !1, A === "inline" && (H(null), Q(null), at(null), he([]), W(null), U(!1)), A === "floating" && vt();
|
|
31630
|
-
} catch (
|
|
31631
|
-
console.error("[WidgetStoreV2] ❌ Error ending call:",
|
|
31632
|
+
} catch (fe) {
|
|
31633
|
+
console.error("[WidgetStoreV2] ❌ Error ending call:", fe), ut(`Failed to end call: ${fe instanceof Error ? fe.message : "Unknown error"}`);
|
|
31632
31634
|
} finally {
|
|
31633
31635
|
ft.current = !1;
|
|
31634
31636
|
}
|
|
@@ -31638,12 +31640,12 @@ const MAX_RECONNECT_ATTEMPTS = 10, BASE_RECONNECT_DELAY = 1e3, initializeSocket
|
|
|
31638
31640
|
if (_e.isConnected)
|
|
31639
31641
|
try {
|
|
31640
31642
|
await _e.endVoiceSession(), console.log("[WidgetStoreV2] Voice session ended due to pause");
|
|
31641
|
-
} catch (
|
|
31642
|
-
console.error("[WidgetStoreV2] Error ending voice session on pause:",
|
|
31643
|
+
} catch (fe) {
|
|
31644
|
+
console.error("[WidgetStoreV2] Error ending voice session on pause:", fe);
|
|
31643
31645
|
}
|
|
31644
31646
|
if (z && $)
|
|
31645
31647
|
try {
|
|
31646
|
-
const
|
|
31648
|
+
const fe = await fetch(buildApiUrl(`api/widget/session/${z}/pause`), {
|
|
31647
31649
|
method: "POST",
|
|
31648
31650
|
headers: {
|
|
31649
31651
|
Authorization: `Bearer ${$}`,
|
|
@@ -31651,12 +31653,12 @@ const MAX_RECONNECT_ATTEMPTS = 10, BASE_RECONNECT_DELAY = 1e3, initializeSocket
|
|
|
31651
31653
|
"Content-Type": "application/json"
|
|
31652
31654
|
}
|
|
31653
31655
|
});
|
|
31654
|
-
if (
|
|
31655
|
-
const
|
|
31656
|
-
console.log("[WidgetStoreV2] Session paused successfully:",
|
|
31657
|
-
} else
|
|
31658
|
-
} catch (
|
|
31659
|
-
console.error("[WidgetStoreV2] Error calling pause endpoint:",
|
|
31656
|
+
if (fe.ok) {
|
|
31657
|
+
const be = await fe.json();
|
|
31658
|
+
console.log("[WidgetStoreV2] Session paused successfully:", be), we("paused"), updateStatus("paused");
|
|
31659
|
+
} else fe.status === 401 || fe.status === 403 ? (console.warn("[WidgetStoreV2] JWT expired during pause, will need to re-bootstrap on resume"), we("paused")) : console.error("[WidgetStoreV2] Failed to pause session:", fe.statusText);
|
|
31660
|
+
} catch (fe) {
|
|
31661
|
+
console.error("[WidgetStoreV2] Error calling pause endpoint:", fe), we("paused");
|
|
31660
31662
|
}
|
|
31661
31663
|
if (P)
|
|
31662
31664
|
try {
|
|
@@ -31664,78 +31666,80 @@ const MAX_RECONNECT_ATTEMPTS = 10, BASE_RECONNECT_DELAY = 1e3, initializeSocket
|
|
|
31664
31666
|
reason: "user_action",
|
|
31665
31667
|
sessionId: z
|
|
31666
31668
|
});
|
|
31667
|
-
} catch (
|
|
31668
|
-
console.error("[WidgetStoreV2] Error tracking pause event:",
|
|
31669
|
+
} catch (fe) {
|
|
31670
|
+
console.error("[WidgetStoreV2] Error tracking pause event:", fe);
|
|
31669
31671
|
}
|
|
31670
|
-
} catch (
|
|
31671
|
-
console.error("[WidgetStoreV2] Error in pauseSession:",
|
|
31672
|
+
} catch (fe) {
|
|
31673
|
+
console.error("[WidgetStoreV2] Error in pauseSession:", fe);
|
|
31672
31674
|
}
|
|
31673
|
-
}, [z, $, T, _e, P]), Ft = useCallback(async (
|
|
31674
|
-
if (
|
|
31675
|
-
|
|
31676
|
-
|
|
31677
|
-
|
|
31678
|
-
|
|
31679
|
-
|
|
31680
|
-
|
|
31681
|
-
|
|
31682
|
-
|
|
31683
|
-
|
|
31684
|
-
|
|
31685
|
-
|
|
31686
|
-
|
|
31687
|
-
|
|
31688
|
-
|
|
31689
|
-
|
|
31690
|
-
|
|
31691
|
-
|
|
31692
|
-
|
|
31693
|
-
|
|
31694
|
-
else {
|
|
31695
|
-
console.log("[WidgetStoreV2] Same-tab CTA redirect - pausing session for continuity");
|
|
31696
|
-
try {
|
|
31697
|
-
await lt(), saveSession({
|
|
31698
|
-
sessionId: z,
|
|
31699
|
-
widgetJwt: $,
|
|
31700
|
-
agentId: n,
|
|
31701
|
-
companyToken: T,
|
|
31702
|
-
status: "paused",
|
|
31703
|
-
lastActivityAt: Date.now(),
|
|
31704
|
-
pageUrl: window.location.href,
|
|
31705
|
-
conversationState: {
|
|
31706
|
-
messageCount: ue.length,
|
|
31707
|
-
lastMessage: ue.length > 0 ? ue[ue.length - 1].content : void 0
|
|
31708
|
-
}
|
|
31709
|
-
}), sessionStorage.setItem(CTA_SAME_TAB_REDIRECT_KEY, "1");
|
|
31710
|
-
} catch (Te) {
|
|
31711
|
-
console.warn("[WidgetStoreV2] Failed to pause before same-tab redirect:", Te), saveSession({
|
|
31712
|
-
sessionId: z,
|
|
31713
|
-
widgetJwt: $,
|
|
31714
|
-
agentId: n,
|
|
31715
|
-
companyToken: T,
|
|
31716
|
-
status: "paused",
|
|
31717
|
-
lastActivityAt: Date.now(),
|
|
31718
|
-
pageUrl: window.location.href,
|
|
31719
|
-
conversationState: { messageCount: ue.length, lastMessage: void 0 }
|
|
31720
|
-
}), sessionStorage.setItem(CTA_SAME_TAB_REDIRECT_KEY, "1");
|
|
31721
|
-
}
|
|
31722
|
-
window.location.href = me.href;
|
|
31723
|
-
}
|
|
31724
|
-
} catch (Se) {
|
|
31725
|
-
console.error("[WidgetStoreV2] Error handling CTA click:", Se);
|
|
31726
|
-
const Ae = me.open_in_new_tab !== !1 ? "_blank" : "_self";
|
|
31727
|
-
window.open(me.href, Ae, me.open_in_new_tab !== !1 ? "noopener,noreferrer" : void 0);
|
|
31675
|
+
}, [z, $, T, _e, P]), Ft = useCallback(async (fe) => {
|
|
31676
|
+
if (!$ || !z) {
|
|
31677
|
+
console.warn("[WidgetStoreV2] Skipping CTA tracking: missing credentials", { sessionId: z, hasJwt: !!$ });
|
|
31678
|
+
return;
|
|
31679
|
+
}
|
|
31680
|
+
P && P.trackCTAClick(fe.id, fe.button_text);
|
|
31681
|
+
try {
|
|
31682
|
+
const be = await fetch(buildApiUrl("api/widget/custom-cta/click"), {
|
|
31683
|
+
method: "POST",
|
|
31684
|
+
headers: {
|
|
31685
|
+
Authorization: `Bearer ${$}`,
|
|
31686
|
+
"Content-Type": "application/json"
|
|
31687
|
+
},
|
|
31688
|
+
body: JSON.stringify({
|
|
31689
|
+
custom_cta_id: fe.id,
|
|
31690
|
+
widget_session_id: z
|
|
31691
|
+
})
|
|
31692
|
+
});
|
|
31693
|
+
if (be.ok) {
|
|
31694
|
+
const Te = await be.json();
|
|
31695
|
+
sessionStorage.setItem("lastCtaClickId", Te.id);
|
|
31728
31696
|
}
|
|
31697
|
+
if (fe.open_in_new_tab !== !1)
|
|
31698
|
+
window.open(fe.href, "_blank", "noopener,noreferrer");
|
|
31699
|
+
else {
|
|
31700
|
+
console.log("[WidgetStoreV2] Same-tab CTA redirect - pausing session for continuity");
|
|
31701
|
+
try {
|
|
31702
|
+
await lt(), saveSession({
|
|
31703
|
+
sessionId: z,
|
|
31704
|
+
widgetJwt: $,
|
|
31705
|
+
agentId: n,
|
|
31706
|
+
companyToken: T,
|
|
31707
|
+
status: "paused",
|
|
31708
|
+
lastActivityAt: Date.now(),
|
|
31709
|
+
pageUrl: window.location.href,
|
|
31710
|
+
conversationState: {
|
|
31711
|
+
messageCount: ue.length,
|
|
31712
|
+
lastMessage: ue.length > 0 ? ue[ue.length - 1].content : void 0
|
|
31713
|
+
}
|
|
31714
|
+
}), sessionStorage.setItem(CTA_SAME_TAB_REDIRECT_KEY, "1");
|
|
31715
|
+
} catch (Te) {
|
|
31716
|
+
console.warn("[WidgetStoreV2] Failed to pause before same-tab redirect:", Te), saveSession({
|
|
31717
|
+
sessionId: z,
|
|
31718
|
+
widgetJwt: $,
|
|
31719
|
+
agentId: n,
|
|
31720
|
+
companyToken: T,
|
|
31721
|
+
status: "paused",
|
|
31722
|
+
lastActivityAt: Date.now(),
|
|
31723
|
+
pageUrl: window.location.href,
|
|
31724
|
+
conversationState: { messageCount: ue.length, lastMessage: void 0 }
|
|
31725
|
+
}), sessionStorage.setItem(CTA_SAME_TAB_REDIRECT_KEY, "1");
|
|
31726
|
+
}
|
|
31727
|
+
window.location.href = fe.href;
|
|
31728
|
+
}
|
|
31729
|
+
} catch (be) {
|
|
31730
|
+
console.error("[WidgetStoreV2] Error handling CTA click:", be);
|
|
31731
|
+
const Ae = fe.open_in_new_tab !== !1 ? "_blank" : "_self";
|
|
31732
|
+
window.open(fe.href, Ae, fe.open_in_new_tab !== !1 ? "noopener,noreferrer" : void 0);
|
|
31729
31733
|
}
|
|
31730
31734
|
}, [$, z, n, T, P, lt, ue]);
|
|
31731
31735
|
useEffect(() => {
|
|
31732
31736
|
_e.setAgentSpeaking && _e.setAgentSpeaking(_e.isAgentSpeaking);
|
|
31733
31737
|
}, [_e.isAgentSpeaking, _e.setAgentSpeaking]);
|
|
31734
|
-
const Nt = useCallback((
|
|
31735
|
-
Q(
|
|
31736
|
-
}, []), bt = useCallback(async (
|
|
31738
|
+
const Nt = useCallback((fe) => {
|
|
31739
|
+
Q(fe);
|
|
31740
|
+
}, []), bt = useCallback(async (fe, be) => {
|
|
31737
31741
|
console.log("[WidgetStoreV2] Resuming session...");
|
|
31738
|
-
const Ae =
|
|
31742
|
+
const Ae = fe ?? z, Te = be ?? $;
|
|
31739
31743
|
if (!Ae || !Te)
|
|
31740
31744
|
return console.error("[WidgetStoreV2] Cannot resume: missing session ID or JWT"), !1;
|
|
31741
31745
|
try {
|
|
@@ -31836,7 +31840,7 @@ const MAX_RECONNECT_ATTEMPTS = 10, BASE_RECONNECT_DELAY = 1e3, initializeSocket
|
|
|
31836
31840
|
try {
|
|
31837
31841
|
if (z && $)
|
|
31838
31842
|
try {
|
|
31839
|
-
const
|
|
31843
|
+
const fe = await fetch(buildApiUrl(`api/widget/session/${z}/end`), {
|
|
31840
31844
|
method: "POST",
|
|
31841
31845
|
headers: {
|
|
31842
31846
|
Authorization: `Bearer ${$}`,
|
|
@@ -31844,80 +31848,80 @@ const MAX_RECONNECT_ATTEMPTS = 10, BASE_RECONNECT_DELAY = 1e3, initializeSocket
|
|
|
31844
31848
|
"Content-Type": "application/json"
|
|
31845
31849
|
}
|
|
31846
31850
|
});
|
|
31847
|
-
|
|
31848
|
-
} catch (
|
|
31849
|
-
console.warn("[WidgetStoreV2] Error calling end endpoint:",
|
|
31851
|
+
fe.ok ? console.log("[WidgetStoreV2] Session ended on server") : console.warn("[WidgetStoreV2] Failed to end session on server:", fe.statusText);
|
|
31852
|
+
} catch (fe) {
|
|
31853
|
+
console.warn("[WidgetStoreV2] Error calling end endpoint:", fe);
|
|
31850
31854
|
}
|
|
31851
31855
|
await yt(), clearSession(), we("active"), De(!1), Re(!1), Me(!1), console.log("[WidgetStoreV2] Session ended and persistence cleared");
|
|
31852
|
-
} catch (
|
|
31853
|
-
console.error("[WidgetStoreV2] Error ending session:",
|
|
31856
|
+
} catch (fe) {
|
|
31857
|
+
console.error("[WidgetStoreV2] Error ending session:", fe);
|
|
31854
31858
|
}
|
|
31855
31859
|
}, [yt, z, $, T]), Et = useCallback(async () => {
|
|
31856
31860
|
console.log("[WidgetStoreV2] Tab hidden - pausing session"), await lt();
|
|
31857
31861
|
}, [lt]), xt = useCallback(async () => {
|
|
31858
31862
|
console.log("[WidgetStoreV2] Tab visible - checking for resumable session");
|
|
31859
31863
|
try {
|
|
31860
|
-
const
|
|
31861
|
-
if (
|
|
31864
|
+
const fe = sessionStorage.getItem("lastCtaClickId"), be = hasValidSession() ? loadSession() : null, Ae = be?.widgetJwt || $;
|
|
31865
|
+
if (fe && Ae && fe !== "agent-redirect")
|
|
31862
31866
|
try {
|
|
31863
|
-
await fetch(buildApiUrl(`api/widget/custom-cta/return/${
|
|
31867
|
+
await fetch(buildApiUrl(`api/widget/custom-cta/return/${fe}`), {
|
|
31864
31868
|
method: "POST",
|
|
31865
31869
|
headers: { Authorization: `Bearer ${Ae}` }
|
|
31866
31870
|
});
|
|
31867
31871
|
} catch (Te) {
|
|
31868
31872
|
console.error("[WidgetStoreV2] Error tracking CTA return:", Te);
|
|
31869
31873
|
}
|
|
31870
|
-
if (
|
|
31871
|
-
if (
|
|
31874
|
+
if (fe && sessionStorage.removeItem("lastCtaClickId"), hasValidSession() && be && be && be.status === "paused") {
|
|
31875
|
+
if (fe) {
|
|
31872
31876
|
console.log("[WidgetStoreV2] Returning from CTA - auto-resuming session");
|
|
31873
31877
|
try {
|
|
31874
|
-
await bt(
|
|
31878
|
+
await bt(be.sessionId, be.widgetJwt);
|
|
31875
31879
|
} catch (Te) {
|
|
31876
|
-
console.error("[WidgetStoreV2] Auto-resume failed:", Te), H(
|
|
31880
|
+
console.error("[WidgetStoreV2] Auto-resume failed:", Te), H(be.sessionId), Q(be.widgetJwt), we("resumable"), De(!0);
|
|
31877
31881
|
}
|
|
31878
31882
|
return;
|
|
31879
31883
|
}
|
|
31880
|
-
if (console.log("[WidgetStoreV2] Found paused session, marking as resumable"), H(
|
|
31884
|
+
if (console.log("[WidgetStoreV2] Found paused session, marking as resumable"), H(be.sessionId), Q(be.widgetJwt), we("resumable"), De(!0), be.conversationState && console.log("[WidgetStoreV2] Restoring conversation state:", be.conversationState), P)
|
|
31881
31885
|
try {
|
|
31882
31886
|
P.trackEvent("session_resumable", "Session Resumable", {
|
|
31883
|
-
sessionId:
|
|
31884
|
-
messageCount:
|
|
31887
|
+
sessionId: be.sessionId,
|
|
31888
|
+
messageCount: be.conversationState?.messageCount || 0
|
|
31885
31889
|
});
|
|
31886
31890
|
} catch (Te) {
|
|
31887
31891
|
console.error("[WidgetStoreV2] Error tracking resumable event:", Te);
|
|
31888
31892
|
}
|
|
31889
31893
|
}
|
|
31890
|
-
} catch (
|
|
31891
|
-
console.error("[WidgetStoreV2] Error in handleTabVisible:",
|
|
31894
|
+
} catch (fe) {
|
|
31895
|
+
console.error("[WidgetStoreV2] Error in handleTabVisible:", fe);
|
|
31892
31896
|
}
|
|
31893
31897
|
}, [z, $, P, bt]), Pt = useCallback(async () => {
|
|
31894
31898
|
if (!sessionStorage.getItem(CTA_SAME_TAB_REDIRECT_KEY)) return;
|
|
31895
31899
|
sessionStorage.removeItem(CTA_SAME_TAB_REDIRECT_KEY);
|
|
31896
|
-
const
|
|
31897
|
-
!
|
|
31900
|
+
const be = hasValidSession() ? loadSession() : null;
|
|
31901
|
+
!be || be.status !== "paused" || be.agentId !== n || be.companyToken !== T || (console.log("[WidgetStoreV2] Same-tab CTA redirect detected - restoring session for resume"), H(be.sessionId), Q(be.widgetJwt), we("resumable"), De(!0));
|
|
31898
31902
|
}, [n, T]);
|
|
31899
31903
|
useEffect(() => {
|
|
31900
31904
|
Pt();
|
|
31901
31905
|
}, [Pt]), useEffect(() => {
|
|
31902
|
-
const
|
|
31903
|
-
const
|
|
31904
|
-
if (
|
|
31906
|
+
const fe = () => {
|
|
31907
|
+
const be = Date.now();
|
|
31908
|
+
if (be - kt.current < At) {
|
|
31905
31909
|
console.log("[WidgetStoreV2] Visibility change debounced");
|
|
31906
31910
|
return;
|
|
31907
31911
|
}
|
|
31908
|
-
kt.current =
|
|
31912
|
+
kt.current = be, ot.current && clearTimeout(ot.current), ot.current = setTimeout(() => {
|
|
31909
31913
|
document.visibilityState === "hidden" ? Et() : document.visibilityState === "visible" && xt();
|
|
31910
31914
|
}, 0);
|
|
31911
31915
|
};
|
|
31912
|
-
return document.addEventListener("visibilitychange",
|
|
31913
|
-
document.removeEventListener("visibilitychange",
|
|
31916
|
+
return document.addEventListener("visibilitychange", fe), () => {
|
|
31917
|
+
document.removeEventListener("visibilitychange", fe), ot.current && clearTimeout(ot.current);
|
|
31914
31918
|
};
|
|
31915
31919
|
}, [Et, xt]), useEffect(() => {
|
|
31916
|
-
const
|
|
31920
|
+
const fe = () => {
|
|
31917
31921
|
if (!(!z || !$) && !sessionStorage.getItem(CTA_SAME_TAB_REDIRECT_KEY))
|
|
31918
31922
|
try {
|
|
31919
|
-
const
|
|
31920
|
-
fetch(
|
|
31923
|
+
const be = buildApiUrl(`api/widget/session/${z}/end`), Ae = JSON.stringify({ reason: "beforeunload" });
|
|
31924
|
+
fetch(be, {
|
|
31921
31925
|
method: "POST",
|
|
31922
31926
|
headers: {
|
|
31923
31927
|
Authorization: `Bearer ${$}`,
|
|
@@ -31929,11 +31933,11 @@ const MAX_RECONNECT_ATTEMPTS = 10, BASE_RECONNECT_DELAY = 1e3, initializeSocket
|
|
|
31929
31933
|
}).catch((Te) => {
|
|
31930
31934
|
console.warn("[WidgetStoreV2] End session keepalive failed:", Te);
|
|
31931
31935
|
});
|
|
31932
|
-
} catch (
|
|
31933
|
-
console.warn("[WidgetStoreV2] Failed to send endSession beacon on unload:",
|
|
31936
|
+
} catch (be) {
|
|
31937
|
+
console.warn("[WidgetStoreV2] Failed to send endSession beacon on unload:", be);
|
|
31934
31938
|
}
|
|
31935
31939
|
};
|
|
31936
|
-
return window.addEventListener("beforeunload",
|
|
31940
|
+
return window.addEventListener("beforeunload", fe), () => window.removeEventListener("beforeunload", fe);
|
|
31937
31941
|
}, [z, $, T]), useEffect(() => {
|
|
31938
31942
|
z && $ && xe === "active" && saveSession({
|
|
31939
31943
|
sessionId: z,
|
|
@@ -31950,9 +31954,9 @@ const MAX_RECONNECT_ATTEMPTS = 10, BASE_RECONNECT_DELAY = 1e3, initializeSocket
|
|
|
31950
31954
|
});
|
|
31951
31955
|
}, [z, $, n, T, xe, ue]), useEffect(() => {
|
|
31952
31956
|
if (!z || !$) return;
|
|
31953
|
-
const
|
|
31954
|
-
if (!
|
|
31955
|
-
const
|
|
31957
|
+
const fe = getSocket();
|
|
31958
|
+
if (!fe) return;
|
|
31959
|
+
const be = (Ve) => {
|
|
31956
31960
|
console.log("[WidgetStoreV2] Tool call event:", Ve), Fe("calling_tool"), Ne(Ve.tool_name), setTimeout(() => {
|
|
31957
31961
|
Fe("idle"), Ne(void 0);
|
|
31958
31962
|
}, 5e3);
|
|
@@ -31970,8 +31974,8 @@ const MAX_RECONNECT_ATTEMPTS = 10, BASE_RECONNECT_DELAY = 1e3, initializeSocket
|
|
|
31970
31974
|
}
|
|
31971
31975
|
}
|
|
31972
31976
|
};
|
|
31973
|
-
return
|
|
31974
|
-
|
|
31977
|
+
return fe.on("tool_call", be), fe.on("agent_speaking", Ae), fe.on("agent_idle", Te), fe.on("agent_message", Ue), () => {
|
|
31978
|
+
fe.off("tool_call", be), fe.off("agent_speaking", Ae), fe.off("agent_idle", Te), fe.off("agent_message", Ue);
|
|
31975
31979
|
};
|
|
31976
31980
|
}, [z, $, _e, se]), useEffect(() => {
|
|
31977
31981
|
_e.isAgentSpeaking ? (Fe("speaking"), Ne(void 0)) : _e.isListening && (Fe("idle"), Ne(void 0));
|
|
@@ -31997,19 +32001,32 @@ const MAX_RECONNECT_ATTEMPTS = 10, BASE_RECONNECT_DELAY = 1e3, initializeSocket
|
|
|
31997
32001
|
Be,
|
|
31998
32002
|
ge
|
|
31999
32003
|
]);
|
|
32000
|
-
const Bt = useCallback(async (
|
|
32001
|
-
if (
|
|
32004
|
+
const Bt = useCallback(async (fe) => {
|
|
32005
|
+
if (fe.trim() && (mt({ role: "user", content: fe, source: "text" }), z && $ ? fetch(buildApiUrl("api/widget/session/log-message"), {
|
|
32006
|
+
method: "POST",
|
|
32007
|
+
headers: {
|
|
32008
|
+
Authorization: `Bearer ${$}`,
|
|
32009
|
+
"Content-Type": "application/json"
|
|
32010
|
+
},
|
|
32011
|
+
body: JSON.stringify({
|
|
32012
|
+
session_id: z,
|
|
32013
|
+
role: "user",
|
|
32014
|
+
message: fe.trim()
|
|
32015
|
+
})
|
|
32016
|
+
}).then((be) => {
|
|
32017
|
+
be.ok || console.error("[WidgetStoreV2] log-message failed:", be.status, be.statusText);
|
|
32018
|
+
}).catch((be) => console.error("[WidgetStoreV2] Failed to log text message (network):", be)) : console.warn("[WidgetStoreV2] Skipping log-message: missing sessionId or widgetJwt", { sessionId: z, hasJwt: !!$ }), _e.isConnected && _e.conversation))
|
|
32002
32019
|
try {
|
|
32003
|
-
await _e.conversation.sendUserMessage(
|
|
32004
|
-
} catch (
|
|
32005
|
-
console.error("[WidgetStoreV2] Failed to send text via voice session:",
|
|
32020
|
+
await _e.conversation.sendUserMessage(fe);
|
|
32021
|
+
} catch (be) {
|
|
32022
|
+
console.error("[WidgetStoreV2] Failed to send text via voice session:", be);
|
|
32006
32023
|
}
|
|
32007
|
-
}, [_e.isConnected, _e.conversation, mt]), Ut = useCallback(() => {
|
|
32024
|
+
}, [_e.isConnected, _e.conversation, mt, z, $]), Ut = useCallback(() => {
|
|
32008
32025
|
if (!(!_e.isConnected || !_e.conversation))
|
|
32009
32026
|
try {
|
|
32010
32027
|
_e.conversation.sendUserActivity?.();
|
|
32011
|
-
} catch (
|
|
32012
|
-
console.warn("[WidgetStoreV2] sendUserActivity failed:",
|
|
32028
|
+
} catch (fe) {
|
|
32029
|
+
console.warn("[WidgetStoreV2] sendUserActivity failed:", fe);
|
|
32013
32030
|
}
|
|
32014
32031
|
}, [_e.isConnected, _e.conversation]);
|
|
32015
32032
|
return {
|
|
@@ -32027,7 +32044,7 @@ const MAX_RECONNECT_ATTEMPTS = 10, BASE_RECONNECT_DELAY = 1e3, initializeSocket
|
|
|
32027
32044
|
callDuration: le,
|
|
32028
32045
|
messages: ue,
|
|
32029
32046
|
textInput: ve,
|
|
32030
|
-
isSubmittingEmail:
|
|
32047
|
+
isSubmittingEmail: me,
|
|
32031
32048
|
emailError: ce,
|
|
32032
32049
|
agent: te,
|
|
32033
32050
|
customCta: ae,
|
|
@@ -32035,7 +32052,7 @@ const MAX_RECONNECT_ATTEMPTS = 10, BASE_RECONNECT_DELAY = 1e3, initializeSocket
|
|
|
32035
32052
|
emailSubmitted: Ee,
|
|
32036
32053
|
sessionHasEmail: Ie,
|
|
32037
32054
|
showEmailFormRequestedByAgent: Le,
|
|
32038
|
-
forceDisplayEmailForm:
|
|
32055
|
+
forceDisplayEmailForm: Se,
|
|
32039
32056
|
// Session persistence state
|
|
32040
32057
|
sessionStatus: xe,
|
|
32041
32058
|
canResumeSession: Oe,
|
|
@@ -32081,7 +32098,7 @@ const MAX_RECONNECT_ATTEMPTS = 10, BASE_RECONNECT_DELAY = 1e3, initializeSocket
|
|
|
32081
32098
|
endTextSession: rt.endTextSession,
|
|
32082
32099
|
handleTextSubmit: rt.handleTextSubmit,
|
|
32083
32100
|
// Setters
|
|
32084
|
-
setTextInput:
|
|
32101
|
+
setTextInput: ke,
|
|
32085
32102
|
setError: ut,
|
|
32086
32103
|
// Clear error
|
|
32087
32104
|
clearError: Rt,
|
|
@@ -33952,17 +33969,17 @@ const ShowMePanel = ({
|
|
|
33952
33969
|
}) => {
|
|
33953
33970
|
const $ = React.useRef(null);
|
|
33954
33971
|
if (!$.current) {
|
|
33955
|
-
const
|
|
33972
|
+
const Se = B || getCurrentApiUrl();
|
|
33956
33973
|
$.current = new AnalyticsService({
|
|
33957
|
-
baseUrl:
|
|
33974
|
+
baseUrl: Se,
|
|
33958
33975
|
companyToken: T,
|
|
33959
33976
|
agentId: n,
|
|
33960
33977
|
sessionId: void 0
|
|
33961
33978
|
});
|
|
33962
33979
|
}
|
|
33963
|
-
const Q = $.current, j = useWidgetStore({ companyToken: T, agentId: n, analyticsService: Q, mode: U, initialExpanded: N }), J = React.useRef(!1), G = j.agent?.widget_trigger_text ?? R, K = j.agent?.widget_trigger_button_text ?? L, Y = j.agent?.widget_trigger_button_icon ?? O, Z = (
|
|
33980
|
+
const Q = $.current, j = useWidgetStore({ companyToken: T, agentId: n, analyticsService: Q, mode: U, initialExpanded: N }), J = React.useRef(!1), G = j.agent?.widget_trigger_text ?? R, K = j.agent?.widget_trigger_button_text ?? L, Y = j.agent?.widget_trigger_button_icon ?? O, Z = (Se) => /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(Se.trim()), ie = (j.showEmailFormRequestedByAgent || !!j.agent?.require_email) && !j.emailSubmitted && (!j.sessionHasEmail || j.forceDisplayEmailForm || !!j.agent?.force_display_email), [se, le] = useState(null), [pe, ue] = useState(!1);
|
|
33964
33981
|
useEffect(() => {
|
|
33965
|
-
const
|
|
33982
|
+
const Se = (xe) => {
|
|
33966
33983
|
const Oe = xe.detail?.asset;
|
|
33967
33984
|
if (!Oe) return;
|
|
33968
33985
|
const De = (Ne) => {
|
|
@@ -33975,25 +33992,25 @@ const ShowMePanel = ({
|
|
|
33975
33992
|
}, Ce = () => {
|
|
33976
33993
|
le(null), ue(!1);
|
|
33977
33994
|
};
|
|
33978
|
-
return window.addEventListener("show_asset",
|
|
33979
|
-
window.removeEventListener("show_asset",
|
|
33995
|
+
return window.addEventListener("show_asset", Se), window.addEventListener("close_asset", Ce), () => {
|
|
33996
|
+
window.removeEventListener("show_asset", Se), window.removeEventListener("close_asset", Ce);
|
|
33980
33997
|
};
|
|
33981
33998
|
}, []);
|
|
33982
33999
|
const he = useRef([]);
|
|
33983
34000
|
useEffect(() => {
|
|
33984
|
-
const
|
|
34001
|
+
const Se = he.current, Ce = j.messages.map((xe, we) => ({
|
|
33985
34002
|
role: xe.role === "assistant" ? "agent" : "user",
|
|
33986
34003
|
text: xe.content,
|
|
33987
34004
|
source: xe.source || "voice",
|
|
33988
|
-
timestamp: we <
|
|
34005
|
+
timestamp: we < Se.length ? Se[we] : Date.now(),
|
|
33989
34006
|
isFinal: !0
|
|
33990
34007
|
}));
|
|
33991
34008
|
he.current = Ce.map((xe) => xe.timestamp), useConversationStore.getState().setMessages(Ce);
|
|
33992
34009
|
}, [j.messages]), useEffect(() => {
|
|
33993
|
-
const
|
|
33994
|
-
|
|
34010
|
+
const Se = useVoiceStore.getState();
|
|
34011
|
+
Se.setConnectionState(j.connectionState);
|
|
33995
34012
|
let Ce;
|
|
33996
|
-
j.aiStatus === "calling_tool" ? Ce = "calling_tool" : j.aiStatus === "thinking" ? Ce = "thinking" : j.isAgentSpeaking ? Ce = "speaking" : j.isListening ? Ce = "listening" : Ce = "idle",
|
|
34013
|
+
j.aiStatus === "calling_tool" ? Ce = "calling_tool" : j.aiStatus === "thinking" ? Ce = "thinking" : j.isAgentSpeaking ? Ce = "speaking" : j.isListening ? Ce = "listening" : Ce = "idle", Se.setAgentStatus(Ce), j.audioData && Se.setAudioData(j.audioData);
|
|
33997
34014
|
}, [j.connectionState, j.aiStatus, j.isAgentSpeaking, j.isListening, j.audioData]), useEffect(() => {
|
|
33998
34015
|
j.agent && useAgentConfigStore.getState().setConfig({
|
|
33999
34016
|
id: j.agent.id,
|
|
@@ -34021,11 +34038,11 @@ const ShowMePanel = ({
|
|
|
34021
34038
|
J.current = !0, Q.trackWidgetOpen();
|
|
34022
34039
|
else if (J.current) {
|
|
34023
34040
|
Q.trackWidgetClose();
|
|
34024
|
-
const
|
|
34025
|
-
j.sessionId &&
|
|
34041
|
+
const Se = j.widgetJwt || j.bootstrapJwt;
|
|
34042
|
+
j.sessionId && Se && fetch(`${getCurrentApiUrl()}/api/widget/session/${j.sessionId}/end`, {
|
|
34026
34043
|
method: "POST",
|
|
34027
34044
|
headers: {
|
|
34028
|
-
Authorization: `Bearer ${
|
|
34045
|
+
Authorization: `Bearer ${Se}`,
|
|
34029
34046
|
"Content-Type": "application/json"
|
|
34030
34047
|
},
|
|
34031
34048
|
keepalive: !0
|
|
@@ -34039,16 +34056,16 @@ const ShowMePanel = ({
|
|
|
34039
34056
|
}, [j.isLoading, j.agent]), useEffect(() => {
|
|
34040
34057
|
j.error && Q.trackError("Widget Error", "WIDGET_ERROR", j.error);
|
|
34041
34058
|
}, [j.error]), useEffect(() => {
|
|
34042
|
-
const
|
|
34059
|
+
const Se = () => {
|
|
34043
34060
|
Q?.trackPageVisibilityChange(document.visibilityState === "visible");
|
|
34044
34061
|
};
|
|
34045
|
-
return document.addEventListener("visibilitychange",
|
|
34062
|
+
return document.addEventListener("visibilitychange", Se), () => document.removeEventListener("visibilitychange", Se);
|
|
34046
34063
|
}, []), useEffect(() => {
|
|
34047
34064
|
N && !j.isExpanded && j.expandWidget();
|
|
34048
34065
|
}, []), useEffect(() => {
|
|
34049
34066
|
j.isExpanded !== N && V && V(j.isExpanded);
|
|
34050
34067
|
}, [j.isExpanded, N, V]), useEffect(() => {
|
|
34051
|
-
const
|
|
34068
|
+
const Se = (Ce) => {
|
|
34052
34069
|
const xe = Ce.detail;
|
|
34053
34070
|
xe.session_id === j.sessionId && xe.message && setTimeout(() => {
|
|
34054
34071
|
j.addMessage({
|
|
@@ -34057,11 +34074,11 @@ const ShowMePanel = ({
|
|
|
34057
34074
|
});
|
|
34058
34075
|
}, 0);
|
|
34059
34076
|
};
|
|
34060
|
-
return window.addEventListener("agent_response",
|
|
34077
|
+
return window.addEventListener("agent_response", Se), () => window.removeEventListener("agent_response", Se);
|
|
34061
34078
|
}, [j.sessionId, j.addMessage]), useEffect(() => {
|
|
34062
|
-
let
|
|
34079
|
+
let Se;
|
|
34063
34080
|
const Ce = () => {
|
|
34064
|
-
|
|
34081
|
+
Se = setInterval(async () => {
|
|
34065
34082
|
if (j.bootstrapJwt && j.sessionId)
|
|
34066
34083
|
try {
|
|
34067
34084
|
const xe = await fetch(`${getCurrentApiUrl()}/api/widget/session/refresh`, {
|
|
@@ -34082,12 +34099,12 @@ const ShowMePanel = ({
|
|
|
34082
34099
|
}, 24e4);
|
|
34083
34100
|
};
|
|
34084
34101
|
return j.bootstrapJwt && j.sessionId && Ce(), () => {
|
|
34085
|
-
|
|
34102
|
+
Se && clearInterval(Se);
|
|
34086
34103
|
};
|
|
34087
34104
|
}, [j.bootstrapJwt, j.sessionId]);
|
|
34088
34105
|
const ve = useCallback(
|
|
34089
|
-
(
|
|
34090
|
-
const Ce =
|
|
34106
|
+
(Se) => {
|
|
34107
|
+
const Ce = Se.trim();
|
|
34091
34108
|
if (!Ce) return;
|
|
34092
34109
|
if ((j.showEmailFormRequestedByAgent || !!j.agent?.require_email) && !j.emailSubmitted && (!j.sessionHasEmail || j.forceDisplayEmailForm || !!j.agent?.force_display_email) && Z(Ce)) {
|
|
34093
34110
|
j.handleEmailSubmit(Ce);
|
|
@@ -34096,17 +34113,17 @@ const ShowMePanel = ({
|
|
|
34096
34113
|
j.sendTextDuringVoice(Ce);
|
|
34097
34114
|
},
|
|
34098
34115
|
[j.sendTextDuringVoice, j.handleEmailSubmit, j.showEmailFormRequestedByAgent, j.agent?.require_email, j.emailSubmitted, j.sessionHasEmail, j.forceDisplayEmailForm, j.agent?.force_display_email]
|
|
34099
|
-
),
|
|
34100
|
-
const
|
|
34101
|
-
|
|
34102
|
-
}, [j.muteMicrophone]),
|
|
34103
|
-
const
|
|
34104
|
-
|
|
34105
|
-
}, [j.muteAgentAudio]), ne = useCallback((
|
|
34106
|
-
j.sendTextDuringVoice(
|
|
34116
|
+
), ke = useCallback(() => {
|
|
34117
|
+
const Se = useVoiceStore.getState(), Ce = !Se.isMicMuted;
|
|
34118
|
+
Se.toggleMic(), j.muteMicrophone(Ce);
|
|
34119
|
+
}, [j.muteMicrophone]), me = useCallback(() => {
|
|
34120
|
+
const Se = useVoiceStore.getState(), Ce = !Se.isAgentMuted;
|
|
34121
|
+
Se.toggleAgentAudio(), j.muteAgentAudio(Ce);
|
|
34122
|
+
}, [j.muteAgentAudio]), ne = useCallback((Se) => {
|
|
34123
|
+
console.log("[ChatWidget] handleNudgeSelect:", Se), j.sendTextDuringVoice(Se);
|
|
34107
34124
|
}, [j.sendTextDuringVoice]), ce = React.useRef(!1), ee = React.useRef(null), te = React.useRef(null);
|
|
34108
34125
|
te.current = j.sessionId && j.widgetJwt ? { sessionId: j.sessionId, widgetJwt: j.widgetJwt } : null;
|
|
34109
|
-
const oe = React.useCallback((
|
|
34126
|
+
const oe = React.useCallback((Se) => {
|
|
34110
34127
|
const Ce = te.current;
|
|
34111
34128
|
Ce && fetch(buildApiUrl(`api/widget/session/${Ce.sessionId}/typing`), {
|
|
34112
34129
|
method: "POST",
|
|
@@ -34114,13 +34131,13 @@ const ShowMePanel = ({
|
|
|
34114
34131
|
Authorization: `Bearer ${Ce.widgetJwt}`,
|
|
34115
34132
|
"Content-Type": "application/json"
|
|
34116
34133
|
},
|
|
34117
|
-
body: JSON.stringify({ is_typing:
|
|
34134
|
+
body: JSON.stringify({ is_typing: Se })
|
|
34118
34135
|
}).catch(() => {
|
|
34119
34136
|
});
|
|
34120
34137
|
}, []), ae = useCallback(
|
|
34121
|
-
(
|
|
34138
|
+
(Se) => {
|
|
34122
34139
|
const Ce = useVoiceStore.getState();
|
|
34123
|
-
|
|
34140
|
+
Se && !Ce.isAgentMuted ? (ce.current = !1, Ce.toggleAgentAudio(), j.muteAgentAudio(!0)) : !Se && !ce.current && Ce.isAgentMuted && (Ce.toggleAgentAudio(), j.muteAgentAudio(!1)), Se && j.sendUserActivity && j.sendUserActivity(), oe(Se), ee.current && (clearInterval(ee.current), ee.current = null), Se && (ee.current = setInterval(() => {
|
|
34124
34141
|
j.sendUserActivity && j.sendUserActivity(), oe(!0);
|
|
34125
34142
|
}, 2e3));
|
|
34126
34143
|
},
|
|
@@ -34139,15 +34156,15 @@ const ShowMePanel = ({
|
|
|
34139
34156
|
), ye = useSyncExternalStore(
|
|
34140
34157
|
useVoiceStore.subscribe,
|
|
34141
34158
|
() => useVoiceStore.getState().isAgentMuted
|
|
34142
|
-
), Ee = useMemo(() => j.aiStatus === "calling_tool" ? "calling_tool" : j.aiStatus === "thinking" ? "thinking" : j.isAgentSpeaking ? "speaking" : j.isListening ? "listening" : "idle", [j.aiStatus, j.isAgentSpeaking, j.isListening]), Pe = useStore(useConversationStore, (
|
|
34159
|
+
), Ee = useMemo(() => j.aiStatus === "calling_tool" ? "calling_tool" : j.aiStatus === "thinking" ? "thinking" : j.isAgentSpeaking ? "speaking" : j.isListening ? "listening" : "idle", [j.aiStatus, j.isAgentSpeaking, j.isListening]), Pe = useStore(useConversationStore, (Se) => Se.messages), [Ie, Re] = useState([]), Le = useRef(0), Me = useRef(0);
|
|
34143
34160
|
if (useEffect(() => {
|
|
34144
34161
|
if (!j.agent) {
|
|
34145
34162
|
Re([]);
|
|
34146
34163
|
return;
|
|
34147
34164
|
}
|
|
34148
|
-
const
|
|
34149
|
-
if (
|
|
34150
|
-
Me.current =
|
|
34165
|
+
const Se = Pe.length;
|
|
34166
|
+
if (Se === Me.current && Ie.length > 0 || Se > 0 && Se - Me.current < 2 && Me.current > 0) return;
|
|
34167
|
+
Me.current = Se;
|
|
34151
34168
|
const Ce = ++Le.current, xe = j.widgetJwt || j.bootstrapJwt;
|
|
34152
34169
|
if (!xe) return;
|
|
34153
34170
|
const we = B || getCurrentApiUrl(), Oe = {
|
|
@@ -34198,7 +34215,7 @@ const ShowMePanel = ({
|
|
|
34198
34215
|
}
|
|
34199
34216
|
);
|
|
34200
34217
|
if (j.isExpanded) {
|
|
34201
|
-
const
|
|
34218
|
+
const Se = !!se;
|
|
34202
34219
|
return /* @__PURE__ */ jsxs(
|
|
34203
34220
|
"div",
|
|
34204
34221
|
{
|
|
@@ -34213,7 +34230,7 @@ const ShowMePanel = ({
|
|
|
34213
34230
|
},
|
|
34214
34231
|
"data-wysdym-widget": !0,
|
|
34215
34232
|
children: [
|
|
34216
|
-
|
|
34233
|
+
Se && /* @__PURE__ */ jsx(
|
|
34217
34234
|
ShowMePanel,
|
|
34218
34235
|
{
|
|
34219
34236
|
content: se,
|
|
@@ -34229,17 +34246,17 @@ const ShowMePanel = ({
|
|
|
34229
34246
|
{
|
|
34230
34247
|
style: {
|
|
34231
34248
|
height: "650px",
|
|
34232
|
-
maxHeight:
|
|
34249
|
+
maxHeight: Se ? "55vh" : "85vh",
|
|
34233
34250
|
overflow: "hidden",
|
|
34234
34251
|
display: "flex",
|
|
34235
34252
|
flexDirection: "column",
|
|
34236
34253
|
background: "#fff",
|
|
34237
|
-
borderRadius:
|
|
34254
|
+
borderRadius: Se ? "0 0 16px 16px" : "16px",
|
|
34238
34255
|
boxShadow: "0 25px 50px -12px rgba(0, 0, 0, 0.25)",
|
|
34239
34256
|
border: "1px solid #e5e7eb"
|
|
34240
34257
|
},
|
|
34241
34258
|
children: [
|
|
34242
|
-
!
|
|
34259
|
+
!Se && /* @__PURE__ */ jsx(
|
|
34243
34260
|
WidgetHeader,
|
|
34244
34261
|
{
|
|
34245
34262
|
primaryColor: P,
|
|
@@ -34338,8 +34355,8 @@ const ShowMePanel = ({
|
|
|
34338
34355
|
onSend: ve,
|
|
34339
34356
|
isMicMuted: ge,
|
|
34340
34357
|
isAgentMuted: ye,
|
|
34341
|
-
onToggleMic:
|
|
34342
|
-
onToggleAgentAudio:
|
|
34358
|
+
onToggleMic: ke,
|
|
34359
|
+
onToggleAgentAudio: me,
|
|
34343
34360
|
isConnected: j.isConnected,
|
|
34344
34361
|
onEndCall: j.endCall,
|
|
34345
34362
|
cta: de ? {
|