@arbidocs/react 0.4.3 → 0.4.5
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/README.md +33 -0
- package/dist/artifacts/index.cjs +458 -0
- package/dist/artifacts/index.cjs.map +1 -0
- package/dist/artifacts/index.d.cts +276 -0
- package/dist/artifacts/index.d.ts +276 -0
- package/dist/artifacts/index.js +434 -0
- package/dist/artifacts/index.js.map +1 -0
- package/dist/artifacts/redline-core.cjs +20 -0
- package/dist/artifacts/redline-core.cjs.map +1 -0
- package/dist/artifacts/redline-core.d.cts +36 -0
- package/dist/artifacts/redline-core.d.ts +36 -0
- package/dist/artifacts/redline-core.js +3 -0
- package/dist/artifacts/redline-core.js.map +1 -0
- package/dist/chunk-2DXS7L7M.cjs +302 -0
- package/dist/chunk-2DXS7L7M.cjs.map +1 -0
- package/dist/{chunk-ORKGCXG3.cjs → chunk-7BDGLRQX.cjs} +123 -427
- package/dist/chunk-7BDGLRQX.cjs.map +1 -0
- package/dist/chunk-7V7B7OEM.cjs +318 -0
- package/dist/chunk-7V7B7OEM.cjs.map +1 -0
- package/dist/{chunk-MIJRORQL.js → chunk-DVRJFLE7.js} +8 -302
- package/dist/chunk-DVRJFLE7.js.map +1 -0
- package/dist/{chunk-EJ2BMHYK.js → chunk-FSMIN5VX.js} +4 -3
- package/dist/chunk-FSMIN5VX.js.map +1 -0
- package/dist/chunk-H7ZZQ4ZV.js +305 -0
- package/dist/chunk-H7ZZQ4ZV.js.map +1 -0
- package/dist/{chunk-JKO3NR5L.js → chunk-HDCRPPBW.js} +5 -23
- package/dist/chunk-HDCRPPBW.js.map +1 -0
- package/dist/chunk-J4MX2W4H.js +26 -0
- package/dist/chunk-J4MX2W4H.js.map +1 -0
- package/dist/{chunk-6ALMBER7.js → chunk-N5SVBDLC.js} +4 -9
- package/dist/chunk-N5SVBDLC.js.map +1 -0
- package/dist/{chunk-RZQACYNQ.cjs → chunk-OBNTJEEO.cjs} +14 -20
- package/dist/chunk-OBNTJEEO.cjs.map +1 -0
- package/dist/{chunk-BXP6S34V.cjs → chunk-PGLV23SB.cjs} +13 -12
- package/dist/chunk-PGLV23SB.cjs.map +1 -0
- package/dist/chunk-RKWNX32A.js +299 -0
- package/dist/chunk-RKWNX32A.js.map +1 -0
- package/dist/chunk-S6A6FSG7.cjs +13 -0
- package/dist/chunk-S6A6FSG7.cjs.map +1 -0
- package/dist/chunk-SN5YV6FF.js +11 -0
- package/dist/chunk-SN5YV6FF.js.map +1 -0
- package/dist/{chunk-7IOCMCC5.cjs → chunk-TMPDW7J5.cjs} +3 -23
- package/dist/chunk-TMPDW7J5.cjs.map +1 -0
- package/dist/chunk-VJWAP2HJ.cjs +303 -0
- package/dist/chunk-VJWAP2HJ.cjs.map +1 -0
- package/dist/chunk-ZMTLGO3K.cjs +29 -0
- package/dist/chunk-ZMTLGO3K.cjs.map +1 -0
- package/dist/chunk-ZY53R6I4.js +276 -0
- package/dist/chunk-ZY53R6I4.js.map +1 -0
- package/dist/index.cjs +784 -612
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1522 -82
- package/dist/index.d.ts +1522 -82
- package/dist/index.js +327 -250
- package/dist/index.js.map +1 -1
- package/dist/shell/index.cjs +8 -7
- package/dist/shell/index.js +3 -2
- package/dist/ui/index.cjs +156 -154
- package/dist/ui/index.js +4 -2
- package/dist/viewers/index.cjs +9 -8
- package/dist/viewers/index.cjs.map +1 -1
- package/dist/viewers/index.js +3 -2
- package/dist/viewers/index.js.map +1 -1
- package/package.json +19 -3
- package/dist/chunk-6ALMBER7.js.map +0 -1
- package/dist/chunk-7IOCMCC5.cjs.map +0 -1
- package/dist/chunk-BXP6S34V.cjs.map +0 -1
- package/dist/chunk-EJ2BMHYK.js.map +0 -1
- package/dist/chunk-JKO3NR5L.js.map +0 -1
- package/dist/chunk-MIJRORQL.js.map +0 -1
- package/dist/chunk-ORKGCXG3.cjs.map +0 -1
- package/dist/chunk-RZQACYNQ.cjs.map +0 -1
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { MarkdownRenderer } from './chunk-H7ZZQ4ZV.js';
|
|
2
|
+
import { getCollisionPadding, DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuLabel, DropdownMenuItem, DropdownMenuSeparator } from './chunk-N5SVBDLC.js';
|
|
3
|
+
import { cn } from './chunk-SN5YV6FF.js';
|
|
2
4
|
import * as React from 'react';
|
|
3
|
-
import React__default, { createContext, forwardRef, memo, useContext, useState, useRef, useEffect,
|
|
5
|
+
import React__default, { createContext, forwardRef, memo, useContext, useState, useRef, useEffect, useCallback, useId, Fragment as Fragment$1 } from 'react';
|
|
4
6
|
import { createPortal } from 'react-dom';
|
|
5
7
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
6
|
-
import { Circle, Check, X, ChevronDown, ChevronUp, Search, MessageCircleMore, Loader2, Square, Mic, MoreVertical,
|
|
8
|
+
import { Circle, Check, X, ChevronDown, ChevronUp, Search, MessageCircleMore, Loader2, Square, Mic, MoreVertical, MessageSquareLock, Info, FileQuestion, BookOpen, Upload, LogOut, LayoutGrid, Bell, MessageSquare, CircleUserRound, Wrench, CreditCard, ClipboardList, UserPlus, UserStar, Settings2, Users, User, NotebookPen, NotebookText, StickyNote, FolderPlus, Hash, EyeOff, Eye, CaptionsOff, FolderOpen, MessageSquareMore, MessageSquarePlus, MessageSquareText, MessageSquareOff, MessagesSquare, Columns3Cog, SquarePlus, SquareM, ChevronsDown, Bot, Calendar, Folder, List, SquareCheckBig, ChevronsUpDown, Minus, Plus, AlertTriangle, FileX, SkipForward, XCircle, CheckCircle } from 'lucide-react';
|
|
7
9
|
import * as AvatarPrimitive from '@radix-ui/react-avatar';
|
|
8
10
|
import { cva } from 'class-variance-authority';
|
|
9
11
|
import { Slot } from '@radix-ui/react-slot';
|
|
@@ -22,9 +24,6 @@ import * as DialogPrimitive from '@radix-ui/react-dialog';
|
|
|
22
24
|
import * as PopoverPrimitive from '@radix-ui/react-popover';
|
|
23
25
|
import * as SelectPrimitive from '@radix-ui/react-select';
|
|
24
26
|
import { Command as Command$1 } from 'cmdk';
|
|
25
|
-
import Markdown from 'react-markdown';
|
|
26
|
-
import remarkGfm from 'remark-gfm';
|
|
27
|
-
import rehypeRaw from 'rehype-raw';
|
|
28
27
|
|
|
29
28
|
var TooltipContext = React.createContext(null);
|
|
30
29
|
var DEFAULT_DELAY = 300;
|
|
@@ -1749,299 +1748,6 @@ var CommandShortcut = ({ className, ...props }) => {
|
|
|
1749
1748
|
);
|
|
1750
1749
|
};
|
|
1751
1750
|
CommandShortcut.displayName = "CommandShortcut";
|
|
1752
|
-
var markdownBaseComponents = {
|
|
1753
|
-
h1: ({ children, ...props }) => /* @__PURE__ */ jsx("h1", { className: "text-lg font-semibold", "data-testid": "markdown-heading-1", ...props, children }),
|
|
1754
|
-
h2: ({ children, ...props }) => /* @__PURE__ */ jsx("h2", { className: "font-semibold text-base", "data-testid": "markdown-heading-2", ...props, children }),
|
|
1755
|
-
h3: ({ children, ...props }) => /* @__PURE__ */ jsx("h3", { className: "font-semibold text-base", "data-testid": "markdown-heading-3", ...props, children }),
|
|
1756
|
-
h4: ({ children, ...props }) => /* @__PURE__ */ jsx("h4", { className: "font-semibold text-base", ...props, children }),
|
|
1757
|
-
h5: ({ children, ...props }) => /* @__PURE__ */ jsx("h5", { className: "font-medium", ...props, children }),
|
|
1758
|
-
strong: ({ children, ...props }) => /* @__PURE__ */ jsx("strong", { className: "font-semibold", ...props, children }),
|
|
1759
|
-
blockquote: ({ children, ...props }) => /* @__PURE__ */ jsx("blockquote", { className: "border-l-2 border-primary pl-4", ...props, children }),
|
|
1760
|
-
ol: ({ children, ...props }) => /* @__PURE__ */ jsx("ol", { className: "list-decimal space-y-2 pl-6", "data-testid": "markdown-ordered-list", ...props, children }),
|
|
1761
|
-
ul: ({ children, ...props }) => /* @__PURE__ */ jsx("ul", { className: "list-none space-y-2 pl-6", "data-testid": "markdown-unordered-list", ...props, children }),
|
|
1762
|
-
li: ({ children, ...props }) => /* @__PURE__ */ jsx("li", { className: "my-1.5", ...props, children }),
|
|
1763
|
-
table: ({ children, ...props }) => /* @__PURE__ */ jsx("table", { "data-testid": "markdown-table", ...props, children }),
|
|
1764
|
-
th: ({ children, ...props }) => /* @__PURE__ */ jsx("th", { ...props, children }),
|
|
1765
|
-
td: ({ children, ...props }) => /* @__PURE__ */ jsx("td", { ...props, children }),
|
|
1766
|
-
tr: ({ children, ...props }) => /* @__PURE__ */ jsx("tr", { ...props, children }),
|
|
1767
|
-
p: ({ children, ...props }) => /* @__PURE__ */ jsx("p", { className: "whitespace-pre-wrap", ...props, children }),
|
|
1768
|
-
hr: (props) => /* @__PURE__ */ jsx("hr", { className: "border-foreground/20", ...props }),
|
|
1769
|
-
sup: ({ children, ...props }) => /* @__PURE__ */ jsx("sup", { className: "text-xs", ...props, children }),
|
|
1770
|
-
sub: ({ children, ...props }) => /* @__PURE__ */ jsx("sub", { className: "text-xs", ...props, children }),
|
|
1771
|
-
div: ({ children, className, ...props }) => /* @__PURE__ */ jsx("div", { className, ...props, children }),
|
|
1772
|
-
br: (props) => /* @__PURE__ */ jsx("br", { ...props }),
|
|
1773
|
-
kbd: ({ children, ...props }) => /* @__PURE__ */ jsx(
|
|
1774
|
-
"kbd",
|
|
1775
|
-
{
|
|
1776
|
-
className: "px-1.5 py-0.5 text-xs font-mono bg-muted border border-border rounded",
|
|
1777
|
-
...props,
|
|
1778
|
-
children
|
|
1779
|
-
}
|
|
1780
|
-
),
|
|
1781
|
-
abbr: ({ children, title, ...props }) => /* @__PURE__ */ jsx("abbr", { title, className: "underline decoration-dotted cursor-help", ...props, children }),
|
|
1782
|
-
cite: ({ children, ...props }) => /* @__PURE__ */ jsx("cite", { className: "italic", ...props, children })
|
|
1783
|
-
};
|
|
1784
|
-
var MarkdownStreamingContext = createContext(false);
|
|
1785
|
-
|
|
1786
|
-
// src/ai/split-markdown-blocks.ts
|
|
1787
|
-
var LIST_ITEM_RE = /^\s*([-*+]|\d+[.)])\s/;
|
|
1788
|
-
var BLOCKQUOTE_RE = /^\s*>/;
|
|
1789
|
-
function splitMarkdownBlocks(content) {
|
|
1790
|
-
if (!content) return [];
|
|
1791
|
-
const blocks = [];
|
|
1792
|
-
let start = 0;
|
|
1793
|
-
let inFence = false;
|
|
1794
|
-
let i = 0;
|
|
1795
|
-
while (i < content.length) {
|
|
1796
|
-
if (content.startsWith("```", i)) {
|
|
1797
|
-
inFence = !inFence;
|
|
1798
|
-
i += 3;
|
|
1799
|
-
continue;
|
|
1800
|
-
}
|
|
1801
|
-
if (!inFence && content[i] === "\n" && content[i + 1] === "\n") {
|
|
1802
|
-
const before = content.slice(start, i);
|
|
1803
|
-
const lastLine = before.slice(before.lastIndexOf("\n") + 1);
|
|
1804
|
-
const afterStart = i + 2;
|
|
1805
|
-
const nextNewline = content.indexOf("\n", afterStart);
|
|
1806
|
-
const nextLine = content.slice(afterStart, nextNewline === -1 ? void 0 : nextNewline);
|
|
1807
|
-
const bothListItems = LIST_ITEM_RE.test(lastLine) && LIST_ITEM_RE.test(nextLine);
|
|
1808
|
-
const bothBlockquotes = BLOCKQUOTE_RE.test(lastLine) && BLOCKQUOTE_RE.test(nextLine);
|
|
1809
|
-
if (bothListItems || bothBlockquotes) {
|
|
1810
|
-
i += 2;
|
|
1811
|
-
continue;
|
|
1812
|
-
}
|
|
1813
|
-
blocks.push(content.slice(start, afterStart));
|
|
1814
|
-
start = afterStart;
|
|
1815
|
-
i = afterStart;
|
|
1816
|
-
continue;
|
|
1817
|
-
}
|
|
1818
|
-
i++;
|
|
1819
|
-
}
|
|
1820
|
-
if (start < content.length) blocks.push(content.slice(start));
|
|
1821
|
-
return blocks;
|
|
1822
|
-
}
|
|
1823
|
-
|
|
1824
|
-
// src/ai/normalize-citations.ts
|
|
1825
|
-
var CITE_LINK = /\[([^\]\n]+)\]\((#cite-[\w-]+)\)/g;
|
|
1826
|
-
var BLOCK_MARKER = /^(?:[-*+]|\d{1,9}[.)]|#{1,6})[ \t]+/;
|
|
1827
|
-
var LEADING_EMPHASIS = /^(?:\*\*|__|\*|_)+/;
|
|
1828
|
-
var TRAILING_EMPHASIS = /(\*\*|__|\*|_)(:?)$/;
|
|
1829
|
-
function countToken(text, token) {
|
|
1830
|
-
const double = token + token;
|
|
1831
|
-
if (token.length === 2) return text.split(token).length - 1;
|
|
1832
|
-
const withoutDouble = text.split(double).join("");
|
|
1833
|
-
return withoutDouble.split(token).length - 1;
|
|
1834
|
-
}
|
|
1835
|
-
function emphasisTokens(run) {
|
|
1836
|
-
const char = run[0];
|
|
1837
|
-
const tokens = [];
|
|
1838
|
-
let rest = run;
|
|
1839
|
-
while (rest.length > 0) {
|
|
1840
|
-
const size = rest.length >= 2 ? 2 : 1;
|
|
1841
|
-
tokens.push(char.repeat(size));
|
|
1842
|
-
rest = rest.slice(size);
|
|
1843
|
-
}
|
|
1844
|
-
return tokens;
|
|
1845
|
-
}
|
|
1846
|
-
function hoistFromLink(text, before, after) {
|
|
1847
|
-
let body = text;
|
|
1848
|
-
let prefix = "";
|
|
1849
|
-
let suffix = "";
|
|
1850
|
-
if (before.trim() === "") {
|
|
1851
|
-
const marker = BLOCK_MARKER.exec(body);
|
|
1852
|
-
if (marker) {
|
|
1853
|
-
prefix += marker[0];
|
|
1854
|
-
body = body.slice(marker[0].length);
|
|
1855
|
-
}
|
|
1856
|
-
}
|
|
1857
|
-
const leading = LEADING_EMPHASIS.exec(body);
|
|
1858
|
-
if (leading) {
|
|
1859
|
-
let kept = "";
|
|
1860
|
-
let rest = body.slice(leading[0].length);
|
|
1861
|
-
for (const token of emphasisTokens(leading[0]).reverse()) {
|
|
1862
|
-
if (countToken(rest, token) % 2 === 1) {
|
|
1863
|
-
kept = token + kept;
|
|
1864
|
-
continue;
|
|
1865
|
-
}
|
|
1866
|
-
if (countToken(after, token) % 2 === 1) prefix += token;
|
|
1867
|
-
else kept = token + kept;
|
|
1868
|
-
}
|
|
1869
|
-
body = kept + rest;
|
|
1870
|
-
rest = "";
|
|
1871
|
-
}
|
|
1872
|
-
const trailing = TRAILING_EMPHASIS.exec(body);
|
|
1873
|
-
if (trailing) {
|
|
1874
|
-
const token = trailing[1];
|
|
1875
|
-
const inner = body.slice(0, body.length - trailing[0].length);
|
|
1876
|
-
const openedBefore = countToken(before + prefix, token) % 2 === 1;
|
|
1877
|
-
if (countToken(inner, token) % 2 === 0 && openedBefore) {
|
|
1878
|
-
body = inner;
|
|
1879
|
-
suffix = trailing[0];
|
|
1880
|
-
}
|
|
1881
|
-
}
|
|
1882
|
-
return [prefix, body, suffix];
|
|
1883
|
-
}
|
|
1884
|
-
function normalizeLine(line) {
|
|
1885
|
-
if (!line.includes("](#cite-")) return line;
|
|
1886
|
-
return line.replace(CITE_LINK, (match, text, href, offset) => {
|
|
1887
|
-
const before = line.slice(0, offset);
|
|
1888
|
-
const after = line.slice(offset + match.length);
|
|
1889
|
-
const [prefix, body, suffix] = hoistFromLink(text, before, after);
|
|
1890
|
-
if (!prefix && !suffix && body === text) return match;
|
|
1891
|
-
return `${prefix}[${body}](${href})${suffix}`;
|
|
1892
|
-
});
|
|
1893
|
-
}
|
|
1894
|
-
function normalizeCitationMarkup(markdown) {
|
|
1895
|
-
if (!markdown.includes("](#cite-")) return markdown;
|
|
1896
|
-
let inFence = false;
|
|
1897
|
-
return markdown.split("\n").map((line) => {
|
|
1898
|
-
if (/^\s*(```|~~~)/.test(line)) {
|
|
1899
|
-
inFence = !inFence;
|
|
1900
|
-
return line;
|
|
1901
|
-
}
|
|
1902
|
-
return inFence ? line : normalizeLine(line);
|
|
1903
|
-
}).join("\n");
|
|
1904
|
-
}
|
|
1905
|
-
function CodeBlock({ language, code }) {
|
|
1906
|
-
const [copied, setCopied] = useState(false);
|
|
1907
|
-
const handleCopy = async () => {
|
|
1908
|
-
try {
|
|
1909
|
-
await navigator.clipboard.writeText(code);
|
|
1910
|
-
setCopied(true);
|
|
1911
|
-
setTimeout(() => setCopied(false), 2e3);
|
|
1912
|
-
} catch {
|
|
1913
|
-
}
|
|
1914
|
-
};
|
|
1915
|
-
return /* @__PURE__ */ jsxs(
|
|
1916
|
-
"div",
|
|
1917
|
-
{
|
|
1918
|
-
className: "code-block relative my-3 overflow-hidden rounded-md border border-current/20 bg-current/5",
|
|
1919
|
-
"data-testid": "markdown-code-block",
|
|
1920
|
-
children: [
|
|
1921
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between border-b border-current/20 px-3 py-1.5", children: [
|
|
1922
|
-
/* @__PURE__ */ jsx("span", { className: "font-mono text-xs text-muted-foreground", children: language || "code" }),
|
|
1923
|
-
/* @__PURE__ */ jsxs(
|
|
1924
|
-
"button",
|
|
1925
|
-
{
|
|
1926
|
-
type: "button",
|
|
1927
|
-
onClick: handleCopy,
|
|
1928
|
-
className: "flex items-center gap-1 text-xs text-muted-foreground transition-colors hover:text-foreground",
|
|
1929
|
-
title: copied ? "Copied!" : "Copy code",
|
|
1930
|
-
children: [
|
|
1931
|
-
copied ? /* @__PURE__ */ jsx(Check, { size: 12 }) : /* @__PURE__ */ jsx(Copy, { size: 12 }),
|
|
1932
|
-
/* @__PURE__ */ jsx("span", { children: copied ? "Copied" : "Copy" })
|
|
1933
|
-
]
|
|
1934
|
-
}
|
|
1935
|
-
)
|
|
1936
|
-
] }),
|
|
1937
|
-
/* @__PURE__ */ jsx("pre", { className: "overflow-x-auto p-3 text-sm leading-relaxed", children: /* @__PURE__ */ jsx("code", { className: cn("font-mono", language && `language-${language}`), children: code }) })
|
|
1938
|
-
]
|
|
1939
|
-
}
|
|
1940
|
-
);
|
|
1941
|
-
}
|
|
1942
|
-
var defaultComponents = {
|
|
1943
|
-
...markdownBaseComponents,
|
|
1944
|
-
a: ({ href, children, ...props }) => {
|
|
1945
|
-
if (href?.startsWith("#cite-")) {
|
|
1946
|
-
return /* @__PURE__ */ jsx(
|
|
1947
|
-
"span",
|
|
1948
|
-
{
|
|
1949
|
-
className: "cited-text underline decoration-dotted underline-offset-4",
|
|
1950
|
-
"data-cite": href.slice(6),
|
|
1951
|
-
children
|
|
1952
|
-
}
|
|
1953
|
-
);
|
|
1954
|
-
}
|
|
1955
|
-
const isInternal = !href || href.startsWith("#") || href.startsWith("cite:");
|
|
1956
|
-
return /* @__PURE__ */ jsx(
|
|
1957
|
-
"a",
|
|
1958
|
-
{
|
|
1959
|
-
className: "text-primary underline underline-offset-2",
|
|
1960
|
-
href,
|
|
1961
|
-
...isInternal ? {} : { target: "_blank", rel: "noopener noreferrer" },
|
|
1962
|
-
...props,
|
|
1963
|
-
children
|
|
1964
|
-
}
|
|
1965
|
-
);
|
|
1966
|
-
},
|
|
1967
|
-
em: ({ children, ...props }) => /* @__PURE__ */ jsx("em", { className: "italic", ...props, children }),
|
|
1968
|
-
code: function MarkdownCode({
|
|
1969
|
-
className,
|
|
1970
|
-
children,
|
|
1971
|
-
...props
|
|
1972
|
-
}) {
|
|
1973
|
-
const match = /language-(\w+)/.exec(className || "");
|
|
1974
|
-
if (!match) {
|
|
1975
|
-
return /* @__PURE__ */ jsx(
|
|
1976
|
-
"code",
|
|
1977
|
-
{
|
|
1978
|
-
className: "rounded bg-current/10 px-1 py-0.5 font-mono text-[0.9em]",
|
|
1979
|
-
"data-testid": "markdown-inline-code",
|
|
1980
|
-
...props,
|
|
1981
|
-
children
|
|
1982
|
-
}
|
|
1983
|
-
);
|
|
1984
|
-
}
|
|
1985
|
-
return /* @__PURE__ */ jsx(CodeBlock, { language: match[1], code: String(children).replace(/\n$/, "") });
|
|
1986
|
-
},
|
|
1987
|
-
// The CodeBlock renders its own <pre>; unwrap react-markdown's wrapper so we
|
|
1988
|
-
// don't nest <pre><pre>.
|
|
1989
|
-
pre: ({ children }) => /* @__PURE__ */ jsx(Fragment, { children }),
|
|
1990
|
-
blockquote: ({ children, ...props }) => /* @__PURE__ */ jsx("blockquote", { className: "border-l-2 border-border pl-4 italic text-muted-foreground", ...props, children }),
|
|
1991
|
-
table: ({ children, ...props }) => /* @__PURE__ */ jsx("div", { className: "my-3 overflow-x-auto rounded-lg border border-border", children: /* @__PURE__ */ jsx("table", { "data-testid": "markdown-table", className: "w-full border-collapse text-sm", ...props, children }) }),
|
|
1992
|
-
thead: ({ children, ...props }) => /* @__PURE__ */ jsx("thead", { className: "bg-current/10", ...props, children }),
|
|
1993
|
-
th: ({ children, ...props }) => /* @__PURE__ */ jsx("th", { className: "border-b border-border px-3 py-2 text-left font-semibold", ...props, children }),
|
|
1994
|
-
td: ({ children, ...props }) => /* @__PURE__ */ jsx("td", { className: "border-b border-border px-3 py-2 align-top", ...props, children }),
|
|
1995
|
-
// General emphasis marks (GFM `~~strikethrough~~` → <del>, raw <ins>/<mark>).
|
|
1996
|
-
del: ({ children, ...props }) => /* @__PURE__ */ jsx("del", { className: "text-muted-foreground line-through", ...props, children }),
|
|
1997
|
-
ins: ({ children, ...props }) => /* @__PURE__ */ jsx("ins", { className: "underline decoration-primary/60", ...props, children }),
|
|
1998
|
-
mark: ({ children, ...props }) => /* @__PURE__ */ jsx("mark", { className: "rounded bg-primary/15 px-0.5 text-inherit", ...props, children })
|
|
1999
|
-
};
|
|
2000
|
-
var remarkPlugins = [remarkGfm];
|
|
2001
|
-
var rehypePlugins = [rehypeRaw];
|
|
2002
|
-
var MemoizedBlock = React__default.memo(function MarkdownBlock({
|
|
2003
|
-
content,
|
|
2004
|
-
components
|
|
2005
|
-
}) {
|
|
2006
|
-
return /* @__PURE__ */ jsx(Markdown, { remarkPlugins, rehypePlugins, components, children: content });
|
|
2007
|
-
});
|
|
2008
|
-
var MarkdownErrorBoundary = class extends React__default.Component {
|
|
2009
|
-
state = { hasError: false };
|
|
2010
|
-
static getDerivedStateFromError() {
|
|
2011
|
-
return { hasError: true };
|
|
2012
|
-
}
|
|
2013
|
-
render() {
|
|
2014
|
-
return this.state.hasError ? this.props.fallback : this.props.children;
|
|
2015
|
-
}
|
|
2016
|
-
};
|
|
2017
|
-
function MarkdownRendererComponent({
|
|
2018
|
-
children,
|
|
2019
|
-
components: customComponents,
|
|
2020
|
-
isStreaming = false,
|
|
2021
|
-
className,
|
|
2022
|
-
testId = "markdown-renderer"
|
|
2023
|
-
}) {
|
|
2024
|
-
const components = useMemo(
|
|
2025
|
-
() => customComponents ? { ...defaultComponents, ...customComponents } : defaultComponents,
|
|
2026
|
-
[customComponents]
|
|
2027
|
-
);
|
|
2028
|
-
const blocks = useMemo(() => splitMarkdownBlocks(normalizeCitationMarkup(children)), [children]);
|
|
2029
|
-
return /* @__PURE__ */ jsx(
|
|
2030
|
-
MarkdownErrorBoundary,
|
|
2031
|
-
{
|
|
2032
|
-
fallback: /* @__PURE__ */ jsx("div", { className: cn("whitespace-pre-wrap break-words", className), children }),
|
|
2033
|
-
children: /* @__PURE__ */ jsx(MarkdownStreamingContext.Provider, { value: isStreaming, children: /* @__PURE__ */ jsx(
|
|
2034
|
-
"div",
|
|
2035
|
-
{
|
|
2036
|
-
className: cn("markdown-content space-y-3 break-words leading-relaxed", className),
|
|
2037
|
-
"data-testid": testId,
|
|
2038
|
-
children: blocks.map((block, index) => /* @__PURE__ */ jsx(MemoizedBlock, { content: block, components }, index))
|
|
2039
|
-
}
|
|
2040
|
-
) })
|
|
2041
|
-
}
|
|
2042
|
-
);
|
|
2043
|
-
}
|
|
2044
|
-
var MarkdownRenderer = React__default.memo(MarkdownRendererComponent);
|
|
2045
1751
|
var AI_COMPONENTS = {
|
|
2046
1752
|
a: (p) => /* @__PURE__ */ jsx(
|
|
2047
1753
|
"a",
|
|
@@ -3959,6 +3665,6 @@ function DocumentCard({
|
|
|
3959
3665
|
);
|
|
3960
3666
|
}
|
|
3961
3667
|
|
|
3962
|
-
export { AgentBadge, AiMarkdown, ArbiBotHeadIcon, AudIcon, Avatar, AvatarFallback, AvatarImage, BASE_COLORS2 as BASE_COLORS, Badge, Button, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DictateProvider, DocumentCard, DocumentEntity, ENTITY_MAPPINGS, EmlIcon, EntityIcon, EntityPill, FILE_TYPE_COLORS, HoverCard, HoverCardContent, HoverCardTrigger, IconToggle, ImgIcon, InlineMicButton, Input, Label, MarkMenu,
|
|
3963
|
-
//# sourceMappingURL=chunk-
|
|
3964
|
-
//# sourceMappingURL=chunk-
|
|
3668
|
+
export { AgentBadge, AiMarkdown, ArbiBotHeadIcon, AudIcon, Avatar, AvatarFallback, AvatarImage, BASE_COLORS2 as BASE_COLORS, Badge, Button, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DictateProvider, DocumentCard, DocumentEntity, ENTITY_MAPPINGS, EmlIcon, EntityIcon, EntityPill, FILE_TYPE_COLORS, HoverCard, HoverCardContent, HoverCardTrigger, IconToggle, ImgIcon, InlineMicButton, Input, Label, MarkMenu, MicRecordingOverlay, MicWaveformIndicator, NEUTRAL_GRAY2 as NEUTRAL_GRAY, PLACEHOLDER_COLOR, PassageCard, PdfIcon, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, PresenceLabel, Progress, ProjectEntity, RadioGroup, RadioGroupItem, RagDot, RelevanceDot, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Slider, StatusPill, Switch, TAG_TYPE_ICONS, TAG_TYPE_LABELS, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TagEntity, Textarea, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, UserEntity, UserMenu, VISIBILITY_ICONS, VidIcon, VisibilityIcon, badgeVariants, buttonVariants, cardVariants, classifyMediaError, configureEntityRegistry, configureRagLabels, configureStatusRegistry, formatElapsed, getDocIcon, getEntityColor2 as getEntityColor, getEntityColorStyles, getEntityIcon, getEntityLabel, getStatusVariant, getTagTypeIcon, getTagTypeLabel, getWorkspaceColor, toggleVariants, useAudioRecorder };
|
|
3669
|
+
//# sourceMappingURL=chunk-DVRJFLE7.js.map
|
|
3670
|
+
//# sourceMappingURL=chunk-DVRJFLE7.js.map
|