@codingame/monaco-vscode-notebook-service-override 4.1.0 → 4.1.2

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 (77) hide show
  1. package/external/rollup-plugin-styles/dist/runtime/inject-css.js +3 -0
  2. package/external/tslib/tslib.es6.js +11 -0
  3. package/notebook.js +12 -12
  4. package/override/vs/platform/dialogs/common/dialogs.js +10 -0
  5. package/package.json +2 -2
  6. package/vscode/src/vs/workbench/contrib/codeEditor/browser/emptyTextEditorHint/emptyTextEditorHint.css.js +6 -0
  7. package/vscode/src/vs/workbench/contrib/codeEditor/browser/emptyTextEditorHint/emptyTextEditorHint.js +391 -0
  8. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/contributedStatusBarItemController.js +109 -0
  9. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/statusBarProviders.js +173 -0
  10. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/clipboard/notebookClipboard.js +544 -0
  11. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/debug/notebookBreakpoints.js +106 -0
  12. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/debug/notebookCellPausing.js +67 -0
  13. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/debug/notebookDebugDecorations.js +165 -0
  14. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/editorHint/emptyCellEditorHint.js +67 -0
  15. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/editorStatusBar/editorStatusBar.js +320 -0
  16. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/execute/executionEditorProgress.js +72 -0
  17. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/media/notebookFind.css.js +6 -0
  18. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFind.js +168 -0
  19. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/format/formatting.js +209 -0
  20. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/gettingStarted/notebookGettingStarted.js +84 -0
  21. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/kernelDetection/notebookKernelDetection.js +82 -0
  22. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/layout/layoutActions.js +67 -0
  23. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/marker/markerProvider.js +101 -0
  24. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/navigation/arrow.js +393 -0
  25. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/notebookVariables/notebookVariableContextKeys.js +5 -0
  26. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/notebookVariables/notebookVariables.js +97 -0
  27. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/notebookVariables/notebookVariablesDataSource.js +120 -0
  28. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/notebookVariables/notebookVariablesTree.js +60 -0
  29. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/notebookVariables/notebookVariablesView.js +150 -0
  30. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/outline/notebookOutline.js +656 -0
  31. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/profile/notebookProfile.js +77 -0
  32. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/saveParticipants/saveParticipants.js +517 -0
  33. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/troubleshoot/layout.js +159 -0
  34. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/undoRedo/notebookUndoRedo.js +56 -0
  35. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/viewportWarmup/viewportWarmup.js +94 -0
  36. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/apiActions.js +51 -0
  37. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.js +652 -0
  38. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/executeActions.js +721 -0
  39. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/insertCellActions.js +351 -0
  40. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/layoutActions.js +315 -0
  41. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/sectionActions.js +199 -0
  42. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffCellEditorOptions.js +47 -0
  43. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffComponents.js +1297 -0
  44. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementOutputs.js +284 -0
  45. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementViewModel.js +563 -0
  46. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffNestedCellViewModel.js +115 -0
  47. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/eventDispatcher.js +39 -0
  48. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiff.css.js +6 -0
  49. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffActions.js +313 -0
  50. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditor.js +911 -0
  51. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditorBrowser.js +13 -0
  52. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffList.js +395 -0
  53. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffOverviewRuler.js +185 -0
  54. package/vscode/src/vs/workbench/contrib/notebook/browser/notebook.contribution.js +1187 -0
  55. package/vscode/src/vs/workbench/contrib/notebook/browser/notebookAccessibility.js +159 -0
  56. package/vscode/src/vs/workbench/contrib/notebook/browser/notebookExtensionPoint.js +451 -0
  57. package/vscode/src/vs/workbench/contrib/notebook/browser/services/notebookEditorServiceImpl.js +192 -0
  58. package/vscode/src/vs/workbench/contrib/notebook/browser/services/notebookExecutionServiceImpl.js +106 -0
  59. package/vscode/src/vs/workbench/contrib/notebook/browser/services/notebookExecutionStateServiceImpl.js +510 -0
  60. package/vscode/src/vs/workbench/contrib/notebook/browser/services/notebookKernelHistoryServiceImpl.js +130 -0
  61. package/vscode/src/vs/workbench/contrib/notebook/browser/services/notebookKernelServiceImpl.js +341 -0
  62. package/vscode/src/vs/workbench/contrib/notebook/browser/services/notebookKeymapServiceImpl.js +111 -0
  63. package/vscode/src/vs/workbench/contrib/notebook/browser/services/notebookLoggingServiceImpl.js +28 -0
  64. package/vscode/src/vs/workbench/contrib/notebook/browser/services/notebookRendererMessagingServiceImpl.js +65 -0
  65. package/vscode/src/vs/workbench/contrib/notebook/browser/services/notebookServiceImpl.js +641 -0
  66. package/vscode/src/vs/workbench/contrib/notebook/browser/services/notebookWorkerServiceImpl.js +200 -0
  67. package/vscode/src/vs/workbench/contrib/notebook/common/model/cellEdit.js +90 -0
  68. package/vscode/src/vs/workbench/contrib/notebook/common/model/notebookTextModel.js +1002 -0
  69. package/vscode/src/vs/workbench/contrib/notebook/common/notebookDiffEditorInput.js +103 -0
  70. package/vscode/src/vs/workbench/contrib/notebook/common/notebookEditorModelResolverServiceImpl.js +203 -0
  71. package/vscode/src/vs/workbench/contrib/notebook/common/notebookOutputRenderer.js +80 -0
  72. package/vscode/src/vs/workbench/contrib/notebook/common/notebookProvider.js +98 -0
  73. package/vscode/src/vs/workbench/services/workingCopy/common/abstractFileWorkingCopyManager.js +89 -0
  74. package/vscode/src/vs/workbench/services/workingCopy/common/fileWorkingCopyManager.js +386 -0
  75. package/vscode/src/vs/workbench/services/workingCopy/common/storedFileWorkingCopyManager.js +408 -0
  76. package/vscode/src/vs/workbench/services/workingCopy/common/untitledFileWorkingCopy.js +144 -0
  77. package/vscode/src/vs/workbench/services/workingCopy/common/untitledFileWorkingCopyManager.js +129 -0
