@codingame/monaco-vscode-walkthrough-service-override 9.0.3 → 10.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.
Files changed (23) hide show
  1. package/package.json +2 -2
  2. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStarted.contribution.js +50 -39
  3. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStarted.js +84 -62
  4. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedAccessibleView.js +101 -0
  5. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedColors.js +7 -7
  6. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedExtensionPoint.js +37 -37
  7. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedIcons.js +2 -2
  8. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedInput.js +2 -1
  9. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedService._contribution.js +6 -7
  10. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedService.js +5 -7
  11. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/media/gettingStarted.css.js +1 -1
  12. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/startupPage.js +21 -17
  13. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/common/gettingStartedContent.js +182 -150
  14. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/common/media/notebookProfile.js +3 -3
  15. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/common/media/theme_picker.js +5 -5
  16. package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/editor/editorWalkThrough.js +3 -3
  17. package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/editor/vs_code_editor_walkthrough.js +1 -1
  18. package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/walkThrough.contribution.js +2 -2
  19. package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/walkThroughActions.js +8 -10
  20. package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/walkThroughInput.js +9 -8
  21. package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/walkThroughPart.js +10 -12
  22. package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/common/walkThroughContentProvider.js +2 -3
  23. package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/common/walkThroughUtils.js +1 -1
@@ -10,7 +10,6 @@ import { equals, coalesce } from 'vscode/vscode/vs/base/common/arrays';
10
10
  import { Throttler, Delayer } from 'vscode/vscode/vs/base/common/async';
11
11
  import { Codicon } from 'vscode/vscode/vs/base/common/codicons';
12
12
  import { onUnexpectedError } from 'vscode/vscode/vs/base/common/errors';
13
- import { KeyCode } from 'vscode/vscode/vs/base/common/keyCodes';
14
13
  import { splitRecentLabel } from 'vscode/vscode/vs/base/common/labels';
15
14
  import { DisposableStore, toDisposable } from 'vscode/vscode/vs/base/common/lifecycle';
16
15
  import { parse } from 'vscode/vscode/vs/base/common/marshalling';
@@ -26,23 +25,21 @@ import { MarkdownRenderer } from 'vscode/vscode/vs/editor/browser/widget/markdow
26
25
  import { localize } from 'vscode/vscode/vs/nls';
27
26
  import { IAccessibilityService } from 'vscode/vscode/vs/platform/accessibility/common/accessibility.service';
28
27
  import { ICommandService } from 'vscode/vscode/vs/platform/commands/common/commands.service';
29
- import { ConfigurationTarget } from 'vscode/vscode/vs/platform/configuration/common/configuration';
30
28
  import { IConfigurationService } from 'vscode/vscode/vs/platform/configuration/common/configuration.service';
31
29
  import { RawContextKey, ContextKeyExpr } from 'vscode/vscode/vs/platform/contextkey/common/contextkey';
32
30
  import { IContextKeyService } from 'vscode/vscode/vs/platform/contextkey/common/contextkey.service';
33
31
  import { IFileService } from 'vscode/vscode/vs/platform/files/common/files.service';
34
32
  import { IInstantiationService } from 'vscode/vscode/vs/platform/instantiation/common/instantiation';
35
33
  import { IKeybindingService } from 'vscode/vscode/vs/platform/keybinding/common/keybinding.service';
36
- import { Verbosity } from 'vscode/vscode/vs/platform/label/common/label';
37
34
  import { ILabelService } from 'vscode/vscode/vs/platform/label/common/label.service';
38
35
  import { INotificationService } from 'vscode/vscode/vs/platform/notification/common/notification.service';
39
36
  import { Link } from 'vscode/vscode/vs/platform/opener/browser/link';
40
37
  import { IOpenerService } from 'vscode/vscode/vs/platform/opener/common/opener.service';
41
38
  import { IProductService } from 'vscode/vscode/vs/platform/product/common/productService.service';
42
39
  import { IQuickInputService } from 'vscode/vscode/vs/platform/quickinput/common/quickInput.service';
43
- import { WillSaveStateReason, StorageScope, StorageTarget } from 'vscode/vscode/vs/platform/storage/common/storage';
40
+ import { WillSaveStateReason } from 'vscode/vscode/vs/platform/storage/common/storage';
44
41
  import { IStorageService } from 'vscode/vscode/vs/platform/storage/common/storage.service';
45
- import { firstSessionDateStorageKey, TelemetryLevel } from 'vscode/vscode/vs/platform/telemetry/common/telemetry';
42
+ import { firstSessionDateStorageKey } from 'vscode/vscode/vs/platform/telemetry/common/telemetry';
46
43
  import { ITelemetryService } from 'vscode/vscode/vs/platform/telemetry/common/telemetry.service';
47
44
  import { getTelemetryLevel } from 'vscode/vscode/vs/platform/telemetry/common/telemetryUtils';
48
45
  import { defaultToggleStyles, defaultButtonStyles } from 'vscode/vscode/vs/platform/theme/browser/defaultStyles';
@@ -63,12 +60,12 @@ import { hiddenEntriesConfigurationKey, parseDescription } from './gettingStarte
63
60
  import { IWalkthroughsService } from 'vscode/vscode/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedService.service';
64
61
  import { restoreWalkthroughsConfigurationKey } from './startupPage.js';
