@codingame/monaco-vscode-welcome-service-override 1.85.1

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 (53) hide show
  1. package/assets/commandPalette.svg +50 -0
  2. package/assets/dark-hc.png +0 -0
  3. package/assets/dark.png +0 -0
  4. package/assets/debug.svg +87 -0
  5. package/assets/extensions-web.svg +216 -0
  6. package/assets/extensions.svg +236 -0
  7. package/assets/git.svg +105 -0
  8. package/assets/languages.svg +88 -0
  9. package/assets/learn.svg +85 -0
  10. package/assets/light-hc.png +0 -0
  11. package/assets/light.png +0 -0
  12. package/assets/menuBar.svg +100 -0
  13. package/assets/openFolder.svg +91 -0
  14. package/assets/profiles.svg +47 -0
  15. package/assets/runTask.svg +42 -0
  16. package/assets/search.svg +48 -0
  17. package/assets/settings.svg +53 -0
  18. package/assets/settingsSync.svg +148 -0
  19. package/assets/shortcuts.svg +180 -0
  20. package/assets/terminal.svg +42 -0
  21. package/assets/workspaceTrust.svg +43 -0
  22. package/external/rollup-plugin-styles/dist/runtime/inject-css.js +3 -0
  23. package/external/tslib/tslib.es6.js +11 -0
  24. package/index.d.ts +1 -0
  25. package/index.js +1 -0
  26. package/package.json +24 -0
  27. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStarted.contribution.js +366 -0
  28. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStarted.js +1461 -0
  29. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedColors.js +38 -0
  30. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedDetailsRenderer.js +263 -0
  31. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedIcons.js +16 -0
  32. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedInput.js +53 -0
  33. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedList.js +97 -0
  34. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/media/gettingStarted.css.js +6 -0
  35. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/startupPage.js +205 -0
  36. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/common/media/all.png.js +8 -0
  37. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/common/media/all.svg.js +21 -0
  38. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/common/media/notebookProfile.js +37 -0
  39. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/common/media/theme_picker.js +53 -0
  40. package/vscode/src/vs/workbench/contrib/welcomeViews/common/newFile.contribution.js +240 -0
  41. package/vscode/src/vs/workbench/contrib/welcomeViews/common/viewsWelcome.contribution.js +19 -0
  42. package/vscode/src/vs/workbench/contrib/welcomeViews/common/viewsWelcomeContribution.js +75 -0
  43. package/vscode/src/vs/workbench/contrib/welcomeViews/common/viewsWelcomeExtensionPoint.js +99 -0
  44. package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/editor/editorWalkThrough.js +62 -0
  45. package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/editor/vs_code_editor_walkthrough.js +190 -0
  46. package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/media/walkThroughPart.css.js +6 -0
  47. package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/walkThrough.contribution.js +40 -0
  48. package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/walkThroughActions.js +59 -0
  49. package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/walkThroughInput.js +115 -0
  50. package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/walkThroughPart.js +434 -0
  51. package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/common/walkThroughContentProvider.js +75 -0
  52. package/welcome.d.ts +5 -0
  53. package/welcome.js +25 -0
