@livelayer/react 0.5.4 → 0.5.5-pr66c.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.js +3 -3
- package/dist/index.mjs +991 -957
- package/dist/styles.css +59 -0
- package/package.json +3 -3
package/dist/index.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsxs as
|
|
3
|
-
import { Component as
|
|
4
|
-
import { LiveKitSession as
|
|
5
|
-
import { createLocalAudioTrack as
|
|
6
|
-
class
|
|
2
|
+
import { jsxs as w, jsx as n, Fragment as ut } from "react/jsx-runtime";
|
|
3
|
+
import { Component as dn, useState as S, useRef as E, useEffect as T, useCallback as k, useMemo as Ze, forwardRef as ft, createElement as un } from "react";
|
|
4
|
+
import { LiveKitSession as fn } from "@livelayer/sdk";
|
|
5
|
+
import { createLocalAudioTrack as pn, Track as jt, createLocalVideoTrack as hn } from "livekit-client";
|
|
6
|
+
class mn extends dn {
|
|
7
7
|
constructor() {
|
|
8
8
|
super(...arguments), this.state = { hasError: !1, error: null }, this.reset = () => {
|
|
9
9
|
this.setState({ hasError: !1, error: null });
|
|
@@ -18,7 +18,7 @@ class hn extends sn {
|
|
|
18
18
|
}
|
|
19
19
|
render() {
|
|
20
20
|
var t;
|
|
21
|
-
return this.state.hasError ? this.props.fallback ? this.props.fallback : /* @__PURE__ */
|
|
21
|
+
return this.state.hasError ? this.props.fallback ? this.props.fallback : /* @__PURE__ */ w("div", { className: "ll-error-boundary", role: "alert", children: [
|
|
22
22
|
/* @__PURE__ */ n("p", { className: "ll-error-boundary__title", children: "Widget crashed" }),
|
|
23
23
|
/* @__PURE__ */ n("p", { className: "ll-error-boundary__message", children: ((t = this.state.error) == null ? void 0 : t.message) || "Something went wrong." }),
|
|
24
24
|
/* @__PURE__ */ n(
|
|
@@ -33,26 +33,26 @@ class hn extends sn {
|
|
|
33
33
|
] }) : this.props.children;
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
|
-
function
|
|
37
|
-
const [t, r] =
|
|
38
|
-
z.current = e.onDataMessage,
|
|
39
|
-
const
|
|
40
|
-
onConnectionStateChange: (
|
|
41
|
-
r(
|
|
36
|
+
function gn(e) {
|
|
37
|
+
const [t, r] = S("idle"), [o, i] = S("idle"), [l, s] = S([]), [d, u] = S(null), [m, h] = S(null), [a, c] = S(null), [R, C] = S(!1), [L, v] = S(null), b = E(null), z = E(e.onDataMessage);
|
|
38
|
+
z.current = e.onDataMessage, T(() => {
|
|
39
|
+
const N = {
|
|
40
|
+
onConnectionStateChange: (D) => {
|
|
41
|
+
r(D), D === "connected" && v(null);
|
|
42
42
|
},
|
|
43
43
|
onAgentStateChange: i,
|
|
44
|
-
onTranscript: (
|
|
44
|
+
onTranscript: (D) => s([...D]),
|
|
45
45
|
onAgentConfig: u,
|
|
46
|
-
onAudioTrack: (
|
|
47
|
-
onVideoTrack: (
|
|
48
|
-
onVideoTrackRemoved: () =>
|
|
49
|
-
onError: (
|
|
50
|
-
onDataMessage: (
|
|
51
|
-
var
|
|
52
|
-
(
|
|
46
|
+
onAudioTrack: (D) => c(D),
|
|
47
|
+
onVideoTrack: (D) => h(D),
|
|
48
|
+
onVideoTrackRemoved: () => h(null),
|
|
49
|
+
onError: (D) => v(D),
|
|
50
|
+
onDataMessage: (D) => {
|
|
51
|
+
var A;
|
|
52
|
+
(A = z.current) == null || A.call(z, D);
|
|
53
53
|
},
|
|
54
54
|
onResumabilityChange: C
|
|
55
|
-
},
|
|
55
|
+
}, B = new fn(
|
|
56
56
|
{
|
|
57
57
|
agentId: e.agentId,
|
|
58
58
|
baseUrl: e.baseUrl,
|
|
@@ -60,11 +60,11 @@ function mn(e) {
|
|
|
60
60
|
sessionEndpoint: e.sessionEndpoint,
|
|
61
61
|
sessionBody: e.sessionBody
|
|
62
62
|
},
|
|
63
|
-
|
|
63
|
+
N
|
|
64
64
|
);
|
|
65
|
-
return
|
|
66
|
-
var
|
|
67
|
-
(
|
|
65
|
+
return b.current = B, r("idle"), i("idle"), s([]), u(null), h(null), c(null), C(!1), v(null), () => {
|
|
66
|
+
var D;
|
|
67
|
+
(D = B.destroy) == null || D.call(B), b.current = null;
|
|
68
68
|
};
|
|
69
69
|
}, [
|
|
70
70
|
e.agentId,
|
|
@@ -73,38 +73,38 @@ function mn(e) {
|
|
|
73
73
|
e.sessionEndpoint,
|
|
74
74
|
JSON.stringify(e.sessionBody ?? {})
|
|
75
75
|
]);
|
|
76
|
-
const
|
|
77
|
-
const
|
|
78
|
-
if (
|
|
76
|
+
const I = k(async () => {
|
|
77
|
+
const N = b.current;
|
|
78
|
+
if (N)
|
|
79
79
|
try {
|
|
80
|
-
await
|
|
81
|
-
} catch (
|
|
82
|
-
throw
|
|
80
|
+
await N.connect();
|
|
81
|
+
} catch (B) {
|
|
82
|
+
throw v(B instanceof Error ? B.message : String(B)), B;
|
|
83
83
|
}
|
|
84
|
-
}, []),
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
}, []), p =
|
|
88
|
-
var
|
|
89
|
-
return ((
|
|
84
|
+
}, []), H = k(() => {
|
|
85
|
+
const N = b.current;
|
|
86
|
+
N && N.disconnect();
|
|
87
|
+
}, []), p = k(() => {
|
|
88
|
+
var N;
|
|
89
|
+
return ((N = b.current) == null ? void 0 : N.getRoom()) ?? null;
|
|
90
90
|
}, []);
|
|
91
91
|
return {
|
|
92
92
|
connectionState: t,
|
|
93
93
|
agentState: o,
|
|
94
94
|
transcript: l,
|
|
95
95
|
agentConfig: d,
|
|
96
|
-
videoElement:
|
|
96
|
+
videoElement: m,
|
|
97
97
|
audioElement: a,
|
|
98
|
-
canResume:
|
|
99
|
-
error:
|
|
100
|
-
connect:
|
|
101
|
-
disconnect:
|
|
98
|
+
canResume: R,
|
|
99
|
+
error: L,
|
|
100
|
+
connect: I,
|
|
101
|
+
disconnect: H,
|
|
102
102
|
getRoom: p,
|
|
103
|
-
session:
|
|
103
|
+
session: b.current
|
|
104
104
|
};
|
|
105
105
|
}
|
|
106
|
-
function
|
|
107
|
-
const e =
|
|
106
|
+
function yn() {
|
|
107
|
+
const e = E(null), t = E(null), r = E(null), o = E(null), i = E(/* @__PURE__ */ new Set()), l = E(null), s = k(() => {
|
|
108
108
|
const a = t.current;
|
|
109
109
|
if (!a) {
|
|
110
110
|
o.current = null;
|
|
@@ -115,21 +115,21 @@ function gn() {
|
|
|
115
115
|
));
|
|
116
116
|
const c = l.current;
|
|
117
117
|
a.getByteFrequencyData(c);
|
|
118
|
-
let
|
|
119
|
-
for (let
|
|
120
|
-
const C =
|
|
121
|
-
for (const
|
|
118
|
+
let R = 0;
|
|
119
|
+
for (let L = 0; L < c.length; L++) R += c[L];
|
|
120
|
+
const C = R / c.length / 255;
|
|
121
|
+
for (const L of i.current)
|
|
122
122
|
try {
|
|
123
|
-
|
|
124
|
-
} catch (
|
|
125
|
-
console.error("[useAudioLevel] subscriber threw:",
|
|
123
|
+
L(C);
|
|
124
|
+
} catch (v) {
|
|
125
|
+
console.error("[useAudioLevel] subscriber threw:", v);
|
|
126
126
|
}
|
|
127
127
|
o.current = requestAnimationFrame(s);
|
|
128
|
-
}, []), d =
|
|
128
|
+
}, []), d = k(() => {
|
|
129
129
|
if (e.current || typeof window > "u" || typeof AudioContext > "u") return;
|
|
130
130
|
const a = new AudioContext(), c = a.createAnalyser();
|
|
131
131
|
c.fftSize = 64, c.connect(a.destination), e.current = a, t.current = c;
|
|
132
|
-
}, []), u =
|
|
132
|
+
}, []), u = k(
|
|
133
133
|
(a) => {
|
|
134
134
|
if (d(), !(!e.current || !t.current)) {
|
|
135
135
|
if (r.current) {
|
|
@@ -150,7 +150,7 @@ function gn() {
|
|
|
150
150
|
}
|
|
151
151
|
},
|
|
152
152
|
[d, s]
|
|
153
|
-
),
|
|
153
|
+
), m = k(() => {
|
|
154
154
|
if (o.current !== null && (cancelAnimationFrame(o.current), o.current = null), r.current) {
|
|
155
155
|
try {
|
|
156
156
|
r.current.disconnect();
|
|
@@ -158,11 +158,11 @@ function gn() {
|
|
|
158
158
|
}
|
|
159
159
|
r.current = null;
|
|
160
160
|
}
|
|
161
|
-
}, []),
|
|
161
|
+
}, []), h = k((a) => (i.current.add(a), () => {
|
|
162
162
|
i.current.delete(a);
|
|
163
163
|
}), []);
|
|
164
|
-
return
|
|
165
|
-
if (
|
|
164
|
+
return T(() => () => {
|
|
165
|
+
if (m(), t.current) {
|
|
166
166
|
try {
|
|
167
167
|
t.current.disconnect();
|
|
168
168
|
} catch {
|
|
@@ -177,10 +177,10 @@ function gn() {
|
|
|
177
177
|
e.current = null;
|
|
178
178
|
}
|
|
179
179
|
i.current.clear(), l.current = null;
|
|
180
|
-
}, [
|
|
180
|
+
}, [m]), { attach: u, detach: m, subscribe: h };
|
|
181
181
|
}
|
|
182
|
-
function
|
|
183
|
-
const [e, t] =
|
|
182
|
+
function vn() {
|
|
183
|
+
const [e, t] = S(!1), [r, o] = S(null), i = E(null), l = E(null), s = k(async (h) => {
|
|
184
184
|
if (i.current && l.current) {
|
|
185
185
|
try {
|
|
186
186
|
await l.current.localParticipant.unpublishTrack(i.current);
|
|
@@ -188,69 +188,69 @@ function yn() {
|
|
|
188
188
|
}
|
|
189
189
|
i.current.stop(), i.current = null;
|
|
190
190
|
}
|
|
191
|
-
l.current =
|
|
191
|
+
l.current = h, o(null);
|
|
192
192
|
try {
|
|
193
|
-
const a = await
|
|
193
|
+
const a = await pn({
|
|
194
194
|
echoCancellation: !0,
|
|
195
195
|
noiseSuppression: !0
|
|
196
196
|
});
|
|
197
|
-
await
|
|
197
|
+
await h.localParticipant.publishTrack(a), i.current = a, t(a.isMuted);
|
|
198
198
|
} catch (a) {
|
|
199
199
|
const c = a instanceof Error && a.name === "NotAllowedError" ? "Enable your microphone to talk with the agent." : "Microphone unavailable. Check browser permissions and try again.";
|
|
200
200
|
throw o(c), a;
|
|
201
201
|
}
|
|
202
|
-
}, []), d =
|
|
203
|
-
const
|
|
204
|
-
|
|
205
|
-
}, []), u =
|
|
206
|
-
const
|
|
207
|
-
if (
|
|
202
|
+
}, []), d = k(() => {
|
|
203
|
+
const h = i.current;
|
|
204
|
+
h && (h.isMuted ? (h.unmute(), t(!1)) : (h.mute(), t(!0)));
|
|
205
|
+
}, []), u = k(() => {
|
|
206
|
+
const h = i.current, a = l.current;
|
|
207
|
+
if (h && a) {
|
|
208
208
|
try {
|
|
209
|
-
a.localParticipant.unpublishTrack(
|
|
209
|
+
a.localParticipant.unpublishTrack(h);
|
|
210
210
|
} catch {
|
|
211
211
|
}
|
|
212
|
-
|
|
212
|
+
h.stop();
|
|
213
213
|
}
|
|
214
214
|
i.current = null, l.current = null, t(!1);
|
|
215
|
-
}, []),
|
|
215
|
+
}, []), m = k(() => o(null), []);
|
|
216
216
|
return {
|
|
217
217
|
isMuted: e,
|
|
218
218
|
micError: r,
|
|
219
219
|
toggleMute: d,
|
|
220
220
|
setupMic: s,
|
|
221
221
|
teardownMic: u,
|
|
222
|
-
clearError:
|
|
222
|
+
clearError: m
|
|
223
223
|
};
|
|
224
224
|
}
|
|
225
|
-
const
|
|
226
|
-
function
|
|
227
|
-
const [e, t] =
|
|
228
|
-
u.current =
|
|
229
|
-
}, []), a =
|
|
230
|
-
const
|
|
231
|
-
if (z &&
|
|
232
|
-
const
|
|
233
|
-
if (
|
|
225
|
+
const bn = { resolution: { width: 640, height: 480, frameRate: 24 } };
|
|
226
|
+
function wn() {
|
|
227
|
+
const [e, t] = S(!1), [r, o] = S(null), [i, l] = S(null), [s, d] = S(""), u = E(null), m = E(null), h = k((b) => {
|
|
228
|
+
u.current = b;
|
|
229
|
+
}, []), a = k(() => {
|
|
230
|
+
const b = u.current, z = m.current;
|
|
231
|
+
if (z && b) {
|
|
232
|
+
const I = b.localParticipant.getTrackPublication(jt.Source.Camera);
|
|
233
|
+
if (I != null && I.track) {
|
|
234
234
|
try {
|
|
235
|
-
|
|
235
|
+
b.localParticipant.unpublishTrack(I.track);
|
|
236
236
|
} catch {
|
|
237
237
|
}
|
|
238
|
-
|
|
238
|
+
I.track.stop();
|
|
239
239
|
} else
|
|
240
240
|
z.stop();
|
|
241
241
|
}
|
|
242
|
-
|
|
243
|
-
}, []), c =
|
|
242
|
+
m.current = null, l(null), t(!1);
|
|
243
|
+
}, []), c = k(async (b) => {
|
|
244
244
|
const z = u.current;
|
|
245
245
|
if (z) {
|
|
246
246
|
o(null);
|
|
247
247
|
try {
|
|
248
|
-
const
|
|
249
|
-
|
|
250
|
-
const
|
|
251
|
-
await z.localParticipant.publishTrack(
|
|
252
|
-
const p =
|
|
253
|
-
l(p), t(!0),
|
|
248
|
+
const I = { ...bn };
|
|
249
|
+
b && (I.deviceId = b);
|
|
250
|
+
const H = await hn(I);
|
|
251
|
+
await z.localParticipant.publishTrack(H), m.current = H;
|
|
252
|
+
const p = H.attach();
|
|
253
|
+
l(p), t(!0), b && d(b);
|
|
254
254
|
try {
|
|
255
255
|
z.localParticipant.publishData(
|
|
256
256
|
new TextEncoder().encode(JSON.stringify({ type: "user_camera_on" })),
|
|
@@ -258,36 +258,36 @@ function bn() {
|
|
|
258
258
|
);
|
|
259
259
|
} catch {
|
|
260
260
|
}
|
|
261
|
-
} catch (
|
|
262
|
-
const
|
|
263
|
-
o(
|
|
261
|
+
} catch (I) {
|
|
262
|
+
const H = I instanceof Error && I.name === "NotAllowedError" ? "Enable your camera in the browser to share video." : "Camera unavailable. Check permissions and try again.";
|
|
263
|
+
o(H);
|
|
264
264
|
}
|
|
265
265
|
}
|
|
266
|
-
}, []),
|
|
266
|
+
}, []), R = k(async () => {
|
|
267
267
|
e ? a() : await c(s || void 0);
|
|
268
|
-
}, [e, s, a, c]), C =
|
|
269
|
-
a(), await c(
|
|
270
|
-
}, [a, c]),
|
|
268
|
+
}, [e, s, a, c]), C = k(async (b) => {
|
|
269
|
+
a(), await c(b);
|
|
270
|
+
}, [a, c]), L = k(() => {
|
|
271
271
|
a(), u.current = null, o(null), d("");
|
|
272
|
-
}, [a]),
|
|
273
|
-
return
|
|
274
|
-
|
|
272
|
+
}, [a]), v = k(() => o(null), []);
|
|
273
|
+
return T(() => () => {
|
|
274
|
+
m.current && m.current.stop();
|
|
275
275
|
}, []), {
|
|
276
276
|
isEnabled: e,
|
|
277
277
|
error: r,
|
|
278
278
|
previewEl: i,
|
|
279
279
|
activeDeviceId: s,
|
|
280
|
-
toggle:
|
|
280
|
+
toggle: R,
|
|
281
281
|
switchDevice: C,
|
|
282
|
-
attachRoom:
|
|
283
|
-
teardown:
|
|
284
|
-
clearError:
|
|
282
|
+
attachRoom: h,
|
|
283
|
+
teardown: L,
|
|
284
|
+
clearError: v
|
|
285
285
|
};
|
|
286
286
|
}
|
|
287
|
-
function
|
|
288
|
-
const [e, t] =
|
|
287
|
+
function _n() {
|
|
288
|
+
const [e, t] = S(!1), [r, o] = S(null), [i, l] = S(null), s = E(null), d = k((c) => {
|
|
289
289
|
s.current = c;
|
|
290
|
-
}, []), u =
|
|
290
|
+
}, []), u = k(() => l(null), []), m = k(async () => {
|
|
291
291
|
const c = s.current;
|
|
292
292
|
if (c) {
|
|
293
293
|
if (e) {
|
|
@@ -301,12 +301,12 @@ function wn() {
|
|
|
301
301
|
o(null);
|
|
302
302
|
try {
|
|
303
303
|
await c.localParticipant.setScreenShareEnabled(!0);
|
|
304
|
-
let
|
|
304
|
+
let R = 0;
|
|
305
305
|
const C = () => {
|
|
306
|
-
const
|
|
307
|
-
if (
|
|
308
|
-
const
|
|
309
|
-
l(
|
|
306
|
+
const L = c.localParticipant.getTrackPublication(jt.Source.ScreenShare);
|
|
307
|
+
if (L != null && L.track) {
|
|
308
|
+
const v = L.track.attach();
|
|
309
|
+
l(v), t(!0);
|
|
310
310
|
try {
|
|
311
311
|
c.localParticipant.publishData(
|
|
312
312
|
new TextEncoder().encode(JSON.stringify({ type: "user_screen_share_on" })),
|
|
@@ -316,15 +316,15 @@ function wn() {
|
|
|
316
316
|
}
|
|
317
317
|
return;
|
|
318
318
|
}
|
|
319
|
-
|
|
319
|
+
R++ < 10 ? setTimeout(C, 100) : t(!0);
|
|
320
320
|
};
|
|
321
321
|
C();
|
|
322
|
-
} catch (
|
|
323
|
-
const C =
|
|
322
|
+
} catch (R) {
|
|
323
|
+
const C = R instanceof Error ? R.name : "";
|
|
324
324
|
C !== "NotAllowedError" && C !== "AbortError" && o("Screen share unavailable. Try again."), t(!1);
|
|
325
325
|
}
|
|
326
326
|
}
|
|
327
|
-
}, [e, u]),
|
|
327
|
+
}, [e, u]), h = k(() => {
|
|
328
328
|
const c = s.current;
|
|
329
329
|
if (c && e)
|
|
330
330
|
try {
|
|
@@ -332,11 +332,11 @@ function wn() {
|
|
|
332
332
|
} catch {
|
|
333
333
|
}
|
|
334
334
|
u(), t(!1), o(null), s.current = null;
|
|
335
|
-
}, [e, u]), a =
|
|
336
|
-
return { isEnabled: e, error: r, previewEl: i, toggle:
|
|
335
|
+
}, [e, u]), a = k(() => o(null), []);
|
|
336
|
+
return { isEnabled: e, error: r, previewEl: i, toggle: m, attachRoom: d, teardown: h, clearError: a };
|
|
337
337
|
}
|
|
338
|
-
function
|
|
339
|
-
const [e, t] =
|
|
338
|
+
function xn() {
|
|
339
|
+
const [e, t] = S([]), [r, o] = S([]), i = k(async () => {
|
|
340
340
|
if (!(typeof navigator > "u" || !navigator.mediaDevices))
|
|
341
341
|
try {
|
|
342
342
|
const l = await navigator.mediaDevices.enumerateDevices();
|
|
@@ -344,22 +344,22 @@ function _n() {
|
|
|
344
344
|
} catch {
|
|
345
345
|
}
|
|
346
346
|
}, []);
|
|
347
|
-
return
|
|
347
|
+
return T(() => {
|
|
348
348
|
if (i(), typeof navigator > "u" || !navigator.mediaDevices) return;
|
|
349
349
|
const l = () => void i();
|
|
350
350
|
return navigator.mediaDevices.addEventListener("devicechange", l), () => navigator.mediaDevices.removeEventListener("devicechange", l);
|
|
351
351
|
}, [i]), { mics: e, cameras: r, refresh: i };
|
|
352
352
|
}
|
|
353
|
-
function
|
|
354
|
-
const [o, i] =
|
|
355
|
-
return
|
|
353
|
+
function kn(e, t, r = !1) {
|
|
354
|
+
const [o, i] = S(null), [l, s] = S(null), [d, u] = S(!r && !!e);
|
|
355
|
+
return T(() => {
|
|
356
356
|
if (r || !e) {
|
|
357
357
|
u(!1);
|
|
358
358
|
return;
|
|
359
359
|
}
|
|
360
|
-
const
|
|
361
|
-
return u(!0), s(null), fetch(`${
|
|
362
|
-
signal:
|
|
360
|
+
const m = new AbortController(), h = t || "https://app.livelayer.studio";
|
|
361
|
+
return u(!0), s(null), fetch(`${h}/api/widget/agent/${encodeURIComponent(e)}`, {
|
|
362
|
+
signal: m.signal
|
|
363
363
|
}).then(async (a) => {
|
|
364
364
|
if (!a.ok) {
|
|
365
365
|
const c = await a.json().catch(() => ({}));
|
|
@@ -367,13 +367,13 @@ function xn(e, t, r = !1) {
|
|
|
367
367
|
}
|
|
368
368
|
return a.json();
|
|
369
369
|
}).then((a) => {
|
|
370
|
-
|
|
370
|
+
m.signal.aborted || (i(a), u(!1));
|
|
371
371
|
}).catch((a) => {
|
|
372
|
-
|
|
373
|
-
}), () =>
|
|
372
|
+
m.signal.aborted || (s(a instanceof Error ? a.message : "Agent lookup failed"), u(!1));
|
|
373
|
+
}), () => m.abort();
|
|
374
374
|
}, [e, t, r]), { info: o, error: l, loading: d };
|
|
375
375
|
}
|
|
376
|
-
function
|
|
376
|
+
function Ln(e) {
|
|
377
377
|
if (typeof window > "u") return null;
|
|
378
378
|
try {
|
|
379
379
|
return window.localStorage.getItem(e);
|
|
@@ -381,19 +381,19 @@ function kn(e) {
|
|
|
381
381
|
return null;
|
|
382
382
|
}
|
|
383
383
|
}
|
|
384
|
-
function
|
|
384
|
+
function Sn(e, t) {
|
|
385
385
|
if (!(typeof window > "u"))
|
|
386
386
|
try {
|
|
387
387
|
window.localStorage.setItem(e, t);
|
|
388
388
|
} catch {
|
|
389
389
|
}
|
|
390
390
|
}
|
|
391
|
-
function
|
|
391
|
+
function Cn({
|
|
392
392
|
value: e,
|
|
393
393
|
defaultValue: t = "expanded",
|
|
394
394
|
onChange: r
|
|
395
395
|
} = {}) {
|
|
396
|
-
const o = e !== void 0, [i, l] =
|
|
396
|
+
const o = e !== void 0, [i, l] = S(t), s = o ? e : i, d = k(
|
|
397
397
|
(u) => {
|
|
398
398
|
u !== s && (o || l(u), r == null || r(u));
|
|
399
399
|
},
|
|
@@ -401,34 +401,34 @@ function Sn({
|
|
|
401
401
|
);
|
|
402
402
|
return [s, d];
|
|
403
403
|
}
|
|
404
|
-
const
|
|
405
|
-
function
|
|
406
|
-
return e &&
|
|
404
|
+
const En = ["hidden", "minimized", "expanded"];
|
|
405
|
+
function Nn(e) {
|
|
406
|
+
return e && En.includes(e) ? e : null;
|
|
407
407
|
}
|
|
408
|
-
function
|
|
408
|
+
function An({
|
|
409
409
|
value: e,
|
|
410
410
|
defaultValue: t = "expanded",
|
|
411
411
|
onChange: r,
|
|
412
412
|
persistKey: o = "ll-widget",
|
|
413
413
|
disablePersistence: i = !1
|
|
414
414
|
} = {}) {
|
|
415
|
-
const l = `${o}:display-mode`, s =
|
|
415
|
+
const l = `${o}:display-mode`, s = E(!1), [d, u] = Cn({
|
|
416
416
|
value: e,
|
|
417
417
|
defaultValue: t,
|
|
418
|
-
onChange: (
|
|
419
|
-
e === void 0 && !i &&
|
|
418
|
+
onChange: (m) => {
|
|
419
|
+
e === void 0 && !i && Sn(l, m), r == null || r(m);
|
|
420
420
|
}
|
|
421
421
|
});
|
|
422
|
-
return
|
|
422
|
+
return T(() => {
|
|
423
423
|
if (s.current || (s.current = !0, i || e !== void 0)) return;
|
|
424
|
-
const
|
|
425
|
-
|
|
424
|
+
const m = Nn(Ln(l));
|
|
425
|
+
m && m !== d && u(m);
|
|
426
426
|
}, []), [d, u];
|
|
427
427
|
}
|
|
428
|
-
const
|
|
429
|
-
function
|
|
430
|
-
const [t, r] =
|
|
431
|
-
return
|
|
428
|
+
const Rn = 640;
|
|
429
|
+
function In(e = Rn) {
|
|
430
|
+
const [t, r] = S(!1);
|
|
431
|
+
return T(() => {
|
|
432
432
|
if (e === !1) {
|
|
433
433
|
r(!1);
|
|
434
434
|
return;
|
|
@@ -441,67 +441,67 @@ function Rn(e = An) {
|
|
|
441
441
|
});
|
|
442
442
|
}, [e]), t;
|
|
443
443
|
}
|
|
444
|
-
const
|
|
445
|
-
function
|
|
446
|
-
if (typeof window > "u" || window.history[
|
|
444
|
+
const Nt = "__llHistoryPatched", et = "ll:pathname";
|
|
445
|
+
function Mn() {
|
|
446
|
+
if (typeof window > "u" || window.history[Nt]) return;
|
|
447
447
|
const e = window.history.pushState, t = window.history.replaceState;
|
|
448
448
|
window.history.pushState = function(...r) {
|
|
449
449
|
const o = e.apply(this, r);
|
|
450
|
-
return window.dispatchEvent(new Event(
|
|
450
|
+
return window.dispatchEvent(new Event(et)), o;
|
|
451
451
|
}, window.history.replaceState = function(...r) {
|
|
452
452
|
const o = t.apply(this, r);
|
|
453
|
-
return window.dispatchEvent(new Event(
|
|
454
|
-
}, window.history[
|
|
453
|
+
return window.dispatchEvent(new Event(et)), o;
|
|
454
|
+
}, window.history[Nt] = !0;
|
|
455
455
|
}
|
|
456
|
-
function
|
|
456
|
+
function At() {
|
|
457
457
|
return typeof window > "u" ? "/" : window.location.pathname || "/";
|
|
458
458
|
}
|
|
459
|
-
function
|
|
460
|
-
const [t, r] =
|
|
461
|
-
() => e ??
|
|
459
|
+
function Tn(e) {
|
|
460
|
+
const [t, r] = S(
|
|
461
|
+
() => e ?? At()
|
|
462
462
|
);
|
|
463
|
-
return
|
|
463
|
+
return T(() => {
|
|
464
464
|
if (e !== void 0) return;
|
|
465
|
-
|
|
466
|
-
const o = () => r(
|
|
467
|
-
return o(), window.addEventListener("popstate", o), window.addEventListener(
|
|
468
|
-
window.removeEventListener("popstate", o), window.removeEventListener(
|
|
465
|
+
Mn();
|
|
466
|
+
const o = () => r(At());
|
|
467
|
+
return o(), window.addEventListener("popstate", o), window.addEventListener(et, o), () => {
|
|
468
|
+
window.removeEventListener("popstate", o), window.removeEventListener(et, o);
|
|
469
469
|
};
|
|
470
470
|
}, [e]), e ?? t;
|
|
471
471
|
}
|
|
472
|
-
const
|
|
473
|
-
function Pn(e) {
|
|
474
|
-
return e.replace(Tn, "\\$&");
|
|
475
|
-
}
|
|
472
|
+
const Rt = /* @__PURE__ */ new Map(), Pn = /[\\^$+?.()|{}[\]]/g;
|
|
476
473
|
function Dn(e) {
|
|
477
|
-
|
|
474
|
+
return e.replace(Pn, "\\$&");
|
|
475
|
+
}
|
|
476
|
+
function $n(e) {
|
|
477
|
+
const t = Rt.get(e);
|
|
478
478
|
if (t) return t;
|
|
479
|
-
const r = e.length > 1 && e.endsWith("/") ? e.slice(0, -1) : e, o = "", i = "", l = r.replace(/\*\*/g, o).replace(/\*/g, i), d =
|
|
480
|
-
return
|
|
479
|
+
const r = e.length > 1 && e.endsWith("/") ? e.slice(0, -1) : e, o = "", i = "", l = r.replace(/\*\*/g, o).replace(/\*/g, i), d = Dn(l).replace(new RegExp(`\\/${o}`, "g"), "(?:\\/.*)?").replace(new RegExp(o, "g"), ".*").replace(new RegExp(i, "g"), "[^/]+"), u = new RegExp(`^${d}\\/?$`);
|
|
480
|
+
return Rt.set(e, u), u;
|
|
481
481
|
}
|
|
482
|
-
function
|
|
482
|
+
function zn(e, t) {
|
|
483
483
|
const r = t.length > 1 && t.endsWith("/") ? t.slice(0, -1) : t;
|
|
484
|
-
return
|
|
484
|
+
return $n(e).test(r);
|
|
485
485
|
}
|
|
486
|
-
function
|
|
487
|
-
return typeof e == "function" ? e(t) : e instanceof RegExp ? e.test(t) :
|
|
486
|
+
function Hn(e, t) {
|
|
487
|
+
return typeof e == "function" ? e(t) : e instanceof RegExp ? e.test(t) : zn(e, t);
|
|
488
488
|
}
|
|
489
|
-
function
|
|
489
|
+
function It(e, t) {
|
|
490
490
|
if (!e || e.length === 0) return !1;
|
|
491
491
|
for (const r of e)
|
|
492
|
-
if (
|
|
492
|
+
if (Hn(r, t)) return !0;
|
|
493
493
|
return !1;
|
|
494
494
|
}
|
|
495
|
-
function Hn(e, t, r) {
|
|
496
|
-
return e === void 0 ? !0 : Rt(r, e) ? !1 : t && t.length > 0 ? Rt(t, e) : !0;
|
|
497
|
-
}
|
|
498
495
|
function On(e, t, r) {
|
|
499
|
-
return
|
|
500
|
-
|
|
496
|
+
return e === void 0 ? !0 : It(r, e) ? !1 : t && t.length > 0 ? It(t, e) : !0;
|
|
497
|
+
}
|
|
498
|
+
function qn(e, t, r) {
|
|
499
|
+
return Ze(
|
|
500
|
+
() => On(e, t, r),
|
|
501
501
|
[e, t, r]
|
|
502
502
|
);
|
|
503
503
|
}
|
|
504
|
-
const
|
|
504
|
+
const Mt = ({ muted: e = !1, className: t }) => e ? /* @__PURE__ */ w(
|
|
505
505
|
"svg",
|
|
506
506
|
{
|
|
507
507
|
className: t,
|
|
@@ -547,7 +547,7 @@ const It = ({ muted: e = !1, className: t }) => e ? /* @__PURE__ */ _(
|
|
|
547
547
|
}
|
|
548
548
|
)
|
|
549
549
|
}
|
|
550
|
-
),
|
|
550
|
+
), Tt = ({ className: e }) => /* @__PURE__ */ n(
|
|
551
551
|
"svg",
|
|
552
552
|
{
|
|
553
553
|
className: e,
|
|
@@ -565,7 +565,7 @@ const It = ({ muted: e = !1, className: t }) => e ? /* @__PURE__ */ _(
|
|
|
565
565
|
}
|
|
566
566
|
)
|
|
567
567
|
}
|
|
568
|
-
),
|
|
568
|
+
), Bn = ({ className: e }) => /* @__PURE__ */ n(
|
|
569
569
|
"svg",
|
|
570
570
|
{
|
|
571
571
|
className: e,
|
|
@@ -576,12 +576,12 @@ const It = ({ muted: e = !1, className: t }) => e ? /* @__PURE__ */ _(
|
|
|
576
576
|
"aria-hidden": "true",
|
|
577
577
|
children: /* @__PURE__ */ n("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" })
|
|
578
578
|
}
|
|
579
|
-
),
|
|
579
|
+
), Wn = {
|
|
580
580
|
left: 180,
|
|
581
581
|
right: 0,
|
|
582
582
|
up: -90,
|
|
583
583
|
down: 90
|
|
584
|
-
},
|
|
584
|
+
}, Pt = ({ direction: e = "right", className: t }) => /* @__PURE__ */ n(
|
|
585
585
|
"svg",
|
|
586
586
|
{
|
|
587
587
|
className: t,
|
|
@@ -589,7 +589,7 @@ const It = ({ muted: e = !1, className: t }) => e ? /* @__PURE__ */ _(
|
|
|
589
589
|
viewBox: "0 0 24 24",
|
|
590
590
|
stroke: "currentColor",
|
|
591
591
|
strokeWidth: 2,
|
|
592
|
-
style: { transform: `rotate(${
|
|
592
|
+
style: { transform: `rotate(${Wn[e]}deg)` },
|
|
593
593
|
"aria-hidden": "true",
|
|
594
594
|
children: /* @__PURE__ */ n("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 6l6 6-6 6" })
|
|
595
595
|
}
|
|
@@ -597,11 +597,11 @@ const It = ({ muted: e = !1, className: t }) => e ? /* @__PURE__ */ _(
|
|
|
597
597
|
function Fn(e) {
|
|
598
598
|
return e === "top-left" || e === "bottom-left" ? "left" : "right";
|
|
599
599
|
}
|
|
600
|
-
const
|
|
600
|
+
const Vt = "ll-hidden-tab-center-y", Un = 5, Dt = 16;
|
|
601
601
|
function jn() {
|
|
602
602
|
if (typeof window > "u") return null;
|
|
603
603
|
try {
|
|
604
|
-
const e = window.localStorage.getItem(
|
|
604
|
+
const e = window.localStorage.getItem(Vt);
|
|
605
605
|
if (!e) return null;
|
|
606
606
|
const t = Number.parseFloat(e);
|
|
607
607
|
return Number.isFinite(t) ? t : null;
|
|
@@ -609,10 +609,10 @@ function jn() {
|
|
|
609
609
|
return null;
|
|
610
610
|
}
|
|
611
611
|
}
|
|
612
|
-
function
|
|
612
|
+
function $t(e) {
|
|
613
613
|
if (!(typeof window > "u"))
|
|
614
614
|
try {
|
|
615
|
-
window.localStorage.setItem(
|
|
615
|
+
window.localStorage.setItem(Vt, String(e));
|
|
616
616
|
} catch {
|
|
617
617
|
}
|
|
618
618
|
}
|
|
@@ -621,100 +621,132 @@ const Vn = ({
|
|
|
621
621
|
isMobile: t,
|
|
622
622
|
isSpeaking: r,
|
|
623
623
|
onExpand: o,
|
|
624
|
-
label: i = "Open widget"
|
|
624
|
+
label: i = "Open widget",
|
|
625
|
+
avatarImageUrl: l,
|
|
626
|
+
agentName: s
|
|
625
627
|
}) => {
|
|
626
|
-
const
|
|
627
|
-
(
|
|
628
|
-
if (typeof window > "u") return
|
|
629
|
-
const
|
|
630
|
-
return
|
|
628
|
+
const d = Fn(e), u = d === "right" ? "left" : "right", m = t ? 80 : 72, h = !!l, [a, c] = S(null), [R, C] = S(!1), L = E(null), v = E(!1), b = k(
|
|
629
|
+
(A) => {
|
|
630
|
+
if (typeof window > "u") return A;
|
|
631
|
+
const O = m / 2, W = Dt + O, V = window.innerHeight - Dt - O;
|
|
632
|
+
return V < W ? Math.max(W, A) : Math.max(W, Math.min(V, A));
|
|
631
633
|
},
|
|
632
|
-
[
|
|
634
|
+
[m]
|
|
633
635
|
);
|
|
634
|
-
|
|
635
|
-
const
|
|
636
|
-
|
|
637
|
-
const
|
|
638
|
-
|
|
636
|
+
T(() => {
|
|
637
|
+
const A = jn();
|
|
638
|
+
c(b(A ?? window.innerHeight / 2));
|
|
639
|
+
const O = () => {
|
|
640
|
+
c((W) => W === null ? null : b(W));
|
|
639
641
|
};
|
|
640
|
-
return window.addEventListener("resize",
|
|
641
|
-
}, [
|
|
642
|
-
const
|
|
643
|
-
(
|
|
644
|
-
if (!(
|
|
642
|
+
return window.addEventListener("resize", O), () => window.removeEventListener("resize", O);
|
|
643
|
+
}, [b]);
|
|
644
|
+
const z = k(
|
|
645
|
+
(A) => {
|
|
646
|
+
if (!(A.pointerType === "mouse" && A.button !== 0) && a !== null) {
|
|
645
647
|
try {
|
|
646
|
-
|
|
648
|
+
A.currentTarget.setPointerCapture(A.pointerId);
|
|
647
649
|
} catch {
|
|
648
650
|
}
|
|
649
|
-
|
|
650
|
-
startClientY:
|
|
651
|
-
startCenterY:
|
|
651
|
+
L.current = {
|
|
652
|
+
startClientY: A.clientY,
|
|
653
|
+
startCenterY: a,
|
|
652
654
|
moved: !1
|
|
653
655
|
};
|
|
654
656
|
}
|
|
655
657
|
},
|
|
656
|
-
[
|
|
657
|
-
),
|
|
658
|
-
(
|
|
659
|
-
const
|
|
660
|
-
if (!
|
|
661
|
-
const
|
|
662
|
-
!
|
|
658
|
+
[a]
|
|
659
|
+
), I = k(
|
|
660
|
+
(A) => {
|
|
661
|
+
const O = L.current;
|
|
662
|
+
if (!O) return;
|
|
663
|
+
const W = A.clientY - O.startClientY;
|
|
664
|
+
!O.moved && Math.abs(W) > Un && (O.moved = !0, C(!0)), O.moved && c(b(O.startCenterY + W));
|
|
663
665
|
},
|
|
664
|
-
[
|
|
665
|
-
),
|
|
666
|
-
(
|
|
667
|
-
const
|
|
668
|
-
if (
|
|
666
|
+
[b]
|
|
667
|
+
), H = k(
|
|
668
|
+
(A) => {
|
|
669
|
+
const O = L.current;
|
|
670
|
+
if (O) {
|
|
669
671
|
try {
|
|
670
|
-
|
|
672
|
+
A.currentTarget.releasePointerCapture(A.pointerId);
|
|
671
673
|
} catch {
|
|
672
674
|
}
|
|
673
|
-
|
|
675
|
+
L.current = null, O.moved && (C(!1), v.current = !0, c((W) => (W !== null && $t(W), W)));
|
|
674
676
|
}
|
|
675
677
|
},
|
|
676
678
|
[]
|
|
677
|
-
),
|
|
678
|
-
if (
|
|
679
|
-
|
|
679
|
+
), p = k(() => {
|
|
680
|
+
if (v.current) {
|
|
681
|
+
v.current = !1;
|
|
680
682
|
return;
|
|
681
683
|
}
|
|
682
684
|
o();
|
|
683
|
-
}, [o]),
|
|
684
|
-
(
|
|
685
|
-
if (
|
|
686
|
-
|
|
687
|
-
const
|
|
688
|
-
|
|
689
|
-
if (
|
|
690
|
-
const
|
|
691
|
-
return
|
|
685
|
+
}, [o]), N = k(
|
|
686
|
+
(A) => {
|
|
687
|
+
if (A.key === "ArrowUp" || A.key === "ArrowDown") {
|
|
688
|
+
A.preventDefault();
|
|
689
|
+
const O = A.key === "ArrowUp" ? -8 : 8;
|
|
690
|
+
c((W) => {
|
|
691
|
+
if (W === null) return W;
|
|
692
|
+
const V = b(W + O);
|
|
693
|
+
return $t(V), V;
|
|
692
694
|
});
|
|
693
695
|
}
|
|
694
696
|
},
|
|
695
|
-
[
|
|
696
|
-
),
|
|
697
|
+
[b]
|
|
698
|
+
), B = [
|
|
697
699
|
"ll-hidden",
|
|
698
|
-
`ll-hidden--${
|
|
700
|
+
`ll-hidden--${d}`,
|
|
699
701
|
t ? "ll-hidden--mobile" : "ll-hidden--desktop",
|
|
700
702
|
r ? "ll-hidden--speaking" : null,
|
|
701
|
-
|
|
702
|
-
|
|
703
|
+
R ? "is-dragging" : null,
|
|
704
|
+
h ? "ll-hidden--with-avatar" : null
|
|
705
|
+
].filter(Boolean).join(" "), D = a === null ? void 0 : { top: `${a - m / 2}px`, transform: "none" };
|
|
703
706
|
return /* @__PURE__ */ n(
|
|
704
707
|
"button",
|
|
705
708
|
{
|
|
706
709
|
type: "button",
|
|
707
|
-
className:
|
|
708
|
-
onPointerDown:
|
|
709
|
-
onPointerMove:
|
|
710
|
-
onPointerUp:
|
|
711
|
-
onPointerCancel:
|
|
712
|
-
onClick:
|
|
713
|
-
onKeyDown:
|
|
710
|
+
className: B,
|
|
711
|
+
onPointerDown: z,
|
|
712
|
+
onPointerMove: I,
|
|
713
|
+
onPointerUp: H,
|
|
714
|
+
onPointerCancel: H,
|
|
715
|
+
onClick: p,
|
|
716
|
+
onKeyDown: N,
|
|
714
717
|
"aria-label": i,
|
|
715
718
|
"data-position": e,
|
|
716
|
-
style:
|
|
717
|
-
children:
|
|
719
|
+
style: D,
|
|
720
|
+
children: h ? (
|
|
721
|
+
// Layout: tiny chevron flush against the inward edge (peeks out
|
|
722
|
+
// as the click affordance), then the circular avatar photo
|
|
723
|
+
// taking the rest of the tab. Reinforces "this is an
|
|
724
|
+
// avatar-based experience" even when collapsed.
|
|
725
|
+
/* @__PURE__ */ w(ut, { children: [
|
|
726
|
+
/* @__PURE__ */ n(
|
|
727
|
+
Pt,
|
|
728
|
+
{
|
|
729
|
+
direction: u,
|
|
730
|
+
className: "ll-hidden__chevron ll-hidden__chevron--mini"
|
|
731
|
+
}
|
|
732
|
+
),
|
|
733
|
+
/* @__PURE__ */ n(
|
|
734
|
+
"img",
|
|
735
|
+
{
|
|
736
|
+
src: l,
|
|
737
|
+
alt: s ? `${s} avatar` : "Agent avatar",
|
|
738
|
+
className: "ll-hidden__avatar",
|
|
739
|
+
draggable: !1
|
|
740
|
+
}
|
|
741
|
+
)
|
|
742
|
+
] })
|
|
743
|
+
) : /* @__PURE__ */ n(
|
|
744
|
+
Pt,
|
|
745
|
+
{
|
|
746
|
+
direction: u,
|
|
747
|
+
className: "ll-hidden__chevron"
|
|
748
|
+
}
|
|
749
|
+
)
|
|
718
750
|
}
|
|
719
751
|
);
|
|
720
752
|
}, Yn = ({
|
|
@@ -725,20 +757,20 @@ const Vn = ({
|
|
|
725
757
|
className: i,
|
|
726
758
|
barClassName: l
|
|
727
759
|
}) => {
|
|
728
|
-
const s =
|
|
729
|
-
const
|
|
730
|
-
return Array.from({ length: t }, (a, c) => 0.5 + c *
|
|
760
|
+
const s = E(null), d = E([]), u = Ze(() => {
|
|
761
|
+
const h = (Math.sqrt(5) - 1) / 2;
|
|
762
|
+
return Array.from({ length: t }, (a, c) => 0.5 + c * h % 1 * 0.5);
|
|
731
763
|
}, [t]);
|
|
732
|
-
|
|
764
|
+
T(() => e.subscribe((a) => {
|
|
733
765
|
for (let c = 0; c < t; c++) {
|
|
734
|
-
const
|
|
735
|
-
if (!
|
|
766
|
+
const R = d.current[c];
|
|
767
|
+
if (!R) continue;
|
|
736
768
|
const C = Math.max(o, a * r * u[c]);
|
|
737
|
-
|
|
769
|
+
R.style.height = `${C}px`;
|
|
738
770
|
}
|
|
739
771
|
}), [e, t, r, o, u]);
|
|
740
|
-
const
|
|
741
|
-
return /* @__PURE__ */ n("div", { ref: s, className:
|
|
772
|
+
const m = ["ll-waveform", i].filter(Boolean).join(" ");
|
|
773
|
+
return /* @__PURE__ */ n("div", { ref: s, className: m, "aria-hidden": "true", children: Array.from({ length: t }, (h, a) => /* @__PURE__ */ n(
|
|
742
774
|
"div",
|
|
743
775
|
{
|
|
744
776
|
ref: (c) => {
|
|
@@ -759,14 +791,14 @@ const Vn = ({
|
|
|
759
791
|
audioLevel: s,
|
|
760
792
|
onExpand: d,
|
|
761
793
|
onToggleMute: u,
|
|
762
|
-
onClose:
|
|
794
|
+
onClose: m
|
|
763
795
|
}) => t ? /* @__PURE__ */ n(
|
|
764
796
|
"div",
|
|
765
797
|
{
|
|
766
798
|
className: "ll-minimized ll-minimized--mobile",
|
|
767
799
|
role: "region",
|
|
768
800
|
"aria-label": `${r} widget`,
|
|
769
|
-
children: /* @__PURE__ */
|
|
801
|
+
children: /* @__PURE__ */ w(
|
|
770
802
|
"button",
|
|
771
803
|
{
|
|
772
804
|
type: "button",
|
|
@@ -795,24 +827,24 @@ const Vn = ({
|
|
|
795
827
|
}
|
|
796
828
|
),
|
|
797
829
|
/* @__PURE__ */ n("span", { className: "ll-minimized__name", children: r }),
|
|
798
|
-
/* @__PURE__ */
|
|
830
|
+
/* @__PURE__ */ w("div", { className: "ll-minimized__controls", children: [
|
|
799
831
|
/* @__PURE__ */ n(
|
|
800
832
|
"span",
|
|
801
833
|
{
|
|
802
834
|
className: "ll-minimized__btn",
|
|
803
835
|
role: "button",
|
|
804
836
|
tabIndex: 0,
|
|
805
|
-
onClick: (
|
|
806
|
-
|
|
837
|
+
onClick: (h) => {
|
|
838
|
+
h.stopPropagation(), u();
|
|
807
839
|
},
|
|
808
|
-
onKeyDown: (
|
|
809
|
-
(
|
|
840
|
+
onKeyDown: (h) => {
|
|
841
|
+
(h.key === "Enter" || h.key === " ") && (h.stopPropagation(), h.preventDefault(), u());
|
|
810
842
|
},
|
|
811
843
|
"aria-label": l ? "Unmute microphone" : "Mute microphone",
|
|
812
|
-
children: /* @__PURE__ */ n(
|
|
844
|
+
children: /* @__PURE__ */ n(Mt, { muted: l, className: "ll-minimized__icon" })
|
|
813
845
|
}
|
|
814
846
|
),
|
|
815
|
-
/* @__PURE__ */ n(
|
|
847
|
+
/* @__PURE__ */ n(Tt, { className: "ll-minimized__icon ll-minimized__icon--expand" })
|
|
816
848
|
] })
|
|
817
849
|
]
|
|
818
850
|
}
|
|
@@ -825,7 +857,7 @@ const Vn = ({
|
|
|
825
857
|
"data-position": e,
|
|
826
858
|
role: "region",
|
|
827
859
|
"aria-label": `${r} widget`,
|
|
828
|
-
children: /* @__PURE__ */
|
|
860
|
+
children: /* @__PURE__ */ w("div", { className: "ll-minimized__surface", children: [
|
|
829
861
|
o ? (
|
|
830
862
|
// eslint-disable-next-line @next/next/no-img-element
|
|
831
863
|
/* @__PURE__ */ n(
|
|
@@ -837,11 +869,11 @@ const Vn = ({
|
|
|
837
869
|
}
|
|
838
870
|
)
|
|
839
871
|
) : /* @__PURE__ */ n("div", { className: "ll-minimized__avatar ll-minimized__avatar--placeholder" }),
|
|
840
|
-
/* @__PURE__ */
|
|
872
|
+
/* @__PURE__ */ w("div", { className: "ll-minimized__meta", children: [
|
|
841
873
|
/* @__PURE__ */ n("span", { className: "ll-minimized__name", children: r }),
|
|
842
874
|
/* @__PURE__ */ n("span", { className: "ll-minimized__state", children: i === "speaking" ? "Speaking" : i === "thinking" ? "Thinking" : "Listening" })
|
|
843
875
|
] }),
|
|
844
|
-
/* @__PURE__ */
|
|
876
|
+
/* @__PURE__ */ w("div", { className: "ll-minimized__controls", children: [
|
|
845
877
|
/* @__PURE__ */ n(
|
|
846
878
|
"button",
|
|
847
879
|
{
|
|
@@ -849,7 +881,7 @@ const Vn = ({
|
|
|
849
881
|
className: "ll-minimized__btn",
|
|
850
882
|
onClick: u,
|
|
851
883
|
"aria-label": l ? "Unmute microphone" : "Mute microphone",
|
|
852
|
-
children: /* @__PURE__ */ n(
|
|
884
|
+
children: /* @__PURE__ */ n(Mt, { muted: l, className: "ll-minimized__icon" })
|
|
853
885
|
}
|
|
854
886
|
),
|
|
855
887
|
/* @__PURE__ */ n(
|
|
@@ -859,7 +891,7 @@ const Vn = ({
|
|
|
859
891
|
className: "ll-minimized__btn",
|
|
860
892
|
onClick: d,
|
|
861
893
|
"aria-label": `Expand ${r} widget`,
|
|
862
|
-
children: /* @__PURE__ */ n(
|
|
894
|
+
children: /* @__PURE__ */ n(Tt, { className: "ll-minimized__icon" })
|
|
863
895
|
}
|
|
864
896
|
),
|
|
865
897
|
/* @__PURE__ */ n(
|
|
@@ -867,9 +899,9 @@ const Vn = ({
|
|
|
867
899
|
{
|
|
868
900
|
type: "button",
|
|
869
901
|
className: "ll-minimized__btn ll-minimized__btn--close",
|
|
870
|
-
onClick:
|
|
902
|
+
onClick: m,
|
|
871
903
|
"aria-label": "Close widget",
|
|
872
|
-
children: /* @__PURE__ */ n(
|
|
904
|
+
children: /* @__PURE__ */ n(Bn, { className: "ll-minimized__icon" })
|
|
873
905
|
}
|
|
874
906
|
)
|
|
875
907
|
] })
|
|
@@ -882,8 +914,8 @@ const Vn = ({
|
|
|
882
914
|
className: o,
|
|
883
915
|
style: i
|
|
884
916
|
}) => {
|
|
885
|
-
const [l, s] =
|
|
886
|
-
if (
|
|
917
|
+
const [l, s] = S(!1), d = E(e);
|
|
918
|
+
if (T(() => {
|
|
887
919
|
d.current !== e && (d.current = e, s(!1));
|
|
888
920
|
}, [e]), !e) return null;
|
|
889
921
|
const u = {
|
|
@@ -923,27 +955,27 @@ const Vn = ({
|
|
|
923
955
|
branding: s,
|
|
924
956
|
teamMembers: d,
|
|
925
957
|
currentTeamMemberId: u,
|
|
926
|
-
isSwitchingTeamMember:
|
|
927
|
-
teamSwitcherOpen:
|
|
958
|
+
isSwitchingTeamMember: m,
|
|
959
|
+
teamSwitcherOpen: h,
|
|
928
960
|
onToggleTeamSwitcher: a,
|
|
929
961
|
onSelectTeamMember: c,
|
|
930
|
-
languageMenuOpen:
|
|
962
|
+
languageMenuOpen: R,
|
|
931
963
|
onToggleLanguageMenu: C,
|
|
932
|
-
connectionState:
|
|
933
|
-
agentState:
|
|
934
|
-
transcript:
|
|
964
|
+
connectionState: L,
|
|
965
|
+
agentState: v,
|
|
966
|
+
transcript: b,
|
|
935
967
|
canResume: z,
|
|
936
|
-
needsUserGesture:
|
|
937
|
-
error:
|
|
968
|
+
needsUserGesture: I,
|
|
969
|
+
error: H,
|
|
938
970
|
isMuted: p,
|
|
939
|
-
micError:
|
|
940
|
-
micDevices:
|
|
941
|
-
isCameraEnabled:
|
|
942
|
-
cameraPreviewEl:
|
|
943
|
-
cameraDevices:
|
|
944
|
-
activeCameraId:
|
|
945
|
-
isScreenShareEnabled:
|
|
946
|
-
screenPreviewEl:
|
|
971
|
+
micError: N,
|
|
972
|
+
micDevices: B,
|
|
973
|
+
isCameraEnabled: D,
|
|
974
|
+
cameraPreviewEl: A,
|
|
975
|
+
cameraDevices: O,
|
|
976
|
+
activeCameraId: W,
|
|
977
|
+
isScreenShareEnabled: V,
|
|
978
|
+
screenPreviewEl: te,
|
|
947
979
|
isSpeakerMuted: ue,
|
|
948
980
|
allowCamera: He,
|
|
949
981
|
allowScreenShare: Oe,
|
|
@@ -957,48 +989,48 @@ const Vn = ({
|
|
|
957
989
|
onToggleCamera: we,
|
|
958
990
|
onSwitchCameraDevice: _e,
|
|
959
991
|
onToggleScreenShare: xe,
|
|
960
|
-
onToggleSpeaker:
|
|
992
|
+
onToggleSpeaker: j,
|
|
961
993
|
onSendMessage: We,
|
|
962
994
|
onMinimize: Fe,
|
|
963
995
|
onClose: Ue,
|
|
964
996
|
onClearMicError: je
|
|
965
997
|
}) => {
|
|
966
998
|
var Se;
|
|
967
|
-
const
|
|
968
|
-
|
|
969
|
-
const
|
|
970
|
-
|
|
971
|
-
}, [
|
|
972
|
-
const
|
|
973
|
-
|
|
974
|
-
}, [
|
|
975
|
-
const [
|
|
976
|
-
|
|
977
|
-
if (!
|
|
978
|
-
const
|
|
979
|
-
|
|
999
|
+
const ae = b.length > 0 ? b[b.length - 1] : null, ie = ((d == null ? void 0 : d.length) ?? 0) > 1, ke = L === "connecting" || L === "connected", Le = L === "connected", fe = L === "idle" || L === "disconnected" || L === "error", J = E(null), Re = E(null);
|
|
1000
|
+
T(() => {
|
|
1001
|
+
const y = J.current;
|
|
1002
|
+
y && (y.innerHTML = "", A && (A.style.width = "100%", A.style.height = "100%", A.style.objectFit = "cover", A.style.transform = "scaleX(-1)", y.appendChild(A)));
|
|
1003
|
+
}, [A]), T(() => {
|
|
1004
|
+
const y = Re.current;
|
|
1005
|
+
y && (y.innerHTML = "", te && (te.style.width = "100%", te.style.height = "100%", te.style.objectFit = "contain", y.appendChild(te)));
|
|
1006
|
+
}, [te]);
|
|
1007
|
+
const [ne, ee] = S(!1), [le, ce] = S(!1);
|
|
1008
|
+
T(() => {
|
|
1009
|
+
if (!ne && !le && !R && !h) return;
|
|
1010
|
+
const y = () => {
|
|
1011
|
+
ee(!1), ce(!1), R && C(), h && a();
|
|
980
1012
|
};
|
|
981
|
-
return document.addEventListener("click",
|
|
1013
|
+
return document.addEventListener("click", y), () => document.removeEventListener("click", y);
|
|
982
1014
|
}, [
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
1015
|
+
ne,
|
|
1016
|
+
le,
|
|
1017
|
+
R,
|
|
1018
|
+
h,
|
|
987
1019
|
C,
|
|
988
1020
|
a
|
|
989
1021
|
]);
|
|
990
|
-
const [
|
|
991
|
-
(
|
|
992
|
-
|
|
993
|
-
const
|
|
994
|
-
|
|
1022
|
+
const [Q, re] = S(""), pe = k(
|
|
1023
|
+
(y) => {
|
|
1024
|
+
y.preventDefault();
|
|
1025
|
+
const K = Q.trim();
|
|
1026
|
+
K && (We(K), re(""));
|
|
995
1027
|
},
|
|
996
|
-
[
|
|
997
|
-
), Ie = s.productName || "Live Layer", Ve = Le && (
|
|
1028
|
+
[Q, We]
|
|
1029
|
+
), Ie = s.productName || "Live Layer", Ve = Le && (ae != null && ae.text) ? ae.text : l || "", Me = [
|
|
998
1030
|
"ll-expanded",
|
|
999
1031
|
t ? "ll-expanded--mobile" : "ll-expanded--desktop"
|
|
1000
1032
|
].join(" ");
|
|
1001
|
-
return /* @__PURE__ */
|
|
1033
|
+
return /* @__PURE__ */ w(
|
|
1002
1034
|
"div",
|
|
1003
1035
|
{
|
|
1004
1036
|
className: Me,
|
|
@@ -1007,7 +1039,7 @@ const Vn = ({
|
|
|
1007
1039
|
role: "dialog",
|
|
1008
1040
|
"aria-label": `${r} widget`,
|
|
1009
1041
|
children: [
|
|
1010
|
-
/* @__PURE__ */
|
|
1042
|
+
/* @__PURE__ */ w("div", { className: "ll-expanded__bg", children: [
|
|
1011
1043
|
o ? /* @__PURE__ */ n(
|
|
1012
1044
|
Jn,
|
|
1013
1045
|
{
|
|
@@ -1029,11 +1061,11 @@ const Vn = ({
|
|
|
1029
1061
|
)
|
|
1030
1062
|
] }),
|
|
1031
1063
|
/* @__PURE__ */ n("div", { ref: Be, className: "ll-expanded__video" }),
|
|
1032
|
-
|
|
1064
|
+
L === "connecting" && /* @__PURE__ */ w("div", { className: "ll-expanded__overlay ll-expanded__overlay--connecting", children: [
|
|
1033
1065
|
/* @__PURE__ */ n("div", { className: "ll-expanded__spinner" }),
|
|
1034
|
-
/* @__PURE__ */ n("p", { className: "ll-expanded__overlay-text", children:
|
|
1066
|
+
/* @__PURE__ */ n("p", { className: "ll-expanded__overlay-text", children: m ? "Switching..." : "Connecting..." })
|
|
1035
1067
|
] }),
|
|
1036
|
-
|
|
1068
|
+
I && Le && /* @__PURE__ */ w(
|
|
1037
1069
|
"button",
|
|
1038
1070
|
{
|
|
1039
1071
|
type: "button",
|
|
@@ -1045,81 +1077,81 @@ const Vn = ({
|
|
|
1045
1077
|
]
|
|
1046
1078
|
}
|
|
1047
1079
|
),
|
|
1048
|
-
ke ? /* @__PURE__ */
|
|
1049
|
-
/* @__PURE__ */
|
|
1050
|
-
/* @__PURE__ */
|
|
1051
|
-
/* @__PURE__ */
|
|
1080
|
+
ke ? /* @__PURE__ */ w("div", { className: "ll-expanded__topbar", children: [
|
|
1081
|
+
/* @__PURE__ */ w("div", { className: "ll-expanded__topbar-left", children: [
|
|
1082
|
+
/* @__PURE__ */ w("div", { className: "ll-expanded__pill-wrap", children: [
|
|
1083
|
+
/* @__PURE__ */ w(
|
|
1052
1084
|
"button",
|
|
1053
1085
|
{
|
|
1054
1086
|
type: "button",
|
|
1055
1087
|
className: "ll-hpill",
|
|
1056
|
-
onClick: (
|
|
1057
|
-
|
|
1088
|
+
onClick: (y) => {
|
|
1089
|
+
ie && (y.stopPropagation(), a());
|
|
1058
1090
|
},
|
|
1059
|
-
"aria-haspopup":
|
|
1060
|
-
"aria-expanded":
|
|
1091
|
+
"aria-haspopup": ie ? "listbox" : void 0,
|
|
1092
|
+
"aria-expanded": ie ? h : void 0,
|
|
1061
1093
|
children: [
|
|
1062
1094
|
/* @__PURE__ */ n("span", { className: "ll-hpill__label", children: r }),
|
|
1063
|
-
|
|
1095
|
+
ie && /* @__PURE__ */ n(Xe, {})
|
|
1064
1096
|
]
|
|
1065
1097
|
}
|
|
1066
1098
|
),
|
|
1067
|
-
|
|
1099
|
+
ie && h && /* @__PURE__ */ n(
|
|
1068
1100
|
"div",
|
|
1069
1101
|
{
|
|
1070
1102
|
className: "ll-hmenu",
|
|
1071
|
-
onClick: (
|
|
1103
|
+
onClick: (y) => y.stopPropagation(),
|
|
1072
1104
|
role: "listbox",
|
|
1073
|
-
children: d == null ? void 0 : d.map((
|
|
1105
|
+
children: d == null ? void 0 : d.map((y) => /* @__PURE__ */ w(
|
|
1074
1106
|
"button",
|
|
1075
1107
|
{
|
|
1076
1108
|
type: "button",
|
|
1077
|
-
className: `ll-hmenu__item ${
|
|
1078
|
-
onClick: () => c(
|
|
1109
|
+
className: `ll-hmenu__item ${y.id === u ? "is-active" : ""}`,
|
|
1110
|
+
onClick: () => c(y.id),
|
|
1079
1111
|
role: "option",
|
|
1080
|
-
"aria-selected":
|
|
1112
|
+
"aria-selected": y.id === u,
|
|
1081
1113
|
children: [
|
|
1082
|
-
|
|
1114
|
+
y.avatarImageUrl && /* @__PURE__ */ n(
|
|
1083
1115
|
"img",
|
|
1084
1116
|
{
|
|
1085
|
-
src:
|
|
1117
|
+
src: y.avatarImageUrl,
|
|
1086
1118
|
alt: "",
|
|
1087
1119
|
className: "ll-hmenu__avatar"
|
|
1088
1120
|
}
|
|
1089
1121
|
),
|
|
1090
|
-
/* @__PURE__ */ n("span", { className: "ll-hmenu__name", children:
|
|
1091
|
-
|
|
1122
|
+
/* @__PURE__ */ n("span", { className: "ll-hmenu__name", children: y.name }),
|
|
1123
|
+
y.role && /* @__PURE__ */ n("span", { className: "ll-hmenu__role", children: y.role })
|
|
1092
1124
|
]
|
|
1093
1125
|
},
|
|
1094
|
-
|
|
1126
|
+
y.id
|
|
1095
1127
|
))
|
|
1096
1128
|
}
|
|
1097
1129
|
)
|
|
1098
1130
|
] }),
|
|
1099
|
-
/* @__PURE__ */
|
|
1100
|
-
/* @__PURE__ */
|
|
1131
|
+
/* @__PURE__ */ w("div", { className: "ll-expanded__pill-wrap", children: [
|
|
1132
|
+
/* @__PURE__ */ w(
|
|
1101
1133
|
"button",
|
|
1102
1134
|
{
|
|
1103
1135
|
type: "button",
|
|
1104
1136
|
className: "ll-hpill ll-hpill--compact",
|
|
1105
|
-
onClick: (
|
|
1106
|
-
|
|
1137
|
+
onClick: (y) => {
|
|
1138
|
+
y.stopPropagation(), C();
|
|
1107
1139
|
},
|
|
1108
1140
|
"aria-haspopup": "listbox",
|
|
1109
|
-
"aria-expanded":
|
|
1141
|
+
"aria-expanded": R,
|
|
1110
1142
|
"aria-label": "Language: English",
|
|
1111
1143
|
title: "Language: English",
|
|
1112
1144
|
children: [
|
|
1113
1145
|
/* @__PURE__ */ n("span", { className: "ll-hpill__label", children: "EN" }),
|
|
1114
|
-
/* @__PURE__ */ n(
|
|
1146
|
+
/* @__PURE__ */ n(Xe, {})
|
|
1115
1147
|
]
|
|
1116
1148
|
}
|
|
1117
1149
|
),
|
|
1118
|
-
|
|
1150
|
+
R && /* @__PURE__ */ n(
|
|
1119
1151
|
"div",
|
|
1120
1152
|
{
|
|
1121
1153
|
className: "ll-hmenu",
|
|
1122
|
-
onClick: (
|
|
1154
|
+
onClick: (y) => y.stopPropagation(),
|
|
1123
1155
|
role: "listbox",
|
|
1124
1156
|
children: /* @__PURE__ */ n(
|
|
1125
1157
|
"button",
|
|
@@ -1137,12 +1169,12 @@ const Vn = ({
|
|
|
1137
1169
|
/* @__PURE__ */ n(
|
|
1138
1170
|
"span",
|
|
1139
1171
|
{
|
|
1140
|
-
className: `ll-expanded__state ll-expanded__state--${
|
|
1141
|
-
children:
|
|
1172
|
+
className: `ll-expanded__state ll-expanded__state--${v}`,
|
|
1173
|
+
children: v
|
|
1142
1174
|
}
|
|
1143
1175
|
)
|
|
1144
1176
|
] }),
|
|
1145
|
-
/* @__PURE__ */
|
|
1177
|
+
/* @__PURE__ */ w("div", { className: "ll-expanded__header-actions", children: [
|
|
1146
1178
|
/* @__PURE__ */ n(
|
|
1147
1179
|
"button",
|
|
1148
1180
|
{
|
|
@@ -1151,7 +1183,7 @@ const Vn = ({
|
|
|
1151
1183
|
onClick: Fe,
|
|
1152
1184
|
"aria-label": "Minimize widget",
|
|
1153
1185
|
title: "Minimize",
|
|
1154
|
-
children: /* @__PURE__ */ n(
|
|
1186
|
+
children: /* @__PURE__ */ n(Ht, {})
|
|
1155
1187
|
}
|
|
1156
1188
|
),
|
|
1157
1189
|
/* @__PURE__ */ n(
|
|
@@ -1162,15 +1194,15 @@ const Vn = ({
|
|
|
1162
1194
|
onClick: Ue,
|
|
1163
1195
|
"aria-label": "End call",
|
|
1164
1196
|
title: "End call",
|
|
1165
|
-
children: /* @__PURE__ */ n(
|
|
1197
|
+
children: /* @__PURE__ */ n(zt, {})
|
|
1166
1198
|
}
|
|
1167
1199
|
)
|
|
1168
1200
|
] })
|
|
1169
1201
|
] }) : (
|
|
1170
1202
|
// Idle-state header with Live Layer product name + minimize/close
|
|
1171
|
-
/* @__PURE__ */
|
|
1203
|
+
/* @__PURE__ */ w("div", { className: "ll-expanded__header ll-expanded__header--idle", children: [
|
|
1172
1204
|
/* @__PURE__ */ n("span", { className: "ll-expanded__brand", children: Ie }),
|
|
1173
|
-
/* @__PURE__ */
|
|
1205
|
+
/* @__PURE__ */ w("div", { className: "ll-expanded__header-actions", children: [
|
|
1174
1206
|
/* @__PURE__ */ n(
|
|
1175
1207
|
"button",
|
|
1176
1208
|
{
|
|
@@ -1178,7 +1210,7 @@ const Vn = ({
|
|
|
1178
1210
|
className: "ll-hbtn ll-hbtn--ghost",
|
|
1179
1211
|
onClick: Fe,
|
|
1180
1212
|
"aria-label": "Minimize widget",
|
|
1181
|
-
children: /* @__PURE__ */ n(
|
|
1213
|
+
children: /* @__PURE__ */ n(Ht, {})
|
|
1182
1214
|
}
|
|
1183
1215
|
),
|
|
1184
1216
|
/* @__PURE__ */ n(
|
|
@@ -1188,89 +1220,89 @@ const Vn = ({
|
|
|
1188
1220
|
className: "ll-hbtn ll-hbtn--danger",
|
|
1189
1221
|
onClick: Ue,
|
|
1190
1222
|
"aria-label": "Close widget",
|
|
1191
|
-
children: /* @__PURE__ */ n(
|
|
1223
|
+
children: /* @__PURE__ */ n(zt, {})
|
|
1192
1224
|
}
|
|
1193
1225
|
)
|
|
1194
1226
|
] })
|
|
1195
1227
|
] })
|
|
1196
1228
|
),
|
|
1197
1229
|
fe && /* @__PURE__ */ (() => {
|
|
1198
|
-
const
|
|
1199
|
-
return /* @__PURE__ */
|
|
1200
|
-
|
|
1230
|
+
const y = z ? "Restart paused session" : L === "disconnected" ? "Reconnect to agent" : "Start video call", K = z ? "Pick up where you left off" : null;
|
|
1231
|
+
return /* @__PURE__ */ w(ut, { children: [
|
|
1232
|
+
L === "idle" && !z && !H && /* @__PURE__ */ w(
|
|
1201
1233
|
"button",
|
|
1202
1234
|
{
|
|
1203
1235
|
type: "button",
|
|
1204
1236
|
className: "ll-expanded__play",
|
|
1205
1237
|
onClick: me,
|
|
1206
|
-
"aria-label":
|
|
1238
|
+
"aria-label": y,
|
|
1207
1239
|
children: [
|
|
1208
1240
|
/* @__PURE__ */ n("div", { className: "ll-expanded__play-circle", children: /* @__PURE__ */ n("svg", { width: "22", height: "22", viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": !0, children: /* @__PURE__ */ n("polygon", { points: "6 3 20 12 6 21 6 3" }) }) }),
|
|
1209
|
-
/* @__PURE__ */ n("span", { className: "ll-expanded__play-label", children:
|
|
1241
|
+
/* @__PURE__ */ n("span", { className: "ll-expanded__play-label", children: y })
|
|
1210
1242
|
]
|
|
1211
1243
|
}
|
|
1212
1244
|
),
|
|
1213
|
-
/* @__PURE__ */
|
|
1245
|
+
/* @__PURE__ */ w("div", { className: "ll-expanded__bottom ll-expanded__bottom--idle", children: [
|
|
1214
1246
|
l && /* @__PURE__ */ n("div", { className: "ll-expanded__transcript", children: /* @__PURE__ */ n("p", { className: "ll-expanded__transcript-text", children: l }) }),
|
|
1215
|
-
|
|
1247
|
+
K && /* @__PURE__ */ n("p", { className: "ll-expanded__cta-sublabel", children: K }),
|
|
1216
1248
|
/* @__PURE__ */ n(
|
|
1217
1249
|
"button",
|
|
1218
1250
|
{
|
|
1219
1251
|
type: "button",
|
|
1220
1252
|
className: "ll-expanded__cta",
|
|
1221
1253
|
onClick: me,
|
|
1222
|
-
"aria-label":
|
|
1223
|
-
children:
|
|
1254
|
+
"aria-label": y,
|
|
1255
|
+
children: y
|
|
1224
1256
|
}
|
|
1225
1257
|
)
|
|
1226
1258
|
] })
|
|
1227
1259
|
] });
|
|
1228
1260
|
})(),
|
|
1229
|
-
/* @__PURE__ */
|
|
1261
|
+
/* @__PURE__ */ w(
|
|
1230
1262
|
"div",
|
|
1231
1263
|
{
|
|
1232
|
-
className: `ll-expanded__pip ${ke && (
|
|
1264
|
+
className: `ll-expanded__pip ${ke && (D || V) ? "is-visible" : ""}`,
|
|
1233
1265
|
children: [
|
|
1234
1266
|
/* @__PURE__ */ n(
|
|
1235
1267
|
"div",
|
|
1236
1268
|
{
|
|
1237
1269
|
ref: Re,
|
|
1238
|
-
className:
|
|
1270
|
+
className: V ? "ll-expanded__pip-host" : "ll-expanded__pip-host is-hidden"
|
|
1239
1271
|
}
|
|
1240
1272
|
),
|
|
1241
1273
|
/* @__PURE__ */ n(
|
|
1242
1274
|
"div",
|
|
1243
1275
|
{
|
|
1244
|
-
ref:
|
|
1245
|
-
className: !
|
|
1276
|
+
ref: J,
|
|
1277
|
+
className: !V && D ? "ll-expanded__pip-host" : "ll-expanded__pip-host is-hidden"
|
|
1246
1278
|
}
|
|
1247
1279
|
)
|
|
1248
1280
|
]
|
|
1249
1281
|
}
|
|
1250
1282
|
),
|
|
1251
|
-
ke ? /* @__PURE__ */
|
|
1283
|
+
ke ? /* @__PURE__ */ w("div", { className: "ll-expanded__bottom", children: [
|
|
1252
1284
|
Ve && /* @__PURE__ */ n("div", { className: "ll-expanded__transcript", children: /* @__PURE__ */ n("p", { className: "ll-expanded__transcript-text", children: Ve }) }),
|
|
1253
|
-
/* @__PURE__ */
|
|
1285
|
+
/* @__PURE__ */ w("div", { className: "ll-toolbar", onClick: (y) => y.stopPropagation(), children: [
|
|
1254
1286
|
Oe && /* @__PURE__ */ n(
|
|
1255
1287
|
"button",
|
|
1256
1288
|
{
|
|
1257
1289
|
type: "button",
|
|
1258
|
-
className: `ll-tool ${
|
|
1290
|
+
className: `ll-tool ${V ? "is-on" : ""}`,
|
|
1259
1291
|
onClick: xe,
|
|
1260
|
-
"aria-label":
|
|
1261
|
-
title:
|
|
1292
|
+
"aria-label": V ? "Stop sharing screen" : "Share screen",
|
|
1293
|
+
title: V ? "Stop sharing" : "Share screen",
|
|
1262
1294
|
children: /* @__PURE__ */ n(Xn, {})
|
|
1263
1295
|
}
|
|
1264
1296
|
),
|
|
1265
|
-
He && /* @__PURE__ */
|
|
1297
|
+
He && /* @__PURE__ */ w("div", { className: "ll-tool-split", children: [
|
|
1266
1298
|
/* @__PURE__ */ n(
|
|
1267
1299
|
"button",
|
|
1268
1300
|
{
|
|
1269
1301
|
type: "button",
|
|
1270
|
-
className: `ll-tool ll-tool--left ${
|
|
1302
|
+
className: `ll-tool ll-tool--left ${D ? "is-on" : ""}`,
|
|
1271
1303
|
onClick: we,
|
|
1272
|
-
"aria-label":
|
|
1273
|
-
title:
|
|
1304
|
+
"aria-label": D ? "Turn off camera" : "Turn on camera",
|
|
1305
|
+
title: D ? "Stop camera" : "Start camera",
|
|
1274
1306
|
children: /* @__PURE__ */ n(Qn, {})
|
|
1275
1307
|
}
|
|
1276
1308
|
),
|
|
@@ -1278,29 +1310,29 @@ const Vn = ({
|
|
|
1278
1310
|
"button",
|
|
1279
1311
|
{
|
|
1280
1312
|
type: "button",
|
|
1281
|
-
className: `ll-tool ll-tool--right ${
|
|
1282
|
-
onClick: (
|
|
1283
|
-
|
|
1313
|
+
className: `ll-tool ll-tool--right ${D ? "is-on" : ""}`,
|
|
1314
|
+
onClick: (y) => {
|
|
1315
|
+
y.stopPropagation(), ce((K) => !K), ee(!1);
|
|
1284
1316
|
},
|
|
1285
1317
|
"aria-label": "Camera devices",
|
|
1286
1318
|
"aria-haspopup": "listbox",
|
|
1287
|
-
"aria-expanded":
|
|
1288
|
-
children: /* @__PURE__ */ n(
|
|
1319
|
+
"aria-expanded": le,
|
|
1320
|
+
children: /* @__PURE__ */ n(Xe, {})
|
|
1289
1321
|
}
|
|
1290
1322
|
),
|
|
1291
|
-
|
|
1292
|
-
|
|
1323
|
+
le && O.length > 0 && /* @__PURE__ */ n(
|
|
1324
|
+
Ot,
|
|
1293
1325
|
{
|
|
1294
1326
|
label: "Camera",
|
|
1295
|
-
devices:
|
|
1296
|
-
activeId:
|
|
1297
|
-
onPick: (
|
|
1298
|
-
|
|
1327
|
+
devices: O,
|
|
1328
|
+
activeId: W,
|
|
1329
|
+
onPick: (y) => {
|
|
1330
|
+
ce(!1), _e(y);
|
|
1299
1331
|
}
|
|
1300
1332
|
}
|
|
1301
1333
|
)
|
|
1302
1334
|
] }),
|
|
1303
|
-
/* @__PURE__ */
|
|
1335
|
+
/* @__PURE__ */ w("div", { className: "ll-tool-split", children: [
|
|
1304
1336
|
/* @__PURE__ */ n(
|
|
1305
1337
|
"button",
|
|
1306
1338
|
{
|
|
@@ -1317,22 +1349,22 @@ const Vn = ({
|
|
|
1317
1349
|
{
|
|
1318
1350
|
type: "button",
|
|
1319
1351
|
className: `ll-tool ll-tool--right ${p ? "is-muted" : ""}`,
|
|
1320
|
-
onClick: (
|
|
1321
|
-
|
|
1352
|
+
onClick: (y) => {
|
|
1353
|
+
y.stopPropagation(), ee((K) => !K), ce(!1);
|
|
1322
1354
|
},
|
|
1323
1355
|
"aria-label": "Microphone devices",
|
|
1324
1356
|
"aria-haspopup": "listbox",
|
|
1325
|
-
"aria-expanded":
|
|
1326
|
-
children: /* @__PURE__ */ n(
|
|
1357
|
+
"aria-expanded": ne,
|
|
1358
|
+
children: /* @__PURE__ */ n(Xe, {})
|
|
1327
1359
|
}
|
|
1328
1360
|
),
|
|
1329
|
-
|
|
1330
|
-
|
|
1361
|
+
ne && B.length > 0 && /* @__PURE__ */ n(
|
|
1362
|
+
Ot,
|
|
1331
1363
|
{
|
|
1332
1364
|
label: "Microphone",
|
|
1333
|
-
devices:
|
|
1365
|
+
devices: B,
|
|
1334
1366
|
activeId: "",
|
|
1335
|
-
onPick: () =>
|
|
1367
|
+
onPick: () => ee(!1)
|
|
1336
1368
|
}
|
|
1337
1369
|
)
|
|
1338
1370
|
] }),
|
|
@@ -1341,26 +1373,26 @@ const Vn = ({
|
|
|
1341
1373
|
{
|
|
1342
1374
|
type: "button",
|
|
1343
1375
|
className: `ll-tool ${ue ? "is-muted" : ""}`,
|
|
1344
|
-
onClick:
|
|
1376
|
+
onClick: j,
|
|
1345
1377
|
"aria-label": ue ? "Unmute speaker" : "Mute speaker",
|
|
1346
1378
|
title: ue ? "Unmute speaker" : "Mute speaker",
|
|
1347
1379
|
children: /* @__PURE__ */ n(er, { muted: ue })
|
|
1348
1380
|
}
|
|
1349
1381
|
)
|
|
1350
1382
|
] }),
|
|
1351
|
-
qe && /* @__PURE__ */
|
|
1383
|
+
qe && /* @__PURE__ */ w("form", { className: "ll-message-input", onSubmit: pe, children: [
|
|
1352
1384
|
/* @__PURE__ */ n(
|
|
1353
1385
|
"input",
|
|
1354
1386
|
{
|
|
1355
1387
|
type: "text",
|
|
1356
1388
|
className: "ll-message-input__field",
|
|
1357
1389
|
placeholder: "Message...",
|
|
1358
|
-
value:
|
|
1359
|
-
onChange: (
|
|
1390
|
+
value: Q,
|
|
1391
|
+
onChange: (y) => re(y.target.value),
|
|
1360
1392
|
"aria-label": "Message the agent"
|
|
1361
1393
|
}
|
|
1362
1394
|
),
|
|
1363
|
-
|
|
1395
|
+
Q.trim() && /* @__PURE__ */ n(
|
|
1364
1396
|
"button",
|
|
1365
1397
|
{
|
|
1366
1398
|
type: "submit",
|
|
@@ -1381,9 +1413,9 @@ const Vn = ({
|
|
|
1381
1413
|
)
|
|
1382
1414
|
] }) : null,
|
|
1383
1415
|
(() => {
|
|
1384
|
-
if (
|
|
1385
|
-
return /* @__PURE__ */
|
|
1386
|
-
/* @__PURE__ */ n("span", { children:
|
|
1416
|
+
if (N && L !== "error")
|
|
1417
|
+
return /* @__PURE__ */ w("div", { className: "ll-expanded__banner", role: "alert", children: [
|
|
1418
|
+
/* @__PURE__ */ n("span", { children: N }),
|
|
1387
1419
|
/* @__PURE__ */ n(
|
|
1388
1420
|
"button",
|
|
1389
1421
|
{
|
|
@@ -1395,17 +1427,17 @@ const Vn = ({
|
|
|
1395
1427
|
}
|
|
1396
1428
|
)
|
|
1397
1429
|
] });
|
|
1398
|
-
if (!
|
|
1399
|
-
let
|
|
1400
|
-
return
|
|
1401
|
-
/* @__PURE__ */ n("span", { children:
|
|
1430
|
+
if (!H || L !== "error") return null;
|
|
1431
|
+
let y = "Failed to connect", K = "Try again";
|
|
1432
|
+
return H === "MIC_PERMISSION_DENIED" ? y = "Microphone blocked. Allow access to talk." : H === "MIC_NOT_FOUND" ? y = "No microphone found. Plug one in + retry." : H === "MIC_UNAVAILABLE" ? y = "Mic unavailable. Check other apps using it." : H === "AGENT_TIMEOUT" ? y = "Agent didn't pick up. Try again." : H === "CONNECT_FAILED" ? y = "Connection failed. Check your network." : H.length < 80 && (y = H), /* @__PURE__ */ w("div", { className: "ll-expanded__banner ll-expanded__banner--error", role: "alert", children: [
|
|
1433
|
+
/* @__PURE__ */ n("span", { children: y }),
|
|
1402
1434
|
/* @__PURE__ */ n(
|
|
1403
1435
|
"button",
|
|
1404
1436
|
{
|
|
1405
1437
|
type: "button",
|
|
1406
1438
|
className: "ll-expanded__banner-retry",
|
|
1407
1439
|
onClick: ye,
|
|
1408
|
-
children:
|
|
1440
|
+
children: K
|
|
1409
1441
|
}
|
|
1410
1442
|
)
|
|
1411
1443
|
] });
|
|
@@ -1414,33 +1446,33 @@ const Vn = ({
|
|
|
1414
1446
|
}
|
|
1415
1447
|
);
|
|
1416
1448
|
};
|
|
1417
|
-
function
|
|
1449
|
+
function Xe() {
|
|
1418
1450
|
return /* @__PURE__ */ n("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", "aria-hidden": !0, children: /* @__PURE__ */ n("polyline", { points: "6 9 12 15 18 9" }) });
|
|
1419
1451
|
}
|
|
1420
|
-
function
|
|
1421
|
-
return /* @__PURE__ */
|
|
1452
|
+
function zt() {
|
|
1453
|
+
return /* @__PURE__ */ w("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", "aria-hidden": !0, children: [
|
|
1422
1454
|
/* @__PURE__ */ n("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
|
|
1423
1455
|
/* @__PURE__ */ n("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
|
|
1424
1456
|
] });
|
|
1425
1457
|
}
|
|
1426
|
-
function
|
|
1458
|
+
function Ht() {
|
|
1427
1459
|
return /* @__PURE__ */ n("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", "aria-hidden": !0, children: /* @__PURE__ */ n("line", { x1: "5", y1: "12", x2: "19", y2: "12" }) });
|
|
1428
1460
|
}
|
|
1429
1461
|
function Xn() {
|
|
1430
|
-
return /* @__PURE__ */
|
|
1462
|
+
return /* @__PURE__ */ w("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": !0, children: [
|
|
1431
1463
|
/* @__PURE__ */ n("rect", { x: "2", y: "3", width: "20", height: "14", rx: "2" }),
|
|
1432
1464
|
/* @__PURE__ */ n("line", { x1: "8", y1: "21", x2: "16", y2: "21" }),
|
|
1433
1465
|
/* @__PURE__ */ n("line", { x1: "12", y1: "17", x2: "12", y2: "21" })
|
|
1434
1466
|
] });
|
|
1435
1467
|
}
|
|
1436
1468
|
function Qn() {
|
|
1437
|
-
return /* @__PURE__ */
|
|
1469
|
+
return /* @__PURE__ */ w("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": !0, children: [
|
|
1438
1470
|
/* @__PURE__ */ n("path", { d: "M23 7l-7 5 7 5V7z" }),
|
|
1439
1471
|
/* @__PURE__ */ n("rect", { x: "1", y: "5", width: "15", height: "14", rx: "2" })
|
|
1440
1472
|
] });
|
|
1441
1473
|
}
|
|
1442
1474
|
function Zn({ muted: e }) {
|
|
1443
|
-
return /* @__PURE__ */
|
|
1475
|
+
return /* @__PURE__ */ w("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": !0, children: [
|
|
1444
1476
|
/* @__PURE__ */ n("path", { d: "M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z" }),
|
|
1445
1477
|
/* @__PURE__ */ n("path", { d: "M19 10v2a7 7 0 0 1-14 0v-2" }),
|
|
1446
1478
|
/* @__PURE__ */ n("line", { x1: "12", y1: "19", x2: "12", y2: "23" }),
|
|
@@ -1448,21 +1480,21 @@ function Zn({ muted: e }) {
|
|
|
1448
1480
|
] });
|
|
1449
1481
|
}
|
|
1450
1482
|
function er({ muted: e }) {
|
|
1451
|
-
return /* @__PURE__ */
|
|
1483
|
+
return /* @__PURE__ */ w("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": !0, children: [
|
|
1452
1484
|
/* @__PURE__ */ n("polygon", { points: "11 5 6 9 2 9 2 15 6 15 11 19 11 5" }),
|
|
1453
|
-
e ? /* @__PURE__ */ n("line", { x1: "23", y1: "9", x2: "17", y2: "15" }) : /* @__PURE__ */
|
|
1485
|
+
e ? /* @__PURE__ */ n("line", { x1: "23", y1: "9", x2: "17", y2: "15" }) : /* @__PURE__ */ w(ut, { children: [
|
|
1454
1486
|
/* @__PURE__ */ n("path", { d: "M19.07 4.93a10 10 0 0 1 0 14.14" }),
|
|
1455
1487
|
/* @__PURE__ */ n("path", { d: "M15.54 8.46a5 5 0 0 1 0 7.07" })
|
|
1456
1488
|
] })
|
|
1457
1489
|
] });
|
|
1458
1490
|
}
|
|
1459
1491
|
function tr() {
|
|
1460
|
-
return /* @__PURE__ */
|
|
1492
|
+
return /* @__PURE__ */ w("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": !0, children: [
|
|
1461
1493
|
/* @__PURE__ */ n("line", { x1: "5", y1: "12", x2: "19", y2: "12" }),
|
|
1462
1494
|
/* @__PURE__ */ n("polyline", { points: "12 5 19 12 12 19" })
|
|
1463
1495
|
] });
|
|
1464
1496
|
}
|
|
1465
|
-
const
|
|
1497
|
+
const Ot = ({ label: e, devices: t, activeId: r, onPick: o }) => /* @__PURE__ */ w(
|
|
1466
1498
|
"div",
|
|
1467
1499
|
{
|
|
1468
1500
|
className: "ll-device-menu",
|
|
@@ -1472,7 +1504,7 @@ const zt = ({ label: e, devices: t, activeId: r, onPick: o }) => /* @__PURE__ */
|
|
|
1472
1504
|
/* @__PURE__ */ n("p", { className: "ll-device-menu__label", children: e }),
|
|
1473
1505
|
t.map((i, l) => {
|
|
1474
1506
|
const s = r === i.deviceId;
|
|
1475
|
-
return /* @__PURE__ */
|
|
1507
|
+
return /* @__PURE__ */ w(
|
|
1476
1508
|
"button",
|
|
1477
1509
|
{
|
|
1478
1510
|
type: "button",
|
|
@@ -1494,7 +1526,7 @@ const zt = ({ label: e, devices: t, activeId: r, onPick: o }) => /* @__PURE__ */
|
|
|
1494
1526
|
'[data-ll-private="true"]',
|
|
1495
1527
|
".ll-widget"
|
|
1496
1528
|
];
|
|
1497
|
-
function
|
|
1529
|
+
function pt(e) {
|
|
1498
1530
|
let t = e;
|
|
1499
1531
|
for (; t; ) {
|
|
1500
1532
|
for (const r of nr)
|
|
@@ -1503,8 +1535,8 @@ function ut(e) {
|
|
|
1503
1535
|
}
|
|
1504
1536
|
return !1;
|
|
1505
1537
|
}
|
|
1506
|
-
function
|
|
1507
|
-
if (
|
|
1538
|
+
function tt(e) {
|
|
1539
|
+
if (pt(e)) return !1;
|
|
1508
1540
|
if (e instanceof HTMLInputElement) {
|
|
1509
1541
|
if (e.type === "password") return !1;
|
|
1510
1542
|
const t = (e.getAttribute("autocomplete") || "").toLowerCase();
|
|
@@ -1512,7 +1544,7 @@ function et(e) {
|
|
|
1512
1544
|
}
|
|
1513
1545
|
return !0;
|
|
1514
1546
|
}
|
|
1515
|
-
const
|
|
1547
|
+
const Qe = 4096, rr = 20, or = 20, ir = 10, lr = 10, ar = 30, qt = 500, cr = [
|
|
1516
1548
|
'[data-ll-private="true"]',
|
|
1517
1549
|
".ll-widget",
|
|
1518
1550
|
"script",
|
|
@@ -1537,7 +1569,7 @@ function ze(e) {
|
|
|
1537
1569
|
const r = window.innerHeight || document.documentElement.clientHeight, o = window.innerWidth || document.documentElement.clientWidth;
|
|
1538
1570
|
return t.bottom > 0 && t.right > 0 && t.top < r && t.left < o;
|
|
1539
1571
|
}
|
|
1540
|
-
function
|
|
1572
|
+
function Bt(e) {
|
|
1541
1573
|
const t = e.getAttribute("id");
|
|
1542
1574
|
if (t) {
|
|
1543
1575
|
const l = document.querySelector(`label[for="${CSS.escape(t)}"]`);
|
|
@@ -1576,88 +1608,88 @@ function sr(e, t = {}) {
|
|
|
1576
1608
|
for (const p of s) {
|
|
1577
1609
|
if (d.length >= ir) break;
|
|
1578
1610
|
if ($e(p) || !ze(p)) continue;
|
|
1579
|
-
const
|
|
1611
|
+
const N = p.getAttribute("data-ll-region") ?? "", B = p.getAttribute("data-ll-intent") ?? void 0, D = he(
|
|
1580
1612
|
(p.innerText || p.textContent || "").trim(),
|
|
1581
|
-
|
|
1613
|
+
qt * 2
|
|
1582
1614
|
);
|
|
1583
|
-
!
|
|
1615
|
+
!N || !D || d.push({ id: N, intent: B, text: D });
|
|
1584
1616
|
}
|
|
1585
|
-
const u = [],
|
|
1617
|
+
const u = [], m = ["H1", "H2", "H3", "H4", "H5", "H6"], h = Array.from(
|
|
1586
1618
|
r.querySelectorAll("h1, h2, h3, h4, h5, h6")
|
|
1587
1619
|
);
|
|
1588
|
-
for (const p of
|
|
1620
|
+
for (const p of h) {
|
|
1589
1621
|
if ($e(p) || !ze(p)) continue;
|
|
1590
|
-
const
|
|
1591
|
-
|
|
1622
|
+
const N = (p.textContent || "").trim();
|
|
1623
|
+
N && u.push(`${p.tagName}: ${he(N, 200)}`);
|
|
1592
1624
|
}
|
|
1593
1625
|
const a = Array.from(r.querySelectorAll("p, li"));
|
|
1594
1626
|
for (const p of a) {
|
|
1595
|
-
if ($e(p) || !ze(p) ||
|
|
1596
|
-
const
|
|
1597
|
-
|
|
1627
|
+
if ($e(p) || !ze(p) || m.includes(p.tagName)) continue;
|
|
1628
|
+
const N = (p.textContent || "").trim();
|
|
1629
|
+
N.length > 10 && u.push(he(N, qt));
|
|
1598
1630
|
}
|
|
1599
1631
|
const c = u.join(`
|
|
1600
|
-
`),
|
|
1632
|
+
`), R = [], C = Array.from(r.querySelectorAll("a[href]"));
|
|
1601
1633
|
for (const p of C) {
|
|
1602
|
-
if (
|
|
1634
|
+
if (R.length >= rr) break;
|
|
1603
1635
|
if ($e(p) || !ze(p)) continue;
|
|
1604
|
-
const
|
|
1605
|
-
!
|
|
1636
|
+
const N = p.getAttribute("href") || "", B = (p.textContent || "").trim();
|
|
1637
|
+
!N || !B || R.push({ href: N, text: he(B, 100) });
|
|
1606
1638
|
}
|
|
1607
|
-
const
|
|
1639
|
+
const L = [], v = Array.from(
|
|
1608
1640
|
r.querySelectorAll(
|
|
1609
1641
|
"input, textarea, select"
|
|
1610
1642
|
)
|
|
1611
1643
|
);
|
|
1612
|
-
for (const p of
|
|
1613
|
-
if (
|
|
1614
|
-
if ($e(p) || !
|
|
1615
|
-
const
|
|
1616
|
-
|
|
1644
|
+
for (const p of v) {
|
|
1645
|
+
if (L.length >= or) break;
|
|
1646
|
+
if ($e(p) || !tt(p) || !ze(p)) continue;
|
|
1647
|
+
const N = Bt(p), B = p instanceof HTMLInputElement ? p.type : p.tagName.toLowerCase();
|
|
1648
|
+
N && L.push({ label: he(N, 100), type: B });
|
|
1617
1649
|
}
|
|
1618
|
-
const
|
|
1650
|
+
const b = Array.from(
|
|
1619
1651
|
r.querySelectorAll("[data-ll-form]")
|
|
1620
1652
|
), z = [];
|
|
1621
|
-
for (const p of
|
|
1653
|
+
for (const p of b) {
|
|
1622
1654
|
if (z.length >= lr) break;
|
|
1623
|
-
if (
|
|
1624
|
-
const
|
|
1625
|
-
if (!
|
|
1626
|
-
const
|
|
1655
|
+
if (pt(p)) continue;
|
|
1656
|
+
const N = p.getAttribute("data-ll-form") || "";
|
|
1657
|
+
if (!N) continue;
|
|
1658
|
+
const B = p.getAttribute("data-ll-intent") || void 0, D = Array.from(
|
|
1627
1659
|
p.querySelectorAll(
|
|
1628
1660
|
"[data-ll-field]"
|
|
1629
1661
|
)
|
|
1630
|
-
),
|
|
1631
|
-
for (const
|
|
1632
|
-
if (
|
|
1633
|
-
if (!
|
|
1634
|
-
const
|
|
1635
|
-
if (!
|
|
1636
|
-
const
|
|
1637
|
-
|
|
1662
|
+
), A = [];
|
|
1663
|
+
for (const O of D) {
|
|
1664
|
+
if (A.length >= ar) break;
|
|
1665
|
+
if (!tt(O)) continue;
|
|
1666
|
+
const W = O.getAttribute("data-ll-field") || "";
|
|
1667
|
+
if (!W) continue;
|
|
1668
|
+
const V = Bt(O) || W, te = O instanceof HTMLInputElement ? O.type : O.tagName.toLowerCase();
|
|
1669
|
+
A.push({ name: W, label: he(V, 100), type: te });
|
|
1638
1670
|
}
|
|
1639
|
-
z.push({ id:
|
|
1671
|
+
z.push({ id: N, intent: B, fields: A });
|
|
1640
1672
|
}
|
|
1641
|
-
const
|
|
1673
|
+
const I = {
|
|
1642
1674
|
url: o,
|
|
1643
1675
|
title: l,
|
|
1644
1676
|
pathname: i,
|
|
1645
1677
|
regions: d,
|
|
1646
1678
|
visibleText: c,
|
|
1647
|
-
visibleLinks:
|
|
1648
|
-
visibleFields:
|
|
1679
|
+
visibleLinks: R,
|
|
1680
|
+
visibleFields: L,
|
|
1649
1681
|
forms: z,
|
|
1650
1682
|
extras: e
|
|
1651
1683
|
};
|
|
1652
|
-
let
|
|
1653
|
-
for (;
|
|
1654
|
-
|
|
1655
|
-
for (;
|
|
1656
|
-
|
|
1657
|
-
return Ee(
|
|
1684
|
+
let H = Ee(JSON.stringify(I.regions)) + Ee(I.visibleText) + Ee(JSON.stringify(I.visibleLinks)) + Ee(JSON.stringify(I.visibleFields));
|
|
1685
|
+
for (; H > Qe && I.visibleFields.length > 0; )
|
|
1686
|
+
I.visibleFields.pop(), H = Ee(JSON.stringify(I.visibleFields));
|
|
1687
|
+
for (; H > Qe && I.visibleLinks.length > 0; )
|
|
1688
|
+
I.visibleLinks.pop(), H -= 80;
|
|
1689
|
+
return Ee(I.visibleText) > Qe && (I.visibleText = he(I.visibleText, Qe - 100)), I;
|
|
1658
1690
|
}
|
|
1659
1691
|
let Ne = null;
|
|
1660
|
-
function
|
|
1692
|
+
function Wt(e, t = {}) {
|
|
1661
1693
|
const r = Date.now(), i = `${typeof window < "u" && window.location.pathname || "/"}::${typeof window < "u" ? window.scrollY : 0}`;
|
|
1662
1694
|
if (Ne && Ne.key === i && r - Ne.at < 1e3)
|
|
1663
1695
|
return Ne.ctx;
|
|
@@ -1687,28 +1719,28 @@ function hr(e) {
|
|
|
1687
1719
|
const r = typeof window < "u" && window.location.origin || "", o = /* @__PURE__ */ new Set(), i = [], l = Array.from(t.querySelectorAll("a[href]"));
|
|
1688
1720
|
for (const s of l) {
|
|
1689
1721
|
if (i.length >= ur) break;
|
|
1690
|
-
if (
|
|
1722
|
+
if (pt(s)) continue;
|
|
1691
1723
|
const d = s.getAttribute("href") || "";
|
|
1692
1724
|
if (!pr(d)) continue;
|
|
1693
|
-
let u = d,
|
|
1725
|
+
let u = d, m = !0;
|
|
1694
1726
|
try {
|
|
1695
1727
|
if (typeof window < "u") {
|
|
1696
1728
|
const a = new URL(d, r);
|
|
1697
|
-
|
|
1729
|
+
m = a.origin === r, m && d.startsWith("http") && (u = a.pathname + a.search + a.hash);
|
|
1698
1730
|
}
|
|
1699
1731
|
} catch {
|
|
1700
1732
|
continue;
|
|
1701
1733
|
}
|
|
1702
1734
|
if (o.has(u)) continue;
|
|
1703
1735
|
o.add(u);
|
|
1704
|
-
const
|
|
1705
|
-
i.push({ href: u, text:
|
|
1736
|
+
const h = (s.textContent || "").trim().slice(0, 120);
|
|
1737
|
+
i.push({ href: u, text: h, internal: m });
|
|
1706
1738
|
}
|
|
1707
1739
|
return i;
|
|
1708
1740
|
}
|
|
1709
1741
|
let Ae = null;
|
|
1710
1742
|
const mr = 5e3;
|
|
1711
|
-
function
|
|
1743
|
+
function st() {
|
|
1712
1744
|
const e = Date.now(), t = typeof window < "u" && window.location.pathname || "/";
|
|
1713
1745
|
if (Ae && Ae.pathname === t && e - Ae.at < mr)
|
|
1714
1746
|
return Ae.routes;
|
|
@@ -1769,7 +1801,7 @@ function xr() {
|
|
|
1769
1801
|
const e = _r();
|
|
1770
1802
|
return e || window;
|
|
1771
1803
|
}
|
|
1772
|
-
function
|
|
1804
|
+
function Ft(e) {
|
|
1773
1805
|
return e instanceof Window ? e.innerHeight || 0 : e.clientHeight || 0;
|
|
1774
1806
|
}
|
|
1775
1807
|
function kr(e) {
|
|
@@ -1803,7 +1835,7 @@ const Lr = /* @__PURE__ */ new Set([
|
|
|
1803
1835
|
"request_routes"
|
|
1804
1836
|
]);
|
|
1805
1837
|
function Sr(e) {
|
|
1806
|
-
var
|
|
1838
|
+
var wt, _t, xt, kt, Lt, St, Ct;
|
|
1807
1839
|
const {
|
|
1808
1840
|
agentId: t,
|
|
1809
1841
|
apiKey: r,
|
|
@@ -1813,27 +1845,27 @@ function Sr(e) {
|
|
|
1813
1845
|
autoConnect: s = !1,
|
|
1814
1846
|
displayMode: d,
|
|
1815
1847
|
defaultDisplayMode: u = "expanded",
|
|
1816
|
-
onDisplayModeChange:
|
|
1817
|
-
position:
|
|
1848
|
+
onDisplayModeChange: m,
|
|
1849
|
+
position: h = "bottom-right",
|
|
1818
1850
|
mobileBreakpoint: a = 640,
|
|
1819
1851
|
persistKey: c = "ll-widget",
|
|
1820
|
-
disablePersistence:
|
|
1852
|
+
disablePersistence: R = !1,
|
|
1821
1853
|
teamMembers: C,
|
|
1822
|
-
currentTeamMemberId:
|
|
1823
|
-
onTeamMemberChange:
|
|
1824
|
-
idleLoopUrl:
|
|
1854
|
+
currentTeamMemberId: L,
|
|
1855
|
+
onTeamMemberChange: v,
|
|
1856
|
+
idleLoopUrl: b,
|
|
1825
1857
|
greeting: z,
|
|
1826
|
-
avatarImageUrl:
|
|
1827
|
-
agentName:
|
|
1858
|
+
avatarImageUrl: I,
|
|
1859
|
+
agentName: H,
|
|
1828
1860
|
branding: p = {},
|
|
1829
|
-
allowCamera:
|
|
1830
|
-
allowScreenShare:
|
|
1831
|
-
allowTyping:
|
|
1832
|
-
showOn:
|
|
1833
|
-
hideOn:
|
|
1834
|
-
pathname:
|
|
1835
|
-
onNavigate:
|
|
1836
|
-
onScrollToSelector:
|
|
1861
|
+
allowCamera: N = !0,
|
|
1862
|
+
allowScreenShare: B = !0,
|
|
1863
|
+
allowTyping: D = !0,
|
|
1864
|
+
showOn: A,
|
|
1865
|
+
hideOn: O,
|
|
1866
|
+
pathname: W,
|
|
1867
|
+
onNavigate: V,
|
|
1868
|
+
onScrollToSelector: te,
|
|
1837
1869
|
getPageContext: ue,
|
|
1838
1870
|
pageContextExtras: He,
|
|
1839
1871
|
getRoutes: Oe,
|
|
@@ -1847,169 +1879,169 @@ function Sr(e) {
|
|
|
1847
1879
|
onConnectionStateChange: we,
|
|
1848
1880
|
onAgentEvent: _e,
|
|
1849
1881
|
onAgentCommand: xe,
|
|
1850
|
-
controlledSession:
|
|
1882
|
+
controlledSession: j,
|
|
1851
1883
|
className: We,
|
|
1852
1884
|
style: Fe,
|
|
1853
1885
|
zIndex: Ue = 2147483647
|
|
1854
|
-
} = e, je =
|
|
1855
|
-
|
|
1886
|
+
} = e, je = Tn(W), ae = qn(je, A, O);
|
|
1887
|
+
T(() => {
|
|
1856
1888
|
dr(), gr();
|
|
1857
1889
|
}, [je]);
|
|
1858
|
-
const
|
|
1859
|
-
var
|
|
1860
|
-
return
|
|
1861
|
-
}), fe =
|
|
1862
|
-
() => (C == null ? void 0 : C.find((
|
|
1890
|
+
const ie = L !== void 0, [ke, Le] = S(() => {
|
|
1891
|
+
var g;
|
|
1892
|
+
return L ?? ((g = C == null ? void 0 : C[0]) == null ? void 0 : g.id);
|
|
1893
|
+
}), fe = ie ? L : ke, J = Ze(
|
|
1894
|
+
() => (C == null ? void 0 : C.find((g) => g.id === fe)) ?? null,
|
|
1863
1895
|
[C, fe]
|
|
1864
|
-
), Re = (
|
|
1896
|
+
), Re = (J == null ? void 0 : J.agentId) ?? t, [ne, ee] = An({
|
|
1865
1897
|
value: d,
|
|
1866
1898
|
defaultValue: u,
|
|
1867
|
-
onChange:
|
|
1899
|
+
onChange: m,
|
|
1868
1900
|
persistKey: c,
|
|
1869
|
-
disablePersistence:
|
|
1870
|
-
}),
|
|
1871
|
-
|
|
1872
|
-
function
|
|
1873
|
-
const f =
|
|
1874
|
-
return f ? f.includes(
|
|
1901
|
+
disablePersistence: R
|
|
1902
|
+
}), le = In(a), ce = yn(), Q = vn(), re = wn(), pe = _n(), Ie = xn(), [Ve, Me] = S(!1), [Se, y] = S(!1), [K, Ye] = S(!1), [Yt, Gt] = S(!1), [nt, Jt] = S(!1), rt = E(V), ot = E(te), it = E(qe), lt = E(Be), ht = E(ue), mt = E(He), gt = E(Oe), at = E(me), oe = E(null);
|
|
1903
|
+
rt.current = V, ot.current = te, it.current = qe, lt.current = Be, ht.current = ue, mt.current = He, gt.current = Oe, at.current = me;
|
|
1904
|
+
function se(g) {
|
|
1905
|
+
const f = at.current;
|
|
1906
|
+
return f ? f.includes(g) : !0;
|
|
1875
1907
|
}
|
|
1876
|
-
function
|
|
1908
|
+
function de(g, f) {
|
|
1877
1909
|
console.warn(
|
|
1878
|
-
`[LiveLayer] Agent command "${
|
|
1910
|
+
`[LiveLayer] Agent command "${g}" blocked — capability "${f}" not in allowlist. See https://livelayer.studio/docs/react/capabilities`
|
|
1879
1911
|
);
|
|
1880
1912
|
}
|
|
1881
|
-
const Te =
|
|
1882
|
-
(
|
|
1883
|
-
var
|
|
1884
|
-
const f =
|
|
1913
|
+
const Te = k(
|
|
1914
|
+
(g) => {
|
|
1915
|
+
var Z, Je, Ke, Et;
|
|
1916
|
+
const f = g;
|
|
1885
1917
|
if (!(!f.type || typeof f.type != "string")) {
|
|
1886
|
-
if (_e == null || _e({ eventName: f.type, data:
|
|
1887
|
-
if (!
|
|
1888
|
-
|
|
1918
|
+
if (_e == null || _e({ eventName: f.type, data: g }), f.type === "navigate") {
|
|
1919
|
+
if (!se("navigate")) {
|
|
1920
|
+
de("navigate", "navigate");
|
|
1889
1921
|
return;
|
|
1890
1922
|
}
|
|
1891
|
-
const
|
|
1892
|
-
if (!
|
|
1923
|
+
const x = typeof f.href == "string" ? f.href : null;
|
|
1924
|
+
if (!x) {
|
|
1893
1925
|
console.warn(
|
|
1894
1926
|
`[LiveLayer] Agent emitted "navigate" without href. Skipping. Check your agent's tool schema. See https://livelayer.studio/docs/errors/navigate-missing-href`
|
|
1895
1927
|
);
|
|
1896
1928
|
return;
|
|
1897
1929
|
}
|
|
1898
|
-
if (
|
|
1930
|
+
if (rt.current) {
|
|
1899
1931
|
try {
|
|
1900
|
-
|
|
1901
|
-
} catch (
|
|
1932
|
+
rt.current(x);
|
|
1933
|
+
} catch (M) {
|
|
1902
1934
|
console.warn(
|
|
1903
|
-
`[LiveLayer] onNavigate threw for "${
|
|
1904
|
-
|
|
1935
|
+
`[LiveLayer] onNavigate threw for "${x}". Falling back. Error:`,
|
|
1936
|
+
M
|
|
1905
1937
|
);
|
|
1906
1938
|
}
|
|
1907
1939
|
return;
|
|
1908
1940
|
}
|
|
1909
1941
|
if (typeof document < "u") {
|
|
1910
|
-
const
|
|
1911
|
-
`a[href="${
|
|
1942
|
+
const M = document.querySelector(
|
|
1943
|
+
`a[href="${x.replace(/"/g, '\\"')}"]`
|
|
1912
1944
|
);
|
|
1913
|
-
if (
|
|
1914
|
-
|
|
1945
|
+
if (M) {
|
|
1946
|
+
M.click();
|
|
1915
1947
|
return;
|
|
1916
1948
|
}
|
|
1917
1949
|
}
|
|
1918
1950
|
if (typeof window < "u" && typeof history < "u")
|
|
1919
1951
|
try {
|
|
1920
|
-
history.pushState({}, "",
|
|
1921
|
-
} catch (
|
|
1952
|
+
history.pushState({}, "", x), window.dispatchEvent(new PopStateEvent("popstate"));
|
|
1953
|
+
} catch (M) {
|
|
1922
1954
|
console.warn(
|
|
1923
|
-
`[LiveLayer] history.pushState fallback failed for "${
|
|
1924
|
-
|
|
1955
|
+
`[LiveLayer] history.pushState fallback failed for "${x}". Pass an onNavigate prop to use your router directly. See https://livelayer.studio/docs/react/navigation`,
|
|
1956
|
+
M
|
|
1925
1957
|
);
|
|
1926
1958
|
}
|
|
1927
1959
|
return;
|
|
1928
1960
|
}
|
|
1929
1961
|
if (f.type === "scroll_to") {
|
|
1930
|
-
if (!
|
|
1931
|
-
|
|
1962
|
+
if (!se("scroll")) {
|
|
1963
|
+
de("scroll_to", "scroll");
|
|
1932
1964
|
return;
|
|
1933
1965
|
}
|
|
1934
|
-
const
|
|
1935
|
-
if (!
|
|
1936
|
-
const
|
|
1937
|
-
if (
|
|
1966
|
+
const x = typeof f.selector == "string" ? f.selector : null;
|
|
1967
|
+
if (!x) return;
|
|
1968
|
+
const M = f.behavior === "instant" ? "instant" : "smooth";
|
|
1969
|
+
if (ot.current) {
|
|
1938
1970
|
try {
|
|
1939
|
-
|
|
1940
|
-
|
|
1941
|
-
|
|
1971
|
+
ot.current(
|
|
1972
|
+
x,
|
|
1973
|
+
M
|
|
1942
1974
|
);
|
|
1943
|
-
} catch (
|
|
1944
|
-
console.warn("[LiveLayer] onScrollToSelector threw.",
|
|
1975
|
+
} catch (q) {
|
|
1976
|
+
console.warn("[LiveLayer] onScrollToSelector threw.", q);
|
|
1945
1977
|
}
|
|
1946
1978
|
return;
|
|
1947
1979
|
}
|
|
1948
1980
|
if (typeof document < "u") {
|
|
1949
|
-
let
|
|
1981
|
+
let q = null;
|
|
1950
1982
|
try {
|
|
1951
|
-
|
|
1983
|
+
q = document.querySelector(x);
|
|
1952
1984
|
} catch {
|
|
1953
1985
|
console.warn(
|
|
1954
|
-
`[LiveLayer] scroll_to: invalid selector "${
|
|
1986
|
+
`[LiveLayer] scroll_to: invalid selector "${x}".`
|
|
1955
1987
|
);
|
|
1956
1988
|
return;
|
|
1957
1989
|
}
|
|
1958
|
-
if (!
|
|
1990
|
+
if (!q) {
|
|
1959
1991
|
console.warn(
|
|
1960
|
-
`[LiveLayer] scroll_to: no element matched "${
|
|
1992
|
+
`[LiveLayer] scroll_to: no element matched "${x}". The user may be on a different page. See https://livelayer.studio/docs/errors/scroll-no-match`
|
|
1961
1993
|
);
|
|
1962
1994
|
return;
|
|
1963
1995
|
}
|
|
1964
|
-
|
|
1965
|
-
behavior:
|
|
1996
|
+
q.scrollIntoView({
|
|
1997
|
+
behavior: M,
|
|
1966
1998
|
block: "start"
|
|
1967
1999
|
});
|
|
1968
2000
|
}
|
|
1969
2001
|
return;
|
|
1970
2002
|
}
|
|
1971
2003
|
if (f.type === "request_page_context") {
|
|
1972
|
-
if (!
|
|
1973
|
-
|
|
2004
|
+
if (!se("read_page")) {
|
|
2005
|
+
de("request_page_context", "read_page");
|
|
1974
2006
|
return;
|
|
1975
2007
|
}
|
|
1976
|
-
const
|
|
1977
|
-
const
|
|
1978
|
-
if (
|
|
2008
|
+
const x = typeof f.requestId == "string" ? f.requestId : void 0, M = (Z = oe.current) == null ? void 0 : Z.call(oe), q = (U) => {
|
|
2009
|
+
const P = M, G = P == null ? void 0 : P.localParticipant;
|
|
2010
|
+
if (G != null && G.publishData)
|
|
1979
2011
|
try {
|
|
1980
|
-
const
|
|
1981
|
-
|
|
1982
|
-
} catch (
|
|
1983
|
-
console.warn("[LiveLayer] publishData failed.",
|
|
2012
|
+
const X = x ? { ...U, requestId: x } : U, Ce = new TextEncoder().encode(JSON.stringify(X));
|
|
2013
|
+
G.publishData(Ce, { reliable: !0 });
|
|
2014
|
+
} catch (X) {
|
|
2015
|
+
console.warn("[LiveLayer] publishData failed.", X);
|
|
1984
2016
|
}
|
|
1985
|
-
}, $ =
|
|
2017
|
+
}, $ = mt.current, F = ht.current;
|
|
1986
2018
|
try {
|
|
1987
|
-
if (
|
|
1988
|
-
const
|
|
1989
|
-
if (
|
|
1990
|
-
|
|
2019
|
+
if (F) {
|
|
2020
|
+
const U = F($);
|
|
2021
|
+
if (U instanceof Promise) {
|
|
2022
|
+
q({ type: "page_context_pending" }), U.then((P) => q({ type: "page_context", context: P })).catch((P) => {
|
|
1991
2023
|
console.warn(
|
|
1992
2024
|
"[LiveLayer] getPageContext rejected; falling back to default walker.",
|
|
1993
|
-
|
|
1994
|
-
),
|
|
2025
|
+
P
|
|
2026
|
+
), q({
|
|
1995
2027
|
type: "page_context",
|
|
1996
|
-
context:
|
|
2028
|
+
context: Wt($)
|
|
1997
2029
|
});
|
|
1998
2030
|
});
|
|
1999
2031
|
return;
|
|
2000
2032
|
}
|
|
2001
|
-
|
|
2033
|
+
q({ type: "page_context", context: U });
|
|
2002
2034
|
return;
|
|
2003
2035
|
}
|
|
2004
|
-
|
|
2036
|
+
q({
|
|
2005
2037
|
type: "page_context",
|
|
2006
|
-
context:
|
|
2038
|
+
context: Wt($)
|
|
2007
2039
|
});
|
|
2008
|
-
} catch (
|
|
2040
|
+
} catch (U) {
|
|
2009
2041
|
console.warn(
|
|
2010
2042
|
"[LiveLayer] page-context extraction threw. Sending empty context.",
|
|
2011
|
-
|
|
2012
|
-
),
|
|
2043
|
+
U
|
|
2044
|
+
), q({
|
|
2013
2045
|
type: "page_context",
|
|
2014
2046
|
context: { url: "", title: "", pathname: "/", regions: [], visibleText: "", visibleLinks: [], visibleFields: [], forms: [], extras: $ }
|
|
2015
2047
|
});
|
|
@@ -2017,102 +2049,102 @@ function Sr(e) {
|
|
|
2017
2049
|
return;
|
|
2018
2050
|
}
|
|
2019
2051
|
if (f.type === "scroll_page") {
|
|
2020
|
-
if (!
|
|
2021
|
-
|
|
2052
|
+
if (!se("scroll")) {
|
|
2053
|
+
de("scroll_page", "scroll");
|
|
2022
2054
|
return;
|
|
2023
2055
|
}
|
|
2024
|
-
const
|
|
2025
|
-
if (
|
|
2056
|
+
const x = f.direction;
|
|
2057
|
+
if (x !== "up" && x !== "down" && x !== "top" && x !== "bottom") {
|
|
2026
2058
|
console.warn(
|
|
2027
|
-
`[LiveLayer] scroll_page: invalid direction "${String(
|
|
2059
|
+
`[LiveLayer] scroll_page: invalid direction "${String(x)}". Expected up | down | top | bottom.`
|
|
2028
2060
|
);
|
|
2029
2061
|
return;
|
|
2030
2062
|
}
|
|
2031
|
-
const
|
|
2032
|
-
if (
|
|
2063
|
+
const M = f.behavior === "instant" ? "instant" : "smooth";
|
|
2064
|
+
if (it.current) {
|
|
2033
2065
|
try {
|
|
2034
|
-
|
|
2035
|
-
|
|
2036
|
-
|
|
2066
|
+
it.current(
|
|
2067
|
+
x,
|
|
2068
|
+
M
|
|
2037
2069
|
);
|
|
2038
|
-
} catch (
|
|
2039
|
-
console.warn("[LiveLayer] onScrollPage threw.",
|
|
2070
|
+
} catch (P) {
|
|
2071
|
+
console.warn("[LiveLayer] onScrollPage threw.", P);
|
|
2040
2072
|
}
|
|
2041
2073
|
return;
|
|
2042
2074
|
}
|
|
2043
2075
|
if (typeof window > "u") return;
|
|
2044
|
-
const
|
|
2045
|
-
$ instanceof Window ? $.scrollBy({ top:
|
|
2046
|
-
},
|
|
2047
|
-
$ instanceof Window ? $.scrollTo({ top:
|
|
2076
|
+
const q = { behavior: M }, $ = xr(), F = (P) => {
|
|
2077
|
+
$ instanceof Window ? $.scrollBy({ top: P, ...q }) : $.scrollBy({ top: P, ...q });
|
|
2078
|
+
}, U = (P) => {
|
|
2079
|
+
$ instanceof Window ? $.scrollTo({ top: P, ...q }) : $.scrollTo({ top: P, ...q });
|
|
2048
2080
|
};
|
|
2049
|
-
|
|
2081
|
+
x === "up" ? F(-Ft($)) : x === "down" ? F(Ft($)) : U(x === "top" ? 0 : kr($));
|
|
2050
2082
|
return;
|
|
2051
2083
|
}
|
|
2052
2084
|
if (f.type === "click") {
|
|
2053
|
-
if (!
|
|
2054
|
-
|
|
2085
|
+
if (!se("click")) {
|
|
2086
|
+
de("click", "click");
|
|
2055
2087
|
return;
|
|
2056
2088
|
}
|
|
2057
|
-
const
|
|
2058
|
-
if (!
|
|
2089
|
+
const x = typeof f.selector == "string" ? f.selector : null;
|
|
2090
|
+
if (!x) {
|
|
2059
2091
|
console.warn("[LiveLayer] click: missing selector.");
|
|
2060
2092
|
return;
|
|
2061
2093
|
}
|
|
2062
|
-
if (
|
|
2094
|
+
if (lt.current) {
|
|
2063
2095
|
try {
|
|
2064
|
-
|
|
2065
|
-
} catch (
|
|
2066
|
-
console.warn("[LiveLayer] onClick threw.",
|
|
2096
|
+
lt.current(x);
|
|
2097
|
+
} catch (q) {
|
|
2098
|
+
console.warn("[LiveLayer] onClick threw.", q);
|
|
2067
2099
|
}
|
|
2068
2100
|
return;
|
|
2069
2101
|
}
|
|
2070
2102
|
if (typeof document > "u") return;
|
|
2071
|
-
let
|
|
2103
|
+
let M = null;
|
|
2072
2104
|
try {
|
|
2073
|
-
|
|
2105
|
+
M = document.querySelector(x);
|
|
2074
2106
|
} catch {
|
|
2075
2107
|
console.warn(
|
|
2076
|
-
`[LiveLayer] click: invalid selector "${
|
|
2108
|
+
`[LiveLayer] click: invalid selector "${x}".`
|
|
2077
2109
|
);
|
|
2078
2110
|
return;
|
|
2079
2111
|
}
|
|
2080
|
-
if (!
|
|
2112
|
+
if (!M) {
|
|
2081
2113
|
console.warn(
|
|
2082
|
-
`[LiveLayer] click: no element matched "${
|
|
2114
|
+
`[LiveLayer] click: no element matched "${x}". See https://livelayer.studio/docs/errors/click-no-match`
|
|
2083
2115
|
);
|
|
2084
2116
|
return;
|
|
2085
2117
|
}
|
|
2086
|
-
if (
|
|
2118
|
+
if (M.closest('[data-ll-private="true"], .ll-widget')) {
|
|
2087
2119
|
console.warn(
|
|
2088
2120
|
"[LiveLayer] click: refusing to click element inside a private subtree."
|
|
2089
2121
|
);
|
|
2090
2122
|
return;
|
|
2091
2123
|
}
|
|
2092
|
-
(
|
|
2124
|
+
(Je = M.click) == null || Je.call(M);
|
|
2093
2125
|
return;
|
|
2094
2126
|
}
|
|
2095
2127
|
if (f.type === "fill_form" || f.type === "focus_field") {
|
|
2096
|
-
if (!
|
|
2097
|
-
|
|
2128
|
+
if (!se("fill_forms")) {
|
|
2129
|
+
de(f.type, "fill_forms");
|
|
2098
2130
|
return;
|
|
2099
2131
|
}
|
|
2100
2132
|
if (typeof document > "u") return;
|
|
2101
|
-
const
|
|
2102
|
-
if (!
|
|
2133
|
+
const x = typeof f.formId == "string" ? f.formId : null;
|
|
2134
|
+
if (!x) {
|
|
2103
2135
|
console.warn(`[LiveLayer] ${f.type}: missing formId.`);
|
|
2104
2136
|
return;
|
|
2105
2137
|
}
|
|
2106
|
-
const
|
|
2107
|
-
`[data-ll-form="${
|
|
2138
|
+
const M = document.querySelector(
|
|
2139
|
+
`[data-ll-form="${x.replace(/"/g, '\\"')}"]`
|
|
2108
2140
|
);
|
|
2109
|
-
if (!
|
|
2141
|
+
if (!M) {
|
|
2110
2142
|
console.warn(
|
|
2111
|
-
`[LiveLayer] ${f.type}: no form with data-ll-form="${
|
|
2143
|
+
`[LiveLayer] ${f.type}: no form with data-ll-form="${x}". Tag your form with <LiveLayerForm id> or data-ll-form. See https://livelayer.studio/docs/react/forms`
|
|
2112
2144
|
);
|
|
2113
2145
|
return;
|
|
2114
2146
|
}
|
|
2115
|
-
if (
|
|
2147
|
+
if (M.closest('[data-ll-private="true"], .ll-widget')) {
|
|
2116
2148
|
console.warn(
|
|
2117
2149
|
`[LiveLayer] ${f.type}: refusing to touch a form in a private subtree.`
|
|
2118
2150
|
);
|
|
@@ -2124,154 +2156,154 @@ function Sr(e) {
|
|
|
2124
2156
|
console.warn("[LiveLayer] focus_field: missing fieldName.");
|
|
2125
2157
|
return;
|
|
2126
2158
|
}
|
|
2127
|
-
const
|
|
2128
|
-
if (!
|
|
2159
|
+
const F = M.querySelector(`[data-ll-field="${$.replace(/"/g, '\\"')}"]`);
|
|
2160
|
+
if (!F) {
|
|
2129
2161
|
console.warn(
|
|
2130
|
-
`[LiveLayer] focus_field: no field "${$}" in form "${
|
|
2162
|
+
`[LiveLayer] focus_field: no field "${$}" in form "${x}".`
|
|
2131
2163
|
);
|
|
2132
2164
|
return;
|
|
2133
2165
|
}
|
|
2134
|
-
if (!
|
|
2166
|
+
if (!tt(F)) {
|
|
2135
2167
|
console.warn(
|
|
2136
2168
|
`[LiveLayer] focus_field: field "${$}" is privacy-protected and not focusable.`
|
|
2137
2169
|
);
|
|
2138
2170
|
return;
|
|
2139
2171
|
}
|
|
2140
|
-
|
|
2172
|
+
F.focus();
|
|
2141
2173
|
return;
|
|
2142
2174
|
}
|
|
2143
|
-
const
|
|
2144
|
-
if (!
|
|
2175
|
+
const q = f.values && typeof f.values == "object" ? f.values : null;
|
|
2176
|
+
if (!q) {
|
|
2145
2177
|
console.warn("[LiveLayer] fill_form: missing or invalid values.");
|
|
2146
2178
|
return;
|
|
2147
2179
|
}
|
|
2148
|
-
for (const [$,
|
|
2149
|
-
if (typeof
|
|
2150
|
-
const
|
|
2151
|
-
if (!
|
|
2180
|
+
for (const [$, F] of Object.entries(q)) {
|
|
2181
|
+
if (typeof F != "string") continue;
|
|
2182
|
+
const U = M.querySelector(`[data-ll-field="${$.replace(/"/g, '\\"')}"]`);
|
|
2183
|
+
if (!U) {
|
|
2152
2184
|
console.warn(
|
|
2153
|
-
`[LiveLayer] fill_form: no field "${$}" in form "${
|
|
2185
|
+
`[LiveLayer] fill_form: no field "${$}" in form "${x}". Skipping.`
|
|
2154
2186
|
);
|
|
2155
2187
|
continue;
|
|
2156
2188
|
}
|
|
2157
|
-
if (!
|
|
2189
|
+
if (!tt(U)) {
|
|
2158
2190
|
console.warn(
|
|
2159
2191
|
`[LiveLayer] fill_form: field "${$}" is privacy-protected (password / cc-* / private). Skipping.`
|
|
2160
2192
|
);
|
|
2161
2193
|
continue;
|
|
2162
2194
|
}
|
|
2163
2195
|
try {
|
|
2164
|
-
vr(
|
|
2165
|
-
} catch (
|
|
2196
|
+
vr(U, F);
|
|
2197
|
+
} catch (P) {
|
|
2166
2198
|
console.warn(
|
|
2167
2199
|
`[LiveLayer] fill_form: failed to set "${$}".`,
|
|
2168
|
-
|
|
2200
|
+
P
|
|
2169
2201
|
);
|
|
2170
2202
|
}
|
|
2171
2203
|
}
|
|
2172
2204
|
return;
|
|
2173
2205
|
}
|
|
2174
2206
|
if (f.type === "submit_form") {
|
|
2175
|
-
if (!
|
|
2176
|
-
|
|
2207
|
+
if (!se("submit_forms")) {
|
|
2208
|
+
de("submit_form", "submit_forms");
|
|
2177
2209
|
return;
|
|
2178
2210
|
}
|
|
2179
2211
|
if (typeof document > "u") return;
|
|
2180
|
-
const
|
|
2181
|
-
if (!
|
|
2212
|
+
const x = typeof f.formId == "string" ? f.formId : null;
|
|
2213
|
+
if (!x) {
|
|
2182
2214
|
console.warn("[LiveLayer] submit_form: missing formId.");
|
|
2183
2215
|
return;
|
|
2184
2216
|
}
|
|
2185
|
-
const
|
|
2186
|
-
`[data-ll-form="${
|
|
2217
|
+
const M = document.querySelector(
|
|
2218
|
+
`[data-ll-form="${x.replace(/"/g, '\\"')}"]`
|
|
2187
2219
|
);
|
|
2188
|
-
if (!
|
|
2220
|
+
if (!M) {
|
|
2189
2221
|
console.warn(
|
|
2190
|
-
`[LiveLayer] submit_form: no form with data-ll-form="${
|
|
2222
|
+
`[LiveLayer] submit_form: no form with data-ll-form="${x}".`
|
|
2191
2223
|
);
|
|
2192
2224
|
return;
|
|
2193
2225
|
}
|
|
2194
|
-
if (
|
|
2226
|
+
if (M.closest('[data-ll-private="true"], .ll-widget')) {
|
|
2195
2227
|
console.warn(
|
|
2196
2228
|
"[LiveLayer] submit_form: refusing to submit a form in a private subtree."
|
|
2197
2229
|
);
|
|
2198
2230
|
return;
|
|
2199
2231
|
}
|
|
2200
|
-
const
|
|
2201
|
-
const
|
|
2232
|
+
const q = typeof f.requestId == "string" ? f.requestId : void 0, $ = (Ke = oe.current) == null ? void 0 : Ke.call(oe), F = (G) => {
|
|
2233
|
+
const X = $, Ce = X == null ? void 0 : X.localParticipant;
|
|
2202
2234
|
if (Ce != null && Ce.publishData)
|
|
2203
2235
|
try {
|
|
2204
|
-
const
|
|
2205
|
-
Ce.publishData(
|
|
2236
|
+
const cn = q ? { ...G, requestId: q } : G, sn = new TextEncoder().encode(JSON.stringify(cn));
|
|
2237
|
+
Ce.publishData(sn, { reliable: !0 });
|
|
2206
2238
|
} catch {
|
|
2207
2239
|
}
|
|
2208
2240
|
};
|
|
2209
|
-
let
|
|
2210
|
-
const
|
|
2211
|
-
|
|
2241
|
+
let U = !1;
|
|
2242
|
+
const P = () => {
|
|
2243
|
+
U = !0, F({ type: "form_submitted", formId: x });
|
|
2212
2244
|
};
|
|
2213
|
-
|
|
2245
|
+
M.addEventListener("submit", P, { once: !0 });
|
|
2214
2246
|
try {
|
|
2215
|
-
typeof
|
|
2216
|
-
} catch (
|
|
2217
|
-
console.warn("[LiveLayer] submit_form: requestSubmit threw.",
|
|
2247
|
+
typeof M.requestSubmit == "function" ? M.requestSubmit() : M.submit();
|
|
2248
|
+
} catch (G) {
|
|
2249
|
+
console.warn("[LiveLayer] submit_form: requestSubmit threw.", G), M.removeEventListener("submit", P), F({
|
|
2218
2250
|
type: "form_submit_blocked",
|
|
2219
|
-
formId:
|
|
2251
|
+
formId: x,
|
|
2220
2252
|
reason: "exception"
|
|
2221
2253
|
});
|
|
2222
2254
|
return;
|
|
2223
2255
|
}
|
|
2224
2256
|
setTimeout(() => {
|
|
2225
|
-
|
|
2257
|
+
U || (M.removeEventListener("submit", P), F({
|
|
2226
2258
|
type: "form_submit_blocked",
|
|
2227
|
-
formId:
|
|
2259
|
+
formId: x,
|
|
2228
2260
|
reason: "validation"
|
|
2229
2261
|
}));
|
|
2230
2262
|
}, 500);
|
|
2231
2263
|
return;
|
|
2232
2264
|
}
|
|
2233
2265
|
if (f.type === "request_routes") {
|
|
2234
|
-
if (!
|
|
2235
|
-
|
|
2266
|
+
if (!se("read_page")) {
|
|
2267
|
+
de("request_routes", "read_page");
|
|
2236
2268
|
return;
|
|
2237
2269
|
}
|
|
2238
|
-
const
|
|
2270
|
+
const x = typeof f.requestId == "string" ? f.requestId : void 0, q = (Et = oe.current) == null ? void 0 : Et.call(oe), $ = q == null ? void 0 : q.localParticipant;
|
|
2239
2271
|
if (!($ != null && $.publishData)) return;
|
|
2240
|
-
const
|
|
2272
|
+
const F = (P) => {
|
|
2241
2273
|
try {
|
|
2242
|
-
const
|
|
2243
|
-
$.publishData(
|
|
2244
|
-
} catch (
|
|
2245
|
-
console.warn("[LiveLayer] request_routes: publishData failed.",
|
|
2274
|
+
const G = x ? { type: "routes", routes: P, requestId: x } : { type: "routes", routes: P }, X = new TextEncoder().encode(JSON.stringify(G));
|
|
2275
|
+
$.publishData(X, { reliable: !0 });
|
|
2276
|
+
} catch (G) {
|
|
2277
|
+
console.warn("[LiveLayer] request_routes: publishData failed.", G);
|
|
2246
2278
|
}
|
|
2247
|
-
},
|
|
2248
|
-
if (
|
|
2279
|
+
}, U = gt.current;
|
|
2280
|
+
if (U) {
|
|
2249
2281
|
try {
|
|
2250
|
-
const
|
|
2251
|
-
if (!Array.isArray(
|
|
2252
|
-
|
|
2282
|
+
const P = U(), G = (X) => {
|
|
2283
|
+
if (!Array.isArray(X)) {
|
|
2284
|
+
F([]);
|
|
2253
2285
|
return;
|
|
2254
2286
|
}
|
|
2255
|
-
|
|
2287
|
+
F(X.map(fr).slice(0, 200));
|
|
2256
2288
|
};
|
|
2257
|
-
|
|
2289
|
+
P instanceof Promise ? P.then(G).catch((X) => {
|
|
2258
2290
|
console.warn(
|
|
2259
2291
|
"[LiveLayer] getRoutes rejected; falling back to DOM walker.",
|
|
2260
|
-
|
|
2261
|
-
),
|
|
2262
|
-
}) :
|
|
2263
|
-
} catch (
|
|
2292
|
+
X
|
|
2293
|
+
), F(st());
|
|
2294
|
+
}) : G(P);
|
|
2295
|
+
} catch (P) {
|
|
2264
2296
|
console.warn(
|
|
2265
2297
|
"[LiveLayer] getRoutes threw; falling back to DOM walker.",
|
|
2266
|
-
|
|
2267
|
-
),
|
|
2298
|
+
P
|
|
2299
|
+
), F(st());
|
|
2268
2300
|
}
|
|
2269
2301
|
return;
|
|
2270
2302
|
}
|
|
2271
2303
|
try {
|
|
2272
|
-
|
|
2273
|
-
} catch (
|
|
2274
|
-
console.warn("[LiveLayer] request_routes: extractRoutes threw.",
|
|
2304
|
+
F(st());
|
|
2305
|
+
} catch (P) {
|
|
2306
|
+
console.warn("[LiveLayer] request_routes: extractRoutes threw.", P);
|
|
2275
2307
|
}
|
|
2276
2308
|
return;
|
|
2277
2309
|
}
|
|
@@ -2279,249 +2311,251 @@ function Sr(e) {
|
|
|
2279
2311
|
}
|
|
2280
2312
|
},
|
|
2281
2313
|
[xe, _e]
|
|
2282
|
-
),
|
|
2283
|
-
agentId:
|
|
2314
|
+
), Y = gn({
|
|
2315
|
+
agentId: j ? "__controlled__" : Re,
|
|
2284
2316
|
baseUrl: o,
|
|
2285
2317
|
apiKey: r,
|
|
2286
2318
|
sessionEndpoint: i,
|
|
2287
2319
|
sessionBody: l,
|
|
2288
|
-
onDataMessage:
|
|
2320
|
+
onDataMessage: j ? void 0 : Te
|
|
2289
2321
|
});
|
|
2290
|
-
|
|
2291
|
-
if (
|
|
2292
|
-
return
|
|
2293
|
-
}, [
|
|
2294
|
-
var
|
|
2295
|
-
return (
|
|
2296
|
-
},
|
|
2297
|
-
var
|
|
2322
|
+
T(() => {
|
|
2323
|
+
if (j != null && j.subscribeToDataMessages)
|
|
2324
|
+
return j.subscribeToDataMessages(Te);
|
|
2325
|
+
}, [j, Te]), oe.current = () => {
|
|
2326
|
+
var g;
|
|
2327
|
+
return (g = Y.getRoom) == null ? void 0 : g.call(Y);
|
|
2328
|
+
}, T(() => {
|
|
2329
|
+
var Z;
|
|
2298
2330
|
if (typeof window > "u") return;
|
|
2299
|
-
const
|
|
2300
|
-
if (
|
|
2301
|
-
return window.__livelayerSimulateCommand = (
|
|
2331
|
+
const g = ((Z = window.location) == null ? void 0 : Z.hostname) || "";
|
|
2332
|
+
if (g === "localhost" || g === "127.0.0.1" || g === "0.0.0.0" || g.endsWith(".local") || g.endsWith(".test"))
|
|
2333
|
+
return window.__livelayerSimulateCommand = (Je) => {
|
|
2302
2334
|
try {
|
|
2303
|
-
Te(
|
|
2304
|
-
} catch (
|
|
2305
|
-
console.warn("[LiveLayer] simulate-command threw:",
|
|
2335
|
+
Te(Je);
|
|
2336
|
+
} catch (Ke) {
|
|
2337
|
+
console.warn("[LiveLayer] simulate-command threw:", Ke);
|
|
2306
2338
|
}
|
|
2307
2339
|
}, () => {
|
|
2308
2340
|
delete window.__livelayerSimulateCommand;
|
|
2309
2341
|
};
|
|
2310
2342
|
}, [Te]);
|
|
2311
|
-
const
|
|
2312
|
-
connectionState:
|
|
2313
|
-
agentState:
|
|
2314
|
-
transcript:
|
|
2315
|
-
videoElement:
|
|
2316
|
-
audioElement:
|
|
2317
|
-
canResume:
|
|
2318
|
-
error:
|
|
2343
|
+
const _ = Ze(() => j ? {
|
|
2344
|
+
connectionState: j.connectionState,
|
|
2345
|
+
agentState: j.agentState,
|
|
2346
|
+
transcript: j.transcript,
|
|
2347
|
+
videoElement: j.videoElement,
|
|
2348
|
+
audioElement: j.audioElement,
|
|
2349
|
+
canResume: j.canResume,
|
|
2350
|
+
error: j.error,
|
|
2319
2351
|
agentConfig: null,
|
|
2320
2352
|
connect: async () => {
|
|
2321
|
-
await
|
|
2353
|
+
await j.onConnect();
|
|
2322
2354
|
},
|
|
2323
|
-
disconnect: () =>
|
|
2355
|
+
disconnect: () => j.onDisconnect(),
|
|
2324
2356
|
// Dummy getRoom for shape compatibility — controlled consumers own the Room.
|
|
2325
2357
|
// Internal session's getRoom returns null when no real connect has happened,
|
|
2326
2358
|
// so we reuse its reference for type consistency.
|
|
2327
|
-
getRoom:
|
|
2359
|
+
getRoom: Y.getRoom,
|
|
2328
2360
|
isControlled: !0
|
|
2329
2361
|
} : {
|
|
2330
|
-
connectionState:
|
|
2331
|
-
agentState:
|
|
2332
|
-
transcript:
|
|
2333
|
-
videoElement:
|
|
2334
|
-
audioElement:
|
|
2335
|
-
canResume:
|
|
2336
|
-
error:
|
|
2337
|
-
agentConfig:
|
|
2338
|
-
connect:
|
|
2339
|
-
disconnect:
|
|
2340
|
-
getRoom:
|
|
2362
|
+
connectionState: Y.connectionState,
|
|
2363
|
+
agentState: Y.agentState,
|
|
2364
|
+
transcript: Y.transcript,
|
|
2365
|
+
videoElement: Y.videoElement,
|
|
2366
|
+
audioElement: Y.audioElement,
|
|
2367
|
+
canResume: Y.canResume,
|
|
2368
|
+
error: Y.error,
|
|
2369
|
+
agentConfig: Y.agentConfig,
|
|
2370
|
+
connect: Y.connect,
|
|
2371
|
+
disconnect: Y.disconnect,
|
|
2372
|
+
getRoom: Y.getRoom,
|
|
2341
2373
|
isControlled: !1
|
|
2342
|
-
}, [
|
|
2343
|
-
|
|
2344
|
-
const
|
|
2345
|
-
if (!(!
|
|
2346
|
-
return f.appendChild(
|
|
2347
|
-
|
|
2374
|
+
}, [j, Y]), yt = E(null);
|
|
2375
|
+
T(() => {
|
|
2376
|
+
const g = _.videoElement, f = yt.current;
|
|
2377
|
+
if (!(!g || !f))
|
|
2378
|
+
return f.appendChild(g), () => {
|
|
2379
|
+
g.parentNode === f && f.removeChild(g);
|
|
2348
2380
|
};
|
|
2349
|
-
}, [
|
|
2350
|
-
const
|
|
2351
|
-
if (!
|
|
2352
|
-
|
|
2353
|
-
const f =
|
|
2354
|
-
return f && typeof f.catch == "function" && f.catch((
|
|
2355
|
-
(
|
|
2381
|
+
}, [_.videoElement]), T(() => {
|
|
2382
|
+
const g = _.audioElement;
|
|
2383
|
+
if (!g) return;
|
|
2384
|
+
ce.attach(g);
|
|
2385
|
+
const f = g.play();
|
|
2386
|
+
return f && typeof f.catch == "function" && f.catch((Z) => {
|
|
2387
|
+
(Z == null ? void 0 : Z.name) === "NotAllowedError" && Me(!0);
|
|
2356
2388
|
}), () => {
|
|
2357
|
-
|
|
2389
|
+
ce.detach();
|
|
2358
2390
|
};
|
|
2359
|
-
}, [
|
|
2360
|
-
if (
|
|
2361
|
-
const
|
|
2362
|
-
if (
|
|
2363
|
-
return
|
|
2364
|
-
}),
|
|
2365
|
-
|
|
2391
|
+
}, [_.audioElement]), T(() => {
|
|
2392
|
+
if (_.isControlled || _.connectionState !== "connected") return;
|
|
2393
|
+
const g = _.getRoom();
|
|
2394
|
+
if (g)
|
|
2395
|
+
return Q.setupMic(g).catch(() => {
|
|
2396
|
+
}), re.attachRoom(g), pe.attachRoom(g), Ie.refresh(), () => {
|
|
2397
|
+
Q.teardownMic(), re.teardown(), pe.teardown();
|
|
2366
2398
|
};
|
|
2367
|
-
}, [
|
|
2368
|
-
const
|
|
2369
|
-
|
|
2370
|
-
}, [
|
|
2371
|
-
const
|
|
2372
|
-
const f =
|
|
2399
|
+
}, [_.isControlled, _.connectionState]), T(() => {
|
|
2400
|
+
const g = _.audioElement;
|
|
2401
|
+
g && (g.muted = nt);
|
|
2402
|
+
}, [_.audioElement, nt]);
|
|
2403
|
+
const Kt = k((g) => {
|
|
2404
|
+
const f = _.getRoom();
|
|
2373
2405
|
if (f)
|
|
2374
2406
|
try {
|
|
2375
|
-
const
|
|
2376
|
-
JSON.stringify({ type: "user_message", text:
|
|
2407
|
+
const Z = new TextEncoder().encode(
|
|
2408
|
+
JSON.stringify({ type: "user_message", text: g })
|
|
2377
2409
|
);
|
|
2378
|
-
f.localParticipant.publishData(
|
|
2410
|
+
f.localParticipant.publishData(Z, { reliable: !0 });
|
|
2379
2411
|
} catch {
|
|
2380
2412
|
}
|
|
2381
|
-
}, [
|
|
2382
|
-
|
|
2413
|
+
}, [_]), Xt = k(() => {
|
|
2414
|
+
Jt((g) => !g);
|
|
2383
2415
|
}, []);
|
|
2384
|
-
|
|
2385
|
-
we == null || we(
|
|
2386
|
-
}, [
|
|
2387
|
-
ve == null || ve(
|
|
2388
|
-
}, [
|
|
2389
|
-
be == null || be(
|
|
2390
|
-
}, [
|
|
2391
|
-
const
|
|
2392
|
-
|
|
2393
|
-
|
|
2394
|
-
}, [s,
|
|
2395
|
-
const
|
|
2396
|
-
(
|
|
2397
|
-
const f = C == null ? void 0 : C.find((
|
|
2398
|
-
f && (Ye(!1),
|
|
2416
|
+
T(() => {
|
|
2417
|
+
we == null || we(_.connectionState), _.connectionState === "connected" ? ge == null || ge() : _.connectionState === "disconnected" && (ye == null || ye());
|
|
2418
|
+
}, [_.connectionState, ge, ye, we]), T(() => {
|
|
2419
|
+
ve == null || ve(_.transcript);
|
|
2420
|
+
}, [_.transcript, ve]), T(() => {
|
|
2421
|
+
be == null || be(_.agentState);
|
|
2422
|
+
}, [_.agentState, be]);
|
|
2423
|
+
const vt = E(!1);
|
|
2424
|
+
T(() => {
|
|
2425
|
+
_.isControlled || !s || vt.current || ae && _.connectionState === "idle" && (vt.current = !0, _.connect());
|
|
2426
|
+
}, [s, _.connectionState, _, ae]);
|
|
2427
|
+
const Qt = k(
|
|
2428
|
+
(g) => {
|
|
2429
|
+
const f = C == null ? void 0 : C.find((Z) => Z.id === g);
|
|
2430
|
+
f && (Ye(!1), g !== fe && (y(!0), _.disconnect(), ie || Le(g), v == null || v(f)));
|
|
2399
2431
|
},
|
|
2400
2432
|
[
|
|
2401
2433
|
C,
|
|
2402
2434
|
fe,
|
|
2403
|
-
|
|
2404
|
-
|
|
2405
|
-
|
|
2435
|
+
_,
|
|
2436
|
+
ie,
|
|
2437
|
+
v
|
|
2406
2438
|
]
|
|
2407
2439
|
);
|
|
2408
|
-
|
|
2409
|
-
Se &&
|
|
2410
|
-
}, [
|
|
2411
|
-
if (!
|
|
2412
|
-
const
|
|
2440
|
+
T(() => {
|
|
2441
|
+
Se && _.connectionState === "connected" && y(!1);
|
|
2442
|
+
}, [_.connectionState, Se]), T(() => {
|
|
2443
|
+
if (!K) return;
|
|
2444
|
+
const g = (f) => {
|
|
2413
2445
|
f.key === "Escape" && Ye(!1);
|
|
2414
2446
|
};
|
|
2415
|
-
return window.addEventListener("keydown",
|
|
2416
|
-
}, [
|
|
2417
|
-
const
|
|
2418
|
-
me === void 0 && ((
|
|
2419
|
-
const
|
|
2420
|
-
() =>
|
|
2421
|
-
[
|
|
2422
|
-
),
|
|
2423
|
-
|
|
2424
|
-
}, [
|
|
2425
|
-
const
|
|
2426
|
-
|
|
2447
|
+
return window.addEventListener("keydown", g), () => window.removeEventListener("keydown", g);
|
|
2448
|
+
}, [K]);
|
|
2449
|
+
const Zt = !!I || !!(J != null && J.avatarImageUrl) || _.isControlled, Pe = kn(Re, o, Zt);
|
|
2450
|
+
me === void 0 && ((wt = Pe.info) != null && wt.capabilities) && (at.current = Pe.info.capabilities);
|
|
2451
|
+
const Ge = (J == null ? void 0 : J.name) ?? H ?? ((_t = _.agentConfig) == null ? void 0 : _t.name) ?? ((xt = Pe.info) == null ? void 0 : xt.name) ?? "Live Layer", ct = (J == null ? void 0 : J.avatarImageUrl) ?? I ?? ((kt = _.agentConfig) == null ? void 0 : kt.avatarImageUrl) ?? ((Lt = Pe.info) == null ? void 0 : Lt.avatarImageUrl) ?? null, en = b ?? ((St = _.agentConfig) == null ? void 0 : St.idleLoopUrl) ?? ((Ct = Pe.info) == null ? void 0 : Ct.idleLoopUrl) ?? null, tn = z ?? null, nn = k(() => ee("expanded"), [ee]), rn = k(
|
|
2452
|
+
() => ee("minimized"),
|
|
2453
|
+
[ee]
|
|
2454
|
+
), bt = k(() => {
|
|
2455
|
+
_.disconnect(), ee("hidden");
|
|
2456
|
+
}, [_, ee]), on = k(() => {
|
|
2457
|
+
const g = _.audioElement;
|
|
2458
|
+
g && g.play().then(() => Me(!1)).catch(() => {
|
|
2427
2459
|
});
|
|
2428
|
-
}, [
|
|
2429
|
-
Me(!1),
|
|
2430
|
-
}, [
|
|
2460
|
+
}, [_.audioElement]), ln = k(() => {
|
|
2461
|
+
Me(!1), _.connect();
|
|
2462
|
+
}, [_]), De = {
|
|
2431
2463
|
...Fe,
|
|
2432
2464
|
zIndex: Ue
|
|
2433
2465
|
};
|
|
2434
2466
|
p.primaryColor && (De["--ll-color-primary"] = p.primaryColor), p.accentColor && (De["--ll-color-accent"] = p.accentColor), p.backgroundColor && (De["--ll-color-bg"] = p.backgroundColor), p.textColor && (De["--ll-color-fg"] = p.textColor);
|
|
2435
|
-
const
|
|
2467
|
+
const an = [
|
|
2436
2468
|
"ll-widget",
|
|
2437
|
-
`ll-widget--${
|
|
2438
|
-
`ll-widget--${
|
|
2469
|
+
`ll-widget--${ne}`,
|
|
2470
|
+
`ll-widget--${le ? "mobile" : "desktop"}`,
|
|
2439
2471
|
We
|
|
2440
2472
|
].filter(Boolean).join(" ");
|
|
2441
|
-
return
|
|
2473
|
+
return ae ? /* @__PURE__ */ w(
|
|
2442
2474
|
"div",
|
|
2443
2475
|
{
|
|
2444
|
-
className:
|
|
2476
|
+
className: an,
|
|
2445
2477
|
style: De,
|
|
2446
|
-
"data-display-mode":
|
|
2447
|
-
"data-position":
|
|
2478
|
+
"data-display-mode": ne,
|
|
2479
|
+
"data-position": h,
|
|
2448
2480
|
children: [
|
|
2449
|
-
|
|
2481
|
+
ne === "hidden" && /* @__PURE__ */ n(
|
|
2450
2482
|
Vn,
|
|
2451
2483
|
{
|
|
2452
|
-
position:
|
|
2453
|
-
isMobile:
|
|
2454
|
-
isSpeaking:
|
|
2455
|
-
onExpand: () =>
|
|
2456
|
-
label: `Open ${
|
|
2484
|
+
position: h,
|
|
2485
|
+
isMobile: le,
|
|
2486
|
+
isSpeaking: _.agentState === "speaking",
|
|
2487
|
+
onExpand: () => ee("expanded"),
|
|
2488
|
+
label: `Open ${Ge} widget`,
|
|
2489
|
+
avatarImageUrl: ct,
|
|
2490
|
+
agentName: Ge
|
|
2457
2491
|
}
|
|
2458
2492
|
),
|
|
2459
|
-
|
|
2493
|
+
ne === "minimized" && /* @__PURE__ */ n(
|
|
2460
2494
|
Gn,
|
|
2461
2495
|
{
|
|
2462
|
-
position:
|
|
2463
|
-
isMobile:
|
|
2464
|
-
agentName:
|
|
2465
|
-
avatarImageUrl:
|
|
2466
|
-
agentState:
|
|
2467
|
-
isMuted:
|
|
2468
|
-
audioLevel:
|
|
2469
|
-
onExpand:
|
|
2470
|
-
onToggleMute:
|
|
2471
|
-
onClose:
|
|
2496
|
+
position: h,
|
|
2497
|
+
isMobile: le,
|
|
2498
|
+
agentName: Ge,
|
|
2499
|
+
avatarImageUrl: ct,
|
|
2500
|
+
agentState: _.agentState,
|
|
2501
|
+
isMuted: Q.isMuted,
|
|
2502
|
+
audioLevel: ce,
|
|
2503
|
+
onExpand: nn,
|
|
2504
|
+
onToggleMute: Q.toggleMute,
|
|
2505
|
+
onClose: bt
|
|
2472
2506
|
}
|
|
2473
2507
|
),
|
|
2474
|
-
|
|
2508
|
+
ne === "expanded" && /* @__PURE__ */ n(
|
|
2475
2509
|
Kn,
|
|
2476
2510
|
{
|
|
2477
|
-
position:
|
|
2478
|
-
isMobile:
|
|
2479
|
-
agentName:
|
|
2480
|
-
avatarImageUrl:
|
|
2481
|
-
idleLoopUrl:
|
|
2482
|
-
greeting:
|
|
2511
|
+
position: h,
|
|
2512
|
+
isMobile: le,
|
|
2513
|
+
agentName: Ge,
|
|
2514
|
+
avatarImageUrl: ct,
|
|
2515
|
+
idleLoopUrl: en,
|
|
2516
|
+
greeting: tn,
|
|
2483
2517
|
branding: p,
|
|
2484
2518
|
teamMembers: C,
|
|
2485
2519
|
currentTeamMemberId: fe,
|
|
2486
2520
|
isSwitchingTeamMember: Se,
|
|
2487
|
-
teamSwitcherOpen:
|
|
2488
|
-
onToggleTeamSwitcher: () => Ye((
|
|
2489
|
-
onSelectTeamMember:
|
|
2490
|
-
connectionState:
|
|
2491
|
-
agentState:
|
|
2492
|
-
transcript:
|
|
2493
|
-
isMuted:
|
|
2521
|
+
teamSwitcherOpen: K,
|
|
2522
|
+
onToggleTeamSwitcher: () => Ye((g) => !g),
|
|
2523
|
+
onSelectTeamMember: Qt,
|
|
2524
|
+
connectionState: _.connectionState,
|
|
2525
|
+
agentState: _.agentState,
|
|
2526
|
+
transcript: _.transcript,
|
|
2527
|
+
isMuted: Q.isMuted,
|
|
2494
2528
|
micDevices: Ie.mics,
|
|
2495
|
-
isCameraEnabled:
|
|
2496
|
-
cameraPreviewEl:
|
|
2529
|
+
isCameraEnabled: re.isEnabled,
|
|
2530
|
+
cameraPreviewEl: re.previewEl,
|
|
2497
2531
|
cameraDevices: Ie.cameras,
|
|
2498
|
-
activeCameraId:
|
|
2532
|
+
activeCameraId: re.activeDeviceId,
|
|
2499
2533
|
isScreenShareEnabled: pe.isEnabled,
|
|
2500
2534
|
screenPreviewEl: pe.previewEl,
|
|
2501
|
-
isSpeakerMuted:
|
|
2502
|
-
allowCamera:
|
|
2503
|
-
allowScreenShare:
|
|
2504
|
-
allowTyping:
|
|
2505
|
-
languageMenuOpen:
|
|
2506
|
-
onToggleLanguageMenu: () =>
|
|
2535
|
+
isSpeakerMuted: nt,
|
|
2536
|
+
allowCamera: N,
|
|
2537
|
+
allowScreenShare: B,
|
|
2538
|
+
allowTyping: D,
|
|
2539
|
+
languageMenuOpen: Yt,
|
|
2540
|
+
onToggleLanguageMenu: () => Gt((g) => !g),
|
|
2507
2541
|
needsUserGesture: Ve,
|
|
2508
|
-
canResume:
|
|
2509
|
-
micError:
|
|
2510
|
-
error:
|
|
2511
|
-
avatarVideoContainerRef:
|
|
2512
|
-
onConnect: () => void
|
|
2513
|
-
onDisconnect: () =>
|
|
2514
|
-
onRetry:
|
|
2515
|
-
onResumeAudio:
|
|
2516
|
-
onToggleMute:
|
|
2517
|
-
onToggleCamera: () => void
|
|
2518
|
-
onSwitchCameraDevice: (
|
|
2542
|
+
canResume: _.canResume,
|
|
2543
|
+
micError: Q.micError,
|
|
2544
|
+
error: _.error,
|
|
2545
|
+
avatarVideoContainerRef: yt,
|
|
2546
|
+
onConnect: () => void _.connect(),
|
|
2547
|
+
onDisconnect: () => _.disconnect(),
|
|
2548
|
+
onRetry: ln,
|
|
2549
|
+
onResumeAudio: on,
|
|
2550
|
+
onToggleMute: Q.toggleMute,
|
|
2551
|
+
onToggleCamera: () => void re.toggle(),
|
|
2552
|
+
onSwitchCameraDevice: (g) => void re.switchDevice(g),
|
|
2519
2553
|
onToggleScreenShare: () => void pe.toggle(),
|
|
2520
|
-
onToggleSpeaker:
|
|
2521
|
-
onSendMessage:
|
|
2522
|
-
onMinimize:
|
|
2523
|
-
onClose:
|
|
2524
|
-
onClearMicError:
|
|
2554
|
+
onToggleSpeaker: Xt,
|
|
2555
|
+
onSendMessage: Kt,
|
|
2556
|
+
onMinimize: rn,
|
|
2557
|
+
onClose: bt,
|
|
2558
|
+
onClearMicError: Q.clearError
|
|
2525
2559
|
}
|
|
2526
2560
|
)
|
|
2527
2561
|
]
|
|
@@ -2529,7 +2563,7 @@ function Sr(e) {
|
|
|
2529
2563
|
) : null;
|
|
2530
2564
|
}
|
|
2531
2565
|
function Tr(e) {
|
|
2532
|
-
return /* @__PURE__ */ n(
|
|
2566
|
+
return /* @__PURE__ */ n(mn, { children: /* @__PURE__ */ n(Sr, { ...e }) });
|
|
2533
2567
|
}
|
|
2534
2568
|
const Pr = ({
|
|
2535
2569
|
agentId: e,
|
|
@@ -2540,26 +2574,26 @@ const Pr = ({
|
|
|
2540
2574
|
className: l,
|
|
2541
2575
|
style: s
|
|
2542
2576
|
}) => {
|
|
2543
|
-
const d =
|
|
2544
|
-
|
|
2545
|
-
const
|
|
2546
|
-
var
|
|
2577
|
+
const d = E(null), u = E(null), m = E(i);
|
|
2578
|
+
m.current = i;
|
|
2579
|
+
const h = k((a) => {
|
|
2580
|
+
var R;
|
|
2547
2581
|
const c = a.detail;
|
|
2548
|
-
(
|
|
2582
|
+
(R = m.current) == null || R.call(m, c);
|
|
2549
2583
|
}, []);
|
|
2550
|
-
return
|
|
2584
|
+
return T(() => {
|
|
2551
2585
|
const a = d.current;
|
|
2552
2586
|
if (!a) return;
|
|
2553
2587
|
const c = document.createElement("livelayer-widget");
|
|
2554
|
-
return c.setAttribute("agent-id", e), t && c.setAttribute("base-url", t), r && c.setAttribute("api-key", r), o && c.setAttribute("mode", o), c.addEventListener("agent-event",
|
|
2555
|
-
c.removeEventListener("agent-event",
|
|
2588
|
+
return c.setAttribute("agent-id", e), t && c.setAttribute("base-url", t), r && c.setAttribute("api-key", r), o && c.setAttribute("mode", o), c.addEventListener("agent-event", h), a.appendChild(c), u.current = c, () => {
|
|
2589
|
+
c.removeEventListener("agent-event", h), a.removeChild(c), u.current = null;
|
|
2556
2590
|
};
|
|
2557
|
-
}, [e]),
|
|
2591
|
+
}, [e]), T(() => {
|
|
2558
2592
|
u.current && (o ? u.current.setAttribute("mode", o) : u.current.removeAttribute("mode"));
|
|
2559
2593
|
}, [o]), /* @__PURE__ */ n("div", { ref: d, className: l, style: s });
|
|
2560
|
-
}, Dr =
|
|
2594
|
+
}, Dr = ft(
|
|
2561
2595
|
function({ id: t, intent: r, as: o = "div", className: i, style: l, children: s }, d) {
|
|
2562
|
-
return
|
|
2596
|
+
return un(
|
|
2563
2597
|
o,
|
|
2564
2598
|
{
|
|
2565
2599
|
ref: d,
|
|
@@ -2571,7 +2605,7 @@ const Pr = ({
|
|
|
2571
2605
|
s
|
|
2572
2606
|
);
|
|
2573
2607
|
}
|
|
2574
|
-
), $r =
|
|
2608
|
+
), $r = ft(
|
|
2575
2609
|
function({ id: t, intent: r, children: o, ...i }, l) {
|
|
2576
2610
|
return /* @__PURE__ */ n(
|
|
2577
2611
|
"form",
|
|
@@ -2584,12 +2618,12 @@ const Pr = ({
|
|
|
2584
2618
|
}
|
|
2585
2619
|
);
|
|
2586
2620
|
}
|
|
2587
|
-
), zr =
|
|
2621
|
+
), zr = ft(
|
|
2588
2622
|
function(t, r) {
|
|
2589
2623
|
const { name: o, label: i, labelClassName: l } = t, s = { name: o, "data-ll-field": o };
|
|
2590
2624
|
let d;
|
|
2591
2625
|
if ("as" in t && t.as === "textarea") {
|
|
2592
|
-
const { name: u, label:
|
|
2626
|
+
const { name: u, label: m, labelClassName: h, as: a, ...c } = t;
|
|
2593
2627
|
d = /* @__PURE__ */ n(
|
|
2594
2628
|
"textarea",
|
|
2595
2629
|
{
|
|
@@ -2599,18 +2633,18 @@ const Pr = ({
|
|
|
2599
2633
|
}
|
|
2600
2634
|
);
|
|
2601
2635
|
} else if ("as" in t && t.as === "select") {
|
|
2602
|
-
const { name: u, label:
|
|
2636
|
+
const { name: u, label: m, labelClassName: h, as: a, children: c, ...R } = t;
|
|
2603
2637
|
d = /* @__PURE__ */ n(
|
|
2604
2638
|
"select",
|
|
2605
2639
|
{
|
|
2606
2640
|
ref: r,
|
|
2607
2641
|
...s,
|
|
2608
|
-
...
|
|
2642
|
+
...R,
|
|
2609
2643
|
children: c
|
|
2610
2644
|
}
|
|
2611
2645
|
);
|
|
2612
2646
|
} else {
|
|
2613
|
-
const { name: u, label:
|
|
2647
|
+
const { name: u, label: m, labelClassName: h, as: a, ...c } = t;
|
|
2614
2648
|
d = /* @__PURE__ */ n(
|
|
2615
2649
|
"input",
|
|
2616
2650
|
{
|
|
@@ -2620,73 +2654,73 @@ const Pr = ({
|
|
|
2620
2654
|
}
|
|
2621
2655
|
);
|
|
2622
2656
|
}
|
|
2623
|
-
return i === void 0 ? d : /* @__PURE__ */
|
|
2657
|
+
return i === void 0 ? d : /* @__PURE__ */ w("label", { className: l, children: [
|
|
2624
2658
|
i,
|
|
2625
2659
|
d
|
|
2626
2660
|
] });
|
|
2627
2661
|
}
|
|
2628
2662
|
);
|
|
2629
|
-
let
|
|
2663
|
+
let Ut = 1;
|
|
2630
2664
|
function Hr({
|
|
2631
2665
|
onMount: e,
|
|
2632
2666
|
defaultOpen: t = !1,
|
|
2633
2667
|
storageKey: r = "ll-debug-open"
|
|
2634
2668
|
}) {
|
|
2635
|
-
const [o, i] =
|
|
2636
|
-
|
|
2669
|
+
const [o, i] = S(t), [l, s] = S([]), [d, u] = S(""), [m, h] = S(!1), a = E(/* @__PURE__ */ new Set()), c = E([]), R = E(m);
|
|
2670
|
+
R.current = m, T(() => {
|
|
2637
2671
|
try {
|
|
2638
|
-
const
|
|
2639
|
-
|
|
2672
|
+
const v = localStorage.getItem(r);
|
|
2673
|
+
v === "1" && i(!0), v === "0" && i(!1);
|
|
2640
2674
|
} catch {
|
|
2641
2675
|
}
|
|
2642
|
-
}, [r]),
|
|
2676
|
+
}, [r]), T(() => {
|
|
2643
2677
|
try {
|
|
2644
2678
|
localStorage.setItem(r, o ? "1" : "0");
|
|
2645
2679
|
} catch {
|
|
2646
2680
|
}
|
|
2647
|
-
}, [o, r]),
|
|
2648
|
-
const
|
|
2649
|
-
(
|
|
2681
|
+
}, [o, r]), T(() => {
|
|
2682
|
+
const v = (b) => {
|
|
2683
|
+
(b.metaKey || b.ctrlKey) && b.shiftKey && b.key.toLowerCase() === "l" && (b.preventDefault(), i((z) => !z));
|
|
2650
2684
|
};
|
|
2651
|
-
return window.addEventListener("keydown",
|
|
2652
|
-
}, []),
|
|
2653
|
-
const
|
|
2654
|
-
if (c.current.length === 0 ||
|
|
2655
|
-
const
|
|
2685
|
+
return window.addEventListener("keydown", v), () => window.removeEventListener("keydown", v);
|
|
2686
|
+
}, []), T(() => {
|
|
2687
|
+
const v = setInterval(() => {
|
|
2688
|
+
if (c.current.length === 0 || R.current) return;
|
|
2689
|
+
const b = c.current.splice(0, c.current.length);
|
|
2656
2690
|
s(
|
|
2657
|
-
(z) => [...
|
|
2691
|
+
(z) => [...b.reverse(), ...z].slice(0, 200)
|
|
2658
2692
|
);
|
|
2659
2693
|
}, 100);
|
|
2660
|
-
return () => clearInterval(
|
|
2694
|
+
return () => clearInterval(v);
|
|
2661
2695
|
}, []);
|
|
2662
|
-
const C =
|
|
2663
|
-
if (
|
|
2664
|
-
!e || C.current || (C.current = !0, e((
|
|
2696
|
+
const C = E(!1);
|
|
2697
|
+
if (T(() => {
|
|
2698
|
+
!e || C.current || (C.current = !0, e((v) => {
|
|
2665
2699
|
c.current.push({
|
|
2666
|
-
id:
|
|
2700
|
+
id: Ut++,
|
|
2667
2701
|
ts: Date.now(),
|
|
2668
2702
|
kind: "event",
|
|
2669
|
-
type:
|
|
2670
|
-
data:
|
|
2703
|
+
type: v.eventName,
|
|
2704
|
+
data: v.data
|
|
2671
2705
|
});
|
|
2672
2706
|
}));
|
|
2673
|
-
}, [e]),
|
|
2674
|
-
const
|
|
2707
|
+
}, [e]), T(() => {
|
|
2708
|
+
const v = console.warn, b = console.log, z = (I, H) => function(...p) {
|
|
2675
2709
|
try {
|
|
2676
|
-
const
|
|
2677
|
-
|
|
2678
|
-
id:
|
|
2710
|
+
const N = typeof p[0] == "string" ? p[0] : "";
|
|
2711
|
+
N.startsWith("[LiveLayer]") && c.current.push({
|
|
2712
|
+
id: Ut++,
|
|
2679
2713
|
ts: Date.now(),
|
|
2680
|
-
kind:
|
|
2681
|
-
type:
|
|
2682
|
-
data: { args: p.slice(1).map((
|
|
2714
|
+
kind: I,
|
|
2715
|
+
type: N.slice(0, 120),
|
|
2716
|
+
data: { args: p.slice(1).map((B) => Er(B)) }
|
|
2683
2717
|
});
|
|
2684
2718
|
} catch {
|
|
2685
2719
|
}
|
|
2686
|
-
return
|
|
2720
|
+
return H.apply(this, p);
|
|
2687
2721
|
};
|
|
2688
|
-
return console.warn = z("warn",
|
|
2689
|
-
console.warn =
|
|
2722
|
+
return console.warn = z("warn", v), console.log = z("log", b), () => {
|
|
2723
|
+
console.warn = v, console.log = b;
|
|
2690
2724
|
};
|
|
2691
2725
|
}, []), !o)
|
|
2692
2726
|
return /* @__PURE__ */ n(
|
|
@@ -2715,12 +2749,12 @@ function Hr({
|
|
|
2715
2749
|
children: "🛰 LL debug"
|
|
2716
2750
|
}
|
|
2717
2751
|
);
|
|
2718
|
-
const
|
|
2752
|
+
const L = l.filter((v) => {
|
|
2719
2753
|
if (!d) return !0;
|
|
2720
|
-
const
|
|
2721
|
-
return
|
|
2754
|
+
const b = d.toLowerCase();
|
|
2755
|
+
return v.type.toLowerCase().includes(b) || JSON.stringify(v.data || {}).toLowerCase().includes(b);
|
|
2722
2756
|
});
|
|
2723
|
-
return /* @__PURE__ */
|
|
2757
|
+
return /* @__PURE__ */ w(
|
|
2724
2758
|
"div",
|
|
2725
2759
|
{
|
|
2726
2760
|
style: {
|
|
@@ -2742,7 +2776,7 @@ function Hr({
|
|
|
2742
2776
|
overflow: "hidden"
|
|
2743
2777
|
},
|
|
2744
2778
|
children: [
|
|
2745
|
-
/* @__PURE__ */
|
|
2779
|
+
/* @__PURE__ */ w(
|
|
2746
2780
|
"div",
|
|
2747
2781
|
{
|
|
2748
2782
|
style: {
|
|
@@ -2755,7 +2789,7 @@ function Hr({
|
|
|
2755
2789
|
},
|
|
2756
2790
|
children: [
|
|
2757
2791
|
/* @__PURE__ */ n("span", { style: { fontWeight: 600, fontSize: 12 }, children: "LiveLayer debug" }),
|
|
2758
|
-
/* @__PURE__ */
|
|
2792
|
+
/* @__PURE__ */ w("span", { style: { fontSize: 10, color: "rgba(255,255,255,0.4)" }, children: [
|
|
2759
2793
|
l.length,
|
|
2760
2794
|
" event",
|
|
2761
2795
|
l.length === 1 ? "" : "s"
|
|
@@ -2765,10 +2799,10 @@ function Hr({
|
|
|
2765
2799
|
"button",
|
|
2766
2800
|
{
|
|
2767
2801
|
type: "button",
|
|
2768
|
-
onClick: () =>
|
|
2769
|
-
style:
|
|
2802
|
+
onClick: () => h((v) => !v),
|
|
2803
|
+
style: dt(m ? "#f59e0b" : "transparent"),
|
|
2770
2804
|
title: "Pause / resume capture",
|
|
2771
|
-
children:
|
|
2805
|
+
children: m ? "▶ resume" : "⏸ pause"
|
|
2772
2806
|
}
|
|
2773
2807
|
),
|
|
2774
2808
|
/* @__PURE__ */ n(
|
|
@@ -2778,7 +2812,7 @@ function Hr({
|
|
|
2778
2812
|
onClick: () => {
|
|
2779
2813
|
s([]), c.current = [];
|
|
2780
2814
|
},
|
|
2781
|
-
style:
|
|
2815
|
+
style: dt("transparent"),
|
|
2782
2816
|
title: "Clear buffer",
|
|
2783
2817
|
children: "clear"
|
|
2784
2818
|
}
|
|
@@ -2788,7 +2822,7 @@ function Hr({
|
|
|
2788
2822
|
{
|
|
2789
2823
|
type: "button",
|
|
2790
2824
|
onClick: () => i(!1),
|
|
2791
|
-
style:
|
|
2825
|
+
style: dt("transparent"),
|
|
2792
2826
|
"aria-label": "Close",
|
|
2793
2827
|
title: "Close (Cmd/Ctrl + Shift + L)",
|
|
2794
2828
|
children: "✕"
|
|
@@ -2802,7 +2836,7 @@ function Hr({
|
|
|
2802
2836
|
{
|
|
2803
2837
|
type: "text",
|
|
2804
2838
|
value: d,
|
|
2805
|
-
onChange: (
|
|
2839
|
+
onChange: (v) => u(v.target.value),
|
|
2806
2840
|
placeholder: "filter by type or data…",
|
|
2807
2841
|
style: {
|
|
2808
2842
|
margin: 8,
|
|
@@ -2824,7 +2858,7 @@ function Hr({
|
|
|
2824
2858
|
overflowY: "auto",
|
|
2825
2859
|
padding: "0 8px 8px"
|
|
2826
2860
|
},
|
|
2827
|
-
children:
|
|
2861
|
+
children: L.length === 0 ? /* @__PURE__ */ w(
|
|
2828
2862
|
"div",
|
|
2829
2863
|
{
|
|
2830
2864
|
style: {
|
|
@@ -2854,16 +2888,16 @@ function Hr({
|
|
|
2854
2888
|
)
|
|
2855
2889
|
]
|
|
2856
2890
|
}
|
|
2857
|
-
) :
|
|
2891
|
+
) : L.map((v) => /* @__PURE__ */ n(
|
|
2858
2892
|
Cr,
|
|
2859
2893
|
{
|
|
2860
|
-
entry:
|
|
2861
|
-
expanded: a.current.has(
|
|
2894
|
+
entry: v,
|
|
2895
|
+
expanded: a.current.has(v.id),
|
|
2862
2896
|
onToggle: () => {
|
|
2863
|
-
a.current.has(
|
|
2897
|
+
a.current.has(v.id) ? a.current.delete(v.id) : a.current.add(v.id), s((b) => [...b]);
|
|
2864
2898
|
}
|
|
2865
2899
|
},
|
|
2866
|
-
|
|
2900
|
+
v.id
|
|
2867
2901
|
))
|
|
2868
2902
|
}
|
|
2869
2903
|
)
|
|
@@ -2879,7 +2913,7 @@ function Cr({
|
|
|
2879
2913
|
const o = e.kind === "warn" ? "#f59e0b" : e.type.startsWith("[LiveLayer]") ? "#94a3b8" : e.type === "navigate" || e.type === "scroll_page" || e.type === "scroll_to" || e.type === "click" ? "#22c55e" : e.type === "fill_form" || e.type === "submit_form" || e.type === "focus_field" ? "#a78bfa" : e.type === "request_page_context" || e.type === "request_routes" ? "#38bdf8" : e.type === "agent_state" ? "#facc15" : "#cbd5e1", i = new Date(e.ts).toLocaleTimeString("en-US", {
|
|
2880
2914
|
hour12: !1
|
|
2881
2915
|
});
|
|
2882
|
-
return /* @__PURE__ */
|
|
2916
|
+
return /* @__PURE__ */ w(
|
|
2883
2917
|
"button",
|
|
2884
2918
|
{
|
|
2885
2919
|
type: "button",
|
|
@@ -2897,7 +2931,7 @@ function Cr({
|
|
|
2897
2931
|
lineHeight: 1.4
|
|
2898
2932
|
},
|
|
2899
2933
|
children: [
|
|
2900
|
-
/* @__PURE__ */
|
|
2934
|
+
/* @__PURE__ */ w("div", { style: { display: "flex", alignItems: "center", gap: 6 }, children: [
|
|
2901
2935
|
/* @__PURE__ */ n(
|
|
2902
2936
|
"span",
|
|
2903
2937
|
{
|
|
@@ -2941,7 +2975,7 @@ function Cr({
|
|
|
2941
2975
|
}
|
|
2942
2976
|
);
|
|
2943
2977
|
}
|
|
2944
|
-
function
|
|
2978
|
+
function dt(e) {
|
|
2945
2979
|
return {
|
|
2946
2980
|
background: e,
|
|
2947
2981
|
color: "#fff",
|
|
@@ -2960,7 +2994,7 @@ function Er(e) {
|
|
|
2960
2994
|
}
|
|
2961
2995
|
}
|
|
2962
2996
|
function Or() {
|
|
2963
|
-
const [e, t] =
|
|
2997
|
+
const [e, t] = S([]), r = k((i) => {
|
|
2964
2998
|
t((l) => {
|
|
2965
2999
|
const s = l.findIndex((d) => d.id === i.id);
|
|
2966
3000
|
if (s >= 0) {
|
|
@@ -2969,7 +3003,7 @@ function Or() {
|
|
|
2969
3003
|
}
|
|
2970
3004
|
return [...l, i];
|
|
2971
3005
|
});
|
|
2972
|
-
}, []), o =
|
|
3006
|
+
}, []), o = k(() => t([]), []);
|
|
2973
3007
|
return {
|
|
2974
3008
|
entries: e,
|
|
2975
3009
|
pushSegment: r,
|
|
@@ -2979,7 +3013,7 @@ function Or() {
|
|
|
2979
3013
|
}
|
|
2980
3014
|
export {
|
|
2981
3015
|
Tr as AvatarWidget,
|
|
2982
|
-
|
|
3016
|
+
mn as ErrorBoundary,
|
|
2983
3017
|
Hr as LiveLayerDebugPanel,
|
|
2984
3018
|
zr as LiveLayerField,
|
|
2985
3019
|
$r as LiveLayerForm,
|
|
@@ -2989,22 +3023,22 @@ export {
|
|
|
2989
3023
|
gr as clearRoutesCache,
|
|
2990
3024
|
sr as extractPageContext,
|
|
2991
3025
|
hr as extractRoutes,
|
|
2992
|
-
|
|
2993
|
-
|
|
2994
|
-
|
|
3026
|
+
Wt as getCachedPageContext,
|
|
3027
|
+
st as getCachedRoutes,
|
|
3028
|
+
Hn as matchesPattern,
|
|
2995
3029
|
fr as normalizeRouteInput,
|
|
2996
|
-
|
|
2997
|
-
|
|
2998
|
-
|
|
2999
|
-
|
|
3000
|
-
|
|
3001
|
-
|
|
3002
|
-
|
|
3003
|
-
|
|
3004
|
-
|
|
3005
|
-
|
|
3006
|
-
|
|
3007
|
-
|
|
3008
|
-
|
|
3030
|
+
On as shouldRenderAtPath,
|
|
3031
|
+
kn as useAgentInfo,
|
|
3032
|
+
yn as useAudioLevel,
|
|
3033
|
+
wn as useCameraState,
|
|
3034
|
+
Cn as useDisplayMode,
|
|
3035
|
+
An as useDisplayModePersistence,
|
|
3036
|
+
In as useIsMobile,
|
|
3037
|
+
gn as useLiveKitSession,
|
|
3038
|
+
xn as useMediaDevices,
|
|
3039
|
+
vn as useMicrophoneState,
|
|
3040
|
+
Tn as usePathname,
|
|
3041
|
+
qn as useRouteMatch,
|
|
3042
|
+
_n as useScreenShareState,
|
|
3009
3043
|
Or as useTranscript
|
|
3010
3044
|
};
|