65
62
  import { startEntries } from '../common/gettingStartedContent.js';
66
- import { GroupDirection, GroupsOrder } from 'vscode/vscode/vs/workbench/services/editor/common/editorGroupsService';
67
63
  import { IEditorGroupsService } from 'vscode/vscode/vs/workbench/services/editor/common/editorGroupsService.service';
68
64
  import { IExtensionService } from 'vscode/vscode/vs/workbench/services/extensions/common/extensions.service';
69
65
  import { IHostService } from 'vscode/vscode/vs/workbench/services/host/browser/host.service';
70
66
  import { IWorkbenchThemeService } from 'vscode/vscode/vs/workbench/services/themes/common/workbenchThemeService.service';
71
67
  import { GettingStartedIndexList } from './gettingStartedList.js';
68
+ import { AccessibleViewAction } from 'vscode/vscode/vs/workbench/contrib/accessibility/browser/accessibleViewActions';
72
69
 
73
70
  var GettingStartedPage_1;
74
71
  const SLIDE_TRANSITION_TIME_MS = 250;
@@ -124,7 +121,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
124
121
  this.container = $('.gettingStartedContainer', {
125
122
  role: 'document',
126
123
  tabindex: 0,
127
- 'aria-label': ( localize(7491, "Overview of how to get up to speed with your editor."))
124
+ 'aria-label': ( localize(7546, "Overview of how to get up to speed with your editor."))
128
125
  });
129
126
  this.stepMediaComponent = $('.getting-started-media');
130
127
  this.stepMediaComponent.id = generateUuid();
@@ -222,7 +219,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
222
219
  return;
223
220
  }
224
221
  const restoreData = { folder: UNKNOWN_EMPTY_WINDOW_WORKSPACE.id, category: this.editorInput.selectedCategory, step: this.editorInput.selectedStep };
225
- this.storageService.store(restoreWalkthroughsConfigurationKey, JSON.stringify(restoreData), StorageScope.PROFILE, StorageTarget.MACHINE);
222
+ this.storageService.store(restoreWalkthroughsConfigurationKey, JSON.stringify(restoreData), 0 , 1 );
226
223
  }));
227
224
  }
228
225
  shouldAnimate() {
@@ -273,8 +270,8 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
273
270
  const keyboardEvent = ( (new StandardKeyboardEvent(e)));
274
271
  e.stopPropagation();
275
272
  switch (keyboardEvent.keyCode) {
276
- case KeyCode.Enter:
277
- case KeyCode.Space:
273
+ case 3 :
274
+ case 10 :
278
275
  this.runDispatchCommand(command, argument);
279
276
  return;
280
277
  }
@@ -345,6 +342,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
345
342
  case 'nextSection': {
346
343
  const next = this.currentWalkthrough?.next;
347
344
  if (next) {
345
+ this.prevWalkthrough = this.currentWalkthrough;
348
346
  this.scrollToCategory(next);
349
347
  }
350
348
  else {
@@ -401,7 +399,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
401
399
  label: x.title,
402
400
  detail: x.description,
403
401
  description: x.source,
404
- })))), { canPickMany: false, matchOnDescription: true, matchOnDetail: true, title: ( localize(7492, "Open Walkthrough...")) });
402
+ })))), { canPickMany: false, matchOnDescription: true, matchOnDetail: true, title: ( localize(7547, "Open Walkthrough...")) });
405
403
  if (selection) {
406
404
  this.runDispatchCommand('selectCategory', selection.id);
407
405
  }
@@ -409,12 +407,12 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
409
407
  getHiddenCategories() {
410
408
  return (
411
409
  (new Set(
412
- JSON.parse(this.storageService.get(hiddenEntriesConfigurationKey, StorageScope.PROFILE, '[]'))
410
+ JSON.parse(this.storageService.get(hiddenEntriesConfigurationKey, 0 , '[]'))
413
411
  ))
414
412
  );
415
413
  }
416
414
  setHiddenCategories(hidden) {
417
- this.storageService.store(hiddenEntriesConfigurationKey, JSON.stringify(hidden), StorageScope.PROFILE, StorageTarget.USER);
415
+ this.storageService.store(hiddenEntriesConfigurationKey, JSON.stringify(hidden), 0 , 0 );
418
416
  }
419
417
  async buildMediaComponent(stepId, forceRebuild = false) {
420
418
  if (!this.currentWalkthrough) {
@@ -565,7 +563,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
565
563
  const themeId = message.slice('setTheme:'.length);
566
564
  const theme = (await this.themeService.getColorThemes()).find(theme => theme.settingsId === themeId);
567
565
  if (theme) {
568
- this.themeService.setColorTheme(theme.id, ConfigurationTarget.USER);
566
+ this.themeService.setColorTheme(theme.id, 2 );
569
567
  }
570
568
  }
571
569
  else {
@@ -583,6 +581,16 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
583
581
  this.selectStep(toSelect);
584
582
  }
585
583
  }
