@theia/getting-started 1.75.0-next.4 → 1.75.0-next.43

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 +27 -0
  13. package/lib/browser/getting-started-widget.d.ts.map +1 -1
  14. package/lib/browser/getting-started-widget.js +94 -113
  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 +32 -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 +192 -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 +38 -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 +61 -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 +96 -3
  74. package/src/browser/style/index.css +279 -0
  75. package/src/browser/walkthrough-card.spec.tsx +246 -0
  76. package/src/browser/walkthrough-card.tsx +62 -0
  77. package/src/browser/walkthrough-detail.spec.tsx +674 -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 +483 -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,188 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const jsx_runtime_1 = require("@theia/core/shared/react/jsx-runtime");
4
+ // *****************************************************************************
5
+ // Copyright (C) 2026 EclipseSource and others.
6
+ //
7
+ // This program and the accompanying materials are made available under the
8
+ // terms of the Eclipse Public License v. 2.0 which is available at
9
+ // http://www.eclipse.org/legal/epl-2.0.
10
+ //
11
+ // This Source Code may also be made available under the following Secondary
12
+ // Licenses when the conditions for such availability set forth in the Eclipse
13
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
14
+ // with the GNU Classpath Exception which is available at
15
+ // https://www.gnu.org/software/classpath/license.html.
16
+ //
17
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
18
+ // *****************************************************************************
19
+ const assert = require("assert");
20
+ const jsdom_1 = require("@theia/core/lib/browser/test/jsdom");
21
+ let disableJSDOM = (0, jsdom_1.enableJSDOM)();
22
+ const client_1 = require("@theia/core/shared/react-dom/client");
23
+ const walkthrough_card_1 = require("./walkthrough-card");
24
+ function createMockStep(overrides) {
25
+ return {
26
+ id: 'step-1',
27
+ title: 'Test Step',
28
+ description: 'A test step description',
29
+ isComplete: false,
30
+ ...overrides
31
+ };
32
+ }
33
+ function createMockWalkthrough(overrides) {
34
+ return {
35
+ id: 'test-walkthrough',
36
+ title: 'Test Walkthrough',
37
+ description: 'A test walkthrough description',
38
+ steps: [
39
+ createMockStep({ id: 'step-1', title: 'First Step' }),
40
+ createMockStep({ id: 'step-2', title: 'Second Step' }),
41
+ createMockStep({ id: 'step-3', title: 'Third Step' })
42
+ ],
43
+ pluginId: 'test.plugin',
44
+ ...overrides
45
+ };
46
+ }
47
+ describe('WalkthroughCard', () => {
48
+ let container;
49
+ let root;
50
+ before(() => disableJSDOM = (0, jsdom_1.enableJSDOM)());
51
+ after(() => disableJSDOM());
52
+ beforeEach(() => {
53
+ container = document.createElement('div');
54
+ document.body.appendChild(container);
55
+ root = (0, client_1.createRoot)(container);
56
+ });
57
+ afterEach(() => {
58
+ root.unmount();
59
+ document.body.removeChild(container);
60
+ });
61
+ it('should render walkthrough title and description', done => {
62
+ const walkthrough = createMockWalkthrough({
63
+ title: 'My Walkthrough',
64
+ description: 'My description'
65
+ });
66
+ root.render((0, jsx_runtime_1.jsx)(walkthrough_card_1.WalkthroughCard, { walkthrough: walkthrough, onSelect: () => { } }));
67
+ setTimeout(() => {
68
+ const title = container.querySelector('.gs-walkthrough-card-title');
69
+ assert.ok(title, 'Title element should exist');
70
+ assert.ok(title?.textContent?.includes('My Walkthrough'), 'Should contain the walkthrough title');
71
+ const description = container.querySelector('.gs-walkthrough-card-description');
72
+ assert.ok(description, 'Description element should exist');
73
+ assert.ok(description?.textContent?.includes('My description'), 'Should contain the walkthrough description');
74
+ done();
75
+ }, 50);
76
+ });
77
+ it('should display progress bar with correct percentage', done => {
78
+ const walkthrough = createMockWalkthrough({
79
+ steps: [
80
+ createMockStep({ id: 's1', isComplete: true }),
81
+ createMockStep({ id: 's2', isComplete: false }),
82
+ createMockStep({ id: 's3', isComplete: false })
83
+ ]
84
+ });
85
+ root.render((0, jsx_runtime_1.jsx)(walkthrough_card_1.WalkthroughCard, { walkthrough: walkthrough, onSelect: () => { } }));
86
+ setTimeout(() => {
87
+ const progressFill = container.querySelector('.gs-walkthrough-progress-fill');
88
+ assert.ok(progressFill, 'Progress fill element should exist');
89
+ const expectedWidth = `${(1 / 3) * 100}%`;
90
+ assert.strictEqual(progressFill.style.width, expectedWidth, 'Progress fill should reflect 1 of 3 steps');
91
+ const progressText = container.querySelector('.gs-walkthrough-progress-text');
92
+ assert.ok(progressText, 'Progress text should exist');
93
+ assert.ok(progressText?.textContent?.includes('1'), 'Should show completed count');
94
+ assert.ok(progressText?.textContent?.includes('3'), 'Should show total count');
95
+ done();
96
+ }, 50);
97
+ });
98
+ it('should call onSelect when card is clicked', done => {
99
+ const walkthrough = createMockWalkthrough();
100
+ let selectedWalkthrough;
101
+ root.render((0, jsx_runtime_1.jsx)(walkthrough_card_1.WalkthroughCard, { walkthrough: walkthrough, onSelect: w => { selectedWalkthrough = w; } }));
102
+ setTimeout(() => {
103
+ const card = container.querySelector('.gs-walkthrough-card');
104
+ assert.ok(card, 'Card element should exist');
105
+ card.click();
106
+ setTimeout(() => {
107
+ assert.ok(selectedWalkthrough, 'onSelect should have been called');
108
+ assert.strictEqual(selectedWalkthrough?.id, walkthrough.id, 'Should pass the walkthrough to onSelect');
109
+ done();
110
+ }, 50);
111
+ }, 50);
112
+ });
113
+ it('should render icon when walkthrough.icon is provided', done => {
114
+ const walkthrough = createMockWalkthrough({ icon: 'play' });
115
+ root.render((0, jsx_runtime_1.jsx)(walkthrough_card_1.WalkthroughCard, { walkthrough: walkthrough, onSelect: () => { } }));
116
+ setTimeout(() => {
117
+ const icon = container.querySelector('.gs-walkthrough-icon');
118
+ assert.ok(icon, 'Icon element should exist');
119
+ assert.ok(icon?.classList.contains('codicon-play'), 'Should have the codicon-play class');
120
+ done();
121
+ }, 50);
122
+ });
123
+ it('should not render icon when walkthrough.icon is not provided', done => {
124
+ const walkthrough = createMockWalkthrough({ icon: undefined });
125
+ root.render((0, jsx_runtime_1.jsx)(walkthrough_card_1.WalkthroughCard, { walkthrough: walkthrough, onSelect: () => { } }));
126
+ setTimeout(() => {
127
+ const icon = container.querySelector('.gs-walkthrough-icon');
128
+ // eslint-disable-next-line no-null/no-null
129
+ assert.strictEqual(icon, null, 'Icon element should not exist');
130
+ done();
131
+ }, 50);
132
+ });
133
+ it('should show 0% progress when no steps are complete', done => {
134
+ const walkthrough = createMockWalkthrough();
135
+ root.render((0, jsx_runtime_1.jsx)(walkthrough_card_1.WalkthroughCard, { walkthrough: walkthrough, onSelect: () => { } }));
136
+ setTimeout(() => {
137
+ const progressFill = container.querySelector('.gs-walkthrough-progress-fill');
138
+ assert.ok(progressFill, 'Progress fill element should exist');
139
+ assert.strictEqual(progressFill.style.width, '0%', 'Progress should be 0%');
140
+ done();
141
+ }, 50);
142
+ });
143
+ it('should show 100% progress when all steps are complete', done => {
144
+ const walkthrough = createMockWalkthrough({
145
+ steps: [
146
+ createMockStep({ id: 's1', isComplete: true }),
147
+ createMockStep({ id: 's2', isComplete: true }),
148
+ ]
149
+ });
150
+ root.render((0, jsx_runtime_1.jsx)(walkthrough_card_1.WalkthroughCard, { walkthrough: walkthrough, onSelect: () => { } }));
151
+ setTimeout(() => {
152
+ const progressFill = container.querySelector('.gs-walkthrough-progress-fill');
153
+ assert.ok(progressFill, 'Progress fill element should exist');
154
+ assert.strictEqual(progressFill.style.width, '100%', 'Progress should be 100%');
155
+ done();
156
+ }, 50);
157
+ });
158
+ it('should fall back to the extension icon when the walkthrough contributes none', done => {
159
+ const walkthrough = createMockWalkthrough({ icon: undefined, pluginIcon: 'http://localhost/icon.png' });
160
+ root.render((0, jsx_runtime_1.jsx)(walkthrough_card_1.WalkthroughCard, { walkthrough: walkthrough, onSelect: () => { } }));
161
+ setTimeout(() => {
162
+ const icon = container.querySelector('.gs-walkthrough-plugin-icon');
163
+ assert.ok(icon, 'The extension icon should be rendered');
164
+ assert.strictEqual(icon.getAttribute('src'), 'http://localhost/icon.png', 'It should use the resolved icon URL');
165
+ done();
166
+ }, 50);
167
+ });
168
+ it('should prefer a contributed codicon over the extension icon', done => {
169
+ const walkthrough = createMockWalkthrough({ icon: 'play', pluginIcon: 'http://localhost/icon.png' });
170
+ root.render((0, jsx_runtime_1.jsx)(walkthrough_card_1.WalkthroughCard, { walkthrough: walkthrough, onSelect: () => { } }));
171
+ setTimeout(() => {
172
+ assert.ok(container.querySelector('.codicon-play'), 'The contributed codicon should win');
173
+ // eslint-disable-next-line no-null/no-null
174
+ assert.strictEqual(container.querySelector('.gs-walkthrough-plugin-icon'), null, 'The extension icon should be skipped');
175
+ done();
176
+ }, 50);
177
+ });
178
+ it('should render no icon when neither is available', done => {
179
+ const walkthrough = createMockWalkthrough({ icon: undefined, pluginIcon: undefined });
180
+ root.render((0, jsx_runtime_1.jsx)(walkthrough_card_1.WalkthroughCard, { walkthrough: walkthrough, onSelect: () => { } }));
181
+ setTimeout(() => {
182
+ // eslint-disable-next-line no-null/no-null
183
+ assert.strictEqual(container.querySelector('.gs-walkthrough-icon'), null, 'No icon element should exist');
184
+ done();
185
+ }, 50);
186
+ });
187
+ });
188
+ //# sourceMappingURL=walkthrough-card.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walkthrough-card.spec.js","sourceRoot":"","sources":["../../src/browser/walkthrough-card.spec.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { MarkdownRenderer } from '@theia/core/lib/browser/markdown-rendering/markdown-renderer';
2
+ import { ThemeService } from '@theia/core/lib/browser/theming';
3
+ import { ILogger } from '@theia/core/lib/common/logger';
4
+ import * as React from '@theia/core/shared/react';
5
+ import { Walkthrough, WalkthroughStep } from '../common/walkthrough-types';
6
+ export interface WalkthroughDetailProps {
7
+ walkthrough: Walkthrough;
8
+ onStepSelect: (step: WalkthroughStep) => void;
9
+ onBack: () => void;
10
+ selectedStep?: WalkthroughStep;
11
+ markdownRenderer: MarkdownRenderer;
12
+ onLinkClick?: (url: string) => void;
13
+ onToggleStepDone?: (step: WalkthroughStep) => void;
14
+ onMarkAllStepsDone?: () => void;
15
+ themeService: ThemeService;
16
+ logger: ILogger;
17
+ }
18
+ export declare function WalkthroughDetail(props: WalkthroughDetailProps): React.ReactElement;
19
+ //# sourceMappingURL=walkthrough-detail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walkthrough-detail.d.ts","sourceRoot":"","sources":["../../src/browser/walkthrough-detail.tsx"],"names":[],"mappings":"AAiBA,OAAO,EAAE,gBAAgB,EAA+C,MAAM,8DAA8D,CAAC;AAC7I,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAI/D,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAExD,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAI3E,MAAM,WAAW,sBAAsB;IACnC,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;IAC9C,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;IACnD,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,KAAK,CAAC,YAAY,CA6DnF"}
@@ -0,0 +1,192 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WalkthroughDetail = WalkthroughDetail;
4
+ const jsx_runtime_1 = require("@theia/core/shared/react/jsx-runtime");
5
+ // *****************************************************************************
6
+ // Copyright (C) 2026 EclipseSource and others.
7
+ //
8
+ // This program and the accompanying materials are made available under the
9
+ // terms of the Eclipse Public License v. 2.0 which is available at
10
+ // http://www.eclipse.org/legal/epl-2.0.
11
+ //
12
+ // This Source Code may also be made available under the following Secondary
13
+ // Licenses when the conditions for such availability set forth in the Eclipse
14
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
15
+ // with the GNU Classpath Exception which is available at
16
+ // https://www.gnu.org/software/classpath/license.html.
17
+ //
18
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
19
+ // *****************************************************************************
20
+ const browser_1 = require("@theia/core/lib/browser");
21
+ const disposable_1 = require("@theia/core/lib/common/disposable");
22
+ const nls_1 = require("@theia/core/lib/common/nls");
23
+ const React = require("@theia/core/shared/react");
24
+ const plugin_shared_style_1 = require("@theia/plugin-ext/lib/main/browser/plugin-shared-style");
25
+ const walkthrough_icon_1 = require("./walkthrough-icon");
26
+ function WalkthroughDetail(props) {
27
+ const { walkthrough, onStepSelect, onBack, selectedStep, markdownRenderer, themeService } = props;
28
+ return ((0, jsx_runtime_1.jsxs)("div", { className: 'gs-walkthrough-detail', children: [(0, jsx_runtime_1.jsxs)("div", { className: 'gs-walkthrough-detail-header', children: [(0, jsx_runtime_1.jsxs)("a", { role: 'button', tabIndex: 0, className: 'gs-walkthrough-back-link', onClick: onBack, onKeyDown: (e) => {
29
+ if (e.key === 'Enter') {
30
+ onBack();
31
+ }
32
+ }, children: [(0, jsx_runtime_1.jsx)("i", { className: (0, browser_1.codicon)('arrow-left') }), (0, jsx_runtime_1.jsx)("span", { className: 'gs-walkthrough-back-label', children: nls_1.nls.localizeByDefault('Back') })] }), (0, jsx_runtime_1.jsxs)("h2", { className: 'gs-walkthrough-detail-title', children: [(0, jsx_runtime_1.jsx)(walkthrough_icon_1.WalkthroughIcon, { walkthrough: walkthrough }), walkthrough.title] }), (0, jsx_runtime_1.jsx)("p", { className: 'gs-walkthrough-detail-description', children: walkthrough.description })] }), (0, jsx_runtime_1.jsxs)("div", { className: 'gs-walkthrough-detail-body', children: [(0, jsx_runtime_1.jsxs)("div", { className: 'gs-walkthrough-steps', children: [walkthrough.steps.map(step => ((0, jsx_runtime_1.jsx)(WalkthroughStepItem, { step: step, isSelected: selectedStep?.id === step.id, onSelect: onStepSelect, onToggleDone: props.onToggleStepDone }, step.id))), props.onMarkAllStepsDone && ((0, jsx_runtime_1.jsx)("button", { className: 'theia-button secondary gs-walkthrough-mark-all-done', disabled: walkthrough.steps.every(step => step.isComplete), onClick: props.onMarkAllStepsDone, children: nls_1.nls.localizeByDefault('Mark Done') }))] }), selectedStep && ((0, jsx_runtime_1.jsx)("div", { className: 'gs-walkthrough-step-content', children: (0, jsx_runtime_1.jsx)(WalkthroughStepContent, { step: selectedStep, markdownRenderer: markdownRenderer, onLinkClick: props.onLinkClick, themeService: themeService, logger: props.logger }) }))] })] }));
33
+ }
34
+ function WalkthroughStepItem(props) {
35
+ const { step, isSelected, onSelect, onToggleDone } = props;
36
+ const iconClass = step.isComplete ? (0, browser_1.codicon)('pass-filled') : (0, browser_1.codicon)('circle-large-outline');
37
+ const toggleDone = (event) => {
38
+ // Completing a step is a separate action from opening it.
39
+ event.stopPropagation();
40
+ onToggleDone?.(step);
41
+ };
42
+ return ((0, jsx_runtime_1.jsxs)("div", { className: `gs-walkthrough-step-item ${isSelected ? 'selected' : ''} ${step.isComplete ? 'completed' : ''}`, role: 'button', tabIndex: 0, onClick: () => onSelect(step), onKeyDown: (e) => {
43
+ if (e.key === 'Enter') {
44
+ onSelect(step);
45
+ }
46
+ }, children: [(0, jsx_runtime_1.jsx)("span", { className: `gs-walkthrough-step-icon ${iconClass}`, role: onToggleDone ? 'checkbox' : undefined, "aria-checked": onToggleDone ? step.isComplete : undefined, tabIndex: onToggleDone ? 0 : undefined, title: onToggleDone
47
+ ? (step.isComplete
48
+ ? nls_1.nls.localize('theia/getting-started/markStepUndone', 'Mark Undone')
49
+ : nls_1.nls.localizeByDefault('Mark Done'))
50
+ : undefined, onClick: onToggleDone && toggleDone, onKeyDown: onToggleDone && ((e) => {
51
+ if (e.key === 'Enter' || e.key === ' ') {
52
+ toggleDone(e);
53
+ }
54
+ }) }), (0, jsx_runtime_1.jsx)("span", { className: 'gs-walkthrough-step-title', children: step.title })] }));
55
+ }
56
+ function WalkthroughStepContent(props) {
57
+ const { step, markdownRenderer, themeService } = props;
58
+ return ((0, jsx_runtime_1.jsxs)("div", { className: 'gs-walkthrough-step-detail', children: [(0, jsx_runtime_1.jsx)("h3", { children: step.title }), (0, jsx_runtime_1.jsx)(WalkthroughDescriptionContent, { description: step.description, markdownRenderer: markdownRenderer, onLinkClick: props.onLinkClick }), step.media && renderMedia(step.media, markdownRenderer, themeService, props.logger, props.onLinkClick)] }));
59
+ }
60
+ function WalkthroughDescriptionContent(props) {
61
+ // eslint-disable-next-line no-null/no-null
62
+ const containerRef = React.useRef(null);
63
+ const renderResultRef = React.useRef(undefined);
64
+ const disposablesRef = React.useRef(undefined);
65
+ const onLinkClickRef = React.useRef(props.onLinkClick);
66
+ onLinkClickRef.current = props.onLinkClick;
67
+ React.useEffect(() => {
68
+ if (!containerRef.current) {
69
+ return;
70
+ }
71
+ renderResultRef.current?.dispose();
72
+ disposablesRef.current?.dispose();
73
+ const options = createMarkdownOptions(onLinkClickRef, disposablesRef);
74
+ const result = props.markdownRenderer.render(toTrustedMarkdown(toMarkdownWithLineBreaks(props.description)), options);
75
+ renderResultRef.current = result;
76
+ containerRef.current.innerHTML = '';
77
+ containerRef.current.appendChild(result.element);
78
+ return () => {
79
+ renderResultRef.current?.dispose();
80
+ disposablesRef.current?.dispose();
81
+ };
82
+ }, [props.description, props.markdownRenderer]);
83
+ return (0, jsx_runtime_1.jsx)("div", { className: 'gs-walkthrough-step-description', ref: containerRef });
84
+ }
85
+ /**
86
+ * Walkthrough content is rendered as trusted Markdown so that the `command:` links it relies on survive
87
+ * rendering. It comes from an installed plugin, which can execute commands through its own API anyway.
88
+ */
89
+ function toTrustedMarkdown(value) {
90
+ return { value, isTrusted: true };
91
+ }
92
+ /**
93
+ * Routes link activation to `onLinkClick`. Without an action handler the Monaco based renderer clears every
94
+ * `href` and installs no click handling, which leaves the links of the rendered content inert.
95
+ */
96
+ function createMarkdownOptions(onLinkClickRef, disposablesRef) {
97
+ if (!onLinkClickRef.current) {
98
+ return undefined;
99
+ }
100
+ const disposables = new disposable_1.DisposableCollection();
101
+ disposablesRef.current = disposables;
102
+ return {
103
+ actionHandler: {
104
+ callback: (content) => onLinkClickRef.current?.(content),
105
+ disposables
106
+ }
107
+ };
108
+ }
109
+ /**
110
+ * Turn the single newlines that walkthrough step descriptions use for line breaks into Markdown hard breaks.
111
+ *
112
+ * VS Code renders every line of a step description as its own block, while Markdown collapses single
113
+ * newlines into spaces. Blank lines are left alone so that explicit paragraphs still work.
114
+ */
115
+ function toMarkdownWithLineBreaks(description) {
116
+ return description.replace(/(?<!\n)\n(?!\n)/g, ' \n');
117
+ }
118
+ function renderMedia(media, markdownRenderer, themeService, logger, onLinkClick) {
119
+ if (!media) {
120
+ return undefined;
121
+ }
122
+ if ('markdown' in media) {
123
+ return (0, jsx_runtime_1.jsx)(WalkthroughMedia, { src: media.markdown, markdownRenderer: markdownRenderer, logger: logger, onLinkClick: onLinkClick });
124
+ }
125
+ if ('svg' in media) {
126
+ return (0, jsx_runtime_1.jsx)(WalkthroughMediaImage, { src: media.svg, altText: media.altText || '', themeService: themeService });
127
+ }
128
+ if ('image' in media) {
129
+ return (0, jsx_runtime_1.jsx)(WalkthroughMediaImage, { src: media.image, altText: media.altText || '', themeService: themeService });
130
+ }
131
+ return undefined;
132
+ }
133
+ function pickThemeVariant(source, themeType) {
134
+ if (typeof source === 'string') {
135
+ return source;
136
+ }
137
+ switch (themeType) {
138
+ case 'light': return source.light;
139
+ case 'hc': return source.hc;
140
+ case 'hcLight': return source.hcLight;
141
+ default: return source.dark;
142
+ }
143
+ }
144
+ function WalkthroughMediaImage(props) {
145
+ const { themeService } = props;
146
+ const [themeType, setThemeType] = React.useState(() => themeService.getCurrentTheme().type);
147
+ const [failed, setFailed] = React.useState(false);
148
+ React.useEffect(() => {
149
+ const disposable = themeService.onDidColorThemeChange(event => setThemeType(event.newTheme.type));
150
+ return () => disposable.dispose();
151
+ }, [themeService]);
152
+ const src = plugin_shared_style_1.PluginSharedStyle.toExternalIconUrl(pickThemeVariant(props.src, themeType));
153
+ React.useEffect(() => setFailed(false), [src]);
154
+ if (failed) {
155
+ // A missing image must not leave a broken image placeholder behind.
156
+ return undefined;
157
+ }
158
+ return (0, jsx_runtime_1.jsx)("img", { className: 'gs-walkthrough-media-image', src: src, alt: props.altText, onError: () => setFailed(true) });
159
+ }
160
+ function WalkthroughMedia(props) {
161
+ // eslint-disable-next-line no-null/no-null
162
+ const containerRef = React.useRef(null);
163
+ const renderResultRef = React.useRef(undefined);
164
+ const disposablesRef = React.useRef(undefined);
165
+ const onLinkClickRef = React.useRef(props.onLinkClick);
166
+ onLinkClickRef.current = props.onLinkClick;
167
+ React.useEffect(() => {
168
+ let cancelled = false;
169
+ fetch(plugin_shared_style_1.PluginSharedStyle.toExternalIconUrl(props.src))
170
+ .then(response => !cancelled && response.ok ? response.text() : '')
171
+ .then(text => {
172
+ if (!cancelled && containerRef.current && text) {
173
+ renderResultRef.current?.dispose();
174
+ disposablesRef.current?.dispose();
175
+ const options = createMarkdownOptions(onLinkClickRef, disposablesRef);
176
+ const result = props.markdownRenderer.render(toTrustedMarkdown(text), options);
177
+ renderResultRef.current = result;
178
+ containerRef.current.innerHTML = '';
179
+ containerRef.current.appendChild(result.element);
180
+ }
181
+ })
182
+ .catch(error => props.logger.warn(`Could not load the walkthrough media '${props.src}'.`, error));
183
+ return () => {
184
+ cancelled = true;
185
+ renderResultRef.current?.dispose();
186
+ renderResultRef.current = undefined;
187
+ disposablesRef.current?.dispose();
188
+ };
189
+ }, [props.src, props.markdownRenderer]);
190
+ return (0, jsx_runtime_1.jsx)("div", { className: 'gs-walkthrough-media-markdown', ref: containerRef });
191
+ }
192
+ //# sourceMappingURL=walkthrough-detail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walkthrough-detail.js","sourceRoot":"","sources":["../../src/browser/walkthrough-detail.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=walkthrough-detail.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walkthrough-detail.spec.d.ts","sourceRoot":"","sources":["../../src/browser/walkthrough-detail.spec.tsx"],"names":[],"mappings":""}