claudius-chat-widget 1.17.1 → 1.18.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/claudius.cjs +13 -13
- package/dist/claudius.css +1 -1
- package/dist/claudius.iife.js +23 -23
- package/dist/claudius.js +1437 -1050
- package/dist/index.d.cts +70 -1
- package/dist/index.d.ts +70 -1
- package/package.json +1 -1
package/dist/claudius.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var
|
|
4
|
-
import { jsx as i, jsxs as
|
|
5
|
-
import { useMemo as
|
|
6
|
-
class
|
|
1
|
+
var pt = Object.defineProperty;
|
|
2
|
+
var mt = (e, t, n) => t in e ? pt(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n;
|
|
3
|
+
var pe = (e, t, n) => mt(e, typeof t != "symbol" ? t + "" : t, n);
|
|
4
|
+
import { jsx as i, jsxs as g, Fragment as Te } from "react/jsx-runtime";
|
|
5
|
+
import { useMemo as ae, useState as M, useRef as C, useCallback as O, useEffect as H, forwardRef as Oe, memo as Ae, useId as Ne, Fragment as gt } from "react";
|
|
6
|
+
class Q extends Error {
|
|
7
7
|
/**
|
|
8
8
|
* Create a {@link ChatApiError}.
|
|
9
9
|
*
|
|
@@ -22,13 +22,13 @@ class De extends Error {
|
|
|
22
22
|
super("Request debounced"), this.name = "DebounceError";
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
|
-
const
|
|
26
|
-
function
|
|
25
|
+
const bt = 3e4;
|
|
26
|
+
function yt(e, t) {
|
|
27
27
|
const n = atob(e), r = new Uint8Array(n.length);
|
|
28
28
|
for (let o = 0; o < n.length; o++) r[o] = n.charCodeAt(o);
|
|
29
29
|
return new Blob([r], { type: t });
|
|
30
30
|
}
|
|
31
|
-
class
|
|
31
|
+
class wt {
|
|
32
32
|
/**
|
|
33
33
|
* Create a chat client for the given Worker base URL.
|
|
34
34
|
*
|
|
@@ -36,12 +36,13 @@ class mt {
|
|
|
36
36
|
* @param options - Optional retry, debounce, and timeout settings.
|
|
37
37
|
*/
|
|
38
38
|
constructor(t, n) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
this
|
|
39
|
+
pe(this, "baseUrl");
|
|
40
|
+
pe(this, "maxRetries");
|
|
41
|
+
pe(this, "debounceMs");
|
|
42
|
+
pe(this, "timeoutMs");
|
|
43
|
+
pe(this, "citations");
|
|
44
|
+
pe(this, "lastSendTime", 0);
|
|
45
|
+
this.baseUrl = t, this.maxRetries = (n == null ? void 0 : n.maxRetries) ?? 2, this.debounceMs = (n == null ? void 0 : n.debounceMs) ?? 300, this.timeoutMs = (n == null ? void 0 : n.timeoutMs) ?? bt, this.citations = (n == null ? void 0 : n.citations) ?? !1;
|
|
45
46
|
}
|
|
46
47
|
/**
|
|
47
48
|
* Send the conversation to the chat endpoint and return the assistant's
|
|
@@ -64,7 +65,7 @@ class mt {
|
|
|
64
65
|
if (o.ok)
|
|
65
66
|
return await o.json();
|
|
66
67
|
const s = await o.json().catch(() => ({})), a = o.headers.get("Retry-After"), c = a ? Number(a) : void 0;
|
|
67
|
-
if (n = new
|
|
68
|
+
if (n = new Q(
|
|
68
69
|
s.error ?? `Request failed with status ${o.status}`,
|
|
69
70
|
o.status,
|
|
70
71
|
s.code,
|
|
@@ -76,14 +77,14 @@ class mt {
|
|
|
76
77
|
await this.delay(l);
|
|
77
78
|
}
|
|
78
79
|
} catch (o) {
|
|
79
|
-
if (o instanceof
|
|
80
|
+
if (o instanceof Q) {
|
|
80
81
|
if (!this.isRetryable(o.status, o.code))
|
|
81
82
|
throw o;
|
|
82
83
|
if (n = o, r < this.maxRetries) {
|
|
83
84
|
const s = this.getRetryDelay(null, r);
|
|
84
85
|
await this.delay(s);
|
|
85
86
|
}
|
|
86
|
-
} else if (n = new
|
|
87
|
+
} else if (n = new Q(
|
|
87
88
|
"Failed to connect. Please try again.",
|
|
88
89
|
0,
|
|
89
90
|
"NETWORK_ERROR"
|
|
@@ -100,28 +101,32 @@ class mt {
|
|
|
100
101
|
* never reuse a consumed stream.
|
|
101
102
|
*/
|
|
102
103
|
buildRequest(t) {
|
|
103
|
-
|
|
104
|
-
(
|
|
105
|
-
var
|
|
106
|
-
return (
|
|
104
|
+
const n = t.some(
|
|
105
|
+
(a) => {
|
|
106
|
+
var c;
|
|
107
|
+
return (c = a.attachments) == null ? void 0 : c.some((l) => !!l.data);
|
|
107
108
|
}
|
|
108
|
-
)
|
|
109
|
+
), r = this.citations ? { citations: !0 } : {};
|
|
110
|
+
if (!n)
|
|
109
111
|
return {
|
|
110
112
|
headers: { "Content-Type": "application/json" },
|
|
111
|
-
body: JSON.stringify({ messages: t })
|
|
113
|
+
body: JSON.stringify({ messages: t, ...r })
|
|
112
114
|
};
|
|
113
|
-
const
|
|
114
|
-
...
|
|
115
|
-
attachments:
|
|
116
|
-
const
|
|
117
|
-
return delete
|
|
115
|
+
const o = new FormData(), s = t.map((a) => a.attachments ? {
|
|
116
|
+
...a,
|
|
117
|
+
attachments: a.attachments.map((c) => {
|
|
118
|
+
const l = { ...c };
|
|
119
|
+
return delete l.data, l;
|
|
118
120
|
})
|
|
119
|
-
} :
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
121
|
+
} : a);
|
|
122
|
+
o.append(
|
|
123
|
+
"payload",
|
|
124
|
+
JSON.stringify({ messages: s, ...r })
|
|
125
|
+
);
|
|
126
|
+
for (const a of t)
|
|
127
|
+
for (const c of a.attachments ?? [])
|
|
128
|
+
c.data && o.append(c.id, yt(c.data, c.mediaType), c.name);
|
|
129
|
+
return { body: o };
|
|
125
130
|
}
|
|
126
131
|
/**
|
|
127
132
|
* Send the conversation to the streaming chat endpoint and resolve with the
|
|
@@ -158,7 +163,7 @@ class mt {
|
|
|
158
163
|
} catch (l) {
|
|
159
164
|
if ((o = n.signal) != null && o.aborted)
|
|
160
165
|
return { reply: "", aborted: !0 };
|
|
161
|
-
if (r = l instanceof
|
|
166
|
+
if (r = l instanceof Q ? l : new Q(
|
|
162
167
|
"Failed to connect. Please try again.",
|
|
163
168
|
0,
|
|
164
169
|
"NETWORK_ERROR"
|
|
@@ -171,7 +176,7 @@ class mt {
|
|
|
171
176
|
return this.lastSendTime = 0, this.sendMessage(t);
|
|
172
177
|
if (!a.ok) {
|
|
173
178
|
const l = await a.json().catch(() => ({})), u = a.headers.get("Retry-After");
|
|
174
|
-
if (r = new
|
|
179
|
+
if (r = new Q(
|
|
175
180
|
l.error ?? `Request failed with status ${a.status}`,
|
|
176
181
|
a.status,
|
|
177
182
|
l.code,
|
|
@@ -197,56 +202,58 @@ class mt {
|
|
|
197
202
|
* resolving with the partial text when the caller aborts.
|
|
198
203
|
*/
|
|
199
204
|
async readSseStream(t, n) {
|
|
200
|
-
var
|
|
205
|
+
var T, A, m, h, d, k, b, x;
|
|
201
206
|
const r = t.getReader(), o = new TextDecoder();
|
|
202
207
|
let s = "", a = "";
|
|
203
208
|
const c = [];
|
|
204
|
-
let l;
|
|
205
|
-
const
|
|
209
|
+
let l, u;
|
|
210
|
+
const f = () => {
|
|
206
211
|
r.cancel().catch(() => {
|
|
207
212
|
});
|
|
208
213
|
};
|
|
209
|
-
(
|
|
214
|
+
(T = n.signal) == null || T.addEventListener("abort", f, { once: !0 });
|
|
210
215
|
try {
|
|
211
216
|
for (; ; ) {
|
|
212
|
-
let
|
|
217
|
+
let y;
|
|
213
218
|
try {
|
|
214
|
-
|
|
215
|
-
} catch (
|
|
216
|
-
if ((
|
|
217
|
-
throw
|
|
219
|
+
y = await r.read();
|
|
220
|
+
} catch (D) {
|
|
221
|
+
if ((A = n.signal) != null && A.aborted) break;
|
|
222
|
+
throw D;
|
|
218
223
|
}
|
|
219
|
-
if ((
|
|
220
|
-
s += o.decode(
|
|
221
|
-
let
|
|
222
|
-
for (; (
|
|
224
|
+
if ((m = n.signal) != null && m.aborted || y.done) break;
|
|
225
|
+
s += o.decode(y.value, { stream: !0 });
|
|
226
|
+
let w;
|
|
227
|
+
for (; (w = s.indexOf(`
|
|
223
228
|
|
|
224
229
|
`)) !== -1; ) {
|
|
225
|
-
const
|
|
226
|
-
s = s.slice(
|
|
227
|
-
const
|
|
228
|
-
if (
|
|
229
|
-
if (
|
|
230
|
-
const
|
|
231
|
-
|
|
232
|
-
} else if (
|
|
233
|
-
if (typeof
|
|
234
|
-
const
|
|
235
|
-
c.push(
|
|
230
|
+
const D = s.slice(0, w);
|
|
231
|
+
s = s.slice(w + 2);
|
|
232
|
+
const S = xt(D);
|
|
233
|
+
if (S) {
|
|
234
|
+
if (S.event === "chunk") {
|
|
235
|
+
const N = typeof S.data.text == "string" ? S.data.text : "";
|
|
236
|
+
N && (a += N, (h = n.onChunk) == null || h.call(n, N, a));
|
|
237
|
+
} else if (S.event === "tool") {
|
|
238
|
+
if (typeof S.data.name == "string") {
|
|
239
|
+
const N = S.data;
|
|
240
|
+
c.push(N), (d = n.onToolUse) == null || d.call(n, N, c);
|
|
236
241
|
}
|
|
237
|
-
} else if (
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
242
|
+
} else if (S.event === "sources")
|
|
243
|
+
Array.isArray(S.data.sources) && (l = S.data.sources, (k = n.onSources) == null || k.call(n, l));
|
|
244
|
+
else if (S.event === "done") {
|
|
245
|
+
const N = Array.isArray(S.data.toolUses) ? S.data.toolUses : c;
|
|
246
|
+
u = {
|
|
247
|
+
reply: typeof S.data.reply == "string" ? S.data.reply : a,
|
|
248
|
+
sources: Array.isArray(S.data.sources) ? S.data.sources : l,
|
|
249
|
+
...N.length > 0 ? { toolUses: N } : {},
|
|
250
|
+
...Array.isArray(S.data.attachments) ? {
|
|
251
|
+
attachments: S.data.attachments
|
|
245
252
|
} : {}
|
|
246
253
|
};
|
|
247
|
-
} else if (
|
|
248
|
-
throw new
|
|
249
|
-
typeof
|
|
254
|
+
} else if (S.event === "error")
|
|
255
|
+
throw new Q(
|
|
256
|
+
typeof S.data.error == "string" ? S.data.error : "Something went wrong. Please try again.",
|
|
250
257
|
0,
|
|
251
258
|
"STREAM_ERROR"
|
|
252
259
|
);
|
|
@@ -254,16 +261,17 @@ class mt {
|
|
|
254
261
|
}
|
|
255
262
|
}
|
|
256
263
|
} finally {
|
|
257
|
-
(
|
|
264
|
+
(b = n.signal) == null || b.removeEventListener("abort", f), r.releaseLock();
|
|
258
265
|
}
|
|
259
|
-
if ((
|
|
266
|
+
if ((x = n.signal) != null && x.aborted)
|
|
260
267
|
return {
|
|
261
268
|
reply: a,
|
|
262
269
|
aborted: !0,
|
|
263
|
-
...c.length > 0 ? { toolUses: c } : {}
|
|
270
|
+
...c.length > 0 ? { toolUses: c } : {},
|
|
271
|
+
...l ? { sources: l } : {}
|
|
264
272
|
};
|
|
265
|
-
if (
|
|
266
|
-
throw new
|
|
273
|
+
if (u) return u;
|
|
274
|
+
throw new Q(
|
|
267
275
|
"Connection interrupted. Please try again.",
|
|
268
276
|
0,
|
|
269
277
|
"STREAM_ERROR"
|
|
@@ -284,7 +292,7 @@ class mt {
|
|
|
284
292
|
signal: r.signal
|
|
285
293
|
});
|
|
286
294
|
} catch (u) {
|
|
287
|
-
throw s ? new
|
|
295
|
+
throw s ? new Q(
|
|
288
296
|
"Request timed out. Please try again.",
|
|
289
297
|
0,
|
|
290
298
|
"TIMEOUT"
|
|
@@ -310,7 +318,7 @@ class mt {
|
|
|
310
318
|
signal: o.signal
|
|
311
319
|
});
|
|
312
320
|
} catch (a) {
|
|
313
|
-
throw o.signal.aborted ? new
|
|
321
|
+
throw o.signal.aborted ? new Q(
|
|
314
322
|
"Request timed out. Please try again.",
|
|
315
323
|
0,
|
|
316
324
|
"TIMEOUT"
|
|
@@ -336,7 +344,7 @@ class mt {
|
|
|
336
344
|
return new Promise((n) => setTimeout(n, t));
|
|
337
345
|
}
|
|
338
346
|
}
|
|
339
|
-
function
|
|
347
|
+
function xt(e) {
|
|
340
348
|
let t = "message";
|
|
341
349
|
const n = [];
|
|
342
350
|
for (const r of e.split(`
|
|
@@ -354,10 +362,10 @@ function gt(e) {
|
|
|
354
362
|
function Qe(e) {
|
|
355
363
|
return typeof e == "string" ? { content: e } : e;
|
|
356
364
|
}
|
|
357
|
-
function
|
|
365
|
+
function $e(e, t, n) {
|
|
358
366
|
console.error(`[claudius] plugin "${e.name}" failed in ${t}:`, n);
|
|
359
367
|
}
|
|
360
|
-
async function
|
|
368
|
+
async function vt(e, t, n) {
|
|
361
369
|
let r = t;
|
|
362
370
|
for (const o of e) {
|
|
363
371
|
if (!o.onBeforeSend) continue;
|
|
@@ -380,12 +388,12 @@ async function bt(e, t, n) {
|
|
|
380
388
|
if (s) return s;
|
|
381
389
|
c && (r = c);
|
|
382
390
|
} catch (c) {
|
|
383
|
-
|
|
391
|
+
$e(o, "onBeforeSend", c);
|
|
384
392
|
}
|
|
385
393
|
}
|
|
386
394
|
return { type: "send", message: r };
|
|
387
395
|
}
|
|
388
|
-
async function
|
|
396
|
+
async function St(e, t, n) {
|
|
389
397
|
let r = t;
|
|
390
398
|
for (const o of e)
|
|
391
399
|
if (o.onAfterReceive)
|
|
@@ -393,11 +401,11 @@ async function yt(e, t, n) {
|
|
|
393
401
|
const s = await o.onAfterReceive(r, n);
|
|
394
402
|
s && (r = s);
|
|
395
403
|
} catch (s) {
|
|
396
|
-
|
|
404
|
+
$e(o, "onAfterReceive", s);
|
|
397
405
|
}
|
|
398
406
|
return r;
|
|
399
407
|
}
|
|
400
|
-
async function
|
|
408
|
+
async function Tt(e, t, n) {
|
|
401
409
|
for (const r of e) {
|
|
402
410
|
if (!r.onError) continue;
|
|
403
411
|
let o = null;
|
|
@@ -410,12 +418,12 @@ async function xt(e, t, n) {
|
|
|
410
418
|
try {
|
|
411
419
|
if (await r.onError(t, s), o) return o;
|
|
412
420
|
} catch (a) {
|
|
413
|
-
|
|
421
|
+
$e(r, "onError", a);
|
|
414
422
|
}
|
|
415
423
|
}
|
|
416
424
|
return null;
|
|
417
425
|
}
|
|
418
|
-
const
|
|
426
|
+
const Re = {
|
|
419
427
|
maxSizeBytes: 5 * 1024 * 1024,
|
|
420
428
|
maxCount: 5,
|
|
421
429
|
allowedTypes: [
|
|
@@ -426,14 +434,14 @@ const Te = {
|
|
|
426
434
|
"application/pdf"
|
|
427
435
|
]
|
|
428
436
|
};
|
|
429
|
-
function
|
|
430
|
-
return e ? e === !0 ?
|
|
431
|
-
maxSizeBytes: e.maxSizeBytes ??
|
|
432
|
-
maxCount: e.maxCount ??
|
|
433
|
-
allowedTypes: (e.allowedTypes ??
|
|
437
|
+
function At(e) {
|
|
438
|
+
return e ? e === !0 ? Re : {
|
|
439
|
+
maxSizeBytes: e.maxSizeBytes ?? Re.maxSizeBytes,
|
|
440
|
+
maxCount: e.maxCount ?? Re.maxCount,
|
|
441
|
+
allowedTypes: (e.allowedTypes ?? Re.allowedTypes).map((t) => t.trim().toLowerCase()).filter(Boolean)
|
|
434
442
|
} : null;
|
|
435
443
|
}
|
|
436
|
-
function
|
|
444
|
+
function Me(e) {
|
|
437
445
|
if (!Number.isFinite(e) || e < 0) return "0 B";
|
|
438
446
|
if (e < 1024) return `${e} B`;
|
|
439
447
|
const t = e / 1024;
|
|
@@ -441,7 +449,7 @@ function Se(e) {
|
|
|
441
449
|
const n = t / 1024;
|
|
442
450
|
return `${Number.isInteger(n) ? n : n.toFixed(1)} MB`;
|
|
443
451
|
}
|
|
444
|
-
const
|
|
452
|
+
const kt = {
|
|
445
453
|
png: "image/png",
|
|
446
454
|
jpg: "image/jpeg",
|
|
447
455
|
jpeg: "image/jpeg",
|
|
@@ -454,13 +462,13 @@ function Xe(e) {
|
|
|
454
462
|
const t = (e.type || "").trim().toLowerCase();
|
|
455
463
|
if (t) return t;
|
|
456
464
|
const n = ((r = e.name.split(".").pop()) == null ? void 0 : r.toLowerCase()) ?? "";
|
|
457
|
-
return
|
|
465
|
+
return kt[n] ?? "";
|
|
458
466
|
}
|
|
459
|
-
function
|
|
467
|
+
function Rt(e) {
|
|
460
468
|
return e.startsWith("image/");
|
|
461
469
|
}
|
|
462
470
|
function Et(e) {
|
|
463
|
-
if (
|
|
471
|
+
if (Rt(e.mediaType)) {
|
|
464
472
|
if (e.url)
|
|
465
473
|
try {
|
|
466
474
|
const t = new URL(e.url);
|
|
@@ -471,7 +479,7 @@ function Et(e) {
|
|
|
471
479
|
if (e.data) return `data:${e.mediaType};base64,${e.data}`;
|
|
472
480
|
}
|
|
473
481
|
}
|
|
474
|
-
function
|
|
482
|
+
function Ct(e, t, n) {
|
|
475
483
|
const r = [], o = [];
|
|
476
484
|
let s = Math.max(0, n.maxCount - t);
|
|
477
485
|
for (const a of e) {
|
|
@@ -480,7 +488,7 @@ function Rt(e, t, n) {
|
|
|
480
488
|
}
|
|
481
489
|
return { accepted: r, rejected: o };
|
|
482
490
|
}
|
|
483
|
-
function
|
|
491
|
+
function Nt(e) {
|
|
484
492
|
return new Promise((t, n) => {
|
|
485
493
|
const r = new FileReader();
|
|
486
494
|
r.onerror = () => n(r.error ?? new Error("Failed to read file")), r.onload = () => {
|
|
@@ -489,14 +497,14 @@ function At(e) {
|
|
|
489
497
|
}, r.readAsDataURL(e);
|
|
490
498
|
});
|
|
491
499
|
}
|
|
492
|
-
let
|
|
493
|
-
function
|
|
494
|
-
return
|
|
500
|
+
let Pe = 0;
|
|
501
|
+
function Mt() {
|
|
502
|
+
return Pe += 1, `att-${Date.now().toString(36)}-${Pe}`;
|
|
495
503
|
}
|
|
496
|
-
async function
|
|
497
|
-
const t = await
|
|
504
|
+
async function Lt(e) {
|
|
505
|
+
const t = await Nt(e);
|
|
498
506
|
return {
|
|
499
|
-
id:
|
|
507
|
+
id: Mt(),
|
|
500
508
|
name: e.name || "attachment",
|
|
501
509
|
mediaType: Xe(e),
|
|
502
510
|
size: e.size,
|
|
@@ -516,7 +524,7 @@ function et(e) {
|
|
|
516
524
|
} : t;
|
|
517
525
|
});
|
|
518
526
|
}
|
|
519
|
-
function
|
|
527
|
+
function Dt(e, t) {
|
|
520
528
|
if (!t || t.length === 0) return e;
|
|
521
529
|
const n = new Map(t.map((r) => [r.id, r]));
|
|
522
530
|
return e.map((r) => {
|
|
@@ -537,8 +545,8 @@ function Ct(e, t) {
|
|
|
537
545
|
} : r;
|
|
538
546
|
});
|
|
539
547
|
}
|
|
540
|
-
const
|
|
541
|
-
function
|
|
548
|
+
const It = 200, Ot = "claudius:messages", we = () => (/* @__PURE__ */ new Date()).toISOString();
|
|
549
|
+
function $t(e, t) {
|
|
542
550
|
let n;
|
|
543
551
|
try {
|
|
544
552
|
n = new URL(t).host;
|
|
@@ -547,15 +555,15 @@ function Dt(e, t) {
|
|
|
547
555
|
}
|
|
548
556
|
return `${e}:${n}`;
|
|
549
557
|
}
|
|
550
|
-
function
|
|
558
|
+
function Ie() {
|
|
551
559
|
try {
|
|
552
560
|
return typeof sessionStorage < "u" ? sessionStorage : null;
|
|
553
561
|
} catch {
|
|
554
562
|
return null;
|
|
555
563
|
}
|
|
556
564
|
}
|
|
557
|
-
function
|
|
558
|
-
const t =
|
|
565
|
+
function jt(e) {
|
|
566
|
+
const t = Ie();
|
|
559
567
|
if (!t) return [];
|
|
560
568
|
try {
|
|
561
569
|
const n = t.getItem(e);
|
|
@@ -566,45 +574,46 @@ function Lt(e) {
|
|
|
566
574
|
return [];
|
|
567
575
|
}
|
|
568
576
|
}
|
|
569
|
-
function
|
|
577
|
+
function Pt({
|
|
570
578
|
apiUrl: e,
|
|
571
579
|
persistMessages: t = !0,
|
|
572
|
-
storageKeyPrefix: n =
|
|
580
|
+
storageKeyPrefix: n = Ot,
|
|
573
581
|
timeoutMs: r,
|
|
574
582
|
translations: o,
|
|
575
583
|
plugins: s,
|
|
576
|
-
streaming: a = !0
|
|
584
|
+
streaming: a = !0,
|
|
585
|
+
citations: c = !1
|
|
577
586
|
}) {
|
|
578
|
-
const
|
|
579
|
-
() => new
|
|
580
|
-
[e, r]
|
|
581
|
-
),
|
|
587
|
+
const l = ae(
|
|
588
|
+
() => new wt(e, { debounceMs: 0, timeoutMs: r, citations: c }),
|
|
589
|
+
[e, r, c]
|
|
590
|
+
), u = $t(n, e), f = t ? jt(u) : [], [T, A] = M(f), [m, h] = M(!1), [d, k] = M(!1), [b, x] = M(
|
|
582
591
|
null
|
|
583
|
-
), [
|
|
584
|
-
|
|
585
|
-
const
|
|
586
|
-
(
|
|
592
|
+
), [y, w] = M(null), [D, S] = M(!1), N = C(f.length), I = C(!1), R = C(f), ne = C(null), $ = C(s ?? []);
|
|
593
|
+
$.current = s ?? [];
|
|
594
|
+
const z = O(
|
|
595
|
+
(E) => {
|
|
587
596
|
if (!t) return;
|
|
588
|
-
const
|
|
589
|
-
if (
|
|
597
|
+
const B = Ie();
|
|
598
|
+
if (B)
|
|
590
599
|
try {
|
|
591
|
-
const
|
|
592
|
-
|
|
600
|
+
const P = et(E.slice(-It));
|
|
601
|
+
B.setItem(u, JSON.stringify(P));
|
|
593
602
|
} catch {
|
|
594
603
|
}
|
|
595
604
|
},
|
|
596
|
-
[t,
|
|
597
|
-
),
|
|
598
|
-
(
|
|
605
|
+
[t, u]
|
|
606
|
+
), X = () => (N.current += 1, `msg-${N.current}`), Z = O(
|
|
607
|
+
(E, B) => {
|
|
599
608
|
if (!o)
|
|
600
|
-
return
|
|
601
|
-
switch (
|
|
609
|
+
return B ?? "Something went wrong. Please try again.";
|
|
610
|
+
switch (E) {
|
|
602
611
|
case "TIMEOUT":
|
|
603
612
|
return o.errorTimeout;
|
|
604
613
|
case "NETWORK_ERROR":
|
|
605
614
|
return o.errorConnection;
|
|
606
615
|
case "RATE_LIMITED":
|
|
607
|
-
return
|
|
616
|
+
return B != null && B.includes("minute") ? o.errorRateLimitMinute : o.errorRateLimitHour;
|
|
608
617
|
case "ATTACHMENT_QUOTA_EXCEEDED":
|
|
609
618
|
return o.errorAttachmentQuota;
|
|
610
619
|
case "ATTACHMENTS_DISABLED":
|
|
@@ -616,199 +625,204 @@ function It({
|
|
|
616
625
|
case "SERVICE_ERROR":
|
|
617
626
|
case "UNKNOWN_ERROR":
|
|
618
627
|
default:
|
|
619
|
-
return
|
|
628
|
+
return B ?? o.errorGeneric;
|
|
620
629
|
}
|
|
621
630
|
},
|
|
622
631
|
[o]
|
|
623
|
-
), J =
|
|
624
|
-
async (
|
|
625
|
-
var
|
|
626
|
-
|
|
627
|
-
const
|
|
628
|
-
let
|
|
629
|
-
const
|
|
630
|
-
if (
|
|
631
|
-
|
|
632
|
-
const
|
|
633
|
-
...
|
|
632
|
+
), J = O((E) => !(E instanceof Q) || E.code === "TIMEOUT" || E.code === "NETWORK_ERROR" || E.code === "RATE_LIMITED" || E.code === "SERVICE_ERROR" || E.code === "UNKNOWN_ERROR" || E.status >= 500 || E.status === 0, []), W = O(
|
|
633
|
+
async (E) => {
|
|
634
|
+
var F, ee, te;
|
|
635
|
+
h(!0), I.current = !0, w(null), S(!1);
|
|
636
|
+
const B = a && typeof l.streamMessage == "function";
|
|
637
|
+
let P = null, v;
|
|
638
|
+
const V = () => c ? v : void 0, K = (L) => {
|
|
639
|
+
if (P === null) {
|
|
640
|
+
P = X(), x(P);
|
|
641
|
+
const _ = [
|
|
642
|
+
...R.current,
|
|
634
643
|
{
|
|
635
|
-
id:
|
|
644
|
+
id: P,
|
|
636
645
|
role: "assistant",
|
|
637
646
|
content: "",
|
|
638
|
-
createdAt:
|
|
639
|
-
...
|
|
647
|
+
createdAt: we(),
|
|
648
|
+
...V() ? { sources: v } : {},
|
|
649
|
+
...L
|
|
640
650
|
}
|
|
641
651
|
];
|
|
642
|
-
|
|
652
|
+
R.current = _, A(_);
|
|
643
653
|
} else {
|
|
644
|
-
const
|
|
645
|
-
(
|
|
654
|
+
const _ = P, U = R.current.map(
|
|
655
|
+
(Y) => Y.id === _ ? { ...Y, ...L } : Y
|
|
646
656
|
);
|
|
647
|
-
|
|
657
|
+
R.current = U, A(U);
|
|
648
658
|
}
|
|
649
|
-
},
|
|
650
|
-
if (
|
|
651
|
-
const
|
|
652
|
-
|
|
659
|
+
}, oe = () => {
|
|
660
|
+
if (P === null) return;
|
|
661
|
+
const L = P, _ = R.current.filter((U) => U.id !== L);
|
|
662
|
+
R.current = _, A(_);
|
|
653
663
|
};
|
|
654
664
|
try {
|
|
655
|
-
let
|
|
656
|
-
if (
|
|
657
|
-
const
|
|
658
|
-
|
|
659
|
-
const
|
|
660
|
-
signal:
|
|
661
|
-
onChunk: (
|
|
662
|
-
onToolUse: (
|
|
665
|
+
let L, _, U, Y, se = !1;
|
|
666
|
+
if (B) {
|
|
667
|
+
const q = new AbortController();
|
|
668
|
+
ne.current = q, k(!0);
|
|
669
|
+
const ie = await l.streamMessage(E, {
|
|
670
|
+
signal: q.signal,
|
|
671
|
+
onChunk: (he, p) => K({ content: p }),
|
|
672
|
+
onToolUse: (he, p) => K({ toolUses: [...p] }),
|
|
673
|
+
onSources: (he) => {
|
|
674
|
+
v = he, c && P !== null && K({ sources: he });
|
|
675
|
+
}
|
|
663
676
|
});
|
|
664
|
-
|
|
677
|
+
L = ie.reply, _ = ie.sources ?? v, U = ie.toolUses, Y = ie.attachments, se = ie.aborted ?? !1;
|
|
665
678
|
} else {
|
|
666
|
-
const
|
|
667
|
-
|
|
679
|
+
const q = await l.sendMessage(E);
|
|
680
|
+
L = q.reply, _ = q.sources, U = q.toolUses, Y = q.attachments;
|
|
668
681
|
}
|
|
669
|
-
if (
|
|
670
|
-
|
|
682
|
+
if (se && !L) {
|
|
683
|
+
oe();
|
|
671
684
|
return;
|
|
672
685
|
}
|
|
673
|
-
const le = ((
|
|
674
|
-
let
|
|
675
|
-
id:
|
|
686
|
+
const le = ((F = R.current.find((q) => q.id === P)) == null ? void 0 : F.createdAt) ?? we();
|
|
687
|
+
let re = {
|
|
688
|
+
id: P ?? X(),
|
|
676
689
|
role: "assistant",
|
|
677
|
-
content:
|
|
690
|
+
content: L,
|
|
678
691
|
createdAt: le,
|
|
679
|
-
sources:
|
|
680
|
-
toolUses:
|
|
692
|
+
sources: _,
|
|
693
|
+
toolUses: U
|
|
681
694
|
};
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
{ messages:
|
|
686
|
-
),
|
|
687
|
-
const
|
|
688
|
-
(
|
|
689
|
-
) : [...
|
|
690
|
-
|
|
691
|
-
} catch (
|
|
692
|
-
if (
|
|
693
|
-
if (
|
|
694
|
-
const
|
|
695
|
-
if (
|
|
696
|
-
const
|
|
697
|
-
|
|
695
|
+
$.current.length > 0 && !se && (re = await St(
|
|
696
|
+
$.current,
|
|
697
|
+
re,
|
|
698
|
+
{ messages: E, apiUrl: e }
|
|
699
|
+
), re.createdAt || (re = { ...re, createdAt: le }));
|
|
700
|
+
const ye = P !== null ? R.current.map(
|
|
701
|
+
(q) => q.id === re.id ? re : q
|
|
702
|
+
) : [...E, re], me = Dt(ye, Y);
|
|
703
|
+
R.current = me, A(me), z(me);
|
|
704
|
+
} catch (L) {
|
|
705
|
+
if (L instanceof De) return;
|
|
706
|
+
if (L instanceof Q && ((ee = L.code) != null && ee.startsWith("ATTACHMENT")) && E.length > 0) {
|
|
707
|
+
const _ = E[E.length - 1];
|
|
708
|
+
if (_.role === "user" && ((te = _.attachments) != null && te.length)) {
|
|
709
|
+
const U = E.slice(0, -1);
|
|
710
|
+
R.current = U, A(U), z(U);
|
|
698
711
|
}
|
|
699
712
|
}
|
|
700
|
-
if (
|
|
701
|
-
|
|
713
|
+
if (P !== null) {
|
|
714
|
+
z(R.current), L instanceof Q ? w(Z(L.code, L.message)) : w(
|
|
702
715
|
(o == null ? void 0 : o.errorConnection) ?? "Failed to connect. Please try again."
|
|
703
|
-
),
|
|
716
|
+
), S(!1);
|
|
704
717
|
return;
|
|
705
718
|
}
|
|
706
|
-
if (
|
|
707
|
-
const
|
|
708
|
-
messages:
|
|
719
|
+
if ($.current.length > 0) {
|
|
720
|
+
const _ = L instanceof Error ? L : new Error(String(L)), U = await Tt($.current, _, {
|
|
721
|
+
messages: E,
|
|
709
722
|
apiUrl: e
|
|
710
723
|
});
|
|
711
|
-
if (
|
|
712
|
-
const
|
|
713
|
-
id:
|
|
724
|
+
if (U) {
|
|
725
|
+
const Y = {
|
|
726
|
+
id: X(),
|
|
714
727
|
role: "assistant",
|
|
715
|
-
content:
|
|
716
|
-
createdAt:
|
|
717
|
-
sources:
|
|
718
|
-
},
|
|
719
|
-
|
|
728
|
+
content: U.content,
|
|
729
|
+
createdAt: we(),
|
|
730
|
+
sources: U.sources
|
|
731
|
+
}, se = [...E, Y];
|
|
732
|
+
R.current = se, A(se), z(se), w(null), S(!1);
|
|
720
733
|
return;
|
|
721
734
|
}
|
|
722
735
|
}
|
|
723
|
-
|
|
736
|
+
L instanceof Q ? w(Z(L.code, L.message)) : w(
|
|
724
737
|
(o == null ? void 0 : o.errorConnection) ?? "Failed to connect. Please try again."
|
|
725
|
-
),
|
|
738
|
+
), S(J(L));
|
|
726
739
|
} finally {
|
|
727
|
-
|
|
740
|
+
h(!1), I.current = !1, k(!1), x(null), ne.current = null;
|
|
728
741
|
}
|
|
729
742
|
},
|
|
730
743
|
[
|
|
731
744
|
e,
|
|
732
745
|
c,
|
|
733
|
-
|
|
746
|
+
l,
|
|
747
|
+
Z,
|
|
734
748
|
J,
|
|
735
|
-
|
|
749
|
+
z,
|
|
736
750
|
a,
|
|
737
751
|
o
|
|
738
752
|
]
|
|
739
|
-
),
|
|
740
|
-
var
|
|
741
|
-
(
|
|
742
|
-
}, []),
|
|
743
|
-
async (
|
|
744
|
-
const
|
|
745
|
-
if (!
|
|
746
|
-
const
|
|
747
|
-
id:
|
|
753
|
+
), G = O(() => {
|
|
754
|
+
var E;
|
|
755
|
+
(E = ne.current) == null || E.abort();
|
|
756
|
+
}, []), ce = O(
|
|
757
|
+
async (E, B) => {
|
|
758
|
+
const P = E.trim(), v = (B == null ? void 0 : B.filter((F) => F && F.id)) ?? [];
|
|
759
|
+
if (!P && v.length === 0 || I.current) return;
|
|
760
|
+
const V = {
|
|
761
|
+
id: X(),
|
|
748
762
|
role: "user",
|
|
749
|
-
content:
|
|
750
|
-
createdAt:
|
|
751
|
-
...
|
|
763
|
+
content: P,
|
|
764
|
+
createdAt: we(),
|
|
765
|
+
...v.length > 0 ? { attachments: v } : {}
|
|
752
766
|
};
|
|
753
|
-
let
|
|
754
|
-
if (
|
|
755
|
-
const
|
|
756
|
-
messages:
|
|
767
|
+
let K = V;
|
|
768
|
+
if ($.current.length > 0) {
|
|
769
|
+
const F = await vt($.current, V, {
|
|
770
|
+
messages: R.current,
|
|
757
771
|
apiUrl: e
|
|
758
772
|
});
|
|
759
|
-
if (
|
|
760
|
-
const
|
|
761
|
-
if (
|
|
762
|
-
const
|
|
763
|
-
id:
|
|
773
|
+
if (F.type === "abort") return;
|
|
774
|
+
const ee = (te) => te.createdAt ? te : { ...te, createdAt: V.createdAt };
|
|
775
|
+
if (F.type === "respond") {
|
|
776
|
+
const te = {
|
|
777
|
+
id: X(),
|
|
764
778
|
role: "assistant",
|
|
765
|
-
content:
|
|
766
|
-
createdAt:
|
|
767
|
-
sources:
|
|
768
|
-
},
|
|
769
|
-
...
|
|
770
|
-
|
|
771
|
-
|
|
779
|
+
content: F.reply.content,
|
|
780
|
+
createdAt: we(),
|
|
781
|
+
sources: F.reply.sources
|
|
782
|
+
}, L = [
|
|
783
|
+
...R.current,
|
|
784
|
+
ee(F.message),
|
|
785
|
+
te
|
|
772
786
|
];
|
|
773
|
-
|
|
787
|
+
R.current = L, A(L), z(L), w(null), S(!1);
|
|
774
788
|
return;
|
|
775
789
|
}
|
|
776
|
-
|
|
790
|
+
K = ee(F.message);
|
|
777
791
|
}
|
|
778
|
-
const
|
|
779
|
-
|
|
792
|
+
const oe = [...R.current, K];
|
|
793
|
+
R.current = oe, A(oe), z(oe), await W(oe);
|
|
780
794
|
},
|
|
781
|
-
[e,
|
|
782
|
-
),
|
|
783
|
-
if (
|
|
784
|
-
const
|
|
785
|
-
!
|
|
786
|
-
}, [
|
|
787
|
-
if (
|
|
788
|
-
const
|
|
789
|
-
if (!
|
|
795
|
+
[e, z, W]
|
|
796
|
+
), de = O(async () => {
|
|
797
|
+
if (I.current) return;
|
|
798
|
+
const E = R.current[R.current.length - 1];
|
|
799
|
+
!E || E.role !== "user" || await W(R.current);
|
|
800
|
+
}, [W]), fe = O(() => {
|
|
801
|
+
if (R.current = [], A([]), w(null), S(!1), t) {
|
|
802
|
+
const E = Ie();
|
|
803
|
+
if (!E) return;
|
|
790
804
|
try {
|
|
791
|
-
|
|
805
|
+
E.removeItem(u);
|
|
792
806
|
} catch {
|
|
793
807
|
}
|
|
794
808
|
}
|
|
795
|
-
}, [t,
|
|
809
|
+
}, [t, u]);
|
|
796
810
|
return {
|
|
797
|
-
messages:
|
|
798
|
-
isLoading:
|
|
799
|
-
isStreaming:
|
|
800
|
-
streamingMessageId:
|
|
801
|
-
error:
|
|
802
|
-
canRetry:
|
|
803
|
-
sendMessage:
|
|
804
|
-
stop:
|
|
805
|
-
retry:
|
|
806
|
-
clearMessages:
|
|
811
|
+
messages: T,
|
|
812
|
+
isLoading: m,
|
|
813
|
+
isStreaming: d,
|
|
814
|
+
streamingMessageId: b,
|
|
815
|
+
error: y,
|
|
816
|
+
canRetry: D,
|
|
817
|
+
sendMessage: ce,
|
|
818
|
+
stop: G,
|
|
819
|
+
retry: de,
|
|
820
|
+
clearMessages: fe
|
|
807
821
|
};
|
|
808
822
|
}
|
|
809
|
-
function
|
|
810
|
-
const [t, n] =
|
|
811
|
-
return
|
|
823
|
+
function Ut(e) {
|
|
824
|
+
const [t, n] = M(() => typeof window > "u" ? !1 : window.matchMedia(e).matches);
|
|
825
|
+
return H(() => {
|
|
812
826
|
const r = window.matchMedia(e);
|
|
813
827
|
n(r.matches);
|
|
814
828
|
const o = (s) => n(s.matches);
|
|
@@ -818,17 +832,17 @@ function Ot(e) {
|
|
|
818
832
|
function Ee(e, t) {
|
|
819
833
|
return e instanceof RegExp ? e.test(t) : t.toLowerCase().includes(e.toLowerCase());
|
|
820
834
|
}
|
|
821
|
-
function
|
|
835
|
+
function Bt() {
|
|
822
836
|
const e = document.documentElement, t = document.body, n = e.scrollTop || t.scrollTop || 0, r = Math.max(e.scrollHeight, t.scrollHeight), o = e.clientHeight || window.innerHeight, s = r - o;
|
|
823
837
|
return s <= 0 ? 100 : n / s * 100;
|
|
824
838
|
}
|
|
825
|
-
function
|
|
839
|
+
function Ft({
|
|
826
840
|
triggers: e,
|
|
827
841
|
enabled: t,
|
|
828
842
|
onOpen: n,
|
|
829
843
|
onGreeting: r
|
|
830
844
|
}) {
|
|
831
|
-
|
|
845
|
+
H(() => {
|
|
832
846
|
if (!t || !e || e.length === 0) return;
|
|
833
847
|
const o = /* @__PURE__ */ new Set(), s = [], a = typeof window < "u" ? window.location.href : "", c = (l, u) => {
|
|
834
848
|
o.has(l) || (o.add(l), u === "open" ? n() : r(u.greeting));
|
|
@@ -842,30 +856,30 @@ function $t({
|
|
|
842
856
|
case "time": {
|
|
843
857
|
if (l.matchUrl && !Ee(l.matchUrl, a))
|
|
844
858
|
return;
|
|
845
|
-
const
|
|
859
|
+
const f = window.setTimeout(
|
|
846
860
|
() => c(u, l.action),
|
|
847
861
|
Math.max(0, l.seconds * 1e3)
|
|
848
862
|
);
|
|
849
|
-
s.push(() => window.clearTimeout(
|
|
863
|
+
s.push(() => window.clearTimeout(f));
|
|
850
864
|
break;
|
|
851
865
|
}
|
|
852
866
|
case "scroll": {
|
|
853
867
|
if (l.matchUrl && !Ee(l.matchUrl, a))
|
|
854
868
|
return;
|
|
855
|
-
const
|
|
856
|
-
|
|
869
|
+
const f = () => {
|
|
870
|
+
Bt() >= l.percent && c(u, l.action);
|
|
857
871
|
};
|
|
858
|
-
|
|
872
|
+
f(), window.addEventListener("scroll", f, { passive: !0 }), s.push(() => window.removeEventListener("scroll", f));
|
|
859
873
|
break;
|
|
860
874
|
}
|
|
861
875
|
case "exit-intent": {
|
|
862
876
|
if (l.matchUrl && !Ee(l.matchUrl, a))
|
|
863
877
|
return;
|
|
864
|
-
const
|
|
865
|
-
|
|
878
|
+
const f = (T) => {
|
|
879
|
+
T.clientY <= 0 && c(u, l.action);
|
|
866
880
|
};
|
|
867
|
-
document.addEventListener("mouseleave",
|
|
868
|
-
() => document.removeEventListener("mouseleave",
|
|
881
|
+
document.addEventListener("mouseleave", f), s.push(
|
|
882
|
+
() => document.removeEventListener("mouseleave", f)
|
|
869
883
|
);
|
|
870
884
|
break;
|
|
871
885
|
}
|
|
@@ -875,12 +889,12 @@ function $t({
|
|
|
875
889
|
};
|
|
876
890
|
}, [e, t, n, r]);
|
|
877
891
|
}
|
|
878
|
-
const
|
|
892
|
+
const _t = {
|
|
879
893
|
"bottom-right": "bottom-6 right-6",
|
|
880
894
|
"bottom-left": "bottom-6 left-6",
|
|
881
895
|
"top-right": "top-6 right-6",
|
|
882
896
|
"top-left": "top-6 left-6"
|
|
883
|
-
},
|
|
897
|
+
}, Ht = Oe(function({ isOpen: t, onClick: n, position: r = "bottom-right", translations: o }, s) {
|
|
884
898
|
const a = t ? (o == null ? void 0 : o.closeChat) ?? "Close chat" : (o == null ? void 0 : o.openChat) ?? "Open chat";
|
|
885
899
|
return /* @__PURE__ */ i(
|
|
886
900
|
"button",
|
|
@@ -888,8 +902,8 @@ const Pt = {
|
|
|
888
902
|
ref: s,
|
|
889
903
|
onClick: n,
|
|
890
904
|
"aria-label": a,
|
|
891
|
-
className: `fixed ${
|
|
892
|
-
children: t ? /* @__PURE__ */
|
|
905
|
+
className: `fixed ${_t[r]} z-50 flex h-14 w-14 items-center justify-center rounded-claudius-full bg-claudius-accent text-claudius-accent-text shadow-claudius-floating transition-transform hover:scale-105 focus:outline-none focus:ring-2 focus:ring-claudius-accent focus:ring-offset-2`,
|
|
906
|
+
children: t ? /* @__PURE__ */ g(
|
|
893
907
|
"svg",
|
|
894
908
|
{
|
|
895
909
|
width: "24",
|
|
@@ -923,12 +937,12 @@ const Pt = {
|
|
|
923
937
|
)
|
|
924
938
|
}
|
|
925
939
|
);
|
|
926
|
-
}),
|
|
940
|
+
}), zt = Ae(function({
|
|
927
941
|
count: t,
|
|
928
942
|
isActive: n,
|
|
929
943
|
onClick: r
|
|
930
944
|
}) {
|
|
931
|
-
return /* @__PURE__ */
|
|
945
|
+
return /* @__PURE__ */ g(
|
|
932
946
|
"button",
|
|
933
947
|
{
|
|
934
948
|
onClick: r,
|
|
@@ -936,7 +950,7 @@ const Pt = {
|
|
|
936
950
|
title: "View sources",
|
|
937
951
|
className: `group relative flex h-7 w-7 items-center justify-center rounded-claudius-full transition-colors ${n ? "bg-claudius-accent text-claudius-accent-text" : "text-claudius-text-muted hover:bg-claudius-surface-muted hover:text-claudius-text"}`,
|
|
938
952
|
children: [
|
|
939
|
-
/* @__PURE__ */
|
|
953
|
+
/* @__PURE__ */ g(
|
|
940
954
|
"svg",
|
|
941
955
|
{
|
|
942
956
|
width: "14",
|
|
@@ -960,8 +974,8 @@ const Pt = {
|
|
|
960
974
|
]
|
|
961
975
|
}
|
|
962
976
|
);
|
|
963
|
-
}),
|
|
964
|
-
function
|
|
977
|
+
}), Wt = ["http:", "https:"];
|
|
978
|
+
function ke(e) {
|
|
965
979
|
if (!e || typeof e != "string")
|
|
966
980
|
return null;
|
|
967
981
|
const t = e.trim();
|
|
@@ -969,13 +983,290 @@ function Ce(e) {
|
|
|
969
983
|
return null;
|
|
970
984
|
try {
|
|
971
985
|
const n = new URL(t);
|
|
972
|
-
return
|
|
986
|
+
return Wt.includes(n.protocol) ? t : null;
|
|
973
987
|
} catch {
|
|
974
988
|
return null;
|
|
975
989
|
}
|
|
976
990
|
}
|
|
977
|
-
function
|
|
978
|
-
return
|
|
991
|
+
function ge(e, t) {
|
|
992
|
+
return e.replace(
|
|
993
|
+
/\{(\w+)\}/g,
|
|
994
|
+
(n, r) => r in t ? String(t[r]) : n
|
|
995
|
+
);
|
|
996
|
+
}
|
|
997
|
+
const Gt = {
|
|
998
|
+
maxSources: 5,
|
|
999
|
+
favicons: !0
|
|
1000
|
+
};
|
|
1001
|
+
function Vt(e) {
|
|
1002
|
+
const t = typeof e == "object" && e !== null && !Array.isArray(e);
|
|
1003
|
+
if (e !== !0 && !t) return null;
|
|
1004
|
+
const n = e === !0 ? {} : e, r = n.maxSources;
|
|
1005
|
+
return {
|
|
1006
|
+
maxSources: typeof r == "number" && Number.isInteger(r) && r >= 1 ? r : Gt.maxSources,
|
|
1007
|
+
favicons: n.favicons !== !1
|
|
1008
|
+
};
|
|
1009
|
+
}
|
|
1010
|
+
const Kt = /\[([1-9]\d{0,2}(?:\s*,\s*[1-9]\d{0,2})*)\]/g;
|
|
1011
|
+
function tt(e, t) {
|
|
1012
|
+
if (!e) return [];
|
|
1013
|
+
if (t <= 0 || !e.includes("["))
|
|
1014
|
+
return [{ type: "text", value: e }];
|
|
1015
|
+
const n = [];
|
|
1016
|
+
let r = 0;
|
|
1017
|
+
for (const o of e.matchAll(Kt)) {
|
|
1018
|
+
const s = o[1].split(",").map((c) => Number(c.trim()));
|
|
1019
|
+
if (s.some((c) => c > t)) continue;
|
|
1020
|
+
const a = o.index ?? 0;
|
|
1021
|
+
a > r && n.push({ type: "text", value: e.slice(r, a) }), n.push({
|
|
1022
|
+
type: "cite",
|
|
1023
|
+
indexes: [...new Set(s)].map((c) => c - 1),
|
|
1024
|
+
raw: o[0]
|
|
1025
|
+
}), r = a + o[0].length;
|
|
1026
|
+
}
|
|
1027
|
+
return r < e.length && n.push({ type: "text", value: e.slice(r) }), n;
|
|
1028
|
+
}
|
|
1029
|
+
function Yt(e, t) {
|
|
1030
|
+
let n = "";
|
|
1031
|
+
for (const r of tt(e, t))
|
|
1032
|
+
r.type === "text" ? n += r.value : n = n.replace(/[ \t]+$/, "");
|
|
1033
|
+
return n;
|
|
1034
|
+
}
|
|
1035
|
+
function qt(e) {
|
|
1036
|
+
return e.replace(/[ \t]?\[[\d,\s]*$/, "");
|
|
1037
|
+
}
|
|
1038
|
+
const Zt = 200;
|
|
1039
|
+
function Jt(e, t = Zt) {
|
|
1040
|
+
const n = e.replace(/\s+/g, " ").trim();
|
|
1041
|
+
if (n.length <= t) return n;
|
|
1042
|
+
const r = n.slice(0, t), o = r.lastIndexOf(" ");
|
|
1043
|
+
return `${(o > 0 ? r.slice(0, o) : r).replace(
|
|
1044
|
+
/[\s,;:]+$/,
|
|
1045
|
+
""
|
|
1046
|
+
)}…`;
|
|
1047
|
+
}
|
|
1048
|
+
function Qt(e) {
|
|
1049
|
+
try {
|
|
1050
|
+
const t = new URL(e);
|
|
1051
|
+
return t.protocol !== "http:" && t.protocol !== "https:" ? null : `${t.origin}/favicon.ico`;
|
|
1052
|
+
} catch {
|
|
1053
|
+
return null;
|
|
1054
|
+
}
|
|
1055
|
+
}
|
|
1056
|
+
function Xt(e) {
|
|
1057
|
+
try {
|
|
1058
|
+
return new URL(e).hostname;
|
|
1059
|
+
} catch {
|
|
1060
|
+
return e;
|
|
1061
|
+
}
|
|
1062
|
+
}
|
|
1063
|
+
const en = 1500;
|
|
1064
|
+
function tn() {
|
|
1065
|
+
return typeof window < "u" && typeof window.matchMedia == "function" ? window.matchMedia("(prefers-reduced-motion: reduce)").matches : !1;
|
|
1066
|
+
}
|
|
1067
|
+
const nt = "flex h-4 min-w-4 shrink-0 items-center justify-center rounded-claudius-full bg-claudius-accent px-1 text-[10px] font-bold leading-none text-claudius-accent-text", nn = Oe(
|
|
1068
|
+
function({ source: t, number: n, favicons: r, labels: o, highlighted: s }, a) {
|
|
1069
|
+
const c = ke(t.url), [l, u] = M(!1), f = r && c ? Qt(c) : null, T = t.snippet ? Jt(t.snippet) : "";
|
|
1070
|
+
return /* @__PURE__ */ g(
|
|
1071
|
+
"li",
|
|
1072
|
+
{
|
|
1073
|
+
ref: a,
|
|
1074
|
+
tabIndex: -1,
|
|
1075
|
+
"data-highlight": s || void 0,
|
|
1076
|
+
className: `flex gap-2 rounded-claudius-md border bg-claudius-surface-muted p-2 focus:outline-none focus-visible:ring-2 focus-visible:ring-claudius-accent ${s ? "border-claudius-accent ring-2 ring-claudius-accent" : "border-claudius-border"}`,
|
|
1077
|
+
children: [
|
|
1078
|
+
/* @__PURE__ */ i("span", { "aria-hidden": "true", className: `mt-0.5 ${nt}`, children: n }),
|
|
1079
|
+
/* @__PURE__ */ g("div", { className: "min-w-0 flex-1", children: [
|
|
1080
|
+
/* @__PURE__ */ g("div", { className: "flex items-center gap-1.5", children: [
|
|
1081
|
+
f && !l ? /* @__PURE__ */ i(
|
|
1082
|
+
"img",
|
|
1083
|
+
{
|
|
1084
|
+
src: f,
|
|
1085
|
+
alt: "",
|
|
1086
|
+
width: 14,
|
|
1087
|
+
height: 14,
|
|
1088
|
+
loading: "lazy",
|
|
1089
|
+
decoding: "async",
|
|
1090
|
+
referrerPolicy: "no-referrer",
|
|
1091
|
+
onError: () => u(!0),
|
|
1092
|
+
className: "h-3.5 w-3.5 shrink-0 rounded-sm"
|
|
1093
|
+
}
|
|
1094
|
+
) : /* @__PURE__ */ g(
|
|
1095
|
+
"svg",
|
|
1096
|
+
{
|
|
1097
|
+
width: "14",
|
|
1098
|
+
height: "14",
|
|
1099
|
+
viewBox: "0 0 24 24",
|
|
1100
|
+
fill: "none",
|
|
1101
|
+
stroke: "currentColor",
|
|
1102
|
+
strokeWidth: "2",
|
|
1103
|
+
strokeLinecap: "round",
|
|
1104
|
+
strokeLinejoin: "round",
|
|
1105
|
+
"aria-hidden": "true",
|
|
1106
|
+
className: "shrink-0",
|
|
1107
|
+
children: [
|
|
1108
|
+
/* @__PURE__ */ i("circle", { cx: "12", cy: "12", r: "10" }),
|
|
1109
|
+
/* @__PURE__ */ i("path", { d: "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20" }),
|
|
1110
|
+
/* @__PURE__ */ i("path", { d: "M2 12h20" })
|
|
1111
|
+
]
|
|
1112
|
+
}
|
|
1113
|
+
),
|
|
1114
|
+
c ? /* @__PURE__ */ g(
|
|
1115
|
+
"a",
|
|
1116
|
+
{
|
|
1117
|
+
href: c,
|
|
1118
|
+
target: "_blank",
|
|
1119
|
+
rel: "noopener noreferrer",
|
|
1120
|
+
className: "truncate font-medium text-claudius-text hover:underline",
|
|
1121
|
+
children: [
|
|
1122
|
+
t.title,
|
|
1123
|
+
/* @__PURE__ */ g("span", { className: "sr-only", children: [
|
|
1124
|
+
" ",
|
|
1125
|
+
o.opensInNewTab
|
|
1126
|
+
] })
|
|
1127
|
+
]
|
|
1128
|
+
}
|
|
1129
|
+
) : /* @__PURE__ */ i("span", { className: "truncate font-medium text-claudius-text", children: t.title }),
|
|
1130
|
+
c && /* @__PURE__ */ g(
|
|
1131
|
+
"svg",
|
|
1132
|
+
{
|
|
1133
|
+
width: "12",
|
|
1134
|
+
height: "12",
|
|
1135
|
+
viewBox: "0 0 24 24",
|
|
1136
|
+
fill: "none",
|
|
1137
|
+
stroke: "currentColor",
|
|
1138
|
+
strokeWidth: "2",
|
|
1139
|
+
strokeLinecap: "round",
|
|
1140
|
+
strokeLinejoin: "round",
|
|
1141
|
+
"aria-hidden": "true",
|
|
1142
|
+
className: "shrink-0",
|
|
1143
|
+
children: [
|
|
1144
|
+
/* @__PURE__ */ i("path", { d: "M15 3h6v6" }),
|
|
1145
|
+
/* @__PURE__ */ i("path", { d: "M10 14 21 3" }),
|
|
1146
|
+
/* @__PURE__ */ i("path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" })
|
|
1147
|
+
]
|
|
1148
|
+
}
|
|
1149
|
+
)
|
|
1150
|
+
] }),
|
|
1151
|
+
T && /* @__PURE__ */ i("p", { className: "mt-0.5 break-words", children: T }),
|
|
1152
|
+
c && /* @__PURE__ */ i("p", { className: "mt-0.5 truncate", children: Xt(c) })
|
|
1153
|
+
] })
|
|
1154
|
+
]
|
|
1155
|
+
}
|
|
1156
|
+
);
|
|
1157
|
+
}
|
|
1158
|
+
), rn = Ae(function({
|
|
1159
|
+
sources: t,
|
|
1160
|
+
maxSources: n,
|
|
1161
|
+
favicons: r,
|
|
1162
|
+
labels: o,
|
|
1163
|
+
reveal: s = null
|
|
1164
|
+
}) {
|
|
1165
|
+
const a = Ne(), [c, l] = M(!1), [u, f] = M(!1), [T, A] = M(null), [m, h] = M(null), d = C(/* @__PURE__ */ new Map()), k = C(n);
|
|
1166
|
+
k.current = n, H(() => {
|
|
1167
|
+
s && (A(s), l(!0), s.index >= k.current && f(!0));
|
|
1168
|
+
}, [s]), H(() => {
|
|
1169
|
+
if (!T) return;
|
|
1170
|
+
const y = d.current.get(T.index);
|
|
1171
|
+
y && (typeof y.scrollIntoView == "function" && y.scrollIntoView({
|
|
1172
|
+
block: "nearest",
|
|
1173
|
+
behavior: tn() ? "auto" : "smooth"
|
|
1174
|
+
}), y.focus({ preventScroll: !0 }), h(T), A(null));
|
|
1175
|
+
}, [T]), H(() => {
|
|
1176
|
+
if (!m) return;
|
|
1177
|
+
const y = setTimeout(() => h(null), en);
|
|
1178
|
+
return () => clearTimeout(y);
|
|
1179
|
+
}, [m]);
|
|
1180
|
+
const b = t.length, x = u ? t : t.slice(0, n);
|
|
1181
|
+
return /* @__PURE__ */ g("div", { className: "mt-1 text-xs text-claudius-text-muted", children: [
|
|
1182
|
+
/* @__PURE__ */ g(
|
|
1183
|
+
"button",
|
|
1184
|
+
{
|
|
1185
|
+
type: "button",
|
|
1186
|
+
onClick: () => l((y) => !y),
|
|
1187
|
+
"aria-expanded": c,
|
|
1188
|
+
"aria-controls": c ? a : void 0,
|
|
1189
|
+
className: "flex items-center gap-1.5 rounded-claudius-full border border-claudius-border bg-claudius-surface px-2 py-0.5 hover:opacity-80 focus:outline-none focus-visible:ring-2 focus-visible:ring-claudius-accent",
|
|
1190
|
+
children: [
|
|
1191
|
+
/* @__PURE__ */ g(
|
|
1192
|
+
"svg",
|
|
1193
|
+
{
|
|
1194
|
+
width: "11",
|
|
1195
|
+
height: "11",
|
|
1196
|
+
viewBox: "0 0 24 24",
|
|
1197
|
+
fill: "none",
|
|
1198
|
+
stroke: "currentColor",
|
|
1199
|
+
strokeWidth: "2",
|
|
1200
|
+
strokeLinecap: "round",
|
|
1201
|
+
strokeLinejoin: "round",
|
|
1202
|
+
"aria-hidden": "true",
|
|
1203
|
+
children: [
|
|
1204
|
+
/* @__PURE__ */ i("path", { d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" }),
|
|
1205
|
+
/* @__PURE__ */ i("polyline", { points: "14 2 14 8 20 8" }),
|
|
1206
|
+
/* @__PURE__ */ i("line", { x1: "16", y1: "13", x2: "8", y2: "13" }),
|
|
1207
|
+
/* @__PURE__ */ i("line", { x1: "16", y1: "17", x2: "8", y2: "17" })
|
|
1208
|
+
]
|
|
1209
|
+
}
|
|
1210
|
+
),
|
|
1211
|
+
/* @__PURE__ */ i("span", { children: o.sources }),
|
|
1212
|
+
/* @__PURE__ */ i("span", { className: nt, children: b }),
|
|
1213
|
+
/* @__PURE__ */ i(
|
|
1214
|
+
"svg",
|
|
1215
|
+
{
|
|
1216
|
+
width: "10",
|
|
1217
|
+
height: "10",
|
|
1218
|
+
viewBox: "0 0 24 24",
|
|
1219
|
+
fill: "none",
|
|
1220
|
+
stroke: "currentColor",
|
|
1221
|
+
strokeWidth: "2",
|
|
1222
|
+
strokeLinecap: "round",
|
|
1223
|
+
strokeLinejoin: "round",
|
|
1224
|
+
"aria-hidden": "true",
|
|
1225
|
+
className: c ? "rotate-180" : void 0,
|
|
1226
|
+
children: /* @__PURE__ */ i("polyline", { points: "6 9 12 15 18 9" })
|
|
1227
|
+
}
|
|
1228
|
+
)
|
|
1229
|
+
]
|
|
1230
|
+
}
|
|
1231
|
+
),
|
|
1232
|
+
c && /* @__PURE__ */ g(Te, { children: [
|
|
1233
|
+
/* @__PURE__ */ i(
|
|
1234
|
+
"ol",
|
|
1235
|
+
{
|
|
1236
|
+
id: a,
|
|
1237
|
+
"aria-label": o.sources,
|
|
1238
|
+
className: "mt-1 space-y-1.5",
|
|
1239
|
+
children: x.map((y, w) => /* @__PURE__ */ i(
|
|
1240
|
+
nn,
|
|
1241
|
+
{
|
|
1242
|
+
ref: (D) => {
|
|
1243
|
+
D ? d.current.set(w, D) : d.current.delete(w);
|
|
1244
|
+
},
|
|
1245
|
+
source: y,
|
|
1246
|
+
number: w + 1,
|
|
1247
|
+
favicons: r,
|
|
1248
|
+
labels: o,
|
|
1249
|
+
highlighted: (m == null ? void 0 : m.index) === w
|
|
1250
|
+
},
|
|
1251
|
+
`${w}-${y.url}`
|
|
1252
|
+
))
|
|
1253
|
+
}
|
|
1254
|
+
),
|
|
1255
|
+
b > n && /* @__PURE__ */ i(
|
|
1256
|
+
"button",
|
|
1257
|
+
{
|
|
1258
|
+
type: "button",
|
|
1259
|
+
onClick: () => f((y) => !y),
|
|
1260
|
+
"aria-expanded": u,
|
|
1261
|
+
className: "mt-1 font-medium text-claudius-link underline hover:opacity-80 focus:outline-none focus-visible:ring-2 focus-visible:ring-claudius-accent",
|
|
1262
|
+
children: u ? o.showFewerSources : ge(o.showAllSources, { count: b })
|
|
1263
|
+
}
|
|
1264
|
+
)
|
|
1265
|
+
] })
|
|
1266
|
+
] });
|
|
1267
|
+
});
|
|
1268
|
+
function on() {
|
|
1269
|
+
return /* @__PURE__ */ g(
|
|
979
1270
|
"svg",
|
|
980
1271
|
{
|
|
981
1272
|
width: "14",
|
|
@@ -994,7 +1285,7 @@ function zt() {
|
|
|
994
1285
|
}
|
|
995
1286
|
);
|
|
996
1287
|
}
|
|
997
|
-
function
|
|
1288
|
+
function Ue({
|
|
998
1289
|
label: e,
|
|
999
1290
|
onClick: t
|
|
1000
1291
|
}) {
|
|
@@ -1005,7 +1296,7 @@ function $e({
|
|
|
1005
1296
|
onClick: t,
|
|
1006
1297
|
"aria-label": e,
|
|
1007
1298
|
className: "absolute -right-1.5 -top-1.5 flex h-5 w-5 items-center justify-center rounded-claudius-full bg-claudius-text text-claudius-surface shadow-claudius-floating hover:opacity-90 focus:outline-none focus-visible:ring-2 focus-visible:ring-claudius-accent",
|
|
1008
|
-
children: /* @__PURE__ */
|
|
1299
|
+
children: /* @__PURE__ */ g(
|
|
1009
1300
|
"svg",
|
|
1010
1301
|
{
|
|
1011
1302
|
width: "10",
|
|
@@ -1025,15 +1316,15 @@ function $e({
|
|
|
1025
1316
|
}
|
|
1026
1317
|
);
|
|
1027
1318
|
}
|
|
1028
|
-
const
|
|
1319
|
+
const rt = Ae(function({
|
|
1029
1320
|
attachment: t,
|
|
1030
1321
|
variant: n,
|
|
1031
1322
|
onRemove: r,
|
|
1032
1323
|
removeLabel: o
|
|
1033
1324
|
}) {
|
|
1034
|
-
const s = Et(t), a = n === "composer", c = `${t.name} (${
|
|
1325
|
+
const s = Et(t), a = n === "composer", c = `${t.name} (${Me(t.size)})`, l = t.url ? ke(t.url) : null;
|
|
1035
1326
|
if (s) {
|
|
1036
|
-
const
|
|
1327
|
+
const f = /* @__PURE__ */ i(
|
|
1037
1328
|
"img",
|
|
1038
1329
|
{
|
|
1039
1330
|
src: s,
|
|
@@ -1043,31 +1334,31 @@ const tt = ke(function({
|
|
|
1043
1334
|
className: a ? "h-12 w-12 rounded-claudius-sm border border-claudius-border object-cover" : "max-h-48 max-w-full rounded-claudius-sm object-contain"
|
|
1044
1335
|
}
|
|
1045
1336
|
);
|
|
1046
|
-
return /* @__PURE__ */
|
|
1047
|
-
!a && l ? /* @__PURE__ */
|
|
1048
|
-
|
|
1049
|
-
/* @__PURE__ */
|
|
1337
|
+
return /* @__PURE__ */ g("div", { className: "relative inline-block", children: [
|
|
1338
|
+
!a && l ? /* @__PURE__ */ g("a", { href: l, target: "_blank", rel: "noopener noreferrer", children: [
|
|
1339
|
+
f,
|
|
1340
|
+
/* @__PURE__ */ g("span", { className: "sr-only", children: [
|
|
1050
1341
|
c,
|
|
1051
1342
|
" (opens in a new tab)"
|
|
1052
1343
|
] })
|
|
1053
|
-
] }) :
|
|
1054
|
-
r && o && /* @__PURE__ */ i(
|
|
1344
|
+
] }) : f,
|
|
1345
|
+
r && o && /* @__PURE__ */ i(Ue, { label: o, onClick: r })
|
|
1055
1346
|
] });
|
|
1056
1347
|
}
|
|
1057
|
-
const u = /* @__PURE__ */
|
|
1348
|
+
const u = /* @__PURE__ */ g(
|
|
1058
1349
|
"span",
|
|
1059
1350
|
{
|
|
1060
1351
|
title: c,
|
|
1061
1352
|
className: `inline-flex max-w-[220px] items-center gap-1.5 rounded-claudius-sm border px-2 py-1 text-xs ${a ? "border-claudius-border bg-claudius-field text-claudius-text" : "border-current/30 bg-transparent"}`,
|
|
1062
1353
|
children: [
|
|
1063
|
-
/* @__PURE__ */ i(
|
|
1354
|
+
/* @__PURE__ */ i(on, {}),
|
|
1064
1355
|
/* @__PURE__ */ i("span", { className: "truncate", children: t.name }),
|
|
1065
|
-
/* @__PURE__ */ i("span", { className: "shrink-0 opacity-70", children:
|
|
1356
|
+
/* @__PURE__ */ i("span", { className: "shrink-0 opacity-70", children: Me(t.size) })
|
|
1066
1357
|
]
|
|
1067
1358
|
}
|
|
1068
1359
|
);
|
|
1069
|
-
return /* @__PURE__ */
|
|
1070
|
-
!a && l ? /* @__PURE__ */
|
|
1360
|
+
return /* @__PURE__ */ g("div", { className: "relative inline-block", children: [
|
|
1361
|
+
!a && l ? /* @__PURE__ */ g(
|
|
1071
1362
|
"a",
|
|
1072
1363
|
{
|
|
1073
1364
|
href: l,
|
|
@@ -1080,9 +1371,9 @@ const tt = ke(function({
|
|
|
1080
1371
|
]
|
|
1081
1372
|
}
|
|
1082
1373
|
) : u,
|
|
1083
|
-
r && o && /* @__PURE__ */ i(
|
|
1374
|
+
r && o && /* @__PURE__ */ i(Ue, { label: o, onClick: r })
|
|
1084
1375
|
] });
|
|
1085
|
-
}),
|
|
1376
|
+
}), Be = Oe(function({ label: t, onClick: n, children: r }, o) {
|
|
1086
1377
|
return /* @__PURE__ */ i(
|
|
1087
1378
|
"button",
|
|
1088
1379
|
{
|
|
@@ -1110,7 +1401,7 @@ const tt = ke(function({
|
|
|
1110
1401
|
}
|
|
1111
1402
|
);
|
|
1112
1403
|
});
|
|
1113
|
-
function
|
|
1404
|
+
function sn({
|
|
1114
1405
|
state: e,
|
|
1115
1406
|
labels: t,
|
|
1116
1407
|
onPlay: n,
|
|
@@ -1118,38 +1409,38 @@ function Ht({
|
|
|
1118
1409
|
onResume: o,
|
|
1119
1410
|
onStop: s
|
|
1120
1411
|
}) {
|
|
1121
|
-
var
|
|
1122
|
-
const a =
|
|
1123
|
-
|
|
1124
|
-
var
|
|
1125
|
-
e === "idle" && l && !((
|
|
1412
|
+
var f;
|
|
1413
|
+
const a = C(null), c = C(null), l = !!((f = a.current) != null && f.contains(document.activeElement));
|
|
1414
|
+
H(() => {
|
|
1415
|
+
var T, A;
|
|
1416
|
+
e === "idle" && l && !((T = a.current) != null && T.contains(document.activeElement)) && ((A = c.current) == null || A.focus());
|
|
1126
1417
|
}, [e, l]);
|
|
1127
1418
|
const u = e === "idle" ? { label: t.play, onClick: n } : e === "paused" ? { label: t.resume, onClick: o } : { label: t.pause, onClick: r };
|
|
1128
|
-
return /* @__PURE__ */
|
|
1129
|
-
/* @__PURE__ */ i(
|
|
1419
|
+
return /* @__PURE__ */ g("div", { ref: a, className: "flex items-center gap-1", children: [
|
|
1420
|
+
/* @__PURE__ */ i(Be, { ref: c, ...u, children: e === "idle" ? /* @__PURE__ */ g(Te, { children: [
|
|
1130
1421
|
/* @__PURE__ */ i("polygon", { points: "11 5 6 9 2 9 2 15 6 15 11 19 11 5" }),
|
|
1131
1422
|
/* @__PURE__ */ i("path", { d: "M15.54 8.46a5 5 0 0 1 0 7.07", fill: "none" }),
|
|
1132
1423
|
/* @__PURE__ */ i("path", { d: "M19.07 4.93a10 10 0 0 1 0 14.14", fill: "none" })
|
|
1133
|
-
] }) : e === "paused" ? /* @__PURE__ */ i("polygon", { points: "6 3 20 12 6 21 6 3" }) : /* @__PURE__ */
|
|
1424
|
+
] }) : e === "paused" ? /* @__PURE__ */ i("polygon", { points: "6 3 20 12 6 21 6 3" }) : /* @__PURE__ */ g(Te, { children: [
|
|
1134
1425
|
/* @__PURE__ */ i("rect", { x: "6", y: "4", width: "4", height: "16", rx: "1" }),
|
|
1135
1426
|
/* @__PURE__ */ i("rect", { x: "14", y: "4", width: "4", height: "16", rx: "1" })
|
|
1136
1427
|
] }) }),
|
|
1137
|
-
e !== "idle" && /* @__PURE__ */ i(
|
|
1428
|
+
e !== "idle" && /* @__PURE__ */ i(Be, { label: t.stop, onClick: s, children: /* @__PURE__ */ i("rect", { x: "6", y: "6", width: "12", height: "12", rx: "1.5" }) })
|
|
1138
1429
|
] });
|
|
1139
1430
|
}
|
|
1140
|
-
function
|
|
1431
|
+
function an(e) {
|
|
1141
1432
|
const t = e.lastIndexOf(`
|
|
1142
1433
|
`), n = t === -1 ? "" : e.slice(0, t + 1);
|
|
1143
1434
|
let r = t === -1 ? e : e.slice(t + 1);
|
|
1144
|
-
return r =
|
|
1435
|
+
return r = un(r), r = dn(r), n + r;
|
|
1145
1436
|
}
|
|
1146
|
-
function
|
|
1437
|
+
function cn(e) {
|
|
1147
1438
|
const t = [];
|
|
1148
1439
|
for (let n = 0; n < e.length - 1; n++)
|
|
1149
1440
|
e[n] === "*" && e[n + 1] === "*" && (t.push(n), n++);
|
|
1150
1441
|
return t;
|
|
1151
1442
|
}
|
|
1152
|
-
function
|
|
1443
|
+
function ln(e) {
|
|
1153
1444
|
const t = [];
|
|
1154
1445
|
for (let n = 0; n < e.length; n++)
|
|
1155
1446
|
if (e[n] === "*") {
|
|
@@ -1161,26 +1452,26 @@ function Gt(e) {
|
|
|
1161
1452
|
}
|
|
1162
1453
|
return t;
|
|
1163
1454
|
}
|
|
1164
|
-
function
|
|
1165
|
-
const t =
|
|
1455
|
+
function un(e) {
|
|
1456
|
+
const t = cn(e);
|
|
1166
1457
|
if (t.length % 2 === 0) return e;
|
|
1167
1458
|
const n = t[t.length - 1], r = e.slice(n + 2);
|
|
1168
1459
|
return r.trim() === "" ? e.slice(0, n) + r : e + "**";
|
|
1169
1460
|
}
|
|
1170
|
-
function
|
|
1171
|
-
const t =
|
|
1461
|
+
function dn(e) {
|
|
1462
|
+
const t = ln(e);
|
|
1172
1463
|
if (t.length % 2 === 0) return e;
|
|
1173
1464
|
const n = t[t.length - 1], r = e.slice(n + 1);
|
|
1174
1465
|
return r.trim() === "" ? e.slice(0, n) + r : e + "*";
|
|
1175
1466
|
}
|
|
1176
|
-
function
|
|
1467
|
+
function fn({
|
|
1177
1468
|
toolUse: e,
|
|
1178
1469
|
usedLabel: t,
|
|
1179
1470
|
detailsLabel: n
|
|
1180
1471
|
}) {
|
|
1181
|
-
const [r, o] =
|
|
1182
|
-
return /* @__PURE__ */
|
|
1183
|
-
/* @__PURE__ */
|
|
1472
|
+
const [r, o] = M(!1), s = e.input !== void 0 || e.result !== void 0;
|
|
1473
|
+
return /* @__PURE__ */ g("div", { className: "text-xs text-claudius-text-muted", children: [
|
|
1474
|
+
/* @__PURE__ */ g(
|
|
1184
1475
|
"button",
|
|
1185
1476
|
{
|
|
1186
1477
|
type: "button",
|
|
@@ -1204,13 +1495,13 @@ function Yt({
|
|
|
1204
1495
|
children: /* @__PURE__ */ i("path", { d: "M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z" })
|
|
1205
1496
|
}
|
|
1206
1497
|
),
|
|
1207
|
-
/* @__PURE__ */
|
|
1498
|
+
/* @__PURE__ */ g("span", { children: [
|
|
1208
1499
|
t,
|
|
1209
1500
|
" ",
|
|
1210
1501
|
/* @__PURE__ */ i("span", { className: "font-mono text-claudius-text", children: e.name }),
|
|
1211
1502
|
e.isError && /* @__PURE__ */ i("span", { className: "text-claudius-error", children: " ✕" })
|
|
1212
1503
|
] }),
|
|
1213
|
-
s && /* @__PURE__ */
|
|
1504
|
+
s && /* @__PURE__ */ g(Te, { children: [
|
|
1214
1505
|
/* @__PURE__ */ i("span", { className: "sr-only", children: n }),
|
|
1215
1506
|
/* @__PURE__ */ i(
|
|
1216
1507
|
"svg",
|
|
@@ -1232,62 +1523,93 @@ function Yt({
|
|
|
1232
1523
|
]
|
|
1233
1524
|
}
|
|
1234
1525
|
),
|
|
1235
|
-
r && s && /* @__PURE__ */
|
|
1526
|
+
r && s && /* @__PURE__ */ g("div", { className: "mt-1 overflow-x-auto rounded-claudius-sm border border-claudius-border bg-claudius-field p-2 font-mono", children: [
|
|
1236
1527
|
e.input !== void 0 && /* @__PURE__ */ i("pre", { className: "whitespace-pre-wrap break-all", children: JSON.stringify(e.input, null, 2) }),
|
|
1237
1528
|
e.result !== void 0 && /* @__PURE__ */ i("pre", { className: "mt-1 whitespace-pre-wrap break-all border-t border-claudius-border pt-1", children: e.result })
|
|
1238
1529
|
] })
|
|
1239
1530
|
] });
|
|
1240
1531
|
}
|
|
1241
|
-
const
|
|
1242
|
-
function
|
|
1243
|
-
const
|
|
1244
|
-
return
|
|
1245
|
-
/* @__PURE__ */
|
|
1532
|
+
const Fe = /(https?:\/\/[^\s)]+)/, _e = /(\*\*[^*]+\*\*)/, He = /(\*[^*]+\*)/, hn = /(?:\[[1-9]\d{0,2}(?:\s*,\s*[1-9]\d{0,2})*\])+$/;
|
|
1533
|
+
function pn(e, t, n) {
|
|
1534
|
+
const r = e.match(/[.,;:!?'"]+$/), o = r ? e.slice(0, -r[0].length) : e, s = r ? r[0] : "", a = n.citations ? o.match(hn) : null, c = a ? o.slice(0, -a[0].length) : o, l = ke(c);
|
|
1535
|
+
return l ? /* @__PURE__ */ g(gt, { children: [
|
|
1536
|
+
/* @__PURE__ */ g(
|
|
1246
1537
|
"a",
|
|
1247
1538
|
{
|
|
1248
|
-
href:
|
|
1539
|
+
href: l,
|
|
1249
1540
|
target: "_blank",
|
|
1250
1541
|
rel: "noopener noreferrer",
|
|
1251
1542
|
className: "underline font-medium hover:opacity-80 text-claudius-link",
|
|
1252
1543
|
children: [
|
|
1253
|
-
|
|
1254
|
-
/* @__PURE__ */
|
|
1544
|
+
l.replace(/^https?:\/\//, ""),
|
|
1545
|
+
/* @__PURE__ */ g("span", { className: "sr-only", children: [
|
|
1546
|
+
" ",
|
|
1547
|
+
n.newTabLabel
|
|
1548
|
+
] })
|
|
1255
1549
|
]
|
|
1256
|
-
}
|
|
1257
|
-
t
|
|
1550
|
+
}
|
|
1258
1551
|
),
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
}
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
o.
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1552
|
+
a && ot(a[0], `${t}-m`, n),
|
|
1553
|
+
s
|
|
1554
|
+
] }, t) : e;
|
|
1555
|
+
}
|
|
1556
|
+
function ot(e, t, n) {
|
|
1557
|
+
const r = n.citations;
|
|
1558
|
+
return r ? tt(e, r.sources.length).map((o, s) => o.type === "text" ? o.value : /* @__PURE__ */ i(
|
|
1559
|
+
"span",
|
|
1560
|
+
{
|
|
1561
|
+
className: "inline-flex gap-0.5 align-super",
|
|
1562
|
+
children: o.indexes.map((a) => /* @__PURE__ */ i(
|
|
1563
|
+
"button",
|
|
1564
|
+
{
|
|
1565
|
+
type: "button",
|
|
1566
|
+
onClick: () => r.onCite(a),
|
|
1567
|
+
"aria-label": ge(r.label, {
|
|
1568
|
+
n: a + 1,
|
|
1569
|
+
title: r.sources[a].title
|
|
1570
|
+
}),
|
|
1571
|
+
title: r.sources[a].title,
|
|
1572
|
+
className: "inline-flex h-4 min-w-4 items-center justify-center rounded-claudius-full bg-claudius-accent px-1 text-[10px] font-semibold leading-none text-claudius-accent-text hover:opacity-80 focus:outline-none focus-visible:ring-2 focus-visible:ring-claudius-accent focus-visible:ring-offset-1",
|
|
1573
|
+
children: a + 1
|
|
1574
|
+
},
|
|
1575
|
+
a
|
|
1576
|
+
))
|
|
1577
|
+
},
|
|
1578
|
+
`${t}-c${s}`
|
|
1579
|
+
)) : e ? [e] : [];
|
|
1580
|
+
}
|
|
1581
|
+
function Le(e, t, n) {
|
|
1582
|
+
const r = [];
|
|
1583
|
+
return e.split(Fe).forEach((o, s) => {
|
|
1584
|
+
Fe.test(o) ? r.push(pn(o, `${t}-u${s}`, n)) : o && r.push(...ot(o, `${t}-u${s}`, n));
|
|
1280
1585
|
}), r;
|
|
1281
1586
|
}
|
|
1282
|
-
function
|
|
1283
|
-
const
|
|
1587
|
+
function mn(e, t, n) {
|
|
1588
|
+
const r = [];
|
|
1589
|
+
return e.split(_e).forEach((o, s) => {
|
|
1590
|
+
if (_e.test(o)) {
|
|
1591
|
+
r.push(
|
|
1592
|
+
/* @__PURE__ */ i("strong", { children: Le(o.slice(2, -2), `${t}-b${s}`, n) }, `${t}-b${s}`)
|
|
1593
|
+
);
|
|
1594
|
+
return;
|
|
1595
|
+
}
|
|
1596
|
+
o.split(He).forEach((a, c) => {
|
|
1597
|
+
const l = `${t}-b${s}-i${c}`;
|
|
1598
|
+
He.test(a) ? r.push(
|
|
1599
|
+
/* @__PURE__ */ i("em", { children: Le(a.slice(1, -1), l, n) }, l)
|
|
1600
|
+
) : r.push(...Le(a, l, n));
|
|
1601
|
+
});
|
|
1602
|
+
}), r;
|
|
1603
|
+
}
|
|
1604
|
+
function gn(e, t) {
|
|
1605
|
+
const n = e.split(`
|
|
1284
1606
|
`);
|
|
1285
|
-
return
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
] },
|
|
1607
|
+
return n.map((r, o) => /* @__PURE__ */ g("span", { children: [
|
|
1608
|
+
mn(r, `l${o}`, t),
|
|
1609
|
+
o < n.length - 1 && /* @__PURE__ */ i("br", {})
|
|
1610
|
+
] }, o));
|
|
1289
1611
|
}
|
|
1290
|
-
const
|
|
1612
|
+
const bn = Ae(function({
|
|
1291
1613
|
role: t,
|
|
1292
1614
|
content: n,
|
|
1293
1615
|
isStreaming: r = !1,
|
|
@@ -1297,48 +1619,68 @@ const Qt = ke(function({
|
|
|
1297
1619
|
toolUsedLabel: c = "Used tool:",
|
|
1298
1620
|
toolDetailsLabel: l = "Tool details",
|
|
1299
1621
|
onSourceClick: u,
|
|
1300
|
-
isSourceActive:
|
|
1301
|
-
speech:
|
|
1622
|
+
isSourceActive: f,
|
|
1623
|
+
speech: T,
|
|
1624
|
+
citations: A,
|
|
1625
|
+
linkNewTabLabel: m = "(opens in a new tab)"
|
|
1302
1626
|
}) {
|
|
1303
|
-
const
|
|
1304
|
-
|
|
1305
|
-
|
|
1627
|
+
const h = t === "user", [d, k] = M(null), b = C(0), x = !h && A && o && o.length > 0 ? { config: A, sources: o } : null, y = !!s && s.length > 0, w = r && x ? qt(n) : n, D = r ? an(w) : w, S = {
|
|
1628
|
+
newTabLabel: m,
|
|
1629
|
+
citations: x ? {
|
|
1630
|
+
sources: x.sources,
|
|
1631
|
+
label: x.config.labels.citation,
|
|
1632
|
+
onCite: (I) => {
|
|
1633
|
+
b.current += 1, k({ index: I, key: b.current });
|
|
1634
|
+
}
|
|
1635
|
+
} : void 0
|
|
1636
|
+
}, N = h || n !== "" || !(a != null && a.length);
|
|
1637
|
+
return /* @__PURE__ */ g("div", { className: `${h ? "ml-auto" : "mr-auto"} max-w-[85%]`, children: [
|
|
1638
|
+
N && /* @__PURE__ */ g(
|
|
1306
1639
|
"div",
|
|
1307
1640
|
{
|
|
1308
|
-
className: `rounded-claudius-bubble px-4 py-2.5 text-sm leading-relaxed font-body ${
|
|
1641
|
+
className: `rounded-claudius-bubble px-4 py-2.5 text-sm leading-relaxed font-body ${h ? "bg-claudius-user-bubble text-claudius-user-bubble-text rounded-br-claudius-tail" : "bg-claudius-assistant-bubble text-claudius-assistant-bubble-text rounded-bl-claudius-tail"}`,
|
|
1309
1642
|
children: [
|
|
1310
|
-
|
|
1643
|
+
y && /* @__PURE__ */ i(
|
|
1311
1644
|
"ul",
|
|
1312
1645
|
{
|
|
1313
1646
|
className: `flex flex-wrap gap-2 ${n ? "mb-2" : ""}`,
|
|
1314
1647
|
"aria-label": "Attachments",
|
|
1315
|
-
children: s.map((
|
|
1648
|
+
children: s.map((I) => /* @__PURE__ */ i("li", { children: /* @__PURE__ */ i(rt, { attachment: I, variant: "message" }) }, I.id))
|
|
1316
1649
|
}
|
|
1317
1650
|
),
|
|
1318
|
-
(n !== "" || !
|
|
1651
|
+
(n !== "" || !y) && gn(D, S)
|
|
1319
1652
|
]
|
|
1320
1653
|
}
|
|
1321
1654
|
),
|
|
1322
|
-
!
|
|
1323
|
-
|
|
1655
|
+
!h && a && a.length > 0 && /* @__PURE__ */ i("div", { className: "mt-1 space-y-1", children: a.map((I, R) => /* @__PURE__ */ i(
|
|
1656
|
+
fn,
|
|
1324
1657
|
{
|
|
1325
|
-
toolUse:
|
|
1658
|
+
toolUse: I,
|
|
1326
1659
|
usedLabel: c,
|
|
1327
1660
|
detailsLabel: l
|
|
1328
1661
|
},
|
|
1329
|
-
`${
|
|
1662
|
+
`${I.name}-${R}`
|
|
1330
1663
|
)) }),
|
|
1331
|
-
|
|
1332
|
-
|
|
1664
|
+
x ? /* @__PURE__ */ i(
|
|
1665
|
+
rn,
|
|
1666
|
+
{
|
|
1667
|
+
sources: x.sources,
|
|
1668
|
+
maxSources: x.config.maxSources,
|
|
1669
|
+
favicons: x.config.favicons,
|
|
1670
|
+
labels: x.config.labels,
|
|
1671
|
+
reveal: d
|
|
1672
|
+
}
|
|
1673
|
+
) : !h && o && o.length > 0 && u && /* @__PURE__ */ i("div", { className: "mt-1", children: /* @__PURE__ */ i(
|
|
1674
|
+
zt,
|
|
1333
1675
|
{
|
|
1334
1676
|
count: o.length,
|
|
1335
|
-
isActive:
|
|
1677
|
+
isActive: f ?? !1,
|
|
1336
1678
|
onClick: u
|
|
1337
1679
|
}
|
|
1338
1680
|
) }),
|
|
1339
|
-
!
|
|
1681
|
+
!h && T && /* @__PURE__ */ i("div", { className: "mt-1", children: /* @__PURE__ */ i(sn, { ...T }) })
|
|
1340
1682
|
] });
|
|
1341
|
-
}),
|
|
1683
|
+
}), st = {
|
|
1342
1684
|
// ChatWindow
|
|
1343
1685
|
title: "Chat",
|
|
1344
1686
|
subtitle: "Ask me anything",
|
|
@@ -1390,6 +1732,12 @@ const Qt = ke(function({
|
|
|
1390
1732
|
transcriptAssistant: "Assistant",
|
|
1391
1733
|
transcriptAttachments: "Attachments:",
|
|
1392
1734
|
transcriptSources: "Sources:",
|
|
1735
|
+
// Citations
|
|
1736
|
+
sources: "Sources",
|
|
1737
|
+
showAllSources: "Show all ({count})",
|
|
1738
|
+
showFewerSources: "Show fewer",
|
|
1739
|
+
citation: "Source {n}: {title}",
|
|
1740
|
+
opensInNewTab: "(opens in a new tab)",
|
|
1393
1741
|
// Errors
|
|
1394
1742
|
errorGeneric: "Something went wrong. Please try again.",
|
|
1395
1743
|
errorConnection: "Failed to connect. Please try again.",
|
|
@@ -1399,14 +1747,14 @@ const Qt = ke(function({
|
|
|
1399
1747
|
errorAttachmentRejected: "An attachment was rejected. Please remove it and try again.",
|
|
1400
1748
|
errorAttachmentQuota: "Upload limit reached. Please try again later.",
|
|
1401
1749
|
errorRetry: "Retry"
|
|
1402
|
-
},
|
|
1403
|
-
function
|
|
1404
|
-
return { ...
|
|
1750
|
+
}, je = st;
|
|
1751
|
+
function Ur(e) {
|
|
1752
|
+
return { ...je, ...e };
|
|
1405
1753
|
}
|
|
1406
1754
|
function ze(e) {
|
|
1407
1755
|
return e.key === " " || e.key === "Enter";
|
|
1408
1756
|
}
|
|
1409
|
-
function
|
|
1757
|
+
function yn({
|
|
1410
1758
|
mode: e,
|
|
1411
1759
|
isListening: t,
|
|
1412
1760
|
disabled: n = !1,
|
|
@@ -1414,7 +1762,7 @@ function Xt({
|
|
|
1414
1762
|
onStop: o,
|
|
1415
1763
|
label: s
|
|
1416
1764
|
}) {
|
|
1417
|
-
const a = e === "hold", c =
|
|
1765
|
+
const a = e === "hold", c = C(!1), l = () => {
|
|
1418
1766
|
n || c.current || (c.current = !0, r({ held: !0 }));
|
|
1419
1767
|
}, u = () => {
|
|
1420
1768
|
c.current && (c.current = !1, o());
|
|
@@ -1427,24 +1775,24 @@ function Xt({
|
|
|
1427
1775
|
"aria-label": s,
|
|
1428
1776
|
"aria-pressed": t,
|
|
1429
1777
|
title: s,
|
|
1430
|
-
onClick: (
|
|
1431
|
-
a &&
|
|
1778
|
+
onClick: (h) => {
|
|
1779
|
+
a && h.detail !== 0 || (t ? o() : r({ held: !1 }));
|
|
1432
1780
|
},
|
|
1433
|
-
onPointerDown: (
|
|
1434
|
-
var
|
|
1435
|
-
!a ||
|
|
1781
|
+
onPointerDown: (h) => {
|
|
1782
|
+
var d, k;
|
|
1783
|
+
!a || h.button !== 0 || ((k = (d = h.currentTarget).setPointerCapture) == null || k.call(d, h.pointerId), l());
|
|
1436
1784
|
},
|
|
1437
1785
|
onPointerUp: u,
|
|
1438
1786
|
onPointerCancel: u,
|
|
1439
1787
|
onLostPointerCapture: u,
|
|
1440
|
-
onKeyDown: (
|
|
1441
|
-
!a || !ze(
|
|
1788
|
+
onKeyDown: (h) => {
|
|
1789
|
+
!a || !ze(h) || (h.preventDefault(), h.repeat || l());
|
|
1442
1790
|
},
|
|
1443
|
-
onKeyUp: (
|
|
1444
|
-
!a || !ze(
|
|
1791
|
+
onKeyUp: (h) => {
|
|
1792
|
+
!a || !ze(h) || (h.preventDefault(), u());
|
|
1445
1793
|
},
|
|
1446
1794
|
onBlur: u,
|
|
1447
|
-
onContextMenu: a ? (
|
|
1795
|
+
onContextMenu: a ? (h) => h.preventDefault() : void 0,
|
|
1448
1796
|
style: a ? { WebkitTouchCallout: "none" } : void 0,
|
|
1449
1797
|
className: `flex h-11 w-11 shrink-0 items-center justify-center rounded-claudius-sm border transition-colors focus:outline-none focus:ring-1 focus:ring-claudius-accent disabled:opacity-50 ${t ? (
|
|
1450
1798
|
// An accent ring on an accent fill is invisible; offset it so
|
|
@@ -1466,7 +1814,7 @@ function Xt({
|
|
|
1466
1814
|
children: /* @__PURE__ */ i("rect", { x: "6", y: "6", width: "12", height: "12", rx: "1.5" })
|
|
1467
1815
|
}
|
|
1468
1816
|
)
|
|
1469
|
-
) : /* @__PURE__ */
|
|
1817
|
+
) : /* @__PURE__ */ g(
|
|
1470
1818
|
"svg",
|
|
1471
1819
|
{
|
|
1472
1820
|
width: "16",
|
|
@@ -1488,8 +1836,8 @@ function Xt({
|
|
|
1488
1836
|
}
|
|
1489
1837
|
);
|
|
1490
1838
|
}
|
|
1491
|
-
function
|
|
1492
|
-
return /* @__PURE__ */
|
|
1839
|
+
function wn({ active: e }) {
|
|
1840
|
+
return /* @__PURE__ */ g(
|
|
1493
1841
|
"span",
|
|
1494
1842
|
{
|
|
1495
1843
|
"aria-hidden": "true",
|
|
@@ -1504,50 +1852,44 @@ function en({ active: e }) {
|
|
|
1504
1852
|
}
|
|
1505
1853
|
);
|
|
1506
1854
|
}
|
|
1507
|
-
|
|
1508
|
-
return e.replace(
|
|
1509
|
-
/\{(\w+)\}/g,
|
|
1510
|
-
(n, r) => r in t ? String(t[r]) : n
|
|
1511
|
-
);
|
|
1512
|
-
}
|
|
1513
|
-
const tn = {
|
|
1855
|
+
const xn = {
|
|
1514
1856
|
en: "en-US",
|
|
1515
1857
|
es: "es-ES",
|
|
1516
1858
|
fr: "fr-FR",
|
|
1517
1859
|
de: "de-DE"
|
|
1518
|
-
},
|
|
1519
|
-
function
|
|
1860
|
+
}, vn = ["toggle", "hold"];
|
|
1861
|
+
function We(e, t) {
|
|
1520
1862
|
if (!(!e || !e.includes("-")))
|
|
1521
1863
|
return e.toLowerCase().split("-")[0] === t ? e : void 0;
|
|
1522
1864
|
}
|
|
1523
|
-
function
|
|
1865
|
+
function at(e, t) {
|
|
1524
1866
|
const n = t == null ? void 0 : t.trim();
|
|
1525
1867
|
if (n) return n;
|
|
1526
|
-
const r = typeof document < "u" ?
|
|
1868
|
+
const r = typeof document < "u" ? We(document.documentElement.lang, e) : void 0;
|
|
1527
1869
|
if (r) return r;
|
|
1528
|
-
const o = typeof navigator < "u" ?
|
|
1529
|
-
return o ||
|
|
1870
|
+
const o = typeof navigator < "u" ? We(navigator.language, e) : void 0;
|
|
1871
|
+
return o || xn[e];
|
|
1530
1872
|
}
|
|
1531
|
-
function
|
|
1873
|
+
function Sn(e, t) {
|
|
1532
1874
|
const n = typeof e == "object" && e !== null && !Array.isArray(e);
|
|
1533
1875
|
if (e !== !0 && !n) return null;
|
|
1534
1876
|
const r = e === !0 ? {} : e, o = {
|
|
1535
1877
|
input: r.input ?? !0,
|
|
1536
1878
|
output: r.output ?? !0,
|
|
1537
1879
|
// `mode` can arrive from an HTML attribute, so tolerate junk.
|
|
1538
|
-
mode:
|
|
1880
|
+
mode: vn.includes(r.mode) ? r.mode : "toggle",
|
|
1539
1881
|
autoSubmit: r.autoSubmit ?? !1,
|
|
1540
|
-
lang:
|
|
1882
|
+
lang: at(t, r.lang)
|
|
1541
1883
|
};
|
|
1542
1884
|
return o.input || o.output ? o : null;
|
|
1543
1885
|
}
|
|
1544
|
-
function
|
|
1886
|
+
function Tn(e, t, n) {
|
|
1545
1887
|
const r = t.trim();
|
|
1546
1888
|
if (!r) return e;
|
|
1547
1889
|
const o = e.trimEnd();
|
|
1548
1890
|
return (o ? `${o} ${r}` : r).slice(0, n);
|
|
1549
1891
|
}
|
|
1550
|
-
function
|
|
1892
|
+
function An(e) {
|
|
1551
1893
|
const t = [];
|
|
1552
1894
|
let n = 0;
|
|
1553
1895
|
for (let r = 0; r < e.length; r++) {
|
|
@@ -1557,14 +1899,14 @@ function sn(e) {
|
|
|
1557
1899
|
}
|
|
1558
1900
|
return n < e.length && t.push(e.slice(n)), t;
|
|
1559
1901
|
}
|
|
1560
|
-
function
|
|
1902
|
+
function kn(e, t = 150) {
|
|
1561
1903
|
const n = [];
|
|
1562
1904
|
let r = "";
|
|
1563
1905
|
const o = () => {
|
|
1564
1906
|
const s = r.trim();
|
|
1565
1907
|
s && n.push(s), r = "";
|
|
1566
1908
|
};
|
|
1567
|
-
for (const s of
|
|
1909
|
+
for (const s of An(e)) {
|
|
1568
1910
|
if ((r + s).trim().length <= t) {
|
|
1569
1911
|
r += s;
|
|
1570
1912
|
continue;
|
|
@@ -1581,12 +1923,12 @@ function an(e, t = 150) {
|
|
|
1581
1923
|
}
|
|
1582
1924
|
return o(), n;
|
|
1583
1925
|
}
|
|
1584
|
-
function
|
|
1926
|
+
function Ge() {
|
|
1585
1927
|
if (typeof window > "u") return;
|
|
1586
1928
|
const e = window;
|
|
1587
1929
|
return e.SpeechRecognition ?? e.webkitSpeechRecognition;
|
|
1588
1930
|
}
|
|
1589
|
-
function
|
|
1931
|
+
function Rn(e) {
|
|
1590
1932
|
switch (e) {
|
|
1591
1933
|
case "not-allowed":
|
|
1592
1934
|
case "service-not-allowed":
|
|
@@ -1599,62 +1941,62 @@ function cn(e) {
|
|
|
1599
1941
|
return "unavailable";
|
|
1600
1942
|
}
|
|
1601
1943
|
}
|
|
1602
|
-
function
|
|
1603
|
-
const [t] =
|
|
1604
|
-
|
|
1944
|
+
function En(e) {
|
|
1945
|
+
const [t] = M(() => Ge() !== void 0), [n, r] = M(!1), [o, s] = M(!1), a = C(null), c = C(!1), l = C(e);
|
|
1946
|
+
H(() => {
|
|
1605
1947
|
l.current = e;
|
|
1606
1948
|
});
|
|
1607
|
-
const u =
|
|
1608
|
-
|
|
1609
|
-
}, []),
|
|
1610
|
-
const
|
|
1611
|
-
|
|
1612
|
-
}, [u]),
|
|
1613
|
-
const
|
|
1614
|
-
return
|
|
1615
|
-
}, [
|
|
1616
|
-
var b,
|
|
1617
|
-
const
|
|
1618
|
-
if (!
|
|
1619
|
-
const
|
|
1620
|
-
|
|
1621
|
-
let
|
|
1622
|
-
const
|
|
1949
|
+
const u = O((m) => {
|
|
1950
|
+
m.onstart = null, m.onend = null, m.onerror = null, m.onresult = null, m.onspeechstart = null, m.onspeechend = null, a.current === m && (a.current = null), r(!1), s(!1);
|
|
1951
|
+
}, []), f = O(() => {
|
|
1952
|
+
const m = a.current;
|
|
1953
|
+
m && (u(m), m.abort());
|
|
1954
|
+
}, [u]), T = O(() => {
|
|
1955
|
+
const m = a.current;
|
|
1956
|
+
return m ? (c.current ? m.stop() : f(), !0) : !1;
|
|
1957
|
+
}, [f]), A = O(() => {
|
|
1958
|
+
var b, x;
|
|
1959
|
+
const m = Ge();
|
|
1960
|
+
if (!m || a.current) return !1;
|
|
1961
|
+
const h = new m();
|
|
1962
|
+
h.lang = l.current.lang, h.interimResults = !0, h.continuous = !1;
|
|
1963
|
+
let d = "";
|
|
1964
|
+
const k = () => {
|
|
1623
1965
|
c.current = !0;
|
|
1624
1966
|
};
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
},
|
|
1628
|
-
var
|
|
1629
|
-
let
|
|
1630
|
-
for (let
|
|
1631
|
-
const
|
|
1632
|
-
|
|
1967
|
+
h.onstart = k, h.onspeechstart = () => {
|
|
1968
|
+
k(), s(!0);
|
|
1969
|
+
}, h.onspeechend = () => s(!1), h.onresult = (y) => {
|
|
1970
|
+
var S, N;
|
|
1971
|
+
let w = "", D = "";
|
|
1972
|
+
for (let I = 0; I < y.results.length; I++) {
|
|
1973
|
+
const R = y.results[I];
|
|
1974
|
+
R.isFinal ? w += R[0].transcript : D += R[0].transcript;
|
|
1633
1975
|
}
|
|
1634
|
-
|
|
1635
|
-
},
|
|
1636
|
-
var
|
|
1637
|
-
y.error !== "aborted" && ((
|
|
1638
|
-
},
|
|
1639
|
-
var y,
|
|
1640
|
-
u(
|
|
1641
|
-
}, a.current =
|
|
1976
|
+
d = w, k(), s(!0), (N = (S = l.current).onTranscript) == null || N.call(S, w + D);
|
|
1977
|
+
}, h.onerror = (y) => {
|
|
1978
|
+
var w, D;
|
|
1979
|
+
y.error !== "aborted" && ((D = (w = l.current).onError) == null || D.call(w, Rn(y.error))), u(h), h.abort();
|
|
1980
|
+
}, h.onend = () => {
|
|
1981
|
+
var y, w;
|
|
1982
|
+
u(h), (w = (y = l.current).onEnd) == null || w.call(y, d);
|
|
1983
|
+
}, a.current = h, c.current = !1, r(!0);
|
|
1642
1984
|
try {
|
|
1643
|
-
|
|
1985
|
+
h.start();
|
|
1644
1986
|
} catch {
|
|
1645
|
-
return u(
|
|
1987
|
+
return u(h), (x = (b = l.current).onError) == null || x.call(b, "unavailable"), !1;
|
|
1646
1988
|
}
|
|
1647
1989
|
return !0;
|
|
1648
1990
|
}, [u]);
|
|
1649
|
-
return
|
|
1991
|
+
return H(() => f, [f]), { isSupported: t, isListening: n, isSpeechDetected: o, start: A, stop: T, abort: f };
|
|
1650
1992
|
}
|
|
1651
|
-
const
|
|
1652
|
-
function
|
|
1993
|
+
const xe = 2e3, Cn = 1800;
|
|
1994
|
+
function Ve(e) {
|
|
1653
1995
|
var n;
|
|
1654
1996
|
const t = (n = e.dataTransfer) == null ? void 0 : n.types;
|
|
1655
1997
|
return !!t && Array.from(t).includes("Files");
|
|
1656
1998
|
}
|
|
1657
|
-
function
|
|
1999
|
+
function Nn({
|
|
1658
2000
|
onSend: e,
|
|
1659
2001
|
isLoading: t,
|
|
1660
2002
|
isStreaming: n = !1,
|
|
@@ -1666,129 +2008,129 @@ function dn({
|
|
|
1666
2008
|
onVoiceStart: l,
|
|
1667
2009
|
isReadingAloud: u = !1
|
|
1668
2010
|
}) {
|
|
1669
|
-
const
|
|
1670
|
-
|
|
1671
|
-
},
|
|
1672
|
-
|
|
1673
|
-
var
|
|
1674
|
-
t || (
|
|
2011
|
+
const f = s ?? je, [T, A] = M(""), [m, h] = M([]), [d, k] = M(null), [b, x] = M(!1), [y, w] = M(null), D = C(null), S = C(null), N = C([]), I = C(0), R = C(""), ne = C(""), $ = C(!1), z = C(!1), X = C(!1), Z = (p) => {
|
|
2012
|
+
R.current = p, A(p);
|
|
2013
|
+
}, J = T.length, W = J >= Cn, G = J >= xe, ce = o ?? f.placeholder, de = !!a && m.length < a.maxCount, fe = n && !!r;
|
|
2014
|
+
H(() => {
|
|
2015
|
+
var p;
|
|
2016
|
+
t || (p = D.current) == null || p.focus();
|
|
1675
2017
|
}, [t]);
|
|
1676
|
-
const
|
|
1677
|
-
(
|
|
2018
|
+
const E = O(
|
|
2019
|
+
(p, j) => {
|
|
1678
2020
|
if (!a) return "";
|
|
1679
2021
|
switch (j) {
|
|
1680
2022
|
case "size":
|
|
1681
|
-
return
|
|
1682
|
-
name:
|
|
1683
|
-
max:
|
|
2023
|
+
return ge(f.attachmentTooLarge, {
|
|
2024
|
+
name: p,
|
|
2025
|
+
max: Me(a.maxSizeBytes)
|
|
1684
2026
|
});
|
|
1685
2027
|
case "type":
|
|
1686
|
-
return
|
|
2028
|
+
return ge(f.attachmentTypeNotAllowed, { name: p });
|
|
1687
2029
|
case "count":
|
|
1688
|
-
return
|
|
2030
|
+
return ge(f.attachmentTooMany, {
|
|
1689
2031
|
max: a.maxCount
|
|
1690
2032
|
});
|
|
1691
2033
|
}
|
|
1692
2034
|
},
|
|
1693
|
-
[a,
|
|
1694
|
-
),
|
|
1695
|
-
async (
|
|
1696
|
-
if (!a ||
|
|
1697
|
-
const { accepted: j, rejected:
|
|
1698
|
-
|
|
1699
|
-
|
|
2035
|
+
[a, f]
|
|
2036
|
+
), B = O(
|
|
2037
|
+
async (p) => {
|
|
2038
|
+
if (!a || p.length === 0) return;
|
|
2039
|
+
const { accepted: j, rejected: ue } = Ct(
|
|
2040
|
+
p,
|
|
2041
|
+
N.current.length,
|
|
1700
2042
|
a
|
|
1701
2043
|
);
|
|
1702
|
-
if (
|
|
1703
|
-
|
|
2044
|
+
if (k(
|
|
2045
|
+
ue.length > 0 ? E(ue[0].file.name, ue[0].reason) : null
|
|
1704
2046
|
), j.length === 0) return;
|
|
1705
|
-
const
|
|
1706
|
-
|
|
2047
|
+
const ht = await Promise.all(j.map(Lt));
|
|
2048
|
+
N.current = [...N.current, ...ht], h(N.current);
|
|
1707
2049
|
},
|
|
1708
|
-
[a,
|
|
1709
|
-
),
|
|
1710
|
-
|
|
1711
|
-
}, []),
|
|
1712
|
-
const
|
|
1713
|
-
!
|
|
1714
|
-
},
|
|
1715
|
-
switch (
|
|
2050
|
+
[a, E]
|
|
2051
|
+
), P = O((p) => {
|
|
2052
|
+
N.current = N.current.filter((j) => j.id !== p), h(N.current), k(null);
|
|
2053
|
+
}, []), v = () => {
|
|
2054
|
+
const p = R.current.trim(), j = N.current;
|
|
2055
|
+
!p && j.length === 0 || R.current.length >= xe || (j.length > 0 ? e(p, j) : e(p), Z(""), N.current = [], h([]), k(null), w(null));
|
|
2056
|
+
}, V = (p) => {
|
|
2057
|
+
switch (p) {
|
|
1716
2058
|
case "permission":
|
|
1717
|
-
return
|
|
2059
|
+
return f.voicePermissionDenied;
|
|
1718
2060
|
case "no-speech":
|
|
1719
|
-
return
|
|
2061
|
+
return f.voiceNoSpeech;
|
|
1720
2062
|
case "no-microphone":
|
|
1721
|
-
return
|
|
2063
|
+
return f.voiceNoMicrophone;
|
|
1722
2064
|
case "unavailable":
|
|
1723
|
-
return
|
|
2065
|
+
return f.voiceUnavailable;
|
|
1724
2066
|
}
|
|
1725
|
-
},
|
|
2067
|
+
}, K = En({
|
|
1726
2068
|
lang: (c == null ? void 0 : c.lang) ?? "en-US",
|
|
1727
|
-
onTranscript: (
|
|
1728
|
-
|
|
2069
|
+
onTranscript: (p) => Z(
|
|
2070
|
+
Tn(ne.current, p, xe)
|
|
1729
2071
|
),
|
|
1730
|
-
onEnd: (
|
|
1731
|
-
const j =
|
|
1732
|
-
if (j && (
|
|
1733
|
-
|
|
2072
|
+
onEnd: (p) => {
|
|
2073
|
+
const j = p.trim() !== "";
|
|
2074
|
+
if (j && (z.current = !0), !$.current) {
|
|
2075
|
+
ee();
|
|
1734
2076
|
return;
|
|
1735
2077
|
}
|
|
1736
|
-
j &&
|
|
2078
|
+
j && te();
|
|
1737
2079
|
},
|
|
1738
|
-
onError: (
|
|
1739
|
-
|
|
2080
|
+
onError: (p) => {
|
|
2081
|
+
p === "no-speech" && z.current || (X.current = !0, w(V(p)));
|
|
1740
2082
|
}
|
|
1741
|
-
}),
|
|
1742
|
-
|
|
1743
|
-
const
|
|
1744
|
-
|
|
1745
|
-
}, [
|
|
1746
|
-
const
|
|
1747
|
-
c != null && c.autoSubmit &&
|
|
1748
|
-
},
|
|
1749
|
-
const
|
|
1750
|
-
|
|
1751
|
-
},
|
|
1752
|
-
|
|
1753
|
-
},
|
|
1754
|
-
const
|
|
1755
|
-
|
|
1756
|
-
},
|
|
1757
|
-
|
|
1758
|
-
}, { abort: Y } =
|
|
1759
|
-
|
|
1760
|
-
!t && !u || (
|
|
2083
|
+
}), oe = !!(c != null && c.input) && K.isSupported, F = K.isListening;
|
|
2084
|
+
H(() => {
|
|
2085
|
+
const p = D.current;
|
|
2086
|
+
F && p && (p.scrollLeft = p.scrollWidth);
|
|
2087
|
+
}, [F, T]);
|
|
2088
|
+
const ee = () => {
|
|
2089
|
+
c != null && c.autoSubmit && z.current && !X.current && v();
|
|
2090
|
+
}, te = () => {
|
|
2091
|
+
const p = R.current;
|
|
2092
|
+
K.start() && (ne.current = p);
|
|
2093
|
+
}, L = ({ held: p }) => {
|
|
2094
|
+
w(null), $.current = p, z.current = !1, X.current = !1, l == null || l(), te();
|
|
2095
|
+
}, _ = () => {
|
|
2096
|
+
const p = $.current;
|
|
2097
|
+
$.current = !1, !K.stop() && p && ee();
|
|
2098
|
+
}, U = () => {
|
|
2099
|
+
$.current = !1, K.abort();
|
|
2100
|
+
}, { abort: Y } = K;
|
|
2101
|
+
H(() => {
|
|
2102
|
+
!t && !u || ($.current = !1, Y());
|
|
1761
2103
|
}, [t, u, Y]);
|
|
1762
|
-
const
|
|
1763
|
-
|
|
1764
|
-
},
|
|
1765
|
-
const j =
|
|
1766
|
-
j.length <=
|
|
1767
|
-
},
|
|
1768
|
-
const j = Array.from(
|
|
1769
|
-
|
|
1770
|
-
},
|
|
1771
|
-
var
|
|
2104
|
+
const se = (p) => {
|
|
2105
|
+
p.preventDefault(), U(), v();
|
|
2106
|
+
}, le = (p) => {
|
|
2107
|
+
const j = p.target.value;
|
|
2108
|
+
j.length <= xe && (U(), w(null), Z(j));
|
|
2109
|
+
}, re = (p) => {
|
|
2110
|
+
const j = Array.from(p.target.files ?? []);
|
|
2111
|
+
p.target.value = "", B(j);
|
|
2112
|
+
}, ye = (p) => {
|
|
2113
|
+
var ue;
|
|
1772
2114
|
if (!a) return;
|
|
1773
|
-
const j = Array.from(((
|
|
1774
|
-
j.length !== 0 && (
|
|
2115
|
+
const j = Array.from(((ue = p.clipboardData) == null ? void 0 : ue.files) ?? []);
|
|
2116
|
+
j.length !== 0 && (p.preventDefault(), B(j));
|
|
1775
2117
|
};
|
|
1776
|
-
return /* @__PURE__ */
|
|
2118
|
+
return /* @__PURE__ */ g(
|
|
1777
2119
|
"form",
|
|
1778
2120
|
{
|
|
1779
|
-
onSubmit:
|
|
1780
|
-
onDragEnter: (
|
|
1781
|
-
!a || !
|
|
2121
|
+
onSubmit: se,
|
|
2122
|
+
onDragEnter: (p) => {
|
|
2123
|
+
!a || !Ve(p) || (p.preventDefault(), I.current += 1, x(!0));
|
|
1782
2124
|
},
|
|
1783
|
-
onDragOver: (
|
|
1784
|
-
!a || !
|
|
2125
|
+
onDragOver: (p) => {
|
|
2126
|
+
!a || !Ve(p) || p.preventDefault();
|
|
1785
2127
|
},
|
|
1786
2128
|
onDragLeave: () => {
|
|
1787
|
-
a && (
|
|
2129
|
+
a && (I.current = Math.max(0, I.current - 1), I.current === 0 && x(!1));
|
|
1788
2130
|
},
|
|
1789
|
-
onDrop: (
|
|
2131
|
+
onDrop: (p) => {
|
|
1790
2132
|
var j;
|
|
1791
|
-
a && (
|
|
2133
|
+
a && (p.preventDefault(), I.current = 0, x(!1), B(Array.from(((j = p.dataTransfer) == null ? void 0 : j.files) ?? [])));
|
|
1792
2134
|
},
|
|
1793
2135
|
"data-drag-over": b || void 0,
|
|
1794
2136
|
className: `relative border-t border-claudius-border bg-claudius-surface p-3 ${b ? "ring-2 ring-inset ring-claudius-accent" : ""}`,
|
|
@@ -1798,38 +2140,38 @@ function dn({
|
|
|
1798
2140
|
{
|
|
1799
2141
|
"aria-hidden": "true",
|
|
1800
2142
|
className: "pointer-events-none absolute inset-0 z-10 flex items-center justify-center bg-claudius-surface text-sm font-medium text-claudius-accent",
|
|
1801
|
-
children:
|
|
2143
|
+
children: f.dropFilesHint
|
|
1802
2144
|
}
|
|
1803
2145
|
),
|
|
1804
|
-
a &&
|
|
2146
|
+
a && m.length > 0 && /* @__PURE__ */ i(
|
|
1805
2147
|
"ul",
|
|
1806
2148
|
{
|
|
1807
|
-
"aria-label":
|
|
2149
|
+
"aria-label": f.attachmentsLabel,
|
|
1808
2150
|
className: "mb-2 flex flex-wrap gap-3 pt-1",
|
|
1809
|
-
children:
|
|
1810
|
-
|
|
2151
|
+
children: m.map((p) => /* @__PURE__ */ i("li", { children: /* @__PURE__ */ i(
|
|
2152
|
+
rt,
|
|
1811
2153
|
{
|
|
1812
|
-
attachment:
|
|
2154
|
+
attachment: p,
|
|
1813
2155
|
variant: "composer",
|
|
1814
|
-
onRemove: () =>
|
|
1815
|
-
removeLabel: `${
|
|
2156
|
+
onRemove: () => P(p.id),
|
|
2157
|
+
removeLabel: `${f.removeAttachment}: ${p.name}`
|
|
1816
2158
|
}
|
|
1817
|
-
) },
|
|
2159
|
+
) }, p.id))
|
|
1818
2160
|
}
|
|
1819
2161
|
),
|
|
1820
|
-
/* @__PURE__ */
|
|
1821
|
-
a && /* @__PURE__ */
|
|
2162
|
+
/* @__PURE__ */ g("div", { className: "flex gap-2", children: [
|
|
2163
|
+
a && /* @__PURE__ */ g(Te, { children: [
|
|
1822
2164
|
/* @__PURE__ */ i(
|
|
1823
2165
|
"input",
|
|
1824
2166
|
{
|
|
1825
|
-
ref:
|
|
2167
|
+
ref: S,
|
|
1826
2168
|
type: "file",
|
|
1827
2169
|
multiple: !0,
|
|
1828
2170
|
hidden: !0,
|
|
1829
2171
|
tabIndex: -1,
|
|
1830
2172
|
accept: a.allowedTypes.join(","),
|
|
1831
|
-
onChange:
|
|
1832
|
-
"aria-label":
|
|
2173
|
+
onChange: re,
|
|
2174
|
+
"aria-label": f.attachFile
|
|
1833
2175
|
}
|
|
1834
2176
|
),
|
|
1835
2177
|
/* @__PURE__ */ i(
|
|
@@ -1837,12 +2179,12 @@ function dn({
|
|
|
1837
2179
|
{
|
|
1838
2180
|
type: "button",
|
|
1839
2181
|
onClick: () => {
|
|
1840
|
-
var
|
|
1841
|
-
return (
|
|
2182
|
+
var p;
|
|
2183
|
+
return (p = S.current) == null ? void 0 : p.click();
|
|
1842
2184
|
},
|
|
1843
|
-
disabled: t || !
|
|
1844
|
-
"aria-label":
|
|
1845
|
-
title:
|
|
2185
|
+
disabled: t || !de,
|
|
2186
|
+
"aria-label": f.attachFile,
|
|
2187
|
+
title: f.attachFile,
|
|
1846
2188
|
className: "flex h-11 w-11 shrink-0 items-center justify-center rounded-claudius-sm border border-claudius-border bg-claudius-field text-claudius-text-muted transition-colors hover:text-claudius-text focus:border-claudius-accent focus:outline-none focus:ring-1 focus:ring-claudius-accent disabled:opacity-50",
|
|
1847
2189
|
children: /* @__PURE__ */ i(
|
|
1848
2190
|
"svg",
|
|
@@ -1862,41 +2204,41 @@ function dn({
|
|
|
1862
2204
|
}
|
|
1863
2205
|
)
|
|
1864
2206
|
] }),
|
|
1865
|
-
/* @__PURE__ */
|
|
2207
|
+
/* @__PURE__ */ g("div", { className: "relative min-w-0 flex-1", children: [
|
|
1866
2208
|
/* @__PURE__ */ i(
|
|
1867
2209
|
"input",
|
|
1868
2210
|
{
|
|
1869
|
-
ref:
|
|
2211
|
+
ref: D,
|
|
1870
2212
|
type: "text",
|
|
1871
|
-
value:
|
|
1872
|
-
onChange:
|
|
1873
|
-
onPaste:
|
|
1874
|
-
placeholder:
|
|
2213
|
+
value: T,
|
|
2214
|
+
onChange: le,
|
|
2215
|
+
onPaste: ye,
|
|
2216
|
+
placeholder: F ? f.voiceListening : ce,
|
|
1875
2217
|
disabled: t,
|
|
1876
|
-
"aria-label":
|
|
1877
|
-
"aria-describedby":
|
|
1878
|
-
className: `h-full w-full rounded-claudius-sm border border-claudius-border bg-claudius-field py-2 pl-3 text-sm font-body text-claudius-text placeholder:text-claudius-text-muted focus:border-claudius-accent focus:outline-none focus:ring-1 focus:ring-claudius-accent disabled:opacity-50 ${
|
|
2218
|
+
"aria-label": f.typeYourMessage,
|
|
2219
|
+
"aria-describedby": W ? "char-count" : void 0,
|
|
2220
|
+
className: `h-full w-full rounded-claudius-sm border border-claudius-border bg-claudius-field py-2 pl-3 text-sm font-body text-claudius-text placeholder:text-claudius-text-muted focus:border-claudius-accent focus:outline-none focus:ring-1 focus:ring-claudius-accent disabled:opacity-50 ${F ? "pr-10" : "pr-3"}`
|
|
1879
2221
|
}
|
|
1880
2222
|
),
|
|
1881
|
-
|
|
2223
|
+
F && /* @__PURE__ */ i(wn, { active: K.isSpeechDetected })
|
|
1882
2224
|
] }),
|
|
1883
|
-
|
|
1884
|
-
|
|
2225
|
+
oe && c && /* @__PURE__ */ i(
|
|
2226
|
+
yn,
|
|
1885
2227
|
{
|
|
1886
2228
|
mode: c.mode,
|
|
1887
|
-
isListening:
|
|
2229
|
+
isListening: F,
|
|
1888
2230
|
disabled: t,
|
|
1889
|
-
onStart:
|
|
1890
|
-
onStop:
|
|
1891
|
-
label: c.mode === "hold" ?
|
|
2231
|
+
onStart: L,
|
|
2232
|
+
onStop: _,
|
|
2233
|
+
label: c.mode === "hold" ? f.voiceInputHold : f.voiceInput
|
|
1892
2234
|
}
|
|
1893
2235
|
),
|
|
1894
|
-
|
|
2236
|
+
fe ? /* @__PURE__ */ i(
|
|
1895
2237
|
"button",
|
|
1896
2238
|
{
|
|
1897
2239
|
type: "button",
|
|
1898
2240
|
onClick: r,
|
|
1899
|
-
"aria-label":
|
|
2241
|
+
"aria-label": f.stopGenerating,
|
|
1900
2242
|
className: "flex h-11 w-11 shrink-0 items-center justify-center rounded-claudius-sm bg-claudius-accent text-claudius-accent-text transition-colors hover:opacity-90",
|
|
1901
2243
|
children: /* @__PURE__ */ i(
|
|
1902
2244
|
"svg",
|
|
@@ -1914,10 +2256,10 @@ function dn({
|
|
|
1914
2256
|
"button",
|
|
1915
2257
|
{
|
|
1916
2258
|
type: "submit",
|
|
1917
|
-
disabled: t ||
|
|
1918
|
-
"aria-label":
|
|
2259
|
+
disabled: t || G,
|
|
2260
|
+
"aria-label": f.sendMessage,
|
|
1919
2261
|
className: "flex h-11 w-11 shrink-0 items-center justify-center rounded-claudius-sm bg-claudius-accent text-claudius-accent-text transition-colors hover:opacity-90 disabled:opacity-50",
|
|
1920
|
-
children: /* @__PURE__ */
|
|
2262
|
+
children: /* @__PURE__ */ g(
|
|
1921
2263
|
"svg",
|
|
1922
2264
|
{
|
|
1923
2265
|
width: "16",
|
|
@@ -1938,17 +2280,17 @@ function dn({
|
|
|
1938
2280
|
}
|
|
1939
2281
|
)
|
|
1940
2282
|
] }),
|
|
1941
|
-
(
|
|
1942
|
-
|
|
2283
|
+
(d ?? y) && /* @__PURE__ */ i("div", { role: "alert", className: "mt-1 text-xs text-claudius-error", children: d ?? y }),
|
|
2284
|
+
W && /* @__PURE__ */ g(
|
|
1943
2285
|
"div",
|
|
1944
2286
|
{
|
|
1945
2287
|
id: "char-count",
|
|
1946
|
-
className: `mt-1 text-xs text-right ${
|
|
2288
|
+
className: `mt-1 text-xs text-right ${G ? "text-claudius-error" : "text-claudius-text-muted"}`,
|
|
1947
2289
|
"aria-live": "polite",
|
|
1948
2290
|
children: [
|
|
1949
|
-
|
|
2291
|
+
J,
|
|
1950
2292
|
"/",
|
|
1951
|
-
|
|
2293
|
+
xe
|
|
1952
2294
|
]
|
|
1953
2295
|
}
|
|
1954
2296
|
)
|
|
@@ -1956,30 +2298,30 @@ function dn({
|
|
|
1956
2298
|
}
|
|
1957
2299
|
);
|
|
1958
2300
|
}
|
|
1959
|
-
const
|
|
2301
|
+
const Mn = ["blog", "page", "external"], Ln = {
|
|
1960
2302
|
blog: "Blog",
|
|
1961
2303
|
page: "Page",
|
|
1962
2304
|
external: "External"
|
|
1963
2305
|
};
|
|
1964
|
-
function
|
|
2306
|
+
function Dn(e) {
|
|
1965
2307
|
try {
|
|
1966
2308
|
return new URL(e).hostname;
|
|
1967
2309
|
} catch {
|
|
1968
2310
|
return e;
|
|
1969
2311
|
}
|
|
1970
2312
|
}
|
|
1971
|
-
const
|
|
2313
|
+
const In = Ae(function({
|
|
1972
2314
|
sources: t,
|
|
1973
2315
|
onClose: n
|
|
1974
2316
|
}) {
|
|
1975
|
-
const r =
|
|
2317
|
+
const r = Mn.map((s) => ({
|
|
1976
2318
|
type: s,
|
|
1977
|
-
label:
|
|
2319
|
+
label: Ln[s],
|
|
1978
2320
|
items: t.filter((a) => a.type === s)
|
|
1979
2321
|
})).filter((s) => s.items.length > 0), o = t.length === 1 ? "1 source found" : `${t.length} sources found`;
|
|
1980
|
-
return /* @__PURE__ */
|
|
1981
|
-
/* @__PURE__ */
|
|
1982
|
-
/* @__PURE__ */
|
|
2322
|
+
return /* @__PURE__ */ g("div", { className: "absolute inset-y-0 left-0 z-10 flex w-[280px] flex-col border-r-2 border-claudius-border bg-claudius-surface rounded-r-claudius-lg transition-transform duration-200 ease-out", children: [
|
|
2323
|
+
/* @__PURE__ */ g("div", { className: "flex items-center justify-between border-b border-claudius-border px-4 py-3", children: [
|
|
2324
|
+
/* @__PURE__ */ g("div", { children: [
|
|
1983
2325
|
/* @__PURE__ */ i("h3", { className: "text-sm font-heading font-semibold text-claudius-text", children: "Sources" }),
|
|
1984
2326
|
/* @__PURE__ */ i("p", { className: "text-xs text-claudius-text-muted", children: o })
|
|
1985
2327
|
] }),
|
|
@@ -1989,7 +2331,7 @@ const mn = ke(function({
|
|
|
1989
2331
|
onClick: n,
|
|
1990
2332
|
"aria-label": "Close sources",
|
|
1991
2333
|
className: "flex h-7 w-7 items-center justify-center rounded-claudius-full text-claudius-text-muted transition-colors hover:bg-claudius-surface-muted hover:text-claudius-text",
|
|
1992
|
-
children: /* @__PURE__ */
|
|
2334
|
+
children: /* @__PURE__ */ g(
|
|
1993
2335
|
"svg",
|
|
1994
2336
|
{
|
|
1995
2337
|
width: "14",
|
|
@@ -2010,11 +2352,11 @@ const mn = ke(function({
|
|
|
2010
2352
|
}
|
|
2011
2353
|
)
|
|
2012
2354
|
] }),
|
|
2013
|
-
/* @__PURE__ */ i("div", { className: "flex-1 overflow-y-auto px-3 py-3 space-y-4", children: r.map((s) => /* @__PURE__ */
|
|
2355
|
+
/* @__PURE__ */ i("div", { className: "flex-1 overflow-y-auto px-3 py-3 space-y-4", children: r.map((s) => /* @__PURE__ */ g("div", { children: [
|
|
2014
2356
|
/* @__PURE__ */ i("h4", { className: "mb-2 text-xs font-semibold uppercase tracking-wide text-claudius-text-muted", children: s.label }),
|
|
2015
2357
|
/* @__PURE__ */ i("div", { className: "space-y-2", children: s.items.map((a) => {
|
|
2016
|
-
const c =
|
|
2017
|
-
return c ? /* @__PURE__ */
|
|
2358
|
+
const c = ke(a.url);
|
|
2359
|
+
return c ? /* @__PURE__ */ g(
|
|
2018
2360
|
"a",
|
|
2019
2361
|
{
|
|
2020
2362
|
href: c,
|
|
@@ -2023,7 +2365,7 @@ const mn = ke(function({
|
|
|
2023
2365
|
className: "block rounded-claudius-md border-2 border-claudius-border bg-claudius-surface-muted p-3 transition-colors hover:bg-claudius-border",
|
|
2024
2366
|
children: [
|
|
2025
2367
|
/* @__PURE__ */ i("p", { className: "truncate text-sm font-medium text-claudius-text", children: a.title }),
|
|
2026
|
-
/* @__PURE__ */ i("p", { className: "mt-0.5 text-xs text-claudius-text-muted", children:
|
|
2368
|
+
/* @__PURE__ */ i("p", { className: "mt-0.5 text-xs text-claudius-text-muted", children: Dn(c) })
|
|
2027
2369
|
]
|
|
2028
2370
|
},
|
|
2029
2371
|
c
|
|
@@ -2032,7 +2374,7 @@ const mn = ke(function({
|
|
|
2032
2374
|
] }, s.type)) })
|
|
2033
2375
|
] });
|
|
2034
2376
|
});
|
|
2035
|
-
function
|
|
2377
|
+
function On({
|
|
2036
2378
|
title: e,
|
|
2037
2379
|
subtitle: t,
|
|
2038
2380
|
titleId: n,
|
|
@@ -2040,7 +2382,7 @@ function gn({
|
|
|
2040
2382
|
onClose: o,
|
|
2041
2383
|
actions: s
|
|
2042
2384
|
}) {
|
|
2043
|
-
return /* @__PURE__ */
|
|
2385
|
+
return /* @__PURE__ */ g("div", { className: "flex items-center gap-3 bg-claudius-accent px-5 py-4", children: [
|
|
2044
2386
|
/* @__PURE__ */ i(
|
|
2045
2387
|
"div",
|
|
2046
2388
|
{
|
|
@@ -2049,7 +2391,7 @@ function gn({
|
|
|
2049
2391
|
children: e.charAt(0).toUpperCase()
|
|
2050
2392
|
}
|
|
2051
2393
|
),
|
|
2052
|
-
/* @__PURE__ */
|
|
2394
|
+
/* @__PURE__ */ g("div", { className: "flex-1", children: [
|
|
2053
2395
|
/* @__PURE__ */ i(
|
|
2054
2396
|
"h2",
|
|
2055
2397
|
{
|
|
@@ -2067,7 +2409,7 @@ function gn({
|
|
|
2067
2409
|
onClick: o,
|
|
2068
2410
|
"aria-label": r,
|
|
2069
2411
|
className: "flex h-10 w-10 items-center justify-center rounded-claudius-full text-claudius-accent-text-muted transition-colors hover:bg-claudius-accent-soft hover:text-claudius-accent-text",
|
|
2070
|
-
children: /* @__PURE__ */
|
|
2412
|
+
children: /* @__PURE__ */ g(
|
|
2071
2413
|
"svg",
|
|
2072
2414
|
{
|
|
2073
2415
|
width: "18",
|
|
@@ -2089,12 +2431,12 @@ function gn({
|
|
|
2089
2431
|
)
|
|
2090
2432
|
] });
|
|
2091
2433
|
}
|
|
2092
|
-
function
|
|
2434
|
+
function $n({
|
|
2093
2435
|
message: e,
|
|
2094
2436
|
retryLabel: t,
|
|
2095
2437
|
onRetry: n
|
|
2096
2438
|
}) {
|
|
2097
|
-
return /* @__PURE__ */
|
|
2439
|
+
return /* @__PURE__ */ g(
|
|
2098
2440
|
"div",
|
|
2099
2441
|
{
|
|
2100
2442
|
role: "alert",
|
|
@@ -2114,7 +2456,7 @@ function bn({
|
|
|
2114
2456
|
}
|
|
2115
2457
|
);
|
|
2116
2458
|
}
|
|
2117
|
-
function
|
|
2459
|
+
function jn({ label: e }) {
|
|
2118
2460
|
return /* @__PURE__ */ i(
|
|
2119
2461
|
"div",
|
|
2120
2462
|
{
|
|
@@ -2122,7 +2464,7 @@ function yn({ label: e }) {
|
|
|
2122
2464
|
"aria-live": "polite",
|
|
2123
2465
|
"aria-label": e,
|
|
2124
2466
|
className: "mr-auto flex max-w-[85%]",
|
|
2125
|
-
children: /* @__PURE__ */
|
|
2467
|
+
children: /* @__PURE__ */ g("div", { className: "flex gap-1 rounded-claudius-bubble rounded-bl-claudius-tail bg-claudius-assistant-bubble px-4 py-3", children: [
|
|
2126
2468
|
/* @__PURE__ */ i("span", { className: "h-2 w-2 motion-safe:animate-bounce rounded-claudius-full bg-claudius-text-muted [animation-delay:0ms]" }),
|
|
2127
2469
|
/* @__PURE__ */ i("span", { className: "h-2 w-2 motion-safe:animate-bounce rounded-claudius-full bg-claudius-text-muted [animation-delay:150ms]" }),
|
|
2128
2470
|
/* @__PURE__ */ i("span", { className: "h-2 w-2 motion-safe:animate-bounce rounded-claudius-full bg-claudius-text-muted [animation-delay:300ms]" })
|
|
@@ -2130,29 +2472,29 @@ function yn({ label: e }) {
|
|
|
2130
2472
|
}
|
|
2131
2473
|
);
|
|
2132
2474
|
}
|
|
2133
|
-
function
|
|
2134
|
-
const [r, o] =
|
|
2135
|
-
|
|
2475
|
+
function Pn({ label: e, items: t, onOpen: n }) {
|
|
2476
|
+
const [r, o] = M(!1), s = Ne(), a = Ne(), c = C(null), l = C(null), u = C([]), f = C(null), T = (b) => {
|
|
2477
|
+
f.current = b, o(!0), n == null || n();
|
|
2136
2478
|
}, A = (b) => {
|
|
2137
|
-
var
|
|
2138
|
-
o(!1), (
|
|
2479
|
+
var x;
|
|
2480
|
+
o(!1), (x = l.current) == null || x.focus();
|
|
2139
2481
|
};
|
|
2140
|
-
|
|
2141
|
-
var
|
|
2482
|
+
H(() => {
|
|
2483
|
+
var x;
|
|
2142
2484
|
if (!r) return;
|
|
2143
|
-
|
|
2485
|
+
f.current !== null && ((x = u.current[f.current]) == null || x.focus(), f.current = null);
|
|
2144
2486
|
const b = (y) => {
|
|
2145
|
-
var
|
|
2146
|
-
(
|
|
2487
|
+
var w;
|
|
2488
|
+
(w = c.current) != null && w.contains(y.target) || o(!1);
|
|
2147
2489
|
};
|
|
2148
2490
|
return document.addEventListener("pointerdown", b), () => document.removeEventListener("pointerdown", b);
|
|
2149
2491
|
}, [r]);
|
|
2150
|
-
const
|
|
2492
|
+
const m = (b) => {
|
|
2151
2493
|
var y;
|
|
2152
|
-
const
|
|
2153
|
-
(y = u.current[(b +
|
|
2494
|
+
const x = t.length;
|
|
2495
|
+
(y = u.current[(b + x) % x]) == null || y.focus();
|
|
2154
2496
|
};
|
|
2155
|
-
return /* @__PURE__ */
|
|
2497
|
+
return /* @__PURE__ */ g("div", { ref: c, className: "relative", children: [
|
|
2156
2498
|
/* @__PURE__ */ i(
|
|
2157
2499
|
"button",
|
|
2158
2500
|
{
|
|
@@ -2163,12 +2505,12 @@ function xn({ label: e, items: t, onOpen: n }) {
|
|
|
2163
2505
|
"aria-haspopup": "menu",
|
|
2164
2506
|
"aria-expanded": r,
|
|
2165
2507
|
"aria-controls": r ? a : void 0,
|
|
2166
|
-
onClick: () => r ? A() :
|
|
2508
|
+
onClick: () => r ? A() : T(0),
|
|
2167
2509
|
onKeyDown: (b) => {
|
|
2168
|
-
b.key === "ArrowDown" ? (b.preventDefault(),
|
|
2510
|
+
b.key === "ArrowDown" ? (b.preventDefault(), T(0)) : b.key === "ArrowUp" && (b.preventDefault(), T(t.length - 1));
|
|
2169
2511
|
},
|
|
2170
2512
|
className: "flex h-10 w-10 items-center justify-center rounded-claudius-full text-claudius-accent-text-muted transition-colors hover:bg-claudius-accent-soft hover:text-claudius-accent-text",
|
|
2171
|
-
children: /* @__PURE__ */
|
|
2513
|
+
children: /* @__PURE__ */ g(
|
|
2172
2514
|
"svg",
|
|
2173
2515
|
{
|
|
2174
2516
|
width: "18",
|
|
@@ -2193,21 +2535,21 @@ function xn({ label: e, items: t, onOpen: n }) {
|
|
|
2193
2535
|
"aria-labelledby": s,
|
|
2194
2536
|
tabIndex: -1,
|
|
2195
2537
|
onKeyDown: (b) => {
|
|
2196
|
-
const
|
|
2538
|
+
const x = u.current.findIndex(
|
|
2197
2539
|
(y) => y === document.activeElement
|
|
2198
2540
|
);
|
|
2199
2541
|
switch (b.key) {
|
|
2200
2542
|
case "ArrowDown":
|
|
2201
|
-
b.preventDefault(),
|
|
2543
|
+
b.preventDefault(), m(x + 1);
|
|
2202
2544
|
break;
|
|
2203
2545
|
case "ArrowUp":
|
|
2204
|
-
b.preventDefault(),
|
|
2546
|
+
b.preventDefault(), m(x === -1 ? t.length - 1 : x - 1);
|
|
2205
2547
|
break;
|
|
2206
2548
|
case "Home":
|
|
2207
|
-
b.preventDefault(),
|
|
2549
|
+
b.preventDefault(), m(0);
|
|
2208
2550
|
break;
|
|
2209
2551
|
case "End":
|
|
2210
|
-
b.preventDefault(),
|
|
2552
|
+
b.preventDefault(), m(t.length - 1);
|
|
2211
2553
|
break;
|
|
2212
2554
|
case "Escape":
|
|
2213
2555
|
b.preventDefault(), b.stopPropagation(), A();
|
|
@@ -2219,15 +2561,15 @@ function xn({ label: e, items: t, onOpen: n }) {
|
|
|
2219
2561
|
},
|
|
2220
2562
|
onBlur: (b) => {
|
|
2221
2563
|
var y;
|
|
2222
|
-
const
|
|
2223
|
-
|
|
2564
|
+
const x = b.relatedTarget;
|
|
2565
|
+
x && ((y = c.current) != null && y.contains(x) || o(!1));
|
|
2224
2566
|
},
|
|
2225
2567
|
className: "absolute right-0 top-full z-20 mt-1 min-w-[12rem] rounded-claudius-md border border-claudius-border bg-claudius-surface py-1 shadow-claudius-elevated",
|
|
2226
|
-
children: t.map((b,
|
|
2568
|
+
children: t.map((b, x) => /* @__PURE__ */ i(
|
|
2227
2569
|
"button",
|
|
2228
2570
|
{
|
|
2229
2571
|
ref: (y) => {
|
|
2230
|
-
u.current[
|
|
2572
|
+
u.current[x] = y;
|
|
2231
2573
|
},
|
|
2232
2574
|
type: "button",
|
|
2233
2575
|
role: "menuitem",
|
|
@@ -2245,41 +2587,41 @@ function xn({ label: e, items: t, onOpen: n }) {
|
|
|
2245
2587
|
)
|
|
2246
2588
|
] });
|
|
2247
2589
|
}
|
|
2248
|
-
function
|
|
2249
|
-
const [r, o] =
|
|
2250
|
-
return
|
|
2590
|
+
function Un(e, t, n) {
|
|
2591
|
+
const [r, o] = M(0), s = C(0), a = C(0), c = C(0), l = C(!1);
|
|
2592
|
+
return H(() => {
|
|
2251
2593
|
const u = e.current;
|
|
2252
2594
|
if (!n || !u) return;
|
|
2253
|
-
const
|
|
2595
|
+
const f = (m) => {
|
|
2254
2596
|
if (u.scrollTop > 0) {
|
|
2255
2597
|
l.current = !1;
|
|
2256
2598
|
return;
|
|
2257
2599
|
}
|
|
2258
|
-
l.current = !0, a.current =
|
|
2259
|
-
},
|
|
2600
|
+
l.current = !0, a.current = m.touches[0].clientY, c.current = Date.now();
|
|
2601
|
+
}, T = (m) => {
|
|
2260
2602
|
if (!l.current) return;
|
|
2261
|
-
let
|
|
2262
|
-
|
|
2603
|
+
let h = m.touches[0].clientY - a.current;
|
|
2604
|
+
h < 0 && (h = h * 0.3), s.current = h, o(h);
|
|
2263
2605
|
}, A = () => {
|
|
2264
2606
|
if (!l.current) return;
|
|
2265
2607
|
l.current = !1;
|
|
2266
|
-
const
|
|
2267
|
-
|
|
2608
|
+
const m = s.current, h = (Date.now() - c.current) / 1e3, d = u.getBoundingClientRect().height, k = h > 0.05 && m > 0 && m / h > 500, b = m > d * 0.3;
|
|
2609
|
+
k || b ? t() : (s.current = 0, o(0));
|
|
2268
2610
|
};
|
|
2269
|
-
return u.addEventListener("touchstart",
|
|
2270
|
-
u.removeEventListener("touchstart",
|
|
2611
|
+
return u.addEventListener("touchstart", f, { passive: !0 }), u.addEventListener("touchmove", T, { passive: !0 }), u.addEventListener("touchend", A), () => {
|
|
2612
|
+
u.removeEventListener("touchstart", f), u.removeEventListener("touchmove", T), u.removeEventListener("touchend", A);
|
|
2271
2613
|
};
|
|
2272
2614
|
}, [e, t, n]), { offsetY: r };
|
|
2273
2615
|
}
|
|
2274
|
-
const
|
|
2275
|
-
function
|
|
2276
|
-
|
|
2616
|
+
const Bn = 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])';
|
|
2617
|
+
function Fn(e, t) {
|
|
2618
|
+
H(() => {
|
|
2277
2619
|
const n = e.current;
|
|
2278
2620
|
if (!n) return;
|
|
2279
2621
|
const r = (o) => {
|
|
2280
2622
|
if (o.key !== "Tab") return;
|
|
2281
2623
|
const s = Array.from(
|
|
2282
|
-
n.querySelectorAll(
|
|
2624
|
+
n.querySelectorAll(Bn)
|
|
2283
2625
|
).filter((u) => !u.hasAttribute("aria-hidden"));
|
|
2284
2626
|
if (s.length === 0) return;
|
|
2285
2627
|
const a = s[0], c = s[s.length - 1], l = document.activeElement;
|
|
@@ -2288,53 +2630,53 @@ function Tn(e, t) {
|
|
|
2288
2630
|
return n.addEventListener("keydown", r), () => n.removeEventListener("keydown", r);
|
|
2289
2631
|
}, [e, t]);
|
|
2290
2632
|
}
|
|
2291
|
-
function
|
|
2633
|
+
function ve() {
|
|
2292
2634
|
if (!(typeof window > "u") && !(typeof window.SpeechSynthesisUtterance > "u"))
|
|
2293
2635
|
return window.speechSynthesis ?? void 0;
|
|
2294
2636
|
}
|
|
2295
|
-
function
|
|
2296
|
-
const [t] =
|
|
2637
|
+
function _n(e) {
|
|
2638
|
+
const [t] = M(() => ve() !== void 0), [n, r] = M(null), [o, s] = M(!1), a = C(0), c = C(!1), l = C([]), u = O(() => {
|
|
2297
2639
|
a.current += 1, c.current = !1, l.current = [], r(null), s(!1);
|
|
2298
|
-
}, []),
|
|
2299
|
-
const
|
|
2640
|
+
}, []), f = O(() => {
|
|
2641
|
+
const h = l.current.length > 0;
|
|
2300
2642
|
u();
|
|
2301
|
-
const
|
|
2302
|
-
!
|
|
2303
|
-
}, [u]),
|
|
2304
|
-
(
|
|
2305
|
-
const
|
|
2306
|
-
if (!
|
|
2307
|
-
u(), (
|
|
2308
|
-
const b =
|
|
2643
|
+
const d = ve();
|
|
2644
|
+
!h || !d || (d.cancel(), d.paused && d.resume());
|
|
2645
|
+
}, [u]), T = O(
|
|
2646
|
+
(h, d) => {
|
|
2647
|
+
const k = ve();
|
|
2648
|
+
if (!k) return;
|
|
2649
|
+
u(), (k.speaking || k.pending) && k.cancel(), k.paused && k.resume();
|
|
2650
|
+
const b = kn(d);
|
|
2309
2651
|
if (b.length === 0) return;
|
|
2310
|
-
const
|
|
2311
|
-
l.current = b.map((
|
|
2312
|
-
const
|
|
2313
|
-
return
|
|
2652
|
+
const x = a.current, y = () => a.current === x;
|
|
2653
|
+
l.current = b.map((w, D) => {
|
|
2654
|
+
const S = new SpeechSynthesisUtterance(w);
|
|
2655
|
+
return S.lang = e, S.onerror = (N) => {
|
|
2314
2656
|
if (!y()) return;
|
|
2315
|
-
(
|
|
2316
|
-
},
|
|
2657
|
+
(N.error === "interrupted" || N.error === "canceled") && !c.current ? u() : f();
|
|
2658
|
+
}, S.onpause = () => {
|
|
2317
2659
|
y() && s(!0);
|
|
2318
|
-
},
|
|
2660
|
+
}, S.onresume = () => {
|
|
2319
2661
|
y() && s(!1);
|
|
2320
|
-
},
|
|
2321
|
-
y() && (c.current && !
|
|
2322
|
-
},
|
|
2323
|
-
}), r(
|
|
2324
|
-
for (const
|
|
2662
|
+
}, S.onend = () => {
|
|
2663
|
+
y() && (c.current && !k.paused ? f() : D === b.length - 1 && u());
|
|
2664
|
+
}, S;
|
|
2665
|
+
}), r(h);
|
|
2666
|
+
for (const w of l.current) k.speak(w);
|
|
2325
2667
|
},
|
|
2326
|
-
[e,
|
|
2327
|
-
), A =
|
|
2328
|
-
const
|
|
2329
|
-
|
|
2330
|
-
}, []),
|
|
2331
|
-
const
|
|
2332
|
-
|
|
2668
|
+
[e, f, u]
|
|
2669
|
+
), A = O(() => {
|
|
2670
|
+
const h = ve();
|
|
2671
|
+
h && (c.current = !0, h.pause(), h.paused && s(!0));
|
|
2672
|
+
}, []), m = O(() => {
|
|
2673
|
+
const h = ve();
|
|
2674
|
+
h && (c.current = !1, h.resume(), s(!1));
|
|
2333
2675
|
}, []);
|
|
2334
|
-
return
|
|
2676
|
+
return H(() => f, [f]), { isSupported: t, activeId: n, isPaused: o, speak: T, pause: A, resume: m, cancel: f };
|
|
2335
2677
|
}
|
|
2336
|
-
const
|
|
2337
|
-
function
|
|
2678
|
+
const Hn = /^([ \t]*)(`{3,}|~{3,})(.*)$/, zn = /^( {0,3})<(?![A-Za-z][A-Za-z0-9+.-]{1,31}:[^<>\s]*>|[A-Za-z0-9][^\s<>@]*@[^\s<>]+>)(?=[A-Za-z!?/])/, Wn = /^(?: {4}|\t)/;
|
|
2679
|
+
function it(e) {
|
|
2338
2680
|
let t = 0;
|
|
2339
2681
|
for (const n of e)
|
|
2340
2682
|
if (n === " ") t += 1;
|
|
@@ -2342,30 +2684,30 @@ function ot(e) {
|
|
|
2342
2684
|
else break;
|
|
2343
2685
|
return t;
|
|
2344
2686
|
}
|
|
2345
|
-
function
|
|
2687
|
+
function Ke(e) {
|
|
2346
2688
|
let t = e.length;
|
|
2347
2689
|
for (; t > 0 && (e[t - 1] === " " || e[t - 1] === " "); ) t -= 1;
|
|
2348
2690
|
return t === e.length ? e : e.slice(0, t);
|
|
2349
2691
|
}
|
|
2350
|
-
function
|
|
2351
|
-
const t =
|
|
2692
|
+
function Gn(e) {
|
|
2693
|
+
const t = Hn.exec(e);
|
|
2352
2694
|
if (!t) return null;
|
|
2353
2695
|
const [, n, r, o] = t;
|
|
2354
2696
|
return r[0] === "`" && o.includes("`") ? null : {
|
|
2355
2697
|
indent: n,
|
|
2356
|
-
indentColumns:
|
|
2698
|
+
indentColumns: it(n),
|
|
2357
2699
|
char: r[0],
|
|
2358
2700
|
length: r.length
|
|
2359
2701
|
};
|
|
2360
2702
|
}
|
|
2361
|
-
function
|
|
2703
|
+
function Vn(e, t) {
|
|
2362
2704
|
const n = e.trim();
|
|
2363
2705
|
if (n.length < t.length) return !1;
|
|
2364
2706
|
for (const r of n)
|
|
2365
2707
|
if (r !== t.char) return !1;
|
|
2366
|
-
return
|
|
2708
|
+
return it(e) <= t.indentColumns + 3;
|
|
2367
2709
|
}
|
|
2368
|
-
function
|
|
2710
|
+
function Kn(e) {
|
|
2369
2711
|
const t = e.replace(/\r\n?/g, `
|
|
2370
2712
|
`).split(`
|
|
2371
2713
|
`), n = [];
|
|
@@ -2373,31 +2715,31 @@ function Mn(e) {
|
|
|
2373
2715
|
for (let o = 0; o < t.length; o++) {
|
|
2374
2716
|
const s = t[o];
|
|
2375
2717
|
if (r) {
|
|
2376
|
-
n.push(s),
|
|
2718
|
+
n.push(s), Vn(s, r) && (r = null);
|
|
2377
2719
|
continue;
|
|
2378
2720
|
}
|
|
2379
|
-
const a =
|
|
2721
|
+
const a = Gn(s);
|
|
2380
2722
|
if (a) {
|
|
2381
2723
|
r = a, n.push(s);
|
|
2382
2724
|
continue;
|
|
2383
2725
|
}
|
|
2384
|
-
let c = s.replace(
|
|
2726
|
+
let c = s.replace(zn, "$1\\<");
|
|
2385
2727
|
const l = t[o + 1];
|
|
2386
2728
|
s.trim() !== "" && l !== void 0 && l.trim() !== "" && // Possibly indented code, where trailing spaces would be content.
|
|
2387
|
-
!
|
|
2388
|
-
!s.endsWith("\\") && (c =
|
|
2729
|
+
!Wn.test(s) && // Already a hard break.
|
|
2730
|
+
!s.endsWith("\\") && (c = Ke(c) + " "), n.push(c);
|
|
2389
2731
|
}
|
|
2390
2732
|
if (r)
|
|
2391
2733
|
n[n.length - 1] === "" && n.pop(), n.push(r.indent + r.char.repeat(r.length));
|
|
2392
2734
|
else {
|
|
2393
2735
|
for (; n.length > 0 && n[n.length - 1].trim() === ""; ) n.pop();
|
|
2394
|
-
n.length > 0 && (n[n.length - 1] =
|
|
2736
|
+
n.length > 0 && (n[n.length - 1] = Ke(n[n.length - 1]));
|
|
2395
2737
|
}
|
|
2396
2738
|
return n.join(`
|
|
2397
2739
|
`);
|
|
2398
2740
|
}
|
|
2399
|
-
const
|
|
2400
|
-
function
|
|
2741
|
+
const Yn = /[\u00a0\u202f]/g;
|
|
2742
|
+
function qn(e) {
|
|
2401
2743
|
if (e.formatDate) return e.formatDate;
|
|
2402
2744
|
const t = (o) => new Intl.DateTimeFormat(o, {
|
|
2403
2745
|
dateStyle: "medium",
|
|
@@ -2417,11 +2759,11 @@ function Dn(e) {
|
|
|
2417
2759
|
const r = n;
|
|
2418
2760
|
return r ? (o) => r.format(o) : (o) => o.toISOString();
|
|
2419
2761
|
}
|
|
2420
|
-
function
|
|
2421
|
-
const t =
|
|
2422
|
-
return (n) => t(n).replace(
|
|
2762
|
+
function Zn(e) {
|
|
2763
|
+
const t = qn(e);
|
|
2764
|
+
return (n) => t(n).replace(Yn, " ");
|
|
2423
2765
|
}
|
|
2424
|
-
function
|
|
2766
|
+
function Jn(e, t) {
|
|
2425
2767
|
var n;
|
|
2426
2768
|
try {
|
|
2427
2769
|
return ((n = new Intl.DateTimeFormat("en", {
|
|
@@ -2432,7 +2774,7 @@ function In(e, t) {
|
|
|
2432
2774
|
return "";
|
|
2433
2775
|
}
|
|
2434
2776
|
}
|
|
2435
|
-
function
|
|
2777
|
+
function ct(e) {
|
|
2436
2778
|
const t = e.replace(/\s+/g, " ").trim();
|
|
2437
2779
|
if (t === "") return "";
|
|
2438
2780
|
const n = Math.max(
|
|
@@ -2441,57 +2783,57 @@ function st(e) {
|
|
|
2441
2783
|
), r = "`".repeat(n + 1), o = t.startsWith("`") || t.endsWith("`") ? " " : "";
|
|
2442
2784
|
return `${r}${o}${t}${o}${r}`;
|
|
2443
2785
|
}
|
|
2444
|
-
const
|
|
2786
|
+
const Qn = {
|
|
2445
2787
|
"(": "%28",
|
|
2446
2788
|
")": "%29",
|
|
2447
2789
|
"<": "%3C",
|
|
2448
2790
|
">": "%3E",
|
|
2449
2791
|
"\\": "%5C"
|
|
2450
2792
|
};
|
|
2451
|
-
function
|
|
2452
|
-
const n =
|
|
2793
|
+
function Xn(e, t) {
|
|
2794
|
+
const n = be(e.title || e.url).replace(/\s+/g, " ").trim().replace(/[\\[\]<]/g, "\\$&"), r = ke(be(e.url));
|
|
2453
2795
|
if (!r) return `${t + 1}. ${n}`;
|
|
2454
|
-
const o = r.replace(/[()<>\\]/g, (s) =>
|
|
2796
|
+
const o = r.replace(/[()<>\\]/g, (s) => Qn[s]).replace(/\s/g, "%20");
|
|
2455
2797
|
return `${t + 1}. [${n}](${o})`;
|
|
2456
2798
|
}
|
|
2457
|
-
function
|
|
2458
|
-
const t =
|
|
2459
|
-
return `- ${t} (${
|
|
2799
|
+
function er(e) {
|
|
2800
|
+
const t = ct(be(e.name)), n = Me(Number(e.size));
|
|
2801
|
+
return `- ${t} (${be(e.mediaType)}, ${n})`;
|
|
2460
2802
|
}
|
|
2461
|
-
function
|
|
2803
|
+
function be(e) {
|
|
2462
2804
|
return typeof e == "string" ? e : String(e ?? "");
|
|
2463
2805
|
}
|
|
2464
|
-
function
|
|
2806
|
+
function Ce(e) {
|
|
2465
2807
|
return Array.isArray(e) ? e.filter(
|
|
2466
2808
|
(t) => t !== null && typeof t == "object"
|
|
2467
2809
|
) : [];
|
|
2468
2810
|
}
|
|
2469
|
-
function
|
|
2470
|
-
const { labels: n } = t, r =
|
|
2811
|
+
function tr(e, t) {
|
|
2812
|
+
const { labels: n } = t, r = Zn(t), o = t.now ?? /* @__PURE__ */ new Date(), s = Jn(o, t.timeZone), a = r(o) + (s ? ` (${s})` : ""), c = [
|
|
2471
2813
|
`# ${n.title}`,
|
|
2472
|
-
|
|
2814
|
+
ge(n.exported, { date: a })
|
|
2473
2815
|
];
|
|
2474
2816
|
for (const l of e) {
|
|
2475
2817
|
if (l === null || typeof l != "object") continue;
|
|
2476
|
-
const u = l.role === "user" ? n.user : n.assistant,
|
|
2477
|
-
c.push(`## ${u}${
|
|
2478
|
-
const A =
|
|
2818
|
+
const u = l.role === "user" ? n.user : n.assistant, f = l.createdAt ? new Date(l.createdAt) : null, T = f && !Number.isNaN(f.getTime()) ? ` · ${r(f)}` : "";
|
|
2819
|
+
c.push(`## ${u}${T}`);
|
|
2820
|
+
const A = Kn(be(l.content));
|
|
2479
2821
|
A && c.push(A);
|
|
2480
|
-
const
|
|
2481
|
-
|
|
2822
|
+
const m = Ce(l.attachments);
|
|
2823
|
+
m.length && c.push(
|
|
2482
2824
|
n.attachments,
|
|
2483
|
-
|
|
2825
|
+
m.map(er).join(`
|
|
2484
2826
|
`)
|
|
2485
2827
|
);
|
|
2486
|
-
const
|
|
2487
|
-
|
|
2488
|
-
|
|
2489
|
-
(
|
|
2828
|
+
const h = Ce(l.toolUses);
|
|
2829
|
+
h.length && c.push(
|
|
2830
|
+
h.map(
|
|
2831
|
+
(k) => `${n.toolUsed} ${ct(be(k.name))}`
|
|
2490
2832
|
).join(`
|
|
2491
2833
|
`)
|
|
2492
2834
|
);
|
|
2493
|
-
const
|
|
2494
|
-
|
|
2835
|
+
const d = Ce(l.sources);
|
|
2836
|
+
d.length && c.push(n.sources, d.map(Xn).join(`
|
|
2495
2837
|
`));
|
|
2496
2838
|
}
|
|
2497
2839
|
return c.join(`
|
|
@@ -2499,17 +2841,17 @@ function Pn(e, t) {
|
|
|
2499
2841
|
`) + `
|
|
2500
2842
|
`;
|
|
2501
2843
|
}
|
|
2502
|
-
function
|
|
2844
|
+
function nr(e) {
|
|
2503
2845
|
const t = e.filter((n) => n !== null && typeof n == "object").map(
|
|
2504
2846
|
(n) => n.attachments === void 0 ? n : {
|
|
2505
2847
|
...n,
|
|
2506
|
-
attachments:
|
|
2848
|
+
attachments: Ce(n.attachments)
|
|
2507
2849
|
}
|
|
2508
2850
|
);
|
|
2509
2851
|
return JSON.stringify(et(t), null, 2) + `
|
|
2510
2852
|
`;
|
|
2511
2853
|
}
|
|
2512
|
-
function
|
|
2854
|
+
function Ye(e, t = {}) {
|
|
2513
2855
|
const n = t.now ?? /* @__PURE__ */ new Date();
|
|
2514
2856
|
let r;
|
|
2515
2857
|
try {
|
|
@@ -2528,7 +2870,7 @@ function Ke(e, t = {}) {
|
|
|
2528
2870
|
}
|
|
2529
2871
|
return `chat-transcript-${r}.${e}`;
|
|
2530
2872
|
}
|
|
2531
|
-
function
|
|
2873
|
+
function rr(e) {
|
|
2532
2874
|
const t = document.activeElement;
|
|
2533
2875
|
let n = null;
|
|
2534
2876
|
try {
|
|
@@ -2546,7 +2888,7 @@ function Bn(e) {
|
|
|
2546
2888
|
}
|
|
2547
2889
|
}
|
|
2548
2890
|
}
|
|
2549
|
-
async function
|
|
2891
|
+
async function or(e) {
|
|
2550
2892
|
var t;
|
|
2551
2893
|
try {
|
|
2552
2894
|
if ((t = navigator.clipboard) != null && t.writeText)
|
|
@@ -2554,38 +2896,38 @@ async function _n(e) {
|
|
|
2554
2896
|
} catch {
|
|
2555
2897
|
}
|
|
2556
2898
|
try {
|
|
2557
|
-
return
|
|
2899
|
+
return rr(e);
|
|
2558
2900
|
} catch {
|
|
2559
2901
|
return !1;
|
|
2560
2902
|
}
|
|
2561
2903
|
}
|
|
2562
|
-
const
|
|
2563
|
-
function
|
|
2904
|
+
const sr = 4e4;
|
|
2905
|
+
function qe(e, t, n) {
|
|
2564
2906
|
const r = URL.createObjectURL(new Blob([t], { type: n })), o = document.createElement("a");
|
|
2565
|
-
o.href = r, o.download = e, o.style.display = "none", document.body.appendChild(o), o.click(), o.remove(), setTimeout(() => URL.revokeObjectURL(r),
|
|
2907
|
+
o.href = r, o.download = e, o.style.display = "none", document.body.appendChild(o), o.click(), o.remove(), setTimeout(() => URL.revokeObjectURL(r), sr);
|
|
2566
2908
|
}
|
|
2567
|
-
const
|
|
2568
|
-
function
|
|
2909
|
+
const ar = 4e3;
|
|
2910
|
+
function ir({
|
|
2569
2911
|
enabled: e,
|
|
2570
2912
|
messages: t,
|
|
2571
2913
|
busy: n,
|
|
2572
2914
|
locale: r,
|
|
2573
2915
|
translations: o
|
|
2574
2916
|
}) {
|
|
2575
|
-
const s = o ??
|
|
2576
|
-
|
|
2917
|
+
const s = o ?? je, [a, c] = M(null), l = C(null), u = C(!0);
|
|
2918
|
+
H(() => (u.current = !0, () => {
|
|
2577
2919
|
u.current = !1, l.current && clearTimeout(l.current);
|
|
2578
2920
|
}), []);
|
|
2579
|
-
const
|
|
2921
|
+
const f = O(() => {
|
|
2580
2922
|
l.current && clearTimeout(l.current), l.current = null, c(null);
|
|
2581
|
-
}, []),
|
|
2582
|
-
u.current && (l.current && clearTimeout(l.current), c(
|
|
2923
|
+
}, []), T = O((m) => {
|
|
2924
|
+
u.current && (l.current && clearTimeout(l.current), c(m), l.current = setTimeout(() => {
|
|
2583
2925
|
l.current = null, c(null);
|
|
2584
|
-
},
|
|
2926
|
+
}, ar));
|
|
2585
2927
|
}, []);
|
|
2586
|
-
return { items:
|
|
2928
|
+
return { items: ae(() => {
|
|
2587
2929
|
if (!e) return [];
|
|
2588
|
-
const
|
|
2930
|
+
const m = n || t.length === 0, h = () => tr(t, {
|
|
2589
2931
|
locale: r,
|
|
2590
2932
|
labels: {
|
|
2591
2933
|
title: s.transcriptTitle,
|
|
@@ -2601,39 +2943,39 @@ function Fn({
|
|
|
2601
2943
|
{
|
|
2602
2944
|
id: "copy-markdown",
|
|
2603
2945
|
label: s.copyAsMarkdown,
|
|
2604
|
-
disabled:
|
|
2946
|
+
disabled: m,
|
|
2605
2947
|
onSelect: () => {
|
|
2606
|
-
|
|
2607
|
-
(
|
|
2948
|
+
or(h()).then(
|
|
2949
|
+
(d) => T(d ? s.copiedToClipboard : s.copyFailed)
|
|
2608
2950
|
);
|
|
2609
2951
|
}
|
|
2610
2952
|
},
|
|
2611
2953
|
{
|
|
2612
2954
|
id: "download-markdown",
|
|
2613
2955
|
label: s.downloadAsMarkdown,
|
|
2614
|
-
disabled:
|
|
2615
|
-
onSelect: () =>
|
|
2616
|
-
|
|
2617
|
-
|
|
2956
|
+
disabled: m,
|
|
2957
|
+
onSelect: () => qe(
|
|
2958
|
+
Ye("md"),
|
|
2959
|
+
h(),
|
|
2618
2960
|
"text/markdown;charset=utf-8"
|
|
2619
2961
|
)
|
|
2620
2962
|
},
|
|
2621
2963
|
{
|
|
2622
2964
|
id: "download-json",
|
|
2623
2965
|
label: s.downloadAsJson,
|
|
2624
|
-
disabled:
|
|
2625
|
-
onSelect: () =>
|
|
2626
|
-
|
|
2627
|
-
|
|
2966
|
+
disabled: m,
|
|
2967
|
+
onSelect: () => qe(
|
|
2968
|
+
Ye("json"),
|
|
2969
|
+
nr(t),
|
|
2628
2970
|
"application/json"
|
|
2629
2971
|
)
|
|
2630
2972
|
}
|
|
2631
2973
|
];
|
|
2632
|
-
}, [e, n, t, r, s,
|
|
2974
|
+
}, [e, n, t, r, s, T]), status: a, clearStatus: f };
|
|
2633
2975
|
}
|
|
2634
|
-
const
|
|
2635
|
-
function
|
|
2636
|
-
return e.replace(
|
|
2976
|
+
const cr = /\*\*([^*]+)\*\*/g, lr = /\*([^*]+)\*/g, ur = /https?:\/\/[^\s)]+/g;
|
|
2977
|
+
function dr(e) {
|
|
2978
|
+
return e.replace(cr, "$1").replace(lr, "$1").replace(ur, (t) => {
|
|
2637
2979
|
var o;
|
|
2638
2980
|
const n = ((o = t.match(/[.,;:!?'"]+$/)) == null ? void 0 : o[0]) ?? "", r = n ? t.slice(0, -n.length) : t;
|
|
2639
2981
|
try {
|
|
@@ -2643,13 +2985,13 @@ function Ye(e) {
|
|
|
2643
2985
|
}
|
|
2644
2986
|
});
|
|
2645
2987
|
}
|
|
2646
|
-
const
|
|
2988
|
+
const fr = {
|
|
2647
2989
|
"bottom-right": "bottom-24 right-3 sm:right-6",
|
|
2648
2990
|
"bottom-left": "bottom-24 left-3 sm:left-6",
|
|
2649
2991
|
"top-right": "top-24 right-3 sm:right-6",
|
|
2650
2992
|
"top-left": "top-24 left-3 sm:left-6"
|
|
2651
2993
|
};
|
|
2652
|
-
function
|
|
2994
|
+
function hr({
|
|
2653
2995
|
messages: e,
|
|
2654
2996
|
isLoading: t,
|
|
2655
2997
|
isStreaming: n = !1,
|
|
@@ -2660,82 +3002,100 @@ function Yn({
|
|
|
2660
3002
|
onStop: c,
|
|
2661
3003
|
onRetry: l,
|
|
2662
3004
|
onClose: u,
|
|
2663
|
-
title:
|
|
2664
|
-
subtitle:
|
|
3005
|
+
title: f = "Chat",
|
|
3006
|
+
subtitle: T = "Ask me anything",
|
|
2665
3007
|
welcomeMessage: A = "Hi! How can I help you today?",
|
|
2666
|
-
placeholder:
|
|
2667
|
-
position:
|
|
2668
|
-
translations:
|
|
2669
|
-
isMobile:
|
|
3008
|
+
placeholder: m,
|
|
3009
|
+
position: h = "bottom-right",
|
|
3010
|
+
translations: d,
|
|
3011
|
+
isMobile: k = !1,
|
|
2670
3012
|
attachments: b = null,
|
|
2671
|
-
voice:
|
|
3013
|
+
voice: x = null,
|
|
2672
3014
|
conversationExport: y = !1,
|
|
2673
|
-
locale:
|
|
3015
|
+
locale: w = "en-US",
|
|
3016
|
+
citations: D = null
|
|
2674
3017
|
}) {
|
|
2675
|
-
const
|
|
2676
|
-
|
|
2677
|
-
const
|
|
2678
|
-
play: (
|
|
2679
|
-
pause: (
|
|
2680
|
-
resume: (
|
|
2681
|
-
stop: (
|
|
2682
|
-
},
|
|
3018
|
+
const S = Ne(), N = C(null), I = C(null), [R, ne] = M(null);
|
|
3019
|
+
Fn(N, !0);
|
|
3020
|
+
const $ = _n((x == null ? void 0 : x.lang) ?? "en-US"), z = !!(x != null && x.output) && $.isSupported, X = {
|
|
3021
|
+
play: (d == null ? void 0 : d.readAloud) ?? "Read aloud",
|
|
3022
|
+
pause: (d == null ? void 0 : d.pauseReading) ?? "Pause reading",
|
|
3023
|
+
resume: (d == null ? void 0 : d.resumeReading) ?? "Resume reading",
|
|
3024
|
+
stop: (d == null ? void 0 : d.stopReading) ?? "Stop reading"
|
|
3025
|
+
}, Z = ir({
|
|
2683
3026
|
enabled: y,
|
|
2684
3027
|
messages: e,
|
|
2685
3028
|
busy: t,
|
|
2686
|
-
locale:
|
|
2687
|
-
translations:
|
|
2688
|
-
}),
|
|
2689
|
-
|
|
3029
|
+
locale: w,
|
|
3030
|
+
translations: d
|
|
3031
|
+
}), J = (d == null ? void 0 : d.opensInNewTab) ?? "(opens in a new tab)", W = ae(
|
|
3032
|
+
() => D ? {
|
|
3033
|
+
...D,
|
|
3034
|
+
labels: {
|
|
3035
|
+
sources: (d == null ? void 0 : d.sources) ?? "Sources",
|
|
3036
|
+
showAllSources: (d == null ? void 0 : d.showAllSources) ?? "Show all ({count})",
|
|
3037
|
+
showFewerSources: (d == null ? void 0 : d.showFewerSources) ?? "Show fewer",
|
|
3038
|
+
citation: (d == null ? void 0 : d.citation) ?? "Source {n}: {title}",
|
|
3039
|
+
opensInNewTab: J
|
|
3040
|
+
}
|
|
3041
|
+
} : void 0,
|
|
3042
|
+
[D, d, J]
|
|
3043
|
+
), G = (v) => {
|
|
3044
|
+
var V;
|
|
3045
|
+
return dr(
|
|
3046
|
+
W && ((V = v.sources) != null && V.length) ? Yt(v.content, v.sources.length) : v.content
|
|
3047
|
+
);
|
|
3048
|
+
}, { offsetY: ce } = Un(
|
|
3049
|
+
I,
|
|
2690
3050
|
u,
|
|
2691
|
-
|
|
2692
|
-
),
|
|
2693
|
-
|
|
2694
|
-
const
|
|
2695
|
-
|
|
2696
|
-
}, [e, t]),
|
|
2697
|
-
const
|
|
2698
|
-
|
|
3051
|
+
k
|
|
3052
|
+
), de = ce !== 0, fe = typeof window < "u" && typeof window.matchMedia == "function" ? window.matchMedia("(prefers-reduced-motion: reduce)").matches : !1;
|
|
3053
|
+
H(() => {
|
|
3054
|
+
const v = I.current;
|
|
3055
|
+
v && (v.scrollTop = v.scrollHeight);
|
|
3056
|
+
}, [e, t]), H(() => {
|
|
3057
|
+
const v = (V) => {
|
|
3058
|
+
V.key === "Escape" && !V.isComposing && !V.defaultPrevented && u();
|
|
2699
3059
|
};
|
|
2700
|
-
return document.addEventListener("keydown",
|
|
3060
|
+
return document.addEventListener("keydown", v), () => document.removeEventListener("keydown", v);
|
|
2701
3061
|
}, [u]);
|
|
2702
|
-
const
|
|
2703
|
-
return /* @__PURE__ */
|
|
3062
|
+
const E = (d == null ? void 0 : d.closeChat) ?? "Close chat", B = (d == null ? void 0 : d.chatMessages) ?? "Chat messages", P = [...e].reverse().find((v) => v.role === "assistant");
|
|
3063
|
+
return /* @__PURE__ */ g(
|
|
2704
3064
|
"div",
|
|
2705
3065
|
{
|
|
2706
|
-
ref:
|
|
3066
|
+
ref: N,
|
|
2707
3067
|
role: "dialog",
|
|
2708
|
-
"aria-modal":
|
|
2709
|
-
"aria-labelledby":
|
|
2710
|
-
className:
|
|
2711
|
-
style:
|
|
2712
|
-
"data-dragging":
|
|
3068
|
+
"aria-modal": k ? "true" : void 0,
|
|
3069
|
+
"aria-labelledby": S,
|
|
3070
|
+
className: k ? "claudius-bottom-sheet fixed inset-x-0 bottom-0 z-50 flex h-[90vh] w-full flex-col overflow-hidden rounded-t-claudius-lg bg-claudius-surface shadow-claudius-elevated font-body" : `fixed ${fr[h]} z-50 flex h-[min(500px,calc(100vh-7rem))] w-[calc(100vw-1.5rem)] max-w-[380px] sm:max-w-[400px] md:max-w-[440px] flex-col overflow-hidden rounded-claudius-lg bg-claudius-surface shadow-claudius-elevated font-body`,
|
|
3071
|
+
style: k && !fe ? { transform: `translateY(${Math.max(0, ce)}px)` } : void 0,
|
|
3072
|
+
"data-dragging": de || void 0,
|
|
2713
3073
|
children: [
|
|
2714
|
-
|
|
3074
|
+
k && /* @__PURE__ */ i("div", { className: "flex justify-center py-2", "aria-hidden": "true", children: /* @__PURE__ */ i("div", { className: "h-1 w-8 rounded-claudius-full bg-claudius-border" }) }),
|
|
2715
3075
|
/* @__PURE__ */ i(
|
|
2716
|
-
|
|
3076
|
+
On,
|
|
2717
3077
|
{
|
|
2718
|
-
title:
|
|
2719
|
-
subtitle:
|
|
2720
|
-
titleId:
|
|
2721
|
-
closeLabel:
|
|
3078
|
+
title: f,
|
|
3079
|
+
subtitle: T,
|
|
3080
|
+
titleId: S,
|
|
3081
|
+
closeLabel: E,
|
|
2722
3082
|
onClose: u,
|
|
2723
3083
|
actions: y ? /* @__PURE__ */ i(
|
|
2724
|
-
|
|
3084
|
+
Pn,
|
|
2725
3085
|
{
|
|
2726
|
-
label: (
|
|
2727
|
-
items:
|
|
2728
|
-
onOpen:
|
|
3086
|
+
label: (d == null ? void 0 : d.moreOptions) ?? "More options",
|
|
3087
|
+
items: Z.items,
|
|
3088
|
+
onOpen: Z.clearStatus
|
|
2729
3089
|
}
|
|
2730
3090
|
) : void 0
|
|
2731
3091
|
}
|
|
2732
3092
|
),
|
|
2733
|
-
/* @__PURE__ */
|
|
2734
|
-
|
|
2735
|
-
|
|
3093
|
+
/* @__PURE__ */ g("div", { className: "relative flex-1 overflow-hidden", children: [
|
|
3094
|
+
R && /* @__PURE__ */ i(
|
|
3095
|
+
In,
|
|
2736
3096
|
{
|
|
2737
|
-
sources:
|
|
2738
|
-
onClose: () =>
|
|
3097
|
+
sources: R.sources,
|
|
3098
|
+
onClose: () => ne(null)
|
|
2739
3099
|
}
|
|
2740
3100
|
),
|
|
2741
3101
|
y && /* @__PURE__ */ i(
|
|
@@ -2743,69 +3103,71 @@ function Yn({
|
|
|
2743
3103
|
{
|
|
2744
3104
|
role: "status",
|
|
2745
3105
|
className: "pointer-events-none absolute inset-x-0 top-2 z-10 flex justify-center px-4",
|
|
2746
|
-
children:
|
|
3106
|
+
children: Z.status && /* @__PURE__ */ i("span", { className: "rounded-claudius-full bg-claudius-text px-3 py-1 text-xs text-claudius-surface shadow-claudius-elevated", children: Z.status })
|
|
2747
3107
|
}
|
|
2748
3108
|
),
|
|
2749
|
-
/* @__PURE__ */
|
|
3109
|
+
/* @__PURE__ */ g(
|
|
2750
3110
|
"div",
|
|
2751
3111
|
{
|
|
2752
|
-
ref:
|
|
3112
|
+
ref: I,
|
|
2753
3113
|
role: "log",
|
|
2754
|
-
"aria-label":
|
|
3114
|
+
"aria-label": B,
|
|
2755
3115
|
className: "h-full space-y-3 overflow-y-auto px-4 py-4",
|
|
2756
3116
|
children: [
|
|
2757
3117
|
e.length === 0 && !o && /* @__PURE__ */ i("div", { className: "mr-auto flex max-w-[85%]", children: /* @__PURE__ */ i("div", { className: "rounded-claudius-bubble rounded-bl-claudius-tail bg-claudius-assistant-bubble px-4 py-2.5 text-sm leading-relaxed text-claudius-assistant-bubble-text", children: A }) }),
|
|
2758
|
-
e.map((
|
|
2759
|
-
|
|
3118
|
+
e.map((v) => /* @__PURE__ */ i(
|
|
3119
|
+
bn,
|
|
2760
3120
|
{
|
|
2761
|
-
role:
|
|
2762
|
-
content:
|
|
2763
|
-
isStreaming:
|
|
2764
|
-
sources:
|
|
2765
|
-
attachments:
|
|
2766
|
-
toolUses:
|
|
2767
|
-
toolUsedLabel:
|
|
2768
|
-
toolDetailsLabel:
|
|
2769
|
-
|
|
2770
|
-
|
|
2771
|
-
|
|
3121
|
+
role: v.role,
|
|
3122
|
+
content: v.content,
|
|
3123
|
+
isStreaming: v.id === r,
|
|
3124
|
+
sources: v.sources,
|
|
3125
|
+
attachments: v.attachments,
|
|
3126
|
+
toolUses: v.toolUses,
|
|
3127
|
+
toolUsedLabel: d == null ? void 0 : d.toolUsed,
|
|
3128
|
+
toolDetailsLabel: d == null ? void 0 : d.toolDetails,
|
|
3129
|
+
citations: W,
|
|
3130
|
+
linkNewTabLabel: J,
|
|
3131
|
+
isSourceActive: W ? void 0 : (R == null ? void 0 : R.messageId) === v.id,
|
|
3132
|
+
onSourceClick: W ? void 0 : () => {
|
|
3133
|
+
(R == null ? void 0 : R.messageId) === v.id ? ne(null) : v.sources && v.sources.length > 0 && ne({
|
|
3134
|
+
messageId: v.id,
|
|
3135
|
+
sources: v.sources
|
|
3136
|
+
});
|
|
2772
3137
|
},
|
|
2773
3138
|
speech: (
|
|
2774
3139
|
// Only settled replies with something to say: reading a
|
|
2775
3140
|
// message that is still streaming would stop mid-sentence.
|
|
2776
|
-
|
|
2777
|
-
state:
|
|
2778
|
-
labels:
|
|
3141
|
+
z && v.role === "assistant" && v.id !== r && v.content.trim() !== "" ? {
|
|
3142
|
+
state: $.activeId !== v.id ? "idle" : $.isPaused ? "paused" : "speaking",
|
|
3143
|
+
labels: X,
|
|
2779
3144
|
// Same cleanup as the screen-reader announcement:
|
|
2780
3145
|
// no literal asterisks, URLs shortened to hostnames.
|
|
2781
|
-
onPlay: () =>
|
|
2782
|
-
|
|
2783
|
-
|
|
2784
|
-
|
|
2785
|
-
onPause: O.pause,
|
|
2786
|
-
onResume: O.resume,
|
|
2787
|
-
onStop: O.cancel
|
|
3146
|
+
onPlay: () => $.speak(v.id, G(v)),
|
|
3147
|
+
onPause: $.pause,
|
|
3148
|
+
onResume: $.resume,
|
|
3149
|
+
onStop: $.cancel
|
|
2788
3150
|
} : void 0
|
|
2789
3151
|
)
|
|
2790
3152
|
},
|
|
2791
|
-
|
|
3153
|
+
v.id
|
|
2792
3154
|
)),
|
|
2793
3155
|
t && /* Once streamed tokens are rendering in a bubble, the typing
|
|
2794
3156
|
indicator is redundant — show it only until the first token.
|
|
2795
3157
|
A tool-only placeholder (no text yet) keeps the indicator. */
|
|
2796
3158
|
!(r !== null && e.some(
|
|
2797
|
-
(
|
|
3159
|
+
(v) => v.id === r && v.content.length > 0
|
|
2798
3160
|
)) && /* @__PURE__ */ i(
|
|
2799
|
-
|
|
3161
|
+
jn,
|
|
2800
3162
|
{
|
|
2801
|
-
label: (
|
|
3163
|
+
label: (d == null ? void 0 : d.typingIndicator) ?? "Assistant is typing"
|
|
2802
3164
|
}
|
|
2803
3165
|
),
|
|
2804
3166
|
o && /* @__PURE__ */ i(
|
|
2805
|
-
|
|
3167
|
+
$n,
|
|
2806
3168
|
{
|
|
2807
3169
|
message: o,
|
|
2808
|
-
retryLabel: (
|
|
3170
|
+
retryLabel: (d == null ? void 0 : d.errorRetry) ?? "Retry",
|
|
2809
3171
|
onRetry: s && l && !t ? l : void 0
|
|
2810
3172
|
}
|
|
2811
3173
|
)
|
|
@@ -2820,29 +3182,29 @@ function Yn({
|
|
|
2820
3182
|
"aria-live": "polite",
|
|
2821
3183
|
"aria-atomic": "true",
|
|
2822
3184
|
className: "sr-only",
|
|
2823
|
-
children:
|
|
3185
|
+
children: P && P.id !== r ? G(P) : ""
|
|
2824
3186
|
}
|
|
2825
3187
|
),
|
|
2826
3188
|
/* @__PURE__ */ i(
|
|
2827
|
-
|
|
3189
|
+
Nn,
|
|
2828
3190
|
{
|
|
2829
3191
|
onSend: a,
|
|
2830
3192
|
isLoading: t,
|
|
2831
3193
|
isStreaming: n,
|
|
2832
3194
|
onStop: c,
|
|
2833
|
-
placeholder:
|
|
2834
|
-
translations:
|
|
3195
|
+
placeholder: m,
|
|
3196
|
+
translations: d,
|
|
2835
3197
|
attachments: b,
|
|
2836
|
-
voice:
|
|
2837
|
-
onVoiceStart:
|
|
2838
|
-
isReadingAloud:
|
|
3198
|
+
voice: x,
|
|
3199
|
+
onVoiceStart: $.cancel,
|
|
3200
|
+
isReadingAloud: $.activeId !== null
|
|
2839
3201
|
}
|
|
2840
3202
|
)
|
|
2841
3203
|
]
|
|
2842
3204
|
}
|
|
2843
3205
|
);
|
|
2844
3206
|
}
|
|
2845
|
-
function
|
|
3207
|
+
function pr({
|
|
2846
3208
|
message: e,
|
|
2847
3209
|
position: t,
|
|
2848
3210
|
onOpen: n,
|
|
@@ -2855,7 +3217,7 @@ function qn({
|
|
|
2855
3217
|
s ? "bottom-20" : "top-20",
|
|
2856
3218
|
a ? "right-4" : "left-4"
|
|
2857
3219
|
].join(" ");
|
|
2858
|
-
return /* @__PURE__ */
|
|
3220
|
+
return /* @__PURE__ */ g("div", { className: c, role: "status", "aria-live": "polite", children: [
|
|
2859
3221
|
/* @__PURE__ */ i(
|
|
2860
3222
|
"button",
|
|
2861
3223
|
{
|
|
@@ -2879,7 +3241,7 @@ function qn({
|
|
|
2879
3241
|
)
|
|
2880
3242
|
] });
|
|
2881
3243
|
}
|
|
2882
|
-
const
|
|
3244
|
+
const mr = {
|
|
2883
3245
|
// ChatWindow
|
|
2884
3246
|
title: "Chat",
|
|
2885
3247
|
subtitle: "Pregúntame lo que quieras",
|
|
@@ -2931,6 +3293,12 @@ const Zn = {
|
|
|
2931
3293
|
transcriptAssistant: "Asistente",
|
|
2932
3294
|
transcriptAttachments: "Adjuntos:",
|
|
2933
3295
|
transcriptSources: "Fuentes:",
|
|
3296
|
+
// Citations
|
|
3297
|
+
sources: "Fuentes",
|
|
3298
|
+
showAllSources: "Mostrar todas ({count})",
|
|
3299
|
+
showFewerSources: "Mostrar menos",
|
|
3300
|
+
citation: "Fuente {n}: {title}",
|
|
3301
|
+
opensInNewTab: "(se abre en una pestaña nueva)",
|
|
2934
3302
|
// Errors
|
|
2935
3303
|
errorGeneric: "Algo salió mal. Inténtalo de nuevo.",
|
|
2936
3304
|
errorConnection: "No se pudo conectar. Inténtalo de nuevo.",
|
|
@@ -2940,7 +3308,7 @@ const Zn = {
|
|
|
2940
3308
|
errorAttachmentRejected: "Se rechazó un adjunto. Quítalo e inténtalo de nuevo.",
|
|
2941
3309
|
errorAttachmentQuota: "Límite de subida alcanzado. Inténtalo más tarde.",
|
|
2942
3310
|
errorRetry: "Reintentar"
|
|
2943
|
-
},
|
|
3311
|
+
}, gr = {
|
|
2944
3312
|
// ChatWindow
|
|
2945
3313
|
title: "Chat",
|
|
2946
3314
|
subtitle: "Posez-moi vos questions",
|
|
@@ -2992,6 +3360,12 @@ const Zn = {
|
|
|
2992
3360
|
transcriptAssistant: "Assistant",
|
|
2993
3361
|
transcriptAttachments: "Pièces jointes :",
|
|
2994
3362
|
transcriptSources: "Sources :",
|
|
3363
|
+
// Citations
|
|
3364
|
+
sources: "Sources",
|
|
3365
|
+
showAllSources: "Tout afficher ({count})",
|
|
3366
|
+
showFewerSources: "Afficher moins",
|
|
3367
|
+
citation: "Source {n} : {title}",
|
|
3368
|
+
opensInNewTab: "(s'ouvre dans un nouvel onglet)",
|
|
2995
3369
|
// Errors
|
|
2996
3370
|
errorGeneric: "Une erreur s'est produite. Veuillez réessayer.",
|
|
2997
3371
|
errorConnection: "Échec de la connexion. Veuillez réessayer.",
|
|
@@ -3001,7 +3375,7 @@ const Zn = {
|
|
|
3001
3375
|
errorAttachmentRejected: "Une pièce jointe a été refusée. Retirez-la et réessayez.",
|
|
3002
3376
|
errorAttachmentQuota: "Limite d'envoi atteinte. Veuillez réessayer plus tard.",
|
|
3003
3377
|
errorRetry: "Réessayer"
|
|
3004
|
-
},
|
|
3378
|
+
}, br = {
|
|
3005
3379
|
// ChatWindow
|
|
3006
3380
|
title: "Chat",
|
|
3007
3381
|
subtitle: "Fragen Sie mich alles",
|
|
@@ -3053,6 +3427,12 @@ const Zn = {
|
|
|
3053
3427
|
transcriptAssistant: "Assistent",
|
|
3054
3428
|
transcriptAttachments: "Anhänge:",
|
|
3055
3429
|
transcriptSources: "Quellen:",
|
|
3430
|
+
// Citations
|
|
3431
|
+
sources: "Quellen",
|
|
3432
|
+
showAllSources: "Alle anzeigen ({count})",
|
|
3433
|
+
showFewerSources: "Weniger anzeigen",
|
|
3434
|
+
citation: "Quelle {n}: {title}",
|
|
3435
|
+
opensInNewTab: "(öffnet in einem neuen Tab)",
|
|
3056
3436
|
// Errors
|
|
3057
3437
|
errorGeneric: "Etwas ist schiefgelaufen. Bitte versuchen Sie es erneut.",
|
|
3058
3438
|
errorConnection: "Verbindung fehlgeschlagen. Bitte versuchen Sie es erneut.",
|
|
@@ -3062,28 +3442,28 @@ const Zn = {
|
|
|
3062
3442
|
errorAttachmentRejected: "Ein Anhang wurde abgelehnt. Bitte entfernen Sie ihn und versuchen Sie es erneut.",
|
|
3063
3443
|
errorAttachmentQuota: "Upload-Limit erreicht. Bitte versuchen Sie es später erneut.",
|
|
3064
3444
|
errorRetry: "Erneut versuchen"
|
|
3065
|
-
},
|
|
3066
|
-
en:
|
|
3067
|
-
es:
|
|
3068
|
-
fr:
|
|
3069
|
-
de:
|
|
3445
|
+
}, lt = {
|
|
3446
|
+
en: st,
|
|
3447
|
+
es: mr,
|
|
3448
|
+
fr: gr,
|
|
3449
|
+
de: br
|
|
3070
3450
|
};
|
|
3071
|
-
function
|
|
3451
|
+
function Ze(e) {
|
|
3072
3452
|
if (!e) return;
|
|
3073
3453
|
const t = e.toLowerCase().split("-")[0];
|
|
3074
|
-
return Object.prototype.hasOwnProperty.call(
|
|
3454
|
+
return Object.prototype.hasOwnProperty.call(lt, t) ? t : void 0;
|
|
3075
3455
|
}
|
|
3076
|
-
function
|
|
3077
|
-
const e = typeof document < "u" ?
|
|
3456
|
+
function ut() {
|
|
3457
|
+
const e = typeof document < "u" ? Ze(document.documentElement.lang) : void 0;
|
|
3078
3458
|
if (e) return e;
|
|
3079
|
-
const t = typeof navigator < "u" ?
|
|
3459
|
+
const t = typeof navigator < "u" ? Ze(navigator.language) : void 0;
|
|
3080
3460
|
return t || "en";
|
|
3081
3461
|
}
|
|
3082
|
-
function
|
|
3083
|
-
const { locale: t, translations: n } = e, r =
|
|
3462
|
+
function yr(e = {}) {
|
|
3463
|
+
const { locale: t, translations: n } = e, r = lt[t ?? ut()];
|
|
3084
3464
|
return n ? { ...r, ...n } : { ...r };
|
|
3085
3465
|
}
|
|
3086
|
-
const
|
|
3466
|
+
const Je = [
|
|
3087
3467
|
"accent",
|
|
3088
3468
|
"accentText",
|
|
3089
3469
|
"accentSoft",
|
|
@@ -3103,11 +3483,11 @@ const Ze = [
|
|
|
3103
3483
|
"errorText",
|
|
3104
3484
|
"link",
|
|
3105
3485
|
"scrim"
|
|
3106
|
-
],
|
|
3486
|
+
], wr = ["sm", "md", "lg", "full", "tail"], xr = [
|
|
3107
3487
|
"elevated",
|
|
3108
3488
|
"floating",
|
|
3109
3489
|
"floatingHover"
|
|
3110
|
-
],
|
|
3490
|
+
], vr = ["heading", "body"], dt = {
|
|
3111
3491
|
default: {
|
|
3112
3492
|
name: "default"
|
|
3113
3493
|
},
|
|
@@ -3192,62 +3572,62 @@ const Ze = [
|
|
|
3192
3572
|
}
|
|
3193
3573
|
}
|
|
3194
3574
|
};
|
|
3195
|
-
function
|
|
3196
|
-
return Object.prototype.hasOwnProperty.call(
|
|
3575
|
+
function Sr(e) {
|
|
3576
|
+
return Object.prototype.hasOwnProperty.call(dt, e);
|
|
3197
3577
|
}
|
|
3198
|
-
const
|
|
3199
|
-
function
|
|
3578
|
+
const Tr = /* @__PURE__ */ new Set(["light", "dark", "auto"]);
|
|
3579
|
+
function Ar(e) {
|
|
3200
3580
|
if (e === void 0)
|
|
3201
3581
|
return { mode: "light" };
|
|
3202
3582
|
if (typeof e == "string") {
|
|
3203
|
-
if (
|
|
3583
|
+
if (Tr.has(e))
|
|
3204
3584
|
return { mode: e };
|
|
3205
|
-
if (
|
|
3206
|
-
const t =
|
|
3585
|
+
if (Sr(e)) {
|
|
3586
|
+
const t = dt[e];
|
|
3207
3587
|
return { mode: t.colorScheme ?? "light", theme: t };
|
|
3208
3588
|
}
|
|
3209
3589
|
return { mode: "light", url: e };
|
|
3210
3590
|
}
|
|
3211
3591
|
return { mode: e.colorScheme ?? "light", theme: e };
|
|
3212
3592
|
}
|
|
3213
|
-
function
|
|
3593
|
+
function kr(e) {
|
|
3214
3594
|
return e.replace(/[A-Z]/g, (t) => `-${t.toLowerCase()}`);
|
|
3215
3595
|
}
|
|
3216
|
-
function
|
|
3596
|
+
function Rr(e, t) {
|
|
3217
3597
|
console.warn(
|
|
3218
3598
|
`[Claudius] Ignoring unknown theme token "${t}" in "${e}"`
|
|
3219
3599
|
);
|
|
3220
3600
|
}
|
|
3221
|
-
function
|
|
3601
|
+
function Se(e, t, n, r, o, s = "") {
|
|
3222
3602
|
if (o)
|
|
3223
3603
|
for (const [a, c] of Object.entries(o)) {
|
|
3224
3604
|
if (!r.includes(a)) {
|
|
3225
|
-
|
|
3605
|
+
Rr(t, a);
|
|
3226
3606
|
continue;
|
|
3227
3607
|
}
|
|
3228
|
-
typeof c == "string" && (e[`${n}${
|
|
3608
|
+
typeof c == "string" && (e[`${n}${kr(a)}${s}`] = c);
|
|
3229
3609
|
}
|
|
3230
3610
|
}
|
|
3231
|
-
function
|
|
3611
|
+
function Er(e) {
|
|
3232
3612
|
const t = {};
|
|
3233
|
-
|
|
3613
|
+
Se(t, "colors", "--cl-color-", Je, e.colors);
|
|
3234
3614
|
for (const [n, r] of Object.entries({ ...t }))
|
|
3235
3615
|
t[`${n}-dark`] = r;
|
|
3236
|
-
return
|
|
3616
|
+
return Se(
|
|
3237
3617
|
t,
|
|
3238
3618
|
"colorsDark",
|
|
3239
3619
|
"--cl-color-",
|
|
3240
|
-
|
|
3620
|
+
Je,
|
|
3241
3621
|
e.colorsDark,
|
|
3242
3622
|
"-dark"
|
|
3243
|
-
),
|
|
3623
|
+
), Se(t, "radii", "--cl-radius-", wr, e.radii), Se(t, "shadows", "--cl-shadow-", xr, e.shadows), Se(t, "fonts", "--cl-font-", vr, e.fonts), t;
|
|
3244
3624
|
}
|
|
3245
|
-
function
|
|
3625
|
+
function Cr(e) {
|
|
3246
3626
|
return typeof e == "object" && e !== null && !Array.isArray(e);
|
|
3247
3627
|
}
|
|
3248
|
-
function
|
|
3249
|
-
const t =
|
|
3250
|
-
|
|
3628
|
+
function Nr(e) {
|
|
3629
|
+
const t = ae(() => Ar(e), [e]), [n, r] = M(null), o = t.url;
|
|
3630
|
+
H(() => {
|
|
3251
3631
|
if (r(null), !o) return;
|
|
3252
3632
|
const l = new AbortController();
|
|
3253
3633
|
return fetch(o, { signal: l.signal }).then((u) => {
|
|
@@ -3255,36 +3635,36 @@ function ur(e) {
|
|
|
3255
3635
|
throw new Error(`HTTP ${u.status}`);
|
|
3256
3636
|
return u.json();
|
|
3257
3637
|
}).then((u) => {
|
|
3258
|
-
if (!
|
|
3638
|
+
if (!Cr(u))
|
|
3259
3639
|
throw new Error("theme JSON must be an object");
|
|
3260
3640
|
r(u);
|
|
3261
3641
|
}).catch((u) => {
|
|
3262
3642
|
l.signal.aborted || console.error(`[Claudius] Failed to load theme from ${o}:`, u);
|
|
3263
3643
|
}), () => l.abort();
|
|
3264
3644
|
}, [o]);
|
|
3265
|
-
const s = t.theme ?? n ?? null, a = (n == null ? void 0 : n.colorScheme) ?? t.mode, c =
|
|
3266
|
-
() => s ?
|
|
3645
|
+
const s = t.theme ?? n ?? null, a = (n == null ? void 0 : n.colorScheme) ?? t.mode, c = ae(
|
|
3646
|
+
() => s ? Er(s) : {},
|
|
3267
3647
|
[s]
|
|
3268
3648
|
);
|
|
3269
3649
|
return { mode: a, cssVars: c };
|
|
3270
3650
|
}
|
|
3271
|
-
const
|
|
3272
|
-
function
|
|
3651
|
+
const ft = "claudius:triggers:dismissed";
|
|
3652
|
+
function Mr() {
|
|
3273
3653
|
if (typeof window > "u") return !1;
|
|
3274
3654
|
try {
|
|
3275
|
-
return window.sessionStorage.getItem(
|
|
3655
|
+
return window.sessionStorage.getItem(ft) === "1";
|
|
3276
3656
|
} catch {
|
|
3277
3657
|
return !1;
|
|
3278
3658
|
}
|
|
3279
3659
|
}
|
|
3280
|
-
function
|
|
3660
|
+
function Lr() {
|
|
3281
3661
|
if (!(typeof window > "u"))
|
|
3282
3662
|
try {
|
|
3283
|
-
window.sessionStorage.setItem(
|
|
3663
|
+
window.sessionStorage.setItem(ft, "1");
|
|
3284
3664
|
} catch {
|
|
3285
3665
|
}
|
|
3286
3666
|
}
|
|
3287
|
-
function
|
|
3667
|
+
function Br({
|
|
3288
3668
|
apiUrl: e,
|
|
3289
3669
|
title: t,
|
|
3290
3670
|
subtitle: n,
|
|
@@ -3295,148 +3675,154 @@ function wr({
|
|
|
3295
3675
|
requestTimeoutMs: c,
|
|
3296
3676
|
theme: l = "light",
|
|
3297
3677
|
accentColor: u,
|
|
3298
|
-
position:
|
|
3299
|
-
locale:
|
|
3678
|
+
position: f = "bottom-right",
|
|
3679
|
+
locale: T,
|
|
3300
3680
|
translations: A,
|
|
3301
|
-
triggers:
|
|
3302
|
-
plugins:
|
|
3303
|
-
streaming:
|
|
3304
|
-
attachments:
|
|
3681
|
+
triggers: m,
|
|
3682
|
+
plugins: h,
|
|
3683
|
+
streaming: d = !0,
|
|
3684
|
+
attachments: k = !1,
|
|
3305
3685
|
voice: b = !1,
|
|
3306
|
-
conversationExport:
|
|
3686
|
+
conversationExport: x = !1,
|
|
3687
|
+
citations: y = !1
|
|
3307
3688
|
}) {
|
|
3308
|
-
const [
|
|
3309
|
-
() =>
|
|
3310
|
-
[
|
|
3311
|
-
),
|
|
3312
|
-
() =>
|
|
3313
|
-
[b,
|
|
3314
|
-
),
|
|
3315
|
-
() =>
|
|
3316
|
-
[
|
|
3317
|
-
),
|
|
3318
|
-
() =>
|
|
3319
|
-
[
|
|
3689
|
+
const [w, D] = M(!1), S = ae(
|
|
3690
|
+
() => At(k),
|
|
3691
|
+
[k]
|
|
3692
|
+
), N = ae(() => T ?? ut(), [T]), I = ae(
|
|
3693
|
+
() => Sn(b, N),
|
|
3694
|
+
[b, N]
|
|
3695
|
+
), R = ae(
|
|
3696
|
+
() => Vt(y),
|
|
3697
|
+
[y]
|
|
3698
|
+
), ne = ae(
|
|
3699
|
+
() => at(N),
|
|
3700
|
+
[N]
|
|
3701
|
+
), [$, z] = M(null), [X, Z] = M(Mr), J = C(!1), W = Ut("(max-width: 639px)"), G = ae(
|
|
3702
|
+
() => yr({ locale: T, translations: A }),
|
|
3703
|
+
[T, A]
|
|
3320
3704
|
), {
|
|
3321
|
-
messages:
|
|
3322
|
-
isLoading:
|
|
3323
|
-
isStreaming:
|
|
3324
|
-
streamingMessageId:
|
|
3325
|
-
error:
|
|
3705
|
+
messages: ce,
|
|
3706
|
+
isLoading: de,
|
|
3707
|
+
isStreaming: fe,
|
|
3708
|
+
streamingMessageId: E,
|
|
3709
|
+
error: B,
|
|
3326
3710
|
canRetry: P,
|
|
3327
|
-
sendMessage:
|
|
3328
|
-
stop:
|
|
3329
|
-
retry:
|
|
3330
|
-
} =
|
|
3711
|
+
sendMessage: v,
|
|
3712
|
+
stop: V,
|
|
3713
|
+
retry: K
|
|
3714
|
+
} = Pt({
|
|
3331
3715
|
apiUrl: e,
|
|
3332
3716
|
persistMessages: s,
|
|
3333
3717
|
storageKeyPrefix: a,
|
|
3334
3718
|
timeoutMs: c,
|
|
3335
|
-
translations:
|
|
3336
|
-
plugins:
|
|
3337
|
-
streaming:
|
|
3338
|
-
|
|
3339
|
-
|
|
3340
|
-
|
|
3341
|
-
|
|
3342
|
-
|
|
3343
|
-
|
|
3344
|
-
|
|
3345
|
-
|
|
3346
|
-
|
|
3347
|
-
|
|
3348
|
-
|
|
3349
|
-
|
|
3350
|
-
|
|
3351
|
-
|
|
3352
|
-
|
|
3353
|
-
|
|
3354
|
-
|
|
3355
|
-
|
|
3356
|
-
|
|
3357
|
-
|
|
3358
|
-
|
|
3359
|
-
|
|
3360
|
-
|
|
3361
|
-
|
|
3362
|
-
|
|
3363
|
-
|
|
3364
|
-
|
|
3365
|
-
|
|
3366
|
-
|
|
3367
|
-
|
|
3368
|
-
|
|
3719
|
+
translations: G,
|
|
3720
|
+
plugins: h,
|
|
3721
|
+
streaming: d,
|
|
3722
|
+
citations: R !== null
|
|
3723
|
+
}), oe = C(null), F = C(w), { mode: ee, cssVars: te } = Nr(l), [L, _] = M(!1);
|
|
3724
|
+
H(() => {
|
|
3725
|
+
if (ee !== "auto") return;
|
|
3726
|
+
const p = window.matchMedia("(prefers-color-scheme: dark)");
|
|
3727
|
+
_(p.matches);
|
|
3728
|
+
const j = (ue) => _(ue.matches);
|
|
3729
|
+
return p.addEventListener("change", j), () => p.removeEventListener("change", j);
|
|
3730
|
+
}, [ee]), H(() => {
|
|
3731
|
+
var p;
|
|
3732
|
+
F.current && !w && ((p = oe.current) == null || p.focus()), F.current = w;
|
|
3733
|
+
}, [w]);
|
|
3734
|
+
const U = O(() => {
|
|
3735
|
+
Z(!0), Lr();
|
|
3736
|
+
}, []), Y = O(() => {
|
|
3737
|
+
D(!1), J.current && (J.current = !1, U());
|
|
3738
|
+
}, [U]), se = O(() => {
|
|
3739
|
+
D((p) => !p);
|
|
3740
|
+
}, []), le = O(() => {
|
|
3741
|
+
J.current = !0, z(null), D(!0);
|
|
3742
|
+
}, []), re = O((p) => {
|
|
3743
|
+
z(p);
|
|
3744
|
+
}, []), ye = O(() => {
|
|
3745
|
+
z(null), le();
|
|
3746
|
+
}, [le]), me = O(() => {
|
|
3747
|
+
z(null), U();
|
|
3748
|
+
}, [U]);
|
|
3749
|
+
Ft({
|
|
3750
|
+
triggers: m,
|
|
3751
|
+
enabled: !X && !w,
|
|
3752
|
+
onOpen: le,
|
|
3753
|
+
onGreeting: re
|
|
3369
3754
|
});
|
|
3370
|
-
const
|
|
3371
|
-
...
|
|
3755
|
+
const q = ee === "dark" || ee === "auto" && L, ie = {
|
|
3756
|
+
...te,
|
|
3372
3757
|
...u ? {
|
|
3373
3758
|
"--cl-color-accent": u,
|
|
3374
3759
|
"--cl-color-accent-dark": u
|
|
3375
3760
|
} : {}
|
|
3376
|
-
},
|
|
3761
|
+
}, he = Object.keys(ie).length > 0 ? ie : void 0;
|
|
3377
3762
|
return (
|
|
3378
3763
|
// Outer div carries theme token vars; the inner div carries the dark-mode
|
|
3379
3764
|
// attribute so the [data-claudius-dark] token reassignments in styles.css
|
|
3380
3765
|
// beat inherited (inline) light values.
|
|
3381
|
-
/* @__PURE__ */ i("div", { className: "claudius-root", style:
|
|
3382
|
-
|
|
3766
|
+
/* @__PURE__ */ i("div", { className: "claudius-root", style: he, children: /* @__PURE__ */ g("div", { "data-claudius-dark": q ? "true" : "false", children: [
|
|
3767
|
+
w && W && /* @__PURE__ */ i(
|
|
3383
3768
|
"div",
|
|
3384
3769
|
{
|
|
3385
3770
|
className: "claudius-scrim fixed inset-0 z-40 bg-claudius-scrim",
|
|
3386
|
-
onClick:
|
|
3771
|
+
onClick: Y,
|
|
3387
3772
|
"aria-hidden": "true"
|
|
3388
3773
|
}
|
|
3389
3774
|
),
|
|
3390
|
-
|
|
3391
|
-
|
|
3775
|
+
w && /* @__PURE__ */ i(
|
|
3776
|
+
hr,
|
|
3392
3777
|
{
|
|
3393
|
-
messages:
|
|
3394
|
-
isLoading:
|
|
3395
|
-
isStreaming:
|
|
3396
|
-
streamingMessageId:
|
|
3397
|
-
error:
|
|
3778
|
+
messages: ce,
|
|
3779
|
+
isLoading: de,
|
|
3780
|
+
isStreaming: fe,
|
|
3781
|
+
streamingMessageId: E,
|
|
3782
|
+
error: B,
|
|
3398
3783
|
canRetry: P,
|
|
3399
|
-
onSend:
|
|
3400
|
-
onStop:
|
|
3401
|
-
onRetry:
|
|
3402
|
-
onClose:
|
|
3403
|
-
title: t ??
|
|
3404
|
-
subtitle: n ??
|
|
3405
|
-
welcomeMessage: r ??
|
|
3406
|
-
placeholder: o ??
|
|
3407
|
-
position:
|
|
3408
|
-
translations:
|
|
3409
|
-
isMobile:
|
|
3410
|
-
attachments:
|
|
3411
|
-
voice:
|
|
3412
|
-
conversationExport:
|
|
3413
|
-
locale:
|
|
3784
|
+
onSend: v,
|
|
3785
|
+
onStop: V,
|
|
3786
|
+
onRetry: K,
|
|
3787
|
+
onClose: Y,
|
|
3788
|
+
title: t ?? G.title,
|
|
3789
|
+
subtitle: n ?? G.subtitle,
|
|
3790
|
+
welcomeMessage: r ?? G.welcomeMessage,
|
|
3791
|
+
placeholder: o ?? G.placeholder,
|
|
3792
|
+
position: f,
|
|
3793
|
+
translations: G,
|
|
3794
|
+
isMobile: W,
|
|
3795
|
+
attachments: S,
|
|
3796
|
+
voice: I,
|
|
3797
|
+
conversationExport: x === !0,
|
|
3798
|
+
locale: ne,
|
|
3799
|
+
citations: R
|
|
3414
3800
|
}
|
|
3415
3801
|
),
|
|
3416
|
-
!(
|
|
3417
|
-
|
|
3802
|
+
!(w && W) && /* @__PURE__ */ i(
|
|
3803
|
+
Ht,
|
|
3418
3804
|
{
|
|
3419
|
-
ref:
|
|
3420
|
-
isOpen:
|
|
3421
|
-
onClick:
|
|
3422
|
-
position:
|
|
3423
|
-
translations:
|
|
3805
|
+
ref: oe,
|
|
3806
|
+
isOpen: w,
|
|
3807
|
+
onClick: se,
|
|
3808
|
+
position: f,
|
|
3809
|
+
translations: G
|
|
3424
3810
|
}
|
|
3425
3811
|
),
|
|
3426
|
-
!
|
|
3427
|
-
|
|
3812
|
+
!w && $ && /* @__PURE__ */ i(
|
|
3813
|
+
pr,
|
|
3428
3814
|
{
|
|
3429
|
-
message:
|
|
3430
|
-
position:
|
|
3431
|
-
onOpen:
|
|
3432
|
-
onDismiss:
|
|
3433
|
-
dismissLabel:
|
|
3815
|
+
message: $,
|
|
3816
|
+
position: f,
|
|
3817
|
+
onOpen: ye,
|
|
3818
|
+
onDismiss: me,
|
|
3819
|
+
dismissLabel: G.dismissGreeting
|
|
3434
3820
|
}
|
|
3435
3821
|
)
|
|
3436
3822
|
] }) })
|
|
3437
3823
|
);
|
|
3438
3824
|
}
|
|
3439
|
-
function
|
|
3825
|
+
function Fr(e) {
|
|
3440
3826
|
const { onEvent: t, includeContent: n = !0 } = e, r = (o) => n ? o : "";
|
|
3441
3827
|
return {
|
|
3442
3828
|
name: "analytics",
|
|
@@ -3465,7 +3851,7 @@ function vr(e) {
|
|
|
3465
3851
|
}
|
|
3466
3852
|
};
|
|
3467
3853
|
}
|
|
3468
|
-
const
|
|
3854
|
+
const Dr = [
|
|
3469
3855
|
// Email
|
|
3470
3856
|
/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b/g,
|
|
3471
3857
|
// US SSN (before the looser card pattern so it wins on 9-digit groups)
|
|
@@ -3475,20 +3861,20 @@ const hr = [
|
|
|
3475
3861
|
// Phone: optional +1, area code, 7 digits with common separators
|
|
3476
3862
|
/\b(?:\+?1[-.\s]?)?\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}\b/g
|
|
3477
3863
|
];
|
|
3478
|
-
function
|
|
3864
|
+
function Ir(e, t, n) {
|
|
3479
3865
|
return t.reduce(
|
|
3480
3866
|
// Reset lastIndex defensively: a shared global regex is stateful.
|
|
3481
3867
|
(r, o) => (o.lastIndex = 0, r.replace(o, n)),
|
|
3482
3868
|
e
|
|
3483
3869
|
);
|
|
3484
3870
|
}
|
|
3485
|
-
function
|
|
3871
|
+
function _r(e = {}) {
|
|
3486
3872
|
const {
|
|
3487
|
-
patterns: t =
|
|
3873
|
+
patterns: t = Dr,
|
|
3488
3874
|
replacement: n = "[redacted]",
|
|
3489
3875
|
redactReplies: r = !1
|
|
3490
3876
|
} = e, o = (s) => {
|
|
3491
|
-
const a =
|
|
3877
|
+
const a = Ir(s.content, t, n);
|
|
3492
3878
|
if (a !== s.content)
|
|
3493
3879
|
return { ...s, content: a };
|
|
3494
3880
|
};
|
|
@@ -3498,16 +3884,16 @@ function Tr(e = {}) {
|
|
|
3498
3884
|
onAfterReceive: r ? o : void 0
|
|
3499
3885
|
};
|
|
3500
3886
|
}
|
|
3501
|
-
function
|
|
3887
|
+
function Or(e, t, n) {
|
|
3502
3888
|
return typeof e == "function" ? e(t) : e instanceof RegExp ? e.test(t) : n ? t.includes(e) : t.toLowerCase().includes(e.toLowerCase());
|
|
3503
3889
|
}
|
|
3504
|
-
function
|
|
3890
|
+
function Hr(e) {
|
|
3505
3891
|
const { rules: t, caseSensitive: n = !1 } = e;
|
|
3506
3892
|
return {
|
|
3507
3893
|
name: "canned-responses",
|
|
3508
3894
|
onBeforeSend(r, o) {
|
|
3509
3895
|
for (const s of t)
|
|
3510
|
-
if (
|
|
3896
|
+
if (Or(s.match, r.content, n)) {
|
|
3511
3897
|
o.respondWith(s.reply);
|
|
3512
3898
|
return;
|
|
3513
3899
|
}
|
|
@@ -3515,20 +3901,21 @@ function Er(e) {
|
|
|
3515
3901
|
};
|
|
3516
3902
|
}
|
|
3517
3903
|
export {
|
|
3518
|
-
|
|
3519
|
-
|
|
3520
|
-
|
|
3521
|
-
|
|
3522
|
-
|
|
3904
|
+
wt as ChatApiClient,
|
|
3905
|
+
Q as ChatApiError,
|
|
3906
|
+
Br as ChatWidget,
|
|
3907
|
+
Re as DEFAULT_ATTACHMENT_OPTIONS,
|
|
3908
|
+
Gt as DEFAULT_CITATIONS_OPTIONS,
|
|
3909
|
+
Dr as DEFAULT_PII_PATTERNS,
|
|
3523
3910
|
De as DebounceError,
|
|
3524
|
-
|
|
3525
|
-
|
|
3526
|
-
|
|
3527
|
-
|
|
3528
|
-
|
|
3529
|
-
|
|
3530
|
-
|
|
3531
|
-
|
|
3532
|
-
|
|
3533
|
-
|
|
3911
|
+
dt as builtinThemes,
|
|
3912
|
+
Ur as createTranslations,
|
|
3913
|
+
je as defaultTranslations,
|
|
3914
|
+
ut as detectLocale,
|
|
3915
|
+
lt as locales,
|
|
3916
|
+
Fr as pluginAnalytics,
|
|
3917
|
+
Hr as pluginCannedResponses,
|
|
3918
|
+
_r as pluginRedactPII,
|
|
3919
|
+
Ir as redactText,
|
|
3920
|
+
yr as resolveTranslations
|
|
3534
3921
|
};
|