584
+ provideScreenReaderUpdate() {
585
+ if (this.configurationService.getValue("accessibility.verbosity.walkthrough" )) {
586
+ const kbLabel = this.keybindingService.lookupKeybinding(AccessibleViewAction.id)?.getAriaLabel();
587
+ return kbLabel ? ( localize(7548, "Inspect this in the accessible view ({0}).\n", kbLabel)) : ( localize(
588
+ 7549,
589
+ "Inspect this in the accessible view via the command Open Accessible View which is currently not triggerable via keybinding.\n"
590
+ ));
591
+ }
592
+ return '';
593
+ }
586
594
  async selectStep(id, delayFocus = true) {
587
595
  if (id) {
588
596
  let stepElement = this.container.querySelector(`[data-step-id="${id}"]`);
@@ -605,6 +613,10 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
605
613
  stepElement.setAttribute('aria-expanded', 'true');
606
614
  this.buildMediaComponent(id, true);
607
615
  this.gettingStartedService.progressByEvent('stepSelected:' + id);
616
+ const step = this.currentWalkthrough?.steps?.find(step => step.id === id);
617
+ if (step) {
618
+ stepElement.setAttribute('aria-label', `${this.provideScreenReaderUpdate()} ${step.title}`);
619
+ }
608
620
  }
609
621
  else {
610
622
  this.editorInput.selectedStep = undefined;
@@ -625,7 +637,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
625
637
  this.categoriesPageScrollbar.dispose();
626
638
  }
627
639
  this.categoriesSlide = $('.gettingStartedSlideCategories.gettingStartedSlide');
628
- const prevButton = $('button.prev-button.button-link', { 'x-dispatch': 'scrollPrev' }, $('span.scroll-button.codicon.codicon-chevron-left'), $('span.moreText', {}, ( localize(7493, "Welcome"))));
640
+ const prevButton = $('button.prev-button.button-link', { 'x-dispatch': 'scrollPrev' }, $('span.scroll-button.codicon.codicon-chevron-left'), $('span.moreText', {}, ( localize(7550, "Go Back"))));
629
641
  this.stepsSlide = $('.gettingStartedSlideDetails.gettingStartedSlide', {}, prevButton);
630
642
  this.stepsContent = $('.gettingStartedDetailsContent', {});
631
643
  this.detailsPageScrollbar = this._register(( (new DomScrollableElement(this.stepsContent, { className: 'full-height-scrollable' }))));
@@ -646,11 +658,11 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
646
658
  icon: Codicon.check,
647
659
  actionClassName: 'getting-started-checkbox',
648
660
  isChecked: this.configurationService.getValue(configurationKey) === 'welcomePage',
649
- title: ( localize(7494, "When checked, this page will be shown on startup.")),
661
+ title: ( localize(7551, "When checked, this page will be shown on startup.")),
650
662
  ...defaultToggleStyles
651
663
  })));
652
664
  showOnStartupCheckbox.domNode.id = 'showOnStartup';
653
- const showOnStartupLabel = $('label.caption', { for: 'showOnStartup' }, ( localize(7495, "Show welcome page on startup")));
665
+ const showOnStartupLabel = $('label.caption', { for: 'showOnStartup' }, ( localize(7552, "Show welcome page on startup")));
654
666
  const onShowOnStartupChanged = () => {
655
667
  if (showOnStartupCheckbox.checked) {
656
668
  this.telemetryService.publicLog2('gettingStarted.ActionExecuted', { command: 'showOnStartupChecked', argument: undefined, walkthroughId: this.currentWalkthrough?.id });
@@ -669,7 +681,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
669
681
  showOnStartupCheckbox.checked = !showOnStartupCheckbox.checked;
670
682
  onShowOnStartupChanged();
671
683
  }));
672
- const header = $('.header', {}, $('h1.product-name.caption', {}, this.productService.nameLong), $('p.subtitle.description', {}, ( localize(7496, "Editing evolved"))));
684
+ const header = $('.header', {}, $('h1.product-name.caption', {}, this.productService.nameLong), $('p.subtitle.description', {}, ( localize(7553, "Editing evolved"))));
673
685
  const leftColumn = $('.categories-column.categories-column-left', {});
674
686
  const rightColumn = $('.categories-column.categories-column-right', {});
675
687
  const startList = this.buildStartList();
@@ -729,7 +741,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
729
741
  footer.appendChild(telemetryNotice);
730
742
  }
731
743
  else if (!this.productService.openToWelcomeMainPage && !someStepsComplete && !this.hasScrolledToFirstCategory && this.showFeaturedWalkthrough) {
732
- const firstSessionDateString = this.storageService.get(firstSessionDateStorageKey, StorageScope.APPLICATION) || ( (new Date())).toUTCString();
744
+ const firstSessionDateString = this.storageService.get(firstSessionDateStorageKey, -1 ) || ( (new Date())).toUTCString();
733
745
  const daysSinceFirstSession = ((+( (new Date()))) - (+( (new Date(firstSessionDateString))))) / 1000 / 60 / 60 / 24;
734
746
  const fistContentBehaviour = daysSinceFirstSession < 1 ? 'openToFirstCategory' : 'index';
735
747
  if (fistContentBehaviour === 'openToFirstCategory') {
@@ -739,7 +751,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
739
751
  this.currentWalkthrough = first;
740
752
  this.editorInput.selectedCategory = this.currentWalkthrough?.id;
741
753
  this.buildCategorySlide(this.editorInput.selectedCategory, undefined);
742
- this.setSlide('details');
754
+ this.setSlide('details', true );
743
755
  return;
744
756
  }
745
757
  }
