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 }));
}
}
}