@@ -0,0 +1,434 @@
1
+ import { __decorate, __param } from '../../../../../../../external/tslib/tslib.es6.js';
2
+ import './media/walkThroughPart.css.js';
3
+ import { DomScrollableElement } from 'monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollableElement.js';
4
+ import { Gesture, EventType } from 'monaco-editor/esm/vs/base/browser/touch.js';
5
+ import * as strings from 'monaco-editor/esm/vs/base/common/strings.js';
6
+ import { URI } from 'monaco-editor/esm/vs/base/common/uri.js';
7
+ import { DisposableStore, toDisposable, dispose } from 'monaco-editor/esm/vs/base/common/lifecycle.js';
8
+ import { EditorPane } from 'vscode/vscode/vs/workbench/browser/parts/editor/editorPane';
9
+ import { ITelemetryService } from 'monaco-editor/esm/vs/platform/telemetry/common/telemetry.js';
10
+ import { WalkThroughInput } from './walkThroughInput.js';
11
+ import { IOpenerService } from 'monaco-editor/esm/vs/platform/opener/common/opener.js';
12
+ import { ITextResourceConfigurationService } from 'monaco-editor/esm/vs/editor/common/services/textResourceConfiguration.js';
13
+ import { CodeEditorWidget } from 'monaco-editor/esm/vs/editor/browser/widget/codeEditorWidget.js';
14
+ import { IInstantiationService } from 'monaco-editor/esm/vs/platform/instantiation/common/instantiation.js';
15
+ import { IKeybindingService } from 'monaco-editor/esm/vs/platform/keybinding/common/keybinding.js';
16
+ import { localizeWithPath } from 'monaco-editor/esm/vs/nls.js';
17
+ import { IStorageService } from 'monaco-editor/esm/vs/platform/storage/common/storage.js';
18
+ import { RawContextKey, IContextKeyService } from 'monaco-editor/esm/vs/platform/contextkey/common/contextkey.js';
19
+ import { IConfigurationService } from 'monaco-editor/esm/vs/platform/configuration/common/configuration.js';
20
+ import { isObject } from 'monaco-editor/esm/vs/base/common/types.js';
21
+ import { CommandsRegistry } from 'monaco-editor/esm/vs/platform/commands/common/commands.js';
22
+ import { IThemeService } from 'monaco-editor/esm/vs/platform/theme/common/themeService.js';
23
+ import { UILabelProvider } from 'monaco-editor/esm/vs/base/common/keybindingLabels.js';
24
+ import { OS } from 'monaco-editor/esm/vs/base/common/platform.js';
25
+ import { deepClone } from 'monaco-editor/esm/vs/base/common/objects.js';
26
+ import { INotificationService } from 'monaco-editor/esm/vs/platform/notification/common/notification.js';
27
+ import { getWindow, size, safeInnerHtml, addDisposableListener } from 'monaco-editor/esm/vs/base/browser/dom.js';
28
+ import { IEditorGroupsService } from 'vscode/vscode/vs/workbench/services/editor/common/editorGroupsService';
29
+ import { IExtensionService } from 'vscode/vscode/vs/workbench/services/extensions/common/extensions';
30
+
31
+ var WalkThroughPart_1;
32
+ const WALK_THROUGH_FOCUS = ( new RawContextKey('interactivePlaygroundFocus', false));
33
+ const UNBOUND_COMMAND = ( localizeWithPath(
34
+ 'vs/workbench/contrib/welcomeWalkthrough/browser/walkThroughPart',
35
+ 'walkThrough.unboundCommand',
36
+ "unbound"
37
+ ));
38
+ const WALK_THROUGH_EDITOR_VIEW_STATE_PREFERENCE_KEY = 'walkThroughEditorViewState';
39
+ let WalkThroughPart = class WalkThroughPart extends EditorPane {
40
+ static { WalkThroughPart_1 = this; }
41
+ static { this.ID = 'workbench.editor.walkThroughPart'; }
42
+ constructor(telemetryService, themeService, textResourceConfigurationService, instantiationService, openerService, keybindingService, storageService, contextKeyService, configurationService, notificationService, extensionService, editorGroupService) {
43
+ super(WalkThroughPart_1.ID, telemetryService, themeService, storageService);
44
+ this.instantiationService = instantiationService;
45
+ this.openerService = openerService;
46
+ this.keybindingService = keybindingService;
47
+ this.contextKeyService = contextKeyService;
48
+ this.configurationService = configurationService;
49
+ this.notificationService = notificationService;
50
+ this.extensionService = extensionService;
51
+ this.disposables = ( new DisposableStore());
52
+ this.contentDisposables = [];
53
+ this.editorFocus = WALK_THROUGH_FOCUS.bindTo(this.contextKeyService);
54
+ this.editorMemento = this.getEditorMemento(editorGroupService, textResourceConfigurationService, WALK_THROUGH_EDITOR_VIEW_STATE_PREFERENCE_KEY);
55
+ }
56
+ createEditor(container) {
57
+ this.content = document.createElement('div');
58
+ this.content.classList.add('welcomePageFocusElement');
59
+ this.content.tabIndex = 0;
60
+ this.content.style.outlineStyle = 'none';
61
+ this.scrollbar = ( new DomScrollableElement(this.content, {
62
+ horizontal: 1 ,
63
+ vertical: 1
64
+ }));
65
+ this.disposables.add(this.scrollbar);
66
+ container.appendChild(this.scrollbar.getDomNode());
67
+ this.registerFocusHandlers();
68
+ this.registerClickHandler();
69
+ this.disposables.add(this.scrollbar.onScroll(e => this.updatedScrollPosition()));
70
+ }
71
+ updatedScrollPosition() {
72
+ const scrollDimensions = this.scrollbar.getScrollDimensions();
73
+ const scrollPosition = this.scrollbar.getScrollPosition();
74
+ const scrollHeight = scrollDimensions.scrollHeight;
75
+ if (scrollHeight && this.input instanceof WalkThroughInput) {
76
+ const scrollTop = scrollPosition.scrollTop;
77
+ const height = scrollDimensions.height;
78
+ this.input.relativeScrollPosition(scrollTop / scrollHeight, (scrollTop + height) / scrollHeight);
79
+ }
80
+ }
81
+ onTouchChange(event) {
82
+ event.preventDefault();
83
+ event.stopPropagation();
84
+ const scrollPosition = this.scrollbar.getScrollPosition();
85
+ this.scrollbar.setScrollPosition({ scrollTop: scrollPosition.scrollTop - event.translationY });
86
+ }
87
+ addEventListener(element, type, listener, useCapture) {
88
+ element.addEventListener(type, listener, useCapture);
89
+ return toDisposable(() => { element.removeEventListener(type, listener, useCapture); });
90
+ }
91
+ registerFocusHandlers() {
92
+ this.disposables.add(this.addEventListener(this.content, 'mousedown', e => {
93
+ this.focus();
94
+ }));
95
+ this.disposables.add(this.addEventListener(this.content, 'focus', e => {
96
+ this.editorFocus.set(true);
97
+ }));
98
+ this.disposables.add(this.addEventListener(this.content, 'blur', e => {
99
+ this.editorFocus.reset();
100
+ }));
101
+ this.disposables.add(this.addEventListener(this.content, 'focusin', (e) => {
102
+ if (e.target instanceof HTMLElement && e.target.classList.contains('zone-widget-container')) {
103
+ const scrollPosition = this.scrollbar.getScrollPosition();
104
+ this.content.scrollTop = scrollPosition.scrollTop;
105
+ this.content.scrollLeft = scrollPosition.scrollLeft;
106
+ }
107
+ if (e.target instanceof HTMLElement) {
108
+ this.lastFocus = e.target;
109
+ }
110
+ }));
111
+ }
112
+ registerClickHandler() {
113
+ this.content.addEventListener('click', event => {
114
+ for (let node = event.target; node; node = node.parentNode) {
115
+ if (node instanceof HTMLAnchorElement && node.href) {
116
+ const baseElement = node.ownerDocument.getElementsByTagName('base')[0] || getWindow(node).location;
117
+ if (baseElement && node.href.indexOf(baseElement.href) >= 0 && node.hash) {
118
+ const scrollTarget = this.content.querySelector(node.hash);
119
+ const innerContent = this.content.firstElementChild;
120
+ if (scrollTarget && innerContent) {
121
+ const targetTop = scrollTarget.getBoundingClientRect().top - 20;
122
+ const containerTop = innerContent.getBoundingClientRect().top;
123
+ this.scrollbar.setScrollPosition({ scrollTop: targetTop - containerTop });
124
+ }
125
+ }
126
+ else {
127
+ this.open(( URI.parse(node.href)));
128
+ }
129
+ event.preventDefault();
130
+ break;
131
+ }
132
+ else if (node instanceof HTMLButtonElement) {
133
+ const href = node.getAttribute('data-href');
134
+ if (href) {
135
+ this.open(( URI.parse(href)));
136
+ }
137
+ break;
138
+ }
139
+ else if (node === event.currentTarget) {
140
+ break;
141
+ }
142
+ }
143
+ });
144
+ }
145
+ open(uri) {
146
+ if (uri.scheme === 'command' && uri.path === 'git.clone' && !CommandsRegistry.getCommand('git.clone')) {
147
+ this.notificationService.info(( localizeWithPath(
148
+ 'vs/workbench/contrib/welcomeWalkthrough/browser/walkThroughPart',
149
+ 'walkThrough.gitNotFound',
150
+ "It looks like Git is not installed on your system."
151
+ )));
152
+ return;
153
+ }
154
+ this.openerService.open(this.addFrom(uri), { allowCommands: true });
155
+ }
156
+ addFrom(uri) {
157
+ if (uri.scheme !== 'command' || !(this.input instanceof WalkThroughInput)) {
158
+ return uri;
159
+ }
160
+ const query = uri.query ? JSON.parse(uri.query) : {};
161
+ query.from = this.input.getTelemetryFrom();
162
+ return uri.with({ query: JSON.stringify(query) });
163
+ }
164
+ layout(dimension) {
165
+ this.size = dimension;
166
+ size(this.content, dimension.width, dimension.height);
167
+ this.updateSizeClasses();
168
+ this.contentDisposables.forEach(disposable => {
169
+ if (disposable instanceof CodeEditorWidget) {
170
+ disposable.layout();
171
+ }
172
+ });
173
+ const walkthroughInput = this.input instanceof WalkThroughInput && this.input;
174
+ if (walkthroughInput && walkthroughInput.layout) {
175
+ walkthroughInput.layout(dimension);
176
+ }
177
+ this.scrollbar.scanDomNode();
178
+ }
179
+ updateSizeClasses() {
180
+ const innerContent = this.content.firstElementChild;
181
+ if (this.size && innerContent) {
182
+ innerContent.classList.toggle('max-height-685px', this.size.height <= 685);
183
+ }
184
+ }
185
+ focus() {
186
+ super.focus();
187
+ let active = this.content.ownerDocument.activeElement;
188
+ while (active && active !== this.content) {
189
+ active = active.parentElement;
190
+ }
191
+ if (!active) {
192
+ (this.lastFocus || this.content).focus();
193
+ }
194
+ this.editorFocus.set(true);
195
+ }
196
+ arrowUp() {
197
+ const scrollPosition = this.scrollbar.getScrollPosition();
198
+ this.scrollbar.setScrollPosition({ scrollTop: scrollPosition.scrollTop - this.getArrowScrollHeight() });
199
+ }
200
+ arrowDown() {
201
+ const scrollPosition = this.scrollbar.getScrollPosition();
202
+ this.scrollbar.setScrollPosition({ scrollTop: scrollPosition.scrollTop + this.getArrowScrollHeight() });
203
+ }
204
+ getArrowScrollHeight() {
205
+ let fontSize = this.configurationService.getValue('editor.fontSize');
206
+ if (typeof fontSize !== 'number' || fontSize < 1) {
207
+ fontSize = 12;
208
+ }
209
+ return 3 * fontSize;
210
+ }
211
+ pageUp() {
212
+ const scrollDimensions = this.scrollbar.getScrollDimensions();
213
+ const scrollPosition = this.scrollbar.getScrollPosition();
214
+ this.scrollbar.setScrollPosition({ scrollTop: scrollPosition.scrollTop - scrollDimensions.height });
215
+ }
216
+ pageDown() {
217
+ const scrollDimensions = this.scrollbar.getScrollDimensions();
218
+ const scrollPosition = this.scrollbar.getScrollPosition();
219
+ this.scrollbar.setScrollPosition({ scrollTop: scrollPosition.scrollTop + scrollDimensions.height });
220
+ }
221
+ setInput(input, options, context, token) {
222
+ const store = ( new DisposableStore());
223
+ this.contentDisposables.push(store);
224
+ this.content.innerText = '';
225
+ return super.setInput(input, options, context, token)
226
+ .then(async () => {
227
+ if (input.resource.path.endsWith('.md')) {
228
+ await this.extensionService.whenInstalledExtensionsRegistered();
229
+ }
230
+ return input.resolve();
231
+ })
232
+ .then(model => {
233
+ if (token.isCancellationRequested) {
234
+ return;
235
+ }
236
+ const content = model.main;
237
+ if (!input.resource.path.endsWith('.md')) {
238
+ safeInnerHtml(this.content, content);
239
+ this.updateSizeClasses();
240
+ this.decorateContent();
241
+ this.contentDisposables.push(this.keybindingService.onDidUpdateKeybindings(() => this.decorateContent()));
242
+ input.onReady?.(this.content.firstElementChild, store);
243
+ this.scrollbar.scanDomNode();
244
+ this.loadTextEditorViewState(input);
245
+ this.updatedScrollPosition();
246
+ return;
247
+ }
248
+ const innerContent = document.createElement('div');
249
+ innerContent.classList.add('walkThroughContent');
250
+ const markdown = this.expandMacros(content);
251
+ safeInnerHtml(innerContent, markdown);
252
+ this.content.appendChild(innerContent);
253
+ model.snippets.forEach((snippet, i) => {
254
+ const model = snippet.textEditorModel;
255
+ if (!model) {
256
+ return;
257
+ }
258
+ const id = `snippet-${model.uri.fragment}`;
259
+ const div = innerContent.querySelector(`#${id.replace(/[\\.]/g, '\\$&')}`);
260
+ const options = this.getEditorOptions(model.getLanguageId());
261
+ const telemetryData = {
262
+ target: this.input instanceof WalkThroughInput ? this.input.getTelemetryFrom() : undefined,
263
+ snippet: i
264
+ };
265
+ const editor = this.instantiationService.createInstance(CodeEditorWidget, div, options, {
266
+ telemetryData: telemetryData
267
+ });
268
+ editor.setModel(model);
269
+ this.contentDisposables.push(editor);
270
+ const updateHeight = (initial) => {
271
+ const lineHeight = editor.getOption(66 );
272
+ const height = `${Math.max(model.getLineCount() + 1, 4) * lineHeight}px`;
273
+ if (div.style.height !== height) {
274
+ div.style.height = height;
275
+ editor.layout();
276
+ if (!initial) {
277
+ this.scrollbar.scanDomNode();
278
+ }
279
+ }
280
+ };
281
+ updateHeight(true);
282
+ this.contentDisposables.push(editor.onDidChangeModelContent(() => updateHeight(false)));
283
+ this.contentDisposables.push(editor.onDidChangeCursorPosition(e => {
284
+ const innerContent = this.content.firstElementChild;
285
+ if (innerContent) {
286
+ const targetTop = div.getBoundingClientRect().top;
287
+ const containerTop = innerContent.getBoundingClientRect().top;
288
+ const lineHeight = editor.getOption(66 );
289
+ const lineTop = (targetTop + (e.position.lineNumber - 1) * lineHeight) - containerTop;
290
+ const lineBottom = lineTop + lineHeight;
291
+ const scrollDimensions = this.scrollbar.getScrollDimensions();
292
+ const scrollPosition = this.scrollbar.getScrollPosition();
293
+ const scrollTop = scrollPosition.scrollTop;
294
+ const height = scrollDimensions.height;
295
+ if (scrollTop > lineTop) {
296
+ this.scrollbar.setScrollPosition({ scrollTop: lineTop });
297
+ }
298
+ else if (scrollTop < lineBottom - height) {
299
+ this.scrollbar.setScrollPosition({ scrollTop: lineBottom - height });
300
+ }
301
+ }
302
+ }));
303
+ this.contentDisposables.push(this.configurationService.onDidChangeConfiguration(e => {
304
+ if (e.affectsConfiguration('editor') && snippet.textEditorModel) {
305
+ editor.updateOptions(this.getEditorOptions(snippet.textEditorModel.getLanguageId()));
306
+ }
307
+ }));
308
+ });
309
+ this.updateSizeClasses();
310
+ this.multiCursorModifier();
311
+ this.contentDisposables.push(this.configurationService.onDidChangeConfiguration(e => {
312
+ if (e.affectsConfiguration('editor.multiCursorModifier')) {
313
+ this.multiCursorModifier();
314
+ }
315
+ }));
316
+ input.onReady?.(innerContent, store);
317
+ this.scrollbar.scanDomNode();
318
+ this.loadTextEditorViewState(input);
319
+ this.updatedScrollPosition();
320
+ this.contentDisposables.push(Gesture.addTarget(innerContent));
321
+ this.contentDisposables.push(addDisposableListener(innerContent, EventType.Change, e => this.onTouchChange(e)));
322
+ });
323
+ }
324
+ getEditorOptions(language) {
325
+ const config = deepClone(this.configurationService.getValue('editor', { overrideIdentifier: language }));
326
+ return {
327
+ ...(isObject(config) ? config : Object.create(null)),
328
+ scrollBeyondLastLine: false,
329
+ scrollbar: {
330
+ verticalScrollbarSize: 14,
331
+ horizontal: 'auto',
332
+ useShadows: true,
333
+ verticalHasArrows: false,
334
+ horizontalHasArrows: false,
335
+ alwaysConsumeMouseWheel: false
336
+ },
337
+ overviewRulerLanes: 3,
338
+ fixedOverflowWidgets: false,
339
+ lineNumbersMinChars: 1,
340
+ minimap: { enabled: false },
341
+ };
342
+ }
343
+ expandMacros(input) {
344
+ return input.replace(/kb\(([a-z.\d\-]+)\)/gi, (match, kb) => {
345
+ const keybinding = this.keybindingService.lookupKeybinding(kb);
346
+ const shortcut = keybinding ? keybinding.getLabel() || '' : UNBOUND_COMMAND;
347
+ return `<span class="shortcut">${strings.escape(shortcut)}</span>`;
348
+ });
349
+ }
350
+ decorateContent() {
351
+ const keys = this.content.querySelectorAll('.shortcut[data-command]');
352
+ Array.prototype.forEach.call(keys, (key) => {
353
+ const command = key.getAttribute('data-command');
354
+ const keybinding = command && this.keybindingService.lookupKeybinding(command);
355
+ const label = keybinding ? keybinding.getLabel() || '' : UNBOUND_COMMAND;
356
+ while (key.firstChild) {
357
+ key.removeChild(key.firstChild);
358
+ }
359
+ key.appendChild(document.createTextNode(label));
360
+ });
361
+ const ifkeys = this.content.querySelectorAll('.if_shortcut[data-command]');
362
+ Array.prototype.forEach.call(ifkeys, (key) => {
363
+ const command = key.getAttribute('data-command');
364
+ const keybinding = command && this.keybindingService.lookupKeybinding(command);
365
+ key.style.display = !keybinding ? 'none' : '';
366
+ });
367
+ }
368
+ multiCursorModifier() {
369
+ const labels = UILabelProvider.modifierLabels[OS];
370
+ const value = this.configurationService.getValue('editor.multiCursorModifier');
371
+ const modifier = labels[value === 'ctrlCmd' ? (OS === 2 ? 'metaKey' : 'ctrlKey') : 'altKey'];
372
+ const keys = this.content.querySelectorAll('.multi-cursor-modifier');
373
+ Array.prototype.forEach.call(keys, (key) => {
374
+ while (key.firstChild) {
375
+ key.removeChild(key.firstChild);
376
+ }
377
+ key.appendChild(document.createTextNode(modifier));
378
+ });
379
+ }
380
+ saveTextEditorViewState(input) {
381
+ const scrollPosition = this.scrollbar.getScrollPosition();
382
+ if (this.group) {
383
+ this.editorMemento.saveEditorState(this.group, input, {
384
+ viewState: {
385
+ scrollTop: scrollPosition.scrollTop,
386
+ scrollLeft: scrollPosition.scrollLeft
387
+ }
388
+ });
389
+ }
390
+ }
391
+ loadTextEditorViewState(input) {
392
+ if (this.group) {
393
+ const state = this.editorMemento.loadEditorState(this.group, input);
394
+ if (state) {
395
+ this.scrollbar.setScrollPosition(state.viewState);
396
+ }
397
+ }
398
+ }
399
+ clearInput() {
400
+ if (this.input instanceof WalkThroughInput) {
401
+ this.saveTextEditorViewState(this.input);
402
+ }
403
+ this.contentDisposables = dispose(this.contentDisposables);
404
+ super.clearInput();
405
+ }
406
+ saveState() {
407
+ if (this.input instanceof WalkThroughInput) {
408
+ this.saveTextEditorViewState(this.input);
409
+ }
410
+ super.saveState();
411
+ }
412
+ dispose() {
413
+ this.editorFocus.reset();
414
+ this.contentDisposables = dispose(this.contentDisposables);
415
+ this.disposables.dispose();
416
+ super.dispose();
417
+ }
418
+ };
419
+ WalkThroughPart = WalkThroughPart_1 = ( __decorate([
420
+ ( __param(0, ITelemetryService)),
421
+ ( __param(1, IThemeService)),
422
+ ( __param(2, ITextResourceConfigurationService)),
423
+ ( __param(3, IInstantiationService)),
424
+ ( __param(4, IOpenerService)),
425
+ ( __param(5, IKeybindingService)),
426
+ ( __param(6, IStorageService)),
427
+ ( __param(7, IContextKeyService)),
428
+ ( __param(8, IConfigurationService)),
429
+ ( __param(9, INotificationService)),
430
+ ( __param(10, IExtensionService)),
431
+ ( __param(11, IEditorGroupsService))
432
+ ], WalkThroughPart));
433
+
434
+ export { WALK_THROUGH_FOCUS, WalkThroughPart };
@@ -0,0 +1,75 @@
1
+ import { __decorate, __param } from '../../../../../../../external/tslib/tslib.es6.js';
2
+ import { ITextModelService } from 'monaco-editor/esm/vs/editor/common/services/resolverService.js';
3
+ import { IModelService } from 'monaco-editor/esm/vs/editor/common/services/model.js';
4
+ import { ILanguageService } from 'monaco-editor/esm/vs/editor/common/languages/language.js';
5
+ import { marked } from 'monaco-editor/esm/vs/base/common/marked/marked.js';
6
+ import { Schemas, FileAccess } from 'monaco-editor/esm/vs/base/common/network.js';
7
+ import { Range } from 'monaco-editor/esm/vs/editor/common/core/range.js';
8
+ import { createTextBufferFactory } from 'monaco-editor/esm/vs/editor/common/model/textModel.js';
9
+ import { assertIsDefined } from 'monaco-editor/esm/vs/base/common/types.js';
10
+ import { IInstantiationService } from 'monaco-editor/esm/vs/platform/instantiation/common/instantiation.js';
11
+
12
+ async function requireToContent(instantiationService, resource) {
13
+ if (!resource.query) {
14
+ throw new Error('Welcome: invalid resource');
15
+ }
16
+ const query = JSON.parse(resource.query);
17
+ if (!query.moduleId) {
18
+ throw new Error('Welcome: invalid resource');
19
+ }
20
+ const content = await FileAccess.toModuleContent(query.moduleId);
21
+ return instantiationService.invokeFunction(content);
22
+ }
23
+ let WalkThroughSnippetContentProvider = class WalkThroughSnippetContentProvider {
24
+ constructor(textModelResolverService, languageService, modelService, instantiationService) {
25
+ this.textModelResolverService = textModelResolverService;
26
+ this.languageService = languageService;
27
+ this.modelService = modelService;
28
+ this.instantiationService = instantiationService;
29
+ this.loads = ( new Map());
30
+ this.textModelResolverService.registerTextModelContentProvider(Schemas.walkThroughSnippet, this);
31
+ }
32
+ async textBufferFactoryFromResource(resource) {
33
+ let ongoing = this.loads.get(( resource.toString()));
34
+ if (!ongoing) {
35
+ ongoing = requireToContent(this.instantiationService, resource)
36
+ .then(content => createTextBufferFactory(content))
37
+ .finally(() => this.loads.delete(( resource.toString())));
38
+ this.loads.set(( resource.toString()), ongoing);
39
+ }
40
+ return ongoing;
41
+ }
42
+ async provideTextContent(resource) {
43
+ const factory = await this.textBufferFactoryFromResource(resource.with({ fragment: '' }));
44
+ let codeEditorModel = this.modelService.getModel(resource);
45
+ if (!codeEditorModel) {
46
+ const j = parseInt(resource.fragment);
47
+ let i = 0;
48
+ const renderer = new marked.Renderer();
49
+ renderer.code = (code, lang) => {
50
+ i++;
51
+ const languageId = typeof lang === 'string' ? this.languageService.getLanguageIdByLanguageName(lang) || '' : '';
52
+ const languageSelection = this.languageService.createById(languageId);
53
+ const model = this.modelService.createModel(code, languageSelection, resource.with({ fragment: `${i}.${lang}` }));
54
+ if (i === j) {
55
+ codeEditorModel = model;
56
+ }
57
+ return '';
58
+ };
59
+ const textBuffer = factory.create(1 ).textBuffer;
60
+ const lineCount = textBuffer.getLineCount();
61
+ const range = ( new Range(1, 1, lineCount, textBuffer.getLineLength(lineCount) + 1));
62
+ const markdown = textBuffer.getValueInRange(range, 0 );
63
+ marked(markdown, { renderer });
64
+ }
65
+ return assertIsDefined(codeEditorModel);
66
+ }
67
+ };
68
+ WalkThroughSnippetContentProvider = ( __decorate([
69
+ ( __param(0, ITextModelService)),
70
+ ( __param(1, ILanguageService)),
71
+ ( __param(2, IModelService)),
72
+ ( __param(3, IInstantiationService))
73
+ ], WalkThroughSnippetContentProvider));
74
+
75
+ export { WalkThroughSnippetContentProvider, requireToContent };
package/welcome.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ import { IEditorOverrideServices } from 'vscode/vscode/vs/editor/standalone/browser/standaloneServices';
2
+
3
+ declare function getServiceOverride(): IEditorOverrideServices;
4
+
5
+ export { getServiceOverride as default };
package/welcome.js ADDED
@@ -0,0 +1,25 @@
1
+ import { SyncDescriptor } from 'monaco-editor/esm/vs/platform/instantiation/common/descriptors.js';
2
+ import { IWalkthroughsService, WalkthroughsService } from 'vscode/vscode/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedService';
3
+ import { IFeaturedExtensionsService, FeaturedExtensionsService } from 'vscode/vscode/vs/workbench/contrib/welcomeGettingStarted/browser/featuredExtensionService';
4
+ import './vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStarted.contribution.js';
5
+ import './vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/walkThrough.contribution.js';
6
+ import './vscode/src/vs/workbench/contrib/welcomeViews/common/viewsWelcome.contribution.js';
7
+ import './vscode/src/vs/workbench/contrib/welcomeViews/common/newFile.contribution.js';
8
+ import svgAssets from './vscode/src/vs/workbench/contrib/welcomeGettingStarted/common/media/all.svg.js';
9
+ import pngAssets from './vscode/src/vs/workbench/contrib/welcomeGettingStarted/common/media/all.png.js';
10
+ import { FileAccess } from 'monaco-editor/esm/vs/base/common/network.js';
11
+ import { registerAssets } from 'vscode/assets';
12
+
13
+ registerAssets(svgAssets);
14
+ registerAssets(pngAssets);
15
+ FileAccess.registerModuleContentProvider('vs/workbench/contrib/welcomeWalkthrough/browser/editor/vs_code_editor_walkthrough', () => import('./vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/editor/vs_code_editor_walkthrough.js').then(module => module.default ?? module));
16
+ FileAccess.registerModuleContentProvider('vs/workbench/contrib/welcomeGettingStarted/common/media/theme_picker', () => import('./vscode/src/vs/workbench/contrib/welcomeGettingStarted/common/media/theme_picker.js').then(module => module.default ?? module));
17
+ FileAccess.registerModuleContentProvider('vs/workbench/contrib/welcomeGettingStarted/common/media/notebookProfile', () => import('./vscode/src/vs/workbench/contrib/welcomeGettingStarted/common/media/notebookProfile.js').then(module => module.default ?? module));
18
+ function getServiceOverride() {
19
+ return {
20
+ [( IWalkthroughsService.toString())]: new SyncDescriptor(WalkthroughsService, [], true),
21
+ [( IFeaturedExtensionsService.toString())]: new SyncDescriptor(FeaturedExtensionsService, [], true)
22
+ };
23
+ }
24
+
25
+ export { getServiceOverride as default };