@@ -0,0 +1,13 @@
1
+ import { RawContextKey } from 'vscode/vscode/vs/platform/contextkey/common/contextkey';
2
+
3
+ var DiffSide;
4
+ ( (function(DiffSide) {
5
+ DiffSide[DiffSide["Original"] = 0] = "Original";
6
+ DiffSide[DiffSide["Modified"] = 1] = "Modified";
7
+ })(DiffSide || (DiffSide = {})));
8
+ const DIFF_CELL_MARGIN = 16;
9
+ const NOTEBOOK_DIFF_CELL_INPUT = ( new RawContextKey('notebookDiffCellInputChanged', false));
10
+ const NOTEBOOK_DIFF_CELL_PROPERTY = ( new RawContextKey('notebookDiffCellPropertyChanged', false));
11
+ const NOTEBOOK_DIFF_CELL_PROPERTY_EXPANDED = ( new RawContextKey('notebookDiffCellPropertyExpanded', false));
12
+
13
+ export { DIFF_CELL_MARGIN, DiffSide, NOTEBOOK_DIFF_CELL_INPUT, NOTEBOOK_DIFF_CELL_PROPERTY, NOTEBOOK_DIFF_CELL_PROPERTY_EXPANDED };
@@ -0,0 +1,395 @@
1
+ import { __decorate, __param } from '../../../../../../../../external/tslib/tslib.es6.js';
2
+ import './notebookDiff.css.js';
3
+ import { $, append, createStyleSheet } from 'vscode/vscode/vs/base/browser/dom';
4
+ import { MouseController, isMonacoEditor } from 'vscode/vscode/vs/base/browser/ui/list/listWidget';
5
+ import { DisposableStore } from 'vscode/vscode/vs/base/common/lifecycle';
6
+ import { IConfigurationService } from 'vscode/vscode/vs/platform/configuration/common/configuration';
7
+ import { IContextKeyService } from 'vscode/vscode/vs/platform/contextkey/common/contextkey';
8
+ import { IInstantiationService } from 'vscode/vscode/vs/platform/instantiation/common/instantiation';
9
+ import { IKeybindingService } from 'vscode/vscode/vs/platform/keybinding/common/keybinding';
10
+ import { WorkbenchList, IListService } from 'vscode/vscode/vs/platform/list/browser/listService';
11
+ import { IThemeService } from 'vscode/vscode/vs/platform/theme/common/themeService';
12
+ import { DIFF_CELL_MARGIN } from './notebookDiffEditorBrowser.js';
13
+ import { InsertElement, DeletedElement, getOptimizedNestedCodeEditorWidgetOptions, ModifiedElement } from './diffComponents.js';
14
+ import { CodeEditorWidget } from 'vscode/vscode/vs/editor/browser/widget/codeEditor/codeEditorWidget';
15
+ import { DiffEditorWidget } from 'vscode/vscode/vs/editor/browser/widget/diffEditor/diffEditorWidget';
16
+ import { MenuItemAction, IMenuService } from 'vscode/vscode/vs/platform/actions/common/actions';
17
+ import { IContextMenuService } from 'vscode/vscode/vs/platform/contextview/browser/contextView';
18
+ import { INotificationService } from 'vscode/vscode/vs/platform/notification/common/notification';
19
+ import { CodiconActionViewItem } from 'vscode/vscode/vs/workbench/contrib/notebook/browser/view/cellParts/cellActionView';
20
+ import { BareFontInfo } from 'vscode/vscode/vs/editor/common/config/fontInfo';
21
+ import { PixelRatio } from 'vscode/vscode/vs/base/browser/pixelRatio';
22
+ import { WorkbenchToolBar } from 'vscode/vscode/vs/platform/actions/browser/toolbar';
23
+ import { fixedEditorOptions, fixedDiffEditorOptions } from './diffCellEditorOptions.js';
24
+ import { IAccessibilityService } from 'vscode/vscode/vs/platform/accessibility/common/accessibility';
25
+
26
+ var CellDiffSingleSideRenderer_1, CellDiffSideBySideRenderer_1;
27
+ let NotebookCellTextDiffListDelegate = class NotebookCellTextDiffListDelegate {
28
+ constructor(targetWindow, configurationService) {
29
+ this.configurationService = configurationService;
30
+ const editorOptions = this.configurationService.getValue('editor');
31
+ this.lineHeight = BareFontInfo.createFromRawSettings(editorOptions, PixelRatio.getInstance(targetWindow).value).lineHeight;
32
+ }
33
+ getHeight(element) {
34
+ return element.getHeight(this.lineHeight);
35
+ }
36
+ hasDynamicHeight(element) {
37
+ return false;
38
+ }
39
+ getTemplateId(element) {
40
+ switch (element.type) {
41
+ case 'delete':
42
+ case 'insert':
43
+ return CellDiffSingleSideRenderer.TEMPLATE_ID;
44
+ case 'modified':
45
+ case 'unchanged':
46
+ return CellDiffSideBySideRenderer.TEMPLATE_ID;
47
+ }
48
+ }
49
+ };
50
+ NotebookCellTextDiffListDelegate = ( __decorate([
51
+ ( __param(1, IConfigurationService))
52
+ ], NotebookCellTextDiffListDelegate));
53
+ let CellDiffSingleSideRenderer = class CellDiffSingleSideRenderer {
54
+ static { CellDiffSingleSideRenderer_1 = this; }
55
+ static { this.TEMPLATE_ID = 'cell_diff_single'; }
56
+ constructor(notebookEditor, instantiationService) {
57
+ this.notebookEditor = notebookEditor;
58
+ this.instantiationService = instantiationService;
59
+ }
60
+ get templateId() {
61
+ return CellDiffSingleSideRenderer_1.TEMPLATE_ID;
62
+ }
63
+ renderTemplate(container) {
64
+ const body = $('.cell-body');
65
+ append(container, body);
66
+ const diffEditorContainer = $('.cell-diff-editor-container');
67
+ append(body, diffEditorContainer);
68
+ const diagonalFill = append(body, $('.diagonal-fill'));
69
+ const sourceContainer = append(diffEditorContainer, $('.source-container'));
70
+ const editor = this._buildSourceEditor(sourceContainer);
71
+ const metadataHeaderContainer = append(diffEditorContainer, $('.metadata-header-container'));
72
+ const metadataInfoContainer = append(diffEditorContainer, $('.metadata-info-container'));
73
+ const outputHeaderContainer = append(diffEditorContainer, $('.output-header-container'));
74
+ const outputInfoContainer = append(diffEditorContainer, $('.output-info-container'));
75
+ const borderContainer = append(body, $('.border-container'));
76
+ const leftBorder = append(borderContainer, $('.left-border'));
77
+ const rightBorder = append(borderContainer, $('.right-border'));
78
+ const topBorder = append(borderContainer, $('.top-border'));
79
+ const bottomBorder = append(borderContainer, $('.bottom-border'));
80
+ return {
81
+ body,
82
+ container,
83
+ diffEditorContainer,
84
+ diagonalFill,
85
+ sourceEditor: editor,
86
+ metadataHeaderContainer,
87
+ metadataInfoContainer,
88
+ outputHeaderContainer,
89
+ outputInfoContainer,
90
+ leftBorder,
91
+ rightBorder,
92
+ topBorder,
93
+ bottomBorder,
94
+ elementDisposables: ( new DisposableStore())
95
+ };
96
+ }
97
+ _buildSourceEditor(sourceContainer) {
98
+ const editorContainer = append(sourceContainer, $('.editor-container'));
99
+ const editor = this.instantiationService.createInstance(CodeEditorWidget, editorContainer, {
100
+ ...fixedEditorOptions,
101
+ dimension: {
102
+ width: (this.notebookEditor.getLayoutInfo().width - 2 * DIFF_CELL_MARGIN) / 2 - 18,
103
+ height: 0
104
+ },
105
+ automaticLayout: false,
106
+ overflowWidgetsDomNode: this.notebookEditor.getOverflowContainerDomNode()
107
+ }, {});
108
+ return editor;
109
+ }
110
+ renderElement(element, index, templateData, height) {
111
+ templateData.body.classList.remove('left', 'right', 'full');
112
+ switch (element.type) {
113
+ case 'delete':
114
+ templateData.elementDisposables.add(this.instantiationService.createInstance(DeletedElement, this.notebookEditor, element, templateData));
115
+ return;
116
+ case 'insert':
117
+ templateData.elementDisposables.add(this.instantiationService.createInstance(InsertElement, this.notebookEditor, element, templateData));
118
+ return;
119
+ }
120
+ }
121
+ disposeTemplate(templateData) {
122
+ templateData.container.innerText = '';
123
+ templateData.sourceEditor.dispose();
124
+ templateData.elementDisposables.dispose();
125
+ }
126
+ disposeElement(element, index, templateData) {
127
+ templateData.elementDisposables.clear();
128
+ }
129
+ };
130
+ CellDiffSingleSideRenderer = CellDiffSingleSideRenderer_1 = ( __decorate([
131
+ ( __param(1, IInstantiationService))
132
+ ], CellDiffSingleSideRenderer));
133
+ let CellDiffSideBySideRenderer = class CellDiffSideBySideRenderer {
134
+ static { CellDiffSideBySideRenderer_1 = this; }
135
+ static { this.TEMPLATE_ID = 'cell_diff_side_by_side'; }
136
+ constructor(notebookEditor, instantiationService, contextMenuService, keybindingService, menuService, contextKeyService, notificationService, themeService, accessibilityService) {
137
+ this.notebookEditor = notebookEditor;
138
+ this.instantiationService = instantiationService;
139
+ this.contextMenuService = contextMenuService;
140
+ this.keybindingService = keybindingService;
141
+ this.menuService = menuService;
142
+ this.contextKeyService = contextKeyService;
143
+ this.notificationService = notificationService;
144
+ this.themeService = themeService;
145
+ this.accessibilityService = accessibilityService;
146
+ }
147
+ get templateId() {
148
+ return CellDiffSideBySideRenderer_1.TEMPLATE_ID;
149
+ }
150
+ renderTemplate(container) {
151
+ const body = $('.cell-body');
152
+ append(container, body);
153
+ const diffEditorContainer = $('.cell-diff-editor-container');
154
+ append(body, diffEditorContainer);
155
+ const sourceContainer = append(diffEditorContainer, $('.source-container'));
156
+ const { editor, editorContainer } = this._buildSourceEditor(sourceContainer);
157
+ const inputToolbarContainer = append(sourceContainer, $('.editor-input-toolbar-container'));
158
+ const cellToolbarContainer = append(inputToolbarContainer, $('div.property-toolbar'));
159
+ const toolbar = this.instantiationService.createInstance(WorkbenchToolBar, cellToolbarContainer, {
160
+ actionViewItemProvider: (action, options) => {
161
+ if (action instanceof MenuItemAction) {
162
+ const item = ( new CodiconActionViewItem(
163
+ action,
164
+ { hoverDelegate: options.hoverDelegate },
165
+ this.keybindingService,
166
+ this.notificationService,
167
+ this.contextKeyService,
168
+ this.themeService,
169
+ this.contextMenuService,
170
+ this.accessibilityService
171
+ ));
172
+ return item;
173
+ }
174
+ return undefined;
175
+ }
176
+ });
177
+ const metadataHeaderContainer = append(diffEditorContainer, $('.metadata-header-container'));
178
+ const metadataInfoContainer = append(diffEditorContainer, $('.metadata-info-container'));
179
+ const outputHeaderContainer = append(diffEditorContainer, $('.output-header-container'));
180
+ const outputInfoContainer = append(diffEditorContainer, $('.output-info-container'));
181
+ const borderContainer = append(body, $('.border-container'));
182
+ const leftBorder = append(borderContainer, $('.left-border'));
183
+ const rightBorder = append(borderContainer, $('.right-border'));
184
+ const topBorder = append(borderContainer, $('.top-border'));
185
+ const bottomBorder = append(borderContainer, $('.bottom-border'));
186
+ return {
187
+ body,
188
+ container,
189
+ diffEditorContainer,
190
+ sourceEditor: editor,
191
+ editorContainer,
192
+ inputToolbarContainer,
193
+ toolbar,
194
+ metadataHeaderContainer,
195
+ metadataInfoContainer,
196
+ outputHeaderContainer,
197
+ outputInfoContainer,
198
+ leftBorder,
199
+ rightBorder,
200
+ topBorder,
201
+ bottomBorder,
202
+ elementDisposables: ( new DisposableStore())
203
+ };
204
+ }
205
+ _buildSourceEditor(sourceContainer) {
206
+ const editorContainer = append(sourceContainer, $('.editor-container'));
207
+ const editor = this.instantiationService.createInstance(DiffEditorWidget, editorContainer, {
208
+ ...fixedDiffEditorOptions,
209
+ padding: {
210
+ top: 24,
211
+ bottom: 12
212
+ },
213
+ overflowWidgetsDomNode: this.notebookEditor.getOverflowContainerDomNode(),
214
+ originalEditable: false,
215
+ ignoreTrimWhitespace: false,
216
+ automaticLayout: false,
217
+ dimension: {
218
+ height: 0,
219
+ width: 0
220
+ },
221
+ renderSideBySide: true,
222
+ useInlineViewWhenSpaceIsLimited: false
223
+ }, {
224
+ originalEditor: getOptimizedNestedCodeEditorWidgetOptions(),
225
+ modifiedEditor: getOptimizedNestedCodeEditorWidgetOptions()
226
+ });
227
+ return {
228
+ editor,
229
+ editorContainer
230
+ };
231
+ }
232
+ renderElement(element, index, templateData, height) {
233
+ templateData.body.classList.remove('left', 'right', 'full');
234
+ switch (element.type) {
235
+ case 'unchanged':
236
+ templateData.elementDisposables.add(this.instantiationService.createInstance(ModifiedElement, this.notebookEditor, element, templateData));
237
+ return;
238
+ case 'modified':
239
+ templateData.elementDisposables.add(this.instantiationService.createInstance(ModifiedElement, this.notebookEditor, element, templateData));
240
+ return;
241
+ }
242
+ }
243
+ disposeTemplate(templateData) {
244
+ templateData.container.innerText = '';
245
+ templateData.sourceEditor.dispose();
246
+ templateData.toolbar?.dispose();
247
+ templateData.elementDisposables.dispose();
248
+ }
249
+ disposeElement(element, index, templateData) {
250
+ if (templateData.toolbar) {
251
+ templateData.toolbar.context = undefined;
252
+ }
253
+ templateData.elementDisposables.clear();
254
+ }
255
+ };
256
+ CellDiffSideBySideRenderer = CellDiffSideBySideRenderer_1 = ( __decorate([
257
+ ( __param(1, IInstantiationService)),
258
+ ( __param(2, IContextMenuService)),
259
+ ( __param(3, IKeybindingService)),
260
+ ( __param(4, IMenuService)),
261
+ ( __param(5, IContextKeyService)),
262
+ ( __param(6, INotificationService)),
263
+ ( __param(7, IThemeService)),
264
+ ( __param(8, IAccessibilityService))
265
+ ], CellDiffSideBySideRenderer));
266
+ class NotebookMouseController extends MouseController {
267
+ onViewPointer(e) {
268
+ if (isMonacoEditor(e.browserEvent.target)) {
269
+ const focus = typeof e.index === 'undefined' ? [] : [e.index];
270
+ this.list.setFocus(focus, e.browserEvent);
271
+ }
272
+ else {
273
+ super.onViewPointer(e);
274
+ }
275
+ }
276
+ }
277
+ let NotebookTextDiffList = class NotebookTextDiffList extends WorkbenchList {
278
+ get rowsContainer() {
279
+ return this.view.containerDomNode;
280
+ }
281
+ constructor(listUser, container, delegate, renderers, contextKeyService, options, listService, configurationService, instantiationService) {
282
+ super(listUser, container, delegate, renderers, options, contextKeyService, listService, configurationService, instantiationService);
283
+ }
284
+ createMouseController(options) {
285
+ return ( new NotebookMouseController(this));
286
+ }
287
+ getCellViewScrollTop(element) {
288
+ const index = this.indexOf(element);
289
+ return this.view.elementTop(index);
290
+ }
291
+ getScrollHeight() {
292
+ return this.view.scrollHeight;
293
+ }
294
+ triggerScrollFromMouseWheelEvent(browserEvent) {
295
+ this.view.delegateScrollFromMouseWheelEvent(browserEvent);
296
+ }
297
+ delegateVerticalScrollbarPointerDown(browserEvent) {
298
+ this.view.delegateVerticalScrollbarPointerDown(browserEvent);
299
+ }
300
+ clear() {
301
+ super.splice(0, this.length);
302
+ }
303
+ updateElementHeight2(element, size) {
304
+ const viewIndex = this.indexOf(element);
305
+ const focused = this.getFocus();
306
+ this.view.updateElementHeight(viewIndex, size, focused.length ? focused[0] : null);
307
+ }
308
+ style(styles) {
309
+ const selectorSuffix = this.view.domId;
310
+ if (!this.styleElement) {
311
+ this.styleElement = createStyleSheet(this.view.domNode);
312
+ }
313
+ const suffix = selectorSuffix && `.${selectorSuffix}`;
314
+ const content = [];
315
+ if (styles.listBackground) {
316
+ content.push(`.monaco-list${suffix} > div.monaco-scrollable-element > .monaco-list-rows { background: ${styles.listBackground}; }`);
317
+ }
318
+ if (styles.listFocusBackground) {
319
+ content.push(`.monaco-list${suffix}:focus > div.monaco-scrollable-element > .monaco-list-rows > .monaco-list-row.focused { background-color: ${styles.listFocusBackground}; }`);
320
+ content.push(`.monaco-list${suffix}:focus > div.monaco-scrollable-element > .monaco-list-rows > .monaco-list-row.focused:hover { background-color: ${styles.listFocusBackground}; }`);
321
+ }
322
+ if (styles.listFocusForeground) {
323
+ content.push(`.monaco-list${suffix}:focus > div.monaco-scrollable-element > .monaco-list-rows > .monaco-list-row.focused { color: ${styles.listFocusForeground}; }`);
324
+ }
325
+ if (styles.listActiveSelectionBackground) {
326
+ content.push(`.monaco-list${suffix}:focus > div.monaco-scrollable-element > .monaco-list-rows > .monaco-list-row.selected { background-color: ${styles.listActiveSelectionBackground}; }`);
327
+ content.push(`.monaco-list${suffix}:focus > div.monaco-scrollable-element > .monaco-list-rows > .monaco-list-row.selected:hover { background-color: ${styles.listActiveSelectionBackground}; }`);
328
+ }
329
+ if (styles.listActiveSelectionForeground) {
330
+ content.push(`.monaco-list${suffix}:focus > div.monaco-scrollable-element > .monaco-list-rows > .monaco-list-row.selected { color: ${styles.listActiveSelectionForeground}; }`);
331
+ }
332
+ if (styles.listFocusAndSelectionBackground) {
333
+ content.push(`
334
+ .monaco-drag-image,
335
+ .monaco-list${suffix}:focus > div.monaco-scrollable-element > .monaco-list-rows > .monaco-list-row.selected.focused { background-color: ${styles.listFocusAndSelectionBackground}; }
336
+ `);
337
+ }
338
+ if (styles.listFocusAndSelectionForeground) {
339
+ content.push(`
340
+ .monaco-drag-image,
341
+ .monaco-list${suffix}:focus > div.monaco-scrollable-element > .monaco-list-rows > .monaco-list-row.selected.focused { color: ${styles.listFocusAndSelectionForeground}; }
342
+ `);
343
+ }
344
+ if (styles.listInactiveFocusBackground) {
345
+ content.push(`.monaco-list${suffix} > div.monaco-scrollable-element > .monaco-list-rows > .monaco-list-row.focused { background-color: ${styles.listInactiveFocusBackground}; }`);
346
+ content.push(`.monaco-list${suffix} > div.monaco-scrollable-element > .monaco-list-rows > .monaco-list-row.focused:hover { background-color: ${styles.listInactiveFocusBackground}; }`);
347
+ }
348
+ if (styles.listInactiveSelectionBackground) {
349
+ content.push(`.monaco-list${suffix} > div.monaco-scrollable-element > .monaco-list-rows > .monaco-list-row.selected { background-color: ${styles.listInactiveSelectionBackground}; }`);
350
+ content.push(`.monaco-list${suffix} > div.monaco-scrollable-element > .monaco-list-rows > .monaco-list-row.selected:hover { background-color: ${styles.listInactiveSelectionBackground}; }`);
351
+ }
352
+ if (styles.listInactiveSelectionForeground) {
353
+ content.push(`.monaco-list${suffix} > div.monaco-scrollable-element > .monaco-list-rows > .monaco-list-row.selected { color: ${styles.listInactiveSelectionForeground}; }`);
354
+ }
355
+ if (styles.listHoverBackground) {
356
+ content.push(`.monaco-list${suffix}:not(.drop-target) > div.monaco-scrollable-element > .monaco-list-rows > .monaco-list-row:hover:not(.selected):not(.focused) { background-color: ${styles.listHoverBackground}; }`);
357
+ }
358
+ if (styles.listHoverForeground) {
359
+ content.push(`.monaco-list${suffix} > div.monaco-scrollable-element > .monaco-list-rows > .monaco-list-row:hover:not(.selected):not(.focused) { color: ${styles.listHoverForeground}; }`);
360
+ }
361
+ if (styles.listSelectionOutline) {
362
+ content.push(`.monaco-list${suffix} > div.monaco-scrollable-element > .monaco-list-rows > .monaco-list-row.selected { outline: 1px dotted ${styles.listSelectionOutline}; outline-offset: -1px; }`);
363
+ }
364
+ if (styles.listFocusOutline) {
365
+ content.push(`
366
+ .monaco-drag-image,
367
+ .monaco-list${suffix}:focus > div.monaco-scrollable-element > .monaco-list-rows > .monaco-list-row.focused { outline: 1px solid ${styles.listFocusOutline}; outline-offset: -1px; }
368
+ `);
369
+ }
370
+ if (styles.listInactiveFocusOutline) {
371
+ content.push(`.monaco-list${suffix} > div.monaco-scrollable-element > .monaco-list-rows > .monaco-list-row.focused { outline: 1px dotted ${styles.listInactiveFocusOutline}; outline-offset: -1px; }`);
372
+ }
373
+ if (styles.listHoverOutline) {
374
+ content.push(`.monaco-list${suffix} > div.monaco-scrollable-element > .monaco-list-rows > .monaco-list-row:hover { outline: 1px dashed ${styles.listHoverOutline}; outline-offset: -1px; }`);
375
+ }
376
+ if (styles.listDropOverBackground) {
377
+ content.push(`
378
+ .monaco-list${suffix}.drop-target,
379
+ .monaco-list${suffix} > div.monaco-scrollable-element > .monaco-list-rows.drop-target,
380
+ .monaco-list${suffix} > div.monaco-scrollable-element > .monaco-list-row.drop-target { background-color: ${styles.listDropOverBackground} !important; color: inherit !important; }
381
+ `);
382
+ }
383
+ const newStyles = content.join('\n');
384
+ if (newStyles !== this.styleElement.textContent) {
385
+ this.styleElement.textContent = newStyles;
386
+ }
387
+ }
388
+ };
389
+ NotebookTextDiffList = ( __decorate([
390
+ ( __param(6, IListService)),
391
+ ( __param(7, IConfigurationService)),
392
+ ( __param(8, IInstantiationService))
393
+ ], NotebookTextDiffList));
394
+
395
+ export { CellDiffSideBySideRenderer, CellDiffSingleSideRenderer, NotebookCellTextDiffListDelegate, NotebookMouseController, NotebookTextDiffList };
@@ -0,0 +1,185 @@
1
+ import { __decorate, __param } from '../../../../../../../../external/tslib/tslib.es6.js';
2
+ import { getWindow, addStandardDisposableListener, EventType, runAtThisOrScheduleAtNextAnimationFrame } from 'vscode/vscode/vs/base/browser/dom';
3
+ import { createFastDomNode } from 'vscode/vscode/vs/base/browser/fastDomNode';
4
+ import { PixelRatio } from 'vscode/vscode/vs/base/browser/pixelRatio';
5
+ import { Color } from 'vscode/vscode/vs/base/common/color';
6
+ import { DisposableStore } from 'vscode/vscode/vs/base/common/lifecycle';
7
+ import 'vscode/vscode/vs/platform/theme/common/colorUtils';
8
+ import 'vscode/vscode/vs/platform/theme/common/colors/baseColors';
9
+ import 'vscode/vscode/vs/platform/theme/common/colors/chartsColors';
10
+ import { diffOverviewRulerInserted, diffInserted, defaultInsertColor, diffOverviewRulerRemoved, diffRemoved, defaultRemoveColor } from 'vscode/vscode/vs/platform/theme/common/colors/editorColors';
11
+ import 'vscode/vscode/vs/platform/theme/common/colors/inputColors';
12
+ import 'vscode/vscode/vs/platform/theme/common/colors/listColors';
13
+ import 'vscode/vscode/vs/platform/theme/common/colors/menuColors';
14
+ import 'vscode/vscode/vs/platform/theme/common/colors/minimapColors';
15
+ import 'vscode/vscode/vs/platform/theme/common/colors/miscColors';
16
+ import 'vscode/vscode/vs/platform/theme/common/colors/quickpickColors';
17
+ import 'vscode/vscode/vs/platform/theme/common/colors/searchColors';
18
+ import { Themable, IThemeService } from 'vscode/vscode/vs/platform/theme/common/themeService';
19
+
20
+ const MINIMUM_SLIDER_SIZE = 20;
21
+ let NotebookDiffOverviewRuler = class NotebookDiffOverviewRuler extends Themable {
22
+ constructor(notebookEditor, width, container, themeService) {
23
+ super(themeService);
24
+ this.notebookEditor = notebookEditor;
25
+ this.width = width;
26
+ this._diffElementViewModels = [];
27
+ this._lanes = 2;
28
+ this._insertColor = null;
29
+ this._removeColor = null;
30
+ this._insertColorHex = null;
31
+ this._removeColorHex = null;
32
+ this._disposables = this._register(( new DisposableStore()));
33
+ this._renderAnimationFrame = null;
34
+ this._domNode = createFastDomNode(document.createElement('canvas'));
35
+ this._domNode.setPosition('relative');
36
+ this._domNode.setLayerHinting(true);
37
+ this._domNode.setContain('strict');
38
+ container.appendChild(this._domNode.domNode);
39
+ this._overviewViewportDomElement = createFastDomNode(document.createElement('div'));
40
+ this._overviewViewportDomElement.setClassName('diffViewport');
41
+ this._overviewViewportDomElement.setPosition('absolute');
42
+ this._overviewViewportDomElement.setWidth(width);
43
+ container.appendChild(this._overviewViewportDomElement.domNode);
44
+ this._register(PixelRatio.getInstance(getWindow(this._domNode.domNode)).onDidChange(() => {
45
+ this._scheduleRender();
46
+ }));
47
+ this._register(this.themeService.onDidColorThemeChange(e => {
48
+ const colorChanged = this.applyColors(e);
49
+ if (colorChanged) {
50
+ this._scheduleRender();
51
+ }
52
+ }));
53
+ this.applyColors(this.themeService.getColorTheme());
54
+ this._register(this.notebookEditor.onDidScroll(() => {
55
+ this._renderOverviewViewport();
56
+ }));
57
+ this._register(addStandardDisposableListener(container, EventType.POINTER_DOWN, (e) => {
58
+ this.notebookEditor.delegateVerticalScrollbarPointerDown(e);
59
+ }));
60
+ }
61
+ applyColors(theme) {
62
+ const newInsertColor = theme.getColor(diffOverviewRulerInserted) || ( (theme.getColor(diffInserted) || defaultInsertColor).transparent(2));
63
+ const newRemoveColor = theme.getColor(diffOverviewRulerRemoved) || ( (theme.getColor(diffRemoved) || defaultRemoveColor).transparent(2));
64
+ const hasChanges = !newInsertColor.equals(this._insertColor) || !newRemoveColor.equals(this._removeColor);
65
+ this._insertColor = newInsertColor;
66
+ this._removeColor = newRemoveColor;
67
+ if (this._insertColor) {
68
+ this._insertColorHex = Color.Format.CSS.formatHexA(this._insertColor);
69
+ }
70
+ if (this._removeColor) {
71
+ this._removeColorHex = Color.Format.CSS.formatHexA(this._removeColor);
72
+ }
73
+ return hasChanges;
74
+ }
75
+ layout() {
76
+ this._layoutNow();
77
+ }
78
+ updateViewModels(elements, eventDispatcher) {
79
+ this._disposables.clear();
80
+ this._diffElementViewModels = elements;
81
+ if (eventDispatcher) {
82
+ this._disposables.add(eventDispatcher.onDidChangeLayout(() => {
83
+ this._scheduleRender();
84
+ }));
85
+ this._disposables.add(eventDispatcher.onDidChangeCellLayout(() => {
86
+ this._scheduleRender();
87
+ }));
88
+ }
89
+ this._scheduleRender();
90
+ }
91
+ _scheduleRender() {
92
+ if (this._renderAnimationFrame === null) {
93
+ this._renderAnimationFrame = runAtThisOrScheduleAtNextAnimationFrame(getWindow(this._domNode.domNode), this._onRenderScheduled.bind(this), 16);
94
+ }
95
+ }
96
+ _onRenderScheduled() {
97
+ this._renderAnimationFrame = null;
98
+ this._layoutNow();
99
+ }
100
+ _layoutNow() {
101
+ const layoutInfo = this.notebookEditor.getLayoutInfo();
102
+ const height = layoutInfo.height;
103
+ const contentHeight = ( this._diffElementViewModels.map(view => view.layoutInfo.totalHeight)).reduce((a, b) => a + b, 0);
104
+ const ratio = PixelRatio.getInstance(getWindow(this._domNode.domNode)).value;
105
+ this._domNode.setWidth(this.width);
106
+ this._domNode.setHeight(height);
107
+ this._domNode.domNode.width = this.width * ratio;
108
+ this._domNode.domNode.height = height * ratio;
109
+ const ctx = this._domNode.domNode.getContext('2d');
110
+ ctx.clearRect(0, 0, this.width * ratio, height * ratio);
111
+ this._renderCanvas(ctx, this.width * ratio, height * ratio, contentHeight * ratio, ratio);
112
+ this._renderOverviewViewport();
113
+ }
114
+ _renderOverviewViewport() {
115
+ const layout = this._computeOverviewViewport();
116
+ if (!layout) {
117
+ this._overviewViewportDomElement.setTop(0);
118
+ this._overviewViewportDomElement.setHeight(0);
119
+ }
120
+ else {
121
+ this._overviewViewportDomElement.setTop(layout.top);
122
+ this._overviewViewportDomElement.setHeight(layout.height);
123
+ }
124
+ }
125
+ _computeOverviewViewport() {
126
+ const layoutInfo = this.notebookEditor.getLayoutInfo();
127
+ if (!layoutInfo) {
128
+ return null;
129
+ }
130
+ const scrollTop = this.notebookEditor.getScrollTop();
131
+ const scrollHeight = this.notebookEditor.getScrollHeight();
132
+ const computedAvailableSize = Math.max(0, layoutInfo.height);
133
+ const computedRepresentableSize = Math.max(0, computedAvailableSize - 2 * 0);
134
+ const visibleSize = layoutInfo.height;
135
+ const computedSliderSize = Math.round(Math.max(MINIMUM_SLIDER_SIZE, Math.floor(visibleSize * computedRepresentableSize / scrollHeight)));
136
+ const computedSliderRatio = (computedRepresentableSize - computedSliderSize) / (scrollHeight - visibleSize);
137
+ const computedSliderPosition = Math.round(scrollTop * computedSliderRatio);
138
+ return {
139
+ height: computedSliderSize,
140
+ top: computedSliderPosition
141
+ };
142
+ }
143
+ _renderCanvas(ctx, width, height, scrollHeight, ratio) {
144
+ if (!this._insertColorHex || !this._removeColorHex) {
145
+ return;
146
+ }
147
+ const laneWidth = width / this._lanes;
148
+ let currentFrom = 0;
149
+ for (let i = 0; i < this._diffElementViewModels.length; i++) {
150
+ const element = this._diffElementViewModels[i];
151
+ const cellHeight = Math.round((element.layoutInfo.totalHeight / scrollHeight) * ratio * height);
152
+ switch (element.type) {
153
+ case 'insert':
154
+ ctx.fillStyle = this._insertColorHex;
155
+ ctx.fillRect(laneWidth, currentFrom, laneWidth, cellHeight);
156
+ break;
157
+ case 'delete':
158
+ ctx.fillStyle = this._removeColorHex;
159
+ ctx.fillRect(0, currentFrom, laneWidth, cellHeight);
160
+ break;
161
+ case 'unchanged':
162
+ break;
163
+ case 'modified':
164
+ ctx.fillStyle = this._removeColorHex;
165
+ ctx.fillRect(0, currentFrom, laneWidth, cellHeight);
166
+ ctx.fillStyle = this._insertColorHex;
167
+ ctx.fillRect(laneWidth, currentFrom, laneWidth, cellHeight);
168
+ break;
169
+ }
170
+ currentFrom += cellHeight;
171
+ }
172
+ }
173
+ dispose() {
174
+ if (this._renderAnimationFrame !== null) {
175
+ this._renderAnimationFrame.dispose();
176
+ this._renderAnimationFrame = null;
177
+ }
178
+ super.dispose();
179
+ }
180
+ };
181
+ NotebookDiffOverviewRuler = ( __decorate([
182
+ ( __param(3, IThemeService))
183
+ ], NotebookDiffOverviewRuler));
184
+
185
+ export { NotebookDiffOverviewRuler };