@theia/scm 1.77.0-next.6 → 1.77.0-next.63

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 (90) hide show
  1. package/lib/browser/decorations/scm-navigator-decorator.js +1 -1
  2. package/lib/browser/decorations/scm-navigator-decorator.js.map +1 -1
  3. package/lib/browser/dirty-diff/content-lines.spec.js +2 -1
  4. package/lib/browser/dirty-diff/content-lines.spec.js.map +1 -1
  5. package/lib/browser/dirty-diff/diff-computer.js +2 -1
  6. package/lib/browser/dirty-diff/diff-computer.js.map +1 -1
  7. package/lib/browser/dirty-diff/diff-computer.spec.js +2 -1
  8. package/lib/browser/dirty-diff/diff-computer.spec.js.map +1 -1
  9. package/lib/browser/dirty-diff/dirty-diff-navigator.js.map +1 -1
  10. package/lib/browser/dirty-diff/dirty-diff-widget.js +1 -1
  11. package/lib/browser/dirty-diff/dirty-diff-widget.js.map +1 -1
  12. package/lib/browser/merge-editor/merge-editor-contribution.d.ts +1 -1
  13. package/lib/browser/merge-editor/merge-editor-contribution.d.ts.map +1 -1
  14. package/lib/browser/merge-editor/merge-editor-dev-contribution.d.ts +1 -1
  15. package/lib/browser/merge-editor/merge-editor-dev-contribution.d.ts.map +1 -1
  16. package/lib/browser/merge-editor/view/merge-editor-panes/merge-editor-pane-header.js +1 -1
  17. package/lib/browser/merge-editor/view/merge-editor-panes/merge-editor-pane-header.js.map +1 -1
  18. package/lib/browser/merge-editor/view/merge-editor-view-zones.js +1 -1
  19. package/lib/browser/merge-editor/view/merge-editor-view-zones.js.map +1 -1
  20. package/lib/browser/multi-diff-editor/multi-diff-editor-module.d.ts +4 -0
  21. package/lib/browser/multi-diff-editor/multi-diff-editor-module.d.ts.map +1 -0
  22. package/lib/browser/multi-diff-editor/multi-diff-editor-module.js +34 -0
  23. package/lib/browser/multi-diff-editor/multi-diff-editor-module.js.map +1 -0
  24. package/lib/browser/multi-diff-editor/multi-diff-editor-uri.d.ts +15 -0
  25. package/lib/browser/multi-diff-editor/multi-diff-editor-uri.d.ts.map +1 -0
  26. package/lib/browser/multi-diff-editor/multi-diff-editor-uri.js +68 -0
  27. package/lib/browser/multi-diff-editor/multi-diff-editor-uri.js.map +1 -0
  28. package/lib/browser/multi-diff-editor/multi-diff-editor-widget-factory.d.ts +18 -0
  29. package/lib/browser/multi-diff-editor/multi-diff-editor-widget-factory.d.ts.map +1 -0
  30. package/lib/browser/multi-diff-editor/multi-diff-editor-widget-factory.js +76 -0
  31. package/lib/browser/multi-diff-editor/multi-diff-editor-widget-factory.js.map +1 -0
  32. package/lib/browser/multi-diff-editor/multi-diff-editor-widget.spec.d.ts +2 -0
  33. package/lib/browser/multi-diff-editor/multi-diff-editor-widget.spec.d.ts.map +1 -0
  34. package/lib/browser/multi-diff-editor/multi-diff-editor-widget.spec.js +835 -0
  35. package/lib/browser/multi-diff-editor/multi-diff-editor-widget.spec.js.map +1 -0
  36. package/lib/browser/multi-diff-editor/multi-diff-editor.d.ts +163 -0
  37. package/lib/browser/multi-diff-editor/multi-diff-editor.d.ts.map +1 -0
  38. package/lib/browser/multi-diff-editor/multi-diff-editor.js +563 -0
  39. package/lib/browser/multi-diff-editor/multi-diff-editor.js.map +1 -0
  40. package/lib/browser/multi-diff-editor/multi-diff-editor.spec.d.ts +2 -0
  41. package/lib/browser/multi-diff-editor/multi-diff-editor.spec.d.ts.map +1 -0
  42. package/lib/browser/multi-diff-editor/multi-diff-editor.spec.js +167 -0
  43. package/lib/browser/multi-diff-editor/multi-diff-editor.spec.js.map +1 -0
  44. package/lib/browser/scm-action-button-widget.js +1 -1
  45. package/lib/browser/scm-action-button-widget.js.map +1 -1
  46. package/lib/browser/scm-amend-component.js +2 -1
  47. package/lib/browser/scm-amend-component.js.map +1 -1
  48. package/lib/browser/scm-amend-widget.js +1 -1
  49. package/lib/browser/scm-amend-widget.js.map +1 -1
  50. package/lib/browser/scm-commit-widget.js +2 -2
  51. package/lib/browser/scm-commit-widget.js.map +1 -1
  52. package/lib/browser/scm-contribution.js +1 -1
  53. package/lib/browser/scm-contribution.js.map +1 -1
  54. package/lib/browser/scm-frontend-module.d.ts.map +1 -1
  55. package/lib/browser/scm-frontend-module.js +2 -0
  56. package/lib/browser/scm-frontend-module.js.map +1 -1
  57. package/lib/browser/scm-history-graph-widget.js +2 -2
  58. package/lib/browser/scm-history-graph-widget.js.map +1 -1
  59. package/lib/browser/scm-history-graph-widget.spec.js +2 -1
  60. package/lib/browser/scm-history-graph-widget.spec.js.map +1 -1
  61. package/lib/browser/scm-input.js +3 -2
  62. package/lib/browser/scm-input.js.map +1 -1
  63. package/lib/browser/scm-provider.d.ts +2 -0
  64. package/lib/browser/scm-provider.d.ts.map +1 -1
  65. package/lib/browser/scm-quick-open-service.js +1 -1
  66. package/lib/browser/scm-quick-open-service.js.map +1 -1
  67. package/lib/browser/scm-repositories-widget.js +2 -2
  68. package/lib/browser/scm-repositories-widget.js.map +1 -1
  69. package/lib/browser/scm-repositories-widget.spec.js +2 -1
  70. package/lib/browser/scm-repositories-widget.spec.js.map +1 -1
  71. package/lib/browser/scm-service.js +1 -1
  72. package/lib/browser/scm-service.js.map +1 -1
  73. package/lib/browser/scm-tree-label-provider.js +1 -1
  74. package/lib/browser/scm-tree-label-provider.js.map +1 -1
  75. package/lib/browser/scm-tree-model.js +1 -1
  76. package/lib/browser/scm-tree-model.js.map +1 -1
  77. package/lib/browser/scm-tree-widget.js +2 -2
  78. package/lib/browser/scm-tree-widget.js.map +1 -1
  79. package/package.json +6 -6
  80. package/src/browser/dirty-diff/dirty-diff-navigator.ts +1 -1
  81. package/src/browser/multi-diff-editor/multi-diff-editor-module.ts +35 -0
  82. package/src/browser/multi-diff-editor/multi-diff-editor-uri.ts +83 -0
  83. package/src/browser/multi-diff-editor/multi-diff-editor-widget-factory.ts +81 -0
  84. package/src/browser/multi-diff-editor/multi-diff-editor-widget.spec.ts +878 -0
  85. package/src/browser/multi-diff-editor/multi-diff-editor.spec.ts +189 -0
  86. package/src/browser/multi-diff-editor/multi-diff-editor.ts +628 -0
  87. package/src/browser/scm-frontend-module.ts +3 -0
  88. package/src/browser/scm-input.ts +1 -1
  89. package/src/browser/scm-provider.ts +2 -0
  90. package/src/browser/style/multi-diff-editor.css +113 -0
