@theia/getting-started 1.75.0-next.8 → 1.76.0-next.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/lib/browser/getting-started-contribution.d.ts +30 -2
- package/lib/browser/getting-started-contribution.d.ts.map +1 -1
- package/lib/browser/getting-started-contribution.js +125 -0
- package/lib/browser/getting-started-contribution.js.map +1 -1
- package/lib/browser/getting-started-contribution.spec.d.ts +2 -0
- package/lib/browser/getting-started-contribution.spec.d.ts.map +1 -0
- package/lib/browser/getting-started-contribution.spec.js +152 -0
- package/lib/browser/getting-started-contribution.spec.js.map +1 -0
- package/lib/browser/getting-started-frontend-module.d.ts.map +1 -1
- package/lib/browser/getting-started-frontend-module.js +8 -0
- package/lib/browser/getting-started-frontend-module.js.map +1 -1
- package/lib/browser/getting-started-widget.d.ts +27 -0
- package/lib/browser/getting-started-widget.d.ts.map +1 -1
- package/lib/browser/getting-started-widget.js +94 -113
- package/lib/browser/getting-started-widget.js.map +1 -1
- package/lib/browser/getting-started-widget.spec.d.ts +2 -0
- package/lib/browser/getting-started-widget.spec.d.ts.map +1 -0
- package/lib/browser/getting-started-widget.spec.js +71 -0
- package/lib/browser/getting-started-widget.spec.js.map +1 -0
- package/lib/browser/walkthrough-card.d.ts +8 -0
- package/lib/browser/walkthrough-card.d.ts.map +1 -0
- package/lib/browser/walkthrough-card.js +32 -0
- package/lib/browser/walkthrough-card.js.map +1 -0
- package/lib/browser/walkthrough-card.spec.d.ts +2 -0
- package/lib/browser/walkthrough-card.spec.d.ts.map +1 -0
- package/lib/browser/walkthrough-card.spec.js +188 -0
- package/lib/browser/walkthrough-card.spec.js.map +1 -0
- package/lib/browser/walkthrough-detail.d.ts +19 -0
- package/lib/browser/walkthrough-detail.d.ts.map +1 -0
- package/lib/browser/walkthrough-detail.js +192 -0
- package/lib/browser/walkthrough-detail.js.map +1 -0
- package/lib/browser/walkthrough-detail.spec.d.ts +2 -0
- package/lib/browser/walkthrough-detail.spec.d.ts.map +1 -0
- package/lib/browser/walkthrough-detail.spec.js +409 -0
- package/lib/browser/walkthrough-detail.spec.js.map +1 -0
- package/lib/browser/walkthrough-icon.d.ts +10 -0
- package/lib/browser/walkthrough-icon.d.ts.map +1 -0
- package/lib/browser/walkthrough-icon.js +38 -0
- package/lib/browser/walkthrough-icon.js.map +1 -0
- package/lib/browser/walkthrough-section.d.ts +23 -0
- package/lib/browser/walkthrough-section.d.ts.map +1 -0
- package/lib/browser/walkthrough-section.js +61 -0
- package/lib/browser/walkthrough-section.js.map +1 -0
- package/lib/browser/walkthrough-section.spec.d.ts +2 -0
- package/lib/browser/walkthrough-section.spec.d.ts.map +1 -0
- package/lib/browser/walkthrough-section.spec.js +328 -0
- package/lib/browser/walkthrough-section.spec.js.map +1 -0
- package/lib/browser/walkthrough-service.d.ts +166 -0
- package/lib/browser/walkthrough-service.d.ts.map +1 -0
- package/lib/browser/walkthrough-service.js +505 -0
- package/lib/browser/walkthrough-service.js.map +1 -0
- package/lib/browser/walkthrough-service.spec.d.ts +2 -0
- package/lib/browser/walkthrough-service.spec.d.ts.map +1 -0
- package/lib/browser/walkthrough-service.spec.js +1026 -0
- package/lib/browser/walkthrough-service.spec.js.map +1 -0
- package/lib/common/getting-started-preferences.d.ts +1 -0
- package/lib/common/getting-started-preferences.d.ts.map +1 -1
- package/lib/common/getting-started-preferences.js +5 -0
- package/lib/common/getting-started-preferences.js.map +1 -1
- package/lib/common/walkthrough-commands.d.ts +11 -0
- package/lib/common/walkthrough-commands.d.ts.map +1 -0
- package/lib/common/walkthrough-commands.js +41 -0
- package/lib/common/walkthrough-commands.js.map +1 -0
- package/lib/common/walkthrough-types.d.ts +22 -0
- package/lib/common/walkthrough-types.d.ts.map +1 -0
- package/lib/common/walkthrough-types.js +18 -0
- package/lib/common/walkthrough-types.js.map +1 -0
- package/package.json +9 -8
- package/src/browser/getting-started-contribution.spec.ts +188 -0
- package/src/browser/getting-started-contribution.ts +144 -3
- package/src/browser/getting-started-frontend-module.ts +8 -0
- package/src/browser/getting-started-widget.spec.tsx +88 -0
- package/src/browser/getting-started-widget.tsx +96 -3
- package/src/browser/style/index.css +285 -0
- package/src/browser/walkthrough-card.spec.tsx +246 -0
- package/src/browser/walkthrough-card.tsx +62 -0
- package/src/browser/walkthrough-detail.spec.tsx +674 -0
- package/src/browser/walkthrough-detail.tsx +347 -0
- package/src/browser/walkthrough-icon.tsx +42 -0
- package/src/browser/walkthrough-section.spec.tsx +483 -0
- package/src/browser/walkthrough-section.tsx +119 -0
- package/src/browser/walkthrough-service.spec.ts +1279 -0
- package/src/browser/walkthrough-service.ts +565 -0
- package/src/common/getting-started-preferences.ts +6 -0
- package/src/common/walkthrough-commands.ts +37 -0
- 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":";;;AAAA,gFAAgF;AAChF,+CAA+C;AAC/C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;AAEhF,iCAAiC;AACjC,8DAAiE;AAEjE,IAAI,YAAY,GAAG,IAAA,mBAAW,GAAE,CAAC;AAEjC,gEAAuE;AAEvE,yDAAqD;AAErD,SAAS,cAAc,CAAC,SAAoC;IACxD,OAAO;QACH,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,WAAW;QAClB,WAAW,EAAE,yBAAyB;QACtC,UAAU,EAAE,KAAK;QACjB,GAAG,SAAS;KACf,CAAC;AACN,CAAC;AAED,SAAS,qBAAqB,CAAC,SAAgC;IAC3D,OAAO;QACH,EAAE,EAAE,kBAAkB;QACtB,KAAK,EAAE,kBAAkB;QACzB,WAAW,EAAE,gCAAgC;QAC7C,KAAK,EAAE;YACH,cAAc,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;YACrD,cAAc,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;YACtD,cAAc,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;SACxD;QACD,QAAQ,EAAE,aAAa;QACvB,GAAG,SAAS;KACf,CAAC;AACN,CAAC;AAED,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC7B,IAAI,SAAsB,CAAC;IAC3B,IAAI,IAAU,CAAC;IAEf,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,GAAG,IAAA,mBAAW,GAAE,CAAC,CAAC;IAC3C,KAAK,CAAC,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC;IAE5B,UAAU,CAAC,GAAG,EAAE;QACZ,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1C,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,GAAG,IAAA,mBAAU,EAAC,SAAS,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,IAAI,CAAC,EAAE;QACzD,MAAM,WAAW,GAAG,qBAAqB,CAAC;YACtC,KAAK,EAAE,gBAAgB;YACvB,WAAW,EAAE,gBAAgB;SAChC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CACP,uBAAC,kCAAe,IAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,GAAI,CACrE,CAAC;QAEF,UAAU,CAAC,GAAG,EAAE;YACZ,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,4BAA4B,CAAC,CAAC;YACpE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,4BAA4B,CAAC,CAAC;YAC/C,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,sCAAsC,CAAC,CAAC;YAElG,MAAM,WAAW,GAAG,SAAS,CAAC,aAAa,CAAC,kCAAkC,CAAC,CAAC;YAChF,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,kCAAkC,CAAC,CAAC;YAC3D,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,4CAA4C,CAAC,CAAC;YAC9G,IAAI,EAAE,CAAC;QACX,CAAC,EAAE,EAAE,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,IAAI,CAAC,EAAE;QAC7D,MAAM,WAAW,GAAG,qBAAqB,CAAC;YACtC,KAAK,EAAE;gBACH,cAAc,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;gBAC9C,cAAc,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;gBAC/C,cAAc,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;aAClD;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CACP,uBAAC,kCAAe,IAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,GAAI,CACrE,CAAC;QAEF,UAAU,CAAC,GAAG,EAAE;YACZ,MAAM,YAAY,GAAG,SAAS,CAAC,aAAa,CAAC,+BAA+B,CAAgB,CAAC;YAC7F,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,oCAAoC,CAAC,CAAC;YAC9D,MAAM,aAAa,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC;YAC1C,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,aAAa,EAAE,2CAA2C,CAAC,CAAC;YAEzG,MAAM,YAAY,GAAG,SAAS,CAAC,aAAa,CAAC,+BAA+B,CAAC,CAAC;YAC9E,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,4BAA4B,CAAC,CAAC;YACtD,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,6BAA6B,CAAC,CAAC;YACnF,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,yBAAyB,CAAC,CAAC;YAC/E,IAAI,EAAE,CAAC;QACX,CAAC,EAAE,EAAE,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,IAAI,CAAC,EAAE;QACnD,MAAM,WAAW,GAAG,qBAAqB,EAAE,CAAC;QAC5C,IAAI,mBAA4C,CAAC;QAEjD,IAAI,CAAC,MAAM,CACP,uBAAC,kCAAe,IAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,mBAAmB,GAAG,CAAC,CAAC,CAAC,CAAC,GAAI,CAC7F,CAAC;QAEF,UAAU,CAAC,GAAG,EAAE;YACZ,MAAM,IAAI,GAAG,SAAS,CAAC,aAAa,CAAC,sBAAsB,CAAgB,CAAC;YAC5E,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,2BAA2B,CAAC,CAAC;YAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;YAEb,UAAU,CAAC,GAAG,EAAE;gBACZ,MAAM,CAAC,EAAE,CAAC,mBAAmB,EAAE,kCAAkC,CAAC,CAAC;gBACnE,MAAM,CAAC,WAAW,CAAC,mBAAmB,EAAE,EAAE,EAAE,WAAW,CAAC,EAAE,EAAE,yCAAyC,CAAC,CAAC;gBACvG,IAAI,EAAE,CAAC;YACX,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,CAAC,EAAE,EAAE,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,IAAI,CAAC,EAAE;QAC9D,MAAM,WAAW,GAAG,qBAAqB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAE5D,IAAI,CAAC,MAAM,CACP,uBAAC,kCAAe,IAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,GAAI,CACrE,CAAC;QAEF,UAAU,CAAC,GAAG,EAAE;YACZ,MAAM,IAAI,GAAG,SAAS,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC;YAC7D,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,2BAA2B,CAAC,CAAC;YAC7C,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,oCAAoC,CAAC,CAAC;YAC1F,IAAI,EAAE,CAAC;QACX,CAAC,EAAE,EAAE,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,IAAI,CAAC,EAAE;QACtE,MAAM,WAAW,GAAG,qBAAqB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAE/D,IAAI,CAAC,MAAM,CACP,uBAAC,kCAAe,IAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,GAAI,CACrE,CAAC;QAEF,UAAU,CAAC,GAAG,EAAE;YACZ,MAAM,IAAI,GAAG,SAAS,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC;YAC7D,2CAA2C;YAC3C,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,+BAA+B,CAAC,CAAC;YAChE,IAAI,EAAE,CAAC;QACX,CAAC,EAAE,EAAE,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,IAAI,CAAC,EAAE;QAC5D,MAAM,WAAW,GAAG,qBAAqB,EAAE,CAAC;QAE5C,IAAI,CAAC,MAAM,CACP,uBAAC,kCAAe,IAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,GAAI,CACrE,CAAC;QAEF,UAAU,CAAC,GAAG,EAAE;YACZ,MAAM,YAAY,GAAG,SAAS,CAAC,aAAa,CAAC,+BAA+B,CAAgB,CAAC;YAC7F,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,oCAAoC,CAAC,CAAC;YAC9D,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,uBAAuB,CAAC,CAAC;YAC5E,IAAI,EAAE,CAAC;QACX,CAAC,EAAE,EAAE,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,IAAI,CAAC,EAAE;QAC/D,MAAM,WAAW,GAAG,qBAAqB,CAAC;YACtC,KAAK,EAAE;gBACH,cAAc,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;gBAC9C,cAAc,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;aACjD;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CACP,uBAAC,kCAAe,IAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,GAAI,CACrE,CAAC;QAEF,UAAU,CAAC,GAAG,EAAE;YACZ,MAAM,YAAY,GAAG,SAAS,CAAC,aAAa,CAAC,+BAA+B,CAAgB,CAAC;YAC7F,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,oCAAoC,CAAC,CAAC;YAC9D,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,yBAAyB,CAAC,CAAC;YAChF,IAAI,EAAE,CAAC;QACX,CAAC,EAAE,EAAE,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,8EAA8E,EAAE,IAAI,CAAC,EAAE;QACtF,MAAM,WAAW,GAAG,qBAAqB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,2BAA2B,EAAE,CAAC,CAAC;QAExG,IAAI,CAAC,MAAM,CACP,uBAAC,kCAAe,IAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,GAAI,CACrE,CAAC;QAEF,UAAU,CAAC,GAAG,EAAE;YACZ,MAAM,IAAI,GAAG,SAAS,CAAC,aAAa,CAAC,6BAA6B,CAAqB,CAAC;YACxF,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,uCAAuC,CAAC,CAAC;YACzD,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,2BAA2B,EAAE,qCAAqC,CAAC,CAAC;YACjH,IAAI,EAAE,CAAC;QACX,CAAC,EAAE,EAAE,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,IAAI,CAAC,EAAE;QACrE,MAAM,WAAW,GAAG,qBAAqB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,2BAA2B,EAAE,CAAC,CAAC;QAErG,IAAI,CAAC,MAAM,CACP,uBAAC,kCAAe,IAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,GAAI,CACrE,CAAC;QAEF,UAAU,CAAC,GAAG,EAAE;YACZ,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,oCAAoC,CAAC,CAAC;YAC1F,2CAA2C;YAC3C,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,aAAa,CAAC,6BAA6B,CAAC,EAAE,IAAI,EAAE,sCAAsC,CAAC,CAAC;YACzH,IAAI,EAAE,CAAC;QACX,CAAC,EAAE,EAAE,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,IAAI,CAAC,EAAE;QACzD,MAAM,WAAW,GAAG,qBAAqB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;QAEtF,IAAI,CAAC,MAAM,CACP,uBAAC,kCAAe,IAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,GAAI,CACrE,CAAC;QAEF,UAAU,CAAC,GAAG,EAAE;YACZ,2CAA2C;YAC3C,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,aAAa,CAAC,sBAAsB,CAAC,EAAE,IAAI,EAAE,8BAA8B,CAAC,CAAC;YAC1G,IAAI,EAAE,CAAC;QACX,CAAC,EAAE,EAAE,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"walkthrough-detail.spec.d.ts","sourceRoot":"","sources":["../../src/browser/walkthrough-detail.spec.tsx"],"names":[],"mappings":""}
|