@opensumi/ide-ai-native 3.7.1 → 3.7.2-next-1739848467.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.
Files changed (167) hide show
  1. package/lib/browser/ai-core.contextkeys.d.ts +1 -0
  2. package/lib/browser/ai-core.contextkeys.d.ts.map +1 -1
  3. package/lib/browser/ai-core.contextkeys.js +1 -0
  4. package/lib/browser/ai-core.contextkeys.js.map +1 -1
  5. package/lib/browser/ai-core.contribution.d.ts +2 -1
  6. package/lib/browser/ai-core.contribution.d.ts.map +1 -1
  7. package/lib/browser/ai-core.contribution.js +60 -15
  8. package/lib/browser/ai-core.contribution.js.map +1 -1
  9. package/lib/browser/components/ChatMarkdown.d.ts.map +1 -1
  10. package/lib/browser/components/ChatMarkdown.js.map +1 -1
  11. package/lib/browser/components/WelcomeMsg.js.map +1 -1
  12. package/lib/browser/components/utils.d.ts +2 -2
  13. package/lib/browser/contrib/intelligent-completions/index.d.ts +14 -9
  14. package/lib/browser/contrib/intelligent-completions/index.d.ts.map +1 -1
  15. package/lib/browser/contrib/intelligent-completions/index.js +6 -1
  16. package/lib/browser/contrib/intelligent-completions/index.js.map +1 -1
  17. package/lib/browser/contrib/intelligent-completions/intelligent-completions.contribution.d.ts +1 -0
  18. package/lib/browser/contrib/intelligent-completions/intelligent-completions.contribution.d.ts.map +1 -1
  19. package/lib/browser/contrib/intelligent-completions/intelligent-completions.contribution.js +26 -4
  20. package/lib/browser/contrib/intelligent-completions/intelligent-completions.contribution.js.map +1 -1
  21. package/lib/browser/contrib/intelligent-completions/intelligent-completions.controller.d.ts +6 -5
  22. package/lib/browser/contrib/intelligent-completions/intelligent-completions.controller.d.ts.map +1 -1
  23. package/lib/browser/contrib/intelligent-completions/intelligent-completions.controller.js +50 -42
  24. package/lib/browser/contrib/intelligent-completions/intelligent-completions.controller.js.map +1 -1
  25. package/lib/browser/contrib/intelligent-completions/intelligent-completions.feature.registry.d.ts +4 -0
  26. package/lib/browser/contrib/intelligent-completions/intelligent-completions.feature.registry.d.ts.map +1 -1
  27. package/lib/browser/contrib/intelligent-completions/intelligent-completions.feature.registry.js +7 -0
  28. package/lib/browser/contrib/intelligent-completions/intelligent-completions.feature.registry.js.map +1 -1
  29. package/lib/browser/contrib/intelligent-completions/source/base.d.ts +9 -3
  30. package/lib/browser/contrib/intelligent-completions/source/base.d.ts.map +1 -1
  31. package/lib/browser/contrib/intelligent-completions/source/base.js +21 -3
  32. package/lib/browser/contrib/intelligent-completions/source/base.js.map +1 -1
  33. package/lib/browser/contrib/intelligent-completions/source/line-change.source.d.ts +10 -3
  34. package/lib/browser/contrib/intelligent-completions/source/line-change.source.d.ts.map +1 -1
  35. package/lib/browser/contrib/intelligent-completions/source/line-change.source.js +95 -22
  36. package/lib/browser/contrib/intelligent-completions/source/line-change.source.js.map +1 -1
  37. package/lib/browser/contrib/intelligent-completions/source/lint-error.source.d.ts +1 -3
  38. package/lib/browser/contrib/intelligent-completions/source/lint-error.source.d.ts.map +1 -1
  39. package/lib/browser/contrib/intelligent-completions/source/lint-error.source.js +13 -20
  40. package/lib/browser/contrib/intelligent-completions/source/lint-error.source.js.map +1 -1
  41. package/lib/browser/contrib/intelligent-completions/source/typing.source.d.ts +9 -0
  42. package/lib/browser/contrib/intelligent-completions/source/typing.source.d.ts.map +1 -0
  43. package/lib/browser/contrib/intelligent-completions/source/typing.source.js +36 -0
  44. package/lib/browser/contrib/intelligent-completions/source/typing.source.js.map +1 -0
  45. package/lib/browser/contrib/terminal/component/terminal-command-suggest-controller.js +2 -2
  46. package/lib/browser/contrib/terminal/component/terminal-command-suggest-controller.js.map +1 -1
  47. package/lib/browser/index.js +1 -1
  48. package/lib/browser/index.js.map +1 -1
  49. package/lib/browser/languages/tree-sitter/wasm-manager.d.ts.map +1 -1
  50. package/lib/browser/languages/tree-sitter/wasm-manager.js +14 -2
  51. package/lib/browser/languages/tree-sitter/wasm-manager.js.map +1 -1
  52. package/lib/browser/layout/ai-layout.d.ts.map +1 -1
  53. package/lib/browser/layout/ai-layout.js +2 -2
  54. package/lib/browser/layout/ai-layout.js.map +1 -1
  55. package/lib/browser/layout/layout.module.less +9 -9
  56. package/lib/browser/layout/tabbar.view.d.ts.map +1 -1
  57. package/lib/browser/layout/tabbar.view.js +5 -6
  58. package/lib/browser/layout/tabbar.view.js.map +1 -1
  59. package/lib/browser/model/enhanceDecorationsCollection.d.ts +14 -10
  60. package/lib/browser/model/enhanceDecorationsCollection.d.ts.map +1 -1
  61. package/lib/browser/model/enhanceDecorationsCollection.js +42 -53
  62. package/lib/browser/model/enhanceDecorationsCollection.js.map +1 -1
  63. package/lib/browser/preferences/schema.d.ts.map +1 -1
  64. package/lib/browser/preferences/schema.js +4 -0
  65. package/lib/browser/preferences/schema.js.map +1 -1
  66. package/lib/browser/types.d.ts +25 -4
  67. package/lib/browser/types.d.ts.map +1 -1
  68. package/lib/browser/types.js.map +1 -1
  69. package/lib/browser/widget/inline-chat/inline-chat-editor.controller.d.ts +2 -1
  70. package/lib/browser/widget/inline-chat/inline-chat-editor.controller.d.ts.map +1 -1
  71. package/lib/browser/widget/inline-chat/inline-chat-editor.controller.js +21 -49
  72. package/lib/browser/widget/inline-chat/inline-chat-editor.controller.js.map +1 -1
  73. package/lib/browser/widget/inline-chat/inline-chat.feature.registry.d.ts +3 -13
  74. package/lib/browser/widget/inline-chat/inline-chat.feature.registry.d.ts.map +1 -1
  75. package/lib/browser/widget/inline-chat/inline-chat.feature.registry.js +24 -72
  76. package/lib/browser/widget/inline-chat/inline-chat.feature.registry.js.map +1 -1
  77. package/lib/browser/widget/inline-chat/inline-chat.service.d.ts +1 -6
  78. package/lib/browser/widget/inline-chat/inline-chat.service.d.ts.map +1 -1
  79. package/lib/browser/widget/inline-chat/inline-chat.service.js +5 -17
  80. package/lib/browser/widget/inline-chat/inline-chat.service.js.map +1 -1
  81. package/lib/browser/widget/inline-chat/inline-content-widget.d.ts +2 -5
  82. package/lib/browser/widget/inline-chat/inline-content-widget.d.ts.map +1 -1
  83. package/lib/browser/widget/inline-chat/inline-content-widget.js +17 -42
  84. package/lib/browser/widget/inline-chat/inline-content-widget.js.map +1 -1
  85. package/lib/browser/widget/inline-diff/inline-diff-previewer.d.ts +22 -5
  86. package/lib/browser/widget/inline-diff/inline-diff-previewer.d.ts.map +1 -1
  87. package/lib/browser/widget/inline-diff/inline-diff-previewer.js +61 -30
  88. package/lib/browser/widget/inline-diff/inline-diff-previewer.js.map +1 -1
  89. package/lib/browser/widget/inline-diff/inline-diff.controller.d.ts +8 -12
  90. package/lib/browser/widget/inline-diff/inline-diff.controller.d.ts.map +1 -1
  91. package/lib/browser/widget/inline-diff/inline-diff.controller.js +68 -96
  92. package/lib/browser/widget/inline-diff/inline-diff.controller.js.map +1 -1
  93. package/lib/browser/widget/inline-hint/inline-hint.controller.d.ts +0 -1
  94. package/lib/browser/widget/inline-hint/inline-hint.controller.d.ts.map +1 -1
  95. package/lib/browser/widget/inline-hint/inline-hint.controller.js +0 -5
  96. package/lib/browser/widget/inline-hint/inline-hint.controller.js.map +1 -1
  97. package/lib/browser/widget/inline-input/inline-input-widget.d.ts +12 -2
  98. package/lib/browser/widget/inline-input/inline-input-widget.d.ts.map +1 -1
  99. package/lib/browser/widget/inline-input/inline-input-widget.js +26 -18
  100. package/lib/browser/widget/inline-input/inline-input-widget.js.map +1 -1
  101. package/lib/browser/widget/inline-input/inline-input.controller.d.ts +14 -5
  102. package/lib/browser/widget/inline-input/inline-input.controller.d.ts.map +1 -1
  103. package/lib/browser/widget/inline-input/inline-input.controller.js +321 -165
  104. package/lib/browser/widget/inline-input/inline-input.controller.js.map +1 -1
  105. package/lib/browser/widget/inline-input/inline-input.module.less +4 -0
  106. package/lib/browser/widget/inline-input/inline-input.service.d.ts +19 -7
  107. package/lib/browser/widget/inline-input/inline-input.service.d.ts.map +1 -1
  108. package/lib/browser/widget/inline-input/inline-input.service.js +72 -12
  109. package/lib/browser/widget/inline-input/inline-input.service.js.map +1 -1
  110. package/lib/browser/widget/inline-input/model.d.ts +34 -0
  111. package/lib/browser/widget/inline-input/model.d.ts.map +1 -0
  112. package/lib/browser/widget/inline-input/model.js +63 -0
  113. package/lib/browser/widget/inline-input/model.js.map +1 -0
  114. package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.d.ts +8 -19
  115. package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.d.ts.map +1 -1
  116. package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.js +44 -39
  117. package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.js.map +1 -1
  118. package/lib/browser/widget/inline-stream-diff/live-preview.component.d.ts +17 -4
  119. package/lib/browser/widget/inline-stream-diff/live-preview.component.d.ts.map +1 -1
  120. package/lib/browser/widget/inline-stream-diff/live-preview.component.js +37 -5
  121. package/lib/browser/widget/inline-stream-diff/live-preview.component.js.map +1 -1
  122. package/lib/browser/widget/inline-stream-diff/live-preview.decoration.d.ts +7 -11
  123. package/lib/browser/widget/inline-stream-diff/live-preview.decoration.d.ts.map +1 -1
  124. package/lib/browser/widget/inline-stream-diff/live-preview.decoration.js +33 -77
  125. package/lib/browser/widget/inline-stream-diff/live-preview.decoration.js.map +1 -1
  126. package/lib/common/utils.js +2 -2
  127. package/lib/common/utils.js.map +1 -1
  128. package/package.json +21 -21
  129. package/src/browser/ai-core.contextkeys.ts +3 -0
  130. package/src/browser/ai-core.contribution.ts +68 -17
  131. package/src/browser/components/ChatMarkdown.tsx +1 -1
  132. package/src/browser/components/WelcomeMsg.tsx +1 -1
  133. package/src/browser/contrib/intelligent-completions/index.ts +16 -4
  134. package/src/browser/contrib/intelligent-completions/intelligent-completions.contribution.ts +29 -8
  135. package/src/browser/contrib/intelligent-completions/intelligent-completions.controller.ts +88 -58
  136. package/src/browser/contrib/intelligent-completions/intelligent-completions.feature.registry.ts +11 -0
  137. package/src/browser/contrib/intelligent-completions/source/base.ts +28 -7
  138. package/src/browser/contrib/intelligent-completions/source/line-change.source.ts +129 -22
  139. package/src/browser/contrib/intelligent-completions/source/lint-error.source.ts +19 -31
  140. package/src/browser/contrib/intelligent-completions/source/typing.source.ts +34 -0
  141. package/src/browser/contrib/terminal/component/terminal-command-suggest-controller.tsx +1 -1
  142. package/src/browser/index.ts +2 -2
  143. package/src/browser/languages/tree-sitter/wasm-manager.ts +12 -2
  144. package/src/browser/layout/ai-layout.tsx +5 -2
  145. package/src/browser/layout/layout.module.less +9 -9
  146. package/src/browser/layout/tabbar.view.tsx +10 -8
  147. package/src/browser/model/enhanceDecorationsCollection.ts +62 -77
  148. package/src/browser/preferences/schema.ts +4 -0
  149. package/src/browser/types.ts +40 -5
  150. package/src/browser/widget/inline-chat/inline-chat-editor.controller.ts +30 -65
  151. package/src/browser/widget/inline-chat/inline-chat.feature.registry.ts +23 -90
  152. package/src/browser/widget/inline-chat/inline-chat.service.ts +2 -17
  153. package/src/browser/widget/inline-chat/inline-content-widget.tsx +14 -69
  154. package/src/browser/widget/inline-diff/inline-diff-previewer.ts +87 -32
  155. package/src/browser/widget/inline-diff/inline-diff.controller.ts +90 -114
  156. package/src/browser/widget/inline-hint/inline-hint.controller.ts +1 -7
  157. package/src/browser/widget/inline-input/inline-input-widget.tsx +34 -12
  158. package/src/browser/widget/inline-input/inline-input.controller.ts +454 -242
  159. package/src/browser/widget/inline-input/inline-input.module.less +4 -0
  160. package/src/browser/widget/inline-input/inline-input.service.ts +92 -13
  161. package/src/browser/widget/inline-input/model.ts +74 -0
  162. package/src/browser/widget/inline-stream-diff/inline-stream-diff.handler.tsx +54 -67
  163. package/src/browser/widget/inline-stream-diff/live-preview.component.tsx +45 -6
  164. package/src/browser/widget/inline-stream-diff/live-preview.decoration.tsx +40 -112
  165. package/src/common/utils.ts +2 -2
  166. package/lib/browser/model/styles.module.less +0 -7
  167. package/src/browser/model/styles.module.less +0 -7
