@neuronection/assistant-ui 0.53.0 → 0.53.1
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/CHANGELOG.md +10 -0
- package/dist/chat-markdown.js +1 -1
- package/dist/chat-message.js +1 -1
- package/dist/chat-transcript.js +1 -1
- package/dist/{chunk-NOAKHVBJ.js → chunk-56QSIK4Y.js} +3 -3
- package/dist/{chunk-NOAKHVBJ.js.map → chunk-56QSIK4Y.js.map} +1 -1
- package/dist/{chunk-HXU6P5FD.js → chunk-E2NNTHFB.js} +4 -4
- package/dist/{chunk-HXU6P5FD.js.map → chunk-E2NNTHFB.js.map} +1 -1
- package/dist/{chunk-KQLKITZL.js → chunk-KLCULTOQ.js} +3 -3
- package/dist/chunk-KLCULTOQ.js.map +1 -0
- package/dist/{chunk-I4R5BRC7.js → chunk-TLFEVL42.js} +3 -3
- package/dist/{chunk-I4R5BRC7.js.map → chunk-TLFEVL42.js.map} +1 -1
- package/dist/index.js +4 -4
- package/dist/markdown-diff-view.js +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
- package/dist/chunk-KQLKITZL.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/markdown-diff-view/blockSplit.ts","../src/components/markdown-diff-view/MarkdownDiffView.tsx"],"names":["MarkdownDiffView","useRef"],"mappings":"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","file":"chunk-I4R5BRC7.js","sourcesContent":["function fenceMarkerOf(\n trimmed: string,\n): { char: string; bare: boolean } | null {\n const bare = /^(`{3,}|~{3,})$/.exec(trimmed)\n const marker = bare?.[1] ?? /^(`{3,}|~{3,})/.exec(trimmed)?.[1]\n if (marker === undefined || marker.length === 0) {\n return null\n }\n return { char: marker.charAt(0), bare: bare !== null }\n}\n\nexport function splitMarkdownBlocks(markdown: string): string[] {\n const lines = markdown.replace(/\\r\\n?/g, '\\n').split('\\n')\n const blocks: string[] = []\n let current: string[] = []\n let fenceChar: string | null = null\n let inMath = false\n\n const flush = () => {\n if (current.some((line) => line.trim() !== '')) {\n blocks.push(current.join('\\n').trim())\n }\n current = []\n }\n\n for (const line of lines) {\n const trimmed = line.trim()\n const marker = fenceMarkerOf(trimmed)\n if (fenceChar !== null) {\n current.push(line)\n if (marker !== null && marker.bare && marker.char === fenceChar) {\n fenceChar = null\n }\n continue\n }\n if (marker !== null) {\n flush()\n fenceChar = marker.char\n current.push(line)\n continue\n }\n if (inMath) {\n current.push(line)\n if (trimmed.endsWith('$$')) {\n inMath = false\n }\n continue\n }\n if (trimmed === '$$') {\n flush()\n inMath = true\n current.push(line)\n continue\n }\n if (trimmed.startsWith('$$')) {\n flush()\n current.push(line)\n if (!trimmed.endsWith('$$') || trimmed.length <= 4) {\n inMath = true\n }\n continue\n }\n if (trimmed === '') {\n flush()\n continue\n }\n current.push(line)\n }\n flush()\n return blocks\n}\n","import * as React from 'react'\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport {\n ChevronDown,\n ChevronRight,\n ChevronUp,\n Minus,\n Plus,\n} from 'lucide-react'\n\nimport { cn } from '../../lib/utils'\nimport { MarkdownSurface } from '../chat-markdown'\nimport { computeUnitDiff, type DiffRow } from '../text-diff-view/lineDiff'\n\nimport { splitMarkdownBlocks } from './blockSplit'\n\nexport interface MarkdownDiffViewLabels {\n original?: string\n suggested?: string\n /** Fold summary for a run of hidden unchanged blocks. */\n unchangedBlocks?: (count: number) => string\n showLess?: string\n prevChange?: string\n nextChange?: string\n changePosition?: (index: number, total: number) => string\n noChanges?: string\n}\n\nconst DEFAULT_LABELS: Required<MarkdownDiffViewLabels> = {\n original: 'Original',\n suggested: 'Suggested',\n unchangedBlocks: (count) =>\n count === 1 ? '1 unchanged block' : `${count} unchanged blocks`,\n showLess: 'Show less',\n prevChange: 'Previous change',\n nextChange: 'Next change',\n changePosition: (index, total) => `${index}/${total}`,\n noChanges: 'No changes',\n}\n\nexport interface MarkdownDiffViewProps {\n original: string\n suggested: string\n /** Unchanged blocks kept visible around each change; the rest fold. Default 1. */\n contextBlocks?: number\n showHeader?: boolean\n showNav?: boolean\n labels?: Partial<MarkdownDiffViewLabels>\n /** Applied to the outer box. */\n className?: string\n /** Applied to the scrolling body — size the view here (e.g. `max-h-80`). */\n bodyClassName?: string\n}\n\nfunction isChangedRow(row: DiffRow): boolean {\n return (\n row.kind === 'pair' &&\n (row.left?.kind === 'del' || row.right?.kind === 'add')\n )\n}\n\ninterface FlatRow {\n key: string\n row: DiffRow\n foldOf?: number\n collapseOf?: number\n}\n\nfunction BlockSurface({ value }: { value: string }) {\n return <MarkdownSurface value={value} className=\"min-w-0 [&>*:first-child]:mt-0 [&>*:last-child]:mb-0\" />\n}\n\nexport const MarkdownDiffView = React.forwardRef<\n HTMLDivElement,\n MarkdownDiffViewProps\n>(function MarkdownDiffView(\n {\n original,\n suggested,\n contextBlocks = 1,\n showHeader = true,\n showNav = true,\n labels,\n className,\n bodyClassName,\n },\n ref,\n) {\n const mergedLabels = { ...DEFAULT_LABELS, ...labels }\n const [expanded, setExpanded] = useState<Set<number>>(new Set())\n const [activeGroup, setActiveGroup] = useState(0)\n const scrollRef = React.useRef<HTMLDivElement | null>(null)\n const rowRefs = useRef(new Map<number, HTMLDivElement>())\n\n const diff = useMemo(\n () =>\n computeUnitDiff(splitMarkdownBlocks(original), splitMarkdownBlocks(suggested), {\n contextUnits: contextBlocks,\n }),\n [original, suggested, contextBlocks],\n )\n\n const flatRows = useMemo<FlatRow[]>(() => {\n const out: FlatRow[] = []\n diff.rows.forEach((row, index) => {\n if (row.kind === 'fold' && expanded.has(index)) {\n row.hidden.forEach((hiddenRow, hiddenIndex) => {\n out.push({ key: `${index}.${hiddenIndex}`, row: hiddenRow })\n })\n out.push({ key: `${index}.collapse`, row, collapseOf: index })\n } else {\n out.push({\n key: String(index),\n row,\n foldOf: row.kind === 'fold' ? index : undefined,\n })\n }\n })\n return out\n }, [diff.rows, expanded])\n\n const changeGroups = useMemo<number[]>(() => {\n const groups: number[] = []\n let inGroup = false\n flatRows.forEach((entry, index) => {\n const changed = isChangedRow(entry.row)\n if (changed && !inGroup) {\n groups.push(index)\n }\n inGroup = changed\n })\n return groups\n }, [flatRows])\n\n useEffect(() => {\n setExpanded(new Set())\n setActiveGroup(0)\n }, [original, suggested])\n\n useEffect(() => {\n if (activeGroup >= changeGroups.length) {\n setActiveGroup(0)\n }\n }, [activeGroup, changeGroups.length])\n\n useEffect(() => {\n const target = changeGroups[activeGroup]\n if (target === undefined) {\n return\n }\n const element = rowRefs.current.get(target)\n if (element && typeof element.scrollIntoView === 'function') {\n element.scrollIntoView({ block: 'center' })\n }\n }, [activeGroup, changeGroups])\n\n if (diff.added === 0 && diff.removed === 0) {\n return (\n <div\n ref={ref}\n data-as=\"markdown-diff-view\"\n className={cn(\n 'text-[var(--as-muted-fg)] border-[var(--as-border)] bg-[var(--as-subtle)] rounded-md border p-3 text-xs',\n className,\n )}\n >\n {mergedLabels.noChanges}\n </div>\n )\n }\n\n const activeGroupStart = changeGroups[activeGroup]\n const activeGroupEnd =\n activeGroupStart === undefined\n ? undefined\n : (() => {\n for (\n let index = activeGroupStart + 1;\n index < flatRows.length;\n index += 1\n ) {\n const entry = flatRows[index]\n if (entry !== undefined && isChangedRow(entry.row)) {\n return index\n }\n }\n return flatRows.length\n })()\n\n const renderRow = (entry: FlatRow, index: number) => {\n const row = entry.row\n if (row.kind === 'fold') {\n if (entry.collapseOf !== undefined) {\n const collapseOf = entry.collapseOf\n return (\n <button\n key={entry.key}\n type=\"button\"\n onClick={() =>\n setExpanded((current) => {\n const next = new Set(current)\n next.delete(collapseOf)\n return next\n })\n }\n className=\"text-[var(--as-muted-fg)] hover:bg-[var(--as-subtle)] hover:text-[var(--as-fg)] flex w-full items-center gap-1 px-3 py-0.5 text-left text-[11px]\"\n >\n <ChevronDown className=\"size-3\" aria-hidden />\n {mergedLabels.showLess}\n </button>\n )\n }\n const foldOf = entry.foldOf\n return (\n <button\n key={entry.key}\n type=\"button\"\n onClick={() => {\n if (foldOf !== undefined) {\n setExpanded((current) => {\n const next = new Set(current)\n next.add(foldOf)\n return next\n })\n }\n }}\n className=\"text-[var(--as-muted-fg)] hover:bg-[var(--as-subtle)] hover:text-[var(--as-fg)] flex w-full items-center gap-1 px-3 py-0.5 text-left text-[11px]\"\n >\n <ChevronRight className=\"size-3\" aria-hidden />\n {mergedLabels.unchangedBlocks(row.count)}\n </button>\n )\n }\n const changed = isChangedRow(row)\n const active =\n activeGroupStart !== undefined &&\n activeGroupEnd !== undefined &&\n index >= activeGroupStart &&\n index < activeGroupEnd\n if (!changed) {\n const text = row.left?.text ?? row.right?.text ?? ''\n return (\n <div\n key={entry.key}\n ref={(node) => {\n if (node) {\n rowRefs.current.set(index, node)\n } else {\n rowRefs.current.delete(index)\n }\n }}\n data-context=\"\"\n className={cn('border-[var(--as-border)] px-3 py-1.5', active && 'bg-[var(--as-primary)]/5')}\n >\n <BlockSurface value={text} />\n </div>\n )\n }\n return (\n <div\n key={entry.key}\n ref={(node) => {\n if (node) {\n rowRefs.current.set(index, node)\n } else {\n rowRefs.current.delete(index)\n }\n }}\n className={cn('grid grid-cols-2', active && 'bg-[var(--as-primary)]/5')}\n data-changed={changed || undefined}\n data-active={active || undefined}\n >\n {(['left', 'right'] as const).map((side) => {\n const cell = row[side]\n const isAdd = cell?.kind === 'add'\n const isDel = cell?.kind === 'del'\n return (\n <div\n key={side}\n data-kind={isAdd ? 'add' : isDel ? 'del' : undefined}\n className={cn(\n 'min-w-0 px-3 py-1.5',\n isAdd && 'bg-[var(--as-success)]/10',\n isDel && 'bg-[var(--as-danger)]/10',\n cell === null && 'bg-[var(--as-subtle)]/50',\n )}\n >\n {cell === null ? null : <BlockSurface value={cell.text} />}\n </div>\n )\n })}\n </div>\n )\n }\n\n return (\n <div\n ref={ref}\n data-as=\"markdown-diff-view\"\n className={cn(\n 'bg-[var(--as-surface)] border-[var(--as-border)] flex flex-col overflow-hidden rounded-md border text-sm leading-relaxed',\n className,\n )}\n >\n {showHeader ? (\n <div className=\"border-[var(--as-border)] text-[var(--as-muted-fg)] grid grid-cols-[1fr_auto_1fr] items-center gap-2 border-b px-3 py-1.5 text-[11px] font-medium tracking-wide uppercase\">\n <span className=\"flex items-center gap-1\">\n <Minus className=\"size-3 text-[var(--as-danger)]\" aria-hidden />\n {mergedLabels.original}\n </span>\n <span className=\"flex items-center gap-2\">\n <span>\n <span className=\"text-[var(--as-success)]\">+{diff.added}</span>{' '}\n <span className=\"text-[var(--as-danger)]\">−{diff.removed}</span>\n </span>\n {showNav && changeGroups.length > 0 ? (\n <span className=\"flex items-center gap-0.5\">\n <button\n type=\"button\"\n aria-label={mergedLabels.prevChange}\n title={mergedLabels.prevChange}\n disabled={activeGroup === 0}\n onClick={() => setActiveGroup((value) => Math.max(0, value - 1))}\n className=\"hover:bg-[var(--as-border)] hover:text-[var(--as-fg)] rounded p-0.5 disabled:opacity-40\"\n >\n <ChevronUp className=\"size-3.5\" aria-hidden />\n </button>\n <span className=\"tabular-nums\">\n {mergedLabels.changePosition(activeGroup + 1, changeGroups.length)}\n </span>\n <button\n type=\"button\"\n aria-label={mergedLabels.nextChange}\n title={mergedLabels.nextChange}\n disabled={activeGroup >= changeGroups.length - 1}\n onClick={() =>\n setActiveGroup((value) => Math.min(changeGroups.length - 1, value + 1))\n }\n className=\"hover:bg-[var(--as-border)] hover:text-[var(--as-fg)] rounded p-0.5 disabled:opacity-40\"\n >\n <ChevronDown className=\"size-3.5\" aria-hidden />\n </button>\n </span>\n ) : null}\n </span>\n <span className=\"flex items-center justify-end gap-1\">\n {mergedLabels.suggested}\n <Plus className=\"size-3 text-[var(--as-success)]\" aria-hidden />\n </span>\n </div>\n ) : null}\n <div ref={scrollRef} className={cn('min-h-0 flex-1 overflow-y-auto', bodyClassName)}>\n {flatRows.map((entry, index) => renderRow(entry, index))}\n </div>\n </div>\n )\n})\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/markdown-diff-view/blockSplit.ts","../src/components/markdown-diff-view/MarkdownDiffView.tsx"],"names":["MarkdownDiffView","useRef"],"mappings":"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","file":"chunk-TLFEVL42.js","sourcesContent":["function fenceMarkerOf(\n trimmed: string,\n): { char: string; bare: boolean } | null {\n const bare = /^(`{3,}|~{3,})$/.exec(trimmed)\n const marker = bare?.[1] ?? /^(`{3,}|~{3,})/.exec(trimmed)?.[1]\n if (marker === undefined || marker.length === 0) {\n return null\n }\n return { char: marker.charAt(0), bare: bare !== null }\n}\n\nexport function splitMarkdownBlocks(markdown: string): string[] {\n const lines = markdown.replace(/\\r\\n?/g, '\\n').split('\\n')\n const blocks: string[] = []\n let current: string[] = []\n let fenceChar: string | null = null\n let inMath = false\n\n const flush = () => {\n if (current.some((line) => line.trim() !== '')) {\n blocks.push(current.join('\\n').trim())\n }\n current = []\n }\n\n for (const line of lines) {\n const trimmed = line.trim()\n const marker = fenceMarkerOf(trimmed)\n if (fenceChar !== null) {\n current.push(line)\n if (marker !== null && marker.bare && marker.char === fenceChar) {\n fenceChar = null\n }\n continue\n }\n if (marker !== null) {\n flush()\n fenceChar = marker.char\n current.push(line)\n continue\n }\n if (inMath) {\n current.push(line)\n if (trimmed.endsWith('$$')) {\n inMath = false\n }\n continue\n }\n if (trimmed === '$$') {\n flush()\n inMath = true\n current.push(line)\n continue\n }\n if (trimmed.startsWith('$$')) {\n flush()\n current.push(line)\n if (!trimmed.endsWith('$$') || trimmed.length <= 4) {\n inMath = true\n }\n continue\n }\n if (trimmed === '') {\n flush()\n continue\n }\n current.push(line)\n }\n flush()\n return blocks\n}\n","import * as React from 'react'\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport {\n ChevronDown,\n ChevronRight,\n ChevronUp,\n Minus,\n Plus,\n} from 'lucide-react'\n\nimport { cn } from '../../lib/utils'\nimport { MarkdownSurface } from '../chat-markdown'\nimport { computeUnitDiff, type DiffRow } from '../text-diff-view/lineDiff'\n\nimport { splitMarkdownBlocks } from './blockSplit'\n\nexport interface MarkdownDiffViewLabels {\n original?: string\n suggested?: string\n /** Fold summary for a run of hidden unchanged blocks. */\n unchangedBlocks?: (count: number) => string\n showLess?: string\n prevChange?: string\n nextChange?: string\n changePosition?: (index: number, total: number) => string\n noChanges?: string\n}\n\nconst DEFAULT_LABELS: Required<MarkdownDiffViewLabels> = {\n original: 'Original',\n suggested: 'Suggested',\n unchangedBlocks: (count) =>\n count === 1 ? '1 unchanged block' : `${count} unchanged blocks`,\n showLess: 'Show less',\n prevChange: 'Previous change',\n nextChange: 'Next change',\n changePosition: (index, total) => `${index}/${total}`,\n noChanges: 'No changes',\n}\n\nexport interface MarkdownDiffViewProps {\n original: string\n suggested: string\n /** Unchanged blocks kept visible around each change; the rest fold. Default 1. */\n contextBlocks?: number\n showHeader?: boolean\n showNav?: boolean\n labels?: Partial<MarkdownDiffViewLabels>\n /** Applied to the outer box. */\n className?: string\n /** Applied to the scrolling body — size the view here (e.g. `max-h-80`). */\n bodyClassName?: string\n}\n\nfunction isChangedRow(row: DiffRow): boolean {\n return (\n row.kind === 'pair' &&\n (row.left?.kind === 'del' || row.right?.kind === 'add')\n )\n}\n\ninterface FlatRow {\n key: string\n row: DiffRow\n foldOf?: number\n collapseOf?: number\n}\n\nfunction BlockSurface({ value }: { value: string }) {\n return <MarkdownSurface value={value} className=\"min-w-0 [&>*:first-child]:mt-0 [&>*:last-child]:mb-0\" />\n}\n\nexport const MarkdownDiffView = React.forwardRef<\n HTMLDivElement,\n MarkdownDiffViewProps\n>(function MarkdownDiffView(\n {\n original,\n suggested,\n contextBlocks = 1,\n showHeader = true,\n showNav = true,\n labels,\n className,\n bodyClassName,\n },\n ref,\n) {\n const mergedLabels = { ...DEFAULT_LABELS, ...labels }\n const [expanded, setExpanded] = useState<Set<number>>(new Set())\n const [activeGroup, setActiveGroup] = useState(0)\n const scrollRef = React.useRef<HTMLDivElement | null>(null)\n const rowRefs = useRef(new Map<number, HTMLDivElement>())\n\n const diff = useMemo(\n () =>\n computeUnitDiff(splitMarkdownBlocks(original), splitMarkdownBlocks(suggested), {\n contextUnits: contextBlocks,\n }),\n [original, suggested, contextBlocks],\n )\n\n const flatRows = useMemo<FlatRow[]>(() => {\n const out: FlatRow[] = []\n diff.rows.forEach((row, index) => {\n if (row.kind === 'fold' && expanded.has(index)) {\n row.hidden.forEach((hiddenRow, hiddenIndex) => {\n out.push({ key: `${index}.${hiddenIndex}`, row: hiddenRow })\n })\n out.push({ key: `${index}.collapse`, row, collapseOf: index })\n } else {\n out.push({\n key: String(index),\n row,\n foldOf: row.kind === 'fold' ? index : undefined,\n })\n }\n })\n return out\n }, [diff.rows, expanded])\n\n const changeGroups = useMemo<number[]>(() => {\n const groups: number[] = []\n let inGroup = false\n flatRows.forEach((entry, index) => {\n const changed = isChangedRow(entry.row)\n if (changed && !inGroup) {\n groups.push(index)\n }\n inGroup = changed\n })\n return groups\n }, [flatRows])\n\n useEffect(() => {\n setExpanded(new Set())\n setActiveGroup(0)\n }, [original, suggested])\n\n useEffect(() => {\n if (activeGroup >= changeGroups.length) {\n setActiveGroup(0)\n }\n }, [activeGroup, changeGroups.length])\n\n useEffect(() => {\n const target = changeGroups[activeGroup]\n if (target === undefined) {\n return\n }\n const element = rowRefs.current.get(target)\n if (element && typeof element.scrollIntoView === 'function') {\n element.scrollIntoView({ block: 'center' })\n }\n }, [activeGroup, changeGroups])\n\n if (diff.added === 0 && diff.removed === 0) {\n return (\n <div\n ref={ref}\n data-as=\"markdown-diff-view\"\n className={cn(\n 'text-[var(--as-muted-fg)] border-[var(--as-border)] bg-[var(--as-subtle)] rounded-md border p-3 text-xs',\n className,\n )}\n >\n {mergedLabels.noChanges}\n </div>\n )\n }\n\n const activeGroupStart = changeGroups[activeGroup]\n const activeGroupEnd =\n activeGroupStart === undefined\n ? undefined\n : (() => {\n for (\n let index = activeGroupStart + 1;\n index < flatRows.length;\n index += 1\n ) {\n const entry = flatRows[index]\n if (entry !== undefined && isChangedRow(entry.row)) {\n return index\n }\n }\n return flatRows.length\n })()\n\n const renderRow = (entry: FlatRow, index: number) => {\n const row = entry.row\n if (row.kind === 'fold') {\n if (entry.collapseOf !== undefined) {\n const collapseOf = entry.collapseOf\n return (\n <button\n key={entry.key}\n type=\"button\"\n onClick={() =>\n setExpanded((current) => {\n const next = new Set(current)\n next.delete(collapseOf)\n return next\n })\n }\n className=\"text-[var(--as-muted-fg)] hover:bg-[var(--as-subtle)] hover:text-[var(--as-fg)] flex w-full items-center gap-1 px-3 py-0.5 text-left text-[11px]\"\n >\n <ChevronDown className=\"size-3\" aria-hidden />\n {mergedLabels.showLess}\n </button>\n )\n }\n const foldOf = entry.foldOf\n return (\n <button\n key={entry.key}\n type=\"button\"\n onClick={() => {\n if (foldOf !== undefined) {\n setExpanded((current) => {\n const next = new Set(current)\n next.add(foldOf)\n return next\n })\n }\n }}\n className=\"text-[var(--as-muted-fg)] hover:bg-[var(--as-subtle)] hover:text-[var(--as-fg)] flex w-full items-center gap-1 px-3 py-0.5 text-left text-[11px]\"\n >\n <ChevronRight className=\"size-3\" aria-hidden />\n {mergedLabels.unchangedBlocks(row.count)}\n </button>\n )\n }\n const changed = isChangedRow(row)\n const active =\n activeGroupStart !== undefined &&\n activeGroupEnd !== undefined &&\n index >= activeGroupStart &&\n index < activeGroupEnd\n if (!changed) {\n const text = row.left?.text ?? row.right?.text ?? ''\n return (\n <div\n key={entry.key}\n ref={(node) => {\n if (node) {\n rowRefs.current.set(index, node)\n } else {\n rowRefs.current.delete(index)\n }\n }}\n data-context=\"\"\n className={cn('border-[var(--as-border)] px-3 py-1.5', active && 'bg-[var(--as-primary)]/5')}\n >\n <BlockSurface value={text} />\n </div>\n )\n }\n return (\n <div\n key={entry.key}\n ref={(node) => {\n if (node) {\n rowRefs.current.set(index, node)\n } else {\n rowRefs.current.delete(index)\n }\n }}\n className={cn('grid grid-cols-2', active && 'bg-[var(--as-primary)]/5')}\n data-changed={changed || undefined}\n data-active={active || undefined}\n >\n {(['left', 'right'] as const).map((side) => {\n const cell = row[side]\n const isAdd = cell?.kind === 'add'\n const isDel = cell?.kind === 'del'\n return (\n <div\n key={side}\n data-kind={isAdd ? 'add' : isDel ? 'del' : undefined}\n className={cn(\n 'min-w-0 px-3 py-1.5',\n isAdd && 'bg-[var(--as-success)]/10',\n isDel && 'bg-[var(--as-danger)]/10',\n cell === null && 'bg-[var(--as-subtle)]/50',\n )}\n >\n {cell === null ? null : <BlockSurface value={cell.text} />}\n </div>\n )\n })}\n </div>\n )\n }\n\n return (\n <div\n ref={ref}\n data-as=\"markdown-diff-view\"\n className={cn(\n 'bg-[var(--as-surface)] border-[var(--as-border)] flex flex-col overflow-hidden rounded-md border text-sm leading-relaxed',\n className,\n )}\n >\n {showHeader ? (\n <div className=\"border-[var(--as-border)] text-[var(--as-muted-fg)] grid grid-cols-[1fr_auto_1fr] items-center gap-2 border-b px-3 py-1.5 text-[11px] font-medium tracking-wide uppercase\">\n <span className=\"flex items-center gap-1\">\n <Minus className=\"size-3 text-[var(--as-danger)]\" aria-hidden />\n {mergedLabels.original}\n </span>\n <span className=\"flex items-center gap-2\">\n <span>\n <span className=\"text-[var(--as-success)]\">+{diff.added}</span>{' '}\n <span className=\"text-[var(--as-danger)]\">−{diff.removed}</span>\n </span>\n {showNav && changeGroups.length > 0 ? (\n <span className=\"flex items-center gap-0.5\">\n <button\n type=\"button\"\n aria-label={mergedLabels.prevChange}\n title={mergedLabels.prevChange}\n disabled={activeGroup === 0}\n onClick={() => setActiveGroup((value) => Math.max(0, value - 1))}\n className=\"hover:bg-[var(--as-border)] hover:text-[var(--as-fg)] rounded p-0.5 disabled:opacity-40\"\n >\n <ChevronUp className=\"size-3.5\" aria-hidden />\n </button>\n <span className=\"tabular-nums\">\n {mergedLabels.changePosition(activeGroup + 1, changeGroups.length)}\n </span>\n <button\n type=\"button\"\n aria-label={mergedLabels.nextChange}\n title={mergedLabels.nextChange}\n disabled={activeGroup >= changeGroups.length - 1}\n onClick={() =>\n setActiveGroup((value) => Math.min(changeGroups.length - 1, value + 1))\n }\n className=\"hover:bg-[var(--as-border)] hover:text-[var(--as-fg)] rounded p-0.5 disabled:opacity-40\"\n >\n <ChevronDown className=\"size-3.5\" aria-hidden />\n </button>\n </span>\n ) : null}\n </span>\n <span className=\"flex items-center justify-end gap-1\">\n {mergedLabels.suggested}\n <Plus className=\"size-3 text-[var(--as-success)]\" aria-hidden />\n </span>\n </div>\n ) : null}\n <div ref={scrollRef} className={cn('min-h-0 flex-1 overflow-y-auto', bodyClassName)}>\n {flatRows.map((entry, index) => renderRow(entry, index))}\n </div>\n </div>\n )\n})\n"]}
|
package/dist/index.js
CHANGED
|
@@ -22,7 +22,7 @@ export { RangeBar } from './chunk-3UDWLHLD.js';
|
|
|
22
22
|
export { ScaleSlider, scaleColorForValue } from './chunk-NLHODVBI.js';
|
|
23
23
|
export { SearchInput } from './chunk-UUIMMMSJ.js';
|
|
24
24
|
export { MarqueeBand, MarqueeSurface, hitTestIds, marqueeRect, rectsIntersect, useMarquee } from './chunk-RU3DEF2O.js';
|
|
25
|
-
export { MarkdownDiffView, splitMarkdownBlocks } from './chunk-
|
|
25
|
+
export { MarkdownDiffView, splitMarkdownBlocks } from './chunk-TLFEVL42.js';
|
|
26
26
|
export { ModelPicker } from './chunk-CCFVDJHU.js';
|
|
27
27
|
export { PanelModal } from './chunk-6O4LOWZG.js';
|
|
28
28
|
export { LoginForm } from './chunk-3V5EBB4N.js';
|
|
@@ -64,10 +64,10 @@ export { ChatPending } from './chunk-F4BTJQLK.js';
|
|
|
64
64
|
export { ChatTurnStatus } from './chunk-GIQZNEG5.js';
|
|
65
65
|
export { ChatWelcome } from './chunk-OOQO6VGO.js';
|
|
66
66
|
export { ChatSuggestionCard } from './chunk-PABMR4RA.js';
|
|
67
|
-
export { ChatSearchField, ChatTranscript } from './chunk-
|
|
68
|
-
export { MarkdownCodeBlock, MarkdownSurface, MermaidDiagram } from './chunk-
|
|
67
|
+
export { ChatSearchField, ChatTranscript } from './chunk-E2NNTHFB.js';
|
|
68
|
+
export { MarkdownCodeBlock, MarkdownSurface, MermaidDiagram } from './chunk-KLCULTOQ.js';
|
|
69
69
|
export { CopyButton } from './chunk-XFYCNCPS.js';
|
|
70
|
-
export { ChatMessage, ChatMessageEditor, MessageVariantSwitcher } from './chunk-
|
|
70
|
+
export { ChatMessage, ChatMessageEditor, MessageVariantSwitcher } from './chunk-56QSIK4Y.js';
|
|
71
71
|
export { ChatBranchTree } from './chunk-BG44GKXQ.js';
|
|
72
72
|
export { AiMagicFill } from './chunk-X6L5Z5LV.js';
|
|
73
73
|
export { FormModal } from './chunk-QPY2Y532.js';
|