import { NextAttributeComponent, XmlComponent } from "@file/xml-components"; import { decimalNumber, PositiveUniversalMeasure, twipsMeasureValue } from "@util/values"; import { Column } from "./column"; // // // // // // // // // export type IColumnsAttributes = { readonly space?: number | PositiveUniversalMeasure; readonly count?: number; readonly separate?: boolean; readonly equalWidth?: boolean; readonly children?: readonly Column[]; }; export class Columns extends XmlComponent { public constructor({ space, count, separate, equalWidth, children }: IColumnsAttributes) { super("w:cols"); this.root.push( new NextAttributeComponent>({ space: { key: "w:space", value: space === undefined ? undefined : twipsMeasureValue(space) }, count: { key: "w:num", value: count === undefined ? undefined : decimalNumber(count) }, separate: { key: "w:sep", value: separate }, equalWidth: { key: "w:equalWidth", value: equalWidth }, }), ); if (!equalWidth && children) { children.forEach((column) => this.addChildElement(column)); } } }