import { NextAttributeComponent, XmlComponent } from "@file/xml-components"; // // // // // // // export const PositionalTabAlignment = { LEFT: "left", CENTER: "center", RIGHT: "right", } as const; // // // // // // export const PositionalTabRelativeTo = { MARGIN: "margin", INDENT: "indent", } as const; // // // // // // // // // export const PositionalTabLeader = { NONE: "none", DOT: "dot", HYPHEN: "hyphen", UNDERSCORE: "underscore", // eslint-disable-next-line @typescript-eslint/naming-convention MIDDLE_DOT: "middleDot", } as const; export interface PositionalTabOptions { readonly alignment: (typeof PositionalTabAlignment)[keyof typeof PositionalTabAlignment]; readonly relativeTo: (typeof PositionalTabRelativeTo)[keyof typeof PositionalTabRelativeTo]; readonly leader: (typeof PositionalTabLeader)[keyof typeof PositionalTabLeader]; } // // // // // export class PositionalTab extends XmlComponent { public constructor(options: PositionalTabOptions) { super("w:ptab"); this.root.push( new NextAttributeComponent<{ readonly alignment: (typeof PositionalTabAlignment)[keyof typeof PositionalTabAlignment]; readonly relativeTo: (typeof PositionalTabRelativeTo)[keyof typeof PositionalTabRelativeTo]; readonly leader: (typeof PositionalTabLeader)[keyof typeof PositionalTabLeader]; }>({ alignment: { key: "w:alignment", value: options.alignment, }, relativeTo: { key: "w:relativeTo", value: options.relativeTo, }, leader: { key: "w:leader", value: options.leader, }, }), ); } }