@theia/scm 1.71.0-next.8 → 1.71.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 (80) hide show
  1. package/lib/browser/dirty-diff/dirty-diff-widget.js +1 -1
  2. package/lib/browser/dirty-diff/dirty-diff-widget.js.map +1 -1
  3. package/lib/browser/merge-editor/merge-editor-module.d.ts +6 -0
  4. package/lib/browser/merge-editor/merge-editor-module.d.ts.map +1 -1
  5. package/lib/browser/merge-editor/merge-editor-module.js +21 -2
  6. package/lib/browser/merge-editor/merge-editor-module.js.map +1 -1
  7. package/lib/browser/scm-context-key-service.d.ts +8 -0
  8. package/lib/browser/scm-context-key-service.d.ts.map +1 -1
  9. package/lib/browser/scm-context-key-service.js +16 -0
  10. package/lib/browser/scm-context-key-service.js.map +1 -1
  11. package/lib/browser/scm-contribution.d.ts.map +1 -1
  12. package/lib/browser/scm-contribution.js +143 -1
  13. package/lib/browser/scm-contribution.js.map +1 -1
  14. package/lib/browser/scm-frontend-module.d.ts.map +1 -1
  15. package/lib/browser/scm-frontend-module.js +14 -0
  16. package/lib/browser/scm-frontend-module.js.map +1 -1
  17. package/lib/browser/scm-history-graph-helpers.d.ts +39 -0
  18. package/lib/browser/scm-history-graph-helpers.d.ts.map +1 -0
  19. package/lib/browser/scm-history-graph-helpers.js +167 -0
  20. package/lib/browser/scm-history-graph-helpers.js.map +1 -0
  21. package/lib/browser/scm-history-graph-lanes.d.ts +59 -0
  22. package/lib/browser/scm-history-graph-lanes.d.ts.map +1 -0
  23. package/lib/browser/scm-history-graph-lanes.js +183 -0
  24. package/lib/browser/scm-history-graph-lanes.js.map +1 -0
  25. package/lib/browser/scm-history-graph-lanes.spec.d.ts +2 -0
  26. package/lib/browser/scm-history-graph-lanes.spec.d.ts.map +1 -0
  27. package/lib/browser/scm-history-graph-lanes.spec.js +554 -0
  28. package/lib/browser/scm-history-graph-lanes.spec.js.map +1 -0
  29. package/lib/browser/scm-history-graph-model.d.ts +46 -0
  30. package/lib/browser/scm-history-graph-model.d.ts.map +1 -0
  31. package/lib/browser/scm-history-graph-model.js +184 -0
  32. package/lib/browser/scm-history-graph-model.js.map +1 -0
  33. package/lib/browser/scm-history-graph-model.spec.d.ts +2 -0
  34. package/lib/browser/scm-history-graph-model.spec.d.ts.map +1 -0
  35. package/lib/browser/scm-history-graph-model.spec.js +131 -0
  36. package/lib/browser/scm-history-graph-model.spec.js.map +1 -0
  37. package/lib/browser/scm-history-graph-tooltip.d.ts +14 -0
  38. package/lib/browser/scm-history-graph-tooltip.d.ts.map +1 -0
  39. package/lib/browser/scm-history-graph-tooltip.js +190 -0
  40. package/lib/browser/scm-history-graph-tooltip.js.map +1 -0
  41. package/lib/browser/scm-history-graph-widget.d.ts +77 -0
  42. package/lib/browser/scm-history-graph-widget.d.ts.map +1 -0
  43. package/lib/browser/scm-history-graph-widget.js +490 -0
  44. package/lib/browser/scm-history-graph-widget.js.map +1 -0
  45. package/lib/browser/scm-provider.d.ts +61 -0
  46. package/lib/browser/scm-provider.d.ts.map +1 -1
  47. package/lib/browser/scm-provider.js.map +1 -1
  48. package/lib/browser/scm-repositories-widget.d.ts +6 -1
  49. package/lib/browser/scm-repositories-widget.d.ts.map +1 -1
  50. package/lib/browser/scm-repositories-widget.js +11 -4
  51. package/lib/browser/scm-repositories-widget.js.map +1 -1
  52. package/lib/browser/scm-repositories-widget.spec.js +1 -1
  53. package/lib/browser/scm-repositories-widget.spec.js.map +1 -1
  54. package/lib/browser/scm-service.d.ts.map +1 -1
  55. package/lib/browser/scm-service.js +4 -1
  56. package/lib/browser/scm-service.js.map +1 -1
  57. package/lib/browser/scm-service.spec.d.ts +2 -0
  58. package/lib/browser/scm-service.spec.d.ts.map +1 -0
  59. package/lib/browser/scm-service.spec.js +77 -0
  60. package/lib/browser/scm-service.spec.js.map +1 -0
  61. package/package.json +11 -11
  62. package/src/browser/dirty-diff/dirty-diff-widget.ts +1 -1
  63. package/src/browser/merge-editor/merge-editor-module.ts +24 -6
  64. package/src/browser/scm-context-key-service.ts +24 -0
  65. package/src/browser/scm-contribution.ts +157 -0
  66. package/src/browser/scm-frontend-module.ts +15 -0
  67. package/src/browser/scm-history-graph-helpers.ts +175 -0
  68. package/src/browser/scm-history-graph-lanes.spec.ts +635 -0
  69. package/src/browser/scm-history-graph-lanes.ts +258 -0
  70. package/src/browser/scm-history-graph-model.spec.ts +171 -0
  71. package/src/browser/scm-history-graph-model.ts +207 -0
  72. package/src/browser/scm-history-graph-tooltip.ts +213 -0
  73. package/src/browser/scm-history-graph-widget.tsx +712 -0
  74. package/src/browser/scm-provider.ts +68 -0
  75. package/src/browser/scm-repositories-widget.spec.ts +1 -1
  76. package/src/browser/scm-repositories-widget.tsx +10 -3
  77. package/src/browser/scm-service.spec.ts +91 -0
  78. package/src/browser/scm-service.ts +4 -1
  79. package/src/browser/style/index.css +12 -13
  80. package/src/browser/style/scm-history-graph.css +313 -0
