42 lines
1.3 KiB
TypeScript
42 lines
1.3 KiB
TypeScript
import { XmlAttributeComponent, XmlComponent } from "file/xml-components";
|
|
import { Level } from "./level";
|
|
import { MultiLevelType } from "./multi-level-type";
|
|
|
|
interface IAbstractNumberingAttributesProperties {
|
|
readonly abstractNumId?: number;
|
|
readonly restartNumberingAfterBreak?: number;
|
|
}
|
|
|
|
class AbstractNumberingAttributes extends XmlAttributeComponent<IAbstractNumberingAttributesProperties> {
|
|
protected readonly xmlKeys = {
|
|
abstractNumId: "w:abstractNumId",
|
|
restartNumberingAfterBreak: "w15:restartNumberingAfterBreak",
|
|
};
|
|
}
|
|
|
|
export class AbstractNumbering extends XmlComponent {
|
|
public readonly id: number;
|
|
|
|
constructor(id: number) {
|
|
super("w:abstractNum");
|
|
this.root.push(
|
|
new AbstractNumberingAttributes({
|
|
abstractNumId: id,
|
|
restartNumberingAfterBreak: 0,
|
|
}),
|
|
);
|
|
this.root.push(new MultiLevelType("hybridMultilevel"));
|
|
this.id = id;
|
|
}
|
|
|
|
public addLevel(level: Level): void {
|
|
this.root.push(level);
|
|
}
|
|
|
|
public createLevel(num: number, format: string, text: string, align: string = "start"): Level {
|
|
const level = new Level(num, format, text, align);
|
|
this.addLevel(level);
|
|
return level;
|
|
}
|
|
}
|