@@ -86,7 +86,13 @@ export abstract class AbstractMarkdownElementContainer extends AbstractMarkdownE
86
86
}
87
87
88
88
createCallout ( title : string , type : string , args : string = '' ) : CalloutElement {
89
- const element = new CalloutElement ( title , type , args ) ;
89
+ const element = new CalloutElement ( title , type , args , false , false ) ;
90
+ this . addElement ( element ) ;
91
+ return element ;
92
+ }
93
+
94
+ createCollapsibleCallout ( title : string , type : string , args : string = '' , collapsed : boolean = false ) : CalloutElement {
95
+ const element = new CalloutElement ( title , type , args , true , collapsed ) ;
90
96
this . addElement ( element ) ;
91
97
return element ;
92
98
}
@@ -338,21 +344,37 @@ export class CalloutElement extends AbstractMarkdownElementContainer {
338
344
title : string ;
339
345
type : string ;
340
346
args : string ;
347
+ collapsible : boolean ;
348
+ collapsed : boolean ;
341
349
342
- constructor ( title : string , type : string , args : string ) {
350
+ constructor ( title : string , type : string , args : string , collapsible : boolean = false , collapsed : boolean = false ) {
343
351
super ( ) ;
344
352
345
353
this . title = title ;
346
354
this . type = type ;
347
355
this . args = args ;
356
+ this . collapsible = collapsible ;
357
+ this . collapsed = collapsed ;
348
358
}
349
359
350
360
public allowElement ( _ : AbstractMarkdownElement ) : boolean {
351
361
return true ;
352
362
}
353
363
354
364
public toString ( ) : string {
355
- return `> [!${ this . type } |${ this . args } ] ${ this . title } ` + `\n> ` + this . markdownElements . map ( x => x . toString ( ) . replaceAll ( '\n' , '\n> ' ) ) . join ( '\n> \n> ' ) ;
365
+ return (
366
+ `> [!${ this . type } |${ this . args } ]${ this . collapseChar ( ) } ${ this . title } ` +
367
+ `\n> ` +
368
+ this . markdownElements . map ( x => x . toString ( ) . replaceAll ( '\n' , '\n> ' ) ) . join ( '\n> \n> ' )
369
+ ) ;
370
+ }
371
+
372
+ private collapseChar ( ) : string {
373
+ if ( this . collapsible ) {
374
+ return this . collapsed ? '-' : '+' ;
375
+ } else {
376
+ return '' ;
377
+ }
356
378
}
357
379
}
358
380
0 commit comments