import { HeightRule } from "file/table/table-row/table-row-height"; import { XmlComponent } from "file/xml-components"; import { TableCell } from "../table-cell"; import { TableRowProperties } from "./table-row-properties"; export class TableRow extends XmlComponent { private readonly properties: TableRowProperties; constructor(private readonly cells: TableCell[]) { super("w:tr"); this.properties = new TableRowProperties(); this.root.push(this.properties); cells.forEach((c) => this.root.push(c)); } public getCell(index: number): TableCell { const cell = this.cells[index]; if (!cell) { throw Error("Index out of bounds when trying to get cell on row"); } return cell; } public addGridSpan(index: number, cellSpan: number): TableCell { const remainCell = this.cells[index]; remainCell.addGridSpan(cellSpan); this.cells.splice(index + 1, cellSpan - 1); this.root.splice(index + 2, cellSpan - 1); return remainCell; } public mergeCells(startIndex: number, endIndex: number): TableCell { const cellSpan = endIndex - startIndex + 1; return this.addGridSpan(startIndex, cellSpan); } public setCantSplit(): TableRow { this.properties.setCantSplit(); return this; } public setTableHeader(): TableRow { this.properties.setTableHeader(); return this; } public setHeight(height: number, rule: HeightRule): TableRow { this.properties.setHeight(height, rule); return this; } }