@@ -752,10 +764,10 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
752
764
  let windowOpenable;
753
765
  if (isRecentFolder(recent)) {
754
766
  windowOpenable = { folderUri: recent.folderUri };
755
- fullPath = recent.label || this.labelService.getWorkspaceLabel(recent.folderUri, { verbose: Verbosity.LONG });
767
+ fullPath = recent.label || this.labelService.getWorkspaceLabel(recent.folderUri, { verbose: 2 });
756
768
  }
757
769
  else {
758
- fullPath = recent.label || this.labelService.getWorkspaceLabel(recent.workspace, { verbose: Verbosity.LONG });
770
+ fullPath = recent.label || this.labelService.getWorkspaceLabel(recent.workspace, { verbose: 2 });
759
771
  windowOpenable = { workspaceUri: recent.workspace.configPath };
760
772
  }
761
773
  const { name, parentPath } = splitRecentLabel(fullPath);
@@ -763,7 +775,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
763
775
  const link = $('button.button-link');
764
776
  link.innerText = name;
765
777
  link.title = fullPath;
766
- link.setAttribute('aria-label', ( localize(7497, "Open folder {0} with path {1}", name, parentPath)));
778
+ link.setAttribute('aria-label', ( localize(7554, "Open folder {0} with path {1}", name, parentPath)));
767
779
  link.addEventListener('click', e => {
768
780
  this.telemetryService.publicLog2('gettingStarted.ActionExecuted', { command: 'openRecent', argument: undefined, walkthroughId: this.currentWalkthrough?.id });
769
781
  this.hostService.openWindow([windowOpenable], {
@@ -786,18 +798,18 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
786
798
  this.recentlyOpenedList.dispose();
787
799
  }
788
800
  const recentlyOpenedList = this.recentlyOpenedList = ( (new GettingStartedIndexList({
789
- title: ( localize(7498, "Recent")),
801
+ title: ( localize(7555, "Recent")),
790
802
  klass: 'recently-opened',
791
803
  limit: 5,
792
- empty: $('.empty-recent', {}, ( localize(7499, "You have no recent folders,")), $('button.button-link', { 'x-dispatch': 'openFolder' }, ( localize(7500, "open a folder"))), ( localize(7501, "to start."))),
804
+ empty: $('.empty-recent', {}, ( localize(7556, "You have no recent folders,")), $('button.button-link', { 'x-dispatch': 'openFolder' }, ( localize(7557, "open a folder"))), ( localize(7558, "to start."))),
793
805
  more: $('.more', {}, $('button.button-link', {
794
806
  'x-dispatch': 'showMoreRecents',
795
807
  title: ( localize(
796
- 7502,
808
+ 7559,
797
809
  "Show All Recent Folders {0}",
798
810
  this.getKeybindingLabel(OpenRecentAction.ID)
799
811
  ))
800
- }, ( localize(7503, "More...")))),
812
+ }, ( localize(7560, "More...")))),
801
813
  renderElement: renderRecent,
802
814
  contextService: this.contextService
803
815
  })));
@@ -825,7 +837,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
825
837
  this.startList.dispose();
826
838
  }
