@theia/scm 1.75.0-next.4 → 1.75.0-next.42

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 (83) hide show
  1. package/lib/browser/decorations/scm-navigator-decorator.d.ts.map +1 -1
  2. package/lib/browser/decorations/scm-navigator-decorator.js +1 -0
  3. package/lib/browser/decorations/scm-navigator-decorator.js.map +1 -1
  4. package/lib/browser/scm-context-key-service.d.ts +2 -0
  5. package/lib/browser/scm-context-key-service.d.ts.map +1 -1
  6. package/lib/browser/scm-context-key-service.js +4 -0
  7. package/lib/browser/scm-context-key-service.js.map +1 -1
  8. package/lib/browser/scm-context-key-service.spec.js +7 -0
  9. package/lib/browser/scm-context-key-service.spec.js.map +1 -1
  10. package/lib/browser/scm-frontend-module.d.ts.map +1 -1
  11. package/lib/browser/scm-frontend-module.js +6 -0
  12. package/lib/browser/scm-frontend-module.js.map +1 -1
  13. package/lib/browser/scm-history-graph-contribution.d.ts +49 -0
  14. package/lib/browser/scm-history-graph-contribution.d.ts.map +1 -0
  15. package/lib/browser/scm-history-graph-contribution.js +280 -0
  16. package/lib/browser/scm-history-graph-contribution.js.map +1 -0
  17. package/lib/browser/scm-history-graph-contribution.spec.d.ts +2 -0
  18. package/lib/browser/scm-history-graph-contribution.spec.d.ts.map +1 -0
  19. package/lib/browser/scm-history-graph-contribution.spec.js +119 -0
  20. package/lib/browser/scm-history-graph-contribution.spec.js.map +1 -0
  21. package/lib/browser/scm-history-graph-helpers.d.ts +59 -6
  22. package/lib/browser/scm-history-graph-helpers.d.ts.map +1 -1
  23. package/lib/browser/scm-history-graph-helpers.js +129 -5
  24. package/lib/browser/scm-history-graph-helpers.js.map +1 -1
  25. package/lib/browser/scm-history-graph-helpers.spec.d.ts +2 -0
  26. package/lib/browser/scm-history-graph-helpers.spec.d.ts.map +1 -0
  27. package/lib/browser/scm-history-graph-helpers.spec.js +154 -0
  28. package/lib/browser/scm-history-graph-helpers.spec.js.map +1 -0
  29. package/lib/browser/scm-history-graph-lanes.d.ts +19 -5
  30. package/lib/browser/scm-history-graph-lanes.d.ts.map +1 -1
  31. package/lib/browser/scm-history-graph-lanes.js +25 -9
  32. package/lib/browser/scm-history-graph-lanes.js.map +1 -1
  33. package/lib/browser/scm-history-graph-lanes.spec.js +62 -25
  34. package/lib/browser/scm-history-graph-lanes.spec.js.map +1 -1
  35. package/lib/browser/scm-history-graph-model.d.ts +75 -6
  36. package/lib/browser/scm-history-graph-model.d.ts.map +1 -1
  37. package/lib/browser/scm-history-graph-model.js +155 -10
  38. package/lib/browser/scm-history-graph-model.js.map +1 -1
  39. package/lib/browser/scm-history-graph-model.spec.js +299 -4
  40. package/lib/browser/scm-history-graph-model.spec.js.map +1 -1
  41. package/lib/browser/scm-history-graph-tooltip.d.ts +27 -2
  42. package/lib/browser/scm-history-graph-tooltip.d.ts.map +1 -1
  43. package/lib/browser/scm-history-graph-tooltip.js +113 -22
  44. package/lib/browser/scm-history-graph-tooltip.js.map +1 -1
  45. package/lib/browser/scm-history-graph-tooltip.spec.d.ts +2 -0
  46. package/lib/browser/scm-history-graph-tooltip.spec.d.ts.map +1 -0
  47. package/lib/browser/scm-history-graph-tooltip.spec.js +213 -0
  48. package/lib/browser/scm-history-graph-tooltip.spec.js.map +1 -0
  49. package/lib/browser/scm-history-graph-widget.d.ts +36 -2
  50. package/lib/browser/scm-history-graph-widget.d.ts.map +1 -1
  51. package/lib/browser/scm-history-graph-widget.js +154 -27
  52. package/lib/browser/scm-history-graph-widget.js.map +1 -1
  53. package/lib/browser/scm-history-graph-widget.spec.d.ts +2 -0
  54. package/lib/browser/scm-history-graph-widget.spec.d.ts.map +1 -0
  55. package/lib/browser/scm-history-graph-widget.spec.js +262 -0
  56. package/lib/browser/scm-history-graph-widget.spec.js.map +1 -0
  57. package/lib/browser/scm-provider.d.ts +9 -1
  58. package/lib/browser/scm-provider.d.ts.map +1 -1
  59. package/lib/browser/scm-provider.js.map +1 -1
  60. package/lib/common/scm-preferences.d.ts +3 -0
  61. package/lib/common/scm-preferences.d.ts.map +1 -1
  62. package/lib/common/scm-preferences.js +24 -0
  63. package/lib/common/scm-preferences.js.map +1 -1
  64. package/package.json +6 -6
  65. package/src/browser/decorations/scm-navigator-decorator.ts +3 -2
  66. package/src/browser/scm-context-key-service.spec.ts +9 -0
  67. package/src/browser/scm-context-key-service.ts +6 -0
  68. package/src/browser/scm-frontend-module.ts +7 -1
  69. package/src/browser/scm-history-graph-contribution.spec.ts +148 -0
  70. package/src/browser/scm-history-graph-contribution.ts +273 -0
  71. package/src/browser/scm-history-graph-helpers.spec.ts +193 -0
  72. package/src/browser/scm-history-graph-helpers.ts +180 -6
  73. package/src/browser/scm-history-graph-lanes.spec.ts +70 -25
  74. package/src/browser/scm-history-graph-lanes.ts +48 -11
  75. package/src/browser/scm-history-graph-model.spec.ts +378 -12
  76. package/src/browser/scm-history-graph-model.ts +181 -13
  77. package/src/browser/scm-history-graph-tooltip.spec.ts +254 -0
  78. package/src/browser/scm-history-graph-tooltip.ts +144 -24
  79. package/src/browser/scm-history-graph-widget.spec.ts +310 -0
  80. package/src/browser/scm-history-graph-widget.tsx +199 -39
  81. package/src/browser/scm-provider.ts +9 -1
  82. package/src/browser/style/scm-history-graph.css +53 -2
  83. package/src/common/scm-preferences.ts +27 -0
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2026 Safi Seid-Ahmad, K2view 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
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const jsdom_1 = require("@theia/core/lib/browser/test/jsdom");
19
+ const disableJSDOM = (0, jsdom_1.enableJSDOM)();
20
+ const chai_1 = require("chai");
21
+ const disposable_1 = require("@theia/core/lib/common/disposable");
22
+ const scm_history_graph_contribution_1 = require("./scm-history-graph-contribution");
23
+ disableJSDOM();
24
+ const ALL_COMMANDS = [
25
+ scm_history_graph_contribution_1.ScmHistoryGraphCommands.REFRESH,
26
+ scm_history_graph_contribution_1.ScmHistoryGraphCommands.PICK_HISTORY_ITEM_REFS,
27
+ scm_history_graph_contribution_1.ScmHistoryGraphCommands.REVEAL_CURRENT_HISTORY_ITEM,
28
+ scm_history_graph_contribution_1.ScmHistoryGraphCommands.SET_LIST_VIEW_MODE,
29
+ scm_history_graph_contribution_1.ScmHistoryGraphCommands.SET_TREE_VIEW_MODE,
30
+ ];
31
+ function createContribution(historyProvider, currentRefInFilter = true) {
32
+ const contribution = new scm_history_graph_contribution_1.ScmHistoryGraphContribution();
33
+ let resolved = false;
34
+ let reveals = 0;
35
+ let viewMode = 'list';
36
+ const internals = contribution;
37
+ internals.scmService = {
38
+ selectedRepository: historyProvider ? { provider: { historyProvider } } : undefined,
39
+ };
40
+ internals.modelProvider = () => {
41
+ resolved = true;
42
+ return {
43
+ historyItemRefFilter: undefined,
44
+ revealCurrentHistoryItem: async () => { reveals++; return undefined; },
45
+ get viewMode() { return viewMode; },
46
+ setViewMode: (mode) => { viewMode = mode; },
47
+ };
48
+ };
49
+ internals.quickInputService = {};
50
+ internals.scmContextKeys = {
51
+ scmCurrentHistoryItemRefInFilter: { get: () => currentRefInFilter },
52
+ };
53
+ const handlers = new Map();
54
+ const registry = {
55
+ registerCommand: (command, handler) => {
56
+ handlers.set(command.id, handler);
57
+ return disposable_1.Disposable.NULL;
58
+ },
59
+ };
60
+ contribution.registerCommands(registry);
61
+ return { handlers, modelResolved: () => resolved, revealCount: () => reveals, viewMode: () => viewMode };
62
+ }
63
+ describe('ScmHistoryGraphContribution', () => {
64
+ it('does not resolve the graph model for enablement and visibility checks', () => {
65
+ const { handlers, modelResolved } = createContribution({});
66
+ for (const command of ALL_COMMANDS) {
67
+ const handler = handlers.get(command.id);
68
+ (0, chai_1.expect)(handler.isEnabled()).to.be.true;
69
+ (0, chai_1.expect)(handler.isVisible()).to.be.true;
70
+ }
71
+ (0, chai_1.expect)(modelResolved()).to.be.false;
72
+ });
73
+ it('disables the commands when the selected repository has no history provider', () => {
74
+ const { handlers, modelResolved } = createContribution(undefined);
75
+ for (const command of ALL_COMMANDS) {
76
+ const handler = handlers.get(command.id);
77
+ (0, chai_1.expect)(handler.isEnabled()).to.be.false;
78
+ (0, chai_1.expect)(handler.isVisible()).to.be.false;
79
+ }
80
+ (0, chai_1.expect)(modelResolved()).to.be.false;
81
+ });
82
+ it('disables revealing the current history item when the filter excludes the current ref', () => {
83
+ const { handlers } = createContribution({}, false);
84
+ const handler = handlers.get(scm_history_graph_contribution_1.ScmHistoryGraphCommands.REVEAL_CURRENT_HISTORY_ITEM.id);
85
+ (0, chai_1.expect)(handler.isEnabled()).to.be.false;
86
+ });
87
+ it('keeps revealing the current history item visible when the filter excludes the current ref', () => {
88
+ const { handlers } = createContribution({}, false);
89
+ const handler = handlers.get(scm_history_graph_contribution_1.ScmHistoryGraphCommands.REVEAL_CURRENT_HISTORY_ITEM.id);
90
+ (0, chai_1.expect)(handler.isVisible()).to.be.true;
91
+ });
92
+ it('asks the model to reveal the current history item when executed', async () => {
93
+ const { handlers, revealCount } = createContribution({});
94
+ await handlers.get(scm_history_graph_contribution_1.ScmHistoryGraphCommands.REVEAL_CURRENT_HISTORY_ITEM.id).execute();
95
+ (0, chai_1.expect)(revealCount()).to.equal(1);
96
+ });
97
+ it('switches the model to the tree view mode', async () => {
98
+ const { handlers, viewMode } = createContribution({});
99
+ await handlers.get(scm_history_graph_contribution_1.ScmHistoryGraphCommands.SET_TREE_VIEW_MODE.id).execute();
100
+ (0, chai_1.expect)(viewMode()).to.equal('tree');
101
+ });
102
+ it('switches the model back to the list view mode', async () => {
103
+ const { handlers, viewMode } = createContribution({});
104
+ await handlers.get(scm_history_graph_contribution_1.ScmHistoryGraphCommands.SET_TREE_VIEW_MODE.id).execute();
105
+ await handlers.get(scm_history_graph_contribution_1.ScmHistoryGraphCommands.SET_LIST_VIEW_MODE.id).execute();
106
+ (0, chai_1.expect)(viewMode()).to.equal('list');
107
+ });
108
+ it('toggles the view mode command matching the current view mode', async () => {
109
+ const { handlers } = createContribution({});
110
+ const list = handlers.get(scm_history_graph_contribution_1.ScmHistoryGraphCommands.SET_LIST_VIEW_MODE.id);
111
+ const tree = handlers.get(scm_history_graph_contribution_1.ScmHistoryGraphCommands.SET_TREE_VIEW_MODE.id);
112
+ (0, chai_1.expect)(list.isToggled()).to.be.true;
113
+ (0, chai_1.expect)(tree.isToggled()).to.be.false;
114
+ await tree.execute();
115
+ (0, chai_1.expect)(list.isToggled()).to.be.false;
116
+ (0, chai_1.expect)(tree.isToggled()).to.be.true;
117
+ });
118
+ });
119
+ //# sourceMappingURL=scm-history-graph-contribution.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scm-history-graph-contribution.spec.js","sourceRoot":"","sources":["../../src/browser/scm-history-graph-contribution.spec.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
- import { ScmHistoryItemRef, ScmHistoryItemChange } from './scm-provider';
1
+ import { ScmHistoryItemRef, ScmHistoryItemChange, ScmHistoryProvider } from './scm-provider';
2
2
  /**
3
- * Returns the CSS color variable for the given lane index.
3
+ * Returns the CSS color variable for the given color index.
4
4
  * Uses Theia's `--theia-scmGraph-*` variables, mirroring the VS Code
5
5
  * scm graph color scheme:
6
- * lane 0 (current ref) → historyItemRefColor
7
- * lane 1 (remote ref) → historyItemRemoteRefColor
8
- * lane 2 (base ref) → historyItemBaseRefColor
9
- * lane 3–7 → foreground1–5
6
+ * 0 (current ref) → historyItemRefColor
7
+ * 1 (remote ref) → historyItemRemoteRefColor
8
+ * 2 (base ref) → historyItemBaseRefColor
9
+ * 3–7 (default rotation) → foreground1–5
10
10
  */
