import { XmlAttributeComponent, XmlComponent } from "@file/xml-components"; // // // // // // // // // // // /** * Enumeration for table-cell vertical alignment. Only `top`, `center`, `bottom` * are valid according to ECMA-376 (§17.18.87 ST_VerticalJc within ). */ export const VerticalAlignTable = { TOP: "top", CENTER: "center", BOTTOM: "bottom", } as const; /** * Enumeration for section () vertical alignment. Adds `both` on top of * the table-cell set (§17.18.87 ST_VerticalJc within ). */ export const VerticalAlignSection = { ...VerticalAlignTable, BOTH: "both", } as const; /** * @deprecated Use {@link VerticalAlignTable} for table cells or * {@link VerticalAlignSection} for section properties. This alias remains for * backward-compatibility and will be removed in the next major release. */ export const VerticalAlign = VerticalAlignSection; export type TableVerticalAlign = (typeof VerticalAlignTable)[keyof typeof VerticalAlignTable]; export type SectionVerticalAlign = (typeof VerticalAlignSection)[keyof typeof VerticalAlignSection]; export class VerticalAlignAttributes extends XmlAttributeComponent<{ readonly verticalAlign?: (typeof VerticalAlign)[keyof typeof VerticalAlign]; }> { protected readonly xmlKeys = { verticalAlign: "w:val", }; } export class VerticalAlignElement extends XmlComponent { public constructor(value: (typeof VerticalAlign)[keyof typeof VerticalAlign]) { super("w:vAlign"); this.root.push(new VerticalAlignAttributes({ verticalAlign: value })); } }