@@ -15,18 +15,10 @@ import { StandaloneServices } from '@opensumi/ide-monaco/lib/browser/monaco-api/
15
15
  import { EditOperation } from '@opensumi/monaco-editor-core/esm/vs/editor/common/core/editOperation';
16
16
  import { LineRange } from '@opensumi/monaco-editor-core/esm/vs/editor/common/core/lineRange';
17
17
  import { ModelDecorationOptions } from '@opensumi/monaco-editor-core/esm/vs/editor/common/model/textModel';
18
- import {
19
- IUndoRedoService,
20
- ResourceEditStackSnapshot,
21
- UndoRedoGroup,
22
- } from '@opensumi/monaco-editor-core/esm/vs/platform/undoRedo/common/undoRedo';
18
+ import { IUndoRedoService, UndoRedoGroup } from '@opensumi/monaco-editor-core/esm/vs/platform/undoRedo/common/undoRedo';
23
19
 
24
20
  import { AINativeContextKey } from '../../ai-core.contextkeys';
25
- import {
26
- EnhanceDecorationsCollection,
27
- IDecorationSerializableState,
28
- IEnhanceModelDeltaDecoration,
29
- } from '../../model/enhanceDecorationsCollection';
21
+ import { IDecorationSerializableState, IEnhanceModelDeltaDecoration } from '../../model/enhanceDecorationsCollection';
30
22
  import { InlineDiffService } from '../inline-diff';
