Files
docx-js/src/file/numbering/abstract-numbering.ts

41 lines
1.2 KiB
TypeScript
Raw Normal View History

import { XmlAttributeComponent, XmlComponent } from "file/xml-components";
2019-11-01 01:57:01 +00:00
import { ILevelsOptions, Level } from "./level";
2017-03-08 17:09:48 +01:00
import { MultiLevelType } from "./multi-level-type";
2016-05-19 22:42:23 +01:00
2017-03-08 17:09:48 +01:00
interface IAbstractNumberingAttributesProperties {
readonly abstractNumId?: number;
readonly restartNumberingAfterBreak?: number;
2016-05-19 22:42:23 +01:00
}
class AbstractNumberingAttributes extends XmlAttributeComponent<IAbstractNumberingAttributesProperties> {
protected readonly xmlKeys = {
abstractNumId: "w:abstractNumId",
restartNumberingAfterBreak: "w15:restartNumberingAfterBreak",
};
2016-05-19 22:42:23 +01:00
}
2019-11-01 01:57:01 +00:00
export interface IAbstractNumberingOptions {
readonly levels: ILevelsOptions[];
}
2016-05-19 22:42:23 +01:00
export class AbstractNumbering extends XmlComponent {
public readonly id: number;
2016-05-19 22:42:23 +01:00
2019-11-01 01:57:01 +00:00
constructor(id: number, options: IAbstractNumberingOptions) {
2016-05-19 22:42:23 +01:00
super("w:abstractNum");
2018-01-23 01:33:12 +00:00
this.root.push(
new AbstractNumberingAttributes({
abstractNumId: id,
restartNumberingAfterBreak: 0,
}),
);
2016-05-21 00:02:46 +01:00
this.root.push(new MultiLevelType("hybridMultilevel"));
2017-03-08 17:18:12 +01:00
this.id = id;
2016-05-26 15:08:34 +01:00
2019-11-01 01:57:01 +00:00
for (const option of options.levels) {
this.root.push(new Level(option));
}
}
2017-03-08 17:09:48 +01:00
}