11
11
  export declare function laneColor(index: number): string;
12
12
  export declare function getChangeStatus(change: ScmHistoryItemChange): string;
@@ -17,6 +17,59 @@ export declare function getFilePath(uri: string): string;
17
17
  * Falls back to the full path if rootUri is unavailable or doesn't match.
18
18
  */
19
19
  export declare function getRepoRelativePath(uri: string, rootUri: string | undefined): string;
20
+ export interface ChangeTreeRowBase {
21
+ /** Repo-relative path of the row; the expansion key for folders. */
22
+ readonly path: string;
23
+ /** Nesting level, used for indentation. */
24
+ readonly depth: number;
25
+ }
26
+ export interface ChangeTreeFolderRow extends ChangeTreeRowBase {
27
+ readonly type: 'folder';
28
+ /** Segments rendered for this row; a compacted chain shows `browser/model`. */
29
+ readonly label: string;
30
+ }
31
+ export interface ChangeTreeFileRow extends ChangeTreeRowBase {
32
+ readonly type: 'file';
33
+ readonly change: ScmHistoryItemChange;
34
+ /** Position of the change in the list it came from, so row keys stay stable. */
35
+ readonly index: number;
36
+ }
37
+ export type ChangeTreeRow = ChangeTreeFolderRow | ChangeTreeFileRow;
38
+ /**
39
+ * Arranges history item changes into the rows of a file tree: folders before
40
+ * files, each sorted by name, with single-child folder chains compacted into
41
+ * one row (`src/browser`) the way VS Code's SCM tree renders them. Folders
42
+ * listed in `collapsedFolders` (by their full path) hide their descendants.
43
+ */
44
+ export declare function buildChangeTreeRows(changes: readonly ScmHistoryItemChange[], rootUri: string | undefined, collapsedFolders: ReadonlySet<string>): ChangeTreeRow[];
45
+ /**
46
+ * Returns the ref-based color index of the given ref (0 = current ref,
47
+ * 1 = remote ref, 2 = base ref), or `undefined` when the ref is none of
48
+ * the provider's current history item refs. Mirrors VS Code's scm graph
49
+ * color map.
50
+ */
51
+ export declare function getRefColorIndex(ref: ScmHistoryItemRef, provider: ScmHistoryProvider | undefined): number | undefined;
52
+ /**
53
+ * Filters which refs get badges in the graph, following VS Code's
54
+ * `scm.graph.badges` setting: `'all'` shows every ref, `'filter'` shows only
55
+ * the refs used as the graph's filter — the explicitly picked ref ids, or,
56
+ * without an explicit filter (auto mode), the current, remote, and base refs.
57
+ * Without provider information all refs are kept.
58
+ */
59
+ export declare function filterRefsForBadges(refs: readonly ScmHistoryItemRef[], provider: ScmHistoryProvider | undefined, badges: 'all' | 'filter', filter?: readonly string[]): readonly ScmHistoryItemRef[];
60
+ export interface RefBadgePresentation {
61
+ /** Icon class for the badge icon, e.g. 'codicon-git-branch'. */
62
+ iconClass: string;
63
+ /** Ref-based color index (0-2), or `undefined` to use the row color. */
64
+ colorIndex?: number;
65
+ }
66
+ /**
67
+ * Resolves how a ref badge is presented: the provider-supplied codicon icon
68
+ * when available (VS Code renders `ref.icon` unconditionally), otherwise a
69
+ * category fallback with the `target` icon marking the current ref; plus the
70
+ * ref-based color index.
71
+ */
72
+ export declare function getRefBadgePresentation(ref: ScmHistoryItemRef, provider: ScmHistoryProvider | undefined): RefBadgePresentation;
20
73
  export declare function getRefBadgeClass(ref: ScmHistoryItemRef): string;