31
23
 
32
24
  import styles from './inline-stream-diff.module.less';
@@ -36,6 +28,7 @@ import {
36
28
  AcceptPartialEditWidget,
37
29
  ActiveLineDecoration,
38
30
  AddedRangeDecoration,
31
+ AddedRangeDecorationsCollection,
39
32
  EPartialEdit,
40
33
  IPartialEditEvent,
41
34
  IPartialEditWidgetOptions,
@@ -46,14 +39,6 @@ import {
46
39
  RemovedZoneWidget,
47
40
  } from './live-preview.component';
48
41
 
49
- export interface ILivePreviewDiffDecorationSnapshotData {
50
- addedDecList: IEnhanceModelDeltaDecoration[];
51
- partialEditWidgetList: AcceptPartialEditWidget[];
52
- removedWidgetList: RemovedZoneWidget[];
53
- editStackSnapshot: ResourceEditStackSnapshot;
54
- zone: LineRange;
55
- }
56
-
57
42
  export interface ITotalCodeInfo {
58
43
  totalAddedLinesCount: number;
59
44
  totalDeletedLinesCount: number;
@@ -97,8 +82,7 @@ export class LivePreviewDiffDecorationModel extends Disposable {
97
82
 
98
83
  protected model: ITextModel;
99
84
 
100
- // Parts that require snapshots
101
- private addedRangeDec: EnhanceDecorationsCollection;
85
+ private addedRangeDec: AddedRangeDecorationsCollection;
102
86
  private partialEditWidgetList: AcceptPartialEditWidget[] = [];
103
87
  private removedZoneWidgets: RemovedZoneWidget[] = [];
104
88
  private zone: LineRange;
@@ -108,12 +92,11 @@ export class LivePreviewDiffDecorationModel extends Disposable {
108
92
  this.model = this.monacoEditor.getModel()!;
109
93
 
110
94
  this.undoRedoService = StandaloneServices.get(IUndoRedoService);
95
+ this.aiNativeContextKey = this.injector.get(AINativeContextKey, [this.monacoEditor.contextKeyService]);
111
96
 
112
97
  this.activeLineDec = this.monacoEditor.createDecorationsCollection();
113
98
  this.pendingRangeDec = this.monacoEditor.createDecorationsCollection();
114
99
 
115
- this.aiNativeContextKey = this.injector.get(AINativeContextKey, [this.monacoEditor.contextKeyService]);
116
-
117
100
  this.addDispose(
118
101
  this.inlineStreamDiffService.onAcceptDiscardPartialEdit((isAccept) => {
119
102
  const currentPosition = this.monacoEditor.getPosition()!;
@@ -139,13 +122,13 @@ export class LivePreviewDiffDecorationModel extends Disposable {
139
122
  }),
140
123
  );
141
124
 
142
- this.addedRangeDec = new EnhanceDecorationsCollection(this.monacoEditor);
125
+ this.addedRangeDec = new AddedRangeDecorationsCollection(this.monacoEditor);
143
126
  this.addDispose(
144
127
  this.addedRangeDec.onDidDecorationsChange((newAddedRangeDec) => {
145
128
  const inlineDiffPartialEditsIsVisible = this.aiNativeContextKey.inlineDiffPartialEditsIsVisible.get();
146
129
  if (inlineDiffPartialEditsIsVisible) {
147
130
  this.partialEditWidgetList.forEach((widget) => {
148
- const addedWidget = newAddedRangeDec.find((a) => widget.getDecorationId() === a.id);
131
+ const addedWidget = newAddedRangeDec.find((a) => widget.getAddedRangeId() === a.id);
149
132
  if (addedWidget) {
150
133
  const range = addedWidget.getRange();
151
134
  /**
@@ -159,11 +142,7 @@ export class LivePreviewDiffDecorationModel extends Disposable {
159
142
  }),
160
143
  );
161
144
 
162
- this.addDispose(
163
- Disposable.create(() => {
164
- this.clear();
165
- }),
166
- );
145
+ this.addDispose(Disposable.create(() => this.clear()));
167
146
  }
168
147
 
169
148
  clear() {
@@ -174,82 +153,30 @@ export class LivePreviewDiffDecorationModel extends Disposable {
174
153
  this.clearPartialEditWidgetList();
175
154
  }
176
155
 
177
- initialize(zone: LineRange): void {
178
- this.updateZone(zone);
179
- }
156
+ hide() {
157
+ this.addedRangeDec.getDecorations().forEach((dec) => dec.hide());
158
+ this.partialEditWidgetList.forEach((widget) => widget.hide());
159
+ this.removedZoneWidgets.forEach((widget) => widget.hide());
180
160
 
181
- getRemovedWidgets(): RemovedZoneWidget[] {
182
- return this.removedZoneWidgets;
161
+ this.activeLineDec.clear();
162
+ this.pendingRangeDec.clear();
183
163
  }
184
164
 
185
- restoreSnapshot(snapshot: ILivePreviewDiffDecorationSnapshotData): void {
186
- const {
187
- addedDecList,
188
- removedWidgetList,
189
- zone,
190
- editStackSnapshot,
191
- partialEditWidgetList: snapshotPartialEditWidgetList,
192
- } = snapshot;
165
+ /**
166
+ * 仅恢复渲染 status 为 pending 的部件
167
+ */
168
+ resume() {
169
+ this.addedRangeDec.getDecorations().forEach((dec) => dec.status === 'pending' && dec.resume());
170
+ this.partialEditWidgetList.forEach((widget) => widget.status === 'pending' && widget.resume());
171
+ this.removedZoneWidgets.forEach((widget) => widget.status === 'pending' && widget.resume());
172
+ }
193
173
 
194
- // restore zone
174
+ initialize(zone: LineRange): void {
195
175
  this.updateZone(zone);
196
-
197
- // restore added
198
- this.addedRangeDec.set(addedDecList);
199
-
200
- // restore removed
201
- this.clearRemovedWidgets();
202
- removedWidgetList.forEach((widget) => {
203
- const position = widget.getLastPosition();
204
- if (position) {
205
- this.showRemovedWidgetByLineNumber(position.lineNumber, widget.textLines, {
206
- isHidden: widget.isHidden,
207
- recordPosition: widget.getLastPosition(),
208
- undoRedoGroup: widget.group,
209
- });
210
- }
211
- });
212
-
213
- // restore partial edit widget
214
- this.clearPartialEditWidgetList();
215
- snapshotPartialEditWidgetList.forEach((snapshotWidget) => {
216
- const lineNumber = snapshotWidget.getPosition()?.position?.lineNumber;
217
- if (lineNumber) {
218
- const newPartialEditWidget = this.createPartialEditWidget(lineNumber);
219
-
220
- if (snapshotWidget.status === 'accept') {
221
- newPartialEditWidget.accept(snapshotWidget.addedLinesCount, snapshotWidget.deletedLinesCount);
222
- } else if (snapshotWidget.status === 'discard') {
223
- newPartialEditWidget.discard(snapshotWidget.addedLinesCount, snapshotWidget.deletedLinesCount);
224
- }
225
-
226
- newPartialEditWidget.setGroup(snapshotWidget.group);
227
- this.partialEditWidgetList.push(newPartialEditWidget);
228
- }
229
- });
230
- this.firePartialEditWidgetList();
231
- this.recordPartialEditWidgetWithAddedDec();
232
-
233
- // restore undo/redo stack
234
- const uri = this.model.uri;
235
- this.undoRedoService.restoreSnapshot(editStackSnapshot);
236
- const elements = this.undoRedoService.getElements(uri);
237
- elements.future.concat(elements.past).forEach((node) => {
238
- if (node instanceof LivePreviewUndoRedoStackElement) {
239
- // 在每次 restore 的时候需要将当前的类重新指向到 undo/redo 的 stack 中
240
- node.attachModel(this);
241
- }
242
- });
243
176
  }
244
177
 
245
- createSnapshot(): ILivePreviewDiffDecorationSnapshotData {
246
- return {
247
- addedDecList: this.addedRangeDec.getDecorations(),
248
- partialEditWidgetList: this.partialEditWidgetList,
249
- removedWidgetList: this.removedZoneWidgets,
250
- editStackSnapshot: this.undoRedoService.createSnapshot(this.model.uri),
251
- zone: this.zone,
252
- };
178
+ getRemovedWidgets(): RemovedZoneWidget[] {
179
+ return this.removedZoneWidgets;
253
180
  }
254
181
 
255
182
  public showRemovedWidgetByLineNumber(
@@ -388,7 +315,7 @@ export class LivePreviewDiffDecorationModel extends Disposable {
388
315
  const findAddedRangeDecByGroup = (model: LivePreviewDiffDecorationModel) =>
389
316
  model.addedRangeDec.getDecorationByGroup(group);
390
317
 
391
- let modifyContent;
318
+ let modifyContent: string;
392
319
  const removeContent = removedWidget?.getRemovedTextLines().join('\n') || '';
393
320
  const range = addedDec?.getRange();
394
321
  if (range) {
@@ -411,10 +338,10 @@ export class LivePreviewDiffDecorationModel extends Disposable {
411
338
  });
412
339
  }
413
340
  const removedWidget = findRemovedWidgetByGroup(decorationModel);
414
- removedWidget?.hide();
341
+ removedWidget?.discard();
415
342
 
416
343
  const addedDec = findAddedRangeDecByGroup(decorationModel);
417
- addedDec?.hide();
344
+ addedDec?.discard();
418
345
 
419
346
  const partialEditWidget = findPartialWidgetByGroup(decorationModel);
420
347
  const operation = this.doDiscardPartialWidget(partialEditWidget!, addedDec, removedWidget);
@@ -422,7 +349,7 @@ export class LivePreviewDiffDecorationModel extends Disposable {
422
349
  return operation;
423
350
  };
424
351
 
425
- const accpet = (decorationModel: LivePreviewDiffDecorationModel) => {
352
+ const accept = (decorationModel: LivePreviewDiffDecorationModel) => {
426
353
  // 只有点击行采纳时才会上报
427
354
  if (isReport) {
428
355
  this.aiReporter.end(relationId, {
@@ -439,10 +366,10 @@ export class LivePreviewDiffDecorationModel extends Disposable {
439
366
  partialEditWidget?.accept(addedLinesCount, deletedLinesCount);
440
367
 
441
368
  const removedWidget = findRemovedWidgetByGroup(decorationModel);
442
- removedWidget?.hide();
369
+ removedWidget?.accept();
443
370
 
444
371
  const addedDec = findAddedRangeDecByGroup(decorationModel);
445
- addedDec?.hide();
372
+ addedDec?.accept();
446
373
  };
447
374
 
448
375
  const resume = (decorationModel: LivePreviewDiffDecorationModel) => {
@@ -458,7 +385,7 @@ export class LivePreviewDiffDecorationModel extends Disposable {
458
385
 
459
386
  switch (type) {
460
387
  case EPartialEdit.accept:
461
- accpet(this);
388
+ accept(this);
462
389
  if (isPushStack) {
463
390
  const stack = this.createEditStackElement(group);
464
391
  stack.attachModel(this);
@@ -466,7 +393,7 @@ export class LivePreviewDiffDecorationModel extends Disposable {
466
393
  resume(model);
467
394
  });
468
395
  stack.registerRedo((model: LivePreviewDiffDecorationModel) => {
469
- accpet(model);
396
+ accept(model);
470
397
  });
471
398
  }
472
399
  break;
@@ -515,8 +442,8 @@ export class LivePreviewDiffDecorationModel extends Disposable {
515
442
 
516
443
  private firePartialEditWidgetList(): void {
517
444
  this._onPartialEditWidgetListChange.fire(this.partialEditWidgetList);
518
- const visiableLists = this.partialEditWidgetList.filter((widget) => !widget.isHidden);
519
- this.aiNativeContextKey.inlineDiffPartialEditsIsVisible.set(visiableLists.length !== 0);
445
+ const visibleLists = this.partialEditWidgetList.filter((widget) => !widget.isHidden);
446
+ this.aiNativeContextKey.inlineDiffPartialEditsIsVisible.set(visibleLists.length !== 0);
520
447
  }
521
448
 
522
449
  public createEditStackElement(group: UndoRedoGroup): LivePreviewUndoRedoStackElement {
@@ -535,7 +462,7 @@ export class LivePreviewDiffDecorationModel extends Disposable {
535
462
  // 2. 删除 N 行 => N
536
463
  // 3. 新增 M 行,删除 N 行 => max(M, N)
537
464
  // 综上所述,变更行数 = sum(list.map(item => max(新增行数, 删除行数)))
538
- const resolvedStatus = caculate(partialEditWidgetList);
465
+ const resolvedStatus = calculate(partialEditWidgetList);
539
466
  const unresolvedStatus = { added: 0, deleted: 0, changed: 0 };
540
467
  partialEditWidgetList.forEach((v, idx) => {
541
468
  if (v.status === 'pending') {
@@ -558,7 +485,7 @@ export class LivePreviewDiffDecorationModel extends Disposable {
558
485
  unresolvedChangedLinesCount: unresolvedStatus.changed,
559
486
  };
560
487
 
561
- function caculate(list: AcceptPartialEditWidget[]) {
488
+ function calculate(list: AcceptPartialEditWidget[]) {
562
489
  const result = { added: 0, deleted: 0, changed: 0 };
563
490
  list.forEach((widget) => {
564
491
  const addedLinesCount = widget.addedLinesCount;
@@ -593,7 +520,7 @@ export class LivePreviewDiffDecorationModel extends Disposable {
593
520
  if (lineNumber) {
594
521
  const addedWidget = this.addedRangeDec.getDecorationByLineNumber(lineNumber);
595
522
  if (addedWidget) {
596
- widget.recordDecorationId(addedWidget.id);
523
+ widget.recordAddedRangeId(addedWidget.id);
597
524
  }
598
525
  }
599
526
  });
@@ -676,12 +603,13 @@ export class LivePreviewDiffDecorationModel extends Disposable {
676
603
  this.recordPartialEditWidgetWithAddedDec();
677
604
  }
678
605
 
679
- public touchRemovedWidget(states: IRemovedWidgetState[]) {
606
+ public touchRemovedWidget(states: IRemovedWidgetState[], cb?: () => void) {
680
607
  const run = () => {
681
608
  this.clearRemovedWidgets();
682
609
  states.forEach(({ textLines, position }) => {
683
610
  this.showRemovedWidgetByLineNumber(position.lineNumber, textLines, {});
684
611
  });
612
+ cb?.();
685
613
  };
686
614
 
687
615
  if (this.options.renderRemovedWidgetImmediately) {
@@ -32,10 +32,10 @@ export const extractCodeBlocks = (content: string): string => {
32
32
  let startLine = 0;
33
33
 
34
34
  lines.forEach((line, i) => {
35
- if (!inBlock && line.startsWith(BACK_QUOTE_3_SYMBOL)) {
35
+ if (!inBlock && line.trim().startsWith(BACK_QUOTE_3_SYMBOL)) {
36
36
  inBlock = true;
37
37
  startLine = i + 1;
38
- } else if (inBlock && line.startsWith(BACK_QUOTE_3_SYMBOL)) {
38
+ } else if (inBlock && line.trim().startsWith(BACK_QUOTE_3_SYMBOL)) {
39
39
  inBlock = false;
40
40
  const endLine = i;
41
41
  newContents = lines.slice(startLine, endLine);
@@ -1,7 +0,0 @@
1
- .hidden {
2
- visibility: hidden;
3
- }
4
-
5
- .visible {
6
- visibility: visible;
7
- }
@@ -1,7 +0,0 @@
1
- .hidden {
2
- visibility: hidden;
3
- }
4
-
5
- .visible {
6
- visibility: visible;
7
- }