827
839
  const startList = this.startList = ( (new GettingStartedIndexList({
828
- title: ( localize(7504, "Start")),
840
+ title: ( localize(7561, "Start")),
829
841
  klass: 'start-container',
830
842
  limit: 10,
831
843
  renderElement: renderStartEntry,
@@ -841,10 +853,10 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
841
853
  const renderNewBadge = (category.newItems || category.newEntry) && !category.isFeatured;
842
854
  const newBadge = $('.new-badge', {});
843
855
  if (category.newEntry) {
844
- reset(newBadge, $('.new-category', {}, ( localize(7505, "New"))));
856
+ reset(newBadge, $('.new-category', {}, ( localize(7562, "New"))));
845
857
  }
846
858
  else if (category.newItems) {
847
- reset(newBadge, $('.new-items', {}, ( localize(7506, "Updated"))));
859
+ reset(newBadge, $('.new-items', {}, ( localize(7563, "Updated"))));
848
860
  }
849
861
  const featuredBadge = $('.featured-badge', {});
850
862
  const descriptionContent = $('.description-content', {});
@@ -860,9 +872,9 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
860
872
  }, featuredBadge, $('.main-content', {}, this.iconWidgetFor(category), titleContent, renderNewBadge ? newBadge : $('.no-badge'), $('a.codicon.codicon-close.hide-category-button', {
861
873
  'tabindex': 0,
862
874
  'x-dispatch': 'hideCategory:' + category.id,
863
- 'title': ( localize(7507, "Hide")),
875
+ 'title': ( localize(7564, "Hide")),
864
876
  'role': 'button',
865
- 'aria-label': ( localize(7508, "Hide")),
877
+ 'aria-label': ( localize(7565, "Hide")),
866
878
  })), descriptionContent, $('.category-progress', { 'x-data-category-id': category.id, }, $('.progress-bar-outer', { 'role': 'progressbar' }, $('.progress-bar-inner'))));
867
879
  };
868
880
  if (this.gettingStartedList) {
@@ -888,10 +900,10 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
888
900
  return rank;
889
901
  };
890
902
  const gettingStartedList = this.gettingStartedList = ( (new GettingStartedIndexList({
891
- title: ( localize(7509, "Walkthroughs")),
903
+ title: ( localize(7566, "Walkthroughs")),
892
904
  klass: 'getting-started',
893
905
  limit: 5,
894
- footer: $('span.button-link.see-all-walkthroughs', { 'x-dispatch': 'seeAllWalkthroughs', 'tabindex': 0 }, ( localize(7503, "More..."))),
906
+ footer: $('span.button-link.see-all-walkthroughs', { 'x-dispatch': 'seeAllWalkthroughs', 'tabindex': 0 }, ( localize(7560, "More..."))),
895
907
  renderElement: renderGetttingStaredWalkthrough,
896
908
  rankElement: rankWalkthrough,
897
909
  contextService: this.contextService,
@@ -944,10 +956,10 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
944
956
  bar.style.width = `${progress}%`;
945
957
  element.parentElement.classList.toggle('no-progress', stats.stepsComplete === 0);
946
958
  if (stats.stepsTotal === stats.stepsComplete) {
947
- bar.title = ( localize(7510, "All {0} steps complete!", stats.stepsComplete));
959
+ bar.title = ( localize(7567, "All {0} steps complete!", stats.stepsComplete));
948
960
  }
949
961
  else {
950
- bar.title = ( localize(7511, "{0} of {1} steps complete", stats.stepsComplete, stats.stepsTotal));
962
+ bar.title = ( localize(7568, "{0} of {1} steps complete", stats.stepsComplete, stats.stepsTotal));
951
963
  }
952
964
  });
953
965
  }
@@ -979,13 +991,13 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
979
991
  return;
980
992
  }
981
993
  if (this.groupsService.count === 1) {
982
- const sideGroup = this.groupsService.addGroup(this.groupsService.groups[0], GroupDirection.RIGHT);
994
+ const sideGroup = this.groupsService.addGroup(this.groupsService.groups[0], 3 );
983
995
  this.groupsService.activateGroup(sideGroup);
984
996
  const gettingStartedSize = Math.floor(fullSize.width / 2);
985
- const gettingStartedGroup = this.groupsService.getGroups(GroupsOrder.MOST_RECENTLY_ACTIVE).find(group => (group.activeEditor instanceof GettingStartedInput));
997
+ const gettingStartedGroup = this.groupsService.getGroups(1 ).find(group => (group.activeEditor instanceof GettingStartedInput));
986
998
  this.groupsService.setSize(assertIsDefined(gettingStartedGroup), { width: gettingStartedSize, height: fullSize.height });
987
999
  }
988
- const nonGettingStartedGroup = this.groupsService.getGroups(GroupsOrder.MOST_RECENTLY_ACTIVE).find(group => !(group.activeEditor instanceof GettingStartedInput));
1000
+ const nonGettingStartedGroup = this.groupsService.getGroups(1 ).find(group => !(group.activeEditor instanceof GettingStartedInput));
989
1001
  if (nonGettingStartedGroup) {
990
1002
  this.groupsService.activateGroup(nonGettingStartedGroup);
991
1003
  nonGettingStartedGroup.focus();
@@ -1023,7 +1035,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
1023
1035
  selectedStepIndex > -1 &&
1024
1036
  this.currentWalkthrough?.steps.slice(selectedStepIndex + 1).some(step => !step.done)) {
1025
1037
  const restoreData = { folder: UNKNOWN_EMPTY_WINDOW_WORKSPACE.id, category: this.editorInput.selectedCategory, step: this.editorInput.selectedStep };
1026
- this.storageService.store(restoreWalkthroughsConfigurationKey, JSON.stringify(restoreData), StorageScope.PROFILE, StorageTarget.MACHINE);
1038
+ this.storageService.store(restoreWalkthroughsConfigurationKey, JSON.stringify(restoreData), 0 , 1 );
1027
1039
  }
1028
1040
  }
1029
1041
  this.commandService.executeCommand(commandURI.path, ...args).then(result => {
@@ -1034,7 +1046,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
1034
1046
  return;
1035
1047
  }
1036
1048
  const restoreData = { folder: ( (toOpen.toString())), category: this.editorInput.selectedCategory, step: this.editorInput.selectedStep };
1037
- this.storageService.store(restoreWalkthroughsConfigurationKey, JSON.stringify(restoreData), StorageScope.PROFILE, StorageTarget.MACHINE);
1049
+ this.storageService.store(restoreWalkthroughsConfigurationKey, JSON.stringify(restoreData), 0 , 1 );
1038
1050
  this.hostService.openWindow([{ folderUri: toOpen }]);
1039
1051
  }
1040
1052
  });
@@ -1069,7 +1081,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
1069
1081
  if (isCommand) {
1070
1082
  const keybindingLabel = this.getKeybindingLabel(command);
1071
1083
  if (keybindingLabel) {
1072
- container.appendChild($('span.shortcut-message', {}, ( localize(7512, 'Tip: Use keyboard shortcut ')), $('span.keybinding', {}, keybindingLabel)));
1084
+ container.appendChild($('span.shortcut-message', {}, ( localize(7569, 'Tip: Use keyboard shortcut ')), $('span.keybinding', {}, keybindingLabel)));
1073
1085
  }
1074
1086
  }