21
74
  export declare function isTagRef(ref: ScmHistoryItemRef): boolean;
22
75
  export declare function isRemoteRef(ref: ScmHistoryItemRef): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"scm-history-graph-helpers.d.ts","sourceRoot":"","sources":["../../src/browser/scm-history-graph-helpers.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEzE;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAW/C;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CAWpE;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG/C;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAO/C;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAYpF;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,iBAAiB,GAAG,MAAM,CAe/D;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAOxD;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAO3D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAGjE;AAED,MAAM,WAAW,eAAe;IAC5B,GAAG,EAAE,iBAAiB,CAAC;IACvB,oFAAoF;IACpF,OAAO,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,iBAAiB,EAAE,GAAG,eAAe,EAAE,CAkCrF"}
1
+ {"version":3,"file":"scm-history-graph-helpers.d.ts","sourceRoot":"","sources":["../../src/browser/scm-history-graph-helpers.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAE7F;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAW/C;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CAWpE;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG/C;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAO/C;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAYpF;AAED,MAAM,WAAW,iBAAiB;IAC9B,oEAAoE;IACpE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,2CAA2C;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAoB,SAAQ,iBAAiB;IAC1D,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,+EAA+E;IAC/E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAkB,SAAQ,iBAAiB;IACxD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,gFAAgF;IAChF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,aAAa,GAAG,mBAAmB,GAAG,iBAAiB,CAAC;AAOpE;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAC/B,OAAO,EAAE,SAAS,oBAAoB,EAAE,EACxC,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAAC,GACtC,aAAa,EAAE,CAqBjB;AAyCD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,iBAAiB,EAAE,QAAQ,EAAE,kBAAkB,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAcrH;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAC/B,IAAI,EAAE,SAAS,iBAAiB,EAAE,EAClC,QAAQ,EAAE,kBAAkB,GAAG,SAAS,EACxC,MAAM,EAAE,KAAK,GAAG,QAAQ,EACxB,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,GAC3B,SAAS,iBAAiB,EAAE,CAW9B;AAED,MAAM,WAAW,oBAAoB;IACjC,gEAAgE;IAChE,SAAS,EAAE,MAAM,CAAC;IAClB,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,iBAAiB,EAAE,QAAQ,EAAE,kBAAkB,GAAG,SAAS,GAAG,oBAAoB,CAa9H;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,iBAAiB,GAAG,MAAM,CAe/D;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAOxD;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAO3D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAGjE;AAED,MAAM,WAAW,eAAe;IAC5B,GAAG,EAAE,iBAAiB,CAAC;IACvB,oFAAoF;IACpF,OAAO,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,iBAAiB,EAAE,GAAG,eAAe,EAAE,CAkCrF"}
@@ -20,19 +20,23 @@ exports.getChangeStatus = getChangeStatus;
20
20
  exports.getFileName = getFileName;
21
21
  exports.getFilePath = getFilePath;
22
22
  exports.getRepoRelativePath = getRepoRelativePath;
23
+ exports.buildChangeTreeRows = buildChangeTreeRows;
24
+ exports.getRefColorIndex = getRefColorIndex;
25
+ exports.filterRefsForBadges = filterRefsForBadges;
26
+ exports.getRefBadgePresentation = getRefBadgePresentation;
23
27
  exports.getRefBadgeClass = getRefBadgeClass;
24
28
  exports.isTagRef = isTagRef;
25
29
  exports.isRemoteRef = isRemoteRef;
26
30
  exports.getLocalNameFromRemote = getLocalNameFromRemote;
27
31
  exports.deduplicateRefs = deduplicateRefs;
28
32
  /**
29
- * Returns the CSS color variable for the given lane index.
33
+ * Returns the CSS color variable for the given color index.
30
34
  * Uses Theia's `--theia-scmGraph-*` variables, mirroring the VS Code
31
35
  * scm graph color scheme:
32
- * lane 0 (current ref) → historyItemRefColor
33
- * lane 1 (remote ref) → historyItemRemoteRefColor
34
- * lane 2 (base ref) → historyItemBaseRefColor
35
- * lane 3–7 → foreground1–5
36
+ * 0 (current ref) → historyItemRefColor
37
+ * 1 (remote ref) → historyItemRemoteRefColor
38
+ * 2 (base ref) → historyItemBaseRefColor
39
+ * 3–7 (default rotation) → foreground1–5
36
40
  */
37
41
  function laneColor(index) {
38
42
  switch (index % 8) {
@@ -88,6 +92,126 @@ function getRepoRelativePath(uri, rootUri) {
88
92
  }
89
93
  return fullPath;
90
94
  }
95
+ /**
96
+ * Arranges history item changes into the rows of a file tree: folders before
97
+ * files, each sorted by name, with single-child folder chains compacted into
98
+ * one row (`src/browser`) the way VS Code's SCM tree renders them. Folders
99
+ * listed in `collapsedFolders` (by their full path) hide their descendants.
100
+ */
101
+ function buildChangeTreeRows(changes, rootUri, collapsedFolders) {
102
+ const root = { folders: new Map(), files: [] };
103
+ changes.forEach((change, index) => {
104
+ const relativePath = getRepoRelativePath(change.modifiedUri ?? change.originalUri ?? change.uri, rootUri);
105
+ const segments = relativePath.split('/').filter(segment => segment.length > 0);
106
+ const name = segments.pop() ?? relativePath;
107
+ let folder = root;
108
+ for (const segment of segments) {
109
+ let child = folder.folders.get(segment);
110
+ if (!child) {
111
+ child = { folders: new Map(), files: [] };
112
+ folder.folders.set(segment, child);
113
+ }
114
+ folder = child;
115
+ }
116
+ folder.files.push({ change, index, name });
117
+ });
118
+ const rows = [];
119
+ collectChangeTreeRows(root, '', '', 0, collapsedFolders, rows);
120
+ return rows;
121
+ }
122
+ function collectChangeTreeRows(folder, path, label, depth, collapsedFolders, rows) {
123
+ for (const name of [...folder.folders.keys()].sort(compareNames)) {
124
+ let child = folder.folders.get(name);
125
+ let childPath = path ? `${path}/${name}` : name;
126
+ let childLabel = label ? `${label}/${name}` : name;
127
+ // Compact a chain of folders that each hold nothing but one folder.
128
+ while (child.files.length === 0 && child.folders.size === 1) {
129
+ const [onlyName, onlyChild] = [...child.folders][0];
130
+ child = onlyChild;
131
+ childPath = `${childPath}/${onlyName}`;
132
+ childLabel = `${childLabel}/${onlyName}`;
133
+ }
134
+ rows.push({ type: 'folder', path: childPath, label: childLabel, depth });
135
+ if (!collapsedFolders.has(childPath)) {
136
+ collectChangeTreeRows(child, childPath, '', depth + 1, collapsedFolders, rows);
137
+ }
138
+ }
139
+ for (const file of [...folder.files].sort((left, right) => compareNames(left.name, right.name))) {
140
+ rows.push({
141
+ type: 'file',
142
+ path: path ? `${path}/${file.name}` : file.name,
143
+ depth,
144
+ change: file.change,
145
+ index: file.index
146
+ });
147
+ }
148
+ }
149
+ function compareNames(left, right) {
150
+ return left.localeCompare(right);
151
+ }
152
+ /**
153
+ * Returns the ref-based color index of the given ref (0 = current ref,
154
+ * 1 = remote ref, 2 = base ref), or `undefined` when the ref is none of
155
+ * the provider's current history item refs. Mirrors VS Code's scm graph
156
+ * color map.
157
+ */
158
+ function getRefColorIndex(ref, provider) {
159
+ if (!provider) {
160
+ return undefined;
161
+ }
162
+ if (ref.id === provider.currentHistoryItemRef?.id) {
163
+ return 0;
164
+ }
165
+ if (ref.id === provider.currentHistoryItemRemoteRef?.id) {
166
+ return 1;
167
+ }
168
+ if (ref.id === provider.currentHistoryItemBaseRef?.id) {
169
+ return 2;
170
+ }
171
+ return undefined;
172
+ }
173
+ /**
174
+ * Filters which refs get badges in the graph, following VS Code's
175
+ * `scm.graph.badges` setting: `'all'` shows every ref, `'filter'` shows only
176
+ * the refs used as the graph's filter — the explicitly picked ref ids, or,
177
+ * without an explicit filter (auto mode), the current, remote, and base refs.
178
+ * Without provider information all refs are kept.
179
+ */
180
+ function filterRefsForBadges(refs, provider, badges, filter) {
181
+ if (badges === 'all') {
182
+ return refs;
183
+ }
184
+ if (filter) {
185
+ return refs.filter(ref => filter.includes(ref.id));
186
+ }
187
+ if (!provider) {
188
+ return refs;
189
+ }
190
+ return refs.filter(ref => getRefColorIndex(ref, provider) !== undefined);
191
+ }
192
+ /**
193
+ * Resolves how a ref badge is presented: the provider-supplied codicon icon
194
+ * when available (VS Code renders `ref.icon` unconditionally), otherwise a
195
+ * category fallback with the `target` icon marking the current ref; plus the
196
+ * ref-based color index.
197
+ */
198
+ function getRefBadgePresentation(ref, provider) {
199
+ const colorIndex = getRefColorIndex(ref, provider);
200
+ let iconClass;
201
+ if (ref.icon && ref.icon.startsWith('codicon ')) {
202
+ iconClass = ref.icon.substring('codicon '.length);
203
+ }
204
+ else if (isTagRef(ref)) {
205
+ iconClass = 'codicon-tag';
206
+ }
207
+ else if (isRemoteRef(ref)) {
208
+ iconClass = 'codicon-cloud';
209
+ }
210
+ else {
211
+ iconClass = colorIndex === 0 ? 'codicon-target' : 'codicon-git-branch';
212
+ }
213
+ return { iconClass, colorIndex };
214
+ }
91
215
  function getRefBadgeClass(ref) {
92
216
  const cat = (ref.category ?? '').toLowerCase();
93
217
  if (cat === 'heads' || cat === 'head' || ref.id.startsWith('refs/heads/')) {
@@ -1 +1 @@
1
- {"version":3,"file":"scm-history-graph-helpers.js","sourceRoot":"","sources":["../../src/browser/scm-history-graph-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scm-history-graph-helpers.js","sourceRoot":"","sources":["../../src/browser/scm-history-graph-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=scm-history-graph-helpers.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scm-history-graph-helpers.spec.d.ts","sourceRoot":"","sources":["../../src/browser/scm-history-graph-helpers.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2026 Safi Seid-Ahmad, K2view 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
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const chai_1 = require("chai");
19
+ const scm_history_graph_helpers_1 = require("./scm-history-graph-helpers");
20
+ describe('getRefColorIndex', () => {
21
+ const mainRef = { id: 'refs/heads/main', name: 'main' };
22
+ const remoteRef = { id: 'refs/remotes/origin/main', name: 'origin/main' };
23
+ const baseRef = { id: 'refs/remotes/origin/develop', name: 'origin/develop' };
24
+ const otherRef = { id: 'refs/heads/feature', name: 'feature' };
25
+ const provider = {
26
+ currentHistoryItemRef: mainRef,
27
+ currentHistoryItemRemoteRef: remoteRef,
28
+ currentHistoryItemBaseRef: baseRef,
29
+ };
30
+ it('returns 0 for the current history item ref', () => {
31
+ (0, chai_1.expect)((0, scm_history_graph_helpers_1.getRefColorIndex)(mainRef, provider)).to.equal(0);
32
+ });
33
+ it('returns 1 for the current remote ref', () => {
34
+ (0, chai_1.expect)((0, scm_history_graph_helpers_1.getRefColorIndex)(remoteRef, provider)).to.equal(1);
35
+ });
36
+ it('returns 2 for the current base ref', () => {
37
+ (0, chai_1.expect)((0, scm_history_graph_helpers_1.getRefColorIndex)(baseRef, provider)).to.equal(2);
38
+ });
39
+ it('returns undefined for any other ref', () => {
40
+ (0, chai_1.expect)((0, scm_history_graph_helpers_1.getRefColorIndex)(otherRef, provider)).to.be.undefined;
41
+ });
42
+ it('returns undefined without a provider', () => {
43
+ (0, chai_1.expect)((0, scm_history_graph_helpers_1.getRefColorIndex)(mainRef, undefined)).to.be.undefined;
44
+ });
45
+ });
46
+ describe('getRefBadgePresentation', () => {
47
+ const mainRef = { id: 'refs/heads/main', name: 'main' };
48
+ const remoteRef = { id: 'refs/remotes/origin/main', name: 'origin/main' };
49
+ const provider = {
50
+ currentHistoryItemRef: mainRef,
51
+ currentHistoryItemRemoteRef: remoteRef,
52
+ };
53
+ it('prefers the codicon icon transferred from the provider', () => {
54
+ const ref = { ...mainRef, icon: 'codicon codicon-target' };
55
+ (0, chai_1.expect)((0, scm_history_graph_helpers_1.getRefBadgePresentation)(ref, undefined).iconClass).to.equal('codicon-target');
56
+ });
57
+ it('falls back to the target icon for the current ref', () => {
58
+ (0, chai_1.expect)((0, scm_history_graph_helpers_1.getRefBadgePresentation)(mainRef, provider).iconClass).to.equal('codicon-target');
59
+ });
60
+ it('falls back to category icons for remote, tag, and other local refs', () => {
61
+ (0, chai_1.expect)((0, scm_history_graph_helpers_1.getRefBadgePresentation)(remoteRef, provider).iconClass).to.equal('codicon-cloud');
62
+ (0, chai_1.expect)((0, scm_history_graph_helpers_1.getRefBadgePresentation)({ id: 'refs/tags/v1', name: 'v1' }, provider).iconClass).to.equal('codicon-tag');
63
+ (0, chai_1.expect)((0, scm_history_graph_helpers_1.getRefBadgePresentation)({ id: 'refs/heads/feature', name: 'feature' }, provider).iconClass).to.equal('codicon-git-branch');
64
+ });
65
+ it('carries the ref color index', () => {
66
+ (0, chai_1.expect)((0, scm_history_graph_helpers_1.getRefBadgePresentation)(mainRef, provider).colorIndex).to.equal(0);
67
+ (0, chai_1.expect)((0, scm_history_graph_helpers_1.getRefBadgePresentation)(remoteRef, provider).colorIndex).to.equal(1);
68
+ (0, chai_1.expect)((0, scm_history_graph_helpers_1.getRefBadgePresentation)({ id: 'refs/heads/feature', name: 'feature' }, provider).colorIndex).to.be.undefined;
69
+ });
70
+ });
71
+ describe('filterRefsForBadges', () => {
72
+ const mainRef = { id: 'refs/heads/main', name: 'main' };
73
+ const remoteRef = { id: 'refs/remotes/origin/main', name: 'origin/main' };
74
+ const featureRef = { id: 'refs/heads/feature', name: 'feature' };
75
+ const refs = [mainRef, remoteRef, featureRef];
76
+ const provider = {
77
+ currentHistoryItemRef: mainRef,
78
+ currentHistoryItemRemoteRef: remoteRef,
79
+ };
80
+ it("returns all refs in 'all' mode", () => {
81
+ (0, chai_1.expect)((0, scm_history_graph_helpers_1.filterRefsForBadges)(refs, provider, 'all')).to.deep.equal(refs);
82
+ });
83
+ it("keeps only the refs used as a filter in 'filter' mode", () => {
84
+ (0, chai_1.expect)((0, scm_history_graph_helpers_1.filterRefsForBadges)(refs, provider, 'filter')).to.deep.equal([mainRef, remoteRef]);
85
+ });
86
+ it("returns all refs in 'filter' mode when no provider is available", () => {
87
+ (0, chai_1.expect)((0, scm_history_graph_helpers_1.filterRefsForBadges)(refs, undefined, 'filter')).to.deep.equal(refs);
88
+ });
89
+ it("keeps only the explicitly picked refs in 'filter' mode with an explicit filter", () => {
90
+ (0, chai_1.expect)((0, scm_history_graph_helpers_1.filterRefsForBadges)(refs, provider, 'filter', ['refs/heads/feature'])).to.deep.equal([featureRef]);
91
+ });
92
+ it("ignores an explicit filter in 'all' mode", () => {
93
+ (0, chai_1.expect)((0, scm_history_graph_helpers_1.filterRefsForBadges)(refs, provider, 'all', ['refs/heads/feature'])).to.deep.equal(refs);
94
+ });
95
+ });
96
+ describe('buildChangeTreeRows', () => {
97
+ const rootUri = 'file:///repo';
98
+ function change(path) {
99
+ return { uri: `${rootUri}/${path}`, modifiedUri: `${rootUri}/${path}` };
100
+ }
101
+ /** Renders the rows as indented lines, so the expectations read like a tree. */
102
+ function describeRows(rows) {
103
+ return rows.map(row => `${' '.repeat(row.depth)}${row.type === 'folder' ? row.label + '/' : (0, scm_history_graph_helpers_1.getFileName)(row.path)}`);
104
+ }
105
+ it('keeps files at the root at depth 0', () => {
106
+ const rows = (0, scm_history_graph_helpers_1.buildChangeTreeRows)([change('a.ts'), change('b.ts')], rootUri, new Set());
107
+ (0, chai_1.expect)(describeRows(rows)).to.deep.equal(['a.ts', 'b.ts']);
108
+ });
109
+ it('groups files under their folder', () => {
110
+ const rows = (0, scm_history_graph_helpers_1.buildChangeTreeRows)([change('src/a.ts'), change('src/b.ts')], rootUri, new Set());
111
+ (0, chai_1.expect)(describeRows(rows)).to.deep.equal(['src/', ' a.ts', ' b.ts']);
112
+ });
113
+ it('compacts folder chains that hold a single child folder', () => {
114
+ const rows = (0, scm_history_graph_helpers_1.buildChangeTreeRows)([change('src/browser/a.ts')], rootUri, new Set());
115
+ (0, chai_1.expect)(describeRows(rows)).to.deep.equal(['src/browser/', ' a.ts']);
116
+ });
117
+ it('stops compacting where a folder chain branches', () => {
118
+ const rows = (0, scm_history_graph_helpers_1.buildChangeTreeRows)([change('src/browser/a.ts'), change('src/node/b.ts')], rootUri, new Set());
119
+ (0, chai_1.expect)(describeRows(rows)).to.deep.equal(['src/', ' browser/', ' a.ts', ' node/', ' b.ts']);
120
+ });
121
+ it('does not compact a folder that also holds files', () => {
122
+ const rows = (0, scm_history_graph_helpers_1.buildChangeTreeRows)([change('src/a.ts'), change('src/browser/b.ts')], rootUri, new Set());
123
+ (0, chai_1.expect)(describeRows(rows)).to.deep.equal(['src/', ' browser/', ' b.ts', ' a.ts']);
124
+ });
125
+ it('sorts folders before files, each alphabetically', () => {
126
+ const rows = (0, scm_history_graph_helpers_1.buildChangeTreeRows)([change('z.ts'), change('a.ts'), change('src/b.ts')], rootUri, new Set());
127
+ (0, chai_1.expect)(describeRows(rows)).to.deep.equal(['src/', ' b.ts', 'a.ts', 'z.ts']);
128
+ });
129
+ it('hides the descendants of a collapsed folder', () => {
130
+ const rows = (0, scm_history_graph_helpers_1.buildChangeTreeRows)([change('src/a.ts'), change('b.ts')], rootUri, new Set(['src']));
131
+ (0, chai_1.expect)(describeRows(rows)).to.deep.equal(['src/', 'b.ts']);
132
+ });
133
+ it('addresses a compacted folder by its full path', () => {
134
+ const rows = (0, scm_history_graph_helpers_1.buildChangeTreeRows)([change('src/browser/a.ts')], rootUri, new Set(['src/browser']));
135
+ (0, chai_1.expect)(describeRows(rows)).to.deep.equal(['src/browser/']);
136
+ });
137
+ it('carries the original change on each file row', () => {
138
+ const first = change('src/a.ts');
139
+ const rows = (0, scm_history_graph_helpers_1.buildChangeTreeRows)([first], rootUri, new Set());
140
+ (0, chai_1.expect)(rows[1].type).to.equal('file');
141
+ (0, chai_1.expect)(rows[1].change).to.equal(first);
142
+ });
143
+ it('keeps the index of the change in the original list, so row keys stay stable', () => {
144
+ const rows = (0, scm_history_graph_helpers_1.buildChangeTreeRows)([change('z.ts'), change('src/a.ts')], rootUri, new Set());
145
+ // Sorted as: src/, src/a.ts (index 1), z.ts (index 0).
146
+ (0, chai_1.expect)(rows.filter(row => row.type === 'file').map(row => row.index)).to.deep.equal([1, 0]);
147
+ });
148
+ it('falls back to the full path when the change is outside the repository root', () => {
149
+ const outside = { uri: 'file:///elsewhere/x.ts', modifiedUri: 'file:///elsewhere/x.ts' };
150
+ const rows = (0, scm_history_graph_helpers_1.buildChangeTreeRows)([outside], rootUri, new Set());
151
+ (0, chai_1.expect)(describeRows(rows)).to.deep.equal(['elsewhere/', ' x.ts']);
152
+ });
153
+ });
154
+ //# sourceMappingURL=scm-history-graph-helpers.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scm-history-graph-helpers.spec.js","sourceRoot":"","sources":["../../src/browser/scm-history-graph-helpers.spec.ts"],"names":[],"mappings":"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"}
@@ -28,8 +28,14 @@ export interface GraphEdge {
28
28
  export interface GraphRow {
29
29
  /** Lane index where the commit node is rendered. */
30
30
  readonly lane: number;
31
- /** Color index for the commit node dot. */
31
+ /** Color index for the commit node dot and the lane segment below it. */
32
32
  readonly color: number;
33
+ /**
34
+ * Color index for the lane segment above the commit node. Differs from
35
+ * `color` when this commit's ref color overrides the color inherited from
36
+ * the chain above (e.g. the current branch tip below remote-only commits).
37
+ */
38
+ readonly topColor: number;
33
39
  /** Edges crossing or originating on this row. */
34
40
  readonly edges: readonly GraphEdge[];
35
41
  /**
@@ -45,6 +51,17 @@ export interface GraphRow {
45
51
  */
46
52
  readonly hasTopLine: boolean;
47
53
  }
54
+ export interface GraphCommitInput {
55
+ id: string;
56
+ parentIds?: readonly string[];
57
+ /**
58
+ * Ref-based color index resolved from the commit's references
59
+ * (0 = current ref, 1 = remote ref, 2 = base ref). When set, it colors
60
+ * this row and propagates down the first-parent chain, mirroring
61
+ * VS Code's scm graph color map.
62
+ */
63
+ colorIndex?: number;
64
+ }
48
65
  /**
49
66
  * Compute graph rows for an ordered list of commits (topological order,
50
67
  * newest first). Each commit must supply its own `id` and `parentIds`.
@@ -52,8 +69,5 @@ export interface GraphRow {
52
69
  * @param commits Topologically sorted commits (newest → oldest).
53
70
  * @returns One `GraphRow` per commit in the same order.
54
71
  */
55
- export declare function computeGraphRows(commits: ReadonlyArray<{
56
- id: string;
57
- parentIds?: readonly string[];
58
- }>): GraphRow[];
72
+ export declare function computeGraphRows(commits: ReadonlyArray<GraphCommitInput>): GraphRow[];
59
73
  //# sourceMappingURL=scm-history-graph-lanes.d.ts.map