import { IDocNodeParameters , DocNode } from '@microsoft/tsdoc' ; import { CustomDocNodeKind } from './CustomDocNodeKind' ; import { DocTableRow } from './DocTableRow' ; import { DocTableCell } from './DocTableCell' ; /**
 * Constructor parameters for  DocTable .
  export interface IDocTableParameters extends IDocNodeParameters { headerCells ? : ReadonlyArray < DocTableCell > ; headerTitles ? : string [ ] ; } /**
 * Represents table, similar to an HTML `<table>` element.
 */ export class DocTable extends DocNode { public readonly header : DocTableRow ; private _rows : DocTableRow [ ] ; public constructor ( parameters , rows ? ) { super ( parameters ) ; this . header = new DocTableRow ( { configuration : this . configuration } ) ; this . _rows = [ ] ; if ( parameters ) { if ( parameters . headerTitles ) { if ( parameters . headerCells ) { throw new Error ( 'IDocTableParameters.headerCells and IDocTableParameters.headerTitles' + ' cannot both be specified' ) ; } for ( const cellText of parameters . headerTitles ) { this . header . addPlainTextCell ( cellText ) ; } } else if ( parameters . headerCells ) { for ( const cell of parameters . headerCells ) { this . header . addCell ( cell ) ; } } } if ( rows ) { for ( const row of rows ) { this . addRow ( row ) ; } } } @override  public get kind ( ) : string { return CustomDocNodeKind . Table ; } public get rows ( ) : ReadonlyArray < DocTableRow > { return this . _rows ; } public addRow ( row ) { this . _rows . push ( row ) ; } public createAndAddRow ( ) { const row = new DocTableRow ( { configuration : this . configuration } ) ; this . addRow ( row ) ; return row ; } @override  protected onGetChildNodes ( ) { return [ this . header , ... this . _rows ] ; } }