@codingame/monaco-vscode-walkthrough-service-override 23.3.0 → 24.1.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/package.json +2 -9
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStarted.contribution.js +25 -24
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStarted.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStarted.js +81 -58
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedAccessibleView.js +3 -3
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedColors.js +7 -7
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedDetailsRenderer.js +1 -1
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedExtensionPoint.js +37 -37
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedIcons.js +2 -2
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedInput.js +1 -1
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedService._contribution.js +4 -4
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedService.js +3 -3
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/startupPage.js +9 -11
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/common/gettingStartedContent.js +151 -151
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/common/media/notebookProfile.js +3 -3
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/common/media/theme_picker.js +6 -6
- package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/common/media/theme_picker_small.js +5 -5
- package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/editor/editorWalkThrough.js +3 -3
- package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/walkThrough.contribution.js +3 -3
- package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/walkThroughInput.js +1 -1
- package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/walkThroughPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/walkThroughPart.js +3 -3
- package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/common/walkThroughUtils.js +1 -1
|
@@ -35,7 +35,7 @@ import { IContextKeyService } from '@codingame/monaco-vscode-api/vscode/vs/platf
|
|
|
35
35
|
import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service';
|
|
36
36
|
import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
|
|
37
37
|
import { IKeybindingService } from '@codingame/monaco-vscode-api/vscode/vs/platform/keybinding/common/keybinding.service';
|
|
38
|
-
import { Verbosity } from '@codingame/monaco-vscode-
|
|
38
|
+
import { Verbosity } from '@codingame/monaco-vscode-api/vscode/vs/platform/label/common/label';
|
|
39
39
|
import { ILabelService } from '@codingame/monaco-vscode-api/vscode/vs/platform/label/common/label.service';
|
|
40
40
|
import { INotificationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/notification/common/notification.service';
|
|
41
41
|
import { Link } from '@codingame/monaco-vscode-api/vscode/vs/platform/opener/browser/link';
|
|
@@ -50,11 +50,11 @@ import { getTelemetryLevel } from '@codingame/monaco-vscode-api/vscode/vs/platfo
|
|
|
50
50
|
import { defaultToggleStyles, defaultButtonStyles, defaultKeybindingLabelStyles } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/browser/defaultStyles';
|
|
51
51
|
import { UNKNOWN_EMPTY_WINDOW_WORKSPACE } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace';
|
|
52
52
|
import { IWorkspaceContextService } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace.service';
|
|
53
|
-
import { isRecentFolder, isRecentWorkspace } from '@codingame/monaco-vscode-
|
|
53
|
+
import { isRecentFolder, isRecentWorkspace } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspaces/common/workspaces';
|
|
54
54
|
import { IWorkspacesService } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspaces/common/workspaces.service';
|
|
55
|
-
import { OpenRecentAction } from '@codingame/monaco-vscode-
|
|
56
|
-
import { OpenFolderViaWorkspaceAction, OpenFileFolderAction, OpenFolderAction } from '@codingame/monaco-vscode-
|
|
57
|
-
import { EditorPane } from '@codingame/monaco-vscode-
|
|
55
|
+
import { OpenRecentAction } from '@codingame/monaco-vscode-api/vscode/vs/workbench/browser/actions/windowActions';
|
|
56
|
+
import { OpenFolderViaWorkspaceAction, OpenFileFolderAction, OpenFolderAction } from '@codingame/monaco-vscode-api/vscode/vs/workbench/browser/actions/workspaceActions';
|
|
57
|
+
import { EditorPane } from '@codingame/monaco-vscode-api/vscode/vs/workbench/browser/parts/editor/editorPane';
|
|
58
58
|
import { WorkbenchStateContext } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/contextkeys';
|
|
59
59
|
import { IWebviewService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/webview/browser/webview.service';
|
|
60
60
|
import './gettingStartedColors.js';
|
|
@@ -134,7 +134,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
134
134
|
this.container = $('.gettingStartedContainer', {
|
|
135
135
|
role: 'document',
|
|
136
136
|
tabindex: 0,
|
|
137
|
-
'aria-label': ( localize(
|
|
137
|
+
'aria-label': ( localize(13132, "Overview of how to get up to speed with your editor."))
|
|
138
138
|
});
|
|
139
139
|
this.stepMediaComponent = $('.getting-started-media');
|
|
140
140
|
this.stepMediaComponent.id = generateUuid();
|
|
@@ -210,14 +210,14 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
210
210
|
badgeelement.parentElement?.setAttribute('aria-checked', 'true');
|
|
211
211
|
badgeelement.classList.remove(...ThemeIcon.asClassNameArray(gettingStartedUncheckedCodicon));
|
|
212
212
|
badgeelement.classList.add('complete', ...ThemeIcon.asClassNameArray(gettingStartedCheckedCodicon));
|
|
213
|
-
badgeelement.setAttribute('aria-label', ( localize(
|
|
213
|
+
badgeelement.setAttribute('aria-label', ( localize(13133, "Checkbox for Step {0}: Completed", step.title)));
|
|
214
214
|
}
|
|
215
215
|
else {
|
|
216
216
|
badgeelement.setAttribute('aria-checked', 'false');
|
|
217
217
|
badgeelement.parentElement?.setAttribute('aria-checked', 'false');
|
|
218
218
|
badgeelement.classList.remove('complete', ...ThemeIcon.asClassNameArray(gettingStartedCheckedCodicon));
|
|
219
219
|
badgeelement.classList.add(...ThemeIcon.asClassNameArray(gettingStartedUncheckedCodicon));
|
|
220
|
-
badgeelement.setAttribute('aria-label', ( localize(
|
|
220
|
+
badgeelement.setAttribute('aria-label', ( localize(13134, "Checkbox for Step {0}: Not completed", step.title)));
|
|
221
221
|
}
|
|
222
222
|
});
|
|
223
223
|
}
|
|
@@ -259,16 +259,24 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
259
259
|
}
|
|
260
260
|
async setInput(newInput, options, context, token) {
|
|
261
261
|
await super.setInput(newInput, options, context, token);
|
|
262
|
-
|
|
262
|
+
const selectedCategory = options?.selectedCategory ?? newInput.selectedCategory;
|
|
263
|
+
const selectedStep = options?.selectedStep ?? newInput.selectedStep;
|
|
264
|
+
await this.applyInput({ ...options, selectedCategory, selectedStep });
|
|
263
265
|
}
|
|
264
266
|
async setOptions(options) {
|
|
265
267
|
super.setOptions(options);
|
|
268
|
+
if (!this.editorInput) {
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
266
271
|
if (this.editorInput.selectedCategory !== options?.selectedCategory ||
|
|
267
272
|
this.editorInput.selectedStep !== options?.selectedStep) {
|
|
268
273
|
await this.applyInput(options);
|
|
269
274
|
}
|
|
270
275
|
}
|
|
271
276
|
async applyInput(options) {
|
|
277
|
+
if (!this.editorInput) {
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
272
280
|
this.editorInput.showTelemetryNotice = options?.showTelemetryNotice ?? true;
|
|
273
281
|
this.editorInput.selectedCategory = options?.selectedCategory;
|
|
274
282
|
this.editorInput.selectedStep = options?.selectedStep;
|
|
@@ -430,7 +438,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
430
438
|
label: x.title,
|
|
431
439
|
detail: x.description,
|
|
432
440
|
description: x.source,
|
|
433
|
-
}))), { canPickMany: false, matchOnDescription: true, matchOnDetail: true, title: ( localize(
|
|
441
|
+
}))), { canPickMany: false, matchOnDescription: true, matchOnDetail: true, title: ( localize(13135, "Open Walkthrough...")) });
|
|
434
442
|
if (selection) {
|
|
435
443
|
this.runDispatchCommand('selectCategory', selection.id);
|
|
436
444
|
}
|
|
@@ -612,7 +620,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
612
620
|
const themeType = this.themeService.getColorTheme().type;
|
|
613
621
|
const videoPath = media.path[themeType];
|
|
614
622
|
const videoPoster = media.poster ? media.poster[themeType] : undefined;
|
|
615
|
-
const altText = media.altText ? media.altText : ( localize(
|
|
623
|
+
const altText = media.altText ? media.altText : ( localize(13136, "Video for {0}", stepToExpand.title));
|
|
616
624
|
const rawHTML = await this.detailsRenderer.renderVideo(videoPath, videoPoster, altText);
|
|
617
625
|
this.webview.setHtml(rawHTML);
|
|
618
626
|
let isDisposed = false;
|
|
@@ -629,6 +637,9 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
629
637
|
}
|
|
630
638
|
}
|
|
631
639
|
async selectStepLoose(id) {
|
|
640
|
+
if (!this.editorInput) {
|
|
641
|
+
return;
|
|
642
|
+
}
|
|
632
643
|
if (id.startsWith(`${this.editorInput.selectedCategory}#`)) {
|
|
633
644
|
this.selectStep(id);
|
|
634
645
|
}
|
|
@@ -640,14 +651,17 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
640
651
|
provideScreenReaderUpdate() {
|
|
641
652
|
if (this.configurationService.getValue(AccessibilityVerbositySettingId.Walkthrough)) {
|
|
642
653
|
const kbLabel = this.keybindingService.lookupKeybinding(AccessibleViewAction.id)?.getAriaLabel();
|
|
643
|
-
return kbLabel ? ( localize(
|
|
644
|
-
|
|
654
|
+
return kbLabel ? ( localize(13137, "Inspect this in the accessible view ({0}).\n", kbLabel)) : ( localize(
|
|
655
|
+
13138,
|
|
645
656
|
"Inspect this in the accessible view via the command Open Accessible View which is currently not triggerable via keybinding.\n"
|
|
646
657
|
));
|
|
647
658
|
}
|
|
648
659
|
return '';
|
|
649
660
|
}
|
|
650
661
|
async selectStep(id, delayFocus = true) {
|
|
662
|
+
if (!this.editorInput) {
|
|
663
|
+
return;
|
|
664
|
+
}
|
|
651
665
|
if (id) {
|
|
652
666
|
let stepElement = this.container.querySelector(`[data-step-id="${id}"]`);
|
|
653
667
|
if (!stepElement) {
|
|
@@ -701,7 +715,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
701
715
|
this.categoriesPageScrollbar.dispose();
|
|
702
716
|
}
|
|
703
717
|
this.categoriesSlide = $('.gettingStartedSlideCategories.gettingStartedSlide');
|
|
704
|
-
const prevButton = $('button.prev-button.button-link', { 'x-dispatch': 'scrollPrev' }, $('span.scroll-button.codicon.codicon-chevron-left'), $('span.moreText', {}, ( localize(
|
|
718
|
+
const prevButton = $('button.prev-button.button-link', { 'x-dispatch': 'scrollPrev' }, $('span.scroll-button.codicon.codicon-chevron-left'), $('span.moreText', {}, ( localize(13139, "Go Back"))));
|
|
705
719
|
this.stepsSlide = $('.gettingStartedSlideDetails.gettingStartedSlide', {}, prevButton);
|
|
706
720
|
this.stepsContent = $('.gettingStartedDetailsContent', {});
|
|
707
721
|
this.detailsPageScrollbar = this._register(( new DomScrollableElement(
|
|
@@ -725,11 +739,11 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
725
739
|
icon: Codicon.check,
|
|
726
740
|
actionClassName: 'getting-started-checkbox',
|
|
727
741
|
isChecked: this.configurationService.getValue(configurationKey) === 'welcomePage',
|
|
728
|
-
title: ( localize(
|
|
742
|
+
title: ( localize(13140, "When checked, this page will be shown on startup.")),
|
|
729
743
|
...defaultToggleStyles
|
|
730
744
|
}));
|
|
731
745
|
showOnStartupCheckbox.domNode.id = 'showOnStartup';
|
|
732
|
-
const showOnStartupLabel = $('label.caption', { for: 'showOnStartup' }, ( localize(
|
|
746
|
+
const showOnStartupLabel = $('label.caption', { for: 'showOnStartup' }, ( localize(13141, "Show welcome page on startup")));
|
|
733
747
|
const onShowOnStartupChanged = () => {
|
|
734
748
|
if (showOnStartupCheckbox.checked) {
|
|
735
749
|
this.telemetryService.publicLog2('gettingStarted.ActionExecuted', { command: 'showOnStartupChecked', argument: undefined, walkthroughId: this.currentWalkthrough?.id });
|
|
@@ -748,7 +762,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
748
762
|
showOnStartupCheckbox.checked = !showOnStartupCheckbox.checked;
|
|
749
763
|
onShowOnStartupChanged();
|
|
750
764
|
}));
|
|
751
|
-
const header = $('.header', {}, $('h1.product-name.caption', {}, this.productService.nameLong), $('p.subtitle.description', {}, ( localize(
|
|
765
|
+
const header = $('.header', {}, $('h1.product-name.caption', {}, this.productService.nameLong), $('p.subtitle.description', {}, ( localize(13142, "Editing evolved"))));
|
|
752
766
|
const leftColumn = $('.categories-column.categories-column-left', {});
|
|
753
767
|
const rightColumn = $('.categories-column.categories-column-right', {});
|
|
754
768
|
const startList = this.buildStartList();
|
|
@@ -784,19 +798,20 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
784
798
|
this.categoriesPageScrollbar?.scanDomNode();
|
|
785
799
|
this.updateCategoryProgress();
|
|
786
800
|
this.registerDispatchListeners();
|
|
787
|
-
|
|
788
|
-
|
|
801
|
+
const editorInput = this.editorInput;
|
|
802
|
+
if (editorInput?.selectedCategory) {
|
|
803
|
+
this.currentWalkthrough = this.gettingStartedCategories.find(category => category.id === editorInput.selectedCategory);
|
|
789
804
|
if (!this.currentWalkthrough) {
|
|
790
805
|
this.gettingStartedCategories = this.gettingStartedService.getWalkthroughs();
|
|
791
|
-
this.currentWalkthrough = this.gettingStartedCategories.find(category => category.id ===
|
|
806
|
+
this.currentWalkthrough = this.gettingStartedCategories.find(category => category.id === editorInput.selectedCategory);
|
|
792
807
|
if (this.currentWalkthrough) {
|
|
793
|
-
this.buildCategorySlide(
|
|
808
|
+
this.buildCategorySlide(editorInput.selectedCategory, editorInput.selectedStep);
|
|
794
809
|
this.setSlide('details');
|
|
795
810
|
return;
|
|
796
811
|
}
|
|
797
812
|
}
|
|
798
813
|
else {
|
|
799
|
-
this.buildCategorySlide(
|
|
814
|
+
this.buildCategorySlide(editorInput.selectedCategory, editorInput.selectedStep);
|
|
800
815
|
this.setSlide('details');
|
|
801
816
|
return;
|
|
802
817
|
}
|
|
@@ -841,7 +856,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
841
856
|
const link = $('button.button-link');
|
|
842
857
|
link.innerText = name;
|
|
843
858
|
link.title = fullPath;
|
|
844
|
-
link.setAttribute('aria-label', ( localize(
|
|
859
|
+
link.setAttribute('aria-label', ( localize(13143, "Open folder {0} with path {1}", name, parentPath)));
|
|
845
860
|
link.addEventListener('click', e => {
|
|
846
861
|
this.telemetryService.publicLog2('gettingStarted.ActionExecuted', { command: 'openRecent', argument: undefined, walkthroughId: this.currentWalkthrough?.id });
|
|
847
862
|
this.hostService.openWindow([windowOpenable], {
|
|
@@ -864,18 +879,18 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
864
879
|
this.recentlyOpenedList.dispose();
|
|
865
880
|
}
|
|
866
881
|
const recentlyOpenedList = this.recentlyOpenedList = ( new GettingStartedIndexList({
|
|
867
|
-
title: ( localize(
|
|
882
|
+
title: ( localize(13144, "Recent")),
|
|
868
883
|
klass: 'recently-opened',
|
|
869
884
|
limit: 5,
|
|
870
|
-
empty: $('.empty-recent', {}, ( localize(
|
|
885
|
+
empty: $('.empty-recent', {}, ( localize(13145, "You have no recent folders,")), $('button.button-link', { 'x-dispatch': 'openFolder' }, ( localize(13146, "open a folder"))), ( localize(13147, "to start."))),
|
|
871
886
|
more: $('.more', {}, $('button.button-link', {
|
|
872
887
|
'x-dispatch': 'showMoreRecents',
|
|
873
888
|
title: ( localize(
|
|
874
|
-
|
|
889
|
+
13148,
|
|
875
890
|
"Show All Recent Folders {0}",
|
|
876
891
|
this.getKeybindingLabel(OpenRecentAction.ID)
|
|
877
892
|
))
|
|
878
|
-
}, ( localize(
|
|
893
|
+
}, ( localize(13149, "More...")))),
|
|
879
894
|
renderElement: renderRecent,
|
|
880
895
|
contextService: this.contextService
|
|
881
896
|
}));
|
|
@@ -903,7 +918,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
903
918
|
this.startList.dispose();
|
|
904
919
|
}
|
|
905
920
|
const startList = this.startList = ( new GettingStartedIndexList({
|
|
906
|
-
title: ( localize(
|
|
921
|
+
title: ( localize(13150, "Start")),
|
|
907
922
|
klass: 'start-container',
|
|
908
923
|
limit: 10,
|
|
909
924
|
renderElement: renderStartEntry,
|
|
@@ -919,10 +934,10 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
919
934
|
const renderNewBadge = (category.newItems || category.newEntry) && !category.isFeatured;
|
|
920
935
|
const newBadge = $('.new-badge', {});
|
|
921
936
|
if (category.newEntry) {
|
|
922
|
-
reset(newBadge, $('.new-category', {}, ( localize(
|
|
937
|
+
reset(newBadge, $('.new-category', {}, ( localize(13151, "New"))));
|
|
923
938
|
}
|
|
924
939
|
else if (category.newItems) {
|
|
925
|
-
reset(newBadge, $('.new-items', {}, ( localize(
|
|
940
|
+
reset(newBadge, $('.new-items', {}, ( localize(13152, "Updated"))));
|
|
926
941
|
}
|
|
927
942
|
const featuredBadge = $('.featured-badge', {});
|
|
928
943
|
const descriptionContent = $('.description-content', {});
|
|
@@ -938,9 +953,9 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
938
953
|
}, featuredBadge, $('.main-content', {}, this.iconWidgetFor(category), titleContent, renderNewBadge ? newBadge : $('.no-badge'), $('a.codicon.codicon-close.hide-category-button', {
|
|
939
954
|
'tabindex': 0,
|
|
940
955
|
'x-dispatch': 'hideCategory:' + category.id,
|
|
941
|
-
'title': ( localize(
|
|
956
|
+
'title': ( localize(13153, "Hide")),
|
|
942
957
|
'role': 'button',
|
|
943
|
-
'aria-label': ( localize(
|
|
958
|
+
'aria-label': ( localize(13154, "Hide")),
|
|
944
959
|
})), descriptionContent, $('.category-progress', { 'x-data-category-id': category.id, }, $('.progress-bar-outer', { 'role': 'progressbar' }, $('.progress-bar-inner'))));
|
|
945
960
|
};
|
|
946
961
|
if (this.gettingStartedList) {
|
|
@@ -966,10 +981,10 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
966
981
|
return rank;
|
|
967
982
|
};
|
|
968
983
|
const gettingStartedList = this.gettingStartedList = ( new GettingStartedIndexList({
|
|
969
|
-
title: ( localize(
|
|
984
|
+
title: ( localize(13155, "Walkthroughs")),
|
|
970
985
|
klass: 'getting-started',
|
|
971
986
|
limit: 5,
|
|
972
|
-
footer: $('span.button-link.see-all-walkthroughs', { 'x-dispatch': 'seeAllWalkthroughs', 'tabindex': 0 }, ( localize(
|
|
987
|
+
footer: $('span.button-link.see-all-walkthroughs', { 'x-dispatch': 'seeAllWalkthroughs', 'tabindex': 0 }, ( localize(13149, "More..."))),
|
|
973
988
|
renderElement: renderGetttingStaredWalkthrough,
|
|
974
989
|
rankElement: rankWalkthrough,
|
|
975
990
|
contextService: this.contextService,
|
|
@@ -1022,10 +1037,10 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
1022
1037
|
bar.style.width = `${progress}%`;
|
|
1023
1038
|
element.parentElement.classList.toggle('no-progress', stats.stepsComplete === 0);
|
|
1024
1039
|
if (stats.stepsTotal === stats.stepsComplete) {
|
|
1025
|
-
bar.title = ( localize(
|
|
1040
|
+
bar.title = ( localize(13156, "All {0} steps complete!", stats.stepsComplete));
|
|
1026
1041
|
}
|
|
1027
1042
|
else {
|
|
1028
|
-
bar.title = ( localize(
|
|
1043
|
+
bar.title = ( localize(13157, "{0} of {1} steps complete", stats.stepsComplete, stats.stepsTotal));
|
|
1029
1044
|
}
|
|
1030
1045
|
});
|
|
1031
1046
|
}
|
|
@@ -1038,6 +1053,9 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
1038
1053
|
throw Error('Could not find category with ID: ' + categoryID);
|
|
1039
1054
|
}
|
|
1040
1055
|
this.inProgressScroll = this.inProgressScroll.then(async () => {
|
|
1056
|
+
if (!this.editorInput) {
|
|
1057
|
+
return;
|
|
1058
|
+
}
|
|
1041
1059
|
reset(this.stepsContent);
|
|
1042
1060
|
this.editorInput.selectedCategory = categoryID;
|
|
1043
1061
|
this.editorInput.selectedStep = stepId;
|
|
@@ -1095,11 +1113,11 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
1095
1113
|
if ((commandURI.path === ( OpenFileFolderAction.ID.toString()) ||
|
|
1096
1114
|
commandURI.path === ( OpenFolderAction.ID.toString())) &&
|
|
1097
1115
|
this.workspaceContextService.getWorkspace().folders.length === 0) {
|
|
1098
|
-
const selectedStepIndex = this.currentWalkthrough?.steps.findIndex(step => step.id === this.editorInput
|
|
1116
|
+
const selectedStepIndex = this.currentWalkthrough?.steps.findIndex(step => step.id === this.editorInput?.selectedStep);
|
|
1099
1117
|
if (selectedStepIndex !== undefined &&
|
|
1100
1118
|
selectedStepIndex > -1 &&
|
|
1101
1119
|
this.currentWalkthrough?.steps.slice(selectedStepIndex + 1).some(step => !step.done)) {
|
|
1102
|
-
const restoreData = { folder: UNKNOWN_EMPTY_WINDOW_WORKSPACE.id, category: this.editorInput
|
|
1120
|
+
const restoreData = { folder: UNKNOWN_EMPTY_WINDOW_WORKSPACE.id, category: this.editorInput?.selectedCategory, step: this.editorInput?.selectedStep };
|
|
1103
1121
|
this.storageService.store(restoreWalkthroughsConfigurationKey, JSON.stringify(restoreData), StorageScope.PROFILE, StorageTarget.MACHINE);
|
|
1104
1122
|
}
|
|
1105
1123
|
}
|
|
@@ -1110,7 +1128,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
1110
1128
|
console.warn('Warn: Running walkthrough command', href, 'yielded non-URI `openFolder` result', toOpen, '. It will be disregarded.');
|
|
1111
1129
|
return;
|
|
1112
1130
|
}
|
|
1113
|
-
const restoreData = { folder: ( toOpen.toString()), category: this.editorInput
|
|
1131
|
+
const restoreData = { folder: ( toOpen.toString()), category: this.editorInput?.selectedCategory, step: this.editorInput?.selectedStep };
|
|
1114
1132
|
this.storageService.store(restoreWalkthroughsConfigurationKey, JSON.stringify(restoreData), StorageScope.PROFILE, StorageTarget.MACHINE);
|
|
1115
1133
|
this.hostService.openWindow([{ folderUri: toOpen }]);
|
|
1116
1134
|
}
|
|
@@ -1146,7 +1164,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
1146
1164
|
if (isCommand) {
|
|
1147
1165
|
const keybinding = this.getKeyBinding(command);
|
|
1148
1166
|
if (keybinding) {
|
|
1149
|
-
const shortcutMessage = $('span.shortcut-message', {}, ( localize(
|
|
1167
|
+
const shortcutMessage = $('span.shortcut-message', {}, ( localize(13158, 'Tip: Use keyboard shortcut ')));
|
|
1150
1168
|
container.appendChild(shortcutMessage);
|
|
1151
1169
|
const label = ( new KeybindingLabel(shortcutMessage, OS, { ...defaultKeybindingLabelStyles }));
|
|
1152
1170
|
label.set(keybinding);
|
|
@@ -1184,6 +1202,9 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
1184
1202
|
super.clearInput();
|
|
1185
1203
|
}
|
|
1186
1204
|
buildCategorySlide(categoryID, selectedStep) {
|
|
1205
|
+
if (!this.editorInput) {
|
|
1206
|
+
return;
|
|
1207
|
+
}
|
|
1187
1208
|
if (this.detailsScrollbar) {
|
|
1188
1209
|
this.detailsScrollbar.dispose();
|
|
1189
1210
|
}
|
|
@@ -1202,7 +1223,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
1202
1223
|
const stepListContainer = $('.step-list-container');
|
|
1203
1224
|
this.detailsPageDisposables.add(addDisposableListener(stepListContainer, 'keydown', (e) => {
|
|
1204
1225
|
const event = ( new StandardKeyboardEvent(e));
|
|
1205
|
-
const currentStepIndex = () => category.steps.findIndex(e => e.id === this.editorInput
|
|
1226
|
+
const currentStepIndex = () => category.steps.findIndex(e => e.id === this.editorInput?.selectedStep);
|
|
1206
1227
|
if (event.keyCode === KeyCode.UpArrow) {
|
|
1207
1228
|
const toExpand = category.steps.filter((step, index) => index < currentStepIndex() && this.contextService.contextMatchesRules(step.when));
|
|
1208
1229
|
if (toExpand.length) {
|
|
@@ -1234,8 +1255,8 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
1234
1255
|
'role': 'checkbox',
|
|
1235
1256
|
'aria-checked': step.done ? 'true' : 'false',
|
|
1236
1257
|
'aria-label': step.done
|
|
1237
|
-
? ( localize(
|
|
1238
|
-
: ( localize(
|
|
1258
|
+
? ( localize(13133, "Checkbox for Step {0}: Completed", step.title))
|
|
1259
|
+
: ( localize(13134, "Checkbox for Step {0}: Not completed", step.title)),
|
|
1239
1260
|
});
|
|
1240
1261
|
const container = $('.step-description-container', { 'x-step-description-for': step.id });
|
|
1241
1262
|
this.buildMarkdownDescription(container, step.description);
|
|
@@ -1243,10 +1264,10 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
1243
1264
|
reset(stepTitle, ...renderLabelWithIcons(step.title));
|
|
1244
1265
|
const stepDescription = $('.step-container', {}, stepTitle, container);
|
|
1245
1266
|
if (step.media.type === 'image') {
|
|
1246
|
-
stepDescription.appendChild($('.image-description', { 'aria-label': ( localize(
|
|
1267
|
+
stepDescription.appendChild($('.image-description', { 'aria-label': ( localize(13159, "Image showing {0}", step.media.altText)) }));
|
|
1247
1268
|
}
|
|
1248
1269
|
else if (step.media.type === 'video') {
|
|
1249
|
-
stepDescription.appendChild($('.video-description', { 'aria-label': ( localize(
|
|
1270
|
+
stepDescription.appendChild($('.video-description', { 'aria-label': ( localize(13160, "Video showing {0}", step.media.altText)) }));
|
|
1250
1271
|
}
|
|
1251
1272
|
return $('button.getting-started-step', {
|
|
1252
1273
|
'x-dispatch': 'selectTask:' + step.id,
|
|
@@ -1259,15 +1280,15 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
1259
1280
|
};
|
|
1260
1281
|
buildStepList();
|
|
1261
1282
|
this.detailsPageDisposables.add(this.contextService.onDidChangeContext(e => {
|
|
1262
|
-
if (e.affectsSome(contextKeysToWatch) && this.currentWalkthrough) {
|
|
1283
|
+
if (e.affectsSome(contextKeysToWatch) && this.currentWalkthrough && this.editorInput) {
|
|
1263
1284
|
buildStepList();
|
|
1264
1285
|
this.registerDispatchListeners();
|
|
1265
1286
|
this.selectStep(this.editorInput.selectedStep, false);
|
|
1266
1287
|
}
|
|
1267
1288
|
}));
|
|
1268
1289
|
const showNextCategory = this.gettingStartedCategories.find(_category => _category.id === category.next);
|
|
1269
|
-
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(
|
|
1270
|
-
? [$('button.button-link.next', { 'x-dispatch': 'nextSection' }, ( localize(
|
|
1290
|
+
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(13161, "Mark Done"))), ...(showNextCategory
|
|
1291
|
+
? [$('button.button-link.next', { 'x-dispatch': 'nextSection' }, ( localize(13162, "Next Section")), $('span.codicon.codicon-arrow-right'))]
|
|
1271
1292
|
: [])));
|
|
1272
1293
|
this.detailsScrollbar = this._register(( new DomScrollableElement(stepsContainer, { className: 'steps-container' })));
|
|
1273
1294
|
const stepListComponent = this.detailsScrollbar.getDomNode();
|
|
@@ -1283,12 +1304,12 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
1283
1304
|
this.registerDispatchListeners();
|
|
1284
1305
|
}
|
|
1285
1306
|
buildTelemetryFooter(parent) {
|
|
1286
|
-
const privacyStatementCopy = ( localize(
|
|
1307
|
+
const privacyStatementCopy = ( localize(13163, "privacy statement"));
|
|
1287
1308
|
const privacyStatementButton = `[${privacyStatementCopy}](command:workbench.action.openPrivacyStatementUrl)`;
|
|
1288
|
-
const optOutCopy = ( localize(
|
|
1309
|
+
const optOutCopy = ( localize(13164, "opt out"));
|
|
1289
1310
|
const optOutButton = `[${optOutCopy}](command:settings.filterByTelemetry)`;
|
|
1290
1311
|
const text = ( localize(
|
|
1291
|
-
|
|
1312
|
+
13165,
|
|
1292
1313
|
"{0} collects usage data. Read our {1} and learn how to {2}.",
|
|
1293
1314
|
this.productService.nameShort,
|
|
1294
1315
|
privacyStatementButton,
|
|
@@ -1320,10 +1341,12 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
1320
1341
|
}
|
|
1321
1342
|
else {
|
|
1322
1343
|
this.currentWalkthrough = undefined;
|
|
1323
|
-
this.editorInput
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1344
|
+
if (this.editorInput) {
|
|
1345
|
+
this.editorInput.selectedCategory = undefined;
|
|
1346
|
+
this.editorInput.selectedStep = undefined;
|
|
1347
|
+
this.editorInput.showTelemetryNotice = false;
|
|
1348
|
+
this.editorInput.walkthroughPageTitle = undefined;
|
|
1349
|
+
}
|
|
1327
1350
|
if (this.gettingStartedCategories.length !== this.gettingStartedList?.itemCount) {
|
|
1328
1351
|
this.buildCategoriesSlide();
|
|
1329
1352
|
}
|
|
@@ -1337,7 +1360,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
1337
1360
|
this.commandService.executeCommand('workbench.action.closeActiveEditor');
|
|
1338
1361
|
}
|
|
1339
1362
|
escape() {
|
|
1340
|
-
if (this.editorInput
|
|
1363
|
+
if (this.editorInput?.selectedCategory) {
|
|
1341
1364
|
this.scrollPrev();
|
|
1342
1365
|
}
|
|
1343
1366
|
else {
|
|
@@ -1358,9 +1381,9 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
|
|
|
1358
1381
|
slideManager.classList.add('showDetails');
|
|
1359
1382
|
slideManager.classList.remove('showCategories');
|
|
1360
1383
|
const prevButton = this.container.querySelector('.prev-button.button-link');
|
|
1361
|
-
prevButton.style.display = this.editorInput
|
|
1384
|
+
prevButton.style.display = this.editorInput?.showWelcome || this.prevWalkthrough ? 'block' : 'none';
|
|
1362
1385
|
const moreTextElement = prevButton.querySelector('.moreText');
|
|
1363
|
-
moreTextElement.textContent = firstLaunch ? ( localize(
|
|
1386
|
+
moreTextElement.textContent = firstLaunch ? ( localize(13166, "Welcome")) : ( localize(13139, "Go Back"));
|
|
1364
1387
|
this.container.querySelector('.gettingStartedSlideDetails').querySelectorAll('button').forEach(button => button.disabled = false);
|
|
1365
1388
|
this.container.querySelector('.gettingStartedSlideCategories').querySelectorAll('button').forEach(button => button.disabled = true);
|
|
1366
1389
|
this.container.querySelector('.gettingStartedSlideCategories').querySelectorAll('input').forEach(button => button.disabled = true);
|
|
@@ -116,11 +116,11 @@ class GettingStartedAccessibleProvider extends Disposable {
|
|
|
116
116
|
}
|
|
117
117
|
_getContent(waltkrough, step, includeTitle) {
|
|
118
118
|
const description = ( step.description.map(lt => lt.nodes.filter(node => typeof node === 'string'))).join('\n');
|
|
119
|
-
const stepsContent = ( localize(
|
|
119
|
+
const stepsContent = ( localize(13167, '{0}\n{1}', step.title, description));
|
|
120
120
|
if (includeTitle) {
|
|
121
121
|
return [
|
|
122
|
-
( localize(
|
|
123
|
-
( localize(
|
|
122
|
+
( localize(13168, 'Title: {0}', waltkrough.title)),
|
|
123
|
+
( localize(13169, 'Description: {0}', waltkrough.description)),
|
|
124
124
|
stepsContent
|
|
125
125
|
].join('\n');
|
|
126
126
|
}
|
package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedColors.js
CHANGED
|
@@ -12,10 +12,10 @@ import '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colors/quic
|
|
|
12
12
|
import '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colors/searchColors';
|
|
13
13
|
import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
14
14
|
|
|
15
|
-
registerColor('welcomePage.background', null, ( localize(
|
|
16
|
-
registerColor('welcomePage.tileBackground', { dark: editorWidgetBackground, light: editorWidgetBackground, hcDark: '#000', hcLight: editorWidgetBackground }, ( localize(
|
|
17
|
-
registerColor('welcomePage.tileHoverBackground', { dark: ( lighten(editorWidgetBackground, .2)), light: ( darken(editorWidgetBackground, .1)), hcDark: null, hcLight: null }, ( localize(
|
|
18
|
-
registerColor('welcomePage.tileBorder', { dark: '#ffffff1a', light: '#0000001a', hcDark: contrastBorder, hcLight: contrastBorder }, ( localize(
|
|
19
|
-
registerColor('welcomePage.progress.background', inputBackground, ( localize(
|
|
20
|
-
registerColor('welcomePage.progress.foreground', textLinkForeground, ( localize(
|
|
21
|
-
registerColor('walkthrough.stepTitle.foreground', { light: '#000000', dark: '#ffffff', hcDark: null, hcLight: null }, ( localize(
|
|
15
|
+
registerColor('welcomePage.background', null, ( localize(13170, 'Background color for the Welcome page.')));
|
|
16
|
+
registerColor('welcomePage.tileBackground', { dark: editorWidgetBackground, light: editorWidgetBackground, hcDark: '#000', hcLight: editorWidgetBackground }, ( localize(13171, 'Background color for the tiles on the Welcome page.')));
|
|
17
|
+
registerColor('welcomePage.tileHoverBackground', { dark: ( lighten(editorWidgetBackground, .2)), light: ( darken(editorWidgetBackground, .1)), hcDark: null, hcLight: null }, ( localize(13172, 'Hover background color for the tiles on the Welcome.')));
|
|
18
|
+
registerColor('welcomePage.tileBorder', { dark: '#ffffff1a', light: '#0000001a', hcDark: contrastBorder, hcLight: contrastBorder }, ( localize(13173, 'Border color for the tiles on the Welcome page.')));
|
|
19
|
+
registerColor('welcomePage.progress.background', inputBackground, ( localize(13174, 'Foreground color for the Welcome page progress bars.')));
|
|
20
|
+
registerColor('welcomePage.progress.foreground', textLinkForeground, ( localize(13175, 'Background color for the Welcome page progress bars.')));
|
|
21
|
+
registerColor('walkthrough.stepTitle.foreground', { light: '#000000', dark: '#ffffff', hcDark: null, hcLight: null }, ( localize(13176, 'Foreground color of the heading of each walkthrough step')));
|
|
@@ -3,7 +3,7 @@ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib
|
|
|
3
3
|
import { generateUuid } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uuid';
|
|
4
4
|
import { generateTokensCSSForColorMap } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/languages/supports/tokenization';
|
|
5
5
|
import { TokenizationRegistry } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/languages';
|
|
6
|
-
import { DEFAULT_MARKDOWN_STYLES, renderMarkdownDocument } from '@codingame/monaco-vscode-
|
|
6
|
+
import { DEFAULT_MARKDOWN_STYLES, renderMarkdownDocument } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/markdown/browser/markdownDocumentRenderer';
|
|
7
7
|
import { language } from '@codingame/monaco-vscode-api/vscode/vs/base/common/platform';
|
|
8
8
|
import { joinPath } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
|
|
9
9
|
import { assertReturnsDefined } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
|