import { IgnoreIfEmptyXmlComponent } from "@file/xml-components"; import { TableWidthElement, WidthType } from "@file/table"; export interface ITableCellMarginOptions { readonly marginUnitType?: (typeof WidthType)[keyof typeof WidthType]; readonly top?: number; readonly bottom?: number; readonly left?: number; readonly right?: number; } // Technically two different types, but they're identical // // // // // // // // // // // // // // // // // // // // // export const TableCellMarginElementType = { TABLE: "w:tblCellMar", // eslint-disable-next-line @typescript-eslint/naming-convention TABLE_CELL: "w:tcMar", } as const; export class TableCellMargin extends IgnoreIfEmptyXmlComponent { public constructor( type: (typeof TableCellMarginElementType)[keyof typeof TableCellMarginElementType], { marginUnitType = WidthType.DXA, top, left, bottom, right }: ITableCellMarginOptions, ) { super(type); if (top !== undefined) { this.root.push(new TableWidthElement("w:top", { type: marginUnitType, size: top })); } if (left !== undefined) { this.root.push(new TableWidthElement("w:left", { type: marginUnitType, size: left })); } if (bottom !== undefined) { this.root.push(new TableWidthElement("w:bottom", { type: marginUnitType, size: bottom })); } if (right !== undefined) { this.root.push(new TableWidthElement("w:right", { type: marginUnitType, size: right })); } } }