1075
1087
  this.detailsPageDisposables.add(button);
@@ -1121,13 +1133,13 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
1121
1133
  this.detailsPageDisposables.add(addDisposableListener(stepListContainer, 'keydown', (e) => {
1122
1134
  const event = ( (new StandardKeyboardEvent(e)));
1123
1135
  const currentStepIndex = () => category.steps.findIndex(e => e.id === this.editorInput.selectedStep);
1124
- if (event.keyCode === KeyCode.UpArrow) {
1136
+ if (event.keyCode === 16 ) {
1125
1137
  const toExpand = category.steps.filter((step, index) => index < currentStepIndex() && this.contextService.contextMatchesRules(step.when));
1126
1138
  if (toExpand.length) {
1127
1139
  this.selectStep(toExpand[toExpand.length - 1].id, false);
1128
1140
  }
1129
1141
  }
1130
- if (event.keyCode === KeyCode.DownArrow) {
1142
+ if (event.keyCode === 18 ) {
1131
1143
  const toExpand = category.steps.find((step, index) => index > currentStepIndex() && this.contextService.contextMatchesRules(step.when));
1132
1144
  if (toExpand) {
1133
1145
  this.selectStep(toExpand.id, false);
@@ -1159,7 +1171,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
1159
1171
  reset(stepTitle, ...renderLabelWithIcons(step.title));
1160
1172
  const stepDescription = $('.step-container', {}, stepTitle, container);
1161
1173
  if (step.media.type === 'image') {
1162
- stepDescription.appendChild($('.image-description', { 'aria-label': ( localize(7513, "Image showing {0}", step.media.altText)) }));
1174
+ stepDescription.appendChild($('.image-description', { 'aria-label': ( localize(7570, "Image showing {0}", step.media.altText)) }));
1163
1175
  }
1164
1176
  return $('button.getting-started-step', {
1165
1177
  'x-dispatch': 'selectTask:' + step.id,
@@ -1179,13 +1191,13 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
1179
1191
  }
1180
1192
  }));
1181
1193
  const showNextCategory = this.gettingStartedCategories.find(_category => _category.id === category.next);
1182
- 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(7514, "Mark Done"))), ...(showNextCategory
1183
- ? [$('button.button-link.next', { 'x-dispatch': 'nextSection' }, ( localize(7515, "Next Section")), $('span.codicon.codicon-arrow-right'))]
1194
+ 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(7571, "Mark Done"))), ...(showNextCategory
1195
+ ? [$('button.button-link.next', { 'x-dispatch': 'nextSection' }, ( localize(7572, "Next Section")), $('span.codicon.codicon-arrow-right'))]
1184
1196
  : [])));
1185
1197
  this.detailsScrollbar = this._register(( (new DomScrollableElement(stepsContainer, { className: 'steps-container' }))));
1186
1198
  const stepListComponent = this.detailsScrollbar.getDomNode();
1187
1199
  const categoryFooter = $('.getting-started-footer');
1188
- if (this.editorInput.showTelemetryNotice && getTelemetryLevel(this.configurationService) !== TelemetryLevel.NONE && this.productService.enableTelemetry) {
1200
+ if (this.editorInput.showTelemetryNotice && getTelemetryLevel(this.configurationService) !== 0 && this.productService.enableTelemetry) {
1189
1201
  this.buildTelemetryFooter(categoryFooter);
1190
1202
  }
1191
1203
  reset(this.stepsContent, categoryDescriptorComponent, stepListComponent, this.stepMediaComponent, categoryFooter);
@@ -1197,12 +1209,12 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
1197
1209
  }
