@codingame/monaco-vscode-walkthrough-service-override 11.1.2 → 12.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/multi-file-edits.svg +513 -0
- package/index.d.ts +2 -1
- package/index.js +19 -1
- package/package.json +24 -8
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStarted.contribution.d.ts +3 -0
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStarted.contribution.js +67 -66
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStarted.d.ts +146 -0
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStarted.js +153 -150
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedAccessibleView.d.ts +10 -0
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedAccessibleView.js +84 -32
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedColors.d.ts +7 -0
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedColors.js +8 -7
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedDetailsRenderer.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedDetailsRenderer.js +3 -2
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedExtensionPoint.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedExtensionPoint.js +41 -37
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedIcons.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedIcons.js +3 -2
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedInput.d.ts +38 -0
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedInput.js +3 -2
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedList.d.ts +42 -0
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedList.js +1 -0
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedService._contribution.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedService._contribution.js +10 -8
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedService.d.ts +147 -0
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedService.js +86 -83
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/media/gettingStarted.css.js +1 -1
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/startupPage.d.ts +49 -0
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/startupPage.js +43 -38
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/common/gettingStartedContent.d.ts +66 -0
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/common/gettingStartedContent.js +208 -165
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/common/media/all.svg.js +1 -0
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/common/media/notebookProfile.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/common/media/notebookProfile.js +4 -3
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/common/media/theme_picker.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/common/media/theme_picker.js +7 -6
- package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/editor/editorWalkThrough.d.ts +17 -0
- package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/editor/editorWalkThrough.js +7 -6
- package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/editor/vs_code_editor_walkthrough.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/editor/vs_code_editor_walkthrough.js +1 -0
- package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/media/walkThroughPart.css.js +1 -1
- package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/walkThrough.contribution.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/walkThrough.contribution.js +6 -5
- package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/walkThroughActions.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/walkThroughActions.js +11 -8
- package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/walkThroughInput.d.ts +50 -0
- package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/walkThroughInput.js +6 -4
- package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/walkThroughPart.d.ts +66 -0
- package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/walkThroughPart.js +34 -31
- package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/common/walkThroughContentProvider.d.ts +29 -0
- package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/common/walkThroughContentProvider.js +5 -3
- package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/common/walkThroughUtils.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/common/walkThroughUtils.js +3 -2
- package/walkthrough.js +0 -18
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
|
|
2
|
+
import { __decorate, __param } from 'vscode/external/tslib/tslib.es6';
|
|
2
3
|
import { $, addDisposableListener, clearNode, reset, append } from 'vscode/vscode/vs/base/browser/dom';
|
|
3
4
|
import { renderFormattedText } from 'vscode/vscode/vs/base/browser/formattedTextRenderer';
|
|
4
5
|
import { StandardKeyboardEvent } from 'vscode/vscode/vs/base/browser/keyboardEvent';
|
|
@@ -10,6 +11,7 @@ import { equals, coalesce } from 'vscode/vscode/vs/base/common/arrays';
|
|
|
10
11
|
import { Throttler, Delayer } from 'vscode/vscode/vs/base/common/async';
|
|
11
12
|
import { Codicon } from 'vscode/vscode/vs/base/common/codicons';
|
|
12
13
|
import { onUnexpectedError } from 'vscode/vscode/vs/base/common/errors';
|
|
14
|
+
import { KeyCode } from 'vscode/vscode/vs/base/common/keyCodes';
|
|
13
15
|
import { splitRecentLabel } from 'vscode/vscode/vs/base/common/labels';
|
|
14
16
|
import { DisposableStore, toDisposable } from 'vscode/vscode/vs/base/common/lifecycle';
|
|
15
17
|
import { parse } from 'vscode/vscode/vs/base/common/marshalling';
|
|
@@ -25,31 +27,33 @@ import { MarkdownRenderer } from 'vscode/vscode/vs/editor/browser/widget/markdow
|
|
|
25
27
|
import { localize } from 'vscode/vscode/vs/nls';
|
|
26
28
|
import { IAccessibilityService } from 'vscode/vscode/vs/platform/accessibility/common/accessibility.service';
|
|
27
29
|
import { ICommandService } from 'vscode/vscode/vs/platform/commands/common/commands.service';
|
|
30
|
+
import { ConfigurationTarget } from 'vscode/vscode/vs/platform/configuration/common/configuration';
|
|
28
31
|
import { IConfigurationService } from 'vscode/vscode/vs/platform/configuration/common/configuration.service';
|
|
29
32
|
import { RawContextKey, ContextKeyExpr } from 'vscode/vscode/vs/platform/contextkey/common/contextkey';
|
|
30
33
|
import { IContextKeyService } from 'vscode/vscode/vs/platform/contextkey/common/contextkey.service';
|
|
31
34
|
import { IFileService } from 'vscode/vscode/vs/platform/files/common/files.service';
|
|
32
35
|
import { IInstantiationService } from 'vscode/vscode/vs/platform/instantiation/common/instantiation';
|
|
33
36
|
import { IKeybindingService } from 'vscode/vscode/vs/platform/keybinding/common/keybinding.service';
|
|
37
|
+
import { Verbosity } from '@codingame/monaco-vscode-82e231ca-6ed7-5920-b2b8-1874ccc0be07-common/vscode/vs/platform/label/common/label';
|
|
34
38
|
import { ILabelService } from 'vscode/vscode/vs/platform/label/common/label.service';
|
|
35
39
|
import { INotificationService } from 'vscode/vscode/vs/platform/notification/common/notification.service';
|
|
36
40
|
import { Link } from 'vscode/vscode/vs/platform/opener/browser/link';
|
|
37
41
|
import { IOpenerService } from 'vscode/vscode/vs/platform/opener/common/opener.service';
|
|
38
42
|
import { IProductService } from 'vscode/vscode/vs/platform/product/common/productService.service';
|
|
39
43
|
import { IQuickInputService } from 'vscode/vscode/vs/platform/quickinput/common/quickInput.service';
|
|
40
|
-
import { WillSaveStateReason } from 'vscode/vscode/vs/platform/storage/common/storage';
|
|
44
|
+
import { WillSaveStateReason, StorageScope, StorageTarget } from 'vscode/vscode/vs/platform/storage/common/storage';
|
|
41
45
|
import { IStorageService } from 'vscode/vscode/vs/platform/storage/common/storage.service';
|
|
42
|
-
import { firstSessionDateStorageKey } from 'vscode/vscode/vs/platform/telemetry/common/telemetry';
|
|
46
|
+
import { firstSessionDateStorageKey, TelemetryLevel } from 'vscode/vscode/vs/platform/telemetry/common/telemetry';
|
|
43
47
|
import { ITelemetryService } from 'vscode/vscode/vs/platform/telemetry/common/telemetry.service';
|
|
44
48
|
import { getTelemetryLevel } from 'vscode/vscode/vs/platform/telemetry/common/telemetryUtils';
|
|
45
49
|
import { defaultToggleStyles, defaultButtonStyles, defaultKeybindingLabelStyles } from 'vscode/vscode/vs/platform/theme/browser/defaultStyles';
|
|
46
50
|
import { UNKNOWN_EMPTY_WINDOW_WORKSPACE } from 'vscode/vscode/vs/platform/workspace/common/workspace';
|
|
47
51
|
import { IWorkspaceContextService } from 'vscode/vscode/vs/platform/workspace/common/workspace.service';
|
|
48
|
-
import { isRecentFolder, isRecentWorkspace } from 'vscode/vscode/vs/platform/workspaces/common/workspaces';
|
|
52
|
+
import { isRecentFolder, isRecentWorkspace } from '@codingame/monaco-vscode-56402b83-4a60-5b15-86f9-71fe99c32744-common/vscode/vs/platform/workspaces/common/workspaces';
|
|
49
53
|
import { IWorkspacesService } from 'vscode/vscode/vs/platform/workspaces/common/workspaces.service';
|
|
50
|
-
import { OpenRecentAction } from 'vscode/vscode/vs/workbench/browser/actions/windowActions';
|
|
51
|
-
import { OpenFolderViaWorkspaceAction, OpenFileFolderAction, OpenFolderAction } from 'vscode/vscode/vs/workbench/browser/actions/workspaceActions';
|
|
52
|
-
import { EditorPane } from 'vscode/vscode/vs/workbench/browser/parts/editor/editorPane';
|
|
54
|
+
import { OpenRecentAction } from '@codingame/monaco-vscode-56402b83-4a60-5b15-86f9-71fe99c32744-common/vscode/vs/workbench/browser/actions/windowActions';
|
|
55
|
+
import { OpenFolderViaWorkspaceAction, OpenFileFolderAction, OpenFolderAction } from '@codingame/monaco-vscode-cc9ccbec-e2a1-599d-84ae-46f5efc666e3-common/vscode/vs/workbench/browser/actions/workspaceActions';
|
|
56
|
+
import { EditorPane } from '@codingame/monaco-vscode-9e888134-1a6f-58d9-b0e6-0fc047448366-common/vscode/vs/workbench/browser/parts/editor/editorPane';
|
|
53
57
|
import { WorkbenchStateContext } from 'vscode/vscode/vs/workbench/common/contextkeys';
|
|
54
58
|
import { IWebviewService } from 'vscode/vscode/vs/workbench/contrib/webview/browser/webview.service';
|
|
55
59
|
import './gettingStartedColors.js';
|
|
@@ -60,20 +64,22 @@ import { hiddenEntriesConfigurationKey, parseDescription } from './gettingStarte
|
|
|
60
64
|
import { IWalkthroughsService } from 'vscode/vscode/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedService.service';
|
|
61
65
|
import { restoreWalkthroughsConfigurationKey } from './startupPage.js';
|
|
62
66
|
import { startEntries } from '../common/gettingStartedContent.js';
|
|
67
|
+
import { GroupDirection, GroupsOrder } from 'vscode/vscode/vs/workbench/services/editor/common/editorGroupsService';
|
|
63
68
|
import { IEditorGroupsService } from 'vscode/vscode/vs/workbench/services/editor/common/editorGroupsService.service';
|
|
64
69
|
import { IExtensionService } from 'vscode/vscode/vs/workbench/services/extensions/common/extensions.service';
|
|
65
70
|
import { IHostService } from 'vscode/vscode/vs/workbench/services/host/browser/host.service';
|
|
66
|
-
import { IWorkbenchThemeService } from 'vscode/vscode/vs/workbench/services/themes/common/workbenchThemeService.service';
|
|
71
|
+
import { IWorkbenchThemeService } from '@codingame/monaco-vscode-3dd5b442-bfbc-5b1d-8f4a-7567530c75f5-common/vscode/vs/workbench/services/themes/common/workbenchThemeService.service';
|
|
67
72
|
import { GettingStartedIndexList } from './gettingStartedList.js';
|
|
73
|
+
import { AccessibilityVerbositySettingId } from 'vscode/vscode/vs/workbench/contrib/accessibility/browser/accessibilityConfiguration';
|
|
68
74
|
import { AccessibleViewAction } from 'vscode/vscode/vs/workbench/contrib/accessibility/browser/accessibleViewActions';
|
|
69
75
|
import { KeybindingLabel } from 'vscode/vscode/vs/base/browser/ui/keybindingLabel/keybindingLabel';
|
|
70
76
|
|
|
71
77
|
var GettingStartedPage_1;
|
|
72
78
|
const SLIDE_TRANSITION_TIME_MS = 250;
|
|
73
79
|
const configurationKey = 'workbench.startupEditor';
|
|
74
|
-
const allWalkthroughsHiddenContext = (
|
|
75
|
-
const inWelcomeContext = (
|
|
76
|
-
const parsedStartEntries = (
|
|
80
|
+
const allWalkthroughsHiddenContext = ( new RawContextKey('allWalkthroughsHidden', false));
|
|
81
|
+
const inWelcomeContext = ( new RawContextKey('inWelcome', false));
|
|
82
|
+
const parsedStartEntries = ( startEntries.map((e, i) => ({
|
|
77
83
|
command: e.content.command,
|
|
78
84
|
description: e.description,
|
|
79
85
|
icon: { type: 'icon', icon: e.icon },
|
|
@@ -81,7 +87,7 @@ const parsedStartEntries = ( (startEntries.map((e, i) => ({
|
|
|
81
87
|
order: i,
|
|
82
88
|
title: e.title,
|
|
83
89
|
when: ContextKeyExpr.deserialize(e.when) ?? ContextKeyExpr.true()
|
|
84
|
-
})))
|
|
90
|
+
})));
|
|
85
91
|
const REDUCED_MOTION_KEY = 'workbench.welcomePage.preferReducedMotion';
|
|
86
92
|
let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
87
93
|
static { GettingStartedPage_1 = this; }
|
|
@@ -110,11 +116,11 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
110
116
|
this.workspaceContextService = workspaceContextService;
|
|
111
117
|
this.accessibilityService = accessibilityService;
|
|
112
118
|
this.inProgressScroll = Promise.resolve();
|
|
113
|
-
this.dispatchListeners = (
|
|
114
|
-
this.stepDisposables = (
|
|
115
|
-
this.detailsPageDisposables = (
|
|
116
|
-
this.mediaDisposables = (
|
|
117
|
-
this.buildSlideThrottle = (
|
|
119
|
+
this.dispatchListeners = ( new DisposableStore());
|
|
120
|
+
this.stepDisposables = ( new DisposableStore());
|
|
121
|
+
this.detailsPageDisposables = ( new DisposableStore());
|
|
122
|
+
this.mediaDisposables = ( new DisposableStore());
|
|
123
|
+
this.buildSlideThrottle = ( new Throttler());
|
|
118
124
|
this.hasScrolledToFirstCategory = false;
|
|
119
125
|
this.showFeaturedWalkthrough = true;
|
|
120
126
|
this.currentMediaComponent = undefined;
|
|
@@ -122,29 +128,29 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
122
128
|
this.container = $('.gettingStartedContainer', {
|
|
123
129
|
role: 'document',
|
|
124
130
|
tabindex: 0,
|
|
125
|
-
'aria-label': ( localize(
|
|
131
|
+
'aria-label': ( localize(10738, "Overview of how to get up to speed with your editor."))
|
|
126
132
|
});
|
|
127
133
|
this.stepMediaComponent = $('.getting-started-media');
|
|
128
134
|
this.stepMediaComponent.id = generateUuid();
|
|
129
|
-
this.categoriesSlideDisposables = this._register((
|
|
130
|
-
this.detailsRenderer = (
|
|
135
|
+
this.categoriesSlideDisposables = this._register(( new DisposableStore()));
|
|
136
|
+
this.detailsRenderer = ( new GettingStartedDetailsRenderer(
|
|
131
137
|
this.fileService,
|
|
132
138
|
this.notificationService,
|
|
133
139
|
this.extensionService,
|
|
134
140
|
this.languageService
|
|
135
|
-
))
|
|
141
|
+
));
|
|
136
142
|
this.contextService = this._register(contextService.createScoped(this.container));
|
|
137
143
|
inWelcomeContext.bindTo(this.contextService).set(true);
|
|
138
144
|
this.gettingStartedCategories = this.gettingStartedService.getWalkthroughs();
|
|
139
145
|
this._register(this.dispatchListeners);
|
|
140
|
-
this.buildSlideThrottle = (
|
|
146
|
+
this.buildSlideThrottle = ( new Throttler());
|
|
141
147
|
const rerender = () => {
|
|
142
148
|
this.gettingStartedCategories = this.gettingStartedService.getWalkthroughs();
|
|
143
149
|
if (this.currentWalkthrough) {
|
|
144
|
-
const existingSteps = (
|
|
150
|
+
const existingSteps = ( this.currentWalkthrough.steps.map(step => step.id));
|
|
145
151
|
const newCategory = this.gettingStartedCategories.find(category => this.currentWalkthrough?.id === category.id);
|
|
146
152
|
if (newCategory) {
|
|
147
|
-
const newSteps = (
|
|
153
|
+
const newSteps = ( newCategory.steps.map(step => step.id));
|
|
148
154
|
if (!equals(newSteps, existingSteps)) {
|
|
149
155
|
this.buildSlideThrottle.queue(() => this.buildCategoriesSlide());
|
|
150
156
|
}
|
|
@@ -224,7 +230,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
224
230
|
return;
|
|
225
231
|
}
|
|
226
232
|
const restoreData = { folder: UNKNOWN_EMPTY_WINDOW_WORKSPACE.id, category: this.editorInput.selectedCategory, step: this.editorInput.selectedStep };
|
|
227
|
-
this.storageService.store(restoreWalkthroughsConfigurationKey, JSON.stringify(restoreData),
|
|
233
|
+
this.storageService.store(restoreWalkthroughsConfigurationKey, JSON.stringify(restoreData), StorageScope.PROFILE, StorageTarget.MACHINE);
|
|
228
234
|
}));
|
|
229
235
|
}
|
|
230
236
|
shouldAnimate() {
|
|
@@ -272,11 +278,11 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
272
278
|
this.runDispatchCommand(command, argument);
|
|
273
279
|
}));
|
|
274
280
|
this.dispatchListeners.add(addDisposableListener(element, 'keyup', (e) => {
|
|
275
|
-
const keyboardEvent = (
|
|
281
|
+
const keyboardEvent = ( new StandardKeyboardEvent(e));
|
|
276
282
|
e.stopPropagation();
|
|
277
283
|
switch (keyboardEvent.keyCode) {
|
|
278
|
-
case
|
|
279
|
-
case
|
|
284
|
+
case KeyCode.Enter:
|
|
285
|
+
case KeyCode.Space:
|
|
280
286
|
this.runDispatchCommand(command, argument);
|
|
281
287
|
return;
|
|
282
288
|
}
|
|
@@ -305,7 +311,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
305
311
|
break;
|
|
306
312
|
}
|
|
307
313
|
case 'openFolder': {
|
|
308
|
-
if (this.contextService.contextMatchesRules((
|
|
314
|
+
if (this.contextService.contextMatchesRules(( ContextKeyExpr.and(( WorkbenchStateContext.isEqualTo('workspace')))))) {
|
|
309
315
|
this.commandService.executeCommand(OpenFolderViaWorkspaceAction.ID);
|
|
310
316
|
}
|
|
311
317
|
else {
|
|
@@ -397,27 +403,25 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
397
403
|
}
|
|
398
404
|
}
|
|
399
405
|
async openWalkthroughSelector() {
|
|
400
|
-
const selection = await this.quickInputService.pick((
|
|
406
|
+
const selection = await this.quickInputService.pick(( this.gettingStartedCategories
|
|
401
407
|
.filter(c => this.contextService.contextMatchesRules(c.when))
|
|
402
408
|
.map(x => ({
|
|
403
409
|
id: x.id,
|
|
404
410
|
label: x.title,
|
|
405
411
|
detail: x.description,
|
|
406
412
|
description: x.source,
|
|
407
|
-
})))
|
|
413
|
+
}))), { canPickMany: false, matchOnDescription: true, matchOnDetail: true, title: ( localize(10739, "Open Walkthrough...")) });
|
|
408
414
|
if (selection) {
|
|
409
415
|
this.runDispatchCommand('selectCategory', selection.id);
|
|
410
416
|
}
|
|
411
417
|
}
|
|
412
418
|
getHiddenCategories() {
|
|
413
|
-
return (
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
))
|
|
417
|
-
);
|
|
419
|
+
return ( new Set(
|
|
420
|
+
JSON.parse(this.storageService.get(hiddenEntriesConfigurationKey, StorageScope.PROFILE, '[]'))
|
|
421
|
+
));
|
|
418
422
|
}
|
|
419
423
|
setHiddenCategories(hidden) {
|
|
420
|
-
this.storageService.store(hiddenEntriesConfigurationKey, JSON.stringify(hidden),
|
|
424
|
+
this.storageService.store(hiddenEntriesConfigurationKey, JSON.stringify(hidden), StorageScope.PROFILE, StorageTarget.USER);
|
|
421
425
|
}
|
|
422
426
|
async buildMediaComponent(stepId, forceRebuild = false) {
|
|
423
427
|
if (!this.currentWalkthrough) {
|
|
@@ -459,9 +463,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
459
463
|
mediaElement.setAttribute('alt', media.altText);
|
|
460
464
|
this.updateMediaSourceForColorMode(mediaElement, media.path);
|
|
461
465
|
this.stepDisposables.add(addDisposableListener(this.stepMediaComponent, 'click', () => {
|
|
462
|
-
const hrefs = (
|
|
463
|
-
lt => ( (lt.nodes.filter((node) => typeof node !== 'string').map(node => node.href)))
|
|
464
|
-
))).flat();
|
|
466
|
+
const hrefs = ( stepToExpand.description.map(lt => ( lt.nodes.filter((node) => typeof node !== 'string').map(node => node.href)))).flat();
|
|
465
467
|
if (hrefs.length === 1) {
|
|
466
468
|
const href = hrefs[0];
|
|
467
469
|
if (href.startsWith('http')) {
|
|
@@ -486,9 +488,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
486
488
|
}
|
|
487
489
|
}));
|
|
488
490
|
this.stepDisposables.add(addDisposableListener(this.stepMediaComponent, 'click', () => {
|
|
489
|
-
const hrefs = (
|
|
490
|
-
lt => ( (lt.nodes.filter((node) => typeof node !== 'string').map(node => node.href)))
|
|
491
|
-
))).flat();
|
|
491
|
+
const hrefs = ( stepToExpand.description.map(lt => ( lt.nodes.filter((node) => typeof node !== 'string').map(node => node.href)))).flat();
|
|
492
492
|
if (hrefs.length === 1) {
|
|
493
493
|
const href = hrefs[0];
|
|
494
494
|
if (href.startsWith('http')) {
|
|
@@ -521,8 +521,8 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
521
521
|
}
|
|
522
522
|
};
|
|
523
523
|
if (serializedContextKeyExprs) {
|
|
524
|
-
const contextKeyExprs = coalesce((
|
|
525
|
-
const watchingKeys = (
|
|
524
|
+
const contextKeyExprs = coalesce(( serializedContextKeyExprs.map(expr => ContextKeyExpr.deserialize(expr))));
|
|
525
|
+
const watchingKeys = ( new Set(contextKeyExprs.flatMap(expr => ( expr.keys()))));
|
|
526
526
|
this.stepDisposables.add(this.contextService.onDidChangeContext(e => {
|
|
527
527
|
if (e.affectsSome(watchingKeys)) {
|
|
528
528
|
postTrueKeysMessage();
|
|
@@ -550,7 +550,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
550
550
|
}
|
|
551
551
|
}));
|
|
552
552
|
}
|
|
553
|
-
const layoutDelayer = (
|
|
553
|
+
const layoutDelayer = ( new Delayer(50));
|
|
554
554
|
this.layoutMarkdown = () => {
|
|
555
555
|
layoutDelayer.trigger(() => {
|
|
556
556
|
this.webview.postMessage({ layoutMeNow: true });
|
|
@@ -568,7 +568,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
568
568
|
const themeId = message.slice('setTheme:'.length);
|
|
569
569
|
const theme = (await this.themeService.getColorThemes()).find(theme => theme.settingsId === themeId);
|
|
570
570
|
if (theme) {
|
|
571
|
-
this.themeService.setColorTheme(theme.id,
|
|
571
|
+
this.themeService.setColorTheme(theme.id, ConfigurationTarget.USER);
|
|
572
572
|
}
|
|
573
573
|
}
|
|
574
574
|
else {
|
|
@@ -587,10 +587,10 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
587
587
|
}
|
|
588
588
|
}
|
|
589
589
|
provideScreenReaderUpdate() {
|
|
590
|
-
if (this.configurationService.getValue(
|
|
590
|
+
if (this.configurationService.getValue(AccessibilityVerbositySettingId.Walkthrough)) {
|
|
591
591
|
const kbLabel = this.keybindingService.lookupKeybinding(AccessibleViewAction.id)?.getAriaLabel();
|
|
592
|
-
return kbLabel ? ( localize(
|
|
593
|
-
|
|
592
|
+
return kbLabel ? ( localize(10740, "Inspect this in the accessible view ({0}).\n", kbLabel)) : ( localize(
|
|
593
|
+
10741,
|
|
594
594
|
"Inspect this in the accessible view via the command Open Accessible View which is currently not triggerable via keybinding.\n"
|
|
595
595
|
));
|
|
596
596
|
}
|
|
@@ -610,6 +610,10 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
610
610
|
if (node.getAttribute('data-step-id') !== id) {
|
|
611
611
|
node.classList.remove('expanded');
|
|
612
612
|
node.setAttribute('aria-expanded', 'false');
|
|
613
|
+
const codiconElement = node.querySelector('.codicon');
|
|
614
|
+
if (codiconElement) {
|
|
615
|
+
codiconElement.removeAttribute('tabindex');
|
|
616
|
+
}
|
|
613
617
|
}
|
|
614
618
|
});
|
|
615
619
|
setTimeout(() => stepElement.focus(), delayFocus && this.shouldAnimate() ? SLIDE_TRANSITION_TIME_MS : 0);
|
|
@@ -617,6 +621,10 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
617
621
|
stepElement.classList.add('expanded');
|
|
618
622
|
stepElement.setAttribute('aria-expanded', 'true');
|
|
619
623
|
this.buildMediaComponent(id, true);
|
|
624
|
+
const codiconElement = stepElement.querySelector('.codicon');
|
|
625
|
+
if (codiconElement) {
|
|
626
|
+
codiconElement.setAttribute('tabindex', '0');
|
|
627
|
+
}
|
|
620
628
|
this.gettingStartedService.progressByEvent('stepSelected:' + id);
|
|
621
629
|
const step = this.currentWalkthrough?.steps?.find(step => step.id === id);
|
|
622
630
|
if (step) {
|
|
@@ -631,7 +639,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
631
639
|
}
|
|
632
640
|
updateMediaSourceForColorMode(element, sources) {
|
|
633
641
|
const themeType = this.themeService.getColorTheme().type;
|
|
634
|
-
const src = (
|
|
642
|
+
const src = ( sources[themeType].toString(true)).replace(/ /g, '%20');
|
|
635
643
|
element.srcset = src.toLowerCase().endsWith('.svg') ? src : (src + ' 1.5x');
|
|
636
644
|
}
|
|
637
645
|
createEditor(parent) {
|
|
@@ -642,14 +650,14 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
642
650
|
this.categoriesPageScrollbar.dispose();
|
|
643
651
|
}
|
|
644
652
|
this.categoriesSlide = $('.gettingStartedSlideCategories.gettingStartedSlide');
|
|
645
|
-
const prevButton = $('button.prev-button.button-link', { 'x-dispatch': 'scrollPrev' }, $('span.scroll-button.codicon.codicon-chevron-left'), $('span.moreText', {}, ( localize(
|
|
653
|
+
const prevButton = $('button.prev-button.button-link', { 'x-dispatch': 'scrollPrev' }, $('span.scroll-button.codicon.codicon-chevron-left'), $('span.moreText', {}, ( localize(10742, "Go Back"))));
|
|
646
654
|
this.stepsSlide = $('.gettingStartedSlideDetails.gettingStartedSlide', {}, prevButton);
|
|
647
655
|
this.stepsContent = $('.gettingStartedDetailsContent', {});
|
|
648
|
-
this.detailsPageScrollbar = this._register((
|
|
649
|
-
this.categoriesPageScrollbar = this._register((
|
|
656
|
+
this.detailsPageScrollbar = this._register(( new DomScrollableElement(this.stepsContent, { className: 'full-height-scrollable' })));
|
|
657
|
+
this.categoriesPageScrollbar = this._register(( new DomScrollableElement(
|
|
650
658
|
this.categoriesSlide,
|
|
651
659
|
{ className: 'full-height-scrollable categoriesScrollbar' }
|
|
652
|
-
)))
|
|
660
|
+
)));
|
|
653
661
|
this.stepsSlide.appendChild(this.detailsPageScrollbar.getDomNode());
|
|
654
662
|
const gettingStartedPage = $('.gettingStarted', {}, this.categoriesPageScrollbar.getDomNode(), this.stepsSlide);
|
|
655
663
|
this.container.appendChild(gettingStartedPage);
|
|
@@ -659,15 +667,15 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
659
667
|
}
|
|
660
668
|
async buildCategoriesSlide() {
|
|
661
669
|
this.categoriesSlideDisposables.clear();
|
|
662
|
-
const showOnStartupCheckbox = (
|
|
670
|
+
const showOnStartupCheckbox = ( new Toggle({
|
|
663
671
|
icon: Codicon.check,
|
|
664
672
|
actionClassName: 'getting-started-checkbox',
|
|
665
673
|
isChecked: this.configurationService.getValue(configurationKey) === 'welcomePage',
|
|
666
|
-
title: ( localize(
|
|
674
|
+
title: ( localize(10743, "When checked, this page will be shown on startup.")),
|
|
667
675
|
...defaultToggleStyles
|
|
668
|
-
}))
|
|
676
|
+
}));
|
|
669
677
|
showOnStartupCheckbox.domNode.id = 'showOnStartup';
|
|
670
|
-
const showOnStartupLabel = $('label.caption', { for: 'showOnStartup' }, ( localize(
|
|
678
|
+
const showOnStartupLabel = $('label.caption', { for: 'showOnStartup' }, ( localize(10744, "Show welcome page on startup")));
|
|
671
679
|
const onShowOnStartupChanged = () => {
|
|
672
680
|
if (showOnStartupCheckbox.checked) {
|
|
673
681
|
this.telemetryService.publicLog2('gettingStarted.ActionExecuted', { command: 'showOnStartupChecked', argument: undefined, walkthroughId: this.currentWalkthrough?.id });
|
|
@@ -686,7 +694,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
686
694
|
showOnStartupCheckbox.checked = !showOnStartupCheckbox.checked;
|
|
687
695
|
onShowOnStartupChanged();
|
|
688
696
|
}));
|
|
689
|
-
const header = $('.header', {}, $('h1.product-name.caption', {}, this.productService.nameLong), $('p.subtitle.description', {}, ( localize(
|
|
697
|
+
const header = $('.header', {}, $('h1.product-name.caption', {}, this.productService.nameLong), $('p.subtitle.description', {}, ( localize(10745, "Editing evolved"))));
|
|
690
698
|
const leftColumn = $('.categories-column.categories-column-left', {});
|
|
691
699
|
const rightColumn = $('.categories-column.categories-column-right', {});
|
|
692
700
|
const startList = this.buildStartList();
|
|
@@ -739,15 +747,15 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
739
747
|
return;
|
|
740
748
|
}
|
|
741
749
|
}
|
|
742
|
-
const someStepsComplete = (
|
|
750
|
+
const someStepsComplete = ( this.gettingStartedCategories.some(category => category.steps.find(s => s.done)));
|
|
743
751
|
if (this.editorInput.showTelemetryNotice && this.productService.openToWelcomeMainPage) {
|
|
744
752
|
const telemetryNotice = $('p.telemetry-notice');
|
|
745
753
|
this.buildTelemetryFooter(telemetryNotice);
|
|
746
754
|
footer.appendChild(telemetryNotice);
|
|
747
755
|
}
|
|
748
756
|
else if (!this.productService.openToWelcomeMainPage && !someStepsComplete && !this.hasScrolledToFirstCategory && this.showFeaturedWalkthrough) {
|
|
749
|
-
const firstSessionDateString = this.storageService.get(firstSessionDateStorageKey,
|
|
750
|
-
const daysSinceFirstSession = ((+(
|
|
757
|
+
const firstSessionDateString = this.storageService.get(firstSessionDateStorageKey, StorageScope.APPLICATION) || ( new Date()).toUTCString();
|
|
758
|
+
const daysSinceFirstSession = ((+( new Date())) - (+( new Date(firstSessionDateString)))) / 1000 / 60 / 60 / 24;
|
|
751
759
|
const fistContentBehaviour = daysSinceFirstSession < 1 ? 'openToFirstCategory' : 'index';
|
|
752
760
|
if (fistContentBehaviour === 'openToFirstCategory') {
|
|
753
761
|
const first = this.gettingStartedCategories.filter(c => !c.when || this.contextService.contextMatchesRules(c.when))[0];
|
|
@@ -770,10 +778,10 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
770
778
|
let windowOpenable;
|
|
771
779
|
if (isRecentFolder(recent)) {
|
|
772
780
|
windowOpenable = { folderUri: recent.folderUri };
|
|
773
|
-
fullPath = recent.label || this.labelService.getWorkspaceLabel(recent.folderUri, { verbose:
|
|
781
|
+
fullPath = recent.label || this.labelService.getWorkspaceLabel(recent.folderUri, { verbose: Verbosity.LONG });
|
|
774
782
|
}
|
|
775
783
|
else {
|
|
776
|
-
fullPath = recent.label || this.labelService.getWorkspaceLabel(recent.workspace, { verbose:
|
|
784
|
+
fullPath = recent.label || this.labelService.getWorkspaceLabel(recent.workspace, { verbose: Verbosity.LONG });
|
|
777
785
|
windowOpenable = { workspaceUri: recent.workspace.configPath };
|
|
778
786
|
}
|
|
779
787
|
const { name, parentPath } = splitRecentLabel(fullPath);
|
|
@@ -781,7 +789,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
781
789
|
const link = $('button.button-link');
|
|
782
790
|
link.innerText = name;
|
|
783
791
|
link.title = fullPath;
|
|
784
|
-
link.setAttribute('aria-label', ( localize(
|
|
792
|
+
link.setAttribute('aria-label', ( localize(10746, "Open folder {0} with path {1}", name, parentPath)));
|
|
785
793
|
link.addEventListener('click', e => {
|
|
786
794
|
this.telemetryService.publicLog2('gettingStarted.ActionExecuted', { command: 'openRecent', argument: undefined, walkthroughId: this.currentWalkthrough?.id });
|
|
787
795
|
this.hostService.openWindow([windowOpenable], {
|
|
@@ -803,29 +811,29 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
803
811
|
if (this.recentlyOpenedList) {
|
|
804
812
|
this.recentlyOpenedList.dispose();
|
|
805
813
|
}
|
|
806
|
-
const recentlyOpenedList = this.recentlyOpenedList = (
|
|
807
|
-
title: ( localize(
|
|
814
|
+
const recentlyOpenedList = this.recentlyOpenedList = ( new GettingStartedIndexList({
|
|
815
|
+
title: ( localize(10747, "Recent")),
|
|
808
816
|
klass: 'recently-opened',
|
|
809
817
|
limit: 5,
|
|
810
|
-
empty: $('.empty-recent', {}, ( localize(
|
|
818
|
+
empty: $('.empty-recent', {}, ( localize(10748, "You have no recent folders,")), $('button.button-link', { 'x-dispatch': 'openFolder' }, ( localize(10749, "open a folder"))), ( localize(10750, "to start."))),
|
|
811
819
|
more: $('.more', {}, $('button.button-link', {
|
|
812
820
|
'x-dispatch': 'showMoreRecents',
|
|
813
821
|
title: ( localize(
|
|
814
|
-
|
|
822
|
+
10751,
|
|
815
823
|
"Show All Recent Folders {0}",
|
|
816
824
|
this.getKeybindingLabel(OpenRecentAction.ID)
|
|
817
825
|
))
|
|
818
|
-
}, ( localize(
|
|
826
|
+
}, ( localize(10752, "More...")))),
|
|
819
827
|
renderElement: renderRecent,
|
|
820
828
|
contextService: this.contextService
|
|
821
|
-
}))
|
|
829
|
+
}));
|
|
822
830
|
recentlyOpenedList.onDidChange(() => this.registerDispatchListeners());
|
|
823
831
|
this.recentlyOpened.then(({ workspaces }) => {
|
|
824
|
-
const workspacesWithID = (
|
|
832
|
+
const workspacesWithID = ( workspaces
|
|
825
833
|
.filter(recent => !this.workspaceContextService.isCurrentWorkspace(isRecentWorkspace(recent) ? recent.workspace : recent.folderUri))
|
|
826
834
|
.map(
|
|
827
|
-
recent => ({ ...recent, id: isRecentWorkspace(recent) ? recent.workspace.id : (
|
|
828
|
-
))
|
|
835
|
+
recent => ({ ...recent, id: isRecentWorkspace(recent) ? recent.workspace.id : ( recent.folderUri.toString()) })
|
|
836
|
+
));
|
|
829
837
|
const updateEntries = () => {
|
|
830
838
|
recentlyOpenedList.setEntries(workspacesWithID);
|
|
831
839
|
};
|
|
@@ -842,14 +850,14 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
842
850
|
if (this.startList) {
|
|
843
851
|
this.startList.dispose();
|
|
844
852
|
}
|
|
845
|
-
const startList = this.startList = (
|
|
846
|
-
title: ( localize(
|
|
853
|
+
const startList = this.startList = ( new GettingStartedIndexList({
|
|
854
|
+
title: ( localize(10753, "Start")),
|
|
847
855
|
klass: 'start-container',
|
|
848
856
|
limit: 10,
|
|
849
857
|
renderElement: renderStartEntry,
|
|
850
858
|
rankElement: e => -e.order,
|
|
851
859
|
contextService: this.contextService
|
|
852
|
-
}))
|
|
860
|
+
}));
|
|
853
861
|
startList.setEntries(parsedStartEntries);
|
|
854
862
|
startList.onDidChange(() => this.registerDispatchListeners());
|
|
855
863
|
return startList;
|
|
@@ -859,10 +867,10 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
859
867
|
const renderNewBadge = (category.newItems || category.newEntry) && !category.isFeatured;
|
|
860
868
|
const newBadge = $('.new-badge', {});
|
|
861
869
|
if (category.newEntry) {
|
|
862
|
-
reset(newBadge, $('.new-category', {}, ( localize(
|
|
870
|
+
reset(newBadge, $('.new-category', {}, ( localize(10754, "New"))));
|
|
863
871
|
}
|
|
864
872
|
else if (category.newItems) {
|
|
865
|
-
reset(newBadge, $('.new-items', {}, ( localize(
|
|
873
|
+
reset(newBadge, $('.new-items', {}, ( localize(10755, "Updated"))));
|
|
866
874
|
}
|
|
867
875
|
const featuredBadge = $('.featured-badge', {});
|
|
868
876
|
const descriptionContent = $('.description-content', {});
|
|
@@ -878,9 +886,9 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
878
886
|
}, featuredBadge, $('.main-content', {}, this.iconWidgetFor(category), titleContent, renderNewBadge ? newBadge : $('.no-badge'), $('a.codicon.codicon-close.hide-category-button', {
|
|
879
887
|
'tabindex': 0,
|
|
880
888
|
'x-dispatch': 'hideCategory:' + category.id,
|
|
881
|
-
'title': ( localize(
|
|
889
|
+
'title': ( localize(10756, "Hide")),
|
|
882
890
|
'role': 'button',
|
|
883
|
-
'aria-label': ( localize(
|
|
891
|
+
'aria-label': ( localize(10757, "Hide")),
|
|
884
892
|
})), descriptionContent, $('.category-progress', { 'x-data-category-id': category.id, }, $('.progress-bar-outer', { 'role': 'progressbar' }, $('.progress-bar-inner'))));
|
|
885
893
|
};
|
|
886
894
|
if (this.gettingStartedList) {
|
|
@@ -900,20 +908,20 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
900
908
|
if (e.recencyBonus) {
|
|
901
909
|
rank += 4 * e.recencyBonus;
|
|
902
910
|
}
|
|
903
|
-
if ((
|
|
911
|
+
if (( this.getHiddenCategories().has(e.id))) {
|
|
904
912
|
rank = null;
|
|
905
913
|
}
|
|
906
914
|
return rank;
|
|
907
915
|
};
|
|
908
|
-
const gettingStartedList = this.gettingStartedList = (
|
|
909
|
-
title: ( localize(
|
|
916
|
+
const gettingStartedList = this.gettingStartedList = ( new GettingStartedIndexList({
|
|
917
|
+
title: ( localize(10758, "Walkthroughs")),
|
|
910
918
|
klass: 'getting-started',
|
|
911
919
|
limit: 5,
|
|
912
|
-
footer: $('span.button-link.see-all-walkthroughs', { 'x-dispatch': 'seeAllWalkthroughs', 'tabindex': 0 }, ( localize(
|
|
920
|
+
footer: $('span.button-link.see-all-walkthroughs', { 'x-dispatch': 'seeAllWalkthroughs', 'tabindex': 0 }, ( localize(10752, "More..."))),
|
|
913
921
|
renderElement: renderGetttingStaredWalkthrough,
|
|
914
922
|
rankElement: rankWalkthrough,
|
|
915
923
|
contextService: this.contextService,
|
|
916
|
-
}))
|
|
924
|
+
}));
|
|
917
925
|
gettingStartedList.onDidChange(() => {
|
|
918
926
|
const hidden = this.getHiddenCategories();
|
|
919
927
|
const someWalkthroughsHidden = hidden.size || gettingStartedList.itemCount < this.gettingStartedCategories.filter(c => this.contextService.contextMatchesRules(c.when)).length;
|
|
@@ -962,15 +970,15 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
962
970
|
bar.style.width = `${progress}%`;
|
|
963
971
|
element.parentElement.classList.toggle('no-progress', stats.stepsComplete === 0);
|
|
964
972
|
if (stats.stepsTotal === stats.stepsComplete) {
|
|
965
|
-
bar.title = ( localize(
|
|
973
|
+
bar.title = ( localize(10759, "All {0} steps complete!", stats.stepsComplete));
|
|
966
974
|
}
|
|
967
975
|
else {
|
|
968
|
-
bar.title = ( localize(
|
|
976
|
+
bar.title = ( localize(10760, "{0} of {1} steps complete", stats.stepsComplete, stats.stepsTotal));
|
|
969
977
|
}
|
|
970
978
|
});
|
|
971
979
|
}
|
|
972
980
|
async scrollToCategory(categoryID, stepId) {
|
|
973
|
-
if (!(
|
|
981
|
+
if (!( this.gettingStartedCategories.some(c => c.id === categoryID))) {
|
|
974
982
|
this.gettingStartedCategories = this.gettingStartedService.getWalkthroughs();
|
|
975
983
|
}
|
|
976
984
|
const ourCategory = this.gettingStartedCategories.find(c => c.id === categoryID);
|
|
@@ -998,13 +1006,13 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
998
1006
|
return;
|
|
999
1007
|
}
|
|
1000
1008
|
if (this.groupsService.count === 1) {
|
|
1001
|
-
const sideGroup = this.groupsService.addGroup(this.groupsService.groups[0],
|
|
1009
|
+
const sideGroup = this.groupsService.addGroup(this.groupsService.groups[0], GroupDirection.RIGHT);
|
|
1002
1010
|
this.groupsService.activateGroup(sideGroup);
|
|
1003
1011
|
const gettingStartedSize = Math.floor(fullSize.width / 2);
|
|
1004
|
-
const gettingStartedGroup = this.groupsService.getGroups(
|
|
1012
|
+
const gettingStartedGroup = this.groupsService.getGroups(GroupsOrder.MOST_RECENTLY_ACTIVE).find(group => (group.activeEditor instanceof GettingStartedInput));
|
|
1005
1013
|
this.groupsService.setSize(assertIsDefined(gettingStartedGroup), { width: gettingStartedSize, height: fullSize.height });
|
|
1006
1014
|
}
|
|
1007
|
-
const nonGettingStartedGroup = this.groupsService.getGroups(
|
|
1015
|
+
const nonGettingStartedGroup = this.groupsService.getGroups(GroupsOrder.MOST_RECENTLY_ACTIVE).find(group => !(group.activeEditor instanceof GettingStartedInput));
|
|
1008
1016
|
if (nonGettingStartedGroup) {
|
|
1009
1017
|
this.groupsService.activateGroup(nonGettingStartedGroup);
|
|
1010
1018
|
nonGettingStartedGroup.focus();
|
|
@@ -1019,7 +1027,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
1019
1027
|
this.focusSideEditorGroup();
|
|
1020
1028
|
}
|
|
1021
1029
|
if (isCommand) {
|
|
1022
|
-
const commandURI = (
|
|
1030
|
+
const commandURI = ( URI.parse(command));
|
|
1023
1031
|
let args = [];
|
|
1024
1032
|
try {
|
|
1025
1033
|
args = parse(decodeURIComponent(commandURI.query));
|
|
@@ -1034,15 +1042,15 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
1034
1042
|
if (!Array.isArray(args)) {
|
|
1035
1043
|
args = [args];
|
|
1036
1044
|
}
|
|
1037
|
-
if ((commandURI.path === (
|
|
1038
|
-
commandURI.path === (
|
|
1045
|
+
if ((commandURI.path === ( OpenFileFolderAction.ID.toString()) ||
|
|
1046
|
+
commandURI.path === ( OpenFolderAction.ID.toString())) &&
|
|
1039
1047
|
this.workspaceContextService.getWorkspace().folders.length === 0) {
|
|
1040
1048
|
const selectedStepIndex = this.currentWalkthrough?.steps.findIndex(step => step.id === this.editorInput.selectedStep);
|
|
1041
1049
|
if (selectedStepIndex !== undefined &&
|
|
1042
1050
|
selectedStepIndex > -1 &&
|
|
1043
1051
|
this.currentWalkthrough?.steps.slice(selectedStepIndex + 1).some(step => !step.done)) {
|
|
1044
1052
|
const restoreData = { folder: UNKNOWN_EMPTY_WINDOW_WORKSPACE.id, category: this.editorInput.selectedCategory, step: this.editorInput.selectedStep };
|
|
1045
|
-
this.storageService.store(restoreWalkthroughsConfigurationKey, JSON.stringify(restoreData),
|
|
1053
|
+
this.storageService.store(restoreWalkthroughsConfigurationKey, JSON.stringify(restoreData), StorageScope.PROFILE, StorageTarget.MACHINE);
|
|
1046
1054
|
}
|
|
1047
1055
|
}
|
|
1048
1056
|
this.commandService.executeCommand(commandURI.path, ...args).then(result => {
|
|
@@ -1052,8 +1060,8 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
1052
1060
|
console.warn('Warn: Running walkthrough command', href, 'yielded non-URI `openFolder` result', toOpen, '. It will be disregarded.');
|
|
1053
1061
|
return;
|
|
1054
1062
|
}
|
|
1055
|
-
const restoreData = { folder: (
|
|
1056
|
-
this.storageService.store(restoreWalkthroughsConfigurationKey, JSON.stringify(restoreData),
|
|
1063
|
+
const restoreData = { folder: ( toOpen.toString()), category: this.editorInput.selectedCategory, step: this.editorInput.selectedStep };
|
|
1064
|
+
this.storageService.store(restoreWalkthroughsConfigurationKey, JSON.stringify(restoreData), StorageScope.PROFILE, StorageTarget.MACHINE);
|
|
1057
1065
|
this.hostService.openWindow([{ folderUri: toOpen }]);
|
|
1058
1066
|
}
|
|
1059
1067
|
});
|
|
@@ -1073,10 +1081,10 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
1073
1081
|
if (linkedText.nodes.length === 1 && typeof linkedText.nodes[0] !== 'string') {
|
|
1074
1082
|
const node = linkedText.nodes[0];
|
|
1075
1083
|
const buttonContainer = append(container, $('.button-container'));
|
|
1076
|
-
const button = (
|
|
1084
|
+
const button = ( new Button(
|
|
1077
1085
|
buttonContainer,
|
|
1078
1086
|
{ title: node.title, supportIcons: true, ...defaultButtonStyles }
|
|
1079
|
-
))
|
|
1087
|
+
));
|
|
1080
1088
|
const isCommand = node.href.startsWith('command:');
|
|
1081
1089
|
const command = node.href.replace(/command:(toSide:)?/, 'command:');
|
|
1082
1090
|
button.label = node.label;
|
|
@@ -1088,9 +1096,9 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
1088
1096
|
if (isCommand) {
|
|
1089
1097
|
const keybinding = this.getKeyBinding(command);
|
|
1090
1098
|
if (keybinding) {
|
|
1091
|
-
const shortcutMessage = $('span.shortcut-message', {}, ( localize(
|
|
1099
|
+
const shortcutMessage = $('span.shortcut-message', {}, ( localize(10761, 'Tip: Use keyboard shortcut ')));
|
|
1092
1100
|
container.appendChild(shortcutMessage);
|
|
1093
|
-
const label = (
|
|
1101
|
+
const label = ( new KeybindingLabel(shortcutMessage, OS, { ...defaultKeybindingLabelStyles }));
|
|
1094
1102
|
label.set(keybinding);
|
|
1095
1103
|
}
|
|
1096
1104
|
}
|
|
@@ -1141,15 +1149,15 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
1141
1149
|
const categoryDescriptorComponent = $('.getting-started-category', {}, $('.category-description-container', {}, $('h2.category-title.max-lines-3', { 'x-category-title-for': category.id }, ...renderLabelWithIcons(category.title)), descriptionContainer));
|
|
1142
1150
|
const stepListContainer = $('.step-list-container');
|
|
1143
1151
|
this.detailsPageDisposables.add(addDisposableListener(stepListContainer, 'keydown', (e) => {
|
|
1144
|
-
const event = (
|
|
1152
|
+
const event = ( new StandardKeyboardEvent(e));
|
|
1145
1153
|
const currentStepIndex = () => category.steps.findIndex(e => e.id === this.editorInput.selectedStep);
|
|
1146
|
-
if (event.keyCode ===
|
|
1154
|
+
if (event.keyCode === KeyCode.UpArrow) {
|
|
1147
1155
|
const toExpand = category.steps.filter((step, index) => index < currentStepIndex() && this.contextService.contextMatchesRules(step.when));
|
|
1148
1156
|
if (toExpand.length) {
|
|
1149
1157
|
this.selectStep(toExpand[toExpand.length - 1].id, false);
|
|
1150
1158
|
}
|
|
1151
1159
|
}
|
|
1152
|
-
if (event.keyCode ===
|
|
1160
|
+
if (event.keyCode === KeyCode.DownArrow) {
|
|
1153
1161
|
const toExpand = category.steps.find((step, index) => index > currentStepIndex() && this.contextService.contextMatchesRules(step.when));
|
|
1154
1162
|
if (toExpand) {
|
|
1155
1163
|
this.selectStep(toExpand.id, false);
|
|
@@ -1157,7 +1165,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
1157
1165
|
}
|
|
1158
1166
|
}));
|
|
1159
1167
|
let renderedSteps = undefined;
|
|
1160
|
-
const contextKeysToWatch = (
|
|
1168
|
+
const contextKeysToWatch = ( new Set(category.steps.flatMap(step => ( step.when.keys()))));
|
|
1161
1169
|
const buildStepList = () => {
|
|
1162
1170
|
category.steps.sort((a, b) => a.order - b.order);
|
|
1163
1171
|
const toRender = category.steps
|
|
@@ -1166,13 +1174,12 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
1166
1174
|
return;
|
|
1167
1175
|
}
|
|
1168
1176
|
renderedSteps = toRender;
|
|
1169
|
-
reset(stepListContainer, ...(
|
|
1177
|
+
reset(stepListContainer, ...( renderedSteps
|
|
1170
1178
|
.map(step => {
|
|
1171
1179
|
const codicon = $('.codicon' + (step.done ? '.complete' + ThemeIcon.asCSSSelector(gettingStartedCheckedCodicon) : ThemeIcon.asCSSSelector(gettingStartedUncheckedCodicon)), {
|
|
1172
1180
|
'data-done-step-id': step.id,
|
|
1173
1181
|
'x-dispatch': 'toggleStepCompletion:' + step.id,
|
|
1174
1182
|
'role': 'checkbox',
|
|
1175
|
-
'tabindex': '0',
|
|
1176
1183
|
'aria-checked': step.done ? 'true' : 'false'
|
|
1177
1184
|
});
|
|
1178
1185
|
const container = $('.step-description-container', { 'x-step-description-for': step.id });
|
|
@@ -1181,7 +1188,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
1181
1188
|
reset(stepTitle, ...renderLabelWithIcons(step.title));
|
|
1182
1189
|
const stepDescription = $('.step-container', {}, stepTitle, container);
|
|
1183
1190
|
if (step.media.type === 'image') {
|
|
1184
|
-
stepDescription.appendChild($('.image-description', { 'aria-label': ( localize(
|
|
1191
|
+
stepDescription.appendChild($('.image-description', { 'aria-label': ( localize(10762, "Image showing {0}", step.media.altText)) }));
|
|
1185
1192
|
}
|
|
1186
1193
|
return $('button.getting-started-step', {
|
|
1187
1194
|
'x-dispatch': 'selectTask:' + step.id,
|
|
@@ -1190,7 +1197,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
1190
1197
|
'aria-checked': step.done ? 'true' : 'false',
|
|
1191
1198
|
'role': 'button',
|
|
1192
1199
|
}, codicon, stepDescription);
|
|
1193
|
-
})))
|
|
1200
|
+
})));
|
|
1194
1201
|
};
|
|
1195
1202
|
buildStepList();
|
|
1196
1203
|
this.detailsPageDisposables.add(this.contextService.onDidChangeContext(e => {
|
|
@@ -1201,13 +1208,13 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
1201
1208
|
}
|
|
1202
1209
|
}));
|
|
1203
1210
|
const showNextCategory = this.gettingStartedCategories.find(_category => _category.id === category.next);
|
|
1204
|
-
const stepsContainer = $('.getting-started-detail-container', { 'role': 'list' }, stepListContainer, $('.done-next-container', {}, $('button.button-link.all-done', { 'x-dispatch': 'allDone' }, $('span.codicon.codicon-check-all'), ( localize(
|
|
1205
|
-
? [$('button.button-link.next', { 'x-dispatch': 'nextSection' }, ( localize(
|
|
1211
|
+
const stepsContainer = $('.getting-started-detail-container', { 'role': 'list' }, stepListContainer, $('.done-next-container', {}, $('button.button-link.all-done', { 'x-dispatch': 'allDone' }, $('span.codicon.codicon-check-all'), ( localize(10763, "Mark Done"))), ...(showNextCategory
|
|
1212
|
+
? [$('button.button-link.next', { 'x-dispatch': 'nextSection' }, ( localize(10764, "Next Section")), $('span.codicon.codicon-arrow-right'))]
|
|
1206
1213
|
: [])));
|
|
1207
|
-
this.detailsScrollbar = this._register((
|
|
1214
|
+
this.detailsScrollbar = this._register(( new DomScrollableElement(stepsContainer, { className: 'steps-container' })));
|
|
1208
1215
|
const stepListComponent = this.detailsScrollbar.getDomNode();
|
|
1209
1216
|
const categoryFooter = $('.getting-started-footer');
|
|
1210
|
-
if (this.editorInput.showTelemetryNotice && getTelemetryLevel(this.configurationService) !==
|
|
1217
|
+
if (this.editorInput.showTelemetryNotice && getTelemetryLevel(this.configurationService) !== TelemetryLevel.NONE && this.productService.enableTelemetry) {
|
|
1211
1218
|
this.buildTelemetryFooter(categoryFooter);
|
|
1212
1219
|
}
|
|
1213
1220
|
reset(this.stepsContent, categoryDescriptorComponent, stepListComponent, this.stepMediaComponent, categoryFooter);
|
|
@@ -1219,12 +1226,12 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
1219
1226
|
}
|
|
1220
1227
|
buildTelemetryFooter(parent) {
|
|
1221
1228
|
const mdRenderer = this.instantiationService.createInstance(MarkdownRenderer, {});
|
|
1222
|
-
const privacyStatementCopy = ( localize(
|
|
1229
|
+
const privacyStatementCopy = ( localize(10765, "privacy statement"));
|
|
1223
1230
|
const privacyStatementButton = `[${privacyStatementCopy}](command:workbench.action.openPrivacyStatementUrl)`;
|
|
1224
|
-
const optOutCopy = ( localize(
|
|
1231
|
+
const optOutCopy = ( localize(10766, "opt out"));
|
|
1225
1232
|
const optOutButton = `[${optOutCopy}](command:settings.filterByTelemetry)`;
|
|
1226
1233
|
const text = ( localize(
|
|
1227
|
-
|
|
1234
|
+
10767,
|
|
1228
1235
|
"{0} collects usage data. Read our {1} and learn how to {2}.",
|
|
1229
1236
|
this.productService.nameShort,
|
|
1230
1237
|
privacyStatementButton,
|
|
@@ -1296,7 +1303,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
1296
1303
|
const prevButton = this.container.querySelector('.prev-button.button-link');
|
|
1297
1304
|
prevButton.style.display = this.editorInput.showWelcome || this.prevWalkthrough ? 'block' : 'none';
|
|
1298
1305
|
const moreTextElement = prevButton.querySelector('.moreText');
|
|
1299
|
-
moreTextElement.textContent = firstLaunch ? ( localize(
|
|
1306
|
+
moreTextElement.textContent = firstLaunch ? ( localize(10768, "Welcome")) : ( localize(10742, "Go Back"));
|
|
1300
1307
|
this.container.querySelector('.gettingStartedSlideDetails').querySelectorAll('button').forEach(button => button.disabled = false);
|
|
1301
1308
|
this.container.querySelector('.gettingStartedSlideCategories').querySelectorAll('button').forEach(button => button.disabled = true);
|
|
1302
1309
|
this.container.querySelector('.gettingStartedSlideCategories').querySelectorAll('input').forEach(button => button.disabled = true);
|
|
@@ -1314,31 +1321,31 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
1314
1321
|
}
|
|
1315
1322
|
}
|
|
1316
1323
|
};
|
|
1317
|
-
GettingStartedPage = GettingStartedPage_1 = (
|
|
1318
|
-
(
|
|
1319
|
-
(
|
|
1320
|
-
(
|
|
1321
|
-
(
|
|
1322
|
-
(
|
|
1323
|
-
(
|
|
1324
|
-
(
|
|
1325
|
-
(
|
|
1326
|
-
(
|
|
1327
|
-
(
|
|
1328
|
-
(
|
|
1329
|
-
(
|
|
1330
|
-
(
|
|
1331
|
-
(
|
|
1332
|
-
(
|
|
1333
|
-
(
|
|
1334
|
-
(
|
|
1335
|
-
(
|
|
1336
|
-
(
|
|
1337
|
-
(
|
|
1338
|
-
(
|
|
1339
|
-
(
|
|
1340
|
-
(
|
|
1341
|
-
], GettingStartedPage))
|
|
1324
|
+
GettingStartedPage = GettingStartedPage_1 = ( __decorate([
|
|
1325
|
+
( __param(1, ICommandService)),
|
|
1326
|
+
( __param(2, IProductService)),
|
|
1327
|
+
( __param(3, IKeybindingService)),
|
|
1328
|
+
( __param(4, IWalkthroughsService)),
|
|
1329
|
+
( __param(5, IConfigurationService)),
|
|
1330
|
+
( __param(6, ITelemetryService)),
|
|
1331
|
+
( __param(7, ILanguageService)),
|
|
1332
|
+
( __param(8, IFileService)),
|
|
1333
|
+
( __param(9, IOpenerService)),
|
|
1334
|
+
( __param(10, IWorkbenchThemeService)),
|
|
1335
|
+
( __param(11, IStorageService)),
|
|
1336
|
+
( __param(12, IExtensionService)),
|
|
1337
|
+
( __param(13, IInstantiationService)),
|
|
1338
|
+
( __param(14, INotificationService)),
|
|
1339
|
+
( __param(15, IEditorGroupsService)),
|
|
1340
|
+
( __param(16, IContextKeyService)),
|
|
1341
|
+
( __param(17, IQuickInputService)),
|
|
1342
|
+
( __param(18, IWorkspacesService)),
|
|
1343
|
+
( __param(19, ILabelService)),
|
|
1344
|
+
( __param(20, IHostService)),
|
|
1345
|
+
( __param(21, IWebviewService)),
|
|
1346
|
+
( __param(22, IWorkspaceContextService)),
|
|
1347
|
+
( __param(23, IAccessibilityService))
|
|
1348
|
+
], GettingStartedPage));
|
|
1342
1349
|
class GettingStartedInputSerializer {
|
|
1343
1350
|
canSerialize(editorInput) {
|
|
1344
1351
|
return true;
|
|
@@ -1350,14 +1357,10 @@ class GettingStartedInputSerializer {
|
|
|
1350
1357
|
return instantiationService.invokeFunction(accessor => {
|
|
1351
1358
|
try {
|
|
1352
1359
|
const { selectedCategory, selectedStep } = JSON.parse(serializedEditorInput);
|
|
1353
|
-
return (
|
|
1354
|
-
(new GettingStartedInput({ selectedCategory, selectedStep }))
|
|
1355
|
-
);
|
|
1360
|
+
return ( new GettingStartedInput({ selectedCategory, selectedStep }));
|
|
1356
1361
|
}
|
|
1357
1362
|
catch { }
|
|
1358
|
-
return (
|
|
1359
|
-
(new GettingStartedInput({}))
|
|
1360
|
-
);
|
|
1363
|
+
return ( new GettingStartedInput({}));
|
|
1361
1364
|
});
|
|
1362
1365
|
}
|
|
1363
1366
|
}
|