@opensumi/ide-debug 2.21.5-rc-1669016550.0 → 2.21.5

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 (159) hide show
  1. package/lib/browser/view/configuration/debug-configuration.module.less +5 -5
  2. package/lib/browser/view/configuration/debug-configuration.view.d.ts.map +1 -1
  3. package/lib/browser/view/configuration/debug-configuration.view.js +1 -1
  4. package/lib/browser/view/configuration/debug-configuration.view.js.map +1 -1
  5. package/lib/browser/view/configuration/debug-toolbar.view.js +2 -2
  6. package/lib/browser/view/configuration/debug-toolbar.view.js.map +1 -1
  7. package/lib/browser/view/console/debug-console.module.less +1 -1
  8. package/lib/browser/view/console/debug-console.view.js +2 -2
  9. package/lib/browser/view/console/debug-console.view.js.map +1 -1
  10. package/lib/browser/view/variables/debug-variables.module.less +1 -1
  11. package/lib/browser/view/variables/debug-variables.view.js +1 -1
  12. package/lib/browser/view/variables/debug-variables.view.js.map +1 -1
  13. package/lib/browser/view/watch/debug-watch.module.less +1 -1
  14. package/lib/browser/view/watch/debug-watch.view.js +1 -1
  15. package/lib/browser/view/watch/debug-watch.view.js.map +1 -1
  16. package/package.json +25 -26
  17. package/src/browser/assets/breakpoint-conditional-disabled.svg +0 -4
  18. package/src/browser/assets/breakpoint-conditional-unverified.svg +0 -4
  19. package/src/browser/assets/breakpoint-conditional.svg +0 -4
  20. package/src/browser/assets/breakpoint-disabled.svg +0 -4
  21. package/src/browser/assets/breakpoint-hint.svg +0 -4
  22. package/src/browser/assets/breakpoint-log-disabled.svg +0 -4
  23. package/src/browser/assets/breakpoint-log-unverified.svg +0 -4
  24. package/src/browser/assets/breakpoint-log.svg +0 -4
  25. package/src/browser/assets/breakpoint-unsupported.svg +0 -4
  26. package/src/browser/assets/breakpoint-unverified.svg +0 -4
  27. package/src/browser/assets/breakpoint.svg +0 -4
  28. package/src/browser/assets/breakpoints-activate-inverse.svg +0 -4
  29. package/src/browser/assets/breakpoints-activate.svg +0 -4
  30. package/src/browser/assets/configure-inverse.svg +0 -4
  31. package/src/browser/assets/configure.svg +0 -4
  32. package/src/browser/assets/continue-inverse.svg +0 -4
  33. package/src/browser/assets/current-and-breakpoint.svg +0 -4
  34. package/src/browser/assets/current-arrow.svg +0 -4
  35. package/src/browser/assets/remove-all-inverse.svg +0 -4
  36. package/src/browser/assets/remove-all.svg +0 -4
  37. package/src/browser/assets/repl-inverse.svg +0 -4
  38. package/src/browser/assets/repl.svg +0 -4
  39. package/src/browser/assets/restart-inverse.svg +0 -4
  40. package/src/browser/assets/stackframe-and-breakpoint.svg +0 -4
  41. package/src/browser/assets/stackframe-arrow.svg +0 -4
  42. package/src/browser/assets/start-inverse.svg +0 -4
  43. package/src/browser/breakpoint/breakpoint-decoration.ts +0 -57
  44. package/src/browser/breakpoint/breakpoint-manager.ts +0 -348
  45. package/src/browser/breakpoint/breakpoint-marker.ts +0 -70
  46. package/src/browser/breakpoint/index.ts +0 -3
  47. package/src/browser/components/debug-action/index.module.less +0 -73
  48. package/src/browser/components/debug-action/index.tsx +0 -40
  49. package/src/browser/components/debug-exception-widget.less +0 -42
  50. package/src/browser/components/floating-click-widget/index.module.less +0 -5
  51. package/src/browser/components/floating-click-widget/index.tsx +0 -21
  52. package/src/browser/components/index.ts +0 -1
  53. package/src/browser/contextkeys/debug-call-stack-item-type-key.ts +0 -4
  54. package/src/browser/contextkeys/debug-contextkey.service.ts +0 -54
  55. package/src/browser/contextkeys/index.ts +0 -1
  56. package/src/browser/debug-ansi-handle.ts +0 -521
  57. package/src/browser/debug-configuration-manager.ts +0 -513
  58. package/src/browser/debug-configuration-model.ts +0 -66
  59. package/src/browser/debug-contribution.ts +0 -904
  60. package/src/browser/debug-exception-widget.tsx +0 -89
  61. package/src/browser/debug-link-detector.ts +0 -234
  62. package/src/browser/debug-memory.ts +0 -220
  63. package/src/browser/debug-preferences.ts +0 -70
  64. package/src/browser/debug-progress.service.ts +0 -122
  65. package/src/browser/debug-schema-updater.ts +0 -67
  66. package/src/browser/debug-service.ts +0 -42
  67. package/src/browser/debug-session-connection.ts +0 -333
  68. package/src/browser/debug-session-contribution.ts +0 -57
  69. package/src/browser/debug-session-manager.ts +0 -622
  70. package/src/browser/debug-session.ts +0 -1179
  71. package/src/browser/debug-style.less +0 -128
  72. package/src/browser/debugUtils.ts +0 -110
  73. package/src/browser/editor/debug-breakpoint-widget.ts +0 -99
  74. package/src/browser/editor/debug-breakpoint-zone-widget.tsx +0 -262
  75. package/src/browser/editor/debug-breakpoint.module.less +0 -31
  76. package/src/browser/editor/debug-editor-contribution.ts +0 -590
  77. package/src/browser/editor/debug-expression-provider.ts +0 -101
  78. package/src/browser/editor/debug-hover-model.ts +0 -38
  79. package/src/browser/editor/debug-hover-source.ts +0 -107
  80. package/src/browser/editor/debug-hover-tree.model.service.ts +0 -332
  81. package/src/browser/editor/debug-hover-widget.tsx +0 -200
  82. package/src/browser/editor/debug-hover.module.less +0 -29
  83. package/src/browser/editor/debug-hover.view.tsx +0 -147
  84. package/src/browser/editor/debug-model-manager.ts +0 -220
  85. package/src/browser/editor/debug-model.ts +0 -853
  86. package/src/browser/editor/debug-run-to-cursor.service.ts +0 -180
  87. package/src/browser/editor/debug-styles.ts +0 -66
  88. package/src/browser/editor/evaluatable-expression.ts +0 -47
  89. package/src/browser/editor/index.ts +0 -6
  90. package/src/browser/index.ts +0 -135
  91. package/src/browser/markers/index.ts +0 -2
  92. package/src/browser/markers/marker-manager.ts +0 -201
  93. package/src/browser/markers/marker.ts +0 -20
  94. package/src/browser/model/debug-source.ts +0 -144
  95. package/src/browser/model/debug-stack-frame.ts +0 -111
  96. package/src/browser/model/debug-thread.ts +0 -186
  97. package/src/browser/model/debug-watch.ts +0 -130
  98. package/src/browser/model/index.ts +0 -4
  99. package/src/browser/preferences/launch-folder-preference-provider.ts +0 -23
  100. package/src/browser/preferences/launch-preferences-contribution.ts +0 -9
  101. package/src/browser/preferences/launch-preferences.ts +0 -16
  102. package/src/browser/tree/debug-console-tree-node.define.tsx +0 -76
  103. package/src/browser/tree/debug-tree-node.define.ts +0 -768
  104. package/src/browser/tree/index.ts +0 -2
  105. package/src/browser/view/breakpoints/debug-breakpoints.module.less +0 -72
  106. package/src/browser/view/breakpoints/debug-breakpoints.service.ts +0 -217
  107. package/src/browser/view/breakpoints/debug-breakpoints.view.tsx +0 -174
  108. package/src/browser/view/configuration/debug-configuration.module.less +0 -110
  109. package/src/browser/view/configuration/debug-configuration.service.ts +0 -170
  110. package/src/browser/view/configuration/debug-configuration.view.tsx +0 -252
  111. package/src/browser/view/configuration/debug-toolbar.service.ts +0 -167
  112. package/src/browser/view/configuration/debug-toolbar.view.tsx +0 -335
  113. package/src/browser/view/console/debug-console-filter.model.ts +0 -49
  114. package/src/browser/view/console/debug-console-filter.service.ts +0 -81
  115. package/src/browser/view/console/debug-console-filter.view.tsx +0 -78
  116. package/src/browser/view/console/debug-console-model.ts +0 -48
  117. package/src/browser/view/console/debug-console-session.ts +0 -164
  118. package/src/browser/view/console/debug-console-toolbar.view.tsx +0 -28
  119. package/src/browser/view/console/debug-console-tree.model.service.ts +0 -550
  120. package/src/browser/view/console/debug-console.contribution.ts +0 -181
  121. package/src/browser/view/console/debug-console.module.less +0 -372
  122. package/src/browser/view/console/debug-console.service.ts +0 -433
  123. package/src/browser/view/console/debug-console.view.tsx +0 -500
  124. package/src/browser/view/debug-view-model.ts +0 -182
  125. package/src/browser/view/frames/debug-call-stack-frame.view.tsx +0 -224
  126. package/src/browser/view/frames/debug-call-stack-session.view.tsx +0 -237
  127. package/src/browser/view/frames/debug-call-stack-thread.view.tsx +0 -93
  128. package/src/browser/view/frames/debug-call-stack.contribution.ts +0 -88
  129. package/src/browser/view/frames/debug-call-stack.module.less +0 -193
  130. package/src/browser/view/frames/debug-call-stack.operation.tsx +0 -97
  131. package/src/browser/view/frames/debug-call-stack.service.ts +0 -105
  132. package/src/browser/view/frames/debug-call-stack.view.tsx +0 -43
  133. package/src/browser/view/variables/debug-variables-model.ts +0 -38
  134. package/src/browser/view/variables/debug-variables-tree.model.service.ts +0 -467
  135. package/src/browser/view/variables/debug-variables.contribution.ts +0 -244
  136. package/src/browser/view/variables/debug-variables.module.less +0 -148
  137. package/src/browser/view/variables/debug-variables.view.tsx +0 -303
  138. package/src/browser/view/watch/debug-watch-model.ts +0 -38
  139. package/src/browser/view/watch/debug-watch-tree.model.service.ts +0 -567
  140. package/src/browser/view/watch/debug-watch.contribution.ts +0 -167
  141. package/src/browser/view/watch/debug-watch.module.less +0 -188
  142. package/src/browser/view/watch/debug-watch.view.tsx +0 -337
  143. package/src/common/constants.ts +0 -81
  144. package/src/common/debug-breakpoint.ts +0 -43
  145. package/src/common/debug-configuration.ts +0 -68
  146. package/src/common/debug-editor.ts +0 -4
  147. package/src/common/debug-hover.ts +0 -31
  148. package/src/common/debug-model.ts +0 -247
  149. package/src/common/debug-progress.ts +0 -8
  150. package/src/common/debug-schema-updater.ts +0 -1
  151. package/src/common/debug-service.ts +0 -176
  152. package/src/common/debug-session-options.ts +0 -19
  153. package/src/common/debug-session.ts +0 -200
  154. package/src/common/evaluatable-expression.ts +0 -43
  155. package/src/common/index.ts +0 -14
  156. package/src/common/inline-values.ts +0 -77
  157. package/src/common/terminal.ts +0 -163
  158. package/src/common/types.ts +0 -86
  159. package/src/index.ts +0 -1
