@pstdio/ui 0.15.0 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{MermaidComponent-DBJsTOmj.js → MermaidComponent-BCMQqPqu.js} +11 -11
- package/dist/{MermaidComponent-DBJsTOmj.js.map → MermaidComponent-BCMQqPqu.js.map} +1 -1
- package/dist/browser-storage-BinyFNJX.js +40 -0
- package/dist/browser-storage-BinyFNJX.js.map +1 -0
- package/dist/chat-ui.js +1188 -1147
- package/dist/chat-ui.js.map +1 -1
- package/dist/checkbox-D5AzFRlb.js +70 -0
- package/dist/checkbox-D5AzFRlb.js.map +1 -0
- package/dist/components/chat-ui/components/ai-conversation.d.ts +1 -1
- package/dist/components/chat-ui/components/ai-message.d.ts +1 -1
- package/dist/components/chat-ui/components/ai-response.d.ts +0 -1
- package/dist/components/chat-ui/components/attachment-list.d.ts +1 -1
- package/dist/components/chat-ui/components/auto-scroll.d.ts +27 -0
- package/dist/components/chat-ui/components/chat-message-animation.d.ts +22 -0
- package/dist/components/chat-ui/components/timeline.d.ts +0 -2
- package/dist/components/chat-ui/performance/chat-performance-fixtures.d.ts +0 -1
- package/dist/components/chat-ui/tool-rendering/build-timeline.d.ts +2 -12
- package/dist/components/chat-ui/tool-rendering/shared.d.ts +1 -1
- package/dist/components/chat-ui/tool-rendering/types.d.ts +1 -2
- package/dist/components/command-palette/index.d.ts +4 -0
- package/dist/components/data-renderer/data-renderer-board.d.ts +1 -1
- package/dist/components/data-renderer/data-renderer-card.d.ts +1 -1
- package/dist/components/data-renderer/data-renderer-list.d.ts +1 -1
- package/dist/components/data-renderer/data-renderer.d.ts +1 -1
- package/dist/components/data-renderer/index.d.ts +18 -0
- package/dist/components/data-renderer/types.d.ts +0 -6
- package/dist/components/diff-viewer/diff-card.d.ts +1 -0
- package/dist/components/diff-viewer/diff-drawer-scroll.d.ts +0 -19
- package/dist/components/diff-viewer/diff-drawer.d.ts +1 -0
- package/dist/components/diff-viewer/index.d.ts +2 -0
- package/dist/components/diff-viewer/use-selected-diff-scroll.d.ts +7 -3
- package/dist/components/internal/style-guide.d.ts +14 -0
- package/dist/components/internal/token-editor-controls.d.ts +8 -0
- package/dist/components/internal/token-editor-data.d.ts +40 -0
- package/dist/components/internal/token-editor-state.d.ts +22 -0
- package/dist/components/layout/index.d.ts +6 -0
- package/dist/components/list-row/list-row.types.d.ts +1 -1
- package/dist/components/overlays/index.d.ts +12 -0
- package/dist/components/{search-modal-content.d.ts → overlays/search-modal-content.d.ts} +1 -1
- package/dist/components/{searchable-menu.d.ts → overlays/searchable-menu.d.ts} +1 -1
- package/dist/components/param-editor/index.d.ts +23 -0
- package/dist/components/param-editor/inputs/action-input.d.ts +13 -0
- package/dist/components/param-editor/inputs/anchor-grid-input.d.ts +12 -0
- package/dist/components/param-editor/inputs/anchor-grid.d.ts +4 -0
- package/dist/components/param-editor/inputs/file-accept.d.ts +22 -0
- package/dist/components/param-editor/inputs/file-drop-input.d.ts +14 -0
- package/dist/components/param-editor/inputs/numeric-value.d.ts +6 -0
- package/dist/components/param-editor/inputs/range-input.d.ts +17 -0
- package/dist/components/param-editor/inputs/range-value.d.ts +5 -0
- package/dist/components/param-editor/inputs/resource-input-chips.d.ts +15 -0
- package/dist/components/param-editor/inputs/resource-input.d.ts +18 -0
- package/dist/components/param-editor/inputs/segmented-input.d.ts +14 -0
- package/dist/components/param-editor/inputs/slider-marks.d.ts +5 -0
- package/dist/components/param-editor/inputs/vector-input.d.ts +17 -0
- package/dist/components/param-editor/inputs/vector-value.d.ts +7 -0
- package/dist/components/param-editor/param-editor-control-item.d.ts +15 -0
- package/dist/components/param-editor/param-editor-control-list.d.ts +5 -0
- package/dist/components/param-editor/param-editor-field-label.d.ts +1 -0
- package/dist/components/param-editor/param-editor-field.d.ts +11 -0
- package/dist/components/param-editor/param-editor-inline-group.d.ts +5 -0
- package/dist/components/param-editor/param-editor-section.d.ts +16 -0
- package/dist/components/param-editor/param-editor.d.ts +2 -1
- package/dist/components/param-editor/param-editor.types.d.ts +101 -19
- package/dist/components/{breadcrumb.d.ts → primitives/breadcrumb.d.ts} +1 -1
- package/dist/components/primitives/index.d.ts +28 -0
- package/dist/components/{number-input.d.ts → primitives/number-input.d.ts} +0 -2
- package/dist/components/{session-indicator.d.ts → primitives/session-indicator.d.ts} +2 -1
- package/dist/components/{tooltip.d.ts → primitives/tooltip.d.ts} +0 -1
- package/dist/components/rich-text/prompt-input/commands.d.ts +0 -17
- package/dist/components/rich-text/prompt-input/events.d.ts +0 -13
- package/dist/components/rich-text/prompt-input/plugins/CommentPlugin/nodes/CommentNode/CommentNode.d.ts +1 -2
- package/dist/components/rich-text/prompt-input/plugins/ReferencePlugin/nodes/ReferenceNode/ReferenceNode.d.ts +1 -2
- package/dist/components/rich-text/prompt-input/utils.d.ts +1 -2
- package/dist/components/rich-text/shared/plugins/MermaidPlugin/MermaidNode.d.ts +0 -1
- package/dist/components/rich-text/utils/inferResourceType.d.ts +1 -1
- package/dist/components/sidebar/sidebar.types.d.ts +1 -1
- package/dist/components/tab-strip/tab-visibility-filter.d.ts +1 -1
- package/dist/components/tag-editor/tag-editor-row.d.ts +1 -1
- package/dist/components/tag-editor/tag-editor.types.d.ts +1 -1
- package/dist/components/terminal/bind-session.d.ts +33 -0
- package/dist/components/terminal/index.d.ts +6 -0
- package/dist/components/terminal/scripted-bridge.d.ts +35 -0
- package/dist/components/terminal/terminal-contract.d.ts +22 -0
- package/dist/components/terminal/terminal-theme.d.ts +12 -0
- package/dist/components/terminal/terminal.d.ts +45 -0
- package/dist/components/terminal/types.d.ts +35 -0
- package/dist/components/terminal/use-terminal-session.d.ts +21 -0
- package/dist/components/tree-list/tree-list-order-filter.d.ts +1 -2
- package/dist/components/tree-list/tree-list-visibility-filter.d.ts +1 -1
- package/dist/components/tree-list/tree-list.d.ts +1 -1
- package/dist/data-renderer.js +1669 -0
- package/dist/data-renderer.js.map +1 -0
- package/dist/diff-editor-BnfV8cYB.js +182 -0
- package/dist/diff-editor-BnfV8cYB.js.map +1 -0
- package/dist/diff.js +1313 -0
- package/dist/diff.js.map +1 -0
- package/dist/empty-state-Bo4HVrgr.js +34 -0
- package/dist/empty-state-Bo4HVrgr.js.map +1 -0
- package/dist/foundations/gallery/gallery-frame.d.ts +21 -0
- package/dist/foundations/gallery/sections/badges-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/buttons-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/composite-chat-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/composites-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/feedback-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/input-authoring-card.d.ts +1 -0
- package/dist/foundations/gallery/sections/inputs-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/layout-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/navigation-identity-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/overlays-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/panels-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/param-editor-composite-card.d.ts +1 -0
- package/dist/foundations/gallery/sections/settings-composite-cards.d.ts +1 -0
- package/dist/index.d.ts +11 -84
- package/dist/index.js +3570 -7569
- package/dist/index.js.map +1 -1
- package/dist/list-row-mi3Hn-Um.js +740 -0
- package/dist/list-row-mi3Hn-Um.js.map +1 -0
- package/dist/mermaid-renderer-DZo3qj6D.js +425 -0
- package/dist/mermaid-renderer-DZo3qj6D.js.map +1 -0
- package/dist/mermaid.js +5 -0
- package/dist/mermaid.js.map +1 -0
- package/dist/radio-cLMEBBZk.js +76 -0
- package/dist/radio-cLMEBBZk.js.map +1 -0
- package/dist/resource-badge-qCWHP-wQ.js +99 -0
- package/dist/resource-badge-qCWHP-wQ.js.map +1 -0
- package/dist/{rich-message-DNSEhxXh.js → rich-message-DBf_5YlW.js} +462 -481
- package/dist/rich-message-DBf_5YlW.js.map +1 -0
- package/dist/rich-text.js +300 -299
- package/dist/rich-text.js.map +1 -1
- package/dist/scroll-area-BMbg1WcD.js +91 -0
- package/dist/scroll-area-BMbg1WcD.js.map +1 -0
- package/dist/style.css +1 -1
- package/dist/terminal.js +339 -0
- package/dist/terminal.js.map +1 -0
- package/dist/theme/global.d.ts +3 -0
- package/dist/theme/recipes/badge.d.ts +50 -0
- package/dist/theme/recipes/button.d.ts +24 -19
- package/dist/theme/recipes/color-picker.d.ts +1 -0
- package/dist/theme/recipes/dialog.d.ts +1 -1
- package/dist/theme/recipes/drawer.d.ts +1 -1
- package/dist/theme/recipes/input.d.ts +55 -0
- package/dist/theme/recipes/number-input.d.ts +98 -0
- package/dist/theme/recipes/tabs.d.ts +49 -28
- package/dist/theme/recipes/textarea.d.ts +62 -1
- package/dist/theme/recipes/timeline.d.ts +74 -0
- package/dist/theme/tokens/borders.d.ts +0 -3
- package/dist/theme/tokens/colors.d.ts +100 -70
- package/dist/{theme-25P7ij4C.js → theme-CJBYBJaA.js} +1194 -315
- package/dist/theme-CJBYBJaA.js.map +1 -0
- package/dist/theme-preference-DOzHx64J.js +123 -0
- package/dist/theme-preference-DOzHx64J.js.map +1 -0
- package/dist/theme.js +1 -1
- package/dist/tree-list-CcuZMLS5.js +930 -0
- package/dist/tree-list-CcuZMLS5.js.map +1 -0
- package/dist/workspace-badge-Fuo-1zPj.js +314 -0
- package/dist/workspace-badge-Fuo-1zPj.js.map +1 -0
- package/package.json +23 -3
- package/dist/components/file-tree-helpers.d.ts +0 -8
- package/dist/components/open-source-notices-screen.d.ts +0 -20
- package/dist/components/param-editor/input-group.d.ts +0 -10
- package/dist/components/rich-text/shared/plugins/MermaidPlugin/index.d.ts +0 -1
- package/dist/components/rich-text/shared/plugins/TableActionMenuPlugin/TableActionMenuPlugin.d.ts +0 -5
- package/dist/components/rich-text/shared/plugins/TableCellResizerPlugin/TableCellResizerPlugin.d.ts +0 -2
- package/dist/components/rich-text/theme/report-theme.d.ts +0 -3
- package/dist/components/style-guide-data.d.ts +0 -40
- package/dist/components/style-guide.d.ts +0 -1
- package/dist/mermaid-renderer-CPGj6vsb.js +0 -570
- package/dist/mermaid-renderer-CPGj6vsb.js.map +0 -1
- package/dist/radio-DJtQY9po.js +0 -286
- package/dist/radio-DJtQY9po.js.map +0 -1
- package/dist/resource-badge-CeJTOn8F.js +0 -188
- package/dist/resource-badge-CeJTOn8F.js.map +0 -1
- package/dist/rich-message-DNSEhxXh.js.map +0 -1
- package/dist/theme-25P7ij4C.js.map +0 -1
- package/dist/utils/formats.d.ts +0 -7
- /package/dist/components/{palette-filter.d.ts → command-palette/palette-filter.d.ts} +0 -0
- /package/dist/components/{palette-list.d.ts → command-palette/palette-list.d.ts} +0 -0
- /package/dist/components/{palette-shortcut.d.ts → command-palette/palette-shortcut.d.ts} +0 -0
- /package/dist/components/{palette.d.ts → command-palette/palette.d.ts} +0 -0
- /package/dist/components/{code-editor.d.ts → diff-viewer/code-editor.d.ts} +0 -0
- /package/dist/components/{column-file-browser.d.ts → file-browser/column-file-browser.d.ts} +0 -0
- /package/dist/components/{performance-panel.d.ts → internal/performance-panel.d.ts} +0 -0
- /package/dist/components/{header.d.ts → layout/header.d.ts} +0 -0
- /package/dist/components/{horizontal-menu-stack.d.ts → layout/horizontal-menu-stack.d.ts} +0 -0
- /package/dist/components/{item-section.d.ts → layout/item-section.d.ts} +0 -0
- /package/dist/components/{panel-header.constants.d.ts → layout/panel-header.constants.d.ts} +0 -0
- /package/dist/components/{resizable-split-layout.d.ts → layout/resizable-split-layout.d.ts} +0 -0
- /package/dist/components/{resizable-split-layout.handle.d.ts → layout/resizable-split-layout.handle.d.ts} +0 -0
- /package/dist/components/{attached-panel.d.ts → overlays/attached-panel.d.ts} +0 -0
- /package/dist/components/{bubble-button.d.ts → overlays/bubble-button.d.ts} +0 -0
- /package/dist/components/{bubble-panel.d.ts → overlays/bubble-panel.d.ts} +0 -0
- /package/dist/components/{delete-confirmation-modal.d.ts → overlays/delete-confirmation-modal.d.ts} +0 -0
- /package/dist/components/{repo-picker-dialog.d.ts → overlays/repo-picker-dialog.d.ts} +0 -0
- /package/dist/components/{resource-context-menu.d.ts → overlays/resource-context-menu.d.ts} +0 -0
- /package/dist/components/param-editor/{color-input.d.ts → inputs/color-input.d.ts} +0 -0
- /package/dist/components/param-editor/{date-input.d.ts → inputs/date-input.d.ts} +0 -0
- /package/dist/components/param-editor/{horizontal-text-input.d.ts → inputs/horizontal-text-input.d.ts} +0 -0
- /package/dist/components/param-editor/{number-input.d.ts → inputs/number-input.d.ts} +0 -0
- /package/dist/components/param-editor/{selection-input.d.ts → inputs/selection-input.d.ts} +0 -0
- /package/dist/components/param-editor/{text-input.d.ts → inputs/text-input.d.ts} +0 -0
- /package/dist/components/{alert.d.ts → primitives/alert.d.ts} +0 -0
- /package/dist/components/{checkbox.d.ts → primitives/checkbox.d.ts} +0 -0
- /package/dist/components/{content-placeholder.d.ts → primitives/content-placeholder.d.ts} +0 -0
- /package/dist/components/{empty-state.d.ts → primitives/empty-state.d.ts} +0 -0
- /package/dist/components/{error-boundary.d.ts → primitives/error-boundary.d.ts} +0 -0
- /package/dist/components/{icon-color-picker.d.ts → primitives/icon-color-picker.d.ts} +0 -0
- /package/dist/components/{info-card.d.ts → primitives/info-card.d.ts} +0 -0
- /package/dist/components/{integration-card.d.ts → primitives/integration-card.d.ts} +0 -0
- /package/dist/components/{radio.d.ts → primitives/radio.d.ts} +0 -0
- /package/dist/components/{resource-badge.d.ts → primitives/resource-badge.d.ts} +0 -0
- /package/dist/components/{scroll-area.d.ts → primitives/scroll-area.d.ts} +0 -0
- /package/dist/components/{simple-card.d.ts → primitives/simple-card.d.ts} +0 -0
- /package/dist/components/{slider.d.ts → primitives/slider.d.ts} +0 -0
- /package/dist/components/{switch.d.ts → primitives/switch.d.ts} +0 -0
- /package/dist/components/{toaster.d.ts → primitives/toaster.d.ts} +0 -0
- /package/dist/components/{workspace-badge.d.ts → primitives/workspace-badge.d.ts} +0 -0
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { jsx as m, jsxs as R } from "react/jsx-runtime";
|
|
2
|
+
import { c as _ } from "react/compiler-runtime";
|
|
3
|
+
import { Span as b, Box as A } from "@chakra-ui/react";
|
|
4
|
+
import { DiffModeEnum as E, DiffView as N } from "@git-diff-view/react";
|
|
5
|
+
import "@git-diff-view/react/styles/diff-view.css";
|
|
6
|
+
import { useRef as V } from "react";
|
|
7
|
+
import { generateDiffFile as z } from "@git-diff-view/file";
|
|
8
|
+
const te = (t) => {
|
|
9
|
+
const e = _(20), {
|
|
10
|
+
fileName: o,
|
|
11
|
+
additions: i,
|
|
12
|
+
deletions: n,
|
|
13
|
+
label: a,
|
|
14
|
+
variant: f,
|
|
15
|
+
size: l,
|
|
16
|
+
onClick: r,
|
|
17
|
+
onClickFileLink: s
|
|
18
|
+
} = t, h = f === void 0 ? "outline" : f, j = (l === void 0 ? "default" : l) === "small", v = h === "outline" ? "1px solid" : "none", w = h === "outline" ? j ? "3xs" : "2xs" : "2px", k = j ? "label/S/regular" : void 0, D = r ? "pointer" : "default", y = r ? "bg.muted" : "none";
|
|
19
|
+
let d;
|
|
20
|
+
e[0] !== y ? (d = {
|
|
21
|
+
background: y
|
|
22
|
+
}, e[0] = y, e[1] = d) : d = e[1];
|
|
23
|
+
let c;
|
|
24
|
+
e[2] !== o || e[3] !== s ? (c = o && /* @__PURE__ */ m(b, { display: "inline-block", maxW: "24ch", truncate: !0, mr: "xs", title: o, onClick: (F) => {
|
|
25
|
+
F.stopPropagation(), s?.();
|
|
26
|
+
}, cursor: s ? "pointer" : "default", _hover: {
|
|
27
|
+
textDecoration: s ? "underline" : "none",
|
|
28
|
+
color: s ? "fg.blue-dark" : "fg.muted"
|
|
29
|
+
}, children: o }), e[2] = o, e[3] = s, e[4] = c) : c = e[4];
|
|
30
|
+
const L = `+${i}`;
|
|
31
|
+
let u;
|
|
32
|
+
e[5] !== L ? (u = /* @__PURE__ */ m(b, { color: "fg.success", children: L }), e[5] = L, e[6] = u) : u = e[6];
|
|
33
|
+
const C = `-${n}`;
|
|
34
|
+
let g;
|
|
35
|
+
e[7] !== C ? (g = /* @__PURE__ */ m(b, { color: "fg.error", children: C }), e[7] = C, e[8] = g) : g = e[8];
|
|
36
|
+
let x;
|
|
37
|
+
return e[9] !== a || e[10] !== r || e[11] !== u || e[12] !== g || e[13] !== v || e[14] !== w || e[15] !== k || e[16] !== D || e[17] !== d || e[18] !== c ? (x = /* @__PURE__ */ R(b, { display: "inline-flex", alignItems: "center", gap: "2xs", border: v, borderColor: "border.subtle", color: "fg.muted", paddingX: w, paddingY: "1px", borderRadius: "xs", textStyle: k, cursor: D, onClick: r, _hover: d, children: [
|
|
38
|
+
a,
|
|
39
|
+
c,
|
|
40
|
+
u,
|
|
41
|
+
g
|
|
42
|
+
] }), e[9] = a, e[10] = r, e[11] = u, e[12] = g, e[13] = v, e[14] = w, e[15] = k, e[16] = D, e[17] = d, e[18] = c, e[19] = x) : x = e[19], x;
|
|
43
|
+
}, W = "before.txt", B = "after.txt", H = 100, M = {
|
|
44
|
+
ts: "typescript",
|
|
45
|
+
tsx: "typescript",
|
|
46
|
+
js: "javascript",
|
|
47
|
+
jsx: "javascript",
|
|
48
|
+
json: "json",
|
|
49
|
+
md: "markdown",
|
|
50
|
+
py: "python",
|
|
51
|
+
go: "go",
|
|
52
|
+
rs: "rust",
|
|
53
|
+
css: "css",
|
|
54
|
+
html: "html",
|
|
55
|
+
sh: "shell",
|
|
56
|
+
yml: "yaml",
|
|
57
|
+
yaml: "yaml"
|
|
58
|
+
}, P = (t) => (t.split(/[\\/]/).pop() ?? t).split(".").pop()?.toLowerCase(), T = ({
|
|
59
|
+
language: t,
|
|
60
|
+
oldPath: e,
|
|
61
|
+
newPath: o
|
|
62
|
+
}) => {
|
|
63
|
+
if (t)
|
|
64
|
+
return t;
|
|
65
|
+
const i = P(o ?? e ?? "");
|
|
66
|
+
return i ? M[i] ?? "plaintext" : "plaintext";
|
|
67
|
+
}, p = /* @__PURE__ */ new Map(), I = ({
|
|
68
|
+
original: t,
|
|
69
|
+
modified: e,
|
|
70
|
+
language: o,
|
|
71
|
+
oldPath: i,
|
|
72
|
+
newPath: n
|
|
73
|
+
}) => [t, e, o ?? "", i ?? "", n ?? ""].join("\0"), K = (t) => {
|
|
74
|
+
const e = t.join(`
|
|
75
|
+
`).split(`
|
|
76
|
+
`);
|
|
77
|
+
let o = 0, i = 0, n = 0, a = !1, f = 0, l = 0;
|
|
78
|
+
const r = () => {
|
|
79
|
+
o += f + l, i += Math.max(f, l), f = 0, l = 0;
|
|
80
|
+
};
|
|
81
|
+
for (const s of e)
|
|
82
|
+
s.startsWith("@@") ? (r(), n += 1, a = !0) : a && (s.startsWith("+") ? f += 1 : s.startsWith("-") ? l += 1 : s.startsWith(" ") && (r(), o += 1, i += 1));
|
|
83
|
+
return r(), {
|
|
84
|
+
unifiedContentRows: o,
|
|
85
|
+
splitContentRows: i,
|
|
86
|
+
hunkRows: n
|
|
87
|
+
};
|
|
88
|
+
}, $ = ({
|
|
89
|
+
original: t,
|
|
90
|
+
modified: e,
|
|
91
|
+
language: o,
|
|
92
|
+
oldPath: i,
|
|
93
|
+
newPath: n
|
|
94
|
+
}) => {
|
|
95
|
+
const a = i ?? n ?? W, f = n ?? i ?? B, l = T({
|
|
96
|
+
language: o,
|
|
97
|
+
oldPath: i,
|
|
98
|
+
newPath: n
|
|
99
|
+
}), r = z(a, t, f, e, l, l, {
|
|
100
|
+
context: 3
|
|
101
|
+
});
|
|
102
|
+
return {
|
|
103
|
+
oldFile: {
|
|
104
|
+
fileName: a,
|
|
105
|
+
fileLang: l,
|
|
106
|
+
content: t
|
|
107
|
+
},
|
|
108
|
+
newFile: {
|
|
109
|
+
fileName: f,
|
|
110
|
+
fileLang: l,
|
|
111
|
+
content: e
|
|
112
|
+
},
|
|
113
|
+
hunks: r._diffList,
|
|
114
|
+
...K(r._diffList)
|
|
115
|
+
};
|
|
116
|
+
}, X = (t) => {
|
|
117
|
+
const e = I(t), o = p.get(e);
|
|
118
|
+
if (o) return o;
|
|
119
|
+
const i = $(t);
|
|
120
|
+
if (p.size >= H) {
|
|
121
|
+
const n = p.keys().next().value;
|
|
122
|
+
n !== void 0 && p.delete(n);
|
|
123
|
+
}
|
|
124
|
+
return p.set(e, i), i;
|
|
125
|
+
}, q = (t, e) => t.original === e.original && t.modified === e.modified && t.language === e.language && t.oldPath === e.oldPath && t.newPath === e.newPath, O = (t, e, o) => t && q(t.input, e) ? t : {
|
|
126
|
+
input: e,
|
|
127
|
+
data: o()
|
|
128
|
+
};
|
|
129
|
+
function oe(t) {
|
|
130
|
+
const {
|
|
131
|
+
original: e,
|
|
132
|
+
modified: o,
|
|
133
|
+
language: i,
|
|
134
|
+
oldPath: n,
|
|
135
|
+
newPath: a,
|
|
136
|
+
sideBySide: f = !1,
|
|
137
|
+
disableScroll: l = !0,
|
|
138
|
+
data: r
|
|
139
|
+
} = t, s = V(null), h = {
|
|
140
|
+
original: e,
|
|
141
|
+
modified: o,
|
|
142
|
+
language: i,
|
|
143
|
+
oldPath: n,
|
|
144
|
+
newPath: a
|
|
145
|
+
};
|
|
146
|
+
s.current = O(s.current, h, () => r ?? X({
|
|
147
|
+
original: e,
|
|
148
|
+
modified: o,
|
|
149
|
+
language: i,
|
|
150
|
+
oldPath: n,
|
|
151
|
+
newPath: a
|
|
152
|
+
}));
|
|
153
|
+
const S = f ? E.Split : E.Unified;
|
|
154
|
+
return /* @__PURE__ */ m(A, { height: "100%", width: "100%", position: "relative", zIndex: "0", overflow: l ? "hidden" : "auto", bg: "bg", css: {
|
|
155
|
+
"& .gdv-root, & .gdv-view, & .gdv-file, & .gdv-content, & .gdv-hunk, & .gdv-line": {
|
|
156
|
+
background: "var(--chakra-colors-bg)"
|
|
157
|
+
},
|
|
158
|
+
"& .gdv-root": {
|
|
159
|
+
border: "none",
|
|
160
|
+
borderRadius: "0"
|
|
161
|
+
},
|
|
162
|
+
"& .gdv-line-number": {
|
|
163
|
+
fontSize: "11px"
|
|
164
|
+
}
|
|
165
|
+
}, children: /* @__PURE__ */ m(
|
|
166
|
+
N,
|
|
167
|
+
{
|
|
168
|
+
data: s.current.data,
|
|
169
|
+
diffViewMode: S,
|
|
170
|
+
diffViewTheme: "dark",
|
|
171
|
+
diffViewHighlight: !0,
|
|
172
|
+
diffViewWrap: !1,
|
|
173
|
+
diffViewFontSize: 11
|
|
174
|
+
}
|
|
175
|
+
) });
|
|
176
|
+
}
|
|
177
|
+
export {
|
|
178
|
+
oe as D,
|
|
179
|
+
te as a,
|
|
180
|
+
X as b
|
|
181
|
+
};
|
|
182
|
+
//# sourceMappingURL=diff-editor-BnfV8cYB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff-editor-BnfV8cYB.js","sources":["../src/components/diff-viewer/diff-bubble.tsx","../src/components/diff-viewer/diff-view-adapter.ts","../src/components/diff-viewer/diff-editor.tsx"],"sourcesContent":["import { Span } from \"@chakra-ui/react\";\nimport type React from \"react\";\nimport type { ComponentProps, MouseEvent } from \"react\";\n\ninterface DiffBubbleProps extends Omit<ComponentProps<typeof Span>, \"onClick\"> {\n fileName?: string;\n additions: number;\n deletions: number;\n label?: React.ReactNode;\n variant?: \"outline\" | \"ghost\";\n size?: \"default\" | \"small\";\n onClick?: (event: MouseEvent<HTMLSpanElement>) => void;\n onClickFileLink?: () => void;\n}\n\nexport const DiffBubble = (props: DiffBubbleProps) => {\n const {\n fileName,\n additions,\n deletions,\n label,\n variant = \"outline\",\n size = \"default\",\n onClick,\n onClickFileLink,\n } = props;\n\n const isSmall = size === \"small\";\n\n return (\n <Span\n display=\"inline-flex\"\n alignItems=\"center\"\n gap={\"2xs\"}\n border={variant === \"outline\" ? \"1px solid\" : \"none\"}\n borderColor=\"border.subtle\"\n color=\"fg.muted\"\n paddingX={variant === \"outline\" ? (isSmall ? \"3xs\" : \"2xs\") : \"2px\"}\n paddingY=\"1px\"\n borderRadius=\"xs\"\n textStyle={isSmall ? \"label/S/regular\" : undefined}\n cursor={onClick ? \"pointer\" : \"default\"}\n onClick={onClick}\n _hover={{\n background: onClick ? \"bg.muted\" : \"none\",\n }}\n >\n {label}\n {fileName && (\n <Span\n display=\"inline-block\"\n maxW=\"24ch\"\n truncate\n mr=\"xs\"\n title={fileName}\n onClick={(e) => {\n e.stopPropagation();\n onClickFileLink?.();\n }}\n cursor={onClickFileLink ? \"pointer\" : \"default\"}\n _hover={{\n textDecoration: onClickFileLink ? \"underline\" : \"none\",\n color: onClickFileLink ? \"fg.blue-dark\" : \"fg.muted\",\n }}\n >\n {fileName}\n </Span>\n )}\n <Span color=\"fg.success\">{`+${additions}`}</Span>\n <Span color=\"fg.error\">{`-${deletions}`}</Span>\n </Span>\n );\n};\n","import { generateDiffFile } from \"@git-diff-view/file\";\nimport type { DiffViewProps } from \"@git-diff-view/react\";\n\nconst FALLBACK_OLD_PATH = \"before.txt\";\nconst FALLBACK_NEW_PATH = \"after.txt\";\nconst MAX_CACHE_ENTRIES = 100;\n\ninterface ResolveDiffLanguageInput {\n language?: string;\n oldPath?: string;\n newPath?: string;\n}\n\ninterface BuildDiffViewDataInput extends ResolveDiffLanguageInput {\n original: string;\n modified: string;\n}\n\nexport type DiffViewData = NonNullable<DiffViewProps<unknown>[\"data\"]>;\n\n/**\n * Diff view data enriched with the row counts the renderer will actually paint. The renderer\n * collapses unchanged context, so only lines inside the hunks are rendered — these counts come\n * from the hunk patch, not the full file length.\n */\nexport interface BuiltDiffViewData extends DiffViewData {\n /** Content rows painted in unified layout (one per added/removed/context line). */\n unifiedContentRows: number;\n /** Content rows painted in split layout (paired add/remove lines share a row). */\n splitContentRows: number;\n /** Hunk header rows — one per `@@` section, taller than content rows. */\n hunkRows: number;\n}\n\nconst extToLanguage: Record<string, string> = {\n ts: \"typescript\",\n tsx: \"typescript\",\n js: \"javascript\",\n jsx: \"javascript\",\n json: \"json\",\n md: \"markdown\",\n py: \"python\",\n go: \"go\",\n rs: \"rust\",\n css: \"css\",\n html: \"html\",\n sh: \"shell\",\n yml: \"yaml\",\n yaml: \"yaml\",\n};\n\nconst getExtension = (path: string) => {\n const fileName = path.split(/[\\\\/]/).pop() ?? path;\n const ext = fileName.split(\".\").pop();\n\n return ext?.toLowerCase();\n};\n\nexport const resolveDiffLanguage = ({ language, oldPath, newPath }: ResolveDiffLanguageInput) => {\n if (language) {\n return language;\n }\n\n const extension = getExtension(newPath ?? oldPath ?? \"\");\n\n if (!extension) {\n return \"plaintext\";\n }\n\n return extToLanguage[extension] ?? \"plaintext\";\n};\n\n// Building a diff file parses both file contents and walks every rendered line. The drawer's\n// virtualizer asks for heights far more often than the diff content changes, so memoize by\n// content signature and share one instance with the rendered editor.\nconst cache = new Map<string, BuiltDiffViewData>();\n\nconst getCacheKey = ({ original, modified, language, oldPath, newPath }: BuildDiffViewDataInput) =>\n [original, modified, language ?? \"\", oldPath ?? \"\", newPath ?? \"\"].join(\"\\0\");\n\n// The hunk patch lists exactly the rows the renderer paints (it collapses everything else).\n// Walk it once: `@@` starts a hunk header row, ` ` is a context row, and a run of `-`/`+`\n// is one change block — unified stacks every line, split pairs them so the block is as tall\n// as its longer side.\nconst countRenderedRows = (hunks: string[]) => {\n const lines = hunks.join(\"\\n\").split(\"\\n\");\n let unifiedContentRows = 0;\n let splitContentRows = 0;\n let hunkRows = 0;\n let inHunk = false;\n let blockAdditions = 0;\n let blockDeletions = 0;\n\n const flushBlock = () => {\n unifiedContentRows += blockAdditions + blockDeletions;\n splitContentRows += Math.max(blockAdditions, blockDeletions);\n blockAdditions = 0;\n blockDeletions = 0;\n };\n\n for (const line of lines) {\n if (line.startsWith(\"@@\")) {\n flushBlock();\n hunkRows += 1;\n inHunk = true;\n } else if (!inHunk) {\n // Patch header (Index:, ===, ---, +++) before the first hunk — not rendered.\n } else if (line.startsWith(\"+\")) {\n blockAdditions += 1;\n } else if (line.startsWith(\"-\")) {\n blockDeletions += 1;\n } else if (line.startsWith(\" \")) {\n flushBlock();\n unifiedContentRows += 1;\n splitContentRows += 1;\n }\n }\n flushBlock();\n\n return { unifiedContentRows, splitContentRows, hunkRows };\n};\n\nconst computeDiffViewData = ({ original, modified, language, oldPath, newPath }: BuildDiffViewDataInput) => {\n const oldFileName = oldPath ?? newPath ?? FALLBACK_OLD_PATH;\n const newFileName = newPath ?? oldPath ?? FALLBACK_NEW_PATH;\n const fileLanguage = resolveDiffLanguage({ language, oldPath, newPath });\n\n // No uuid: @git-diff-view keys its internal File cache by uuid when one is given, so a\n // shared constant would make every diff reuse the first file's content. Omitting it keys\n // the cache by raw content, which is correct.\n const diffFile = generateDiffFile(oldFileName, original, newFileName, modified, fileLanguage, fileLanguage, {\n context: 3,\n });\n\n return {\n oldFile: {\n fileName: oldFileName,\n fileLang: fileLanguage,\n content: original,\n },\n newFile: {\n fileName: newFileName,\n fileLang: fileLanguage,\n content: modified,\n },\n hunks: diffFile._diffList,\n ...countRenderedRows(diffFile._diffList),\n } satisfies BuiltDiffViewData;\n};\n\nexport const buildDiffViewData = (input: BuildDiffViewDataInput): BuiltDiffViewData => {\n const key = getCacheKey(input);\n const cached = cache.get(key);\n if (cached) return cached;\n\n const data = computeDiffViewData(input);\n\n if (cache.size >= MAX_CACHE_ENTRIES) {\n const oldest = cache.keys().next().value;\n if (oldest !== undefined) cache.delete(oldest);\n }\n cache.set(key, data);\n\n return data;\n};\n","import { DiffModeEnum, DiffView } from \"@git-diff-view/react\";\nimport \"@git-diff-view/react/styles/diff-view.css\";\nimport { Box } from \"@chakra-ui/react\";\nimport { useRef } from \"react\";\nimport { buildDiffViewData, type DiffViewData } from \"./diff-view-adapter\";\n\nexport interface DiffEditorInput {\n original: string;\n modified: string;\n language?: string;\n oldPath?: string;\n newPath?: string;\n}\n\ninterface DiffEditorProps extends DiffEditorInput {\n sideBySide?: boolean;\n disableScroll?: boolean;\n data?: DiffViewData;\n}\n\nexport interface DiffEditorDataState {\n input: DiffEditorInput;\n data: DiffViewData;\n}\n\nconst areDiffEditorInputsEqual = (current: DiffEditorInput, next: DiffEditorInput) =>\n current.original === next.original &&\n current.modified === next.modified &&\n current.language === next.language &&\n current.oldPath === next.oldPath &&\n current.newPath === next.newPath;\n\nexport const resolveDiffEditorDataState = (\n current: DiffEditorDataState | null,\n input: DiffEditorInput,\n createData: () => DiffViewData,\n) => {\n if (current && areDiffEditorInputsEqual(current.input, input)) {\n return current;\n }\n\n return {\n input,\n data: createData(),\n };\n};\n\nexport function DiffEditor(props: DiffEditorProps) {\n const { original, modified, language, oldPath, newPath, sideBySide = false, disableScroll = true, data } = props;\n const dataStateRef = useRef<DiffEditorDataState | null>(null);\n const input = { original, modified, language, oldPath, newPath };\n\n dataStateRef.current = resolveDiffEditorDataState(\n dataStateRef.current,\n input,\n () =>\n data ??\n buildDiffViewData({\n original,\n modified,\n language,\n oldPath,\n newPath,\n }),\n );\n\n const mode = sideBySide ? DiffModeEnum.Split : DiffModeEnum.Unified;\n\n return (\n <Box\n height=\"100%\"\n width=\"100%\"\n position=\"relative\"\n zIndex=\"0\"\n overflow={disableScroll ? \"hidden\" : \"auto\"}\n bg=\"bg\"\n css={{\n \"& .gdv-root, & .gdv-view, & .gdv-file, & .gdv-content, & .gdv-hunk, & .gdv-line\": {\n background: \"var(--chakra-colors-bg)\",\n },\n \"& .gdv-root\": {\n border: \"none\",\n borderRadius: \"0\",\n },\n \"& .gdv-line-number\": {\n fontSize: \"11px\",\n },\n }}\n >\n <DiffView\n data={dataStateRef.current.data}\n diffViewMode={mode}\n diffViewTheme=\"dark\"\n diffViewHighlight={true}\n // No wrap: keeps every line one fixed-height row so the virtualizer's height estimate\n // stays exact, and avoids wrapped lines being misread. Long lines scroll horizontally\n // inside DiffView's own overflow-x container.\n diffViewWrap={false}\n diffViewFontSize={11}\n />\n </Box>\n );\n}\n"],"names":["DiffBubble","props","$","_c","fileName","additions","deletions","label","variant","t0","size","t1","onClick","onClickFileLink","undefined","isSmall","t2","t3","t4","t5","t6","t7","background","t8","jsx","Span","e","stopPropagation","textDecoration","color","t9","t10","t11","t12","t13","FALLBACK_OLD_PATH","FALLBACK_NEW_PATH","MAX_CACHE_ENTRIES","extToLanguage","ts","tsx","js","json","md","py","go","rs","css","html","sh","yml","yaml","getExtension","path","split","pop","toLowerCase","resolveDiffLanguage","language","oldPath","newPath","extension","cache","Map","getCacheKey","original","modified","join","countRenderedRows","hunks","lines","unifiedContentRows","splitContentRows","hunkRows","inHunk","blockAdditions","blockDeletions","flushBlock","Math","max","line","startsWith","computeDiffViewData","oldFileName","newFileName","fileLanguage","diffFile","generateDiffFile","context","oldFile","fileLang","content","newFile","_diffList","buildDiffViewData","input","key","cached","get","data","oldest","keys","next","value","delete","set","areDiffEditorInputsEqual","current","resolveDiffEditorDataState","createData","DiffEditor","sideBySide","disableScroll","dataStateRef","useRef","mode","DiffModeEnum","Split","Unified","Box","border","borderRadius","fontSize","DiffView"],"mappings":"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"}
|