@theia/scm 1.75.0-next.8 → 1.75.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/browser/decorations/scm-navigator-decorator.d.ts.map +1 -1
- package/lib/browser/decorations/scm-navigator-decorator.js +1 -0
- package/lib/browser/decorations/scm-navigator-decorator.js.map +1 -1
- package/lib/browser/merge-editor/view/merge-editor-panes/merge-editor-pane-header.js +7 -10
- package/lib/browser/merge-editor/view/merge-editor-panes/merge-editor-pane-header.js.map +1 -1
- package/lib/browser/scm-action-button-widget.js +10 -15
- package/lib/browser/scm-action-button-widget.js.map +1 -1
- package/lib/browser/scm-amend-component.js +24 -57
- package/lib/browser/scm-amend-component.js.map +1 -1
- package/lib/browser/scm-commit-widget.d.ts +1 -1
- package/lib/browser/scm-commit-widget.d.ts.map +1 -1
- package/lib/browser/scm-commit-widget.js +9 -10
- package/lib/browser/scm-commit-widget.js.map +1 -1
- package/lib/browser/scm-context-key-service.d.ts +2 -0
- package/lib/browser/scm-context-key-service.d.ts.map +1 -1
- package/lib/browser/scm-context-key-service.js +4 -0
- package/lib/browser/scm-context-key-service.js.map +1 -1
- package/lib/browser/scm-context-key-service.spec.js +7 -0
- package/lib/browser/scm-context-key-service.spec.js.map +1 -1
- package/lib/browser/scm-frontend-module.d.ts.map +1 -1
- package/lib/browser/scm-frontend-module.js +6 -0
- package/lib/browser/scm-frontend-module.js.map +1 -1
- package/lib/browser/scm-history-graph-contribution.d.ts +49 -0
- package/lib/browser/scm-history-graph-contribution.d.ts.map +1 -0
- package/lib/browser/scm-history-graph-contribution.js +280 -0
- package/lib/browser/scm-history-graph-contribution.js.map +1 -0
- package/lib/browser/scm-history-graph-contribution.spec.d.ts +2 -0
- package/lib/browser/scm-history-graph-contribution.spec.d.ts.map +1 -0
- package/lib/browser/scm-history-graph-contribution.spec.js +119 -0
- package/lib/browser/scm-history-graph-contribution.spec.js.map +1 -0
- package/lib/browser/scm-history-graph-helpers.d.ts +59 -6
- package/lib/browser/scm-history-graph-helpers.d.ts.map +1 -1
- package/lib/browser/scm-history-graph-helpers.js +129 -5
- package/lib/browser/scm-history-graph-helpers.js.map +1 -1
- package/lib/browser/scm-history-graph-helpers.spec.d.ts +2 -0
- package/lib/browser/scm-history-graph-helpers.spec.d.ts.map +1 -0
- package/lib/browser/scm-history-graph-helpers.spec.js +154 -0
- package/lib/browser/scm-history-graph-helpers.spec.js.map +1 -0
- package/lib/browser/scm-history-graph-lanes.d.ts +19 -5
- package/lib/browser/scm-history-graph-lanes.d.ts.map +1 -1
- package/lib/browser/scm-history-graph-lanes.js +25 -9
- package/lib/browser/scm-history-graph-lanes.js.map +1 -1
- package/lib/browser/scm-history-graph-lanes.spec.js +62 -25
- package/lib/browser/scm-history-graph-lanes.spec.js.map +1 -1
- package/lib/browser/scm-history-graph-model.d.ts +75 -6
- package/lib/browser/scm-history-graph-model.d.ts.map +1 -1
- package/lib/browser/scm-history-graph-model.js +155 -10
- package/lib/browser/scm-history-graph-model.js.map +1 -1
- package/lib/browser/scm-history-graph-model.spec.js +299 -4
- package/lib/browser/scm-history-graph-model.spec.js.map +1 -1
- package/lib/browser/scm-history-graph-tooltip.d.ts +27 -2
- package/lib/browser/scm-history-graph-tooltip.d.ts.map +1 -1
- package/lib/browser/scm-history-graph-tooltip.js +113 -22
- package/lib/browser/scm-history-graph-tooltip.js.map +1 -1
- package/lib/browser/scm-history-graph-tooltip.spec.d.ts +2 -0
- package/lib/browser/scm-history-graph-tooltip.spec.d.ts.map +1 -0
- package/lib/browser/scm-history-graph-tooltip.spec.js +213 -0
- package/lib/browser/scm-history-graph-tooltip.spec.js.map +1 -0
- package/lib/browser/scm-history-graph-widget.d.ts +36 -2
- package/lib/browser/scm-history-graph-widget.d.ts.map +1 -1
- package/lib/browser/scm-history-graph-widget.js +174 -67
- package/lib/browser/scm-history-graph-widget.js.map +1 -1
- package/lib/browser/scm-history-graph-widget.spec.d.ts +2 -0
- package/lib/browser/scm-history-graph-widget.spec.d.ts.map +1 -0
- package/lib/browser/scm-history-graph-widget.spec.js +273 -0
- package/lib/browser/scm-history-graph-widget.spec.js.map +1 -0
- package/lib/browser/scm-provider.d.ts +9 -1
- package/lib/browser/scm-provider.d.ts.map +1 -1
- package/lib/browser/scm-provider.js.map +1 -1
- package/lib/browser/scm-repositories-widget.js +12 -21
- package/lib/browser/scm-repositories-widget.js.map +1 -1
- package/lib/browser/scm-tree-widget.js +35 -53
- package/lib/browser/scm-tree-widget.js.map +1 -1
- package/lib/common/scm-preferences.d.ts +3 -0
- package/lib/common/scm-preferences.d.ts.map +1 -1
- package/lib/common/scm-preferences.js +24 -0
- package/lib/common/scm-preferences.js.map +1 -1
- package/package.json +7 -7
- package/src/browser/decorations/scm-navigator-decorator.ts +3 -2
- package/src/browser/scm-context-key-service.spec.ts +9 -0
- package/src/browser/scm-context-key-service.ts +6 -0
- package/src/browser/scm-frontend-module.ts +7 -1
- package/src/browser/scm-history-graph-contribution.spec.ts +148 -0
- package/src/browser/scm-history-graph-contribution.ts +273 -0
- package/src/browser/scm-history-graph-helpers.spec.ts +193 -0
- package/src/browser/scm-history-graph-helpers.ts +180 -6
- package/src/browser/scm-history-graph-lanes.spec.ts +70 -25
- package/src/browser/scm-history-graph-lanes.ts +48 -11
- package/src/browser/scm-history-graph-model.spec.ts +378 -12
- package/src/browser/scm-history-graph-model.ts +181 -13
- package/src/browser/scm-history-graph-tooltip.spec.ts +254 -0
- package/src/browser/scm-history-graph-tooltip.ts +144 -24
- package/src/browser/scm-history-graph-widget.spec.ts +322 -0
- package/src/browser/scm-history-graph-widget.tsx +199 -39
- package/src/browser/scm-provider.ts +9 -1
- package/src/browser/style/scm-history-graph.css +53 -2
- package/src/common/scm-preferences.ts +27 -0
|
@@ -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
|
|
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
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
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;
|
|
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
|
|
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
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
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":";AAAA,gFAAgF;AAChF,oDAAoD;AACpD,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;AAahF,8BAWC;AAED,0CAWC;AAED,kCAGC;AAED,kCAOC;AAMD,kDAYC;AAED,4CAeC;AAED,4BAOC;AAED,kCAOC;AAMD,wDAGC;AAaD,0CAkCC;
|
|
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 @@
|
|
|
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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scm-history-graph-lanes.d.ts","sourceRoot":"","sources":["../../src/browser/scm-history-graph-lanes.ts"],"names":[],"mappings":"AAgBA;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG,YAAY,GAAG,UAAU,CAAC;AAEvE,MAAM,WAAW,SAAS;IACtB,mGAAmG;IACnG,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,sGAAsG;IACtG,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,uCAAuC;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;CAChC;AAED,MAAM,WAAW,QAAQ;IACrB,oDAAoD;IACpD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,
|
|
1
|
+
{"version":3,"file":"scm-history-graph-lanes.d.ts","sourceRoot":"","sources":["../../src/browser/scm-history-graph-lanes.ts"],"names":[],"mappings":"AAgBA;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG,YAAY,GAAG,UAAU,CAAC;AAEvE,MAAM,WAAW,SAAS;IACtB,mGAAmG;IACnG,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,sGAAsG;IACtG,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,uCAAuC;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;CAChC;AAED,MAAM,WAAW,QAAQ;IACrB,oDAAoD;IACpD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,iDAAiD;IACjD,QAAQ,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAC;IACrC;;;;OAIG;IACH,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAChC;AAcD,MAAM,WAAW,gBAAgB;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAOD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC5B,OAAO,EAAE,aAAa,CAAC,gBAAgB,CAAC,GACzC,QAAQ,EAAE,CAiLZ"}
|
|
@@ -16,6 +16,10 @@
|
|
|
16
16
|
// *****************************************************************************
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.computeGraphRows = computeGraphRows;
|
|
19
|
+
/** First color index of the default rotation (`scmGraph.foreground1`). */
|
|
20
|
+
const DEFAULT_COLOR_FIRST = 3;
|
|
21
|
+
/** Number of default rotation colors (`scmGraph.foreground1-5`). */
|
|
22
|
+
const DEFAULT_COLOR_COUNT = 5;
|
|
19
23
|
/**
|
|
20
24
|
* Compute graph rows for an ordered list of commits (topological order,
|
|
21
25
|
* newest first). Each commit must supply its own `id` and `parentIds`.
|
|
@@ -27,8 +31,15 @@ function computeGraphRows(commits) {
|
|
|
27
31
|
// lanes[i] = id of commit that "owns" lane i (i.e. we are waiting for this
|
|
28
32
|
// commit to appear in the list so we can close the lane).
|
|
29
33
|
const lanes = [];
|
|
30
|
-
// laneColors[i] = the color index
|
|
34
|
+
// laneColors[i] = the color index currently assigned to lane i
|
|
31
35
|
const laneColors = [];
|
|
36
|
+
// Default lane colors rotate through foreground1-5, like VS Code's
|
|
37
|
+
// color registry; indices 0-2 are reserved for ref-based colors.
|
|
38
|
+
let rotation = -1;
|
|
39
|
+
const nextDefaultColor = () => {
|
|
40
|
+
rotation = (rotation + 1) % DEFAULT_COLOR_COUNT;
|
|
41
|
+
return DEFAULT_COLOR_FIRST + rotation;
|
|
42
|
+
};
|
|
32
43
|
const rows = [];
|
|
33
44
|
for (const commit of commits) {
|
|
34
45
|
const parentIds = commit.parentIds ?? [];
|
|
@@ -41,9 +52,14 @@ function computeGraphRows(commits) {
|
|
|
41
52
|
// Not yet tracked → open a new lane
|
|
42
53
|
myLane = firstFreeLane(lanes);
|
|
43
54
|
lanes[myLane] = commit.id;
|
|
44
|
-
laneColors[myLane] =
|
|
55
|
+
laneColors[myLane] = commit.colorIndex ?? nextDefaultColor();
|
|
45
56
|
}
|
|
46
|
-
|
|
57
|
+
// The segment above the commit keeps the color inherited from the
|
|
58
|
+
// chain above; the commit's own ref color (if any) takes over from
|
|
59
|
+
// this row downward.
|
|
60
|
+
const topColor = laneColors[myLane] ?? DEFAULT_COLOR_FIRST;
|
|
61
|
+
const myColor = commit.colorIndex ?? topColor;
|
|
62
|
+
laneColors[myLane] = myColor;
|
|
47
63
|
// Collect any duplicate lane occupants: other lanes that were kept
|
|
48
64
|
// alive pointing at this same commit (sibling branch tips whose lane
|
|
49
65
|
// was preserved until the parent row). These emit merge-in edges and
|
|
@@ -53,7 +69,7 @@ function computeGraphRows(commits) {
|
|
|
53
69
|
if (hasTopLine) {
|
|
54
70
|
for (let li = 0; li < lanes.length; li++) {
|
|
55
71
|
if (lanes[li] === commit.id && li !== myLane) {
|
|
56
|
-
duplicateLanes.push({ lane: li, color: laneColors[li] ??
|
|
72
|
+
duplicateLanes.push({ lane: li, color: laneColors[li] ?? DEFAULT_COLOR_FIRST });
|
|
57
73
|
lanes[li] = undefined;
|
|
58
74
|
laneColors[li] = undefined;
|
|
59
75
|
}
|
|
@@ -102,7 +118,7 @@ function computeGraphRows(commits) {
|
|
|
102
118
|
// Additional parents get new lanes — branch-out
|
|
103
119
|
const newLane = firstFreeLane(lanes);
|
|
104
120
|
lanes[newLane] = pid;
|
|
105
|
-
laneColors[newLane] =
|
|
121
|
+
laneColors[newLane] = nextDefaultColor();
|
|
106
122
|
parentLanes.push(newLane);
|
|
107
123
|
parentIsExisting.push(false);
|
|
108
124
|
}
|
|
@@ -137,7 +153,7 @@ function computeGraphRows(commits) {
|
|
|
137
153
|
if (!occupant || occupant === commit.id) {
|
|
138
154
|
continue;
|
|
139
155
|
}
|
|
140
|
-
const color = laneColors[li] ??
|
|
156
|
+
const color = laneColors[li] ?? DEFAULT_COLOR_FIRST;
|
|
141
157
|
edges.push({ fromLane: li, toLane: li, color, type: 'pass-through' });
|
|
142
158
|
}
|
|
143
159
|
for (let pi = 0; pi < parentIds.length; pi++) {
|
|
@@ -153,12 +169,12 @@ function computeGraphRows(commits) {
|
|
|
153
169
|
if (isExisting) {
|
|
154
170
|
// Merge-in: an existing lane at the top of the row curves into
|
|
155
171
|
// the commit position at mid-row.
|
|
156
|
-
const color = laneColors[toLane] ??
|
|
172
|
+
const color = laneColors[toLane] ?? DEFAULT_COLOR_FIRST;
|
|
157
173
|
edges.push({ fromLane: toLane, toLane: myLane, color, type: 'merge-in' });
|
|
158
174
|
}
|
|
159
175
|
else {
|
|
160
176
|
// Branch-out: the commit spawns a new lane below mid-row.
|
|
161
|
-
const color = laneColors[toLane] ??
|
|
177
|
+
const color = laneColors[toLane] ?? DEFAULT_COLOR_FIRST;
|
|
162
178
|
edges.push({ fromLane: myLane, toLane, color, type: 'branch-out' });
|
|
163
179
|
}
|
|
164
180
|
}
|
|
@@ -171,7 +187,7 @@ function computeGraphRows(commits) {
|
|
|
171
187
|
// OR if this is a sibling branch tip whose lane was kept alive (pointing
|
|
172
188
|
// at the parent) so it persists as a pass-through to the parent row.
|
|
173
189
|
const hasContinuation = parentIds.length > 0 && (parentLanes[0] === myLane || lanes[myLane] === parentIds[0]);
|
|
174
|
-
rows.push({ lane: myLane, color: myColor, edges, hasContinuation, hasTopLine });
|
|
190
|
+
rows.push({ lane: myLane, color: myColor, topColor, edges, hasContinuation, hasTopLine });
|
|
175
191
|
}
|
|
176
192
|
return rows;
|
|
177
193
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scm-history-graph-lanes.js","sourceRoot":"","sources":["../../src/browser/scm-history-graph-lanes.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oDAAoD;AACpD,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;
|
|
1
|
+
{"version":3,"file":"scm-history-graph-lanes.js","sourceRoot":"","sources":["../../src/browser/scm-history-graph-lanes.ts"],"names":[],"mappings":"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"}
|