@@ -50,6 +50,7 @@ import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding';
50
50
import { AccessibilityVerbositySettingId } from 'vs/workbench/contrib/accessibility/browser/accessibilityContribution' ;
51
51
import { assertType } from 'vs/base/common/types' ;
52
52
import { renderLabelWithIcons } from 'vs/base/browser/ui/iconLabel/iconLabels' ;
53
+ import { ExpansionState } from 'vs/workbench/contrib/interactiveEditor/browser/interactiveEditorSession' ;
53
54
import { IdleValue } from 'vs/base/common/async' ;
54
55
55
56
const defaultAriaLabel = localize ( 'aria-label' , "Interactive Editor Input" ) ;
@@ -118,6 +119,9 @@ export interface InteractiveEditorWidgetViewState {
118
119
placeholder : string ;
119
120
}
120
121
122
+ const MESSAGE_CROPPED_NUMBER_LINES = 3 ;
123
+ const MESSAGE_EXPANDED_NUMBER_LINES = 10 ;
124
+
121
125
export class InteractiveEditorWidget {
122
126
123
127
private static _modelPool : number = 1 ;
@@ -179,6 +183,8 @@ export class InteractiveEditorWidget {
179
183
180
184
private _lastDim : Dimension | undefined ;
181
185
private _isLayouting : boolean = false ;
186
+ private _preferredExpansionState : ExpansionState | undefined ;
187
+ private _expansionState : ExpansionState = ExpansionState . NOT_CROPPED ;
182
188
183
189
constructor (
184
190
parentEditor : ICodeEditor ,
@@ -437,23 +443,49 @@ export class InteractiveEditorWidget {
437
443
this . _onDidChangeHeight . fire ( ) ;
438
444
}
439
445
446
+ get expansionState ( ) : ExpansionState {
447
+ return this . _expansionState ;
448
+ }
449
+
450
+ set preferredExpansionState ( expansionState : ExpansionState | undefined ) {
451
+ this . _preferredExpansionState = expansionState ;
452
+ }
453
+
440
454
updateMarkdownMessage ( message : Node | undefined ) {
441
455
this . _elements . markdownMessage . classList . toggle ( 'hidden' , ! message ) ;
456
+ let expansionState : ExpansionState ;
442
457
if ( ! message ) {
443
- this . _ctxMessageCropState . reset ( ) ;
444
458
reset ( this . _elements . message ) ;
459
+ this . _ctxMessageCropState . reset ( ) ;
460
+ expansionState = ExpansionState . NOT_CROPPED ;
445
461
446
462
} else {
447
- reset ( this . _elements . message , message ) ;
448
- if ( this . _elements . message . scrollHeight > this . _elements . message . clientHeight ) {
449
- this . _ctxMessageCropState . set ( 'cropped' ) ;
463
+ if ( this . _preferredExpansionState ) {
464
+ reset ( this . _elements . message , message ) ;
465
+ expansionState = this . _preferredExpansionState ;
466
+ this . _preferredExpansionState = undefined ;
450
467
} else {
451
- this . _ctxMessageCropState . set ( 'not_cropped' ) ;
468
+ this . _elements . message . style . webkitLineClamp = MESSAGE_CROPPED_NUMBER_LINES . toString ( ) ;
469
+ reset ( this . _elements . message , message ) ;
470
+ expansionState = this . _elements . message . scrollHeight > this . _elements . message . clientHeight ? ExpansionState . CROPPED : ExpansionState . NOT_CROPPED ;
452
471
}
472
+ this . _ctxMessageCropState . set ( expansionState ) ;
473
+ this . updateLineClamp ( expansionState ) ;
453
474
}
475
+ this . _expansionState = expansionState ;
454
476
this . _onDidChangeHeight . fire ( ) ;
455
477
}
456
478
479
+ updateMarkdownMessageExpansionState ( expansionState : ExpansionState ) {
480
+ this . _ctxMessageCropState . set ( expansionState ) ;
481
+ this . updateLineClamp ( expansionState ) ;
482
+ this . _onDidChangeHeight . fire ( ) ;
483
+ }
484
+
485
+ updateLineClamp ( expansionState : ExpansionState ) {
486
+ this . _elements . message . style . webkitLineClamp = expansionState === ExpansionState . NOT_CROPPED ? 'none' : ( expansionState === ExpansionState . EXPANDED ? MESSAGE_EXPANDED_NUMBER_LINES . toString ( ) : MESSAGE_CROPPED_NUMBER_LINES . toString ( ) ) ;
487
+ }
488
+
457
489
updateInfo ( message : string ) : void {
458
490
this . _elements . infoLabel . classList . toggle ( 'hidden' , ! message ) ;
459
491
this . _elements . infoLabel . innerText = message ;
@@ -502,12 +534,6 @@ export class InteractiveEditorWidget {
502
534
this . _inputEditor . focus ( ) ;
503
535
}
504
536
505
- updateMarkdownMessageExpansionState ( expand : boolean ) {
506
- this . _ctxMessageCropState . set ( expand ? 'expanded' : 'cropped' ) ;
507
- this . _elements . message . style . webkitLineClamp = expand ? '10' : '3' ;
508
- this . _onDidChangeHeight . fire ( ) ;
509
- }
510
-
511
537
// --- preview
512
538
513
539
showEditsPreview ( textModelv0 : ITextModel , edits : ISingleEditOperation [ ] , changes : LineRangeMapping [ ] ) {
0 commit comments