@opensumi/ide-debug 2.22.11 → 2.23.1-next-1679481979.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/breakpoint/breakpoint-manager.d.ts +2 -0
- package/lib/browser/breakpoint/breakpoint-manager.d.ts.map +1 -1
- package/lib/browser/breakpoint/breakpoint-manager.js +5 -0
- package/lib/browser/breakpoint/breakpoint-manager.js.map +1 -1
- package/lib/browser/contextkeys/debug-contextkey.service.d.ts +1 -1
- package/lib/browser/contextkeys/debug-contextkey.service.d.ts.map +1 -1
- package/lib/browser/contextkeys/debug-contextkey.service.js +1 -1
- package/lib/browser/contextkeys/debug-contextkey.service.js.map +1 -1
- package/lib/browser/debug-session-manager.d.ts.map +1 -1
- package/lib/browser/debug-session-manager.js +1 -5
- package/lib/browser/debug-session-manager.js.map +1 -1
- package/lib/browser/debug-session.js +3 -3
- package/lib/browser/debug-session.js.map +1 -1
- package/lib/browser/editor/debug-editor-contribution.d.ts.map +1 -1
- package/lib/browser/editor/debug-editor-contribution.js +1 -1
- package/lib/browser/editor/debug-editor-contribution.js.map +1 -1
- package/lib/browser/editor/debug-model.d.ts +2 -2
- package/lib/browser/editor/debug-model.d.ts.map +1 -1
- package/lib/browser/editor/debug-model.js +4 -3
- package/lib/browser/editor/debug-model.js.map +1 -1
- package/lib/browser/model/debug-stack-frame.d.ts +12 -0
- package/lib/browser/model/debug-stack-frame.d.ts.map +1 -1
- package/lib/browser/model/debug-stack-frame.js +24 -1
- package/lib/browser/model/debug-stack-frame.js.map +1 -1
- package/lib/browser/view/breakpoints/debug-breakpoints.service.d.ts.map +1 -1
- package/lib/browser/view/breakpoints/debug-breakpoints.service.js +5 -4
- package/lib/browser/view/breakpoints/debug-breakpoints.service.js.map +1 -1
- package/lib/browser/view/breakpoints/debug-breakpoints.view.d.ts.map +1 -1
- package/lib/browser/view/breakpoints/debug-breakpoints.view.js.map +1 -1
- package/lib/browser/view/configuration/debug-toolbar.view.d.ts.map +1 -1
- package/lib/browser/view/configuration/debug-toolbar.view.js +27 -25
- package/lib/browser/view/configuration/debug-toolbar.view.js.map +1 -1
- package/lib/browser/view/console/debug-console.service.js +2 -2
- package/lib/browser/view/console/debug-console.service.js.map +1 -1
- package/lib/browser/view/debug-view-model.d.ts.map +1 -1
- package/lib/browser/view/debug-view-model.js.map +1 -1
- package/lib/browser/view/frames/debug-call-stack-frame.view.d.ts +1 -0
- package/lib/browser/view/frames/debug-call-stack-frame.view.d.ts.map +1 -1
- package/lib/browser/view/frames/debug-call-stack-frame.view.js +101 -26
- package/lib/browser/view/frames/debug-call-stack-frame.view.js.map +1 -1
- package/lib/browser/view/frames/debug-call-stack-session.view.d.ts.map +1 -1
- package/lib/browser/view/frames/debug-call-stack-session.view.js +4 -4
- package/lib/browser/view/frames/debug-call-stack-session.view.js.map +1 -1
- package/lib/browser/view/frames/debug-call-stack-thread.view.d.ts +1 -0
- package/lib/browser/view/frames/debug-call-stack-thread.view.d.ts.map +1 -1
- package/lib/browser/view/frames/debug-call-stack-thread.view.js +3 -3
- package/lib/browser/view/frames/debug-call-stack-thread.view.js.map +1 -1
- package/lib/common/debug-service.d.ts +1 -6
- package/lib/common/debug-service.d.ts.map +1 -1
- package/lib/common/debug-service.js +1 -9
- package/lib/common/debug-service.js.map +1 -1
- package/lib/common/inline-values.d.ts +1 -0
- package/lib/common/inline-values.d.ts.map +1 -1
- package/package.json +23 -23
- package/src/browser/breakpoint/breakpoint-manager.ts +6 -0
- package/src/browser/contextkeys/debug-contextkey.service.ts +2 -2
- package/src/browser/debug-session-manager.ts +1 -7
- package/src/browser/debug-session.ts +3 -3
- package/src/browser/editor/debug-editor-contribution.ts +1 -1
- package/src/browser/editor/debug-model.ts +4 -3
- package/src/browser/model/debug-stack-frame.ts +27 -2
- package/src/browser/view/breakpoints/debug-breakpoints.service.ts +4 -4
- package/src/browser/view/breakpoints/debug-breakpoints.view.tsx +1 -7
- package/src/browser/view/configuration/debug-toolbar.view.tsx +112 -94
- package/src/browser/view/console/debug-console.service.ts +2 -2
- package/src/browser/view/debug-view-model.ts +6 -2
- package/src/browser/view/frames/debug-call-stack-frame.view.tsx +139 -50
- package/src/browser/view/frames/debug-call-stack-session.view.tsx +10 -4
- package/src/browser/view/frames/debug-call-stack-thread.view.tsx +7 -2
- package/src/common/debug-service.ts +1 -15
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
import { IDebugSessionManager } from '../../../common';
|
|
16
16
|
import { DebugSession } from '../../debug-session';
|
|
17
17
|
import { DebugSessionManager } from '../../debug-session-manager';
|
|
18
|
-
import { DebugStackFrame } from '../../model';
|
|
18
|
+
import { DebugStackFrame, ShowMoreDebugStackFrame } from '../../model';
|
|
19
19
|
import { DebugThread } from '../../model/debug-thread';
|
|
20
20
|
|
|
21
21
|
import styles from './debug-call-stack.module.less';
|
|
@@ -27,13 +27,14 @@ export interface DebugStackSessionViewProps {
|
|
|
27
27
|
thread: DebugThread;
|
|
28
28
|
viewState: ViewState;
|
|
29
29
|
indent?: number;
|
|
30
|
+
isBottom?: boolean;
|
|
30
31
|
}
|
|
31
32
|
|
|
32
33
|
export const DebugStackFramesView = observer((props: DebugStackSessionViewProps) => {
|
|
33
|
-
const { viewState, frames: rawFrames, thread, indent = 0, session } = props;
|
|
34
|
+
const { viewState, frames: rawFrames, thread, indent = 0, session, isBottom } = props;
|
|
34
35
|
const [selected, setSelected] = useState<number | undefined>();
|
|
35
36
|
const [isLoading, setIsLoading] = useState<boolean>(false);
|
|
36
|
-
const [frames, setFrames] = useState<DebugStackFrame[]>([]);
|
|
37
|
+
const [frames, setFrames] = useState<(DebugStackFrame | ShowMoreDebugStackFrame)[]>([]);
|
|
37
38
|
const [framesErrorMessage, setFramesErrorMessage] = useState<string>('');
|
|
38
39
|
const [canLoadMore, setCanLoadMore] = useState<boolean>(false);
|
|
39
40
|
const manager = useInjectable<DebugSessionManager>(IDebugSessionManager);
|
|
@@ -57,11 +58,62 @@ export const DebugStackFramesView = observer((props: DebugStackSessionViewProps)
|
|
|
57
58
|
}
|
|
58
59
|
};
|
|
59
60
|
|
|
61
|
+
const expandFrame = useCallback(
|
|
62
|
+
(frame: ShowMoreDebugStackFrame) => {
|
|
63
|
+
const expanedFrames = frames.slice(0);
|
|
64
|
+
expanedFrames.splice(frame.startIndex, frame.frames.length, ...frame.frames);
|
|
65
|
+
setFrames(expanedFrames);
|
|
66
|
+
},
|
|
67
|
+
[frames],
|
|
68
|
+
);
|
|
69
|
+
|
|
70
|
+
const mergeFrames = useCallback((frames: DebugStackFrame[]) => {
|
|
71
|
+
const len = frames.length;
|
|
72
|
+
const results: (DebugStackFrame | ShowMoreDebugStackFrame)[] = [];
|
|
73
|
+
let showMoreFrames: DebugStackFrame[] = [];
|
|
74
|
+
let showMoreOrigin;
|
|
75
|
+
let showMoreIndex = -1;
|
|
76
|
+
let hasOrigin = false;
|
|
77
|
+
for (let i = 0; i < len; i++) {
|
|
78
|
+
if (frames[i].source?.raw.origin) {
|
|
79
|
+
if (hasOrigin) {
|
|
80
|
+
if (showMoreOrigin === frames[i].source?.raw.origin) {
|
|
81
|
+
showMoreFrames.push(frames[i]);
|
|
82
|
+
continue;
|
|
83
|
+
} else {
|
|
84
|
+
results.push(new ShowMoreDebugStackFrame(i, showMoreFrames, session, showMoreOrigin, expandFrame));
|
|
85
|
+
showMoreFrames = [];
|
|
86
|
+
showMoreIndex = i;
|
|
87
|
+
showMoreOrigin = frames[i].source?.raw.origin;
|
|
88
|
+
showMoreFrames.push(frames[i]);
|
|
89
|
+
}
|
|
90
|
+
} else {
|
|
91
|
+
hasOrigin = true;
|
|
92
|
+
showMoreFrames.push(frames[i]);
|
|
93
|
+
showMoreIndex = i;
|
|
94
|
+
showMoreOrigin = frames[i].source?.raw.origin;
|
|
95
|
+
}
|
|
96
|
+
} else {
|
|
97
|
+
if (hasOrigin && showMoreFrames.length > 0) {
|
|
98
|
+
results.push(new ShowMoreDebugStackFrame(i, showMoreFrames, session, showMoreOrigin, expandFrame));
|
|
99
|
+
showMoreFrames = [];
|
|
100
|
+
showMoreIndex = -1;
|
|
101
|
+
hasOrigin = false;
|
|
102
|
+
}
|
|
103
|
+
results.push(frames[i]);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
if (hasOrigin && showMoreFrames.length > 0) {
|
|
107
|
+
results.push(new ShowMoreDebugStackFrame(showMoreIndex, showMoreFrames, session, showMoreOrigin, expandFrame));
|
|
108
|
+
}
|
|
109
|
+
return results;
|
|
110
|
+
}, []);
|
|
111
|
+
|
|
60
112
|
const updateFrames = useCallback(
|
|
61
113
|
(frames: DebugStackFrame[]) => {
|
|
62
|
-
setFrames(frames);
|
|
114
|
+
setFrames(mergeFrames(frames));
|
|
63
115
|
},
|
|
64
|
-
[frames],
|
|
116
|
+
[frames, mergeFrames],
|
|
65
117
|
);
|
|
66
118
|
|
|
67
119
|
const updateSelected = useCallback(
|
|
@@ -118,13 +170,17 @@ export const DebugStackFramesView = observer((props: DebugStackSessionViewProps)
|
|
|
118
170
|
}, [frames]);
|
|
119
171
|
|
|
120
172
|
const template = ({ data }) => {
|
|
121
|
-
const frame: DebugStackFrame = data;
|
|
122
|
-
const isLabel = frame.raw.presentationHint === 'label';
|
|
123
|
-
const isSubtle = frame.raw.presentationHint === 'subtle';
|
|
124
|
-
const
|
|
173
|
+
const frame: DebugStackFrame | ShowMoreDebugStackFrame = data;
|
|
174
|
+
const isLabel = DebugStackFrame.is(frame) && frame.raw.presentationHint === 'label';
|
|
175
|
+
const isSubtle = DebugStackFrame.is(frame) && frame.raw.presentationHint === 'subtle';
|
|
176
|
+
const onClickHandler = useCallback(() => {
|
|
125
177
|
if (isLabel || isSubtle) {
|
|
126
178
|
return;
|
|
127
179
|
}
|
|
180
|
+
if (!DebugStackFrame.is(frame)) {
|
|
181
|
+
frame.open();
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
128
184
|
manager.updateCurrentSession(frame.session);
|
|
129
185
|
|
|
130
186
|
frame.session.currentThread = frame.thread;
|
|
@@ -135,86 +191,120 @@ export const DebugStackFramesView = observer((props: DebugStackSessionViewProps)
|
|
|
135
191
|
const restartFrame = (event: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => {
|
|
136
192
|
event.preventDefault();
|
|
137
193
|
event.stopPropagation();
|
|
138
|
-
|
|
194
|
+
if (!DebugStackFrame.is(frame)) {
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
139
197
|
if (frame.canRestart) {
|
|
140
198
|
frame.restart();
|
|
141
199
|
}
|
|
142
200
|
};
|
|
143
201
|
|
|
202
|
+
const frameItemStyle = {
|
|
203
|
+
paddingLeft: `${indent}px`,
|
|
204
|
+
};
|
|
205
|
+
|
|
206
|
+
if (DebugStackFrame.is(frame) && frame.raw?.source?.presentationHint === 'deemphasize') {
|
|
207
|
+
frameItemStyle['color'] = 'var(--list-deemphasizedForeground)';
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
const renderFrame = useCallback((frame) => {
|
|
211
|
+
if (DebugStackFrame.is(frame)) {
|
|
212
|
+
return (
|
|
213
|
+
<>
|
|
214
|
+
<span
|
|
215
|
+
className={cls(styles.debug_stack_frames_item_label, isLabel && styles.label, isSubtle && styles.subtle)}
|
|
216
|
+
>
|
|
217
|
+
{frame.raw && frame.raw.name}
|
|
218
|
+
</span>
|
|
219
|
+
<span className={styles.debug_stack_frames_item_description}>
|
|
220
|
+
{(frame.raw && frame.raw.source && frame.raw.source.name) || localize('debug.stack.frame.noSource')}
|
|
221
|
+
</span>
|
|
222
|
+
<>
|
|
223
|
+
{frame.canRestart && (
|
|
224
|
+
<a
|
|
225
|
+
title=''
|
|
226
|
+
onClick={(event) => restartFrame(event)}
|
|
227
|
+
className={cls(styles.debug_restart_frame_icon, getIcon('debug-restart-frame'))}
|
|
228
|
+
></a>
|
|
229
|
+
)}
|
|
230
|
+
<div className={cls(!isUndefined(frame.raw.line) && styles.debug_stack_frames_item_badge)}>
|
|
231
|
+
{frame.raw && frame.raw.line}
|
|
232
|
+
{!isUndefined(frame.raw.line) && ':'}
|
|
233
|
+
{frame.raw && frame.raw.column}
|
|
234
|
+
</div>
|
|
235
|
+
</>
|
|
236
|
+
</>
|
|
237
|
+
);
|
|
238
|
+
} else {
|
|
239
|
+
return <span className={styles.debug_stack_frames_load_more}>{frame.name}</span>;
|
|
240
|
+
}
|
|
241
|
+
}, []);
|
|
242
|
+
|
|
144
243
|
return (
|
|
145
244
|
<div
|
|
146
|
-
style={
|
|
245
|
+
style={frameItemStyle}
|
|
147
246
|
className={cls(
|
|
148
247
|
styles.debug_stack_frames_item,
|
|
149
|
-
selected === frame.raw.id && styles.selected,
|
|
150
|
-
|
|
248
|
+
DebugStackFrame.is(frame) && selected === frame.raw.id && styles.selected,
|
|
249
|
+
DebugStackFrame.is(frame) &&
|
|
250
|
+
!(frame.raw && frame.raw.source && frame.raw.source.name) &&
|
|
251
|
+
styles.debug_stack_frames_item_hidden,
|
|
151
252
|
)}
|
|
152
|
-
onClick={
|
|
253
|
+
onClick={onClickHandler}
|
|
153
254
|
onContextMenu={(event: React.MouseEvent<HTMLDivElement, MouseEvent>) =>
|
|
154
255
|
debugCallStackService.handleContextMenu(event, data)
|
|
155
256
|
}
|
|
156
257
|
>
|
|
157
|
-
|
|
158
|
-
{frame.raw && frame.raw.name}
|
|
159
|
-
</span>
|
|
160
|
-
<span className={styles.debug_stack_frames_item_description}>
|
|
161
|
-
{(frame.raw && frame.raw.source && frame.raw.source.name) || localize('debug.stack.frame.noSource')}
|
|
162
|
-
</span>
|
|
163
|
-
<>
|
|
164
|
-
<a
|
|
165
|
-
title=''
|
|
166
|
-
onClick={(event) => restartFrame(event)}
|
|
167
|
-
className={cls(styles.debug_restart_frame_icon, getIcon('debug-restart-frame'))}
|
|
168
|
-
></a>
|
|
169
|
-
<div className={cls(!isUndefined(frame.raw.line) && styles.debug_stack_frames_item_badge)}>
|
|
170
|
-
{frame.raw && frame.raw.line}
|
|
171
|
-
{!isUndefined(frame.raw.line) && ':'}
|
|
172
|
-
{frame.raw && frame.raw.column}
|
|
173
|
-
</div>
|
|
174
|
-
</>
|
|
258
|
+
{renderFrame(frame)}
|
|
175
259
|
</div>
|
|
176
260
|
);
|
|
177
261
|
};
|
|
178
262
|
|
|
179
|
-
const renderLoadMoreStackFrames = () => {
|
|
180
|
-
const
|
|
263
|
+
const renderLoadMoreStackFrames = useCallback(() => {
|
|
264
|
+
const onClickHandler = async () => {
|
|
181
265
|
setIsLoading(true);
|
|
182
266
|
await loadMore();
|
|
183
267
|
setIsLoading(false);
|
|
184
268
|
};
|
|
185
269
|
return (
|
|
186
|
-
<div className={styles.debug_stack_frames_item} onClick={
|
|
270
|
+
<div className={styles.debug_stack_frames_item} onClick={onClickHandler}>
|
|
187
271
|
<span className={styles.debug_stack_frames_load_more}>{localize('debug.stack.loadMore')}</span>
|
|
188
272
|
</div>
|
|
189
273
|
);
|
|
190
|
-
};
|
|
274
|
+
}, [isLoading, loadMore]);
|
|
191
275
|
|
|
192
|
-
const renderLoading = (
|
|
193
|
-
|
|
194
|
-
<
|
|
195
|
-
|
|
276
|
+
const renderLoading = useCallback(
|
|
277
|
+
() => (
|
|
278
|
+
<div className={styles.debug_stack_frames_item}>
|
|
279
|
+
<span className={styles.debug_stack_frames_load_more}>{localize('debug.stack.loading')}</span>
|
|
280
|
+
</div>
|
|
281
|
+
),
|
|
282
|
+
[],
|
|
196
283
|
);
|
|
197
284
|
|
|
198
|
-
const renderFramesErrorMessage = (
|
|
199
|
-
|
|
200
|
-
<
|
|
201
|
-
{message}
|
|
202
|
-
|
|
203
|
-
|
|
285
|
+
const renderFramesErrorMessage = useCallback(
|
|
286
|
+
(message: string) => (
|
|
287
|
+
<div className={styles.debug_stack_frames_item}>
|
|
288
|
+
<span className={styles.debug_stack_frames_error_message} title={message}>
|
|
289
|
+
{message}
|
|
290
|
+
</span>
|
|
291
|
+
</div>
|
|
292
|
+
),
|
|
293
|
+
[],
|
|
204
294
|
);
|
|
205
295
|
|
|
206
296
|
if (framesErrorMessage) {
|
|
207
297
|
return <div className={styles.debug_stack_frames}>{renderFramesErrorMessage(framesErrorMessage)}</div>;
|
|
208
298
|
}
|
|
209
299
|
|
|
210
|
-
const footer = () => {
|
|
300
|
+
const footer = useCallback(() => {
|
|
211
301
|
if (isLoading) {
|
|
212
302
|
return renderLoading();
|
|
213
303
|
} else if (canLoadMore) {
|
|
214
304
|
return renderLoadMoreStackFrames();
|
|
215
305
|
}
|
|
216
306
|
return null;
|
|
217
|
-
};
|
|
307
|
+
}, [isLoading, canLoadMore]);
|
|
218
308
|
|
|
219
309
|
return (
|
|
220
310
|
<RecycleList
|
|
@@ -222,8 +312,7 @@ export const DebugStackFramesView = observer((props: DebugStackSessionViewProps)
|
|
|
222
312
|
template={template}
|
|
223
313
|
itemHeight={22}
|
|
224
314
|
width={viewState.width}
|
|
225
|
-
|
|
226
|
-
height={isLoading || canLoadMore ? (frames.length + 1) * 22 : frames.length * 22}
|
|
315
|
+
height={(isLoading || canLoadMore ? (frames.length + 1) * 22 : frames.length * 22) + (isBottom ? 10 : 0)}
|
|
227
316
|
footer={isLoading || canLoadMore ? footer : undefined}
|
|
228
317
|
/>
|
|
229
318
|
);
|
|
@@ -153,7 +153,7 @@ export const DebugStackSessionView = (props: DebugStackSessionViewProps) => {
|
|
|
153
153
|
</div>
|
|
154
154
|
) : (
|
|
155
155
|
otherThreads.map(
|
|
156
|
-
(thread) =>
|
|
156
|
+
(thread: DebugThread, index: number) =>
|
|
157
157
|
!session.hasInMultipleThreadPaused(thread.raw.id) && (
|
|
158
158
|
<DebugStackThreadView
|
|
159
159
|
key={thread.id}
|
|
@@ -161,6 +161,7 @@ export const DebugStackSessionView = (props: DebugStackSessionViewProps) => {
|
|
|
161
161
|
viewState={viewState}
|
|
162
162
|
thread={thread}
|
|
163
163
|
session={session}
|
|
164
|
+
isBottom={index === otherThreads.length - 1}
|
|
164
165
|
/>
|
|
165
166
|
),
|
|
166
167
|
)
|
|
@@ -211,7 +212,10 @@ export const DebugStackSessionView = (props: DebugStackSessionViewProps) => {
|
|
|
211
212
|
>
|
|
212
213
|
{supportsThreadIdCorrespond || threads.length > 0 ? (
|
|
213
214
|
<>
|
|
214
|
-
<div
|
|
215
|
+
<div
|
|
216
|
+
className={unfold ? getIcon('arrow-down') : getIcon('arrow-right')}
|
|
217
|
+
onClick={() => setUnfold(!unfold)}
|
|
218
|
+
></div>
|
|
215
219
|
<div className={cls([getIcon('debug'), styles.debug_session_icon])}></div>
|
|
216
220
|
</>
|
|
217
221
|
) : (
|
|
@@ -222,25 +226,27 @@ export const DebugStackSessionView = (props: DebugStackSessionViewProps) => {
|
|
|
222
226
|
</div>
|
|
223
227
|
)}
|
|
224
228
|
{supportsThreadIdCorrespond && unfold
|
|
225
|
-
? multipleThreadPaused.map((t) => (
|
|
229
|
+
? multipleThreadPaused.map((t: DebugThread, index: number) => (
|
|
226
230
|
<DebugStackThreadView
|
|
227
231
|
key={t.id}
|
|
228
232
|
indent={mutipleSession ? 16 : 0}
|
|
229
233
|
viewState={viewState}
|
|
230
234
|
thread={t}
|
|
231
235
|
session={session}
|
|
236
|
+
isBottom={index === multipleThreadPaused.length - 1}
|
|
232
237
|
/>
|
|
233
238
|
))
|
|
234
239
|
: null}
|
|
235
240
|
{!supportsThreadIdCorrespond &&
|
|
236
241
|
(!mutipleSession || unfold) &&
|
|
237
|
-
threads.map((thread) => (
|
|
242
|
+
threads.map((thread: DebugThread, index: number) => (
|
|
238
243
|
<DebugStackThreadView
|
|
239
244
|
key={thread.id}
|
|
240
245
|
indent={mutipleSession ? 16 : 0}
|
|
241
246
|
viewState={viewState}
|
|
242
247
|
thread={thread}
|
|
243
248
|
session={session}
|
|
249
|
+
isBottom={index === threads.length - 1}
|
|
244
250
|
/>
|
|
245
251
|
))}
|
|
246
252
|
{subSession.length > 0 &&
|
|
@@ -18,10 +18,11 @@ export interface DebugStackThreadViewProps {
|
|
|
18
18
|
viewState: ViewState;
|
|
19
19
|
thread: DebugThread;
|
|
20
20
|
indent?: number;
|
|
21
|
+
isBottom?: boolean;
|
|
21
22
|
}
|
|
22
23
|
|
|
23
24
|
export const DebugStackThreadView = (props: DebugStackThreadViewProps) => {
|
|
24
|
-
const { thread, viewState, indent, session } = props;
|
|
25
|
+
const { thread, viewState, indent, session, isBottom } = props;
|
|
25
26
|
const manager = useInjectable<DebugSessionManager>(IDebugSessionManager);
|
|
26
27
|
const debugCallStackService = useInjectable<DebugCallStackService>(DebugCallStackService);
|
|
27
28
|
const [expanded, setExpanded] = useState<boolean>(true);
|
|
@@ -68,7 +69,10 @@ export const DebugStackThreadView = (props: DebugStackThreadViewProps) => {
|
|
|
68
69
|
{mutiple && (
|
|
69
70
|
<div style={{ paddingLeft: `${indent}px` }} className={styles.debug_stack_item_label}>
|
|
70
71
|
{thread.frames.length > 0 ? (
|
|
71
|
-
<div
|
|
72
|
+
<div
|
|
73
|
+
className={expanded ? getIcon('arrow-down') : getIcon('arrow-right')}
|
|
74
|
+
onClick={() => setExpanded(!expanded)}
|
|
75
|
+
></div>
|
|
72
76
|
) : (
|
|
73
77
|
<div style={{ width: 14 }}></div>
|
|
74
78
|
)}
|
|
@@ -92,6 +96,7 @@ export const DebugStackThreadView = (props: DebugStackThreadViewProps) => {
|
|
|
92
96
|
{(!mutiple || expanded) && thread.frames.length > 0 && (
|
|
93
97
|
<DebugStackFramesView
|
|
94
98
|
indent={mutiple ? (mutipleS ? 24 + 14 : 16 + 14) : 8}
|
|
99
|
+
isBottom={isBottom}
|
|
95
100
|
viewState={viewState}
|
|
96
101
|
thread={thread}
|
|
97
102
|
frames={frames}
|
|
@@ -1,11 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
IDisposable,
|
|
3
|
-
IJSONSchema,
|
|
4
|
-
IJSONSchemaSnippet,
|
|
5
|
-
ApplicationError,
|
|
6
|
-
Event,
|
|
7
|
-
BinaryBuffer,
|
|
8
|
-
} from '@opensumi/ide-core-common';
|
|
1
|
+
import { IDisposable, IJSONSchema, IJSONSchemaSnippet, Event, BinaryBuffer } from '@opensumi/ide-core-common';
|
|
9
2
|
|
|
10
3
|
import { DebugConfiguration } from './debug-configuration';
|
|
11
4
|
import { IDebugSessionDTO } from './debug-session-options';
|
|
@@ -167,10 +160,3 @@ export interface IDebugServiceContributionPoint {
|
|
|
167
160
|
contributions: IJSONSchema[];
|
|
168
161
|
removed?: boolean;
|
|
169
162
|
}
|
|
170
|
-
|
|
171
|
-
export namespace DebugError {
|
|
172
|
-
export const NotFound = ApplicationError.declare(-41000, (type: string) => ({
|
|
173
|
-
message: `'${type}' debugger type is not supported.`,
|
|
174
|
-
data: { type },
|
|
175
|
-
}));
|
|
176
|
-
}
|