@@ -0,0 +1,563 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2026 EclipseSource 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 MultiDiffEditorOpenHandler_1;
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.MultiDiffEditorOpenHandler = exports.MultiDiffEditorLabelProvider = exports.MultiDiffEditor = exports.DiffEntryWidget = exports.DiffEntryErrorWidget = exports.DiffEntryLoadingWidget = exports.DiffEntryHeaderWidget = exports.HEADER_HEIGHT = exports.MAX_ENTRY_HEIGHT = exports.MIN_ENTRY_HEIGHT = exports.MultiDiffEditorData = exports.MultiDiffEditorUri = void 0;
20
+ const tslib_1 = require("tslib");
21
+ const inversify_1 = require("@theia/core/shared/inversify");
22
+ const core_1 = require("@theia/core");
23
+ const browser_1 = require("@theia/core/lib/browser");
24
+ const monaco_editor_1 = require("@theia/monaco/lib/browser/monaco-editor");
25
+ const monaco_diff_editor_1 = require("@theia/monaco/lib/browser/monaco-diff-editor");
26
+ const multi_diff_editor_uri_1 = require("./multi-diff-editor-uri");
27
+ Object.defineProperty(exports, "MultiDiffEditorUri", { enumerable: true, get: function () { return multi_diff_editor_uri_1.MultiDiffEditorUri; } });
28
+ /**
29
+ * Data required to construct a {@link MultiDiffEditor} via dependency injection.
30
+ */
31
+ exports.MultiDiffEditorData = Symbol('MultiDiffEditorData');
32
+ /**
33
+ * Initial height of loading and error placeholders (in pixels).
34
+ */
35
+ exports.MIN_ENTRY_HEIGHT = 120;
36
+ /**
37
+ * Fallback height limit before the viewport size is known (in pixels).
38
+ */
39
+ exports.MAX_ENTRY_HEIGHT = 500;
40
+ /**
41
+ * Height of the header bar above each embedded diff editor (in pixels).
42
+ * Used as the collapsed-entry height and as the sizeBasis of the BoxLayout header child.
43
+ */
44
+ exports.HEADER_HEIGHT = 28;
45
+ /**
46
+ * Header widget for a single diff entry. Displays a collapse/expand toggle, file icon,
47
+ * name and path. Clicking anywhere on the header fires {@link onDidToggleCollapse}.
48
+ */
49
+ class DiffEntryHeaderWidget extends browser_1.BaseWidget {
50
+ constructor(resource, labelProvider) {
51
+ super();
52
+ this.onDidToggleCollapseEmitter = new core_1.Emitter();
53
+ this.onDidToggleCollapse = this.onDidToggleCollapseEmitter.event;
54
+ this.addClass('multi-diff-entry-header');
55
+ this.node.setAttribute('role', 'button');
56
+ this.node.setAttribute('aria-expanded', 'true');
57
+ this.node.tabIndex = 0;
58
+ this.chevron = document.createElement('span');
59
+ this.chevron.className = `${(0, browser_1.codicon)('chevron-down')} multi-diff-entry-chevron`;
60
+ this.node.appendChild(this.chevron);
61
+ const icon = document.createElement('span');
62
+ icon.className = `${labelProvider.getIcon(resource.modifiedUri)} file-icon multi-diff-entry-icon`;
63
+ this.node.appendChild(icon);
64
+ const label = document.createElement('span');
65
+ label.classList.add('multi-diff-entry-label');
66
+ label.textContent = labelProvider.getName(resource.modifiedUri);
67
+ this.node.appendChild(label);
68
+ const description = document.createElement('span');
69
+ description.classList.add('multi-diff-entry-description');
70
+ description.textContent = labelProvider.getLongName(resource.modifiedUri);
71
+ this.node.appendChild(description);
72
+ this.toDispose.push(this.onDidToggleCollapseEmitter);
73
+ this.addEventListener(this.node, 'click', () => this.onDidToggleCollapseEmitter.fire());
74
+ this.addKeyListener(this.node, [browser_1.Key.ENTER, browser_1.Key.SPACE], () => this.onDidToggleCollapseEmitter.fire());
75
+ }
76
+ setCollapsed(collapsed) {
77
+ this.node.setAttribute('aria-expanded', String(!collapsed));
78
+ this.chevron.classList.toggle('codicon-chevron-down', !collapsed);
79
+ this.chevron.classList.toggle('codicon-chevron-right', collapsed);
80
+ }
81
+ }
82
+ exports.DiffEntryHeaderWidget = DiffEntryHeaderWidget;
83
+ /**
84
+ * Placeholder widget shown while a diff entry's editor is being loaded.
85
+ */
86
+ class DiffEntryLoadingWidget extends browser_1.BaseWidget {
87
+ constructor() {
88
+ super();
89
+ this.addClass('multi-diff-entry-loading');
90
+ const spinner = document.createElement('span');
91
+ spinner.className = `${(0, browser_1.codicon)('loading')} codicon-modifier-spin`;
92
+ this.node.appendChild(spinner);
93
+ const text = document.createElement('span');
94
+ text.textContent = core_1.nls.localizeByDefault('Loading...');
95
+ this.node.appendChild(text);
96
+ }
97
+ }
98
+ exports.DiffEntryLoadingWidget = DiffEntryLoadingWidget;
99
+ /**
100
+ * Placeholder widget shown when a diff entry's editor fails to load.
101
+ */
102
+ class DiffEntryErrorWidget extends browser_1.BaseWidget {
103
+ constructor(message, retry) {
104
+ super();
105
+ this.addClass('multi-diff-entry-error');
106
+ const icon = document.createElement('span');
107
+ icon.className = (0, browser_1.codicon)('error');
108
+ this.node.appendChild(icon);
109
+ const text = document.createElement('span');
110
+ text.textContent = message;
111
+ this.node.appendChild(text);
112
+ if (retry) {
113
+ const button = document.createElement('button');
114
+ button.type = 'button';
115
+ button.className = 'theia-button';
116
+ button.textContent = core_1.nls.localizeByDefault('Retry');
117
+ this.node.appendChild(button);
118
+ this.addEventListener(button, 'click', retry);
119
+ }
120
+ }
121
+ }
122
+ exports.DiffEntryErrorWidget = DiffEntryErrorWidget;
123
+ /**
124
+ * A single diff entry combining a header and a content area that transitions through
125
+ * loading, editor, and error states. The entry's outer height is controlled via
126
+ * {@link DiffEntryWidget.setHeight} and, once the editor is loaded, tracks the
127
+ * editor's content size up to 5000 pixels. A single entry fills the viewport.
128
+ * Entries can be collapsed (showing only the header) via {@link DiffEntryWidget.setCollapsed}.
129
+ */
130
+ class DiffEntryWidget extends browser_1.BaseWidget {
131
+ constructor(resource, headerWidget, createEditor) {
132
+ super();
133
+ this.createEditor = createEditor;
134
+ this._isCollapsed = false;
135
+ /** Height to restore when expanding from a collapsed state. */
136
+ this.lastExpandedHeight = exports.MIN_ENTRY_HEIGHT;
137
+ this.fillViewport = false;
138
+ this.requestedHeight = exports.MIN_ENTRY_HEIGHT;
139
+ this.loading = false;
140
+ this.loadAttempted = false;
141
+ this.onDidLoadEditorEmitter = new core_1.Emitter();
142
+ this.onDidLoadEditor = this.onDidLoadEditorEmitter.event;
143
+ this.onDidChangeCollapsedEmitter = new core_1.Emitter();
144
+ this.onDidChangeCollapsed = this.onDidChangeCollapsedEmitter.event;
145
+ this.addClass('multi-diff-entry');
146
+ this.modifiedUri = resource.modifiedUri;
147
+ this.header = headerWidget;
148
+ this.boxLayout = new browser_1.BoxLayout({ direction: 'top-to-bottom', spacing: 0 });
149
+ browser_1.BoxLayout.setStretch(headerWidget, 0);
150
+ browser_1.BoxLayout.setSizeBasis(headerWidget, exports.HEADER_HEIGHT);
151
+ this.boxLayout.addWidget(headerWidget);
152
+ this.currentContent = new DiffEntryLoadingWidget();
153
+ browser_1.BoxLayout.setStretch(this.currentContent, 1);
154
+ this.boxLayout.addWidget(this.currentContent);
155
+ this.layout = this.boxLayout;
156
+ this.setHeight(exports.MIN_ENTRY_HEIGHT);
157
+ this.toDispose.pushAll([
158
+ this.onDidChangeCollapsedEmitter,
159
+ this.onDidLoadEditorEmitter,
160
+ this.header.onDidToggleCollapse(() => this.setCollapsed(!this._isCollapsed))
161
+ ]);
162
+ }
163
+ get editorWidget() {
164
+ return this._editorWidget;
165
+ }
166
+ get isCollapsed() {
167
+ return this._isCollapsed;
168
+ }
169
+ setCollapsed(collapsed) {
170
+ if (this._isCollapsed === collapsed) {
171
+ return;
172
+ }
173
+ this._isCollapsed = collapsed;
174
+ this.header.setCollapsed(collapsed);
175
+ this.currentContent.setHidden(collapsed);
176
+ if (collapsed) {
177
+ this.lastExpandedHeight = this.getCurrentHeight() || exports.MIN_ENTRY_HEIGHT;
178
+ this.setNodeHeight(this.getNonContentHeight());
179
+ }
180
+ else {
181
+ this.setNodeHeight(this.lastExpandedHeight);
182
+ }
183
+ this.onDidChangeCollapsedEmitter.fire(collapsed);
184
+ if (!collapsed) {
185
+ this.loadEditor();
186
+ }
187
+ }
188
+ async loadEditor(retry = false) {
189
+ if (this.isDisposed || this._isCollapsed || this._editorWidget || this.loading || (!retry && this.loadAttempted) || !this.createEditor) {
190
+ return;
191
+ }
192
+ this.loading = true;
193
+ this.loadAttempted = true;
194
+ this.replaceContent(new DiffEntryLoadingWidget());
195
+ try {
196
+ const editorWidget = await this.createEditor();
197
+ if (this.isDisposed) {
198
+ editorWidget.dispose();
199
+ return;
200
+ }
201
+ this.setEditor(editorWidget);
202
+ this.onDidLoadEditorEmitter.fire();
203
+ }
204
+ catch (error) {
205
+ if (!this.isDisposed) {
206
+ const message = error instanceof Error ? error.message : String(error);
207
+ this.setError(core_1.nls.localize('theia/scm/multiDiffEditor/loadFailed', 'Failed to load diff: {0}', message));
208
+ }
209
+ }
210
+ finally {
211
+ this.loading = false;
212
+ }
213
+ }
214
+ setError(message) {
215
+ this.replaceContent(new DiffEntryErrorWidget(message, () => this.loadEditor(true)));
216
+ }
217
+ setEditor(editorWidget) {
218
+ this._editorWidget = editorWidget;
219
+ this.replaceContent(editorWidget);
220
+ this.trackContentHeight(editorWidget);
221
+ }
222
+ /**
223
+ * Replace the current content widget (loading/editor/error) with a new one.
224
+ * Using BoxLayout directly (instead of a nested Panel) ensures that Monaco's
225
+ * container gets explicit `position: absolute` + `width`/`height` from Lumino's
226
+ * LayoutItem, which is required for Monaco to lay out correctly.
227
+ */
228
+ replaceContent(widget) {
229
+ const old = this.currentContent;
230
+ if (old === widget) {
231
+ return;
232
+ }
233
+ widget.setHidden(this._isCollapsed);
234
+ browser_1.BoxLayout.setStretch(widget, 1);
235
+ this.boxLayout.addWidget(widget);
236
+ this.currentContent = widget;
237
+ // eslint-disable-next-line no-null/no-null
238
+ old.parent = null;
239
+ old.dispose();
240
+ }
241
+ /**
242
+ * Fit multiple entries to their content, capped at 5000 pixels; a single entry fills the viewport. While collapsed,
243
+ * remember the requested height for expansion.
244
+ */
245
+ setHeight(height) {
246
+ this.requestedHeight = height;
247
+ const limit = this.fillViewport ? (this.availableHeight ?? exports.MAX_ENTRY_HEIGHT) : 5000;
248
+ const clamped = Math.max(this.getNonContentHeight(), this.fillViewport ? limit : Math.min(limit, height));
249
+ this.lastExpandedHeight = clamped;
250
+ if (!this._isCollapsed) {
251
+ this.setNodeHeight(clamped);
252
+ }
253
+ this.updateInnerScrolling();
254
+ }
255
+ /** Update the viewport height, used when a single entry fills it. */
256
+ setAvailableHeight(height, fillViewport = true) {
257
+ this.availableHeight = Math.max(this.getNonContentHeight(), height);
258
+ this.fillViewport = fillViewport;
259
+ this.setHeight(this.requestedHeight);
260
+ }
261
+ getNonContentHeight() {
262
+ const style = window.getComputedStyle(this.node);
263
+ return exports.HEADER_HEIGHT + (parseFloat(style.borderTopWidth) || 0) + (parseFloat(style.borderBottomWidth) || 0);
264
+ }
265
+ updateInnerScrolling() {
266
+ if (this.contentHeight === undefined || !this._editorWidget) {
267
+ return;
268
+ }
269
+ const scrolling = this.contentHeight > this.lastExpandedHeight - this.getNonContentHeight();
270
+ if (this.innerScrolling === scrolling) {
271
+ return;
272
+ }
273
+ // Set this before updating Monaco options, which can emit content-size events synchronously.
274
+ this.innerScrolling = scrolling;
275
+ const editor = monaco_editor_1.MonacoEditor.get(this._editorWidget);
276
+ const options = {
277
+ scrollbar: { vertical: scrolling ? 'auto' : 'hidden', handleMouseWheel: scrolling, alwaysConsumeMouseWheel: false }
278
+ };
279
+ if (editor instanceof monaco_diff_editor_1.MonacoDiffEditor) {
280
+ editor.diffEditor.updateOptions(options);
281
+ }
282
+ else {
283
+ editor?.getControl().updateOptions(options);
284
+ }
285
+ }
286
+ onAfterAttach(msg) {
287
+ super.onAfterAttach(msg);
288
+ if (this.contentHeight !== undefined) {
289
+ this.setHeight(this.contentHeight + this.getNonContentHeight());
290
+ }
291
+ }
292
+ getCurrentHeight() {
293
+ const parsed = parseInt(this.node.style.height, 10);
294
+ return Number.isFinite(parsed) ? parsed : 0;
295
+ }
296
+ setNodeHeight(height) {
297
+ if (this.node.style.height === `${height}px`) {
298
+ return;
299
+ }
300
+ this.node.style.height = `${height}px`;
301
+ if (this.isAttached) {
302
+ browser_1.MessageLoop.sendMessage(this, browser_1.Widget.ResizeMessage.UnknownSize);
303
+ }
304
+ }
305
+ /**
306
+ * Subscribe to the embedded editor's content size changes and size this entry accordingly.
307
+ * The subscriptions are disposed together with this widget.
308
+ */
309
+ trackContentHeight(editorWidget) {
310
+ const monacoEditor = monaco_editor_1.MonacoEditor.get(editorWidget);
311
+ if (!monacoEditor) {
312
+ return;
313
+ }
314
+ const control = monacoEditor instanceof monaco_diff_editor_1.MonacoDiffEditor ? monacoEditor.diffEditor.getModifiedEditor() : monacoEditor.getControl();
315
+ this.toDispose.push((0, browser_1.addEventListener)(editorWidget.node, 'wheel', event => {
316
+ if (!this.innerScrolling || event.ctrlKey || event.shiftKey || Math.abs(event.deltaY) <= Math.abs(event.deltaX)) {
317
+ return;
318
+ }
319
+ const scrollTop = control.getScrollTop();
320
+ const atBoundary = event.deltaY < 0
321
+ ? scrollTop <= 0
322
+ : scrollTop >= control.getScrollHeight() - control.getLayoutInfo().height;
323
+ if (atBoundary) {
324
+ // Monaco does not apply alwaysConsumeMouseWheel changes to an existing scrollbar.
325
+ event.stopPropagation();
326
+ }
327
+ }, true));
328
+ const getContentHeight = () => {
329
+ if (monacoEditor instanceof monaco_diff_editor_1.MonacoDiffEditor) {
330
+ return Math.max(monacoEditor.diffEditor.getOriginalEditor().getContentHeight(), monacoEditor.diffEditor.getModifiedEditor().getContentHeight());
331
+ }
332
+ return monacoEditor.getControl().getContentHeight();
333
+ };
334
+ const updateHeight = () => {
335
+ this.contentHeight = getContentHeight();
336
+ this.setHeight(this.contentHeight + this.getNonContentHeight());
337
+ };
338
+ if (monacoEditor instanceof monaco_diff_editor_1.MonacoDiffEditor) {
339
+ this.toDispose.push(monacoEditor.diffEditor.getOriginalEditor().onDidContentSizeChange(updateHeight));
340
+ this.toDispose.push(monacoEditor.diffEditor.getModifiedEditor().onDidContentSizeChange(updateHeight));
341
+ }
342
+ else {
343
+ this.toDispose.push(monacoEditor.getControl().onDidContentSizeChange(updateHeight));
344
+ }
345
+ updateHeight();
346
+ }
347
+ }
348
+ exports.DiffEntryWidget = DiffEntryWidget;
349
+ /**
350
+ * Widget that displays a list of diff editors stacked vertically.
351
+ *
352
+ * **Async-loading contract:** the widget is returned immediately by the factory with
353
+ * placeholder entries (one per resource) showing a loading indicator. Each
354
+ * {@link DiffEntryWidget.editorWidget} is `undefined` until the embedded diff editor
355
+ * finishes loading, at which point the placeholder is replaced and
356
+ * {@link onDidChangeTrackableWidgets} fires so the {@link ApplicationShell} focus
357
+ * tracker picks up the new editor. Consumers must not assume that all embedded editors
358
+ * are present synchronously when this widget is returned.
359
+ */
360
+ let MultiDiffEditor = class MultiDiffEditor extends browser_1.BaseWidget {
361
+ constructor() {
362
+ super(...arguments);
363
+ this.entryWidgets = [];
364
+ this.onDidChangeTrackableWidgetsEmitter = new core_1.Emitter();
365
+ this.onDidChangeTrackableWidgets = this.onDidChangeTrackableWidgetsEmitter.event;
366
+ }
367
+ init() {
368
+ this.toDispose.push(this.onDidChangeTrackableWidgetsEmitter);
369
+ this.addClass('theia-multi-diff-editor');
370
+ this.encodedUri = multi_diff_editor_uri_1.MultiDiffEditorUri.encode(this.data);
371
+ this.id = MultiDiffEditorOpenHandler.ID + ':' + this.encodedUri.toString();
372
+ this.title.label = this.data.title;
373
+ this.title.caption = this.data.title;
374
+ this.title.closable = true;
375
+ this.title.iconClass = 'codicon codicon-diff-multiple file-icon';
376
+ this.entriesPanel = new browser_1.Panel();
377
+ this.entriesPanel.addClass('multi-diff-editor-entries');
378
+ const layout = new browser_1.PanelLayout();
379
+ layout.addWidget(this.entriesPanel);
380
+ this.layout = layout;
381
+ if (typeof IntersectionObserver !== 'undefined') {
382
+ this.entryObserver = new IntersectionObserver(entries => {
383
+ if (!this.isDisposed) {
384
+ for (const observed of entries) {
385
+ if (observed.isIntersecting) {
386
+ this.entryWidgets.find(entry => entry.node === observed.target)?.loadEditor();
387
+ }
388
+ }
389
+ }
390
+ }, { root: this.entriesPanel.node, rootMargin: '500px 0px' });
391
+ this.toDispose.push({ dispose: () => this.entryObserver?.disconnect() });
392
+ }
393
+ this.addEventListener(this.entriesPanel.node, 'focusin', event => {
394
+ this.lastFocusedEntry = this.entryWidgets.find(entry => event.target instanceof Node && entry.node.contains(event.target));
395
+ });
396
+ }
397
+ get entries() {
398
+ return this.entryWidgets;
399
+ }
400
+ addDiffEntry(resource, headerWidget, createEditor) {
401
+ const entry = new DiffEntryWidget(resource, headerWidget, createEditor);
402
+ this.entryWidgets.push(entry);
403
+ this.entriesPanel.addWidget(entry);
404
+ this.toDispose.push(entry.onDidLoadEditor(() => {
405
+ this.notifyTrackableWidgetsChanged();
406
+ if (this.pendingReveal === entry) {
407
+ this.scrollToEntry(entry);
408
+ }
409
+ }));
410
+ this.entryObserver?.observe(entry.node);
411
+ return entry;
412
+ }
413
+ /**
414
+ * Notify listeners (in particular, the {@link ApplicationShell} focus tracker) that a
415
+ * new editor widget has been attached to one of the entries. Called on the entry's
416
+ * {@link DiffEntryWidget.onDidLoadEditor} event.
417
+ */
418
+ notifyTrackableWidgetsChanged() {
419
+ this.onDidChangeTrackableWidgetsEmitter.fire(this.getTrackableWidgets());
420
+ }
421
+ revealResource(modifiedUri) {
422
+ const uriStr = modifiedUri.toString();
423
+ const entry = this.entryWidgets.find(e => e.modifiedUri.toString() === uriStr);
424
+ if (!entry) {
425
+ return;
426
+ }
427
+ this.pendingReveal = entry;
428
+ entry.setCollapsed(false);
429
+ entry.loadEditor();
430
+ this.scrollToEntry(entry);
431
+ }
432
+ scrollToEntry(entry) {
433
+ // Scroll only the entries panel, and repeat after the target editor's initial layout.
434
+ requestAnimationFrame(() => {
435
+ if (!this.isDisposed && entry.isAttached && this.pendingReveal === entry) {
436
+ this.entriesPanel.node.scrollTop = entry.node.offsetTop;
437
+ if (entry.editorWidget) {
438
+ this.pendingReveal = undefined;
439
+ }
440
+ }
441
+ });
442
+ }
443
+ getTrackableWidgets() {
444
+ const result = [];
445
+ for (const entry of this.entryWidgets) {
446
+ if (entry.editorWidget) {
447
+ result.push(entry.editorWidget);
448
+ }
449
+ }
450
+ return result;
451
+ }
452
+ onActivateRequest(msg) {
453
+ super.onActivateRequest(msg);
454
+ const viewport = this.entriesPanel.node.getBoundingClientRect();
455
+ const isVisible = (candidate) => {
456
+ const bounds = candidate.node.getBoundingClientRect();
457
+ return !candidate.isCollapsed && !!candidate.editorWidget && bounds.bottom > viewport.top && bounds.top < viewport.bottom;
458
+ };
459
+ const entry = this.lastFocusedEntry && isVisible(this.lastFocusedEntry)
460
+ ? this.lastFocusedEntry : this.entryWidgets.find(isVisible);
461
+ if (entry?.editorWidget) {
462
+ const scrollPositions = [];
463
+ for (let node = this.entriesPanel.node; node; node = node.parentElement ?? undefined) {
464
+ scrollPositions.push({ node, top: node.scrollTop, left: node.scrollLeft });
465
+ }
466
+ // Deliver activation synchronously so focus-induced ancestor scrolling can be restored.
467
+ browser_1.MessageLoop.sendMessage(entry.editorWidget, browser_1.Widget.Msg.ActivateRequest);
468
+ for (const position of scrollPositions) {
469
+ position.node.scrollTop = position.top;
470
+ position.node.scrollLeft = position.left;
471
+ }
472
+ }
473
+ else {
474
+ this.node.tabIndex = -1;
475
+ this.node.focus({ preventScroll: true });
476
+ }
477
+ }
478
+ onResize(msg) {
479
+ super.onResize(msg);
480
+ const height = msg.height < 0 ? this.node.clientHeight : msg.height;
481
+ if (height > 0) {
482
+ for (const entry of this.entryWidgets) {
483
+ entry.setAvailableHeight(height, this.entryWidgets.length === 1);
484
+ }
485
+ }
486
+ }
487
+ onAfterAttach(msg) {
488
+ super.onAfterAttach(msg);
489
+ if (!this.entryObserver) {
490
+ for (const entry of this.entryWidgets) {
491
+ entry.loadEditor();
492
+ }
493
+ }
494
+ }
495
+ storeState() {
496
+ // Resource providers may not be registered yet when the layout is restored.
497
+ return undefined;
498
+ }
499
+ restoreState(_state) { }
500
+ getResourceUri() {
501
+ return this.encodedUri;
502
+ }
503
+ createMoveToUri(_resourceUri) {
504
+ // Multi-diff editors represent a collection of resources, so they cannot be moved to a single resource.
505
+ return undefined;
506
+ }
507
+ };
508
+ exports.MultiDiffEditor = MultiDiffEditor;
509
+ tslib_1.__decorate([
510
+ (0, inversify_1.inject)(exports.MultiDiffEditorData),
511
+ tslib_1.__metadata("design:type", Object)
512
+ ], MultiDiffEditor.prototype, "data", void 0);
513
+ tslib_1.__decorate([
514
+ (0, inversify_1.postConstruct)(),
515
+ tslib_1.__metadata("design:type", Function),
516
+ tslib_1.__metadata("design:paramtypes", []),
517
+ tslib_1.__metadata("design:returntype", void 0)
518
+ ], MultiDiffEditor.prototype, "init", null);
519
+ exports.MultiDiffEditor = MultiDiffEditor = tslib_1.__decorate([
520
+ (0, inversify_1.injectable)()
521
+ ], MultiDiffEditor);
522
+ let MultiDiffEditorLabelProvider = class MultiDiffEditorLabelProvider {
523
+ canHandle(element) {
524
+ return element instanceof core_1.URI && multi_diff_editor_uri_1.MultiDiffEditorUri.isMultiDiffEditorUri(element) ? 20 : 0;
525
+ }
526
+ getName(uri) {
527
+ return multi_diff_editor_uri_1.MultiDiffEditorUri.decode(uri).title;
528
+ }
529
+ getLongName(uri) {
530
+ return this.getName(uri);
531
+ }
532
+ getIcon() {
533
+ return (0, browser_1.codicon)('diff-multiple');
534
+ }
535
+ };
536
+ exports.MultiDiffEditorLabelProvider = MultiDiffEditorLabelProvider;
537
+ exports.MultiDiffEditorLabelProvider = MultiDiffEditorLabelProvider = tslib_1.__decorate([
538
+ (0, inversify_1.injectable)()
539
+ ], MultiDiffEditorLabelProvider);
540
+ let MultiDiffEditorOpenHandler = class MultiDiffEditorOpenHandler extends browser_1.NavigatableWidgetOpenHandler {
541
+ constructor() {
542
+ super(...arguments);
543
+ this.id = MultiDiffEditorOpenHandler_1.ID;
544
+ this.label = core_1.nls.localizeByDefault('Multi Diff Editor');
545
+ }
546
+ static { MultiDiffEditorOpenHandler_1 = this; }
547
+ static { this.ID = 'multi-diff-editor-opener'; }
548
+ canHandle(uri, options) {
549
+ return multi_diff_editor_uri_1.MultiDiffEditorUri.isMultiDiffEditorUri(uri) ? 1000 : 0;
550
+ }
551
+ async open(uri, options) {
552
+ const widget = await super.open(uri, options);
553
+ if (options?.reveal) {
554
+ widget.revealResource(options.reveal);
555
+ }
556
+ return widget;
557
+ }
558
+ };
559
+ exports.MultiDiffEditorOpenHandler = MultiDiffEditorOpenHandler;
560
+ exports.MultiDiffEditorOpenHandler = MultiDiffEditorOpenHandler = MultiDiffEditorOpenHandler_1 = tslib_1.__decorate([
561
+ (0, inversify_1.injectable)()
562
+ ], MultiDiffEditorOpenHandler);
563
+ //# sourceMappingURL=multi-diff-editor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-diff-editor.js","sourceRoot":"","sources":["../../../src/browser/multi-diff-editor/multi-diff-editor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=multi-diff-editor.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-diff-editor.spec.d.ts","sourceRoot":"","sources":["../../../src/browser/multi-diff-editor/multi-diff-editor.spec.ts"],"names":[],"mappings":""}