langgraph-ui-components 0.0.17 → 0.0.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.es100.js +20 -354
- package/dist/index.es100.js.map +1 -1
- package/dist/index.es101.js +172 -127
- package/dist/index.es101.js.map +1 -1
- package/dist/index.es102.js +231 -60
- package/dist/index.es102.js.map +1 -1
- package/dist/index.es103.js +352 -34
- package/dist/index.es103.js.map +1 -1
- package/dist/index.es104.js +134 -34
- package/dist/index.es104.js.map +1 -1
- package/dist/index.es105.js +65 -161
- package/dist/index.es105.js.map +1 -1
- package/dist/index.es106.js +30 -196
- package/dist/index.es106.js.map +1 -1
- package/dist/index.es107.js +36 -13
- package/dist/index.es107.js.map +1 -1
- package/dist/index.es108.js +162 -26
- package/dist/index.es108.js.map +1 -1
- package/dist/index.es109.js +196 -27
- package/dist/index.es109.js.map +1 -1
- package/dist/index.es110.js +13 -3156
- package/dist/index.es110.js.map +1 -1
- package/dist/index.es111.js +27 -34
- package/dist/index.es111.js.map +1 -1
- package/dist/index.es112.js +34 -5
- package/dist/index.es112.js.map +1 -1
- package/dist/index.es113.js +3145 -61
- package/dist/index.es113.js.map +1 -1
- package/dist/index.es114.js +33 -33
- package/dist/index.es114.js.map +1 -1
- package/dist/index.es115.js +5 -21
- package/dist/index.es115.js.map +1 -1
- package/dist/index.es116.js +69 -64
- package/dist/index.es116.js.map +1 -1
- package/dist/index.es117.js +37 -3
- package/dist/index.es117.js.map +1 -1
- package/dist/index.es12.js +1 -1
- package/dist/index.es121.js +9 -9
- package/dist/index.es122.js +1 -1
- package/dist/index.es126.js +1 -1
- package/dist/index.es128.js +2 -2
- package/dist/index.es13.js +9 -3
- package/dist/index.es13.js.map +1 -1
- package/dist/index.es136.js +1 -1
- package/dist/index.es137.js +6 -6
- package/dist/index.es139.js +1 -1
- package/dist/index.es14.js +6 -6
- package/dist/index.es140.js +1 -1
- package/dist/index.es143.js +1 -1
- package/dist/index.es144.js +1 -1
- package/dist/index.es145.js +1 -1
- package/dist/index.es146.js +1 -1
- package/dist/index.es147.js +1 -1
- package/dist/index.es148.js +1 -1
- package/dist/index.es149.js +1 -1
- package/dist/index.es150.js +1 -1
- package/dist/index.es151.js +1 -1
- package/dist/index.es152.js +1 -1
- package/dist/index.es153.js +1 -1
- package/dist/index.es154.js +1 -1
- package/dist/index.es155.js +1 -1
- package/dist/index.es156.js +1 -1
- package/dist/index.es157.js +1 -1
- package/dist/index.es158.js +1 -1
- package/dist/index.es159.js +1 -1
- package/dist/index.es16.js +10 -5
- package/dist/index.es16.js.map +1 -1
- package/dist/index.es160.js +1 -1
- package/dist/index.es161.js +1 -1
- package/dist/index.es162.js +1 -1
- package/dist/index.es163.js +1 -1
- package/dist/index.es164.js +1 -1
- package/dist/index.es165.js +1 -1
- package/dist/index.es166.js +1 -1
- package/dist/index.es167.js +1 -1
- package/dist/index.es168.js +1 -1
- package/dist/index.es169.js +1 -1
- package/dist/index.es170.js +1 -1
- package/dist/index.es171.js +1 -1
- package/dist/index.es172.js +1 -1
- package/dist/index.es173.js +1 -1
- package/dist/index.es174.js +1 -1
- package/dist/index.es175.js +1 -1
- package/dist/index.es176.js +1 -1
- package/dist/index.es177.js +1 -1
- package/dist/index.es178.js +1 -1
- package/dist/index.es179.js +1 -1
- package/dist/index.es18.js +7 -7
- package/dist/index.es180.js +1 -1
- package/dist/index.es181.js +1 -1
- package/dist/index.es182.js +1 -1
- package/dist/index.es183.js +1 -1
- package/dist/index.es184.js +1 -1
- package/dist/index.es185.js +1 -1
- package/dist/index.es186.js +1 -1
- package/dist/index.es187.js +1 -1
- package/dist/index.es191.js +2 -56
- package/dist/index.es191.js.map +1 -1
- package/dist/index.es192.js +2 -100
- package/dist/index.es192.js.map +1 -1
- package/dist/index.es193.js +2 -191
- package/dist/index.es193.js.map +1 -1
- package/dist/index.es194.js +2 -110
- package/dist/index.es194.js.map +1 -1
- package/dist/index.es195.js +2 -35
- package/dist/index.es195.js.map +1 -1
- package/dist/index.es196.js +2 -10
- package/dist/index.es196.js.map +1 -1
- package/dist/index.es197.js +2 -11
- package/dist/index.es197.js.map +1 -1
- package/dist/index.es198.js +2 -12
- package/dist/index.es198.js.map +1 -1
- package/dist/index.es199.js +2 -91
- package/dist/index.es199.js.map +1 -1
- package/dist/index.es2.js +96 -11
- package/dist/index.es2.js.map +1 -1
- package/dist/index.es20.js +2 -2
- package/dist/index.es200.js +2 -275
- package/dist/index.es200.js.map +1 -1
- package/dist/index.es201.js +2 -2
- package/dist/index.es202.js +2 -164
- package/dist/index.es202.js.map +1 -1
- package/dist/index.es203.js +2 -51
- package/dist/index.es203.js.map +1 -1
- package/dist/index.es204.js +2 -40
- package/dist/index.es204.js.map +1 -1
- package/dist/index.es205.js +2 -35
- package/dist/index.es205.js.map +1 -1
- package/dist/index.es206.js +2 -40
- package/dist/index.es206.js.map +1 -1
- package/dist/index.es207.js +2 -24
- package/dist/index.es207.js.map +1 -1
- package/dist/index.es208.js +2 -591
- package/dist/index.es208.js.map +1 -1
- package/dist/index.es209.js +2 -125
- package/dist/index.es209.js.map +1 -1
- package/dist/index.es210.js +2 -164
- package/dist/index.es210.js.map +1 -1
- package/dist/index.es211.js +2 -2
- package/dist/index.es212.js +2 -2
- package/dist/index.es213.js +2 -2
- package/dist/index.es214.js +2 -2
- package/dist/index.es215.js +2 -2
- package/dist/index.es216.js +2 -2
- package/dist/index.es217.js +2 -2
- package/dist/index.es218.js +2 -2
- package/dist/index.es219.js +2 -2
- package/dist/index.es22.js +35 -119
- package/dist/index.es22.js.map +1 -1
- package/dist/index.es220.js +2 -2
- package/dist/index.es221.js +2 -2
- package/dist/index.es222.js +2 -2
- package/dist/index.es223.js +2 -2
- package/dist/index.es224.js +2 -2
- package/dist/index.es225.js +2 -2
- package/dist/index.es226.js +2 -2
- package/dist/index.es227.js +2 -2
- package/dist/index.es228.js +2 -2
- package/dist/index.es229.js +2 -2
- package/dist/index.es23.js +66 -36
- package/dist/index.es23.js.map +1 -1
- package/dist/index.es230.js +2 -2
- package/dist/index.es231.js +2 -2
- package/dist/index.es232.js +2 -2
- package/dist/index.es233.js +2 -2
- package/dist/index.es234.js +2 -2
- package/dist/index.es235.js +2 -2
- package/dist/index.es236.js +56 -2
- package/dist/index.es236.js.map +1 -1
- package/dist/index.es237.js +100 -2
- package/dist/index.es237.js.map +1 -1
- package/dist/index.es238.js +191 -2
- package/dist/index.es238.js.map +1 -1
- package/dist/index.es239.js +110 -2
- package/dist/index.es239.js.map +1 -1
- package/dist/index.es24.js +30 -64
- package/dist/index.es24.js.map +1 -1
- package/dist/index.es240.js +35 -2
- package/dist/index.es240.js.map +1 -1
- package/dist/index.es241.js +10 -2
- package/dist/index.es241.js.map +1 -1
- package/dist/index.es242.js +11 -2
- package/dist/index.es242.js.map +1 -1
- package/dist/index.es243.js +12 -2
- package/dist/index.es243.js.map +1 -1
- package/dist/index.es244.js +91 -2
- package/dist/index.es244.js.map +1 -1
- package/dist/index.es245.js +275 -2
- package/dist/index.es245.js.map +1 -1
- package/dist/index.es246.js +2 -2
- package/dist/index.es247.js +164 -2
- package/dist/index.es247.js.map +1 -1
- package/dist/index.es248.js +51 -2
- package/dist/index.es248.js.map +1 -1
- package/dist/index.es249.js +40 -2
- package/dist/index.es249.js.map +1 -1
- package/dist/index.es25.js +120 -29
- package/dist/index.es25.js.map +1 -1
- package/dist/index.es250.js +35 -2
- package/dist/index.es250.js.map +1 -1
- package/dist/index.es251.js +40 -2
- package/dist/index.es251.js.map +1 -1
- package/dist/index.es252.js +24 -2
- package/dist/index.es252.js.map +1 -1
- package/dist/index.es253.js +591 -2
- package/dist/index.es253.js.map +1 -1
- package/dist/index.es254.js +125 -2
- package/dist/index.es254.js.map +1 -1
- package/dist/index.es255.js +164 -2
- package/dist/index.es255.js.map +1 -1
- package/dist/index.es256.js +2 -2
- package/dist/index.es26.js +102 -123
- package/dist/index.es26.js.map +1 -1
- package/dist/index.es267.js +1 -1
- package/dist/index.es27.js +66 -101
- package/dist/index.es27.js.map +1 -1
- package/dist/index.es28.js +139 -66
- package/dist/index.es28.js.map +1 -1
- package/dist/index.es29.js +295 -131
- package/dist/index.es29.js.map +1 -1
- package/dist/index.es30.js +114 -298
- package/dist/index.es30.js.map +1 -1
- package/dist/index.es305.js +1 -1
- package/dist/index.es307.js +1 -1
- package/dist/index.es319.js +1 -1
- package/dist/index.es32.js +7 -7
- package/dist/index.es33.js +1 -1
- package/dist/index.es339.js +2 -2
- package/dist/index.es36.js +4 -4
- package/dist/index.es37.js +289 -114
- package/dist/index.es37.js.map +1 -1
- package/dist/index.es38.js +44 -70
- package/dist/index.es38.js.map +1 -1
- package/dist/index.es39.js +145 -19
- package/dist/index.es39.js.map +1 -1
- package/dist/index.es40.js +5 -261
- package/dist/index.es40.js.map +1 -1
- package/dist/index.es41.js +247 -38
- package/dist/index.es41.js.map +1 -1
- package/dist/index.es42.js +110 -207
- package/dist/index.es42.js.map +1 -1
- package/dist/index.es43.js +68 -64
- package/dist/index.es43.js.map +1 -1
- package/dist/index.es44.js +17 -141
- package/dist/index.es44.js.map +1 -1
- package/dist/index.es45.js +251 -14
- package/dist/index.es45.js.map +1 -1
- package/dist/index.es46.js +36 -223
- package/dist/index.es46.js.map +1 -1
- package/dist/index.es47.js +213 -7
- package/dist/index.es47.js.map +1 -1
- package/dist/index.es48.js +55 -1180
- package/dist/index.es48.js.map +1 -1
- package/dist/index.es49.js +141 -6
- package/dist/index.es49.js.map +1 -1
- package/dist/index.es50.js +21 -144
- package/dist/index.es50.js.map +1 -1
- package/dist/index.es51.js +230 -5
- package/dist/index.es51.js.map +1 -1
- package/dist/index.es52.js +8 -292
- package/dist/index.es52.js.map +1 -1
- package/dist/index.es53.js +1190 -43
- package/dist/index.es53.js.map +1 -1
- package/dist/index.es54.js +7 -144
- package/dist/index.es54.js.map +1 -1
- package/dist/index.es55.js +136 -241
- package/dist/index.es55.js.map +1 -1
- package/dist/index.es59.js +1 -1
- package/dist/index.es6.js +21 -8
- package/dist/index.es6.js.map +1 -1
- package/dist/index.es60.js +1 -1
- package/dist/index.es61.js +1 -1
- package/dist/index.es62.js +7 -7
- package/dist/index.es67.js +3 -3
- package/dist/index.es69.js +2 -2
- package/dist/index.es70.js +1 -1
- package/dist/index.es71.js +1 -1
- package/dist/index.es72.js +1 -1
- package/dist/index.es77.js +7 -7
- package/dist/index.es78.js +17 -17
- package/dist/index.es82.js +1 -1
- package/dist/index.es83.js +4 -4
- package/dist/index.es84.js +20 -11
- package/dist/index.es84.js.map +1 -1
- package/dist/index.es85.js +66 -38
- package/dist/index.es85.js.map +1 -1
- package/dist/index.es86.js +3 -34
- package/dist/index.es86.js.map +1 -1
- package/dist/index.es87.js +10 -230
- package/dist/index.es87.js.map +1 -1
- package/dist/index.es88.js +39 -29
- package/dist/index.es88.js.map +1 -1
- package/dist/index.es89.js +32 -73
- package/dist/index.es89.js.map +1 -1
- package/dist/index.es90.js +200 -44
- package/dist/index.es90.js.map +1 -1
- package/dist/index.es91.js +15 -37
- package/dist/index.es91.js.map +1 -1
- package/dist/index.es92.js +71 -26
- package/dist/index.es92.js.map +1 -1
- package/dist/index.es93.js +72 -39
- package/dist/index.es93.js.map +1 -1
- package/dist/index.es94.js +48 -53
- package/dist/index.es94.js.map +1 -1
- package/dist/index.es95.js +30 -13
- package/dist/index.es95.js.map +1 -1
- package/dist/index.es96.js +40 -134
- package/dist/index.es96.js.map +1 -1
- package/dist/index.es97.js +56 -20
- package/dist/index.es97.js.map +1 -1
- package/dist/index.es98.js +11 -180
- package/dist/index.es98.js.map +1 -1
- package/dist/index.es99.js +129 -233
- package/dist/index.es99.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
package/dist/index.es37.js
CHANGED
|
@@ -1,122 +1,297 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
if (buffer.length) {
|
|
46
|
-
buffer.push(lines[0]);
|
|
47
|
-
lines[0] = joinArrays(buffer);
|
|
48
|
-
buffer = [];
|
|
49
|
-
}
|
|
50
|
-
if (!trailingNewline) {
|
|
51
|
-
if (lines.length) buffer = [lines.pop()];
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "./index.es40.js";
|
|
3
|
+
import { CopyIcon, CheckIcon } from "lucide-react";
|
|
4
|
+
import { useState } from "react";
|
|
5
|
+
import ReactMarkdown from "react-markdown";
|
|
6
|
+
import rehypeAutoLinkHeadings from "rehype-autolink-headings";
|
|
7
|
+
import rehypeHighlight from "rehype-highlight";
|
|
8
|
+
import remarkBreaks from "remark-breaks";
|
|
9
|
+
import remarkGfm from "remark-gfm";
|
|
10
|
+
import remarkMath from "remark-math";
|
|
11
|
+
import rehypeKatex from "rehype-katex";
|
|
12
|
+
import { SyntaxHighlighter } from "./index.es67.js";
|
|
13
|
+
/* empty css */
|
|
14
|
+
const useCopyToClipboard = ({
|
|
15
|
+
copiedDuration = 3e3
|
|
16
|
+
} = {}) => {
|
|
17
|
+
const [isCopied, setIsCopied] = useState(false);
|
|
18
|
+
const copyToClipboard = (value) => {
|
|
19
|
+
if (!value) return;
|
|
20
|
+
navigator.clipboard.writeText(value).then(() => {
|
|
21
|
+
setIsCopied(true);
|
|
22
|
+
setTimeout(() => setIsCopied(false), copiedDuration);
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
return { isCopied, copyToClipboard };
|
|
26
|
+
};
|
|
27
|
+
const CodeHeader = ({ language, code }) => {
|
|
28
|
+
const { isCopied, copyToClipboard } = useCopyToClipboard();
|
|
29
|
+
const onCopy = () => {
|
|
30
|
+
if (!code || isCopied) return;
|
|
31
|
+
copyToClipboard(code);
|
|
32
|
+
};
|
|
33
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-4 rounded-t-lg bg-zinc-800 px-4 py-2 text-sm font-semibold text-zinc-200 border-b border-zinc-700", children: [
|
|
34
|
+
/* @__PURE__ */ jsx("span", { className: "lowercase text-xs font-mono", children: language || "text" }),
|
|
35
|
+
/* @__PURE__ */ jsxs(
|
|
36
|
+
"button",
|
|
37
|
+
{
|
|
38
|
+
onClick: onCopy,
|
|
39
|
+
className: "p-1 rounded hover:bg-zinc-700 transition-colors",
|
|
40
|
+
title: isCopied ? "Copied!" : "Copy code",
|
|
41
|
+
children: [
|
|
42
|
+
!isCopied && /* @__PURE__ */ jsx(CopyIcon, { size: 16 }),
|
|
43
|
+
isCopied && /* @__PURE__ */ jsx(CheckIcon, { size: 16, className: "text-green-400" })
|
|
44
|
+
]
|
|
52
45
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
46
|
+
)
|
|
47
|
+
] });
|
|
48
|
+
};
|
|
49
|
+
const defaultComponents = {
|
|
50
|
+
h1: ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
51
|
+
"h1",
|
|
52
|
+
{
|
|
53
|
+
className: cn(
|
|
54
|
+
"mb-6 mt-8 scroll-m-20 text-3xl font-bold tracking-tight text-zinc-100 first:mt-0 last:mb-0",
|
|
55
|
+
className
|
|
56
|
+
),
|
|
57
|
+
...props
|
|
57
58
|
}
|
|
58
|
-
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
59
|
+
),
|
|
60
|
+
h2: ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
61
|
+
"h2",
|
|
62
|
+
{
|
|
63
|
+
className: cn(
|
|
64
|
+
"mt-8 mb-4 scroll-m-20 text-2xl font-semibold tracking-tight text-zinc-100 first:mt-0 last:mb-0 border-b border-zinc-800 pb-2",
|
|
65
|
+
className
|
|
66
|
+
),
|
|
67
|
+
...props
|
|
68
|
+
}
|
|
69
|
+
),
|
|
70
|
+
h3: ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
71
|
+
"h3",
|
|
72
|
+
{
|
|
73
|
+
className: cn(
|
|
74
|
+
"mt-6 mb-3 scroll-m-20 text-xl font-semibold tracking-tight text-zinc-100 first:mt-0 last:mb-0",
|
|
75
|
+
className
|
|
76
|
+
),
|
|
77
|
+
...props
|
|
78
|
+
}
|
|
79
|
+
),
|
|
80
|
+
h4: ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
81
|
+
"h4",
|
|
82
|
+
{
|
|
83
|
+
className: cn(
|
|
84
|
+
"mt-6 mb-3 scroll-m-20 text-lg font-semibold tracking-tight text-zinc-200 first:mt-0 last:mb-0",
|
|
85
|
+
className
|
|
86
|
+
),
|
|
87
|
+
...props
|
|
88
|
+
}
|
|
89
|
+
),
|
|
90
|
+
h5: ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
91
|
+
"h5",
|
|
92
|
+
{
|
|
93
|
+
className: cn(
|
|
94
|
+
"my-3 text-base font-semibold text-zinc-200 first:mt-0 last:mb-0",
|
|
95
|
+
className
|
|
96
|
+
),
|
|
97
|
+
...props
|
|
98
|
+
}
|
|
99
|
+
),
|
|
100
|
+
h6: ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
101
|
+
"h6",
|
|
102
|
+
{
|
|
103
|
+
className: cn("my-3 text-sm font-semibold text-zinc-300 first:mt-0 last:mb-0", className),
|
|
104
|
+
...props
|
|
105
|
+
}
|
|
106
|
+
),
|
|
107
|
+
p: ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
108
|
+
"p",
|
|
109
|
+
{
|
|
110
|
+
className: cn("mb-5 leading-7 text-zinc-200 first:mt-0 last:mb-0", className),
|
|
111
|
+
...props
|
|
112
|
+
}
|
|
113
|
+
),
|
|
114
|
+
a: ({ className, href, ...props }) => /* @__PURE__ */ jsx(
|
|
115
|
+
"a",
|
|
116
|
+
{
|
|
117
|
+
href,
|
|
118
|
+
target: href?.startsWith("http") ? "_blank" : void 0,
|
|
119
|
+
rel: href?.startsWith("http") ? "noopener noreferrer" : void 0,
|
|
120
|
+
className: cn(
|
|
121
|
+
"text-blue-400 hover:text-blue-300 font-medium underline underline-offset-4 transition-colors",
|
|
122
|
+
className
|
|
123
|
+
),
|
|
124
|
+
...props
|
|
125
|
+
}
|
|
126
|
+
),
|
|
127
|
+
blockquote: ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
128
|
+
"blockquote",
|
|
129
|
+
{
|
|
130
|
+
className: cn(
|
|
131
|
+
"my-4 border-l-4 border-zinc-600 pl-4 italic text-zinc-300 bg-zinc-900/50 py-2 rounded-r",
|
|
132
|
+
className
|
|
133
|
+
),
|
|
134
|
+
...props
|
|
135
|
+
}
|
|
136
|
+
),
|
|
137
|
+
ul: ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
138
|
+
"ul",
|
|
139
|
+
{
|
|
140
|
+
className: cn(
|
|
141
|
+
"my-4 ml-6 space-y-2 list-none text-zinc-200",
|
|
142
|
+
className
|
|
143
|
+
),
|
|
144
|
+
...props
|
|
145
|
+
}
|
|
146
|
+
),
|
|
147
|
+
ol: ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
148
|
+
"ol",
|
|
149
|
+
{
|
|
150
|
+
className: cn("my-4 ml-8 list-decimal text-zinc-200 [&>li]:mt-2", className),
|
|
151
|
+
...props
|
|
152
|
+
}
|
|
153
|
+
),
|
|
154
|
+
li: ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
155
|
+
"li",
|
|
156
|
+
{
|
|
157
|
+
className: cn(
|
|
158
|
+
"leading-7 pl-6 relative before:content-['•'] before:absolute before:left-0 before:text-zinc-400 before:font-bold",
|
|
159
|
+
// This adds a bullet using CSS before pseudo-element with proper positioning
|
|
160
|
+
className
|
|
161
|
+
),
|
|
162
|
+
...props
|
|
163
|
+
}
|
|
164
|
+
),
|
|
165
|
+
hr: ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
166
|
+
"hr",
|
|
167
|
+
{
|
|
168
|
+
className: cn("my-6 border-zinc-700", className),
|
|
169
|
+
...props
|
|
170
|
+
}
|
|
171
|
+
),
|
|
172
|
+
table: ({ className, ...props }) => /* @__PURE__ */ jsx("div", { className: "my-4 w-full overflow-x-auto", children: /* @__PURE__ */ jsx(
|
|
173
|
+
"table",
|
|
174
|
+
{
|
|
175
|
+
className: cn(
|
|
176
|
+
"w-full border-collapse border border-zinc-700 rounded-lg overflow-hidden",
|
|
177
|
+
className
|
|
178
|
+
),
|
|
179
|
+
...props
|
|
180
|
+
}
|
|
181
|
+
) }),
|
|
182
|
+
th: ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
183
|
+
"th",
|
|
184
|
+
{
|
|
185
|
+
className: cn(
|
|
186
|
+
"bg-zinc-800 border border-zinc-700 px-4 py-2 text-left font-semibold text-zinc-100 [&[align=center]]:text-center [&[align=right]]:text-right",
|
|
187
|
+
className
|
|
188
|
+
),
|
|
189
|
+
...props
|
|
190
|
+
}
|
|
191
|
+
),
|
|
192
|
+
td: ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
193
|
+
"td",
|
|
194
|
+
{
|
|
195
|
+
className: cn(
|
|
196
|
+
"border border-zinc-700 px-4 py-2 text-left text-zinc-200 [&[align=center]]:text-center [&[align=right]]:text-right",
|
|
197
|
+
className
|
|
198
|
+
),
|
|
199
|
+
...props
|
|
200
|
+
}
|
|
201
|
+
),
|
|
202
|
+
tr: ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
203
|
+
"tr",
|
|
204
|
+
{
|
|
205
|
+
className: cn(
|
|
206
|
+
"m-0 border-b border-zinc-700 p-0 even:bg-zinc-900/30",
|
|
207
|
+
className
|
|
208
|
+
),
|
|
209
|
+
...props
|
|
210
|
+
}
|
|
211
|
+
),
|
|
212
|
+
sup: ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
213
|
+
"sup",
|
|
214
|
+
{
|
|
215
|
+
className: cn("[&>a]:text-xs [&>a]:no-underline", className),
|
|
216
|
+
...props
|
|
217
|
+
}
|
|
218
|
+
),
|
|
219
|
+
strong: ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
220
|
+
"strong",
|
|
221
|
+
{
|
|
222
|
+
className: cn("font-bold text-zinc-100", className),
|
|
223
|
+
...props
|
|
224
|
+
}
|
|
225
|
+
),
|
|
226
|
+
em: ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
227
|
+
"em",
|
|
228
|
+
{
|
|
229
|
+
className: cn("italic text-zinc-200", className),
|
|
230
|
+
...props
|
|
231
|
+
}
|
|
232
|
+
),
|
|
233
|
+
pre: ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
234
|
+
"pre",
|
|
235
|
+
{
|
|
236
|
+
className: cn(
|
|
237
|
+
"my-4 overflow-x-auto rounded-lg bg-zinc-900 text-white",
|
|
238
|
+
className
|
|
239
|
+
),
|
|
240
|
+
...props
|
|
241
|
+
}
|
|
242
|
+
),
|
|
243
|
+
code: ({
|
|
244
|
+
className,
|
|
245
|
+
children,
|
|
246
|
+
...props
|
|
247
|
+
}) => {
|
|
248
|
+
const match = /language-(\w+)/.exec(className || "");
|
|
249
|
+
if (match) {
|
|
250
|
+
const language = match[1];
|
|
251
|
+
const code = String(children).replace(/\n$/, "");
|
|
252
|
+
return /* @__PURE__ */ jsxs("div", { className: "my-4 rounded-lg overflow-hidden border border-zinc-700", children: [
|
|
253
|
+
/* @__PURE__ */ jsx(
|
|
254
|
+
CodeHeader,
|
|
255
|
+
{
|
|
256
|
+
language,
|
|
257
|
+
code
|
|
258
|
+
}
|
|
259
|
+
),
|
|
260
|
+
/* @__PURE__ */ jsx(
|
|
261
|
+
SyntaxHighlighter,
|
|
262
|
+
{
|
|
263
|
+
language,
|
|
264
|
+
className,
|
|
265
|
+
children: code
|
|
266
|
+
}
|
|
267
|
+
)
|
|
268
|
+
] });
|
|
269
|
+
}
|
|
270
|
+
return /* @__PURE__ */ jsx(
|
|
271
|
+
"code",
|
|
272
|
+
{
|
|
273
|
+
className: cn(
|
|
274
|
+
"rounded bg-zinc-800 px-1.5 py-0.5 font-mono text-sm text-zinc-100 border border-zinc-700",
|
|
275
|
+
className
|
|
276
|
+
),
|
|
277
|
+
...props,
|
|
278
|
+
children
|
|
94
279
|
}
|
|
95
|
-
|
|
96
|
-
flush(controller) {
|
|
97
|
-
if (event) controller.enqueue({
|
|
98
|
-
id: lastEventId || void 0,
|
|
99
|
-
event,
|
|
100
|
-
data: data.length ? decodeArraysToJson(decoder, data) : null
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
function joinArrays(data) {
|
|
106
|
-
const totalLength = data.reduce((acc, curr) => acc + curr.length, 0);
|
|
107
|
-
const merged = new Uint8Array(totalLength);
|
|
108
|
-
let offset = 0;
|
|
109
|
-
for (const c of data) {
|
|
110
|
-
merged.set(c, offset);
|
|
111
|
-
offset += c.length;
|
|
280
|
+
);
|
|
112
281
|
}
|
|
113
|
-
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
|
|
282
|
+
};
|
|
283
|
+
function AgentMarkdown({ content }) {
|
|
284
|
+
return /* @__PURE__ */ jsx("div", { className: "prose prose-invert max-w-none", children: /* @__PURE__ */ jsx(
|
|
285
|
+
ReactMarkdown,
|
|
286
|
+
{
|
|
287
|
+
remarkPlugins: [remarkGfm, remarkBreaks, remarkMath],
|
|
288
|
+
rehypePlugins: [rehypeHighlight, rehypeAutoLinkHeadings, rehypeKatex],
|
|
289
|
+
components: defaultComponents,
|
|
290
|
+
children: content
|
|
291
|
+
}
|
|
292
|
+
) });
|
|
117
293
|
}
|
|
118
294
|
export {
|
|
119
|
-
|
|
120
|
-
SSEDecoder
|
|
295
|
+
AgentMarkdown
|
|
121
296
|
};
|
|
122
297
|
//# sourceMappingURL=index.es37.js.map
|
package/dist/index.es37.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es37.js","sources":["../node_modules/.pnpm/@langchain+langgraph-sdk@1.5.3_@langchain+core@1.1.13_openai@6.16.0_zod@4.3.5___react-d_6e8116ad15c37793c6138fe0d58aa04e/node_modules/@langchain/langgraph-sdk/dist/utils/sse.js"],"sourcesContent":["//#region src/utils/sse.ts\nconst CR = \"\\r\".charCodeAt(0);\nconst LF = \"\\n\".charCodeAt(0);\nconst NULL = \"\\0\".charCodeAt(0);\nconst COLON = \":\".charCodeAt(0);\nconst SPACE = \" \".charCodeAt(0);\nconst TRAILING_NEWLINE = [CR, LF];\nfunction BytesLineDecoder() {\n\tlet buffer = [];\n\tlet trailingCr = false;\n\treturn new TransformStream({\n\t\tstart() {\n\t\t\tbuffer = [];\n\t\t\ttrailingCr = false;\n\t\t},\n\t\ttransform(chunk, controller) {\n\t\t\tlet text = chunk;\n\t\t\tif (trailingCr) {\n\t\t\t\ttext = joinArrays([[CR], text]);\n\t\t\t\ttrailingCr = false;\n\t\t\t}\n\t\t\tif (text.length > 0 && text.at(-1) === CR) {\n\t\t\t\ttrailingCr = true;\n\t\t\t\ttext = text.subarray(0, -1);\n\t\t\t}\n\t\t\tif (!text.length) return;\n\t\t\tconst trailingNewline = TRAILING_NEWLINE.includes(text.at(-1));\n\t\t\tconst lastIdx = text.length - 1;\n\t\t\tconst { lines } = text.reduce((acc, cur, idx) => {\n\t\t\t\tif (acc.from > idx) return acc;\n\t\t\t\tif (cur === CR || cur === LF) {\n\t\t\t\t\tacc.lines.push(text.subarray(acc.from, idx));\n\t\t\t\t\tif (cur === CR && text[idx + 1] === LF) acc.from = idx + 2;\n\t\t\t\t\telse acc.from = idx + 1;\n\t\t\t\t}\n\t\t\t\tif (idx === lastIdx && acc.from <= lastIdx) acc.lines.push(text.subarray(acc.from));\n\t\t\t\treturn acc;\n\t\t\t}, {\n\t\t\t\tlines: [],\n\t\t\t\tfrom: 0\n\t\t\t});\n\t\t\tif (lines.length === 1 && !trailingNewline) {\n\t\t\t\tbuffer.push(lines[0]);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (buffer.length) {\n\t\t\t\tbuffer.push(lines[0]);\n\t\t\t\tlines[0] = joinArrays(buffer);\n\t\t\t\tbuffer = [];\n\t\t\t}\n\t\t\tif (!trailingNewline) {\n\t\t\t\tif (lines.length) buffer = [lines.pop()];\n\t\t\t}\n\t\t\tfor (const line of lines) controller.enqueue(line);\n\t\t},\n\t\tflush(controller) {\n\t\t\tif (buffer.length) controller.enqueue(joinArrays(buffer));\n\t\t}\n\t});\n}\nfunction SSEDecoder() {\n\tlet event = \"\";\n\tlet data = [];\n\tlet lastEventId = \"\";\n\tlet retry = null;\n\tconst decoder = new TextDecoder();\n\treturn new TransformStream({\n\t\ttransform(chunk, controller) {\n\t\t\tif (!chunk.length) {\n\t\t\t\tif (!event && !data.length && !lastEventId && retry == null) return;\n\t\t\t\tconst sse = {\n\t\t\t\t\tid: lastEventId || void 0,\n\t\t\t\t\tevent,\n\t\t\t\t\tdata: data.length ? decodeArraysToJson(decoder, data) : null\n\t\t\t\t};\n\t\t\t\tevent = \"\";\n\t\t\t\tdata = [];\n\t\t\t\tretry = null;\n\t\t\t\tcontroller.enqueue(sse);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (chunk[0] === COLON) return;\n\t\t\tconst sepIdx = chunk.indexOf(COLON);\n\t\t\tif (sepIdx === -1) return;\n\t\t\tconst fieldName = decoder.decode(chunk.subarray(0, sepIdx));\n\t\t\tlet value = chunk.subarray(sepIdx + 1);\n\t\t\tif (value[0] === SPACE) value = value.subarray(1);\n\t\t\tif (fieldName === \"event\") event = decoder.decode(value);\n\t\t\telse if (fieldName === \"data\") data.push(value);\n\t\t\telse if (fieldName === \"id\") {\n\t\t\t\tif (value.indexOf(NULL) === -1) lastEventId = decoder.decode(value);\n\t\t\t} else if (fieldName === \"retry\") {\n\t\t\t\tconst retryNum = Number.parseInt(decoder.decode(value), 10);\n\t\t\t\tif (!Number.isNaN(retryNum)) retry = retryNum;\n\t\t\t}\n\t\t},\n\t\tflush(controller) {\n\t\t\tif (event) controller.enqueue({\n\t\t\t\tid: lastEventId || void 0,\n\t\t\t\tevent,\n\t\t\t\tdata: data.length ? decodeArraysToJson(decoder, data) : null\n\t\t\t});\n\t\t}\n\t});\n}\nfunction joinArrays(data) {\n\tconst totalLength = data.reduce((acc, curr) => acc + curr.length, 0);\n\tconst merged = new Uint8Array(totalLength);\n\tlet offset = 0;\n\tfor (const c of data) {\n\t\tmerged.set(c, offset);\n\t\toffset += c.length;\n\t}\n\treturn merged;\n}\nfunction decodeArraysToJson(decoder, data) {\n\treturn JSON.parse(decoder.decode(joinArrays(data)));\n}\n\n//#endregion\nexport { BytesLineDecoder, SSEDecoder };\n//# sourceMappingURL=sse.js.map"],"names":[],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"index.es37.js","sources":["../src/components/ui/AgentMarkdown.tsx"],"sourcesContent":["import { cn } from \"@/utils/tailwindUtil\";\nimport { CheckIcon, CopyIcon } from \"lucide-react\";\nimport { type FC, useState } from \"react\";\nimport ReactMarkdown from \"react-markdown\";\nimport rehypeAutoLinkHeadings from \"rehype-autolink-headings\";\nimport rehypeHighlight from \"rehype-highlight\";\nimport remarkBreaks from \"remark-breaks\";\nimport remarkGfm from \"remark-gfm\";\nimport remarkMath from \"remark-math\";\nimport rehypeKatex from \"rehype-katex\";\nimport { SyntaxHighlighter } from \"./syntax-highlighter\";\nimport \"katex/dist/katex.min.css\";\n\ninterface CodeHeaderProps {\n language?: string;\n code: string;\n}\n\nconst useCopyToClipboard = ({\n copiedDuration = 3000,\n}: {\n copiedDuration?: number;\n} = {}) => {\n const [isCopied, setIsCopied] = useState<boolean>(false);\n\n const copyToClipboard = (value: string) => {\n if (!value) return;\n\n navigator.clipboard.writeText(value).then(() => {\n setIsCopied(true);\n setTimeout(() => setIsCopied(false), copiedDuration);\n });\n };\n\n return { isCopied, copyToClipboard };\n};\n\nconst CodeHeader: FC<CodeHeaderProps> = ({ language, code }) => {\n const { isCopied, copyToClipboard } = useCopyToClipboard();\n const onCopy = () => {\n if (!code || isCopied) return;\n copyToClipboard(code);\n };\n\n return (\n <div className=\"flex items-center justify-between gap-4 rounded-t-lg bg-zinc-800 px-4 py-2 text-sm font-semibold text-zinc-200 border-b border-zinc-700\">\n <span className=\"lowercase text-xs font-mono\">{language || \"text\"}</span>\n <button\n onClick={onCopy}\n className=\"p-1 rounded hover:bg-zinc-700 transition-colors\"\n title={isCopied ? \"Copied!\" : \"Copy code\"}\n >\n {!isCopied && <CopyIcon size={16} />}\n {isCopied && <CheckIcon size={16} className=\"text-green-400\" />}\n </button>\n </div>\n );\n};\n\nconst defaultComponents: any = {\n h1: ({ className, ...props }: { className?: string }) => (\n <h1\n className={cn(\n \"mb-6 mt-8 scroll-m-20 text-3xl font-bold tracking-tight text-zinc-100 first:mt-0 last:mb-0\",\n className,\n )}\n {...props}\n />\n ),\n h2: ({ className, ...props }: { className?: string }) => (\n <h2\n className={cn(\n \"mt-8 mb-4 scroll-m-20 text-2xl font-semibold tracking-tight text-zinc-100 first:mt-0 last:mb-0 border-b border-zinc-800 pb-2\",\n className,\n )}\n {...props}\n />\n ),\n h3: ({ className, ...props }: { className?: string }) => (\n <h3\n className={cn(\n \"mt-6 mb-3 scroll-m-20 text-xl font-semibold tracking-tight text-zinc-100 first:mt-0 last:mb-0\",\n className,\n )}\n {...props}\n />\n ),\n h4: ({ className, ...props }: { className?: string }) => (\n <h4\n className={cn(\n \"mt-6 mb-3 scroll-m-20 text-lg font-semibold tracking-tight text-zinc-200 first:mt-0 last:mb-0\",\n className,\n )}\n {...props}\n />\n ),\n h5: ({ className, ...props }: { className?: string }) => (\n <h5\n className={cn(\n \"my-3 text-base font-semibold text-zinc-200 first:mt-0 last:mb-0\",\n className,\n )}\n {...props}\n />\n ),\n h6: ({ className, ...props }: { className?: string }) => (\n <h6\n className={cn(\"my-3 text-sm font-semibold text-zinc-300 first:mt-0 last:mb-0\", className)}\n {...props}\n />\n ),\n p: ({ className, ...props }: { className?: string }) => (\n <p\n className={cn(\"mb-5 leading-7 text-zinc-200 first:mt-0 last:mb-0\", className)} // Changed mb-4 to mb-5\n {...props}\n />\n ),\n a: ({ className, href, ...props }: { className?: string; href?: string }) => (\n <a\n href={href}\n target={href?.startsWith('http') ? \"_blank\" : undefined}\n rel={href?.startsWith('http') ? \"noopener noreferrer\" : undefined}\n className={cn(\n \"text-blue-400 hover:text-blue-300 font-medium underline underline-offset-4 transition-colors\",\n className,\n )}\n {...props}\n />\n ),\n blockquote: ({ className, ...props }: { className?: string }) => (\n <blockquote\n className={cn(\n \"my-4 border-l-4 border-zinc-600 pl-4 italic text-zinc-300 bg-zinc-900/50 py-2 rounded-r\",\n className\n )}\n {...props}\n />\n ),\n ul: ({ className, ...props }: { className?: string }) => (\n <ul\n className={cn(\n \"my-4 ml-6 space-y-2 list-none text-zinc-200\",\n className\n )}\n {...props}\n />\n ),\n ol: ({ className, ...props }: { className?: string }) => (\n <ol\n className={cn(\"my-4 ml-8 list-decimal text-zinc-200 [&>li]:mt-2\", className)}\n {...props}\n />\n ),\n li: ({ className, ...props }: { className?: string }) => (\n <li\n className={cn(\n \"leading-7 pl-6 relative before:content-['•'] before:absolute before:left-0 before:text-zinc-400 before:font-bold\",\n // This adds a bullet using CSS before pseudo-element with proper positioning\n className\n )}\n {...props}\n />\n ),\n hr: ({ className, ...props }: { className?: string }) => (\n <hr\n className={cn(\"my-6 border-zinc-700\", className)}\n {...props}\n />\n ),\n table: ({ className, ...props }: { className?: string }) => (\n <div className=\"my-4 w-full overflow-x-auto\">\n <table\n className={cn(\n \"w-full border-collapse border border-zinc-700 rounded-lg overflow-hidden\",\n className,\n )}\n {...props}\n />\n </div>\n ),\n th: ({ className, ...props }: { className?: string }) => (\n <th\n className={cn(\n \"bg-zinc-800 border border-zinc-700 px-4 py-2 text-left font-semibold text-zinc-100 [&[align=center]]:text-center [&[align=right]]:text-right\",\n className,\n )}\n {...props}\n />\n ),\n td: ({ className, ...props }: { className?: string }) => (\n <td\n className={cn(\n \"border border-zinc-700 px-4 py-2 text-left text-zinc-200 [&[align=center]]:text-center [&[align=right]]:text-right\",\n className,\n )}\n {...props}\n />\n ),\n tr: ({ className, ...props }: { className?: string }) => (\n <tr\n className={cn(\n \"m-0 border-b border-zinc-700 p-0 even:bg-zinc-900/30\",\n className,\n )}\n {...props}\n />\n ),\n sup: ({ className, ...props }: { className?: string }) => (\n <sup\n className={cn(\"[&>a]:text-xs [&>a]:no-underline\", className)}\n {...props}\n />\n ),\n strong: ({ className, ...props }: { className?: string }) => (\n <strong\n className={cn(\"font-bold text-zinc-100\", className)}\n {...props}\n />\n ),\n em: ({ className, ...props }: { className?: string }) => (\n <em\n className={cn(\"italic text-zinc-200\", className)}\n {...props}\n />\n ),\n pre: ({ className, ...props }: { className?: string }) => (\n <pre\n className={cn(\n \"my-4 overflow-x-auto rounded-lg bg-zinc-900 text-white\",\n className,\n )}\n {...props}\n />\n ),\n code: ({\n className,\n children,\n ...props\n }: {\n className?: string;\n children: React.ReactNode;\n }) => {\n const match = /language-(\\w+)/.exec(className || \"\");\n\n if (match) {\n const language = match[1];\n const code = String(children).replace(/\\n$/, \"\");\n\n return (\n <div className=\"my-4 rounded-lg overflow-hidden border border-zinc-700\">\n <CodeHeader\n language={language}\n code={code}\n />\n <SyntaxHighlighter\n language={language}\n className={className}\n >\n {code}\n </SyntaxHighlighter>\n </div>\n );\n }\n\n return (\n <code\n className={cn(\n \"rounded bg-zinc-800 px-1.5 py-0.5 font-mono text-sm text-zinc-100 border border-zinc-700\",\n className\n )}\n {...props}\n >\n {children}\n </code>\n );\n },\n};\n\nexport function AgentMarkdown({ content }: { content: string }) {\n return (\n <div className=\"prose prose-invert max-w-none\">\n <ReactMarkdown\n remarkPlugins={[remarkGfm, remarkBreaks, remarkMath]}\n rehypePlugins={[rehypeHighlight, rehypeAutoLinkHeadings, rehypeKatex]}\n components={defaultComponents}\n >\n {content}\n </ReactMarkdown>\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
|
package/dist/index.es38.js
CHANGED
|
@@ -1,75 +1,49 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
if (reconnectPath && !options.signal?.aborted) shouldRetry = true;
|
|
43
|
-
else throw error;
|
|
44
|
-
} finally {
|
|
45
|
-
if (reader) try {
|
|
46
|
-
reader.releaseLock();
|
|
47
|
-
} catch {
|
|
48
|
-
}
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Button } from "./index.es29.js";
|
|
3
|
+
import { ChevronLeft, ChevronRight } from "lucide-react";
|
|
4
|
+
function BranchSwitcher({
|
|
5
|
+
branch,
|
|
6
|
+
branchOptions,
|
|
7
|
+
onSelect,
|
|
8
|
+
isLoading
|
|
9
|
+
}) {
|
|
10
|
+
if (branchOptions.length <= 1) return null;
|
|
11
|
+
const currentIndex = branchOptions.indexOf(branch);
|
|
12
|
+
if (currentIndex === -1) return null;
|
|
13
|
+
const totalBranches = branchOptions.length;
|
|
14
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-xs text-zinc-500", children: [
|
|
15
|
+
/* @__PURE__ */ jsx(
|
|
16
|
+
Button,
|
|
17
|
+
{
|
|
18
|
+
variant: "ghost",
|
|
19
|
+
size: "icon",
|
|
20
|
+
className: "size-6 p-1 h-6 w-6 hover:bg-zinc-800 hover:text-zinc-300",
|
|
21
|
+
onClick: () => onSelect(branchOptions[currentIndex - 1]),
|
|
22
|
+
disabled: isLoading || currentIndex === 0,
|
|
23
|
+
title: "Previous response",
|
|
24
|
+
children: /* @__PURE__ */ jsx(ChevronLeft, { className: "h-4 w-4" })
|
|
25
|
+
}
|
|
26
|
+
),
|
|
27
|
+
/* @__PURE__ */ jsxs("span", { className: "text-xs text-zinc-400 font-medium min-w-[3rem] text-center", children: [
|
|
28
|
+
currentIndex + 1,
|
|
29
|
+
" / ",
|
|
30
|
+
totalBranches
|
|
31
|
+
] }),
|
|
32
|
+
/* @__PURE__ */ jsx(
|
|
33
|
+
Button,
|
|
34
|
+
{
|
|
35
|
+
variant: "ghost",
|
|
36
|
+
size: "icon",
|
|
37
|
+
className: "size-6 p-1 h-6 w-6 hover:bg-zinc-800 hover:text-zinc-300",
|
|
38
|
+
onClick: () => onSelect(branchOptions[currentIndex + 1]),
|
|
39
|
+
disabled: isLoading || currentIndex === totalBranches - 1,
|
|
40
|
+
title: "Next response",
|
|
41
|
+
children: /* @__PURE__ */ jsx(ChevronRight, { className: "h-4 w-4" })
|
|
49
42
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
if (isNetworkError(error) && reconnectPath && !options.signal?.aborted) shouldRetry = true;
|
|
53
|
-
else throw error;
|
|
54
|
-
}
|
|
55
|
-
if (shouldRetry) {
|
|
56
|
-
attempt += 1;
|
|
57
|
-
if (attempt > maxRetries) throw new MaxReconnectAttemptsError(maxRetries, lastError);
|
|
58
|
-
options.onReconnect?.({
|
|
59
|
-
attempt,
|
|
60
|
-
lastEventId,
|
|
61
|
-
cause: lastError
|
|
62
|
-
});
|
|
63
|
-
const delay = Math.min(1e3 * 2 ** (attempt - 1), 5e3) + Math.random() * 1e3;
|
|
64
|
-
await new Promise((resolve) => {
|
|
65
|
-
setTimeout(resolve, delay);
|
|
66
|
-
});
|
|
67
|
-
continue;
|
|
68
|
-
}
|
|
69
|
-
break;
|
|
70
|
-
}
|
|
43
|
+
)
|
|
44
|
+
] });
|
|
71
45
|
}
|
|
72
46
|
export {
|
|
73
|
-
|
|
47
|
+
BranchSwitcher
|
|
74
48
|
};
|
|
75
49
|
//# sourceMappingURL=index.es38.js.map
|
package/dist/index.es38.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es38.js","sources":["../
|
|
1
|
+
{"version":3,"file":"index.es38.js","sources":["../src/components/messages/BranchSwitcher.tsx"],"sourcesContent":["import { Button } from \"@/components/ui/button\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\n\nexport interface BranchSwitcherProps {\n branch: string;\n branchOptions: string[];\n onSelect: (branch: string) => void;\n isLoading: boolean;\n}\n\nexport function BranchSwitcher({\n branch,\n branchOptions,\n onSelect,\n isLoading,\n}: BranchSwitcherProps) {\n if (branchOptions.length <= 1) return null;\n\n const currentIndex = branchOptions.indexOf(branch);\n if (currentIndex === -1) return null;\n\n const totalBranches = branchOptions.length;\n\n return (\n <div className=\"flex items-center gap-2 text-xs text-zinc-500\">\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"size-6 p-1 h-6 w-6 hover:bg-zinc-800 hover:text-zinc-300\"\n onClick={() => onSelect(branchOptions[currentIndex - 1])}\n disabled={isLoading || currentIndex === 0}\n title=\"Previous response\"\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </Button>\n <span className=\"text-xs text-zinc-400 font-medium min-w-[3rem] text-center\">\n {currentIndex + 1} / {totalBranches}\n </span>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"size-6 p-1 h-6 w-6 hover:bg-zinc-800 hover:text-zinc-300\"\n onClick={() => onSelect(branchOptions[currentIndex + 1])}\n disabled={isLoading || currentIndex === totalBranches - 1}\n title=\"Next response\"\n >\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n </div>\n );\n}\n"],"names":[],"mappings":";;;AAUO,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAwB;AACtB,MAAI,cAAc,UAAU,EAAG,QAAO;AAEtC,QAAM,eAAe,cAAc,QAAQ,MAAM;AACjD,MAAI,iBAAiB,GAAI,QAAO;AAEhC,QAAM,gBAAgB,cAAc;AAEpC,SACE,qBAAC,OAAA,EAAI,WAAU,iDACb,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,SAAQ;AAAA,QACR,MAAK;AAAA,QACL,WAAU;AAAA,QACV,SAAS,MAAM,SAAS,cAAc,eAAe,CAAC,CAAC;AAAA,QACvD,UAAU,aAAa,iBAAiB;AAAA,QACxC,OAAM;AAAA,QAEN,UAAA,oBAAC,aAAA,EAAY,WAAU,UAAA,CAAU;AAAA,MAAA;AAAA,IAAA;AAAA,IAEnC,qBAAC,QAAA,EAAK,WAAU,8DACb,UAAA;AAAA,MAAA,eAAe;AAAA,MAAE;AAAA,MAAI;AAAA,IAAA,GACxB;AAAA,IACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,SAAQ;AAAA,QACR,MAAK;AAAA,QACL,WAAU;AAAA,QACV,SAAS,MAAM,SAAS,cAAc,eAAe,CAAC,CAAC;AAAA,QACvD,UAAU,aAAa,iBAAiB,gBAAgB;AAAA,QACxD,OAAM;AAAA,QAEN,UAAA,oBAAC,cAAA,EAAa,WAAU,UAAA,CAAU;AAAA,MAAA;AAAA,IAAA;AAAA,EACpC,GACF;AAEJ;"}
|