@theia/getting-started 1.75.0-next.21 → 1.75.0-next.25

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 (86) hide show
  1. package/lib/browser/getting-started-contribution.d.ts +30 -2
  2. package/lib/browser/getting-started-contribution.d.ts.map +1 -1
  3. package/lib/browser/getting-started-contribution.js +120 -0
  4. package/lib/browser/getting-started-contribution.js.map +1 -1
  5. package/lib/browser/getting-started-contribution.spec.d.ts +2 -0
  6. package/lib/browser/getting-started-contribution.spec.d.ts.map +1 -0
  7. package/lib/browser/getting-started-contribution.spec.js +152 -0
  8. package/lib/browser/getting-started-contribution.spec.js.map +1 -0
  9. package/lib/browser/getting-started-frontend-module.d.ts.map +1 -1
  10. package/lib/browser/getting-started-frontend-module.js +8 -0
  11. package/lib/browser/getting-started-frontend-module.js.map +1 -1
  12. package/lib/browser/getting-started-widget.d.ts +19 -0
  13. package/lib/browser/getting-started-widget.d.ts.map +1 -1
  14. package/lib/browser/getting-started-widget.js +57 -2
  15. package/lib/browser/getting-started-widget.js.map +1 -1
  16. package/lib/browser/getting-started-widget.spec.d.ts +2 -0
  17. package/lib/browser/getting-started-widget.spec.d.ts.map +1 -0
  18. package/lib/browser/getting-started-widget.spec.js +71 -0
  19. package/lib/browser/getting-started-widget.spec.js.map +1 -0
  20. package/lib/browser/walkthrough-card.d.ts +8 -0
  21. package/lib/browser/walkthrough-card.d.ts.map +1 -0
  22. package/lib/browser/walkthrough-card.js +40 -0
  23. package/lib/browser/walkthrough-card.js.map +1 -0
  24. package/lib/browser/walkthrough-card.spec.d.ts +2 -0
  25. package/lib/browser/walkthrough-card.spec.d.ts.map +1 -0
  26. package/lib/browser/walkthrough-card.spec.js +188 -0
  27. package/lib/browser/walkthrough-card.spec.js.map +1 -0
  28. package/lib/browser/walkthrough-detail.d.ts +19 -0
  29. package/lib/browser/walkthrough-detail.d.ts.map +1 -0
  30. package/lib/browser/walkthrough-detail.js +210 -0
  31. package/lib/browser/walkthrough-detail.js.map +1 -0
  32. package/lib/browser/walkthrough-detail.spec.d.ts +2 -0
  33. package/lib/browser/walkthrough-detail.spec.d.ts.map +1 -0
  34. package/lib/browser/walkthrough-detail.spec.js +409 -0
  35. package/lib/browser/walkthrough-detail.spec.js.map +1 -0
  36. package/lib/browser/walkthrough-icon.d.ts +10 -0
  37. package/lib/browser/walkthrough-icon.d.ts.map +1 -0
  38. package/lib/browser/walkthrough-icon.js +37 -0
  39. package/lib/browser/walkthrough-icon.js.map +1 -0
  40. package/lib/browser/walkthrough-section.d.ts +23 -0
  41. package/lib/browser/walkthrough-section.d.ts.map +1 -0
  42. package/lib/browser/walkthrough-section.js +65 -0
  43. package/lib/browser/walkthrough-section.js.map +1 -0
  44. package/lib/browser/walkthrough-section.spec.d.ts +2 -0
  45. package/lib/browser/walkthrough-section.spec.d.ts.map +1 -0
  46. package/lib/browser/walkthrough-section.spec.js +328 -0
  47. package/lib/browser/walkthrough-section.spec.js.map +1 -0
  48. package/lib/browser/walkthrough-service.d.ts +166 -0
  49. package/lib/browser/walkthrough-service.d.ts.map +1 -0
  50. package/lib/browser/walkthrough-service.js +505 -0
  51. package/lib/browser/walkthrough-service.js.map +1 -0
  52. package/lib/browser/walkthrough-service.spec.d.ts +2 -0
  53. package/lib/browser/walkthrough-service.spec.d.ts.map +1 -0
  54. package/lib/browser/walkthrough-service.spec.js +1026 -0
  55. package/lib/browser/walkthrough-service.spec.js.map +1 -0
  56. package/lib/common/getting-started-preferences.d.ts +1 -0
  57. package/lib/common/getting-started-preferences.d.ts.map +1 -1
  58. package/lib/common/getting-started-preferences.js +5 -0
  59. package/lib/common/getting-started-preferences.js.map +1 -1
  60. package/lib/common/walkthrough-commands.d.ts +11 -0
  61. package/lib/common/walkthrough-commands.d.ts.map +1 -0
  62. package/lib/common/walkthrough-commands.js +41 -0
  63. package/lib/common/walkthrough-commands.js.map +1 -0
  64. package/lib/common/walkthrough-types.d.ts +22 -0
  65. package/lib/common/walkthrough-types.d.ts.map +1 -0
  66. package/lib/common/walkthrough-types.js +18 -0
  67. package/lib/common/walkthrough-types.js.map +1 -0
  68. package/package.json +8 -7
  69. package/src/browser/getting-started-contribution.spec.ts +188 -0
  70. package/src/browser/getting-started-contribution.ts +139 -3
  71. package/src/browser/getting-started-frontend-module.ts +8 -0
  72. package/src/browser/getting-started-widget.spec.tsx +88 -0
  73. package/src/browser/getting-started-widget.tsx +70 -3
  74. package/src/browser/style/index.css +279 -0
  75. package/src/browser/walkthrough-card.spec.tsx +247 -0
  76. package/src/browser/walkthrough-card.tsx +62 -0
  77. package/src/browser/walkthrough-detail.spec.tsx +675 -0
  78. package/src/browser/walkthrough-detail.tsx +347 -0
  79. package/src/browser/walkthrough-icon.tsx +42 -0
  80. package/src/browser/walkthrough-section.spec.tsx +484 -0
  81. package/src/browser/walkthrough-section.tsx +119 -0
  82. package/src/browser/walkthrough-service.spec.ts +1279 -0
  83. package/src/browser/walkthrough-service.ts +565 -0
  84. package/src/common/getting-started-preferences.ts +6 -0
  85. package/src/common/walkthrough-commands.ts +37 -0
  86. package/src/common/walkthrough-types.ts +39 -0