1198
1210
  buildTelemetryFooter(parent) {
1199
1211
  const mdRenderer = this.instantiationService.createInstance(MarkdownRenderer, {});
1200
- const privacyStatementCopy = ( localize(7516, "privacy statement"));
1212
+ const privacyStatementCopy = ( localize(7573, "privacy statement"));
1201
1213
  const privacyStatementButton = `[${privacyStatementCopy}](command:workbench.action.openPrivacyStatementUrl)`;
1202
- const optOutCopy = ( localize(7517, "opt out"));
1214
+ const optOutCopy = ( localize(7574, "opt out"));
1203
1215
  const optOutButton = `[${optOutCopy}](command:settings.filterByTelemetry)`;
1204
1216
  const text = ( localize(
1205
- 7518,
1217
+ 7575,
1206
1218
  "{0} collects usage data. Read our {1} and learn how to {2}.",
1207
1219
  this.productService.nameShort,
1208
1220
  privacyStatementButton,
@@ -1223,16 +1235,23 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
1223
1235
  }
1224
1236
  async scrollPrev() {
1225
1237
  this.inProgressScroll = this.inProgressScroll.then(async () => {
1226
- this.currentWalkthrough = undefined;
1227
- this.editorInput.selectedCategory = undefined;
1228
- this.editorInput.selectedStep = undefined;
1229
- this.editorInput.showTelemetryNotice = false;
1230
- if (this.gettingStartedCategories.length !== this.gettingStartedList?.itemCount) {
1231
- this.buildCategoriesSlide();
1238
+ if (this.prevWalkthrough && this.prevWalkthrough !== this.currentWalkthrough) {
1239
+ this.currentWalkthrough = this.prevWalkthrough;
1240
+ this.prevWalkthrough = undefined;
1241
+ this.makeCategoryVisibleWhenAvailable(this.currentWalkthrough.id);
1242
+ }
1243
+ else {
1244
+ this.currentWalkthrough = undefined;
1245
+ this.editorInput.selectedCategory = undefined;
1246
+ this.editorInput.selectedStep = undefined;
1247
+ this.editorInput.showTelemetryNotice = false;
1248
+ if (this.gettingStartedCategories.length !== this.gettingStartedList?.itemCount) {
1249
+ this.buildCategoriesSlide();
1250
+ }
1251
+ this.selectStep(undefined);
1252
+ this.setSlide('categories');
1253
+ this.container.focus();
1232
1254
  }
1233
- this.selectStep(undefined);
1234
- this.setSlide('categories');
1235
- this.container.focus();
1236
1255
  });
1237
1256
  }
1238
1257
  runSkip() {
@@ -1246,7 +1265,7 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
1246
1265
  this.runSkip();
1247
1266
  }
1248
1267
  }
1249
- setSlide(toEnable) {
1268
+ setSlide(toEnable, firstLaunch = false) {
1250
1269
  const slideManager = assertIsDefined(this.container.querySelector('.gettingStarted'));
1251
1270
  if (toEnable === 'categories') {
1252
1271
  slideManager.classList.remove('showDetails');
@@ -1259,7 +1278,10 @@ let GettingStartedPage = class GettingStartedPage extends EditorPane {
1259
1278
  else {
1260
1279
  slideManager.classList.add('showDetails');
1261
1280
  slideManager.classList.remove('showCategories');
1262
- this.container.querySelector('.prev-button.button-link').style.display = 'block';
1281
+ const prevButton = this.container.querySelector('.prev-button.button-link');
1282
+ prevButton.style.display = this.editorInput.showWelcome || this.prevWalkthrough ? 'block' : 'none';
1283
+ const moreTextElement = prevButton.querySelector('.moreText');
1284
+ moreTextElement.textContent = firstLaunch ? ( localize(7576, "Welcome")) : ( localize(7550, "Go Back"));
1263
1285
  this.container.querySelector('.gettingStartedSlideDetails').querySelectorAll('button').forEach(button => button.disabled = false);
1264
1286
  this.container.querySelector('.gettingStartedSlideCategories').querySelectorAll('button').forEach(button => button.disabled = true);
1265
1287
  this.container.querySelector('.gettingStartedSlideCategories').querySelectorAll('input').forEach(button => button.disabled = true);
@@ -0,0 +1,101 @@
1
+ import { IContextKeyService } from 'vscode/vscode/vs/platform/contextkey/common/contextkey.service';
2
+ import { inWelcomeContext, GettingStartedPage } from './gettingStarted.js';
3
+ import { Disposable } from 'vscode/vscode/vs/base/common/lifecycle';
4
+ import { IWalkthroughsService } from 'vscode/vscode/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedService.service';
5
+ import { IEditorService } from 'vscode/vscode/vs/workbench/services/editor/common/editorService.service';
6
+ import { GettingStartedInput } from './gettingStartedInput.js';
7
+ import { localize } from 'vscode/vscode/vs/nls';
8
+
9
+ class GettingStartedAccessibleView {
10
+ constructor() {
11
+ this.type = "view" ;
12
+ this.priority = 110;
13
+ this.name = 'walkthroughs';
14
+ this.when = inWelcomeContext;
15
+ this.getProvider = (accessor) => {
16
+ const editorService = accessor.get(IEditorService);
17
+ const editorPane = editorService.activeEditorPane;
18
+ if (!(editorPane instanceof GettingStartedPage)) {
19
+ return;
20
+ }
21
+ const gettingStartedInput = editorPane.input;
22
+ if (!(gettingStartedInput instanceof GettingStartedInput) || !gettingStartedInput.selectedCategory) {
23
+ return;
24
+ }
25
+ const gettingStartedService = accessor.get(IWalkthroughsService);
26
+ const currentWalkthrough = gettingStartedService.getWalkthrough(gettingStartedInput.selectedCategory);
27
+ const currentStepIds = gettingStartedInput.selectedStep;
28
+ if (currentWalkthrough) {
29
+ return (
30
+ (new GettingStartedAccessibleProvider(
31
+ accessor.get(IContextKeyService),
32
+ editorPane,
33
+ currentWalkthrough,
34
+ currentStepIds
35
+ ))
36
+ );
37
+ }
38
+ return;
39
+ };
40
+ }
41
+ }
42
+ class GettingStartedAccessibleProvider extends Disposable {
43
+ constructor(contextService, _gettingStartedPage, _focusedItem, _focusedStep) {
44
+ super();
45
+ this.contextService = contextService;
46
+ this._gettingStartedPage = _gettingStartedPage;
47
+ this._focusedItem = _focusedItem;
48
+ this._focusedStep = _focusedStep;
49
+ this._currentStepIndex = 0;
50
+ this._activeWalkthroughSteps = [];
51
+ this.id = "walkthrough" ;
52
+ this.verbositySettingKey = "accessibility.verbosity.walkthrough" ;
53
+ this.options = { type: "view" };
54
+ this._activeWalkthroughSteps = _focusedItem.steps.filter(step => !step.when || this.contextService.contextMatchesRules(step.when));
55
+ }
56
+ provideContent() {
57
+ if (this._focusedStep) {
58
+ const stepIndex = this._activeWalkthroughSteps.findIndex(step => step.id === this._focusedStep);
59
+ if (stepIndex !== -1) {
60
+ this._currentStepIndex = stepIndex;
61
+ }
62
+ }
63
+ return this._getContent(this._currentStepIndex + 1, this._focusedItem, this._activeWalkthroughSteps[this._currentStepIndex]);
64
+ }
65
+ _getContent(index, waltkrough, step) {
66
+ const stepsContent = ( localize(
67
+ 7581,
68
+ 'Step {0}: {1}\nDescription: {2}',
69
+ index,
70
+ step.title,
71
+ step.description.join(' ')
72
+ ));
73
+ return [
74
+ ( localize(7582, 'Title: {0}', waltkrough.title)),
75
+ ( localize(7583, 'Description: {0}', waltkrough.description)),
76
+ stepsContent
77
+ ].join('\n\n');
78
+ }
79
+ provideNextContent() {
80
+ if (++this._currentStepIndex >= this._activeWalkthroughSteps.length) {
81
+ --this._currentStepIndex;
82
+ return;
83
+ }
84
+ return this._getContent(this._currentStepIndex + 1, this._focusedItem, this._activeWalkthroughSteps[this._currentStepIndex]);
85
+ }
86
+ providePreviousContent() {
87
+ if (--this._currentStepIndex < 0) {
88
+ ++this._currentStepIndex;
89
+ return;
90
+ }
91
+ return this._getContent(this._currentStepIndex + 1, this._focusedItem, this._activeWalkthroughSteps[this._currentStepIndex]);
92
+ }
93
+ onClose() {
94
+ if (this._currentStepIndex > -1) {
95
+ const currentStep = this._activeWalkthroughSteps[this._currentStepIndex];
96
+ this._gettingStartedPage.makeCategoryVisibleWhenAvailable(this._focusedItem.id, currentStep.id);
97
+ }
98
+ }
99
+ }
100
+
101
+ export { GettingStartedAccessibleView };
@@ -11,10 +11,10 @@ import 'vscode/vscode/vs/platform/theme/common/colors/quickpickColors';
11
11
  import 'vscode/vscode/vs/platform/theme/common/colors/searchColors';
12
12
  import { localize } from 'vscode/vscode/vs/nls';
13
13
 
14
- registerColor('welcomePage.background', null, ( localize(10650, 'Background color for the Welcome page.')));
15
- registerColor('welcomePage.tileBackground', { dark: editorWidgetBackground, light: editorWidgetBackground, hcDark: '#000', hcLight: editorWidgetBackground }, ( localize(10651, 'Background color for the tiles on the Welcome page.')));
16
- registerColor('welcomePage.tileHoverBackground', { dark: ( (lighten(editorWidgetBackground, .2))), light: ( (darken(editorWidgetBackground, .1))), hcDark: null, hcLight: null }, ( localize(10652, 'Hover background color for the tiles on the Welcome.')));
17
- registerColor('welcomePage.tileBorder', { dark: '#ffffff1a', light: '#0000001a', hcDark: contrastBorder, hcLight: contrastBorder }, ( localize(10653, 'Border color for the tiles on the Welcome page.')));
18
- registerColor('welcomePage.progress.background', inputBackground, ( localize(10654, 'Foreground color for the Welcome page progress bars.')));
19
- registerColor('welcomePage.progress.foreground', textLinkForeground, ( localize(10655, 'Background color for the Welcome page progress bars.')));
20
- registerColor('walkthrough.stepTitle.foreground', { light: '#000000', dark: '#ffffff', hcDark: null, hcLight: null }, ( localize(10656, 'Foreground color of the heading of each walkthrough step')));
14
+ registerColor('welcomePage.background', null, ( localize(10751, 'Background color for the Welcome page.')));
15
+ registerColor('welcomePage.tileBackground', { dark: editorWidgetBackground, light: editorWidgetBackground, hcDark: '#000', hcLight: editorWidgetBackground }, ( localize(10752, 'Background color for the tiles on the Welcome page.')));
16
+ registerColor('welcomePage.tileHoverBackground', { dark: ( (lighten(editorWidgetBackground, .2))), light: ( (darken(editorWidgetBackground, .1))), hcDark: null, hcLight: null }, ( localize(10753, 'Hover background color for the tiles on the Welcome.')));
17
+ registerColor('welcomePage.tileBorder', { dark: '#ffffff1a', light: '#0000001a', hcDark: contrastBorder, hcLight: contrastBorder }, ( localize(10754, 'Border color for the tiles on the Welcome page.')));
18
+ registerColor('welcomePage.progress.background', inputBackground, ( localize(10755, 'Foreground color for the Welcome page progress bars.')));
19
+ registerColor('welcomePage.progress.foreground', textLinkForeground, ( localize(10756, 'Background color for the Welcome page progress bars.')));
20
+ registerColor('walkthrough.stepTitle.foreground', { light: '#000000', dark: '#ffffff', hcDark: null, hcLight: null }, ( localize(10757, 'Foreground color of the heading of each walkthrough step')));