@pstdio/ui 0.14.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.
Files changed (226) hide show
  1. package/dist/{MermaidComponent-CatfVUxA.js → MermaidComponent-BCMQqPqu.js} +11 -11
  2. package/dist/{MermaidComponent-CatfVUxA.js.map → MermaidComponent-BCMQqPqu.js.map} +1 -1
  3. package/dist/browser-storage-BinyFNJX.js +40 -0
  4. package/dist/browser-storage-BinyFNJX.js.map +1 -0
  5. package/dist/chat-ui.js +1160 -1120
  6. package/dist/chat-ui.js.map +1 -1
  7. package/dist/checkbox-D5AzFRlb.js +70 -0
  8. package/dist/checkbox-D5AzFRlb.js.map +1 -0
  9. package/dist/components/chat-ui/components/ai-conversation.d.ts +1 -1
  10. package/dist/components/chat-ui/components/ai-message.d.ts +1 -1
  11. package/dist/components/chat-ui/components/ai-response.d.ts +0 -1
  12. package/dist/components/chat-ui/components/attachment-list.d.ts +1 -1
  13. package/dist/components/chat-ui/components/auto-scroll.d.ts +27 -0
  14. package/dist/components/chat-ui/components/chat-message-animation.d.ts +22 -0
  15. package/dist/components/chat-ui/components/timeline.d.ts +0 -2
  16. package/dist/components/chat-ui/performance/chat-performance-fixtures.d.ts +0 -1
  17. package/dist/components/chat-ui/tool-rendering/build-timeline.d.ts +2 -12
  18. package/dist/components/chat-ui/tool-rendering/shared.d.ts +1 -1
  19. package/dist/components/chat-ui/tool-rendering/types.d.ts +1 -2
  20. package/dist/components/command-palette/index.d.ts +4 -0
  21. package/dist/components/data-renderer/data-renderer-board.d.ts +1 -1
  22. package/dist/components/data-renderer/data-renderer-card.d.ts +1 -1
  23. package/dist/components/data-renderer/data-renderer-enum-helpers.d.ts +3 -3
  24. package/dist/components/data-renderer/data-renderer-helpers.d.ts +2 -0
  25. package/dist/components/data-renderer/data-renderer-list.d.ts +1 -1
  26. package/dist/components/data-renderer/data-renderer.d.ts +1 -1
  27. package/dist/components/data-renderer/index.d.ts +18 -0
  28. package/dist/components/data-renderer/types.d.ts +0 -6
  29. package/dist/components/diff-viewer/diff-card.d.ts +1 -0
  30. package/dist/components/diff-viewer/diff-drawer-scroll.d.ts +0 -19
  31. package/dist/components/diff-viewer/diff-drawer.d.ts +1 -0
  32. package/dist/components/diff-viewer/diff-viewer-options-menu.d.ts +16 -0
  33. package/dist/components/diff-viewer/index.d.ts +2 -0
  34. package/dist/components/diff-viewer/use-selected-diff-scroll.d.ts +7 -3
  35. package/dist/components/internal/style-guide.d.ts +14 -0
  36. package/dist/components/internal/token-editor-controls.d.ts +8 -0
  37. package/dist/components/internal/token-editor-data.d.ts +40 -0
  38. package/dist/components/internal/token-editor-state.d.ts +22 -0
  39. package/dist/components/layout/index.d.ts +6 -0
  40. package/dist/components/list-row/list-row.types.d.ts +1 -1
  41. package/dist/components/notification-center/index.d.ts +2 -0
  42. package/dist/components/notification-center/notification-center.d.ts +2 -0
  43. package/dist/components/notification-center/notification-center.types.d.ts +37 -0
  44. package/dist/components/{bubble-button.d.ts → overlays/bubble-button.d.ts} +1 -1
  45. package/dist/components/overlays/index.d.ts +12 -0
  46. package/dist/components/overlays/search-modal-content.d.ts +20 -0
  47. package/dist/components/{searchable-menu.d.ts → overlays/searchable-menu.d.ts} +1 -1
  48. package/dist/components/param-editor/index.d.ts +23 -0
  49. package/dist/components/param-editor/inputs/action-input.d.ts +13 -0
  50. package/dist/components/param-editor/inputs/anchor-grid-input.d.ts +12 -0
  51. package/dist/components/param-editor/inputs/anchor-grid.d.ts +4 -0
  52. package/dist/components/param-editor/inputs/file-accept.d.ts +22 -0
  53. package/dist/components/param-editor/inputs/file-drop-input.d.ts +14 -0
  54. package/dist/components/param-editor/inputs/numeric-value.d.ts +6 -0
  55. package/dist/components/param-editor/inputs/range-input.d.ts +17 -0
  56. package/dist/components/param-editor/inputs/range-value.d.ts +5 -0
  57. package/dist/components/param-editor/inputs/resource-input-chips.d.ts +15 -0
  58. package/dist/components/param-editor/inputs/resource-input.d.ts +18 -0
  59. package/dist/components/param-editor/inputs/segmented-input.d.ts +14 -0
  60. package/dist/components/param-editor/inputs/slider-marks.d.ts +5 -0
  61. package/dist/components/param-editor/inputs/vector-input.d.ts +17 -0
  62. package/dist/components/param-editor/inputs/vector-value.d.ts +7 -0
  63. package/dist/components/param-editor/param-editor-control-item.d.ts +15 -0
  64. package/dist/components/param-editor/param-editor-control-list.d.ts +5 -0
  65. package/dist/components/param-editor/param-editor-field-label.d.ts +1 -0
  66. package/dist/components/param-editor/param-editor-field.d.ts +11 -0
  67. package/dist/components/param-editor/param-editor-inline-group.d.ts +5 -0
  68. package/dist/components/param-editor/param-editor-section.d.ts +16 -0
  69. package/dist/components/param-editor/param-editor.d.ts +2 -1
  70. package/dist/components/param-editor/param-editor.types.d.ts +101 -19
  71. package/dist/components/{breadcrumb.d.ts → primitives/breadcrumb.d.ts} +1 -1
  72. package/dist/components/{icon-color-picker.d.ts → primitives/icon-color-picker.d.ts} +2 -6
  73. package/dist/components/primitives/index.d.ts +28 -0
  74. package/dist/components/{number-input.d.ts → primitives/number-input.d.ts} +0 -2
  75. package/dist/components/{session-indicator.d.ts → primitives/session-indicator.d.ts} +2 -1
  76. package/dist/components/{tooltip.d.ts → primitives/tooltip.d.ts} +0 -1
  77. package/dist/components/rich-text/prompt-input/commands.d.ts +0 -17
  78. package/dist/components/rich-text/prompt-input/events.d.ts +0 -13
  79. package/dist/components/rich-text/prompt-input/plugins/CommentPlugin/nodes/CommentNode/CommentNode.d.ts +1 -2
  80. package/dist/components/rich-text/prompt-input/plugins/ReferencePlugin/nodes/ReferenceNode/ReferenceNode.d.ts +1 -2
  81. package/dist/components/rich-text/prompt-input/utils.d.ts +1 -2
  82. package/dist/components/rich-text/shared/plugins/MermaidPlugin/MermaidNode.d.ts +0 -1
  83. package/dist/components/rich-text/utils/inferResourceType.d.ts +1 -1
  84. package/dist/components/sidebar/sidebar.types.d.ts +1 -1
  85. package/dist/components/tab-strip/tab-visibility-filter.d.ts +5 -3
  86. package/dist/components/tag-editor/tag-editor-row.d.ts +1 -1
  87. package/dist/components/tag-editor/tag-editor.types.d.ts +1 -1
  88. package/dist/components/terminal/bind-session.d.ts +33 -0
  89. package/dist/components/terminal/index.d.ts +6 -0
  90. package/dist/components/terminal/scripted-bridge.d.ts +35 -0
  91. package/dist/components/terminal/terminal-contract.d.ts +22 -0
  92. package/dist/components/terminal/terminal-theme.d.ts +12 -0
  93. package/dist/components/terminal/terminal.d.ts +45 -0
  94. package/dist/components/terminal/types.d.ts +35 -0
  95. package/dist/components/terminal/use-terminal-session.d.ts +21 -0
  96. package/dist/components/tree-list/tree-list-order-filter.d.ts +1 -2
  97. package/dist/components/tree-list/tree-list-visibility-filter.d.ts +12 -4
  98. package/dist/components/tree-list/tree-list.d.ts +1 -1
  99. package/dist/components/tree-list/tree-list.types.d.ts +7 -2
  100. package/dist/data-renderer.js +1669 -0
  101. package/dist/data-renderer.js.map +1 -0
  102. package/dist/diff-editor-BnfV8cYB.js +182 -0
  103. package/dist/diff-editor-BnfV8cYB.js.map +1 -0
  104. package/dist/diff.js +1313 -0
  105. package/dist/diff.js.map +1 -0
  106. package/dist/empty-state-Bo4HVrgr.js +34 -0
  107. package/dist/empty-state-Bo4HVrgr.js.map +1 -0
  108. package/dist/foundations/gallery/gallery-frame.d.ts +21 -0
  109. package/dist/foundations/gallery/sections/badges-section.d.ts +1 -0
  110. package/dist/foundations/gallery/sections/buttons-section.d.ts +1 -0
  111. package/dist/foundations/gallery/sections/composite-chat-section.d.ts +1 -0
  112. package/dist/foundations/gallery/sections/composites-section.d.ts +1 -0
  113. package/dist/foundations/gallery/sections/feedback-section.d.ts +1 -0
  114. package/dist/foundations/gallery/sections/input-authoring-card.d.ts +1 -0
  115. package/dist/foundations/gallery/sections/inputs-section.d.ts +1 -0
  116. package/dist/foundations/gallery/sections/layout-section.d.ts +1 -0
  117. package/dist/foundations/gallery/sections/navigation-identity-section.d.ts +1 -0
  118. package/dist/foundations/gallery/sections/overlays-section.d.ts +1 -0
  119. package/dist/foundations/gallery/sections/panels-section.d.ts +1 -0
  120. package/dist/foundations/gallery/sections/param-editor-composite-card.d.ts +1 -0
  121. package/dist/foundations/gallery/sections/settings-composite-cards.d.ts +1 -0
  122. package/dist/index.d.ts +15 -84
  123. package/dist/index.js +3594 -7450
  124. package/dist/index.js.map +1 -1
  125. package/dist/list-row-mi3Hn-Um.js +740 -0
  126. package/dist/list-row-mi3Hn-Um.js.map +1 -0
  127. package/dist/mermaid-renderer-DZo3qj6D.js +425 -0
  128. package/dist/mermaid-renderer-DZo3qj6D.js.map +1 -0
  129. package/dist/mermaid.js +5 -0
  130. package/dist/mermaid.js.map +1 -0
  131. package/dist/radio-cLMEBBZk.js +76 -0
  132. package/dist/radio-cLMEBBZk.js.map +1 -0
  133. package/dist/resource-badge-qCWHP-wQ.js +99 -0
  134. package/dist/resource-badge-qCWHP-wQ.js.map +1 -0
  135. package/dist/{rich-message-BFtvH9H7.js → rich-message-DBf_5YlW.js} +462 -481
  136. package/dist/rich-message-DBf_5YlW.js.map +1 -0
  137. package/dist/rich-text.js +397 -390
  138. package/dist/rich-text.js.map +1 -1
  139. package/dist/scroll-area-BMbg1WcD.js +91 -0
  140. package/dist/scroll-area-BMbg1WcD.js.map +1 -0
  141. package/dist/style.css +1 -1
  142. package/dist/terminal.js +339 -0
  143. package/dist/terminal.js.map +1 -0
  144. package/dist/theme/global.d.ts +3 -0
  145. package/dist/theme/recipes/badge.d.ts +50 -0
  146. package/dist/theme/recipes/button.d.ts +24 -19
  147. package/dist/theme/recipes/color-picker.d.ts +1 -0
  148. package/dist/theme/recipes/dialog.d.ts +1 -1
  149. package/dist/theme/recipes/drawer.d.ts +1 -1
  150. package/dist/theme/recipes/input.d.ts +55 -0
  151. package/dist/theme/recipes/number-input.d.ts +98 -0
  152. package/dist/theme/recipes/tabs.d.ts +49 -28
  153. package/dist/theme/recipes/textarea.d.ts +62 -1
  154. package/dist/theme/recipes/timeline.d.ts +74 -0
  155. package/dist/theme/shadowless-default-config.d.ts +2 -0
  156. package/dist/theme/tokens/borders.d.ts +0 -3
  157. package/dist/theme/tokens/colors.d.ts +100 -70
  158. package/dist/{theme-C5qHTCU9.js → theme-CJBYBJaA.js} +1264 -415
  159. package/dist/theme-CJBYBJaA.js.map +1 -0
  160. package/dist/theme-preference-DOzHx64J.js +123 -0
  161. package/dist/theme-preference-DOzHx64J.js.map +1 -0
  162. package/dist/theme.js +1 -1
  163. package/dist/tree-list-CcuZMLS5.js +930 -0
  164. package/dist/tree-list-CcuZMLS5.js.map +1 -0
  165. package/dist/workspace-badge-Fuo-1zPj.js +314 -0
  166. package/dist/workspace-badge-Fuo-1zPj.js.map +1 -0
  167. package/package.json +23 -3
  168. package/dist/components/file-tree-helpers.d.ts +0 -8
  169. package/dist/components/open-source-notices-screen.d.ts +0 -20
  170. package/dist/components/param-editor/input-group.d.ts +0 -10
  171. package/dist/components/rich-text/shared/plugins/MermaidPlugin/index.d.ts +0 -1
  172. package/dist/components/rich-text/shared/plugins/TableActionMenuPlugin/TableActionMenuPlugin.d.ts +0 -5
  173. package/dist/components/rich-text/shared/plugins/TableCellResizerPlugin/TableCellResizerPlugin.d.ts +0 -2
  174. package/dist/components/rich-text/theme/report-theme.d.ts +0 -3
  175. package/dist/components/sidebar/sidebar-project-menu.d.ts +0 -7
  176. package/dist/components/style-guide-data.d.ts +0 -46
  177. package/dist/components/style-guide.d.ts +0 -1
  178. package/dist/mermaid-renderer-DYEiYmYQ.js +0 -411
  179. package/dist/mermaid-renderer-DYEiYmYQ.js.map +0 -1
  180. package/dist/radio-DJtQY9po.js +0 -286
  181. package/dist/radio-DJtQY9po.js.map +0 -1
  182. package/dist/resource-badge-D33IFv74.js +0 -188
  183. package/dist/resource-badge-D33IFv74.js.map +0 -1
  184. package/dist/rich-message-BFtvH9H7.js.map +0 -1
  185. package/dist/theme/tokens/shadows.d.ts +0 -64
  186. package/dist/theme-C5qHTCU9.js.map +0 -1
  187. package/dist/utils/formats.d.ts +0 -7
  188. /package/dist/components/{palette-filter.d.ts → command-palette/palette-filter.d.ts} +0 -0
  189. /package/dist/components/{palette-list.d.ts → command-palette/palette-list.d.ts} +0 -0
  190. /package/dist/components/{palette-shortcut.d.ts → command-palette/palette-shortcut.d.ts} +0 -0
  191. /package/dist/components/{palette.d.ts → command-palette/palette.d.ts} +0 -0
  192. /package/dist/components/{code-editor.d.ts → diff-viewer/code-editor.d.ts} +0 -0
  193. /package/dist/components/{column-file-browser.d.ts → file-browser/column-file-browser.d.ts} +0 -0
  194. /package/dist/components/{performance-panel.d.ts → internal/performance-panel.d.ts} +0 -0
  195. /package/dist/components/{header.d.ts → layout/header.d.ts} +0 -0
  196. /package/dist/components/{horizontal-menu-stack.d.ts → layout/horizontal-menu-stack.d.ts} +0 -0
  197. /package/dist/components/{item-section.d.ts → layout/item-section.d.ts} +0 -0
  198. /package/dist/components/{panel-header.constants.d.ts → layout/panel-header.constants.d.ts} +0 -0
  199. /package/dist/components/{resizable-split-layout.d.ts → layout/resizable-split-layout.d.ts} +0 -0
  200. /package/dist/components/{resizable-split-layout.handle.d.ts → layout/resizable-split-layout.handle.d.ts} +0 -0
  201. /package/dist/components/{attached-panel.d.ts → overlays/attached-panel.d.ts} +0 -0
  202. /package/dist/components/{bubble-panel.d.ts → overlays/bubble-panel.d.ts} +0 -0
  203. /package/dist/components/{delete-confirmation-modal.d.ts → overlays/delete-confirmation-modal.d.ts} +0 -0
  204. /package/dist/components/{repo-picker-dialog.d.ts → overlays/repo-picker-dialog.d.ts} +0 -0
  205. /package/dist/components/{resource-context-menu.d.ts → overlays/resource-context-menu.d.ts} +0 -0
  206. /package/dist/components/param-editor/{color-input.d.ts → inputs/color-input.d.ts} +0 -0
  207. /package/dist/components/param-editor/{date-input.d.ts → inputs/date-input.d.ts} +0 -0
  208. /package/dist/components/param-editor/{horizontal-text-input.d.ts → inputs/horizontal-text-input.d.ts} +0 -0
  209. /package/dist/components/param-editor/{number-input.d.ts → inputs/number-input.d.ts} +0 -0
  210. /package/dist/components/param-editor/{selection-input.d.ts → inputs/selection-input.d.ts} +0 -0
  211. /package/dist/components/param-editor/{text-input.d.ts → inputs/text-input.d.ts} +0 -0
  212. /package/dist/components/{alert.d.ts → primitives/alert.d.ts} +0 -0
  213. /package/dist/components/{checkbox.d.ts → primitives/checkbox.d.ts} +0 -0
  214. /package/dist/components/{content-placeholder.d.ts → primitives/content-placeholder.d.ts} +0 -0
  215. /package/dist/components/{empty-state.d.ts → primitives/empty-state.d.ts} +0 -0
  216. /package/dist/components/{error-boundary.d.ts → primitives/error-boundary.d.ts} +0 -0
  217. /package/dist/components/{info-card.d.ts → primitives/info-card.d.ts} +0 -0
  218. /package/dist/components/{integration-card.d.ts → primitives/integration-card.d.ts} +0 -0
  219. /package/dist/components/{radio.d.ts → primitives/radio.d.ts} +0 -0
  220. /package/dist/components/{resource-badge.d.ts → primitives/resource-badge.d.ts} +0 -0
  221. /package/dist/components/{scroll-area.d.ts → primitives/scroll-area.d.ts} +0 -0
  222. /package/dist/components/{simple-card.d.ts → primitives/simple-card.d.ts} +0 -0
  223. /package/dist/components/{slider.d.ts → primitives/slider.d.ts} +0 -0
  224. /package/dist/components/{switch.d.ts → primitives/switch.d.ts} +0 -0
  225. /package/dist/components/{toaster.d.ts → primitives/toaster.d.ts} +0 -0
  226. /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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"}