in src-js/src/document.ts [574:600]
constructor(block: ApiTableBlock, parentPage: Page) {
super(block);
this._parentPage = parentPage;
this._geometry = new Geometry(block.Geometry, this);
const parentDocument = parentPage.parentDocument;
this._cells = ([] as Cell[]).concat(
...(block.Relationships || [])
.filter((rs) => rs.Type == ApiRelationshipType.Child)
.map(
(rs) =>
rs.Ids.map((cid) => {
const cellBlock = parentDocument.getBlockById(cid);
if (!cellBlock) {
console.warn(`Document missing child block ${cid} referenced by table cell ${this.id}`);
return;
}
return new Cell(cellBlock as ApiCellBlock, this);
}).filter((cell) => cell) as Cell[]
)
);
// This indexing could be moved to a utility function if supporting more mutation operations in future:
this._cells.sort((a, b) => a.rowIndex - b.rowIndex || a.columnIndex - b.columnIndex);
this._nCols = this._cells.reduce((acc, next) => Math.max(acc, next.columnIndex + next.columnSpan - 1), 0);
this._nRows = this._cells.reduce((acc, next) => Math.max(acc, next.rowIndex + next.rowSpan - 1), 0);
}