@@ -0,0 +1,166 @@
1
+ import { Emitter, Event } from '@theia/core/lib/common/event';
2
+ import { Disposable, DisposableCollection } from '@theia/core/lib/common/disposable';
3
+ import { StorageService } from '@theia/core/lib/browser/storage-service';
4
+ import { CommandRegistry } from '@theia/core/lib/common/command';
5
+ import { PreferenceService } from '@theia/core/lib/common/preferences';
6
+ import { ContextKeyService } from '@theia/core/lib/browser/context-key-service';
7
+ import { DeployedPlugin, PluginIdentifiers, PluginMetadata, WalkthroughContribution, WalkthroughStepContribution } from '@theia/plugin-ext/lib/common/plugin-protocol';
8
+ import { OpenerService } from '@theia/core/lib/browser/opener-service';
9
+ import { ILogger } from '@theia/core/lib/common/logger';
10
+ import { MessageService } from '@theia/core/lib/common/message-service';
11
+ import { Walkthrough, WalkthroughStep } from '../common/walkthrough-types';
12
+ import { GettingStartedPreferences } from '../common/getting-started-preferences';
13
+ export declare const WalkthroughViewEventSource: unique symbol;
14
+ export interface WalkthroughViewEventSource {
15
+ readonly onDidExpandView: Event<string>;
16
+ }
17
+ export declare const WalkthroughPluginSupport: unique symbol;
18
+ export interface WalkthroughPluginSupport {
19
+ readonly plugins: PluginMetadata[];
20
+ getPlugin(id: PluginIdentifiers.UnversionedId): DeployedPlugin | undefined;
21
+ /** The plugins that are not loaded because the workspace is not trusted. */
22
+ readonly disabledByTrust: ReadonlySet<string>;
23
+ readonly onDidChangePlugins: Event<void>;
24
+ }
25
+ interface WalkthroughProgressState {
26
+ completedSteps: {
27
+ [walkthroughId: string]: string[];
28
+ };
29
+ }
30
+ export declare class WalkthroughService implements Disposable {
31
+ protected readonly storageService: StorageService;
32
+ protected readonly commandRegistry: CommandRegistry;
33
+ protected readonly preferenceService: PreferenceService;
34
+ protected readonly contextKeyService: ContextKeyService;
35
+ protected readonly gettingStartedPreferences: GettingStartedPreferences;
36
+ protected readonly pluginSupport: WalkthroughPluginSupport;
37
+ protected readonly viewEventSource: WalkthroughViewEventSource;
38
+ protected readonly openerService: OpenerService;
39
+ protected readonly messageService: MessageService;
40
+ protected readonly logger: ILogger;
41
+ protected readonly walkthroughs: Map<string, Walkthrough>;
42
+ /** The definition each walkthrough was registered from, to detect a changed contribution. */
43
+ protected readonly contributionSignatures: Map<string, string>;
44
+ protected readonly toDispose: DisposableCollection;
45
+ protected readonly onDidChangeWalkthroughsEmitter: Emitter<void>;
46
+ readonly onDidChangeWalkthroughs: Event<void>;
47
+ protected readonly onDidChangeSelectionEmitter: Emitter<void>;
48
+ readonly onDidChangeSelection: Event<void>;
49
+ protected progressState: WalkthroughProgressState;
50
+ /** Resolves once the persisted progress has been read and the initial sync has run. */
51
+ protected progressReady: Promise<void>;
52
+ protected knownPluginIds: Set<string>;
53
+ protected pluginBaselineEstablished: boolean;
54
+ protected selectedWalkthroughId: string | undefined;
55
+ protected selectedStepId: string | undefined;
56
+ /** Cache of {@link getContextKeys}, invalidated whenever the set of walkthroughs changes. */
57
+ protected contextKeys: Set<string> | undefined;
58
+ protected init(): void;
59
+ protected handlePluginsChanged(): Promise<void>;
60
+ /**
61
+ * Complete every pending step whose `onContext:` expression currently holds.
62
+ */
63
+ protected completeMatchingContextSteps(): void;
64
+ /**
65
+ * The context keys that the `when` clauses and the `onContext:` completion events of all registered
66
+ * walkthroughs depend on.
67
+ *
68
+ * The set is cached because context keys change very frequently, while walkthroughs rarely do.
69
+ */
70
+ protected getContextKeys(): Set<string>;
71
+ /**
72
+ * Whether a `when` clause currently holds. A contribution without a `when` clause is always visible.
73
+ */
74
+ protected isVisible(when: string | undefined): boolean;
75
+ /**
76
+ * Restricts a walkthrough to the steps that are currently visible.
77
+ *
78
+ * Hidden steps also stay out of the progress, so that a walkthrough whose remaining steps do not apply to
79
+ * this platform or workspace can still be completed.
80
+ */
81
+ protected toVisibleWalkthrough(walkthrough: Walkthrough): Walkthrough;
82
+ protected handleVisibilityChanged(): void;
83
+ dispose(): void;
84
+ /**
85
+ * Remember the currently deployed plugins as the set that is not considered newly installed.
86
+ *
87
+ * Plugins are deployed asynchronously while the application starts, so the baseline can only be trusted
88
+ * once plugins have actually arrived. Without this, every plugin of a fresh session would look like a new
89
+ * installation and - with `workbench.welcomePage.walkthroughs.openOnInstall` enabled - open a walkthrough
90
+ * on startup.
91
+ */
92
+ protected establishPluginBaseline(): void;
93
+ protected loadProgress(): Promise<void>;
94
+ protected saveProgress(): Promise<void>;
95
+ protected syncWalkthroughsFromPlugins(): void;
96
+ protected registerWalkthrough(contribution: WalkthroughContribution): void;
97
+ protected toWalkthroughStep(step: WalkthroughStepContribution, completedSteps: string[]): WalkthroughStep;
98
+ /**
99
+ * All walkthroughs whose `when` clause currently holds, restricted to their currently visible steps.
100
+ */
101
+ getWalkthroughs(): Walkthrough[];
102
+ /**
103
+ * The walkthrough with the given id, or `undefined` if it is unknown or its `when` clause does not hold.
104
+ */
105
+ getWalkthrough(id: string): Walkthrough | undefined;
106
+ markStepComplete(walkthroughId: string, stepId: string): Promise<void>;
107
+ /**
108
+ * Take the completion mark off a step again, for example when it was completed by mistake.
109
+ */
110
+ markStepIncomplete(walkthroughId: string, stepId: string): Promise<void>;
111
+ protected setStepComplete(walkthroughId: string, stepId: string, isComplete: boolean): Promise<void>;
112
+ /**
113
+ * Mark every step of the given walkthrough as complete, persisting the progress once.
114
+ */
115
+ markAllStepsComplete(walkthroughId: string): Promise<void>;
116
+ resetProgress(walkthroughId: string): Promise<void>;
117
+ getStepProgress(walkthroughId: string): {
118
+ completed: number;
119
+ total: number;
120
+ };
121
+ /**
122
+ * The walkthrough that is currently opened in the welcome view, if any.
123
+ * While a walkthrough is selected, the welcome view renders it instead of its regular content.
124
+ */
125
+ get selectedWalkthrough(): Walkthrough | undefined;
126
+ /**
127
+ * The step of the {@link selectedWalkthrough} whose content is currently shown, if any.
128
+ */
129
+ get selectedStep(): WalkthroughStep | undefined;
130
+ /**
131
+ * Open the given walkthrough in the welcome view and preselect its first pending step.
132
+ * Does nothing if no walkthrough is registered under that id.
133
+ */
134
+ selectWalkthrough(walkthroughId: string): void;
135
+ /**
136
+ * Show the content of the given step of the currently selected walkthrough.
137
+ */
138
+ selectStep(stepId: string): void;
139
+ /**
140
+ * Close the currently selected walkthrough and return the welcome view to its regular content.
141
+ */
142
+ clearSelection(): void;
143
+ protected getFirstPendingStep(walkthrough: Walkthrough): WalkthroughStep | undefined;
144
+ /**
145
+ * VS Code refers to a walkthrough as `publisher.name#walkthroughId`, for example in the `command:` links of a
146
+ * step description, while the ids used here are fully dot-separated.
147
+ */
148
+ protected fromVSCodeWalkthroughId(walkthroughId: string): string;
149
+ /**
150
+ * Handle a link click from a walkthrough step description.
151
+ * Fires the `onLink:{url}` completion event and opens the link.
152
+ *
153
+ * Walkthroughs commonly link to `command:` URIs that Theia does not implement. Such a link must not
154
+ * reject unhandled, so the failure is reported to the user instead.
155
+ */
156
+ handleLinkClick(url: string): Promise<void>;
157
+ /**
158
+ * VS Code walkthroughs use `command:toSide:<commandId>` to open the result of a command beside the walkthrough.
159
+ * Theia has no generic equivalent, so the command is executed as usual rather than failing to resolve.
160
+ */
161
+ protected normalizeLinkUrl(url: string): string;
162
+ protected handleCompletionEvent(event: string): void;
163
+ protected handleExtensionInstalledAutoOpen(pluginId: string): void;
164
+ }
165
+ export {};
166
+ //# sourceMappingURL=walkthrough-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walkthrough-service.d.ts","sourceRoot":"","sources":["../../src/browser/walkthrough-service.ts"],"names":[],"mappings":"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"}