@@ -0,0 +1,77 @@
1
+ import * as React from '@theia/core/shared/react';
2
+ import { ReactWidget } from '@theia/core/lib/browser/widgets/react-widget';
3
+ import { LabelProvider } from '@theia/core/lib/browser/label-provider';
4
+ import { HoverService } from '@theia/core/lib/browser/hover-service';
5
+ import { MarkdownRenderer, MarkdownRendererFactory } from '@theia/core/lib/browser/markdown-rendering/markdown-renderer';
6
+ import { ScmHistoryGraphModel, HistoryGraphEntry } from './scm-history-graph-model';
7
+ import { ScmHistoryItemRef, ScmHistoryItemChange } from './scm-provider';
8
+ import { ScmService } from './scm-service';
9
+ import { GraphRow } from './scm-history-graph-lanes';
10
+ import { CancellationTokenSource } from '@theia/core/lib/common/cancellation';
11
+ import { MenuPath } from '@theia/core/lib/common/menu/menu-types';
12
+ import { ContextMenuRenderer } from '@theia/core/lib/browser/context-menu-renderer';
13
+ import { OpenerService } from '@theia/core/lib/browser/opener-service';
14
+ import { ScmContextKeyService } from './scm-context-key-service';
15
+ /** Menu path matching the VS Code 'scm/history/title' contribution point (graph section toolbar). */
16
+ export declare const SCM_HISTORY_TITLE_MENU: MenuPath;
17
+ /** Menu path matching the VS Code 'scm/historyItem/context' contribution point (commit row context menu). */
18
+ export declare const SCM_HISTORY_ITEM_CONTEXT_MENU: MenuPath;
19
+ /** Menu path matching the VS Code 'scm/historyItemRef/context' contribution point (ref badge context menu). */
20
+ export declare const SCM_HISTORY_ITEM_REF_CONTEXT_MENU: MenuPath;
21
+ export declare class ScmHistoryGraphWidget extends ReactWidget {
22
+ static readonly ID = "scm-history-graph-widget";
23
+ static readonly LABEL: string;
24
+ protected readonly model: ScmHistoryGraphModel;
25
+ protected readonly hoverService: HoverService;
26
+ protected readonly markdownRendererFactory: MarkdownRendererFactory;
27
+ protected readonly scmService: ScmService;
28
+ protected readonly labelProvider: LabelProvider;
29
+ protected readonly contextMenuRenderer: ContextMenuRenderer;
30
+ protected readonly openerService: OpenerService;
31
+ protected readonly scmContextKeys: ScmContextKeyService;
32
+ protected selectedIndex: number;
33
+ /** Currently selected change row key (`${itemId}-${ci}`), or undefined. */
34
+ protected selectedChangeKey: string | undefined;
35
+ /** Map from commit id → loaded changes (undefined = not loaded yet). */
36
+ protected expandedChanges: Map<string, ScmHistoryItemChange[] | "loading">;
37
+ /** Set of commit ids that are currently expanded. */
38
+ protected expandedIds: Set<string>;
39
+ /** Map from commit id → in-flight CancellationTokenSource for loadChanges. */
40
+ protected loadChangesCts: Map<string, CancellationTokenSource>;
41
+ constructor();
42
+ protected init(): void;
43
+ protected updateContextKeys(): void;
44
+ protected render(): React.ReactNode;
45
+ protected handleEndReached: () => void;
46
+ protected renderRow(entry: HistoryGraphEntry, idx: number, svgWidth: number): React.ReactElement;
47
+ protected _markdownRenderer: MarkdownRenderer | undefined;
48
+ protected get markdownRenderer(): MarkdownRenderer;
49
+ protected handleRowMouseEnter: (e: React.MouseEvent<HTMLDivElement>, entry: HistoryGraphEntry) => void;
50
+ protected renderChangesRows(itemId: string, svgWidth: number, graphRow: GraphRow, changes: ScmHistoryItemChange[] | 'loading' | undefined): React.ReactElement;
51
+ protected renderChangeRow(change: ScmHistoryItemChange, ci: number, itemId: string, svgWidth: number, graphRow: GraphRow): React.ReactElement;
52
+ protected handleChangeClick: (e: React.MouseEvent, change: ScmHistoryItemChange, changeKey: string) => void;
53
+ protected openChange(change: ScmHistoryItemChange): void;
54
+ protected renderChangeRowSvg(graphRow: GraphRow, svgWidth: number): React.ReactElement;
55
+ /**
56
+ * Renders the SVG graph column for a commit row, matching VS Code's SVG structure:
57
+ *
58
+ * - Each lane is 22px wide; circle cx = lane * 22 + 11, cy = 11
59
+ * - Pass-through lanes: full vertical line M x 0 V 22
60
+ * - Commit lane: top segment (M commitX 0 V 11) + bottom segment (M commitX 11 V 22)
61
+ * - HEAD/current commit (first entry): r=7 with inner dot, NO top segment
62
+ * - Normal commit: r=5
63
+ * - Branch-out edge: diagonal S-curve bezier from commit position (commitX, cy)
64
+ * sweeping down to the new lane at the bottom: M commitX cy C commitX 22 newX cy newX 22
65
+ * - Merge-in edge: bezier from the source lane at the top curving into
66
+ * the commit position: M srcX 0 C srcX cy commitX cy commitX cy
67
+ */
68
+ protected renderGraphSvg(row: GraphRow, svgWidth: number, isHead: boolean): React.ReactElement;
69
+ protected renderRefBadges(refs?: readonly ScmHistoryItemRef[], entry?: HistoryGraphEntry): React.ReactNode;
70
+ protected handleRowContextMenu: (e: React.MouseEvent, entry: HistoryGraphEntry) => void;
71
+ protected handleRefBadgeContextMenu: (e: React.MouseEvent, entry: HistoryGraphEntry, ref: ScmHistoryItemRef) => void;
72
+ protected handleRowClick: (idx: number, entry: HistoryGraphEntry) => void;
73
+ protected loadChanges(entry: HistoryGraphEntry): Promise<void>;
74
+ protected handleLoadMore: () => void;
75
+ protected handleLoadMoreKey: (e: React.KeyboardEvent) => void;
76
+ }
77
+ //# sourceMappingURL=scm-history-graph-widget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scm-history-graph-widget.d.ts","sourceRoot":"","sources":["../../src/browser/scm-history-graph-widget.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,490 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2026 EclipseSource GmbH and others.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ var ScmHistoryGraphWidget_1;
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.ScmHistoryGraphWidget = exports.SCM_HISTORY_ITEM_REF_CONTEXT_MENU = exports.SCM_HISTORY_ITEM_CONTEXT_MENU = exports.SCM_HISTORY_TITLE_MENU = void 0;
20
+ const tslib_1 = require("tslib");
21
+ const React = require("@theia/core/shared/react");
22
+ const react_virtuoso_1 = require("@theia/core/shared/react-virtuoso");
23
+ const inversify_1 = require("@theia/core/shared/inversify");
24
+ const react_widget_1 = require("@theia/core/lib/browser/widgets/react-widget");
25
+ const label_provider_1 = require("@theia/core/lib/browser/label-provider");
26
+ const hover_service_1 = require("@theia/core/lib/browser/hover-service");
27
+ const markdown_renderer_1 = require("@theia/core/lib/browser/markdown-rendering/markdown-renderer");
28
+ const scm_history_graph_model_1 = require("./scm-history-graph-model");
29
+ const scm_service_1 = require("./scm-service");
30
+ const uri_1 = require("@theia/core/lib/common/uri");
31
+ const nls_1 = require("@theia/core/lib/common/nls");
32
+ const cancellation_1 = require("@theia/core/lib/common/cancellation");
33
+ const context_menu_renderer_1 = require("@theia/core/lib/browser/context-menu-renderer");
34
+ const opener_service_1 = require("@theia/core/lib/browser/opener-service");
35
+ const diff_uris_1 = require("@theia/core/lib/browser/diff-uris");
36
+ const scm_context_key_service_1 = require("./scm-context-key-service");
37
+ const scm_history_graph_helpers_1 = require("./scm-history-graph-helpers");
38
+ const scm_history_graph_tooltip_1 = require("./scm-history-graph-tooltip");
39
+ /** Menu path matching the VS Code 'scm/history/title' contribution point (graph section toolbar). */
40
+ exports.SCM_HISTORY_TITLE_MENU = ['plugin_scm/history/title'];
41
+ /** Menu path matching the VS Code 'scm/historyItem/context' contribution point (commit row context menu). */
42
+ exports.SCM_HISTORY_ITEM_CONTEXT_MENU = ['plugin_scm/historyItem/context'];
43
+ /** Menu path matching the VS Code 'scm/historyItemRef/context' contribution point (ref badge context menu). */
44
+ exports.SCM_HISTORY_ITEM_REF_CONTEXT_MENU = ['plugin_scm/historyItemRef/context'];
45
+ // ── Layout constants ────────────────────────────────────────────────────────
46
+ const ROW_HEIGHT = 22;
47
+ /** Horizontal width of each lane column in the SVG — matches VS Code exactly. */
48
+ const LANE_WIDTH = 22;
49
+ /** Y position of the commit dot — vertically centered in the row. */
50
+ const DOT_CY = 11;
51
+ /** Renders a ref badge as a JSX element for the commit row. */
52
+ function renderJsxRefBadge(ref, iconClass, showText, style, key, onContextMenu) {
53
+ return (React.createElement("span", { key: key, className: `scm-history-ref-badge ${(0, scm_history_graph_helpers_1.getRefBadgeClass)(ref)}`, title: ref.description ?? ref.name, style: style, onContextMenu: onContextMenu },
54
+ React.createElement("i", { className: `codicon ${iconClass} scm-history-ref-icon` }),
55
+ showText && React.createElement("span", { className: 'scm-history-ref-text' }, ref.name)));
56
+ }
57
+ // ── Widget ──────────────────────────────────────────────────────────────────
58
+ let ScmHistoryGraphWidget = class ScmHistoryGraphWidget extends react_widget_1.ReactWidget {
59
+ static { ScmHistoryGraphWidget_1 = this; }
60
+ static { this.ID = 'scm-history-graph-widget'; }
61
+ static { this.LABEL = nls_1.nls.localizeByDefault('Graph'); }
62
+ constructor() {
63
+ super();
64
+ this.selectedIndex = -1;
65
+ /** Map from commit id → loaded changes (undefined = not loaded yet). */
66
+ this.expandedChanges = new Map();
67
+ /** Set of commit ids that are currently expanded. */
68
+ this.expandedIds = new Set();
69
+ /** Map from commit id → in-flight CancellationTokenSource for loadChanges. */
70
+ this.loadChangesCts = new Map();
71
+ this.handleEndReached = () => {
72
+ if (this.model.hasMore && !this.model.loading) {
73
+ this.model.loadMore();
74
+ }
75
+ };
76
+ this.handleRowMouseEnter = (e, entry) => {
77
+ this.hoverService.requestHover({
78
+ content: (0, scm_history_graph_tooltip_1.buildHtmlTooltip)(entry, this.markdownRenderer),
79
+ target: e.currentTarget,
80
+ position: 'right',
81
+ interactive: true,
82
+ });
83
+ };
84
+ this.handleChangeClick = (e, change, changeKey) => {
85
+ e.stopPropagation();
86
+ this.selectedChangeKey = changeKey;
87
+ this.update();
88
+ this.openChange(change);
89
+ };
90
+ this.handleRowContextMenu = (e, entry) => {
91
+ e.preventDefault();
92
+ e.stopPropagation();
93
+ const repo = this.scmService.selectedRepository;
94
+ if (!repo) {
95
+ return;
96
+ }
97
+ const { item } = entry;
98
+ if (item.references && item.references.length > 0) {
99
+ this.scmContextKeys.scmHistoryItemRef.set(item.references[0].id);
100
+ }
101
+ else {
102
+ this.scmContextKeys.scmHistoryItemRef.set(undefined);
103
+ }
104
+ const sourceControlHandle = repo.provider.handle;
105
+ const args = sourceControlHandle !== undefined
106
+ ? [{ sourceControlHandle }, { sourceControlHandle, id: item.id, type: 'historyItem' }]
107
+ : [];
108
+ this.contextMenuRenderer.render({
109
+ menuPath: exports.SCM_HISTORY_ITEM_CONTEXT_MENU,
110
+ anchor: e.nativeEvent,
111
+ args,
112
+ context: this.node
113
+ });
114
+ };
115
+ this.handleRefBadgeContextMenu = (e, entry, ref) => {
116
+ e.preventDefault();
117
+ e.stopPropagation();
118
+ const repo = this.scmService.selectedRepository;
119
+ if (!repo) {
120
+ return;
121
+ }
122
+ this.scmContextKeys.scmHistoryItemRef.set(ref.id);
123
+ const sourceControlHandle = repo.provider.handle;
124
+ const args = sourceControlHandle !== undefined
125
+ ? [{ sourceControlHandle }, { sourceControlHandle, id: ref.id, type: 'historyItemRef' }]
126
+ : [];
127
+ this.contextMenuRenderer.render({
128
+ menuPath: exports.SCM_HISTORY_ITEM_REF_CONTEXT_MENU,
129
+ anchor: e.nativeEvent,
130
+ args,
131
+ context: this.node
132
+ });
133
+ };
134
+ this.handleRowClick = (idx, entry) => {
135
+ this.selectedIndex = idx;
136
+ const { item } = entry;
137
+ if (this.expandedIds.has(item.id)) {
138
+ this.expandedIds.delete(item.id);
139
+ const cts = this.loadChangesCts.get(item.id);
140
+ if (cts) {
141
+ cts.cancel();
142
+ cts.dispose();
143
+ this.loadChangesCts.delete(item.id);
144
+ }
145
+ }
146
+ else {
147
+ this.expandedIds.add(item.id);
148
+ if (!this.expandedChanges.has(item.id)) {
149
+ this.loadChanges(entry);
150
+ }
151
+ }
152
+ this.update();
153
+ };
154
+ this.handleLoadMore = () => {
155
+ this.model.loadMore();
156
+ };
157
+ this.handleLoadMoreKey = (e) => {
158
+ if (e.key === 'Enter' || e.key === ' ') {
159
+ this.model.loadMore();
160
+ }
161
+ };
162
+ this.id = ScmHistoryGraphWidget_1.ID;
163
+ this.title.label = ScmHistoryGraphWidget_1.LABEL;
164
+ this.title.caption = ScmHistoryGraphWidget_1.LABEL;
165
+ this.title.closable = false;
166
+ this.addClass('scm-history-graph-container');
167
+ this.node.tabIndex = 0;
168
+ }
169
+ init() {
170
+ this.toDispose.push(this.model.onDidChange(() => {
171
+ this.updateContextKeys();
172
+ this.update();
173
+ }));
174
+ this.toDispose.push({
175
+ dispose: () => {
176
+ for (const cts of this.loadChangesCts.values()) {
177
+ cts.cancel();
178
+ cts.dispose();
179
+ }
180
+ this.loadChangesCts.clear();
181
+ }
182
+ });
183
+ this.update();
184
+ }
185
+ updateContextKeys() {
186
+ const provider = this.model.provider;
187
+ this.scmContextKeys.scmCurrentHistoryItemRefHasRemote.set(!!provider?.currentHistoryItemRemoteRef);
188
+ this.scmContextKeys.scmCurrentHistoryItemRefHasBase.set(!!provider?.currentHistoryItemBaseRef);
189
+ }
190
+ render() {
191
+ const { entries, hasMore, loading } = this.model;
192
+ // Only show the empty state once the model has completed at least one load attempt.
193
+ // While the model is still initializing (provider not yet set, no load attempted),
194
+ // render a loading indicator to avoid a flash of "no history" on startup.
195
+ if (!loading && entries.length === 0) {
196
+ if (!this.model.hasAttemptedLoad) {
197
+ return (React.createElement("div", { className: 'scm-history-loading' }, nls_1.nls.localizeByDefault('Loading')));
198
+ }
199
+ return (React.createElement("div", { className: 'scm-history-empty' }, nls_1.nls.localize('theia/scm/noHistory', 'No source control history available.')));
200
+ }
201
+ // Determine how many lanes are active for SVG width
202
+ const maxLane = entries.reduce((max, e) => {
203
+ const rowMax = Math.max(e.graphRow.lane, ...e.graphRow.edges.map(ed => Math.max(ed.fromLane, ed.toLane)));
204
+ return Math.max(max, rowMax);
205
+ }, 0);
206
+ const svgWidth = (maxLane + 1) * LANE_WIDTH;
207
+ const footer = loading
208
+ ? () => React.createElement("div", { className: 'scm-history-loading' }, nls_1.nls.localizeByDefault('Loading'))
209
+ : hasMore
210
+ ? () => (React.createElement("div", { className: 'scm-history-load-more', onClick: this.handleLoadMore, role: 'button', tabIndex: 0, onKeyDown: this.handleLoadMoreKey }, nls_1.nls.localizeByDefault('Load more')))
211
+ : undefined;
212
+ return (React.createElement(react_virtuoso_1.Virtuoso, { className: 'scm-history-graph-list', data: entries, itemContent: (idx, entry) => this.renderRow(entry, idx, svgWidth), endReached: hasMore && !loading ? this.handleEndReached : undefined, overscan: 500, components: footer ? { Footer: footer } : {}, style: { overflowX: 'hidden' } }));
213
+ }
214
+ renderRow(entry, idx, svgWidth) {
215
+ const { item, graphRow } = entry;
216
+ const isSelected = idx === this.selectedIndex;
217
+ const isExpanded = this.expandedIds.has(item.id);
218
+ const changes = this.expandedChanges.get(item.id);
219
+ // The first commit (idx === 0) on lane 0 is treated as HEAD/current
220
+ const isHead = idx === 0 && graphRow.lane === 0;
221
+ return (React.createElement(React.Fragment, { key: item.id },
222
+ React.createElement("div", { className: `scm-history-graph-row${isSelected ? ' selected' : ''}`, onClick: () => this.handleRowClick(idx, entry), onContextMenu: e => this.handleRowContextMenu(e, entry), onMouseEnter: e => this.handleRowMouseEnter(e, entry) },
223
+ this.renderGraphSvg(graphRow, svgWidth, isHead),
224
+ React.createElement("div", { className: 'scm-history-graph-info' },
225
+ React.createElement("span", { className: 'scm-history-subject' }, item.subject),
226
+ item.author && (React.createElement("span", { className: 'scm-history-author' }, item.author)),
227
+ item.references && item.references.length > 0 && (React.createElement("span", { className: 'scm-history-badges scm-history-badges-right' }, this.renderRefBadges(item.references, entry))))),
228
+ isExpanded && this.renderChangesRows(item.id, svgWidth, graphRow, changes)));
229
+ }
230
+ get markdownRenderer() {
231
+ this._markdownRenderer ||= this.markdownRendererFactory();
232
+ return this._markdownRenderer;
233
+ }
234
+ renderChangesRows(itemId, svgWidth, graphRow, changes) {
235
+ if (changes === 'loading' || changes === undefined) {
236
+ return (React.createElement("div", { key: `${itemId}-loading`, className: 'scm-history-changes-loading' }, nls_1.nls.localizeByDefault('Loading')));
237
+ }
238
+ if (changes.length === 0) {
239
+ return (React.createElement("div", { key: `${itemId}-empty`, className: 'scm-history-changes-empty' }, nls_1.nls.localize('theia/scm/noChanges', 'No changed files.')));
240
+ }
241
+ return (React.createElement(React.Fragment, { key: `${itemId}-changes` }, changes.map((change, ci) => this.renderChangeRow(change, ci, itemId, svgWidth, graphRow))));
242
+ }
243
+ renderChangeRow(change, ci, itemId, svgWidth, graphRow) {
244
+ const rootUri = this.scmService.selectedRepository?.provider.rootUri;
245
+ const uri = change.modifiedUri ?? change.originalUri ?? change.uri;
246
+ const relativePath = (0, scm_history_graph_helpers_1.getRepoRelativePath)(uri, rootUri);
247
+ const fileName = (0, scm_history_graph_helpers_1.getFileName)(relativePath);
248
+ const dirPath = relativePath.includes('/')
249
+ ? relativePath.slice(0, relativePath.lastIndexOf('/'))
250
+ : '';
251
+ const status = (0, scm_history_graph_helpers_1.getChangeStatus)(change);
252
+ const statusClass = status === 'A' ? 'added' : status === 'D' ? 'deleted' : status === 'R' ? 'renamed' : 'modified';
253
+ const resourceUri = new uri_1.default(uri);
254
+ const fileIcon = this.labelProvider.getIcon(resourceUri);
255
+ const changeKey = `${itemId}-change-${ci}`;
256
+ const isSelected = this.selectedChangeKey === changeKey;
257
+ return (React.createElement("div", { key: changeKey, className: `scm-history-change-row${isSelected ? ' selected' : ''}`, onClick: e => this.handleChangeClick(e, change, changeKey), role: 'treeitem', tabIndex: -1 },
258
+ this.renderChangeRowSvg(graphRow, svgWidth),
259
+ React.createElement("div", { className: 'scm-history-change-info' },
260
+ React.createElement("span", { className: `${fileIcon} file-icon scm-history-change-file-icon` }),
261
+ React.createElement("div", { className: 'scm-history-change-name-container' },
262
+ React.createElement("span", { className: 'name scm-history-change-name', title: relativePath }, fileName),
263
+ dirPath && React.createElement("span", { className: 'path scm-history-change-dir' }, dirPath)),
264
+ React.createElement("span", { className: `scm-history-change-status ${statusClass}` }, status))));
265
+ }
266
+ openChange(change) {
267
+ try {
268
+ if (change.originalUri && change.modifiedUri) {
269
+ const originalUri = new uri_1.default(change.originalUri);
270
+ const modifiedUri = new uri_1.default(change.modifiedUri);
271
+ const label = (0, scm_history_graph_helpers_1.getFileName)((0, scm_history_graph_helpers_1.getFilePath)(change.modifiedUri));
272
+ (0, opener_service_1.open)(this.openerService, diff_uris_1.DiffUris.encode(originalUri, modifiedUri, label));
273
+ }
274
+ else if (change.modifiedUri) {
275
+ (0, opener_service_1.open)(this.openerService, new uri_1.default(change.modifiedUri));
276
+ }
277
+ else if (change.originalUri) {
278
+ (0, opener_service_1.open)(this.openerService, new uri_1.default(change.originalUri));
279
+ }
280
+ else {
281
+ (0, opener_service_1.open)(this.openerService, new uri_1.default(change.uri));
282
+ }
283
+ }
284
+ catch (err) {
285
+ console.error('ScmHistoryGraphWidget: failed to open change', err);
286
+ }
287
+ }
288
+ renderChangeRowSvg(graphRow, svgWidth) {
289
+ const commitX = graphRow.lane * LANE_WIDTH + 11;
290
+ const commitColor = (0, scm_history_graph_helpers_1.laneColor)(graphRow.color);
291
+ const elements = [];
292
+ let keyIdx = 0;
293
+ for (const edge of graphRow.edges) {
294
+ if (edge.type !== 'pass-through') {
295
+ continue;
296
+ }
297
+ const x = edge.fromLane * LANE_WIDTH + 11;
298
+ const color = (0, scm_history_graph_helpers_1.laneColor)(edge.color);
299
+ elements.push(React.createElement("path", { key: `pass-${keyIdx++}`, fill: 'none', strokeWidth: '1px', strokeLinecap: 'round', d: `M ${x} 0 V 22`, style: { stroke: color } }));
300
+ }
301
+ if (graphRow.hasContinuation) {
302
+ elements.push(React.createElement("path", { key: `commit-${keyIdx++}`, fill: 'none', strokeWidth: '1px', strokeLinecap: 'round', d: `M ${commitX} 0 V 22`, style: { stroke: commitColor } }));
303
+ }
304
+ return (React.createElement("svg", { className: 'scm-history-graph-svg', style: { height: `${ROW_HEIGHT}px`, width: `${svgWidth}px` } }, elements));
305
+ }
306
+ /**
307
+ * Renders the SVG graph column for a commit row, matching VS Code's SVG structure:
308
+ *
309
+ * - Each lane is 22px wide; circle cx = lane * 22 + 11, cy = 11
310
+ * - Pass-through lanes: full vertical line M x 0 V 22
311
+ * - Commit lane: top segment (M commitX 0 V 11) + bottom segment (M commitX 11 V 22)
312
+ * - HEAD/current commit (first entry): r=7 with inner dot, NO top segment
313
+ * - Normal commit: r=5
314
+ * - Branch-out edge: diagonal S-curve bezier from commit position (commitX, cy)
315
+ * sweeping down to the new lane at the bottom: M commitX cy C commitX 22 newX cy newX 22
316
+ * - Merge-in edge: bezier from the source lane at the top curving into
317
+ * the commit position: M srcX 0 C srcX cy commitX cy commitX cy
318
+ */
319
+ renderGraphSvg(row, svgWidth, isHead) {
320
+ const commitX = row.lane * LANE_WIDTH + 11;
321
+ const cy = DOT_CY;
322
+ const commitColor = (0, scm_history_graph_helpers_1.laneColor)(row.color);
323
+ const elements = [];
324
+ let keyIdx = 0;
325
+ // Pass-through lines: straight vertical line through the full row height
326
+ for (const edge of row.edges) {
327
+ if (edge.type !== 'pass-through') {
328
+ continue;
329
+ }
330
+ const x = edge.fromLane * LANE_WIDTH + 11;
331
+ const color = (0, scm_history_graph_helpers_1.laneColor)(edge.color);
332
+ elements.push(React.createElement("path", { key: `pass-${keyIdx++}`, fill: 'none', strokeWidth: '1px', strokeLinecap: 'round', d: `M ${x} 0 V 22`, style: { stroke: color } }));
333
+ }
334
+ // Merge-in edges: source lane at top curves into the commit position (mid-row)
335
+ for (const edge of row.edges) {
336
+ if (edge.type !== 'merge-in') {
337
+ continue;
338
+ }
339
+ const srcX = edge.fromLane * LANE_WIDTH + 11;
340
+ const color = (0, scm_history_graph_helpers_1.laneColor)(edge.color);
341
+ // Cubic bezier: start at (srcX, 0), control points pull both ends to mid-row,
342
+ // end at commit position (commitX, cy)
343
+ const d = `M ${srcX} 0 C ${srcX} ${cy}, ${commitX} ${cy}, ${commitX} ${cy}`;
344
+ elements.push(React.createElement("path", { key: `merge-${keyIdx++}`, fill: 'none', strokeWidth: '1px', strokeLinecap: 'round', d: d, style: { stroke: color } }));
345
+ }
346
+ // Commit lane lines — split at cy=11
347
+ // Top segment: only drawn if there is an incoming line from above
348
+ // (i.e. this commit was referenced as a parent by an earlier row)
349
+ if (row.hasTopLine) {
350
+ elements.push(React.createElement("path", { key: `top-${keyIdx++}`, fill: 'none', strokeWidth: '1px', strokeLinecap: 'round', d: `M ${commitX} 0 V ${cy}`, style: { stroke: commitColor } }));
351
+ }
352
+ // Bottom segment: only drawn if the lane continues to a parent below
353
+ if (row.hasContinuation) {
354
+ elements.push(React.createElement("path", { key: `bottom-${keyIdx++}`, fill: 'none', strokeWidth: '1px', strokeLinecap: 'round', d: `M ${commitX} ${cy} V 22`, style: { stroke: commitColor } }));
355
+ }
356
+ // Branch-out edges: commit position (mid-row) curves down to a new lane at bottom
357
+ for (const edge of row.edges) {
358
+ if (edge.type !== 'branch-out') {
359
+ continue;
360
+ }
361
+ const dstX = edge.toLane * LANE_WIDTH + 11;
362
+ const color = (0, scm_history_graph_helpers_1.laneColor)(edge.color);
363
+ // Diagonal S-curve bezier: CP1 keeps x at srcX while y goes to bottom;
364
+ // CP2 keeps y at cy while x reaches dstX — produces a smooth sweep
365
+ // down-and-right (or left) from the commit circle to the target lane.
366
+ const srcX = edge.fromLane * LANE_WIDTH + 11;
367
+ const d = `M ${srcX} ${cy} C ${srcX} 22, ${dstX} ${cy}, ${dstX} 22`;
368
+ elements.push(React.createElement("path", { key: `branch-${keyIdx++}`, fill: 'none', strokeWidth: '1px', strokeLinecap: 'round', d: d, style: { stroke: color } }));
369
+ }
370
+ // Commit circle — drawn last so it renders on top of all lines
371
+ if (isHead) {
372
+ elements.push(React.createElement("circle", { key: `circle-${keyIdx++}`, cx: commitX, cy: cy, r: 7, style: { strokeWidth: '2px', fill: commitColor } }));
373
+ elements.push(React.createElement("circle", { key: `inner-${keyIdx++}`, cx: commitX, cy: cy, r: 2, style: { strokeWidth: '4px', fill: 'var(--theia-editor-background)', stroke: 'var(--theia-editor-background)' } }));
374
+ }
375
+ else {
376
+ elements.push(React.createElement("circle", { key: `circle-${keyIdx++}`, cx: commitX, cy: cy, r: 5, style: { strokeWidth: '2px', fill: commitColor } }));
377
+ }
378
+ return (React.createElement("svg", { className: 'scm-history-graph-svg', style: { height: `${ROW_HEIGHT}px`, width: `${svgWidth}px` } }, elements));
379
+ }
380
+ renderRefBadges(refs, entry) {
381
+ if (!refs || refs.length === 0) {
382
+ return undefined;
383
+ }
384
+ const laneColorValue = entry ? (0, scm_history_graph_helpers_1.laneColor)(entry.graphRow.color) : undefined;
385
+ const deduplicated = (0, scm_history_graph_helpers_1.deduplicateRefs)(refs);
386
+ const style = laneColorValue
387
+ ? { backgroundColor: laneColorValue, color: 'var(--theia-scmGraph-historyItemRefForeground, var(--theia-badge-foreground))' }
388
+ : {};
389
+ const badges = [];
390
+ for (const info of deduplicated) {
391
+ if (badges.length >= 3) {
392
+ break;
393
+ }
394
+ const { ref, hasBoth } = info;
395
+ const isTag = (0, scm_history_graph_helpers_1.isTagRef)(ref);
396
+ const isRemote = (0, scm_history_graph_helpers_1.isRemoteRef)(ref);
397
+ const onContextMenu = entry ? (e) => this.handleRefBadgeContextMenu(e, entry, ref) : undefined;
398
+ if (isTag) {
399
+ badges.push(renderJsxRefBadge(ref, 'codicon-tag', false, style, ref.id, onContextMenu));
400
+ }
401
+ else if (isRemote) {
402
+ badges.push(renderJsxRefBadge(ref, 'codicon-cloud', true, style, ref.id, onContextMenu));
403
+ }
404
+ else {
405
+ badges.push(renderJsxRefBadge(ref, 'codicon-git-branch', true, style, ref.id, onContextMenu));
406
+ if (hasBoth && badges.length < 3) {
407
+ badges.push(React.createElement("span", { key: `${ref.id}-cloud`, className: 'scm-history-ref-badge scm-history-ref-badge-cloud', title: ref.description ?? ref.name, style: style },
408
+ React.createElement("i", { className: 'codicon codicon-cloud scm-history-ref-icon' })));
409
+ }
410
+ }
411
+ }
412
+ return badges;
413
+ }
414
+ async loadChanges(entry) {
415
+ const { item } = entry;
416
+ const provider = this.model.provider;
417
+ if (!provider) {
418
+ this.expandedChanges.set(item.id, []);
419
+ this.update();
420
+ return;
421
+ }
422
+ this.expandedChanges.set(item.id, 'loading');
423
+ this.update();
424
+ const cts = new cancellation_1.CancellationTokenSource();
425
+ this.loadChangesCts.set(item.id, cts);
426
+ this.toDispose.push(cts);
427
+ try {
428
+ const parentId = item.parentIds?.[0];
429
+ const changes = await provider.provideHistoryItemChanges(item.id, parentId, cts.token);
430
+ if (!cts.token.isCancellationRequested) {
431
+ this.expandedChanges.set(item.id, changes ?? []);
432
+ this.update();
433
+ }
434
+ }
435
+ catch (err) {
436
+ if (!cts.token.isCancellationRequested) {
437
+ console.error('ScmHistoryGraphWidget: failed to load changes', err);
438
+ this.expandedChanges.set(item.id, []);
439
+ this.update();
440
+ }
441
+ }
442
+ finally {
443
+ this.loadChangesCts.delete(item.id);
444
+ }
445
+ }
446
+ };
447
+ exports.ScmHistoryGraphWidget = ScmHistoryGraphWidget;
448
+ tslib_1.__decorate([
449
+ (0, inversify_1.inject)(scm_history_graph_model_1.ScmHistoryGraphModel),
450
+ tslib_1.__metadata("design:type", scm_history_graph_model_1.ScmHistoryGraphModel)
451
+ ], ScmHistoryGraphWidget.prototype, "model", void 0);
452
+ tslib_1.__decorate([
453
+ (0, inversify_1.inject)(hover_service_1.HoverService),
454
+ tslib_1.__metadata("design:type", hover_service_1.HoverService)
455
+ ], ScmHistoryGraphWidget.prototype, "hoverService", void 0);
456
+ tslib_1.__decorate([
457
+ (0, inversify_1.inject)(markdown_renderer_1.MarkdownRendererFactory),
458
+ tslib_1.__metadata("design:type", Function)
459
+ ], ScmHistoryGraphWidget.prototype, "markdownRendererFactory", void 0);
460
+ tslib_1.__decorate([
461
+ (0, inversify_1.inject)(scm_service_1.ScmService),
462
+ tslib_1.__metadata("design:type", scm_service_1.ScmService)
463
+ ], ScmHistoryGraphWidget.prototype, "scmService", void 0);
464
+ tslib_1.__decorate([
465
+ (0, inversify_1.inject)(label_provider_1.LabelProvider),
466
+ tslib_1.__metadata("design:type", label_provider_1.LabelProvider)
467
+ ], ScmHistoryGraphWidget.prototype, "labelProvider", void 0);
468
+ tslib_1.__decorate([
469
+ (0, inversify_1.inject)(context_menu_renderer_1.ContextMenuRenderer),
470
+ tslib_1.__metadata("design:type", context_menu_renderer_1.ContextMenuRenderer)
471
+ ], ScmHistoryGraphWidget.prototype, "contextMenuRenderer", void 0);
472
+ tslib_1.__decorate([
473
+ (0, inversify_1.inject)(opener_service_1.OpenerService),
474
+ tslib_1.__metadata("design:type", Object)
475
+ ], ScmHistoryGraphWidget.prototype, "openerService", void 0);
476
+ tslib_1.__decorate([
477
+ (0, inversify_1.inject)(scm_context_key_service_1.ScmContextKeyService),
478
+ tslib_1.__metadata("design:type", scm_context_key_service_1.ScmContextKeyService)
479
+ ], ScmHistoryGraphWidget.prototype, "scmContextKeys", void 0);
480
+ tslib_1.__decorate([
481
+ (0, inversify_1.postConstruct)(),
482
+ tslib_1.__metadata("design:type", Function),
483
+ tslib_1.__metadata("design:paramtypes", []),
484
+ tslib_1.__metadata("design:returntype", void 0)
485
+ ], ScmHistoryGraphWidget.prototype, "init", null);
486
+ exports.ScmHistoryGraphWidget = ScmHistoryGraphWidget = ScmHistoryGraphWidget_1 = tslib_1.__decorate([
487
+ (0, inversify_1.injectable)(),
488
+ tslib_1.__metadata("design:paramtypes", [])
489
+ ], ScmHistoryGraphWidget);
490
+ //# sourceMappingURL=scm-history-graph-widget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scm-history-graph-widget.js","sourceRoot":"","sources":["../../src/browser/scm-history-graph-widget.tsx"],"names":[],"mappings":"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"}