@flowengage/react-chatbot 8.0.32 → 8.0.33

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.
@@ -27152,7 +27152,7 @@ function rO({ chatHistory: e, isAiTyping: t, isLoading: n, isAgentTyping: r, set
27152
27152
  dangerouslySetInnerHTML: { __html: qD(e.message) },
27153
27153
  onClick: T
27154
27154
  }) : /* @__PURE__ */ g("div", {
27155
- style: { whiteSpace: n || o ? "normal" : "pre-wrap" },
27155
+ style: { whiteSpace: "pre-wrap" },
27156
27156
  children: e.message
27157
27157
  })]
27158
27158
  }),
@@ -27350,7 +27350,8 @@ function rO({ chatHistory: e, isAiTyping: t, isLoading: n, isAgentTyping: r, set
27350
27350
  }
27351
27351
  //#endregion
27352
27352
  //#region src/components/ChatInput.jsx
27353
- function iO({ input: e, setInput: t, onSubmit: n, isConversationEnded: r, callUiActive: i, handleToggleVoice: a, activeScreen: o, inputDisabled: s, replyContext: l, clearReplyContext: u, requiresEmail: d, emailInput: f, setEmailInput: m, emailError: v, showVoiceToggle: y = !1, voiceEnabled: b = !0, onFileSelect: x, selectedFile: S = null, onRemoveSelectedFile: C, attachmentError: w = "", isUploadingAttachment: T = !1, inputPlaceholder: E = "Type your message" }) {
27353
+ var iO = typeof window < "u" && (window.matchMedia?.("(pointer: coarse)").matches || navigator.maxTouchPoints > 0);
27354
+ function aO({ input: e, setInput: t, onSubmit: n, isConversationEnded: r, callUiActive: i, handleToggleVoice: a, activeScreen: o, inputDisabled: s, replyContext: l, clearReplyContext: u, requiresEmail: d, emailInput: f, setEmailInput: m, emailError: v, showVoiceToggle: y = !1, voiceEnabled: b = !0, onFileSelect: x, selectedFile: S = null, onRemoveSelectedFile: C, attachmentError: w = "", isUploadingAttachment: T = !1, inputPlaceholder: E = "Type your message" }) {
27354
27355
  let ee = p(null), te = p(null), ne = (e) => {
27355
27356
  e && (e.style.height = "auto", e.style.height = `${Math.min(e.scrollHeight, 120)}px`);
27356
27357
  };
@@ -27358,7 +27359,7 @@ function iO({ input: e, setInput: t, onSubmit: n, isConversationEnded: r, callUi
27358
27359
  d || ne(te.current);
27359
27360
  }, [e, d]);
27360
27361
  let re = (e) => {
27361
- e.key === "Enter" && (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey || (e.preventDefault(), e.currentTarget.form?.requestSubmit()));
27362
+ e.key === "Enter" && (iO || e.shiftKey || e.altKey || e.ctrlKey || e.metaKey || (e.preventDefault(), e.currentTarget.form?.requestSubmit()));
27362
27363
  }, ie = l?.sender === "user" ? "You" : l?.sender === "agent" ? "Agent" : "AI Assistant", ae = d ? !!f?.trim() : !!e?.trim() || !!S, oe = s || T || !ae, D = !d && b && y;
27363
27364
  return /* @__PURE__ */ _("div", {
27364
27365
  style: {
@@ -27722,7 +27723,7 @@ function iO({ input: e, setInput: t, onSubmit: n, isConversationEnded: r, callUi
27722
27723
  }
27723
27724
  //#endregion
27724
27725
  //#region src/components/StatusBanners.jsx
27725
- function aO({ webRTCError: e, micError: t, setMicError: n, dismissCallError: r, isRateLimited: i, rateLimitMessage: a }) {
27726
+ function oO({ webRTCError: e, micError: t, setMicError: n, dismissCallError: r, isRateLimited: i, rateLimitMessage: a }) {
27726
27727
  return /* @__PURE__ */ _(h, { children: [(e || t) && /* @__PURE__ */ _("div", {
27727
27728
  style: {
27728
27729
  margin: "0 20px 10px",
@@ -27781,13 +27782,13 @@ function aO({ webRTCError: e, micError: t, setMicError: n, dismissCallError: r,
27781
27782
  }
27782
27783
  //#endregion
27783
27784
  //#region src/components/AnimatedOrb.jsx
27784
- var oO = [
27785
+ var sO = [
27785
27786
  "#135bd8",
27786
27787
  "#ef334b",
27787
27788
  "#ffbd2e"
27788
27789
  ];
27789
- function sO(e) {
27790
- return !Array.isArray(e) || e.length === 0 ? oO : e.length === 1 ? [
27790
+ function cO(e) {
27791
+ return !Array.isArray(e) || e.length === 0 ? sO : e.length === 1 ? [
27791
27792
  e[0],
27792
27793
  e[0],
27793
27794
  e[0]
@@ -27801,7 +27802,7 @@ function sO(e) {
27801
27802
  e[2]
27802
27803
  ];
27803
27804
  }
27804
- var cO = {
27805
+ var lO = {
27805
27806
  idle: 3,
27806
27807
  listening: .75,
27807
27808
  thinking: 1,
@@ -27809,7 +27810,7 @@ var cO = {
27809
27810
  muted: .75,
27810
27811
  error: .08
27811
27812
  };
27812
- function lO(e) {
27813
+ function uO(e) {
27813
27814
  if (!e || typeof e != "string") return [
27814
27815
  0,
27815
27816
  0,
@@ -27822,14 +27823,14 @@ function lO(e) {
27822
27823
  parseInt(n.slice(4, 6), 16) / 255
27823
27824
  ];
27824
27825
  }
27825
- function uO(e, t) {
27826
+ function dO(e, t) {
27826
27827
  if (!e || typeof e != "string") return `rgba(0,0,0,${t})`;
27827
27828
  if (e.startsWith("rgb")) return e.replace(/[\d.]+\)$/, `${t})`);
27828
27829
  let n = e.replace("#", ""), r = n.length === 3 ? n.split("").map((e) => e + e).join("") : n;
27829
27830
  return `rgba(${parseInt(r.slice(0, 2), 16)},${parseInt(r.slice(2, 4), 16)},${parseInt(r.slice(4, 6), 16)},${t})`;
27830
27831
  }
27831
- var dO = "\n attribute vec2 a_pos;\n varying vec2 v_uv;\n void main() {\n v_uv = a_pos * 0.5 + 0.5;\n gl_Position = vec4(a_pos, 0.0, 1.0);\n }\n", fO = "\n precision highp float;\n\n varying vec2 v_uv;\n uniform float u_time;\n uniform float u_speed;\n uniform vec3 u_c1;\n uniform vec3 u_c2;\n uniform vec3 u_c3;\n\n // ── Gradient noise ─────────────────────────────────────────────────────────\n vec2 hash2(vec2 p) {\n p = vec2(dot(p, vec2(127.1, 311.7)), dot(p, vec2(269.5, 183.3)));\n return -1.0 + 2.0 * fract(sin(p) * 43758.5453123);\n }\n float gnoise(vec2 p) {\n vec2 i = floor(p), f = fract(p);\n vec2 u = f*f*f*(f*(f*6.0-15.0)+10.0);\n return mix(\n mix(dot(hash2(i), f),\n dot(hash2(i+vec2(1,0)), f-vec2(1,0)), u.x),\n mix(dot(hash2(i+vec2(0,1)), f-vec2(0,1)),\n dot(hash2(i+vec2(1,1)), f-vec2(1,1)), u.x),\n u.y\n ) * 0.5 + 0.5;\n }\n\n // ── 3-octave FBM normalised to [0,1] — fewer octaves → larger, softer blobs\n float fbm(vec2 p) {\n float v = 0.0, a = 0.5;\n for (int i = 0; i < 3; i++) {\n v += a * gnoise(p);\n p = p * 2.1 + vec2(100.0);\n a *= 0.5;\n }\n return v / 0.875;\n }\n\n // ── Scalar hash for grain ──────────────────────────────────────────────────\n float hash1(vec2 p) {\n return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453);\n }\n\n void main() {\n vec2 uv = v_uv;\n float t = u_time * u_speed + 47.3;\n\n // ── ① Two-level domain warp — deep organic folding and swirling ───────────\n // First pass: large-scale sweep\n vec2 q = vec2(\n fbm(uv * 1.8 + vec2( t * 0.13, t * 0.11)) * 2.0 - 1.0,\n fbm(uv * 1.8 + vec2( t * 0.11 + 3.7, -t * 0.14 + 1.1)) * 2.0 - 1.0\n );\n // Second pass: warp the warp — creates curling, folding sub-currents\n vec2 r = vec2(\n fbm(uv * 1.8 + q * 0.55 + vec2( t * 0.09, t * 0.07)) * 2.0 - 1.0,\n fbm(uv * 1.8 + q * 0.55 + vec2(-t * 0.07 + 5.1, t * 0.10 + 2.3)) * 2.0 - 1.0\n );\n vec2 wp = uv + r * 0.38;\n\n // ── ② Three independent fields — each drifts inward from its source edge ──\n // Asymmetric velocities: dominant axis matches the inflow direction so the\n // noise texture visually streams inward (left→right, right→left, bottom→top).\n float f1 = fbm(wp * 0.85 + vec2(-t * 0.18, t * 0.04)); // LEFT → right\n float f2 = fbm(wp * 0.85 + vec2( t * 0.18 + 5.3, t * 0.04 + 1.7)); // RIGHT → left\n float f3 = fbm(wp * 0.85 + vec2( t * 0.04 - 3.2, -t * 0.18 + 6.4)); // BOTTOM → up\n\n // ── ③ Breathing blobs — sin pulse makes each field expand and contract ────\n float p1 = 0.88 + 0.12 * sin(t * 0.61);\n float p2 = 0.88 + 0.12 * sin(t * 0.47 + 2.09);\n float p3 = 0.88 + 0.12 * sin(t * 0.53 + 4.19);\n\n // Wide smoothstep (0.26 → 0.70) → soft, diffused blob edges that dissolve\n // gradually into each other, like dye spreading through water.\n float b1 = smoothstep(0.26, 0.70, f1 * p1);\n float b2 = smoothstep(0.26, 0.70, f2 * p2);\n float b3 = smoothstep(0.26, 0.70, f3 * p3);\n\n // ── ④ Directional origin gradients.\n // Each color owns its home edge (value = 1.0) and smoothly fades to zero\n // before reaching the opposite side. The transition windows are offset so\n // they overlap only in the center third — that overlap zone is where the\n // three colors meet and blend, while the edges stay uncontaminated.\n float d1 = 1.0 - smoothstep(0.20, 0.74, uv.x); // c1: LEFT → full at x<0.20, zero by x=0.74\n float d2 = 1.0 - smoothstep(0.20, 0.74, 1.0 - uv.x); // c2: RIGHT → full at x>0.80, zero by x=0.26\n float d3 = 1.0 - smoothstep(0.18, 0.68, uv.y); // c3: BOTTOM → full at y<0.18, zero by y=0.68\n\n float w1 = b1 * d1;\n float w2 = b2 * d2;\n float w3 = b3 * d3;\n\n // ── ⑤ Dye-mixing colour blend ──────────────────────────────────────────────\n // dyeColor is the weighted average of all active colours — exactly how dyes\n // mix in water: overlapping streams blend smoothly, no hard edges.\n float total = w1 + w2 + w3;\n vec3 dyeColor = (u_c1 * w1 + u_c2 * w2 + u_c3 * w3) / max(total, 0.001);\n\n // Boost brightness of the dye to make colors pop and seem less dull\n dyeColor *= 1.65;\n\n // Exponential coverage: cores are rich and opaque; edges dissolve into the\n // near-white base. White only shows through where dye concentration is thin.\n float coverage = 1.0 - exp(-total * 5.0);\n vec3 col = mix(vec3(1.0, 1.0, 1.0), dyeColor, coverage);\n col = clamp(col, 0.0, 1.0);\n\n // ── ⑥ Sphere shading — subtle edge vignette only, no specular ─────────────\n vec2 uvc = v_uv * 2.0 - 1.0;\n\n // ── ⑦ Subtle grain — breaks gradient banding, adds filmic texture ──────────\n float grain = hash1(v_uv * 437.3 + fract(t)) * 2.0 - 1.0;\n col += grain * 0.018;\n\n gl_FragColor = vec4(clamp(col, 0.0, 1.0), 1.0);\n }\n";
27832
- function pO(e, t, n) {
27832
+ var fO = "\n attribute vec2 a_pos;\n varying vec2 v_uv;\n void main() {\n v_uv = a_pos * 0.5 + 0.5;\n gl_Position = vec4(a_pos, 0.0, 1.0);\n }\n", pO = "\n precision highp float;\n\n varying vec2 v_uv;\n uniform float u_time;\n uniform float u_speed;\n uniform vec3 u_c1;\n uniform vec3 u_c2;\n uniform vec3 u_c3;\n\n // ── Gradient noise ─────────────────────────────────────────────────────────\n vec2 hash2(vec2 p) {\n p = vec2(dot(p, vec2(127.1, 311.7)), dot(p, vec2(269.5, 183.3)));\n return -1.0 + 2.0 * fract(sin(p) * 43758.5453123);\n }\n float gnoise(vec2 p) {\n vec2 i = floor(p), f = fract(p);\n vec2 u = f*f*f*(f*(f*6.0-15.0)+10.0);\n return mix(\n mix(dot(hash2(i), f),\n dot(hash2(i+vec2(1,0)), f-vec2(1,0)), u.x),\n mix(dot(hash2(i+vec2(0,1)), f-vec2(0,1)),\n dot(hash2(i+vec2(1,1)), f-vec2(1,1)), u.x),\n u.y\n ) * 0.5 + 0.5;\n }\n\n // ── 3-octave FBM normalised to [0,1] — fewer octaves → larger, softer blobs\n float fbm(vec2 p) {\n float v = 0.0, a = 0.5;\n for (int i = 0; i < 3; i++) {\n v += a * gnoise(p);\n p = p * 2.1 + vec2(100.0);\n a *= 0.5;\n }\n return v / 0.875;\n }\n\n // ── Scalar hash for grain ──────────────────────────────────────────────────\n float hash1(vec2 p) {\n return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453);\n }\n\n void main() {\n vec2 uv = v_uv;\n float t = u_time * u_speed + 47.3;\n\n // ── ① Two-level domain warp — deep organic folding and swirling ───────────\n // First pass: large-scale sweep\n vec2 q = vec2(\n fbm(uv * 1.8 + vec2( t * 0.13, t * 0.11)) * 2.0 - 1.0,\n fbm(uv * 1.8 + vec2( t * 0.11 + 3.7, -t * 0.14 + 1.1)) * 2.0 - 1.0\n );\n // Second pass: warp the warp — creates curling, folding sub-currents\n vec2 r = vec2(\n fbm(uv * 1.8 + q * 0.55 + vec2( t * 0.09, t * 0.07)) * 2.0 - 1.0,\n fbm(uv * 1.8 + q * 0.55 + vec2(-t * 0.07 + 5.1, t * 0.10 + 2.3)) * 2.0 - 1.0\n );\n vec2 wp = uv + r * 0.38;\n\n // ── ② Three independent fields — each drifts inward from its source edge ──\n // Asymmetric velocities: dominant axis matches the inflow direction so the\n // noise texture visually streams inward (left→right, right→left, bottom→top).\n float f1 = fbm(wp * 0.85 + vec2(-t * 0.18, t * 0.04)); // LEFT → right\n float f2 = fbm(wp * 0.85 + vec2( t * 0.18 + 5.3, t * 0.04 + 1.7)); // RIGHT → left\n float f3 = fbm(wp * 0.85 + vec2( t * 0.04 - 3.2, -t * 0.18 + 6.4)); // BOTTOM → up\n\n // ── ③ Breathing blobs — sin pulse makes each field expand and contract ────\n float p1 = 0.88 + 0.12 * sin(t * 0.61);\n float p2 = 0.88 + 0.12 * sin(t * 0.47 + 2.09);\n float p3 = 0.88 + 0.12 * sin(t * 0.53 + 4.19);\n\n // Wide smoothstep (0.26 → 0.70) → soft, diffused blob edges that dissolve\n // gradually into each other, like dye spreading through water.\n float b1 = smoothstep(0.26, 0.70, f1 * p1);\n float b2 = smoothstep(0.26, 0.70, f2 * p2);\n float b3 = smoothstep(0.26, 0.70, f3 * p3);\n\n // ── ④ Directional origin gradients.\n // Each color owns its home edge (value = 1.0) and smoothly fades to zero\n // before reaching the opposite side. The transition windows are offset so\n // they overlap only in the center third — that overlap zone is where the\n // three colors meet and blend, while the edges stay uncontaminated.\n float d1 = 1.0 - smoothstep(0.20, 0.74, uv.x); // c1: LEFT → full at x<0.20, zero by x=0.74\n float d2 = 1.0 - smoothstep(0.20, 0.74, 1.0 - uv.x); // c2: RIGHT → full at x>0.80, zero by x=0.26\n float d3 = 1.0 - smoothstep(0.18, 0.68, uv.y); // c3: BOTTOM → full at y<0.18, zero by y=0.68\n\n float w1 = b1 * d1;\n float w2 = b2 * d2;\n float w3 = b3 * d3;\n\n // ── ⑤ Dye-mixing colour blend ──────────────────────────────────────────────\n // dyeColor is the weighted average of all active colours — exactly how dyes\n // mix in water: overlapping streams blend smoothly, no hard edges.\n float total = w1 + w2 + w3;\n vec3 dyeColor = (u_c1 * w1 + u_c2 * w2 + u_c3 * w3) / max(total, 0.001);\n\n // Boost brightness of the dye to make colors pop and seem less dull\n dyeColor *= 1.65;\n\n // Exponential coverage: cores are rich and opaque; edges dissolve into the\n // near-white base. White only shows through where dye concentration is thin.\n float coverage = 1.0 - exp(-total * 5.0);\n vec3 col = mix(vec3(1.0, 1.0, 1.0), dyeColor, coverage);\n col = clamp(col, 0.0, 1.0);\n\n // ── ⑥ Sphere shading — subtle edge vignette only, no specular ─────────────\n vec2 uvc = v_uv * 2.0 - 1.0;\n\n // ── ⑦ Subtle grain — breaks gradient banding, adds filmic texture ──────────\n float grain = hash1(v_uv * 437.3 + fract(t)) * 2.0 - 1.0;\n col += grain * 0.018;\n\n gl_FragColor = vec4(clamp(col, 0.0, 1.0), 1.0);\n }\n";
27833
+ function mO(e, t, n) {
27833
27834
  let r = (t, n) => {
27834
27835
  let r = e.createShader(t);
27835
27836
  return e.shaderSource(r, n), e.compileShader(r), e.getShaderParameter(r, e.COMPILE_STATUS) ? r : (console.error("[AnimatedOrb shader]", e.getShaderInfoLog(r)), null);
@@ -27838,10 +27839,10 @@ function pO(e, t, n) {
27838
27839
  let o = e.createProgram();
27839
27840
  return e.attachShader(o, i), e.attachShader(o, a), e.linkProgram(o), e.getProgramParameter(o, e.LINK_STATUS) ? o : (console.error("[AnimatedOrb link]", e.getProgramInfoLog(o)), null);
27840
27841
  }
27841
- function mO({ size: e = 94, voiceState: t = "idle", isMuted: n = !1, colors: r, onClick: i, style: a, className: o }) {
27842
- let [s, l, u] = sO(r), d = t === "speaking", f = e <= 50, m = p(null), h = p(cO[t] ?? .35);
27842
+ function hO({ size: e = 94, voiceState: t = "idle", isMuted: n = !1, colors: r, onClick: i, style: a, className: o }) {
27843
+ let [s, l, u] = cO(r), d = t === "speaking", f = e <= 50, m = p(null), h = p(lO[t] ?? .35);
27843
27844
  c(() => {
27844
- h.current = cO[t] ?? .35;
27845
+ h.current = lO[t] ?? .35;
27845
27846
  }, [t]), c(() => {
27846
27847
  let t = m.current;
27847
27848
  if (!t) return;
@@ -27858,7 +27859,7 @@ function mO({ size: e = 94, voiceState: t = "idle", isMuted: n = !1, colors: r,
27858
27859
  console.warn("[AnimatedOrb] WebGL unavailable.");
27859
27860
  return;
27860
27861
  }
27861
- let i = pO(r, dO, fO);
27862
+ let i = mO(r, fO, pO);
27862
27863
  if (!i) {
27863
27864
  console.error("[AnimatedOrb] WebGL program failed to compile/link");
27864
27865
  return;
@@ -27888,7 +27889,7 @@ function mO({ size: e = 94, voiceState: t = "idle", isMuted: n = !1, colors: r,
27888
27889
  c2: r.getUniformLocation(i, "u_c2"),
27889
27890
  c3: r.getUniformLocation(i, "u_c3")
27890
27891
  };
27891
- r.uniform3fv(c.c1, lO(s)), r.uniform3fv(c.c2, lO(l)), r.uniform3fv(c.c3, lO(u)), r.viewport(0, 0, t.width, t.height);
27892
+ r.uniform3fv(c.c1, uO(s)), r.uniform3fv(c.c2, uO(l)), r.uniform3fv(c.c3, uO(u)), r.viewport(0, 0, t.width, t.height);
27892
27893
  let d = performance.now(), f, p = (e) => {
27893
27894
  r.uniform1f(c.time, (e - d) / 1e3), r.uniform1f(c.speed, h.current), r.drawArrays(r.TRIANGLES, 0, 6), f = requestAnimationFrame(p);
27894
27895
  };
@@ -27919,7 +27920,7 @@ function mO({ size: e = 94, voiceState: t = "idle", isMuted: n = !1, colors: r,
27919
27920
  position: "absolute",
27920
27921
  inset: -10,
27921
27922
  borderRadius: "50%",
27922
- background: `radial-gradient(circle, ${uO(s, .18)} 0%, transparent 70%)`,
27923
+ background: `radial-gradient(circle, ${dO(s, .18)} 0%, transparent 70%)`,
27923
27924
  pointerEvents: "none"
27924
27925
  },
27925
27926
  animate: { opacity: [.3, .75] },
@@ -27997,17 +27998,17 @@ function mO({ size: e = 94, voiceState: t = "idle", isMuted: n = !1, colors: r,
27997
27998
  }
27998
27999
  //#endregion
27999
28000
  //#region src/components/CallScreen.jsx
28000
- var hO = "\n @keyframes fe-call-ring-pulse {\n 0% { transform: scale(1); opacity: 0.55; }\n 70% { transform: scale(1.85); opacity: 0; }\n 100% { transform: scale(1.85); opacity: 0; }\n }\n @keyframes fe-call-spin {\n to { transform: rotate(360deg); }\n }\n @keyframes fe-call-slide-up {\n from { opacity: 0; transform: translateY(24px); }\n to { opacity: 1; transform: translateY(0); }\n }\n @keyframes fe-call-fade-in {\n from { opacity: 0; }\n to { opacity: 1; }\n }\n @keyframes fe-call-bar-slide-in {\n from { opacity: 0; transform: translateY(10px) scale(0.97); }\n to { opacity: 1; transform: translateY(0) scale(1); }\n }\n @keyframes fe-call-dot-blink {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.35; }\n }\n @keyframes fe-call-avatar-breathe {\n 0%, 100% { opacity: 0.5; transform: scale(1); }\n 50% { opacity: 0.9; transform: scale(1.12); }\n }\n";
28001
- function gO(e) {
28001
+ var gO = "\n @keyframes fe-call-ring-pulse {\n 0% { transform: scale(1); opacity: 0.55; }\n 70% { transform: scale(1.85); opacity: 0; }\n 100% { transform: scale(1.85); opacity: 0; }\n }\n @keyframes fe-call-spin {\n to { transform: rotate(360deg); }\n }\n @keyframes fe-call-slide-up {\n from { opacity: 0; transform: translateY(24px); }\n to { opacity: 1; transform: translateY(0); }\n }\n @keyframes fe-call-fade-in {\n from { opacity: 0; }\n to { opacity: 1; }\n }\n @keyframes fe-call-bar-slide-in {\n from { opacity: 0; transform: translateY(10px) scale(0.97); }\n to { opacity: 1; transform: translateY(0) scale(1); }\n }\n @keyframes fe-call-dot-blink {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.35; }\n }\n @keyframes fe-call-avatar-breathe {\n 0%, 100% { opacity: 0.5; transform: scale(1); }\n 50% { opacity: 0.9; transform: scale(1.12); }\n }\n";
28002
+ function _O(e) {
28002
28003
  let t = (e || "").replace("#", ""), n = t.length === 3 ? t.split("").map((e) => e + e).join("") : t;
28003
28004
  return `${parseInt(n.slice(0, 2), 16)},${parseInt(n.slice(2, 4), 16)},${parseInt(n.slice(4, 6), 16)}`;
28004
28005
  }
28005
- function _O(e) {
28006
+ function vO(e) {
28006
28007
  if (!e || typeof e != "string") return "#1a1a1a";
28007
28008
  let t = e.replace("#", ""), n = t.length === 3 ? t.split("").map((e) => e + e).join("") : t, r = parseInt(n.slice(0, 2), 16) / 255, i = parseInt(n.slice(2, 4), 16) / 255, a = parseInt(n.slice(4, 6), 16) / 255, o = (e) => e <= .04045 ? e / 12.92 : ((e + .055) / 1.055) ** 2.4;
28008
28009
  return .2126 * o(r) + .7152 * o(i) + .0722 * o(a) > .179 ? "#1a1a1a" : "#ffffff";
28009
28010
  }
28010
- function vO(e, t) {
28011
+ function yO(e, t) {
28011
28012
  let n = Array.isArray(e) && e.length > 0 ? e : [t || "#3B82F6"], [r, i, a] = n;
28012
28013
  return n.length === 1 ? [
28013
28014
  `radial-gradient(ellipse 110% 65% at 50% -5%, ${r}28 0%, transparent 68%)`,
@@ -28024,8 +28025,8 @@ function vO(e, t) {
28024
28025
  "#f7f8fa"
28025
28026
  ].join(", ");
28026
28027
  }
28027
- function yO({ headshot: e, name: t, size: n = 80, primaryColor: r = "#3B82F6" }) {
28028
- let i = (t || "A")[0].toUpperCase(), a = _O(r), o = n > 48 ? {
28028
+ function bO({ headshot: e, name: t, size: n = 80, primaryColor: r = "#3B82F6" }) {
28029
+ let i = (t || "A")[0].toUpperCase(), a = vO(r), o = n > 48 ? {
28029
28030
  boxShadow: `0 0 0 3px ${r}44`,
28030
28031
  border: "3px solid rgba(255,255,255,0.15)"
28031
28032
  } : { border: `1.5px solid ${r}55` };
@@ -28062,7 +28063,7 @@ function yO({ headshot: e, name: t, size: n = 80, primaryColor: r = "#3B82F6" })
28062
28063
  children: i
28063
28064
  });
28064
28065
  }
28065
- function bO(e) {
28066
+ function xO(e) {
28066
28067
  let t = p(null), n = o(() => {
28067
28068
  if (!t.current) return;
28068
28069
  let { audioContext: e, oscillator: n, interval: r, toneTimeout: i } = t.current;
@@ -28109,8 +28110,8 @@ function bO(e) {
28109
28110
  n
28110
28111
  ]), c(() => () => n(), [n]), n;
28111
28112
  }
28112
- function xO({ incomingCall: e, activeCallId: t, callConnectionState: n, callDurationSeconds: r, isCallMuted: i, agentName: a, agentHeadshot: o, fallbackAgentName: s, acceptCall: c, rejectCall: l, endWebRTCCall: u, toggleCallMute: d, formatCallDuration: f, onMinimize: p, primaryColor: m = "#3B82F6", orbColors: h, chatHistory: v = [] }) {
28113
- let y = a || s || "Agent", b = e ? "incoming" : n === "connecting" ? "connecting" : "ongoing", x = bO(!!e), S = async () => {
28113
+ function SO({ incomingCall: e, activeCallId: t, callConnectionState: n, callDurationSeconds: r, isCallMuted: i, agentName: a, agentHeadshot: o, fallbackAgentName: s, acceptCall: c, rejectCall: l, endWebRTCCall: u, toggleCallMute: d, formatCallDuration: f, onMinimize: p, primaryColor: m = "#3B82F6", orbColors: h, chatHistory: v = [] }) {
28114
+ let y = a || s || "Agent", b = e ? "incoming" : n === "connecting" ? "connecting" : "ongoing", x = xO(!!e), S = async () => {
28114
28115
  x(), await c();
28115
28116
  }, C = async () => {
28116
28117
  x(), await l();
@@ -28122,14 +28123,14 @@ function xO({ incomingCall: e, activeCallId: t, callConnectionState: n, callDura
28122
28123
  flexDirection: "column",
28123
28124
  borderRadius: "inherit",
28124
28125
  overflow: "hidden",
28125
- background: vO(h, m),
28126
+ background: yO(h, m),
28126
28127
  animation: T ? "fe-call-slide-up 0.36s cubic-bezier(0.16,1,0.3,1)" : "fe-call-fade-in 0.32s ease"
28127
28128
  };
28128
28129
  if (b === "incoming") {
28129
28130
  let e = Array.isArray(h) && h.length > 0 ? h : [m];
28130
28131
  return /* @__PURE__ */ _("div", {
28131
28132
  style: E,
28132
- children: [/* @__PURE__ */ g("style", { children: hO }), /* @__PURE__ */ _("div", {
28133
+ children: [/* @__PURE__ */ g("style", { children: gO }), /* @__PURE__ */ _("div", {
28133
28134
  style: {
28134
28135
  flex: 1,
28135
28136
  display: "flex",
@@ -28160,7 +28161,7 @@ function xO({ incomingCall: e, activeCallId: t, callConnectionState: n, callDura
28160
28161
  width: "96px",
28161
28162
  height: "96px",
28162
28163
  borderRadius: "50%",
28163
- background: `radial-gradient(circle, rgba(${gO(e[0])},0.2) 0%, transparent 70%)`,
28164
+ background: `radial-gradient(circle, rgba(${_O(e[0])},0.2) 0%, transparent 70%)`,
28164
28165
  filter: "blur(10px)",
28165
28166
  zIndex: 0
28166
28167
  } }),
@@ -28177,7 +28178,7 @@ function xO({ incomingCall: e, activeCallId: t, callConnectionState: n, callDura
28177
28178
  animation: `fe-call-ring-pulse 2.6s cubic-bezier(0.215,0.61,0.355,1) ${t}s infinite`,
28178
28179
  zIndex: 1
28179
28180
  } }, n)),
28180
- /* @__PURE__ */ g(yO, {
28181
+ /* @__PURE__ */ g(bO, {
28181
28182
  headshot: o,
28182
28183
  name: y,
28183
28184
  size: 82,
@@ -28315,7 +28316,7 @@ function xO({ incomingCall: e, activeCallId: t, callConnectionState: n, callDura
28315
28316
  }
28316
28317
  return b === "connecting" ? /* @__PURE__ */ _("div", {
28317
28318
  style: E,
28318
- children: [/* @__PURE__ */ g("style", { children: hO }), /* @__PURE__ */ _("div", {
28319
+ children: [/* @__PURE__ */ g("style", { children: gO }), /* @__PURE__ */ _("div", {
28319
28320
  style: {
28320
28321
  flex: 1,
28321
28322
  display: "flex",
@@ -28325,7 +28326,7 @@ function xO({ incomingCall: e, activeCallId: t, callConnectionState: n, callDura
28325
28326
  gap: "24px"
28326
28327
  },
28327
28328
  children: [
28328
- /* @__PURE__ */ g(yO, {
28329
+ /* @__PURE__ */ g(bO, {
28329
28330
  headshot: o,
28330
28331
  name: y,
28331
28332
  size: 64,
@@ -28352,7 +28353,7 @@ function xO({ incomingCall: e, activeCallId: t, callConnectionState: n, callDura
28352
28353
  }) : /* @__PURE__ */ _("div", {
28353
28354
  style: E,
28354
28355
  children: [
28355
- /* @__PURE__ */ g("style", { children: hO }),
28356
+ /* @__PURE__ */ g("style", { children: gO }),
28356
28357
  /* @__PURE__ */ _("div", {
28357
28358
  style: {
28358
28359
  display: "flex",
@@ -28398,7 +28399,7 @@ function xO({ incomingCall: e, activeCallId: t, callConnectionState: n, callDura
28398
28399
  children: /* @__PURE__ */ g("polyline", { points: "15 18 9 12 15 6" })
28399
28400
  })
28400
28401
  }),
28401
- /* @__PURE__ */ g(mO, {
28402
+ /* @__PURE__ */ g(hO, {
28402
28403
  colors: h,
28403
28404
  size: 36,
28404
28405
  voiceState: w
@@ -28449,7 +28450,7 @@ function xO({ incomingCall: e, activeCallId: t, callConnectionState: n, callDura
28449
28450
  gap: "16px",
28450
28451
  padding: "0 24px 16px"
28451
28452
  },
28452
- children: [/* @__PURE__ */ g(yO, {
28453
+ children: [/* @__PURE__ */ g(bO, {
28453
28454
  headshot: o,
28454
28455
  name: y,
28455
28456
  size: 116,
@@ -28538,9 +28539,9 @@ function xO({ incomingCall: e, activeCallId: t, callConnectionState: n, callDura
28538
28539
  ]
28539
28540
  });
28540
28541
  }
28541
- function SO({ agentName: e, agentHeadshot: t, fallbackAgentName: n, callDurationSeconds: r, isCallMuted: i, formatCallDuration: a, toggleCallMute: o, endWebRTCCall: s, onExpand: c, primaryColor: l = "#3B82F6" }) {
28542
+ function CO({ agentName: e, agentHeadshot: t, fallbackAgentName: n, callDurationSeconds: r, isCallMuted: i, formatCallDuration: a, toggleCallMute: o, endWebRTCCall: s, onExpand: c, primaryColor: l = "#3B82F6" }) {
28542
28543
  let u = e || n || "Agent";
28543
- return /* @__PURE__ */ _(h, { children: [/* @__PURE__ */ g("style", { children: hO }), /* @__PURE__ */ _("div", {
28544
+ return /* @__PURE__ */ _(h, { children: [/* @__PURE__ */ g("style", { children: gO }), /* @__PURE__ */ _("div", {
28544
28545
  role: "button",
28545
28546
  tabIndex: 0,
28546
28547
  onClick: c,
@@ -28597,7 +28598,7 @@ function SO({ agentName: e, agentHeadshot: t, fallbackAgentName: n, callDuration
28597
28598
  borderRadius: "50%",
28598
28599
  border: `1.5px solid ${l}55`
28599
28600
  } }),
28600
- /* @__PURE__ */ g(yO, {
28601
+ /* @__PURE__ */ g(bO, {
28601
28602
  headshot: t,
28602
28603
  name: u,
28603
28604
  size: 38,
@@ -28717,7 +28718,7 @@ function SO({ agentName: e, agentHeadshot: t, fallbackAgentName: n, callDuration
28717
28718
  }
28718
28719
  //#endregion
28719
28720
  //#region src/utils/voicePriorContext.js
28720
- function CO(e, t = {}) {
28721
+ function wO(e, t = {}) {
28721
28722
  let n = t.maxChars ?? 4500;
28722
28723
  if (!Array.isArray(e) || e.length === 0) return "";
28723
28724
  let r = [];
@@ -28735,7 +28736,7 @@ function CO(e, t = {}) {
28735
28736
  //#endregion
28736
28737
  //#region src/utils/voiceActionVisuals.js
28737
28738
  var Q = "fe-vv";
28738
- function wO() {
28739
+ function TO() {
28739
28740
  if (typeof document > "u" || document.getElementById(`${Q}-styles`)) return;
28740
28741
  let e = `
28741
28742
  /* ── Action toast ───────────────────────────────────────────────────────────── */
@@ -28880,14 +28881,14 @@ function wO() {
28880
28881
  `, t = document.createElement("style");
28881
28882
  t.id = `${Q}-styles`, t.textContent = e, (document.head || document.documentElement).appendChild(t);
28882
28883
  }
28883
- var TO = null, EO = null;
28884
- function DO() {
28885
- return (!TO || !TO.isConnected) && (TO = document.createElement("div"), TO.id = `${Q}-toast`, document.body.appendChild(TO)), TO;
28884
+ var EO = null, DO = null;
28885
+ function OO() {
28886
+ return (!EO || !EO.isConnected) && (EO = document.createElement("div"), EO.id = `${Q}-toast`, document.body.appendChild(EO)), EO;
28886
28887
  }
28887
- function OO(e, { spinner: t = !0, icon: n = null, duration: r = 0 } = {}) {
28888
+ function kO(e, { spinner: t = !0, icon: n = null, duration: r = 0 } = {}) {
28888
28889
  if (typeof document > "u") return;
28889
- wO(), EO &&= (clearTimeout(EO), null);
28890
- let i = DO();
28890
+ TO(), DO &&= (clearTimeout(DO), null);
28891
+ let i = OO();
28891
28892
  if (i.innerHTML = "", n) {
28892
28893
  let e = document.createElement("span");
28893
28894
  e.className = `${Q}-icon`, e.textContent = n, i.appendChild(e);
@@ -28896,71 +28897,71 @@ function OO(e, { spinner: t = !0, icon: n = null, duration: r = 0 } = {}) {
28896
28897
  e.className = `${Q}-spin`, i.appendChild(e);
28897
28898
  }
28898
28899
  let a = document.createElement("span");
28899
- a.textContent = e, i.appendChild(a), i.classList.remove(`${Q}-show`), i.offsetHeight, i.classList.add(`${Q}-show`), r > 0 && (EO = setTimeout(() => kO(), r));
28900
- }
28901
- function kO(e = 0) {
28902
- TO && (e > 0 ? EO = setTimeout(() => {
28903
- TO && TO.classList.remove(`${Q}-show`);
28904
- }, e) : TO && TO.classList.remove(`${Q}-show`));
28900
+ a.textContent = e, i.appendChild(a), i.classList.remove(`${Q}-show`), i.offsetHeight, i.classList.add(`${Q}-show`), r > 0 && (DO = setTimeout(() => AO(), r));
28905
28901
  }
28906
- var AO = null, jO = [];
28907
- function MO() {
28908
- return (!AO || !AO.isConnected) && (AO = document.createElement("div"), AO.id = `${Q}-bar`, document.body.appendChild(AO)), AO;
28902
+ function AO(e = 0) {
28903
+ EO && (e > 0 ? DO = setTimeout(() => {
28904
+ EO && EO.classList.remove(`${Q}-show`);
28905
+ }, e) : EO && EO.classList.remove(`${Q}-show`));
28909
28906
  }
28907
+ var jO = null, MO = [];
28910
28908
  function NO() {
28909
+ return (!jO || !jO.isConnected) && (jO = document.createElement("div"), jO.id = `${Q}-bar`, document.body.appendChild(jO)), jO;
28910
+ }
28911
+ function PO() {
28911
28912
  if (typeof document > "u") return;
28912
- wO(), jO.forEach(clearTimeout), jO = [];
28913
- let e = MO();
28913
+ TO(), MO.forEach(clearTimeout), MO = [];
28914
+ let e = NO();
28914
28915
  e.style.transition = "none", e.style.width = "0%", e.classList.add(`${Q}-bar-active`), e.offsetHeight, e.style.transition = "width 0.35s ease, opacity 0.25s ease";
28915
28916
  let t = [[80, "width 0.6s ease"], [92, "width 1.2s ease"]], n = 50;
28916
28917
  for (let [e, r] of t) {
28917
28918
  let t = n, i = e, a = r;
28918
- jO.push(setTimeout(() => {
28919
- AO && (AO.style.transition = a, AO.style.width = `${i}%`);
28919
+ MO.push(setTimeout(() => {
28920
+ jO && (jO.style.transition = a, jO.style.width = `${i}%`);
28920
28921
  }, t)), n += 800;
28921
28922
  }
28922
28923
  }
28923
- function PO() {
28924
- AO && (jO.forEach(clearTimeout), jO = [], AO.style.transition = "width 0.2s ease", AO.style.width = "100%", jO.push(setTimeout(() => {
28925
- AO && (AO.style.transition = "opacity 0.35s ease", AO.style.opacity = "0", jO.push(setTimeout(() => {
28926
- AO && (AO.style.width = "0%", AO.classList.remove(`${Q}-bar-active`));
28924
+ function FO() {
28925
+ jO && (MO.forEach(clearTimeout), MO = [], jO.style.transition = "width 0.2s ease", jO.style.width = "100%", MO.push(setTimeout(() => {
28926
+ jO && (jO.style.transition = "opacity 0.35s ease", jO.style.opacity = "0", MO.push(setTimeout(() => {
28927
+ jO && (jO.style.width = "0%", jO.classList.remove(`${Q}-bar-active`));
28927
28928
  }, 380)));
28928
28929
  }, 220)));
28929
28930
  }
28930
- var FO = `<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 22 22" fill="none">
28931
+ var IO = `<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 22 22" fill="none">
28931
28932
  <filter id="${Q}-csh">
28932
28933
  <feDropShadow dx="1" dy="2" stdDeviation="1.5" flood-color="#00000060"/>
28933
28934
  </filter>
28934
28935
  <path d="M4 2L19 10.5L11 12.8L8 20L4 2Z"
28935
28936
  fill="white" stroke="#1e1b4b" stroke-width="1.6" stroke-linejoin="round"
28936
28937
  filter="url(#${Q}-csh)"/>
28937
- </svg>`, IO = null, LO = !1;
28938
- function RO() {
28939
- return (!IO || !IO.isConnected) && (IO = document.createElement("div"), IO.id = `${Q}-cursor`, IO.innerHTML = FO, document.body.appendChild(IO), LO = !1), IO;
28938
+ </svg>`, LO = null, RO = !1;
28939
+ function zO() {
28940
+ return (!LO || !LO.isConnected) && (LO = document.createElement("div"), LO.id = `${Q}-cursor`, LO.innerHTML = IO, document.body.appendChild(LO), RO = !1), LO;
28940
28941
  }
28941
- async function zO(e) {
28942
+ async function BO(e) {
28942
28943
  if (typeof document > "u" || !e) return;
28943
- wO();
28944
+ TO();
28944
28945
  let t;
28945
28946
  try {
28946
28947
  t = e.getBoundingClientRect();
28947
28948
  } catch {
28948
28949
  return;
28949
28950
  }
28950
- let n = t.left + Math.min(16, t.width * .2), r = t.top + Math.min(12, t.height * .25), i = RO();
28951
- LO ||= (i.style.transition = "none", i.style.left = `${window.innerWidth / 2}px`, i.style.top = `${window.innerHeight * .4}px`, i.classList.add(`${Q}-cursor-visible`), i.offsetHeight, i.style.transition = "left 0.32s cubic-bezier(0.25,0.46,0.45,0.94), top 0.32s cubic-bezier(0.25,0.46,0.45,0.94), opacity 0.2s ease", !0), i.style.left = `${n}px`, i.style.top = `${r}px`, await UO(360);
28951
+ let n = t.left + Math.min(16, t.width * .2), r = t.top + Math.min(12, t.height * .25), i = zO();
28952
+ RO ||= (i.style.transition = "none", i.style.left = `${window.innerWidth / 2}px`, i.style.top = `${window.innerHeight * .4}px`, i.classList.add(`${Q}-cursor-visible`), i.offsetHeight, i.style.transition = "left 0.32s cubic-bezier(0.25,0.46,0.45,0.94), top 0.32s cubic-bezier(0.25,0.46,0.45,0.94), opacity 0.2s ease", !0), i.style.left = `${n}px`, i.style.top = `${r}px`, await WO(360);
28952
28953
  }
28953
- function BO(e = !1) {
28954
- IO && (e ? (IO.classList.remove(`${Q}-cursor-visible`), LO = !1) : (IO.classList.remove(`${Q}-cursor-visible`), setTimeout(() => {
28955
- LO = !1;
28954
+ function VO(e = !1) {
28955
+ LO && (e ? (LO.classList.remove(`${Q}-cursor-visible`), RO = !1) : (LO.classList.remove(`${Q}-cursor-visible`), setTimeout(() => {
28956
+ RO = !1;
28956
28957
  }, 250)));
28957
28958
  }
28958
- async function VO(e) {
28959
- IO && (IO.classList.add(`${Q}-cursor-click`), await UO(280), IO.classList.remove(`${Q}-cursor-click`));
28959
+ async function HO(e) {
28960
+ LO && (LO.classList.add(`${Q}-cursor-click`), await WO(280), LO.classList.remove(`${Q}-cursor-click`));
28960
28961
  }
28961
- function HO(e) {
28962
+ function UO(e) {
28962
28963
  if (!e || typeof document > "u") return;
28963
- wO();
28964
+ TO();
28964
28965
  let t;
28965
28966
  try {
28966
28967
  t = e.getBoundingClientRect();
@@ -28986,7 +28987,7 @@ function HO(e) {
28986
28987
  a.remove(), e.style.position = n, e.style.overflow = r;
28987
28988
  }, 650);
28988
28989
  }
28989
- function UO(e) {
28990
+ function WO(e) {
28990
28991
  return new Promise((t) => setTimeout(t, e));
28991
28992
  }
28992
28993
  //#endregion
@@ -28994,14 +28995,14 @@ function UO(e) {
28994
28995
  function $(...e) {
28995
28996
  Fn() && console.log("[FlowEngage:voice-tools]", ...e);
28996
28997
  }
28997
- function WO(e) {
28998
+ function GO(e) {
28998
28999
  try {
28999
29000
  let t = e.ownerDocument?.defaultView;
29000
29001
  if (t) return t.getComputedStyle(e);
29001
29002
  } catch {}
29002
29003
  return window.getComputedStyle(e);
29003
29004
  }
29004
- function GO(e) {
29005
+ function KO(e) {
29005
29006
  let t = /* @__PURE__ */ new Set();
29006
29007
  function n(r) {
29007
29008
  if (!r || t.has(r)) return;
@@ -29014,10 +29015,10 @@ function GO(e) {
29014
29015
  }
29015
29016
  typeof document < "u" && n(document);
29016
29017
  }
29017
- function KO(e) {
29018
+ function qO(e) {
29018
29019
  return e == null ? null : String(e).replace(/\u00a0/g, " ").replace(/\s*\*+\s*$/u, "").replace(/\s+/g, " ").trim();
29019
29020
  }
29020
- function qO(e) {
29021
+ function JO(e) {
29021
29022
  let t = e.ownerDocument || document, n = e.getAttribute("aria-labelledby");
29022
29023
  if (n) {
29023
29024
  let e = n.trim().split(/\s+/).filter(Boolean), r = [];
@@ -29025,40 +29026,40 @@ function qO(e) {
29025
29026
  let e = t.getElementById(n);
29026
29027
  e?.textContent && r.push(e.textContent.trim());
29027
29028
  } catch {}
29028
- if (r.length) return KO(r.join(" "));
29029
+ if (r.length) return qO(r.join(" "));
29029
29030
  }
29030
- if (e.labels && e.labels.length) return KO(e.labels[0].textContent);
29031
+ if (e.labels && e.labels.length) return qO(e.labels[0].textContent);
29031
29032
  let r = e.id;
29032
29033
  if (r) try {
29033
29034
  let e = t.querySelector(`label[for="${CSS.escape(r)}"]`);
29034
- if (e) return KO(e.textContent);
29035
+ if (e) return qO(e.textContent);
29035
29036
  } catch {
29036
29037
  let e = t.querySelector(`label[for="${r.replace(/"/g, "\\\"")}"]`);
29037
- if (e) return KO(e.textContent);
29038
+ if (e) return qO(e.textContent);
29038
29039
  }
29039
29040
  let i = e.previousElementSibling;
29040
29041
  for (let e = 0; e < 6 && i; e += 1) {
29041
- if (i.tagName === "LABEL") return KO(i.textContent);
29042
+ if (i.tagName === "LABEL") return qO(i.textContent);
29042
29043
  let e = (i.className || "").toString().toLowerCase();
29043
29044
  if (/chakra-form__label|formlabel|field-label|form-label|mui-form-label/.test(e)) {
29044
- let e = KO(i.textContent);
29045
+ let e = qO(i.textContent);
29045
29046
  if (e) return e;
29046
29047
  }
29047
29048
  i = i.previousElementSibling;
29048
29049
  }
29049
29050
  let a = e.parentElement;
29050
29051
  for (let e = 0; e < 5 && a; e += 1) {
29051
- if (a.tagName === "LABEL") return KO(a.textContent);
29052
+ if (a.tagName === "LABEL") return qO(a.textContent);
29052
29053
  let e = a.querySelector?.(":scope > label, :scope > [class*='FormLabel'], :scope > [class*='form__label']");
29053
- if (e?.textContent) return KO(e.textContent);
29054
+ if (e?.textContent) return qO(e.textContent);
29054
29055
  a = a.parentElement;
29055
29056
  }
29056
29057
  let o = e.getAttribute("aria-label");
29057
- return o ? KO(o) : null;
29058
+ return o ? qO(o) : null;
29058
29059
  }
29059
- function JO() {
29060
+ function YO() {
29060
29061
  let e = [];
29061
- return GO((t) => {
29062
+ return KO((t) => {
29062
29063
  e.push(...Array.from(t.querySelectorAll("input, select, textarea")).filter((e) => {
29063
29064
  if (Vn(e)) return !1;
29064
29065
  let t = (e.type || "").toLowerCase();
@@ -29069,15 +29070,15 @@ function JO() {
29069
29070
  "image"
29070
29071
  ].includes(t) || e.disabled || e.readOnly) return !1;
29071
29072
  try {
29072
- let t = WO(e);
29073
+ let t = GO(e);
29073
29074
  if (t.display === "none" || t.visibility === "hidden") return !1;
29074
29075
  } catch {}
29075
29076
  return !0;
29076
29077
  }));
29077
29078
  }), e;
29078
29079
  }
29079
- function YO() {
29080
- return JO().map((e, t) => {
29080
+ function XO() {
29081
+ return YO().map((e, t) => {
29081
29082
  let n = {
29082
29083
  formIndex: 0,
29083
29084
  fieldIndex: t,
@@ -29085,7 +29086,7 @@ function YO() {
29085
29086
  type: e.type || "text",
29086
29087
  name: e.name || null,
29087
29088
  id: e.id || null,
29088
- label: qO(e),
29089
+ label: JO(e),
29089
29090
  placeholder: e.placeholder || null
29090
29091
  };
29091
29092
  return e.tagName === "SELECT" && (n.options = Array.from(e.options).filter((e) => e.value !== "" && !e.disabled).map((e) => ({
@@ -29094,13 +29095,13 @@ function YO() {
29094
29095
  })), n.currentValue = e.value || null), n;
29095
29096
  });
29096
29097
  }
29097
- function XO() {
29098
+ function ZO() {
29098
29099
  let e = [];
29099
- return GO((t) => {
29100
+ return KO((t) => {
29100
29101
  e.push(...Array.from(t.querySelectorAll("button, [role=\"button\"], input[type=\"submit\"], input[type=\"button\"]")).filter((e) => {
29101
29102
  if (Vn(e) || e.disabled) return !1;
29102
29103
  try {
29103
- let t = WO(e);
29104
+ let t = GO(e);
29104
29105
  if (t.display === "none" || t.visibility === "hidden") return !1;
29105
29106
  } catch {}
29106
29107
  return !0;
@@ -29112,7 +29113,7 @@ function XO() {
29112
29113
  type: e.type || e.tagName
29113
29114
  }));
29114
29115
  }
29115
- function ZO(e, t) {
29116
+ function QO(e, t) {
29116
29117
  try {
29117
29118
  if (!e?.getBoundingClientRect || !t?.getBoundingClientRect) return Infinity;
29118
29119
  let n = e.getBoundingClientRect(), r = t.getBoundingClientRect(), i = {
@@ -29127,7 +29128,7 @@ function ZO(e, t) {
29127
29128
  return Infinity;
29128
29129
  }
29129
29130
  }
29130
- function QO(e, t) {
29131
+ function $O(e, t) {
29131
29132
  let n = String(t || "").toLowerCase().trim();
29132
29133
  if (!n) return 0;
29133
29134
  let r = (e.innerText || e.textContent || "").replace(/\s+/g, " ").trim(), i = [
@@ -29145,14 +29146,14 @@ function QO(e, t) {
29145
29146
  for (let e of a) i.includes(e) && (o += 1);
29146
29147
  return o / a.length * 92;
29147
29148
  }
29148
- function $O(e, t) {
29149
+ function ek(e, t) {
29149
29150
  let n = [];
29150
- GO((e) => {
29151
+ KO((e) => {
29151
29152
  let t = Array.from(e.querySelectorAll("button, [role=\"button\"], input[type=\"submit\"], input[type=\"button\"], a[href]"));
29152
29153
  n.push(...t.filter((e) => {
29153
29154
  if (Vn(e) || e.disabled) return !1;
29154
29155
  try {
29155
- let t = WO(e);
29156
+ let t = GO(e);
29156
29157
  if (t.display === "none" || t.visibility === "hidden" || t.opacity === "0") return !1;
29157
29158
  } catch {}
29158
29159
  return !0;
@@ -29160,7 +29161,7 @@ function $O(e, t) {
29160
29161
  });
29161
29162
  let r = 0, i = n.map((t) => ({
29162
29163
  el: t,
29163
- s: QO(t, e)
29164
+ s: $O(t, e)
29164
29165
  }));
29165
29166
  for (let { s: e } of i) e > r && (r = e);
29166
29167
  if (r < 28) return null;
@@ -29170,14 +29171,14 @@ function $O(e, t) {
29170
29171
  if (o.length) {
29171
29172
  let e = a[0], t = Infinity;
29172
29173
  for (let n of a) for (let r of o) {
29173
- let i = ZO(n, r);
29174
+ let i = QO(n, r);
29174
29175
  i < t && (t = i, e = n);
29175
29176
  }
29176
29177
  return e;
29177
29178
  }
29178
29179
  return a[0];
29179
29180
  }
29180
- function ek(e) {
29181
+ function tk(e) {
29181
29182
  if (e == null) return {};
29182
29183
  if (typeof e == "string") {
29183
29184
  let t = e.trim();
@@ -29190,12 +29191,12 @@ function ek(e) {
29190
29191
  }
29191
29192
  return e;
29192
29193
  }
29193
- function tk(e) {
29194
+ function nk(e) {
29194
29195
  if (!e || typeof e != "object") return null;
29195
29196
  let t = e.url ?? e.target_url ?? e.page_url ?? e.pageUrl ?? e.link ?? e.href ?? e.path;
29196
29197
  return t == null ? null : String(t).trim() || null;
29197
29198
  }
29198
- function nk() {
29199
+ function rk() {
29199
29200
  let e = {};
29200
29201
  document.querySelectorAll("h1, h2, h3, h4, h5, h6").forEach((t) => {
29201
29202
  if (t.id) return;
@@ -29210,7 +29211,7 @@ function nk() {
29210
29211
  e[r] = !0, t.id = r;
29211
29212
  });
29212
29213
  }
29213
- function rk() {
29214
+ function ik() {
29214
29215
  let e = (e) => {
29215
29216
  let t = Array.from(e).filter((e) => !e.closest("#flowengage-root, .flowengage-shell, .flowengage-widget-root") && !e.closest("nav, footer, header, aside, .nav, .footer, .header, .sidebar")), n = [], r = 0;
29216
29217
  for (; r < t.length;) {
@@ -29253,7 +29254,7 @@ function rk() {
29253
29254
  introText: o
29254
29255
  };
29255
29256
  }
29256
- function ik(e) {
29257
+ function ak(e) {
29257
29258
  if (!e || typeof document > "u") return "";
29258
29259
  let t = new Set([
29259
29260
  "script",
@@ -29339,11 +29340,11 @@ function ik(e) {
29339
29340
  return d.has(t) ? !1 : (d.add(t), !0);
29340
29341
  }).join("\n").replace(/\n{3,}/g, "\n\n").trim();
29341
29342
  }
29342
- function ak(e) {
29343
+ function ok(e) {
29343
29344
  let t = e.siteId || null, n = (e.apiBaseUrl || "").replace(/\/$/, ""), r = typeof e.getLastUserVoiceText == "function" ? e.getLastUserVoiceText : null, i = [], a = {
29344
29345
  "fwh-navigate-mvp": async (n) => {
29345
29346
  $("fwh-navigate-mvp ▶ raw parameters:", n);
29346
- let i = ek(n), a = tk(i);
29347
+ let i = tk(n), a = nk(i);
29347
29348
  if ($("fwh-navigate-mvp · coerced:", {
29348
29349
  url: a,
29349
29350
  sectionText: i.section_text ?? i.sectionText ?? i.section,
@@ -29377,11 +29378,11 @@ function ak(e) {
29377
29378
  return $("fwh-navigate-mvp ✖ blocked", e), e;
29378
29379
  }
29379
29380
  try {
29380
- OO(`Navigating to ${a}...`, { spinner: !0 }), NO(), zn();
29381
+ kO(`Navigating to ${a}...`, { spinner: !0 }), PO(), zn();
29381
29382
  try {
29382
29383
  let e = r ? r() : "";
29383
29384
  if (e && t) {
29384
- let n = CO([{
29385
+ let n = wO([{
29385
29386
  sender: "user",
29386
29387
  message: e
29387
29388
  }]);
@@ -29409,8 +29410,8 @@ function ak(e) {
29409
29410
  typeof window < "u" && window.scrollTo(0, 0);
29410
29411
  } catch {}
29411
29412
  let s = [], c = null, l = "", u = Date.now() + 12e3;
29412
- for (; Date.now() < u && (await new Promise((e) => setTimeout(e, 300)), {headings: s, pageTitleHeading: c, introText: l} = rk(), !(s.length >= 1)););
29413
- nk(), $("fwh-navigate-mvp → page headings collected:", s, "titleHeading:", c);
29413
+ for (; Date.now() < u && (await new Promise((e) => setTimeout(e, 300)), {headings: s, pageTitleHeading: c, introText: l} = ik(), !(s.length >= 1)););
29414
+ rk(), $("fwh-navigate-mvp → page headings collected:", s, "titleHeading:", c);
29414
29415
  let d = s.length ? s.join(" | ") : "none", f = s.length ? "Use ONLY these exact heading strings for fwh-highlight-mvp — never invent or abbreviate." : "No headings collected yet — call fwh-get-current-page-mvp immediately (no speech) to get the live headings before speaking or highlighting.", p = c ? ` "${c}" is the PAGE TITLE, not a content section — do not fwh-highlight-mvp it separately; if doing a walkthrough, just fold this intro into your opening line: "${l || "(no intro text found)"}"` : l ? ` No separate page-title heading detected, but this intro text precedes the first section — mention it briefly before covering sections: "${l}"` : "", m = "";
29415
29416
  try {
29416
29417
  if (s.length > 0) {
@@ -29418,7 +29419,7 @@ function ak(e) {
29418
29419
  for (let n of e) {
29419
29420
  let e = br(null, n);
29420
29421
  if (e) {
29421
- let r = ik(e).substring(0, 800);
29422
+ let r = ak(e).substring(0, 800);
29422
29423
  r && t.push(`[Section: ${n}] ${r}`);
29423
29424
  }
29424
29425
  }
@@ -29435,45 +29436,45 @@ function ak(e) {
29435
29436
  return `OK_NAVIGATE_RELOADING. Navigating to the page now; the voice session will resume automatically on the new page. When the session resumes, say EXACTLY: "I have navigated you on ${o} page. Do you want to know about any specific section or want a complete overview?" Then STOP — wait for the visitor's reply.`;
29436
29437
  } catch (e) {
29437
29438
  let t = `Navigation error: ${e?.message || String(e)}`;
29438
- return $("fwh-navigate-mvp ✖", t), OO("Navigation failed", {
29439
+ return $("fwh-navigate-mvp ✖", t), kO("Navigation failed", {
29439
29440
  spinner: !1,
29440
29441
  icon: "⚠️",
29441
29442
  duration: 1800
29442
29443
  }), t;
29443
29444
  } finally {
29444
- PO(), kO(900);
29445
+ FO(), AO(900);
29445
29446
  }
29446
29447
  },
29447
29448
  "fwh-highlight-mvp": async (e) => {
29448
29449
  $("fwh-highlight-mvp ▶", e);
29449
- let t = ek(e), n = t?.section_id || t?.sectionId, r = t?.section_text || t?.sectionText;
29450
+ let t = tk(e), n = t?.section_id || t?.sectionId, r = t?.section_text || t?.sectionText;
29450
29451
  if (typeof window < "u" && window.__fe_user_nav_during_speech) {
29451
29452
  let e = window.__fe_user_nav_during_speech, t = window.location.pathname;
29452
29453
  if (Date.now() - e.ts >= 3e4) window.__fe_user_nav_during_speech = null;
29453
29454
  else return $("flowengage_highlight ✖ blocked — user navigated during speech", e), `NAV_CHANGED: The visitor navigated from "${e.fromPageName}" to "${e.toPageName}" (current path: ${t}) while you were speaking. STOP the current walkthrough immediately. DO NOT call flowengage_highlight again. Say out loud: "I see you've navigated to the ${e.toPageName} page — do you want me to continue what I was explaining, or shall I guide you through this page?" Wait for the visitor's answer before doing anything else.`;
29454
29455
  }
29455
- nk();
29456
+ rk();
29456
29457
  let i = ((e) => e && e.replace(/^\d+\.\s*/, "").replace(/^["']|["']$/g, "").trim())(r), a = br(n || null, i || null);
29457
29458
  if (!a && i) {
29458
29459
  let e = Date.now() + 600;
29459
- for (; !a && Date.now() < e;) await new Promise((e) => setTimeout(e, 50)), nk(), a = br(null, i);
29460
+ for (; !a && Date.now() < e;) await new Promise((e) => setTimeout(e, 50)), rk(), a = br(null, i);
29460
29461
  }
29461
29462
  if (!a) {
29462
29463
  $("fwh-highlight-mvp ✖ no element for:", i || n);
29463
- let { headings: e } = rk(), t = e.length ? `Page headings: ${e.map((e) => `"${e}"`).join(" | ")}. Use one of these EXACT strings for section_text — no numbers, no quotes around them.` : "No headings found — skip highlight and continue speaking.";
29464
+ let { headings: e } = ik(), t = e.length ? `Page headings: ${e.map((e) => `"${e}"`).join(" | ")}. Use one of these EXACT strings for section_text — no numbers, no quotes around them.` : "No headings found — skip highlight and continue speaking.";
29464
29465
  return `HIGHLIGHT_NOT_FOUND: "${i || n}" on the current page. ${t}`;
29465
29466
  }
29466
29467
  return Rn(a), $("fwh-highlight-mvp ✓", i || n), `OK_HIGHLIGHT: "${i || n}". WALKTHROUGH: continue immediately to the next section — do NOT pause between sections.`;
29467
29468
  },
29468
29469
  "fwh-read-content-mvp": async (e) => {
29469
29470
  $("fwh-read-content-mvp ▶", e);
29470
- let t = ek(e), n = t?.section_text || t?.sectionText || "";
29471
+ let t = tk(e), n = t?.section_text || t?.sectionText || "";
29471
29472
  try {
29472
29473
  let e = "";
29473
29474
  if (n) {
29474
29475
  let t = br(null, n);
29475
29476
  if (!t) return `Could not find section "${n}" on the page.`;
29476
- e = ik(t);
29477
+ e = ak(t);
29477
29478
  } else {
29478
29479
  let t = (document.querySelector("main") || document.querySelector("article") || document.querySelector("[role=\"main\"]") || document.querySelector("#content") || document.querySelector(".content") || document.body).cloneNode(!0);
29479
29480
  t.querySelectorAll("nav, footer, header, aside, script, style, noscript, .nav, .footer, .header, .sidebar, #flowengage-root, .flowengage-shell, .flowengage-widget-root").forEach((e) => e.remove()), e = t.textContent.replace(/\s+/g, " ").trim();
@@ -29485,7 +29486,7 @@ function ak(e) {
29485
29486
  },
29486
29487
  "fwh-page-content-mvp": async (e) => {
29487
29488
  $("fwh-page-content-mvp ▶", e);
29488
- let r = ek(e), i = r?.url || r?.page_url || "";
29489
+ let r = tk(e), i = r?.url || r?.page_url || "";
29489
29490
  if ($("fwh-page-content-mvp · url:", i, "siteId:", t, "apiBase:", n || "(empty)"), !i) return $("fwh-page-content-mvp ✖ missing url"), "Missing url parameter.";
29490
29491
  if (!t) return $("fwh-page-content-mvp ✖ no siteId"), "Site is not configured.";
29491
29492
  if (!n) return $("fwh-page-content-mvp ✖ no api base"), "API base URL is missing; cannot fetch page content.";
@@ -29517,7 +29518,7 @@ function ak(e) {
29517
29518
  },
29518
29519
  "fwh-search-mvp": async (e) => {
29519
29520
  $("fwh-search-mvp ▶", e);
29520
- let r = ek(e).query;
29521
+ let r = tk(e).query;
29521
29522
  if (!r) return $("fwh-search-mvp ✖ missing query"), "Missing query parameter.";
29522
29523
  if (!t) return $("fwh-search-mvp ✖ no siteId"), "Search unavailable (no siteId configured).";
29523
29524
  if (!n) return $("fwh-search-mvp ✖ no api base"), "Search unavailable (no API base URL).";
@@ -29555,7 +29556,7 @@ function ak(e) {
29555
29556
  "[class*='menu'] a",
29556
29557
  "[class*='header'] a"
29557
29558
  ];
29558
- if (GO((t) => {
29559
+ if (KO((t) => {
29559
29560
  for (let r of n) try {
29560
29561
  t.querySelectorAll(r).forEach((t) => {
29561
29562
  if (Vn(t)) return;
@@ -29563,7 +29564,7 @@ function ak(e) {
29563
29564
  if (!r || !n || n === "#" || n.startsWith("javascript:")) return;
29564
29565
  try {
29565
29566
  let e = t.parentElement;
29566
- if (e && WO(e).display === "none" && !e.closest("nav, [role='navigation'], header, [class*='nav'], [class*='menu']")) return;
29567
+ if (e && GO(e).display === "none" && !e.closest("nav, [role='navigation'], header, [class*='nav'], [class*='menu']")) return;
29567
29568
  } catch {}
29568
29569
  let i = r.toLowerCase() + "|" + n;
29569
29570
  e.has(i) || e.set(i, {
@@ -29574,7 +29575,7 @@ function ak(e) {
29574
29575
  } catch {}
29575
29576
  t.querySelectorAll("select").forEach((t) => {
29576
29577
  if (Vn(t)) return;
29577
- let n = qO(t);
29578
+ let n = JO(t);
29578
29579
  /nav|menu|page|section|go to/i.test(n || t.name || t.id || "") && Array.from(t.options).forEach((r) => {
29579
29580
  if (!r.value || r.disabled) return;
29580
29581
  let i = r.text.trim();
@@ -29596,7 +29597,7 @@ function ak(e) {
29596
29597
  "fwh-request-email-mvp": async () => ($("fwh-request-email-mvp ▶"), typeof e.requestEmailCollection == "function" && e.requestEmailCollection(), "EMAIL_BOX_SHOWN. An email input text box is now visible to the visitor. Say EXACTLY: \"Please enter your email in the text box to continue.\" Then stop and wait silently — do NOT ask them to say it aloud, do NOT repeat, and do NOT answer any other question until you receive the EMAIL_SAVED message."),
29597
29598
  "fwh-get-current-page-mvp": async () => {
29598
29599
  if ($("fwh-get-current-page-mvp ▶"), typeof window > "u") return "Cannot determine current page (no browser context).";
29599
- let e = window.location.href, t = window.location.pathname, n = document.title || "", { headings: r, pageTitleHeading: i, introText: a } = rk();
29600
+ let e = window.location.href, t = window.location.pathname, n = document.title || "", { headings: r, pageTitleHeading: i, introText: a } = ik();
29600
29601
  $("fwh-get-current-page-mvp ✓", {
29601
29602
  url: e,
29602
29603
  path: t,
@@ -29608,7 +29609,7 @@ function ak(e) {
29608
29609
  return `CURRENT_PAGE. URL: ${e} | Title: ${n} | Page sections (${r.length} total): ${s}.${o} *** WALKTHROUGH RULES: (1) For fwh-highlight-mvp, pass the heading text EXACTLY as shown — no numbers, no extra punctuation, no paraphrasing. (2) TIMING IS CRITICAL: the tool fires AFTER the speech that comes before it. This means: put the SHORT TRANSITION (1-5 words) BEFORE the tool call, put the FULL DESCRIPTION AFTER the tool call. Pattern: "Transition phrase." + fwh-highlight-mvp("Heading") + "Full description (3-4 sentences)". NEVER describe a section before calling its highlight tool. (3) DO NOT call this tool again. If the visitor requested a walkthrough: START IT NOW${o ? " (open with the intro note above first)" : ""} — "Let me walk you through this." + fwh-highlight-mvp("${r[0] || "first heading"}") + "Description..." etc. Cover ALL ${r.length} sections without pausing. ***`;
29609
29610
  },
29610
29611
  "fwh-list-forms-mvp": async () => {
29611
- let e = YO(), t = XO();
29612
+ let e = XO(), t = ZO();
29612
29613
  $("fwh-list-forms-mvp ✓", `${e.length} field(s)`, `${t.length} button(s)`);
29613
29614
  let n = e.map((e) => ({
29614
29615
  ...e,
@@ -29622,12 +29623,12 @@ function ak(e) {
29622
29623
  },
29623
29624
  "fwh-fill-form-mvp": async () => "FORM_FILLING_DISABLED: Form filling is not available at this time. Tell the visitor what fields are present (use fwh-list-forms-mvp) and ask them to fill the form themselves.",
29624
29625
  "fwh-click-button-mvp": async (e) => {
29625
- let t = ek(e), n = (t.button_text ?? t.buttonText ?? t.text ?? "").trim();
29626
+ let t = tk(e), n = (t.button_text ?? t.buttonText ?? t.text ?? "").trim();
29626
29627
  if ($("fwh-click-button-mvp ▶", n), !n) return "Missing button_text: pass the visible label, e.g. Conduct Audit.";
29627
- let r = $O(n, i);
29628
+ let r = ek(n, i);
29628
29629
  if (!r) return $("fwh-click-button-mvp ✖ no match"), `Could not find a button matching "${n}". Call fwh-list-forms-mvp to see button texts.`;
29629
29630
  try {
29630
- OO(`Clicking ${n}...`, { spinner: !0 });
29631
+ kO(`Clicking ${n}...`, { spinner: !0 });
29631
29632
  try {
29632
29633
  r.scrollIntoView({
29633
29634
  block: "center",
@@ -29636,22 +29637,22 @@ function ak(e) {
29636
29637
  } catch {
29637
29638
  r.scrollIntoView(!0);
29638
29639
  }
29639
- await zO(r), r.focus?.(), await VO(r), HO(r), r.click();
29640
+ await BO(r), r.focus?.(), await HO(r), UO(r), r.click();
29640
29641
  let e = (r.textContent || r.value || r.getAttribute("aria-label") || "").trim().slice(0, 80) || "button", t = `OK_CLICK ${e}`;
29641
- return $("fwh-click-button-mvp ✓", t), OO(`Clicked ${e}`, {
29642
+ return $("fwh-click-button-mvp ✓", t), kO(`Clicked ${e}`, {
29642
29643
  spinner: !1,
29643
29644
  icon: "✅",
29644
29645
  duration: 1200
29645
29646
  }), t;
29646
29647
  } catch (e) {
29647
29648
  let t = `Click failed: ${e?.message || String(e)}`;
29648
- return $("fwh-click-button-mvp ✖", t), OO("Click failed", {
29649
+ return $("fwh-click-button-mvp ✖", t), kO("Click failed", {
29649
29650
  spinner: !1,
29650
29651
  icon: "⚠️",
29651
29652
  duration: 1800
29652
29653
  }), t;
29653
29654
  } finally {
29654
- BO(), kO(700);
29655
+ VO(), AO(700);
29655
29656
  }
29656
29657
  }
29657
29658
  };
@@ -29667,7 +29668,7 @@ function ak(e) {
29667
29668
  }
29668
29669
  //#endregion
29669
29670
  //#region src/utils/wrapVoiceToolsForLogging.js
29670
- function ok(e) {
29671
+ function sk(e) {
29671
29672
  return !e || typeof e != "object" ? e : Object.fromEntries(Object.entries(e).map(([e, t]) => [e, async (n) => {
29672
29673
  let r = Fn();
29673
29674
  r ? console.log("[FlowEngage:voice-tool] ▶", e, n) : console.info(`[FlowEngage] voice tool » ${e}`);
@@ -29684,7 +29685,7 @@ function ok(e) {
29684
29685
  }
29685
29686
  //#endregion
29686
29687
  //#region src/components/FlowEngageWidget.jsx
29687
- var sk = {
29688
+ var ck = {
29688
29689
  blue: "#135bd8",
29689
29690
  red: "#ef334b",
29690
29691
  yellow: "#ffbd2e",
@@ -29692,7 +29693,7 @@ var sk = {
29692
29693
  highlight: "rgba(255,255,255,0.9)",
29693
29694
  green: "#10b981"
29694
29695
  };
29695
- function ck(e) {
29696
+ function lk(e) {
29696
29697
  if (!Array.isArray(e) || e.length < 2) return "linear-gradient(145deg, #dce8f022 0%, #e8dff522 45%, #f5e0e022 100%), #f7f8fa";
29697
29698
  let [t, n, r] = e;
29698
29699
  return e.length >= 3 && r ? [
@@ -29706,12 +29707,12 @@ function ck(e) {
29706
29707
  "#f7f8fa"
29707
29708
  ].join(", ");
29708
29709
  }
29709
- function lk(e) {
29710
+ function uk(e) {
29710
29711
  if (!e || typeof e != "string") return "#1a1a1a";
29711
29712
  let t = e.replace("#", ""), n = t.length === 3 ? t.split("").map((e) => e + e).join("") : t, r = parseInt(n.slice(0, 2), 16) / 255, i = parseInt(n.slice(2, 4), 16) / 255, a = parseInt(n.slice(4, 6), 16) / 255, o = (e) => e <= .04045 ? e / 12.92 : ((e + .055) / 1.055) ** 2.4;
29712
29713
  return .2126 * o(r) + .7152 * o(i) + .0722 * o(a) > .179 ? "#1a1a1a" : "#ffffff";
29713
29714
  }
29714
- function uk(t) {
29715
+ function dk(t) {
29715
29716
  let [n, r] = e.useState(null), i = typeof t == "string" ? t.trim() : "";
29716
29717
  return e.useEffect(() => {
29717
29718
  if (!i) {
@@ -29729,8 +29730,8 @@ function uk(t) {
29729
29730
  };
29730
29731
  }, [i]), n;
29731
29732
  }
29732
- function dk({ logo: t, style: n }) {
29733
- let r = uk(typeof t == "string" ? t : null);
29733
+ function fk({ logo: t, style: n }) {
29734
+ let r = dk(typeof t == "string" ? t : null);
29734
29735
  if (!t) return null;
29735
29736
  if (typeof t == "string") return r ? /* @__PURE__ */ g("img", {
29736
29737
  src: r,
@@ -29755,7 +29756,7 @@ function dk({ logo: t, style: n }) {
29755
29756
  children: i
29756
29757
  }) : null;
29757
29758
  }
29758
- function fk({ title: e }) {
29759
+ function pk({ title: e }) {
29759
29760
  return /* @__PURE__ */ g("div", {
29760
29761
  style: {
29761
29762
  width: "100%",
@@ -29773,18 +29774,18 @@ function fk({ title: e }) {
29773
29774
  children: String(e || "FE").split(/\s+/).filter(Boolean).slice(0, 2).map((e) => e[0]?.toUpperCase() || "").join("") || "FE"
29774
29775
  });
29775
29776
  }
29776
- function pk(e, t) {
29777
+ function mk(e, t) {
29777
29778
  let n = (t || "").trim();
29778
29779
  return n ? !!(/\b(let'?s|let us)\s+(end|stop|finish|wrap up|close)\s+(the\s+)?(voice\s+)?(session|call|chat)\b/i.test(n) || /\bend\s+(this\s+)?(the\s+)?(voice\s+)?(session|call|chat)\b/i.test(n) || /\b(hang\s+up|disconnect)\b/i.test(n) || e === "bot" && (/\b(that'?s all|we'?re done)\b/i.test(n) || /\b(goodbye|bye)\b/i.test(n) || /\b(I'?ll|I will|Let me|I can|I'?m going to)\s+(end|close)\s+(the\s+)?(voice\s+)?(session|call)\b/i.test(n) || /\b(ending|closing)\s+(the\s+)?(voice\s+)?session\b|\bvoice\s+session\s+(is\s+)?(now\s+)?(ended|over|closing)\b/i.test(n) || /\b(session|call)\s+(is\s+)?(now\s+)?(ended|over)\b/i.test(n) || /\bwe\s+can\s+end\s+(the\s+)?(session|call)?\s*(here|now)\b/i.test(n) || /\b(wrapping\s+up|signing\s+off)\b/i.test(n))) : !1;
29779
29780
  }
29780
- function mk({ orbColors: e, ...t }) {
29781
- return /* @__PURE__ */ g(mO, {
29781
+ function hk({ orbColors: e, ...t }) {
29782
+ return /* @__PURE__ */ g(hO, {
29782
29783
  colors: e,
29783
29784
  ...t
29784
29785
  });
29785
29786
  }
29786
- function hk({ copy: e, orbColors: t, primaryColor: n, onYes: r, onLater: i, isMobile: a, isClosing: o }) {
29787
- let s = n || sk.green, c = lk(s), l = a ? 72 : 94, u = /* @__PURE__ */ _("div", {
29787
+ function gk({ copy: e, orbColors: t, primaryColor: n, onYes: r, onLater: i, isMobile: a, isClosing: o }) {
29788
+ let s = n || ck.green, c = uk(s), l = a ? 72 : 94, u = /* @__PURE__ */ _("div", {
29788
29789
  style: {
29789
29790
  display: "flex",
29790
29791
  alignItems: a ? "flex-end" : "center",
@@ -29910,7 +29911,7 @@ function hk({ copy: e, orbColors: t, primaryColor: n, onYes: r, onLater: i, isMo
29910
29911
  delay: 0
29911
29912
  },
29912
29913
  style: { flexShrink: 0 },
29913
- children: /* @__PURE__ */ g(mk, {
29914
+ children: /* @__PURE__ */ g(hk, {
29914
29915
  size: l,
29915
29916
  orbColors: t
29916
29917
  })
@@ -29942,8 +29943,8 @@ function hk({ copy: e, orbColors: t, primaryColor: n, onYes: r, onLater: i, isMo
29942
29943
  children: u
29943
29944
  })] });
29944
29945
  }
29945
- function gk({ copy: e, orbColors: t, primaryColor: n, onVoice: r, onText: i, onClose: a, isMobile: o, isClosing: s }) {
29946
- let c = n || sk.green, l = lk(c);
29946
+ function _k({ copy: e, orbColors: t, primaryColor: n, onVoice: r, onText: i, onClose: a, isMobile: o, isClosing: s }) {
29947
+ let c = n || ck.green, l = uk(c);
29947
29948
  return /* @__PURE__ */ _(Pm.div, {
29948
29949
  initial: {
29949
29950
  scale: 50 / 350,
@@ -30014,7 +30015,7 @@ function gk({ copy: e, orbColors: t, primaryColor: n, onVoice: r, onText: i, onC
30014
30015
  children: /* @__PURE__ */ g("polyline", { points: "6 9 12 15 18 9" })
30015
30016
  })
30016
30017
  }),
30017
- /* @__PURE__ */ g(mk, {
30018
+ /* @__PURE__ */ g(hk, {
30018
30019
  size: 72,
30019
30020
  orbColors: t
30020
30021
  }),
@@ -30094,7 +30095,7 @@ function gk({ copy: e, orbColors: t, primaryColor: n, onVoice: r, onText: i, onC
30094
30095
  ]
30095
30096
  });
30096
30097
  }
30097
- function _k({ orbColors: e, onEnterChat: t, onEndChat: n, agentId: r, siteId: i, apiBaseUrl: a, chatId: s, historyRef: l, onMessageSync: u, voiceEndCounter: d, websiteName: f, voiceFirstMessage: h, captureVisitorEmail: v, emailRequired: y, emailCaptureEnabled: b = !0, listeningLabel: x = "Listening...", enterChatModeLabel: S = "Enter Chat Mode", endConversationLabel: C = "End Conversation" }) {
30098
+ function vk({ orbColors: e, onEnterChat: t, onEndChat: n, agentId: r, siteId: i, apiBaseUrl: a, chatId: s, historyRef: l, onMessageSync: u, voiceEndCounter: d, websiteName: f, voiceFirstMessage: h, captureVisitorEmail: v, emailRequired: y, emailCaptureEnabled: b = !0, listeningLabel: x = "Listening...", enterChatModeLabel: S = "Enter Chat Mode", endConversationLabel: C = "End Conversation" }) {
30098
30099
  c(() => (console.log("[FlowEngage:VoiceDebug] 🔵 VoiceMode MOUNTED"), () => console.log("[FlowEngage:VoiceDebug] 🔴 VoiceMode UNMOUNTED")), []);
30099
30100
  let [w, T] = m("idle"), [E, ee] = m(!1), [te, ne] = m(!1), [re, ie] = m(!1), [ae, oe] = m(""), [D, se] = m(""), ce = p(!1), le = p(!1), ue = p(null), de = p(0), fe = p(""), O = p(null), pe = p(""), me = p(async () => {}), he = p(!1), ge = p(!1), _e = p(!1), ve = p(!1), ye = p("minimized"), be = p(null), xe = p(null), Se = p(null), Ce = p(0), we = p(!1), Te = p("idle"), Ee = p(!1), De = p(!1), Oe = p(null), A = p(null), Me = p(!1), Ne = o((e = "minimized") => {
30100
30101
  console.warn("[FlowEngage:VoiceDebug] 🛑 requestSessionShutdown called", {
@@ -30171,7 +30172,7 @@ function _k({ orbColors: e, onEnterChat: t, onEndChat: n, agentId: r, siteId: i,
30171
30172
  if ((await navigator.mediaDevices.getUserMedia({ audio: !0 })).getTracks().forEach((e) => e.stop()), e) return;
30172
30173
  l.current = [], pe.current = "", he.current = !1, _e.current = !1, ve.current = !1, ye.current = "minimized", Fr({ onBeforeNavigate: () => {
30173
30174
  if (i && l.current.length > 0) try {
30174
- let e = CO(l.current);
30175
+ let e = wO(l.current);
30175
30176
  e && k(i, e);
30176
30177
  } catch {}
30177
30178
  if (!ar()) {
@@ -30193,7 +30194,7 @@ function _k({ orbColors: e, onEnterChat: t, onEndChat: n, agentId: r, siteId: i,
30193
30194
  }
30194
30195
  je();
30195
30196
  } });
30196
- let t = ok(ak({
30197
+ let t = sk(ok({
30197
30198
  siteId: i || null,
30198
30199
  apiBaseUrl: a || null,
30199
30200
  chatId: s || null,
@@ -30301,10 +30302,10 @@ function _k({ orbColors: e, onEnterChat: t, onEndChat: n, agentId: r, siteId: i,
30301
30302
  message: r,
30302
30303
  timestamp: (/* @__PURE__ */ new Date()).toISOString()
30303
30304
  }], i) try {
30304
- let e = CO(l.current);
30305
+ let e = wO(l.current);
30305
30306
  e && k(i, e);
30306
30307
  } catch {}
30307
- if (pk(n, r)) {
30308
+ if (mk(n, r)) {
30308
30309
  we.current = !0;
30309
30310
  return;
30310
30311
  }
@@ -30601,7 +30602,7 @@ function _k({ orbColors: e, onEnterChat: t, onEndChat: n, agentId: r, siteId: i,
30601
30602
  },
30602
30603
  children: "Muted"
30603
30604
  }),
30604
- /* @__PURE__ */ g(mk, {
30605
+ /* @__PURE__ */ g(hk, {
30605
30606
  size: 72,
30606
30607
  voiceState: w,
30607
30608
  isMuted: E,
@@ -30825,7 +30826,7 @@ function _k({ orbColors: e, onEnterChat: t, onEndChat: n, agentId: r, siteId: i,
30825
30826
  ]
30826
30827
  });
30827
30828
  }
30828
- function vk({ orbColors: e }) {
30829
+ function yk({ orbColors: e }) {
30829
30830
  let t = Array.isArray(e) && e.length > 0 ? e : [
30830
30831
  "#135bd8",
30831
30832
  "#ef334b",
@@ -30844,7 +30845,7 @@ function vk({ orbColors: e }) {
30844
30845
  `.replace(/\s+/g, " ").trim()
30845
30846
  } });
30846
30847
  }
30847
- var yk = () => /* @__PURE__ */ g("div", {
30848
+ var bk = () => /* @__PURE__ */ g("div", {
30848
30849
  style: {
30849
30850
  display: "flex",
30850
30851
  marginBottom: "12px",
@@ -30874,7 +30875,7 @@ var yk = () => /* @__PURE__ */ g("div", {
30874
30875
  } }, e))
30875
30876
  })
30876
30877
  });
30877
- function bk({ copy: e, orbColors: t, primaryColor: n, chatBgGradient: r, logo: i, quickChatOptions: a, onQuickChatSelect: o, isMobile: s, chatHistory: l, isAiTyping: u, isAgentTyping: d, activeScreen: f, agentName: v, agentHeadshot: y, fallbackAgentName: b, input: x, setInput: S, onSubmit: C, isConversationEnded: w, isLoading: T, isRateLimited: E, rateLimitMessage: ee, selectedFile: te, onFileSelect: ne, onRemoveSelectedFile: re, attachmentError: ie, isUploadingAttachment: ae, requiresEmail: oe, emailInput: D, setEmailInput: se, emailError: ce, emailCaptureSuccess: le, replyContext: ue, setReplyContext: de, webRTCError: fe, micError: O, setMicError: pe, dismissCallError: me, activeCallId: he, isCallMuted: ge, toggleCallMute: _e, endWebRTCCall: ve, formatCallDuration: ye, callDurationSeconds: be, isCallMinimized: xe, onExpand: Se, onCollapse: Ce, onStartVoice: we, voiceEnabled: Te, headerBgColor: Ee, onNewChat: De, showPoweredBy: Oe, privacyPolicyUrl: k, getVisitorChatHistory: ke, resumeChat: Ae, isSessionRestoring: A, isClosing: je }) {
30878
+ function xk({ copy: e, orbColors: t, primaryColor: n, chatBgGradient: r, logo: i, quickChatOptions: a, onQuickChatSelect: o, isMobile: s, chatHistory: l, isAiTyping: u, isAgentTyping: d, activeScreen: f, agentName: v, agentHeadshot: y, fallbackAgentName: b, input: x, setInput: S, onSubmit: C, isConversationEnded: w, isLoading: T, isRateLimited: E, rateLimitMessage: ee, selectedFile: te, onFileSelect: ne, onRemoveSelectedFile: re, attachmentError: ie, isUploadingAttachment: ae, requiresEmail: oe, emailInput: D, setEmailInput: se, emailError: ce, emailCaptureSuccess: le, replyContext: ue, setReplyContext: de, webRTCError: fe, micError: O, setMicError: pe, dismissCallError: me, activeCallId: he, isCallMuted: ge, toggleCallMute: _e, endWebRTCCall: ve, formatCallDuration: ye, callDurationSeconds: be, isCallMinimized: xe, onExpand: Se, onCollapse: Ce, onStartVoice: we, voiceEnabled: Te, headerBgColor: Ee, onNewChat: De, showPoweredBy: Oe, privacyPolicyUrl: k, getVisitorChatHistory: ke, resumeChat: Ae, isSessionRestoring: A, isClosing: je }) {
30878
30879
  let Me = l.length > 0, Ne = T || E || w, Pe = !!he, [Fe, Ie] = m(!1), [Le, Re] = m(!1), [ze, Be] = m([]), [Ve, He] = m(!1), Ue = p(null), [We, j] = m(() => typeof window < "u" ? window.visualViewport?.height ?? window.innerHeight : 600), [Ge, Ke] = m(0);
30879
30880
  c(() => {
30880
30881
  if (!s) return;
@@ -30912,10 +30913,10 @@ function bk({ copy: e, orbColors: t, primaryColor: n, chatBgGradient: r, logo: i
30912
30913
  "--flowengage-primary": n,
30913
30914
  "--flowengage-accent": n,
30914
30915
  position: "fixed",
30915
- left: "8px",
30916
- right: "8px",
30916
+ left: "0",
30917
+ right: "0",
30917
30918
  bottom: `${Ge}px`,
30918
- height: We > 0 ? `${Math.round(We * .92)}px` : "90dvh",
30919
+ height: We > 0 ? `${Math.round(We * (qe ? 1 : .92))}px` : "90dvh",
30919
30920
  background: r,
30920
30921
  borderRadius: "16px 16px 0 0",
30921
30922
  display: "flex",
@@ -31014,7 +31015,7 @@ function bk({ copy: e, orbColors: t, primaryColor: n, chatBgGradient: r, logo: i
31014
31015
  justifyContent: "center",
31015
31016
  height: "40px"
31016
31017
  },
31017
- children: i ? /* @__PURE__ */ g(dk, {
31018
+ children: i ? /* @__PURE__ */ g(fk, {
31018
31019
  logo: i,
31019
31020
  style: {
31020
31021
  height: "34px",
@@ -31027,7 +31028,7 @@ function bk({ copy: e, orbColors: t, primaryColor: n, chatBgGradient: r, logo: i
31027
31028
  height: "40px",
31028
31029
  flexShrink: 0
31029
31030
  },
31030
- children: /* @__PURE__ */ g(fk, { title: e.chatTitle })
31031
+ children: /* @__PURE__ */ g(pk, { title: e.chatTitle })
31031
31032
  })
31032
31033
  }), o && /* @__PURE__ */ g("div", {
31033
31034
  style: {
@@ -31310,7 +31311,7 @@ function bk({ copy: e, orbColors: t, primaryColor: n, chatBgGradient: r, logo: i
31310
31311
  })
31311
31312
  ]
31312
31313
  }),
31313
- /* @__PURE__ */ g(aO, {
31314
+ /* @__PURE__ */ g(oO, {
31314
31315
  webRTCError: fe,
31315
31316
  micError: O,
31316
31317
  setMicError: pe,
@@ -31318,7 +31319,7 @@ function bk({ copy: e, orbColors: t, primaryColor: n, chatBgGradient: r, logo: i
31318
31319
  isRateLimited: E,
31319
31320
  rateLimitMessage: ee
31320
31321
  }),
31321
- xe && /* @__PURE__ */ g(SO, {
31322
+ xe && /* @__PURE__ */ g(CO, {
31322
31323
  agentName: v,
31323
31324
  agentHeadshot: y,
31324
31325
  fallbackAgentName: b,
@@ -31458,11 +31459,11 @@ function bk({ copy: e, orbColors: t, primaryColor: n, chatBgGradient: r, logo: i
31458
31459
  isLoading: T,
31459
31460
  isAgentTyping: d,
31460
31461
  setReplyContext: de,
31461
- TypingDots: yk,
31462
+ TypingDots: bk,
31462
31463
  primaryColor: n,
31463
31464
  agentHeadshot: y,
31464
31465
  agentDisplayName: v || b,
31465
- botAvatarNode: /* @__PURE__ */ g(vk, { orbColors: t })
31466
+ botAvatarNode: /* @__PURE__ */ g(yk, { orbColors: t })
31466
31467
  }) : A ? /* @__PURE__ */ _("div", {
31467
31468
  style: {
31468
31469
  flex: 1,
@@ -31503,7 +31504,7 @@ function bk({ copy: e, orbColors: t, primaryColor: n, chatBgGradient: r, logo: i
31503
31504
  padding: "28px 24px"
31504
31505
  },
31505
31506
  children: [
31506
- /* @__PURE__ */ g(mk, {
31507
+ /* @__PURE__ */ g(hk, {
31507
31508
  size: 94,
31508
31509
  orbColors: t
31509
31510
  }),
@@ -31594,7 +31595,7 @@ function bk({ copy: e, orbColors: t, primaryColor: n, chatBgGradient: r, logo: i
31594
31595
  zIndex: 1,
31595
31596
  padding: oe ? "6px 0 0" : "12px 0 0"
31596
31597
  },
31597
- children: /* @__PURE__ */ g(iO, {
31598
+ children: /* @__PURE__ */ g(aO, {
31598
31599
  input: x,
31599
31600
  setInput: S,
31600
31601
  onSubmit: C,
@@ -31668,7 +31669,7 @@ function bk({ copy: e, orbColors: t, primaryColor: n, chatBgGradient: r, logo: i
31668
31669
  ]
31669
31670
  });
31670
31671
  }
31671
- function xk() {
31672
+ function Sk() {
31672
31673
  let { status: e, runtimeConfig: t, resolvedConfig: n, chatHistory: r, isOpen: i, activeScreen: a, isHumanHandled: s, agentName: l, agentHeadshot: u, visitorEmail: h, isAgentTyping: v, isAiTyping: y, isLoading: b, isRateLimited: x, rateLimitMessage: S, isConversationEnded: C, incomingCall: w, activeCallId: T, callConnectionState: E, callConnectedAt: ee, isCallMuted: te, webRTCError: ne, language: re, chatId: ie, historyRef: ae, onMessageSync: oe, sendMessage: D, uploadChatFile: se, openWidget: ce, captureVisitorEmail: le, setVoiceMode: ue, endConversation: de, startNewChat: pe, acceptCall: me, rejectCall: he, endWebRTCCall: ge, toggleCallMute: _e, dismissCallError: ve, startTyping: ye, stopTyping: be, updateTypingDraft: xe, getVisitorChatHistory: Se, resumeChat: Ce, isSessionRestoring: we, openToChatCounter: Te, voiceEndCounter: Ee } = Pn();
31673
31674
  c(() => {
31674
31675
  try {
@@ -31690,7 +31691,7 @@ function xk() {
31690
31691
  small: 50,
31691
31692
  medium: 64,
31692
31693
  large: 80
31693
- }, Re = Le[A.orbSize] || Le.small, ze = A.position || "bottom-right", Be = k.fallbackAgentName || "Agent", Ve = ck(Pe ?? A.chatBgColors), He = k.logo || k.logoUrl || null, Ue = re || "en", We = De.recommendations?.[Ue] || [], j = (Oe.recommendations?.[Ue] ?? We).filter((e) => String(e?.label ?? "").trim()).map((e, t) => ({
31694
+ }, Re = Le[A.orbSize] || Le.small, ze = A.position || "bottom-right", Be = k.fallbackAgentName || "Agent", Ve = lk(Pe ?? A.chatBgColors), He = k.logo || k.logoUrl || null, Ue = re || "en", We = De.recommendations?.[Ue] || [], j = (Oe.recommendations?.[Ue] ?? We).filter((e) => String(e?.label ?? "").trim()).map((e, t) => ({
31694
31695
  id: e.key || `qr-${t}`,
31695
31696
  label: e.label,
31696
31697
  message: e.label,
@@ -31980,7 +31981,7 @@ function xk() {
31980
31981
  onWheel: (e) => e.stopPropagation(),
31981
31982
  onTouchMove: (e) => e.stopPropagation(),
31982
31983
  children: [
31983
- P === "entry_prompt" && /* @__PURE__ */ g(hk, {
31984
+ P === "entry_prompt" && /* @__PURE__ */ g(gk, {
31984
31985
  copy: nt,
31985
31986
  orbColors: Pe,
31986
31987
  primaryColor: Ie,
@@ -32063,13 +32064,13 @@ function xk() {
32063
32064
  children: E === "connected" ? `${Kt(bt)} with ${it}` : `Tap to return to ${it}`
32064
32065
  })]
32065
32066
  })]
32066
- }), /* @__PURE__ */ g(mk, {
32067
+ }), /* @__PURE__ */ g(hk, {
32067
32068
  size: Re,
32068
32069
  orbColors: Pe,
32069
32070
  onClick: T ? Vt : Ne ? Xt : Qt
32070
32071
  })]
32071
32072
  }),
32072
- P === "connection_modal" && /* @__PURE__ */ g(gk, {
32073
+ P === "connection_modal" && /* @__PURE__ */ g(_k, {
32073
32074
  copy: nt,
32074
32075
  orbColors: Pe,
32075
32076
  primaryColor: Ie,
@@ -32079,7 +32080,7 @@ function xk() {
32079
32080
  isMobile: Lt,
32080
32081
  isClosing: Mt
32081
32082
  }),
32082
- P === "voice_mode" && /* @__PURE__ */ g(_k, {
32083
+ P === "voice_mode" && /* @__PURE__ */ g(vk, {
32083
32084
  orbColors: Pe,
32084
32085
  onEnterChat: Qt,
32085
32086
  onEndChat: $t,
@@ -32099,7 +32100,7 @@ function xk() {
32099
32100
  enterChatModeLabel: k.voiceEnterChatLabel || "Enter Chat Mode",
32100
32101
  endConversationLabel: k.voiceEndConversationLabel || "End Conversation"
32101
32102
  }, "voice"),
32102
- P === "call_screen" && /* @__PURE__ */ g(xO, {
32103
+ P === "call_screen" && /* @__PURE__ */ g(SO, {
32103
32104
  incomingCall: w,
32104
32105
  activeCallId: T,
32105
32106
  callConnectionState: E,
@@ -32118,7 +32119,7 @@ function xk() {
32118
32119
  orbColors: Pe,
32119
32120
  chatHistory: r
32120
32121
  }),
32121
- P === "text_chat" && /* @__PURE__ */ g(bk, {
32122
+ P === "text_chat" && /* @__PURE__ */ g(xk, {
32122
32123
  isClosing: Mt,
32123
32124
  copy: nt,
32124
32125
  orbColors: Pe,
@@ -32184,7 +32185,7 @@ function xk() {
32184
32185
  }
32185
32186
  //#endregion
32186
32187
  //#region src/components/ErrorBoundary.jsx
32187
- var Sk = class extends e.Component {
32188
+ var Ck = class extends e.Component {
32188
32189
  constructor(e) {
32189
32190
  super(e), this.state = { hasError: !1 };
32190
32191
  }
@@ -32199,4 +32200,4 @@ var Sk = class extends e.Component {
32199
32200
  }
32200
32201
  };
32201
32202
  //#endregion
32202
- export { mO as AnimatedOrb, Sk as ErrorBoundary, Wr as FlowEngageProvider, xk as FlowEngageWidget, Pn as useFlowEngage };
32203
+ export { hO as AnimatedOrb, Ck as ErrorBoundary, Wr as FlowEngageProvider, Sk as FlowEngageWidget, Pn as useFlowEngage };