iter(g269): 新增文本差异对比组件

This commit is contained in:
HIsheR
2026-10-26 22:53:49 +08:00
parent dccf79bb01
commit 368d47cbca
12 changed files with 304 additions and 11 deletions
+38 -2
View File
@@ -1,6 +1,6 @@
{
"$schema": "ui-arch-registry-index/0.1",
"generatedAt": "2026-10-26T14:52:17.882Z",
"generatedAt": "2026-10-26T14:53:11.893Z",
"repoRoot": ".",
"packages": [
{
@@ -221,7 +221,8 @@
"highlight(props):关键词高亮,命中片段包 mark(大小写不敏感全部命中),text / keyword 支持信号响应式刷新",
"inputTag(props):标签输入,输入后回车 / 逗号成标签、chip 可单个删除、空框退格删末个,value 信号双向绑定,max 满额自动禁输",
"layout(props, ...children):布局骨架,页头 / 侧栏 / 内容 / 页脚四区一次成型,侧栏可折叠(collapsed 信号双向绑定)",
"jsonViewer(props):JSON 树查看,按层折叠、分支带计数摘要、叶子按类型着色,只读不编辑"
"jsonViewer(props):JSON 树查看,按层折叠、分支带计数摘要、叶子按类型着色,只读不编辑",
"diffView(props):文本差异对比,行级 LCS 对齐 + 增删着色 + 双行号列,顶部带 +N / −N 统计"
],
"keyTypes": [
"ButtonProps",
@@ -4204,6 +4205,41 @@
"数组下标与对象键都走同一套行渲染,收起时右侧显示「3 项 / 2 个键」,先看规模再决定要不要展开",
"要展示编辑结果时不要用它(只读):输入侧请用 textarea,展示侧再交给 jsonViewer"
]
},
{
"id": "diffView",
"title": "文本差异对比 DiffView",
"demo": "sec-diff",
"props": [
{
"n": "before",
"t": "string",
"d": "旧文本(按行比对,CRLF 与 LF 等价)"
},
{
"n": "after",
"t": "string",
"d": "新文本"
},
{
"n": "showStats",
"t": "boolean",
"d": "是否在顶部显示 +N / −N 统计条;缺省 true"
},
{
"n": "ariaLabel",
"t": "string",
"d": "可访问名;缺省自动播报「新增 N 行,删除 M 行」"
}
],
"example": "diffView({ before: oldText, after: newText })",
"steps": [
"把改前 / 改后两份文本整串交给 before 与 after:不用先切行,CRLF 与 LF 视为同一行",
"行级对齐先剪公共前后缀、再对中间段做 LCS:改两行不会把整篇标成差异",
"增删行同时有底色与行首 + / − 符号两条通道,色盲用户也能分辨;行号列不参与复制",
"顶部统计条给 +N / −N,读屏在容器上直接播报同一组数字,不必逐行听",
"超大文本(中间段行数乘积超过 40 万)会退化成「整段替换」——语义仍对,只是不再逐行对齐;要逐行对齐就先分段比对"
]
}
]
},