@@ -1,148 +0,0 @@
1
- .debug_variables_node {
2
- height: 22px;
3
- line-height: 22px;
4
- display: flex;
5
- flex-direction: column;
6
- position: relative;
7
- cursor: pointer;
8
-
9
- &:hover {
10
- color: var(--kt-tree-hoverForeground);
11
- background: var(--kt-tree-hoverBackground);
12
- }
13
-
14
- &.mod_selected {
15
- color: var(--kt-tree-inactiveSelectionForeground) !important;
16
- background: var(--kt-tree-inactiveSelectionBackground);
17
- .expansion_toggle {
18
- color: var(--kt-tree-inactiveSelectionForeground) !important;
19
- }
20
- }
21
-
22
- &.mod_focused {
23
- outline: 1px solid var(--list-focusOutline);
24
- color: var(--kt-tree-activeSelectionForeground) !important;
25
- background: var(--kt-tree-activeSelectionBackground);
26
- .expansion_toggle {
27
- color: var(--kt-tree-activeSelectionForeground) !important;
28
- }
29
- }
30
-
31
- &.mod_actived {
32
- outline: 1px solid var(--list-focusOutline);
33
- outline-offset: -1px;
34
- .expansion_toggle {
35
- color: var(--kt-tree-activeSelectionForeground) !important;
36
- }
37
- }
38
-
39
- &.mod_loading {
40
- opacity: 0.8;
41
- }
42
- }
43
-
44
- .debug_variables_node_content {
45
- position: relative;
46
- display: flex;
47
- align-items: center;
48
- width: 100%;
49
- user-select: text;
50
- match {
51
- background-color: var(--editor-findMatchHighlightBackground);
52
- }
53
- }
54
-
55
- .debug_variables_node_status {
56
- opacity: 0.75;
57
- text-align: center;
58
- font-size: 12px;
59
- padding-right: 0;
60
- }
61
-
62
- .debug_variables_node_segment {
63
- flex-grow: 0;
64
- white-space: nowrap;
65
- color: inherit;
66
- }
67
-
68
- .debug_variables_node_displayname {
69
- margin-right: 6px;
70
- display: inline;
71
- white-space: pre;
72
- }
73
-
74
- .debug_variables_node_description {
75
- display: inline;
76
- transform: scale(0.96);
77
- color: var(--descriptionForeground);
78
- }
79
-
80
- .debug_variables_node_overflow_wrap {
81
- flex: 1;
82
- flex-shrink: 0;
83
- overflow: hidden;
84
- text-overflow: ellipsis;
85
- white-space: nowrap;
86
- text-align: left;
87
- }
88
-
89
- .expansion_toggle {
90
- min-width: 20px;
91
- display: flex;
92
- justify-content: center;
93
- flex-shrink: 0;
94
- font-size: 16px;
95
- color: var(--foreground);
96
- &.mod_collapsed {
97
- &:before {
98
- display: block;
99
- }
100
- }
101
-
102
- &:not(.mod_collapsed) {
103
- &:before {
104
- display: block;
105
- transform: rotate(90deg);
106
- }
107
- }
108
- }
109
-
110
- .debug_variables_node_tail {
111
- text-align: center;
112
- margin-right: 10px;
113
- position: relative;
114
- height: 22px;
115
- display: flex;
116
- align-items: center;
117
- }
118
-
119
- // variable
120
- .debug_variables_variable {
121
- white-space: nowrap;
122
- overflow: hidden;
123
- text-overflow: ellipsis;
124
- overflow: visible;
125
- &.value {
126
- color: var(--debugTokenExpression-value);
127
- }
128
-
129
- &.name {
130
- color: var(--debugTokenExpression-name);
131
- }
132
-
133
- &.error {
134
- color: var(--debugTokenExpression-error);
135
- }
136
-
137
- &.number {
138
- color: var(--debugTokenExpression-number);
139
- }
140
-
141
- &.boolean {
142
- color: var(--debugTokenExpression-boolean);
143
- }
144
-
145
- &.string {
146
- color: var(--debugTokenExpression-string);
147
- }
148
- }
@@ -1,303 +0,0 @@
1
- import cls from 'classnames';
2
- import { observer } from 'mobx-react-lite';
3
- import React from 'react';
4
-
5
- import {
6
- INodeRendererProps,
7
- ClasslistComposite,
8
- IRecycleTreeHandle,
9
- TreeNodeType,
10
- RecycleTree,
11
- INodeRendererWrapProps,
12
- TreeModel,
13
- CompositeTreeNode,
14
- } from '@opensumi/ide-components';
15
- import { Loading } from '@opensumi/ide-components';
16
- import { useInjectable, getIcon } from '@opensumi/ide-core-browser';
17
- import { ViewState } from '@opensumi/ide-core-browser';
18
-
19
- import {
20
- ExpressionContainer,
21
- ExpressionNode,
22
- DebugVariableContainer,
23
- DebugVariable,
24
- DebugScope,
25
- } from '../../tree/debug-tree-node.define';
26
-
27
- import { DebugVariablesModelService } from './debug-variables-tree.model.service';
28
- import styles from './debug-variables.module.less';
29
-
30
- export const DEBUG_VARIABLE_TREE_FIELD_NAME = 'DEBUG_VARIABLE_TREE_FIELD';
31
-
32
- export const DebugVariableView = observer(({ viewState }: React.PropsWithChildren<{ viewState: ViewState }>) => {
33
- const DEBUG_VARIABLE_ITEM_HEIGHT = 22;
34
-
35
- const { width, height } = viewState;
36
-
37
- const wrapperRef: React.RefObject<HTMLDivElement> = React.createRef();
38
- const [model, setModel] = React.useState<TreeModel>();
39
-
40
- const debugVariablesModelService = useInjectable<DebugVariablesModelService>(DebugVariablesModelService);
41
-
42
- React.useEffect(() => {
43
- const disposable = debugVariablesModelService.onDidUpdateTreeModel(async (nextModel: TreeModel) => {
44
- setModel(nextModel);
45
- });
46
-
47
- return () => {
48
- disposable.dispose();
49
- debugVariablesModelService.removeNodeDecoration();
50
- setModel(undefined);
51
- };
52
- }, []);
53
-
54
- const handleTreeReady = (handle: IRecycleTreeHandle) => {
55
- debugVariablesModelService.handleTreeHandler({
56
- ...handle,
57
- hasDirectFocus: () => wrapperRef.current === document.activeElement,
58
- });
59
- };
60
-
61
- const handleTwistierClick = (
62
- ev: React.MouseEvent,
63
- item: ExpressionNode | ExpressionContainer,
64
- type: TreeNodeType,
65
- ) => {
66
- // 阻止点击事件冒泡
67
- ev.stopPropagation();
68
-
69
- const { handleTwistierClick } = debugVariablesModelService;
70
- if (!item) {
71
- return;
72
- }
73
- handleTwistierClick(item, type);
74
- };
75
-
76
- const handlerContextMenu = (
77
- ev: React.MouseEvent,
78
- node: DebugScope | DebugVariable | DebugVariableContainer | undefined,
79
- ) => {
80
- const { handleContextMenu } = debugVariablesModelService;
81
- handleContextMenu(ev, node);
82
- };
83
-
84
- const handleOuterContextMenu = (ev: React.MouseEvent) => {
85
- const { handleContextMenu } = debugVariablesModelService;
86
- // 空白区域右键菜单
87
- handleContextMenu(ev);
88
- };
89
-
90
- const handleOuterClick = (ev: React.MouseEvent) => {
91
- // 空白区域点击,取消焦点状态
92
- const { enactiveNodeDecoration } = debugVariablesModelService;
93
- enactiveNodeDecoration();
94
- };
95
-
96
- const handleOuterBlur = (ev: React.FocusEvent) => {
97
- // 空白区域点击,取消焦点状态
98
- const { enactiveNodeDecoration } = debugVariablesModelService;
99
- enactiveNodeDecoration();
100
- };
101
-
102
- const renderVariableNode = React.useCallback(
103
- (props: INodeRendererWrapProps) => {
104
- const decorations = debugVariablesModelService.decorations.getDecorations(props.item as any);
105
- return (
106
- <DebugVariableRenderedNode
107
- item={props.item}
108
- itemType={props.itemType}
109
- decorations={decorations}
110
- onClick={handleTwistierClick}
111
- onTwistierClick={handleTwistierClick}
112
- onContextMenu={handlerContextMenu}
113
- defaultLeftPadding={0}
114
- leftPadding={8}
115
- />
116
- );
117
- },
118
- [model],
119
- );
120
-
121
- const renderContent = () => {
122
- if (!model) {
123
- return <span></span>;
124
- } else {
125
- return (
126
- <RecycleTree
127
- height={height}
128
- width={width}
129
- itemHeight={DEBUG_VARIABLE_ITEM_HEIGHT}
130
- onReady={handleTreeReady}
131
- model={model!}
132
- placeholder={() => <span></span>}
133
- overflow={'auto'}
134
- >
135
- {renderVariableNode}
136
- </RecycleTree>
137
- );
138
- }
139
- };
140
-
141
- return (
142
- <div
143
- className={styles.debug_variables_container}
144
- tabIndex={-1}
145
- ref={wrapperRef}
146
- onContextMenu={handleOuterContextMenu}
147
- onClick={handleOuterClick}
148
- onBlur={handleOuterBlur}
149
- data-name={DEBUG_VARIABLE_TREE_FIELD_NAME}
150
- >
151
- {renderContent()}
152
- </div>
153
- );
154
- });
155
-
156
- export interface IDebugVariableNodeProps {
157
- item: any;
158
- defaultLeftPadding?: number;
159
- leftPadding?: number;
160
- decorations?: ClasslistComposite;
161
- onClick: (ev: React.MouseEvent, item: ExpressionNode | ExpressionContainer, type: TreeNodeType) => void;
162
- onTwistierClick: (ev: React.MouseEvent, item: ExpressionNode | ExpressionContainer, type: TreeNodeType) => void;
163
- onContextMenu?: (
164
- ev: React.MouseEvent,
165
- item: DebugScope | DebugVariableContainer | DebugVariable | undefined,
166
- type: TreeNodeType,
167
- ) => void;
168
- }
169
-
170
- export type IDebugVariableNodeRenderedProps = IDebugVariableNodeProps & INodeRendererProps;
171
-
172
- export const DebugVariableRenderedNode: React.FC<IDebugVariableNodeRenderedProps> = ({
173
- item,
174
- decorations,
175
- defaultLeftPadding,
176
- leftPadding,
177
- onClick,
178
- onTwistierClick,
179
- onContextMenu,
180
- itemType,
181
- }: IDebugVariableNodeRenderedProps) => {
182
- const handleClick = (ev: React.MouseEvent) => {
183
- onClick(ev, item, CompositeTreeNode.is(item) ? TreeNodeType.CompositeTreeNode : TreeNodeType.TreeNode);
184
- };
185
-
186
- const handleContextMenu = (ev: React.MouseEvent) => {
187
- if (ev.nativeEvent.which === 0) {
188
- return;
189
- }
190
- if (itemType === TreeNodeType.TreeNode || itemType === TreeNodeType.CompositeTreeNode) {
191
- onContextMenu && onContextMenu(ev, item, itemType);
192
- }
193
- };
194
-
195
- const paddingLeft = `${
196
- (defaultLeftPadding || 8) + (item.depth || 0) * (leftPadding || 0) + (ExpressionContainer.is(item) ? 0 : 16)
197
- }px`;
198
-
199
- const editorNodeStyle = {
200
- height: DEBUG_VARIABLE_TREE_NODE_HEIGHT,
201
- lineHeight: `${DEBUG_VARIABLE_TREE_NODE_HEIGHT}px`,
202
- paddingLeft,
203
- } as React.CSSProperties;
204
-
205
- const renderDisplayName = (node: ExpressionContainer | ExpressionNode) => (
206
- <div
207
- className={cls(
208
- styles.debug_variables_node_segment,
209
- styles.debug_variables_node_displayname,
210
- styles.debug_variables_variable,
211
- (node as DebugVariable).description ? styles.name : '',
212
- )}
213
- >
214
- {node.displayName}
215
- {(node as DebugVariable).description ? ':' : ''}
216
- </div>
217
- );
218
-
219
- const renderDescription = (node: ExpressionContainer | ExpressionNode) => {
220
- const booleanRegex = /^true|false$/i;
221
- const stringRegex = /^(['"]).*\1$/;
222
- const description = (node as DebugVariableContainer).description
223
- ? (node as DebugVariableContainer).description.replace('function', 'ƒ ')
224
- : '';
225
- const addonClass = [styles.debug_variables_variable];
226
- if (item.variableType === 'number' || item.variableType === 'boolean' || item.variableType === 'string') {
227
- addonClass.push(styles[item.variableType]);
228
- } else if (!isNaN(+description)) {
229
- addonClass.push(styles.number);
230
- } else if (booleanRegex.test(description)) {
231
- addonClass.push(styles.boolean);
232
- } else if (stringRegex.test(description)) {
233
- addonClass.push(styles.string);
234
- }
235
- return (
236
- <div
237
- className={cls(
238
- styles.debug_variables_node_segment_grow,
239
- styles.debug_variables_node_description,
240
- ...addonClass,
241
- )}
242
- >
243
- {description}
244
- </div>
245
- );
246
- };
247
-
248
- const renderStatusTail = () => (
249
- <div className={cls(styles.debug_variables_node_segment, styles.debug_variables_node_tail)}>{renderBadge()}</div>
250
- );
251
-
252
- const renderBadge = () => <div className={styles.debug_variables_node_status}>{item.badge}</div>;
253
-
254
- const renderToggle = (node: ExpressionContainer, clickHandler: any) => {
255
- const handleTwiceClick = (ev: React.MouseEvent) => {
256
- clickHandler(ev, node, itemType);
257
- };
258
- if (decorations && decorations?.classlist.indexOf(styles.mod_loading) > -1) {
259
- return (
260
- <div className={cls(styles.debug_variables_node_segment, styles.expansion_toggle)}>
261
- <Loading />
262
- </div>
263
- );
264
- }
265
- return (
266
- <div
267
- onClick={handleTwiceClick}
268
- className={cls(styles.debug_variables_node_segment, styles.expansion_toggle, getIcon('right'), {
269
- [`${styles.mod_collapsed}`]: !(node as ExpressionContainer).expanded,
270
- })}
271
- />
272
- );
273
- };
274
-
275
- const renderTwice = (item) => {
276
- if (CompositeTreeNode.is(item)) {
277
- return renderToggle(item as ExpressionContainer, onTwistierClick);
278
- }
279
- };
280
-
281
- return (
282
- <div
283
- key={item.id}
284
- onClick={handleClick}
285
- onContextMenu={handleContextMenu}
286
- title={item.description || ''}
287
- className={cls(styles.debug_variables_node, decorations ? decorations.classlist : null)}
288
- style={editorNodeStyle}
289
- data-id={item.id}
290
- >
291
- <div className={cls(styles.debug_variables_node_content)}>
292
- {renderTwice(item)}
293
- <div className={styles.debug_variables_node_overflow_wrap}>
294
- {renderDisplayName(item)}
295
- {renderDescription(item)}
296
- </div>
297
- {renderStatusTail()}
298
- </div>
299
- </div>
300
- );
301
- };
302
-
303
- export const DEBUG_VARIABLE_TREE_NODE_HEIGHT = 22;
@@ -1,38 +0,0 @@
1
- import { Injectable, Optional } from '@opensumi/di';
2
- import { TreeModel, TreeNodeEvent, CompositeTreeNode } from '@opensumi/ide-components';
3
- import { ThrottledDelayer, Emitter, Event } from '@opensumi/ide-core-browser';
4
-
5
- import { ExpressionContainer } from '../../tree/debug-tree-node.define';
6
-
7
- @Injectable({ multiple: true })
8
- export class DebugWatchModel extends TreeModel {
9
- static DEFAULT_FLUSH_DELAY = 100;
10
-
11
- private flushDispatchChangeDelayer = new ThrottledDelayer<void>(DebugWatchModel.DEFAULT_FLUSH_DELAY);
12
- private onWillUpdateEmitter: Emitter<void> = new Emitter();
13
-
14
- constructor(@Optional() root: ExpressionContainer) {
15
- super();
16
- this.init(root);
17
- }
18
-
19
- get onWillUpdate(): Event<void> {
20
- return this.onWillUpdateEmitter.event;
21
- }
22
-
23
- init(root: CompositeTreeNode) {
24
- this.root = root;
25
- // 分支更新时通知树刷新, 不是立即更新,而是延迟更新,待树稳定后再更新
26
- // 100ms的延迟并不能保证树稳定,特别是在node_modules展开的情况下
27
- // 但在普通使用上已经足够可用,即不会有渲染闪烁问题
28
- this.root.watcher.on(TreeNodeEvent.BranchDidUpdate, () => {
29
- if (!this.flushDispatchChangeDelayer.isTriggered()) {
30
- this.flushDispatchChangeDelayer.cancel();
31
- }
32
- this.flushDispatchChangeDelayer.trigger(async () => {
33
- await this.onWillUpdateEmitter.fireAndAwait();
34
- this.dispatchChange();
35
- });
36
- });
37
- }
38
- }