diff --git a/src/file/document/document.ts b/src/file/document/document.ts
index cc33709076..6fc78b8b1a 100644
--- a/src/file/document/document.ts
+++ b/src/file/document/document.ts
@@ -11,6 +11,25 @@ export interface IDocumentOptions {
readonly background: IDocumentBackgroundOptions;
}
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
export class Document extends XmlComponent {
private readonly body: Body;
diff --git a/src/file/numbering/abstract-numbering.ts b/src/file/numbering/abstract-numbering.ts
index 363d233ac9..6c4af129c3 100644
--- a/src/file/numbering/abstract-numbering.ts
+++ b/src/file/numbering/abstract-numbering.ts
@@ -1,8 +1,24 @@
+import { decimalNumber } from "file/values";
import { XmlAttributeComponent, XmlComponent } from "file/xml-components";
import { ILevelsOptions, Level } from "./level";
import { MultiLevelType } from "./multi-level-type";
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+
+//
+// https://docs.microsoft.com/en-us/openspecs/office_standards/ms-docx/cbddeff8-01aa-4486-a48e-6a83dede4f13
class AbstractNumberingAttributes extends XmlAttributeComponent<{
readonly abstractNumId: number;
readonly restartNumberingAfterBreak: number;
@@ -20,7 +36,7 @@ export class AbstractNumbering extends XmlComponent {
super("w:abstractNum");
this.root.push(
new AbstractNumberingAttributes({
- abstractNumId: id,
+ abstractNumId: decimalNumber(id),
restartNumberingAfterBreak: 0,
}),
);
diff --git a/src/file/numbering/level.ts b/src/file/numbering/level.ts
index d189e24e01..93fcbe6f67 100644
--- a/src/file/numbering/level.ts
+++ b/src/file/numbering/level.ts
@@ -1,5 +1,6 @@
// http://officeopenxml.com/WPnumbering-numFmt.php
-import { Attributes, XmlAttributeComponent, XmlComponent } from "file/xml-components";
+import { decimalNumber } from "file/values";
+import { Attributes, NumberValueElement, XmlAttributeComponent, XmlComponent } from "file/xml-components";
import { AlignmentType } from "../paragraph/formatting";
import { IParagraphStylePropertiesOptions, ParagraphProperties } from "../paragraph/properties";
import { IRunStylePropertiesOptions, RunProperties } from "../paragraph/run/properties";
@@ -31,17 +32,10 @@ class LevelAttributes extends XmlAttributeComponent<{
};
}
-class Start extends XmlComponent {
- constructor(value: number) {
- super("w:start");
- this.root.push(
- new Attributes({
- val: value,
- }),
- );
- }
-}
-
+//
+//
+//
+//
class NumberFormat extends XmlComponent {
constructor(value: string) {
super("w:numFmt");
@@ -53,6 +47,10 @@ class NumberFormat extends XmlComponent {
}
}
+//
+//
+//
+//
class LevelText extends XmlComponent {
constructor(value: string) {
super("w:lvlText");
@@ -94,6 +92,16 @@ export interface ILevelsOptions {
};
}
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
class Suffix extends XmlComponent {
constructor(value: LevelSuffix) {
super("w:suff");
@@ -105,6 +113,25 @@ class Suffix extends XmlComponent {
}
}
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
export class LevelBase extends XmlComponent {
private readonly paragraphProperties: ParagraphProperties;
private readonly runProperties: RunProperties;
@@ -112,7 +139,7 @@ export class LevelBase extends XmlComponent {
constructor({ level, format, text, alignment = AlignmentType.START, start = 1, style, suffix }: ILevelsOptions) {
super("w:lvl");
- this.root.push(new Start(start));
+ this.root.push(new NumberValueElement("w:start", decimalNumber(start)));
if (format) {
this.root.push(new NumberFormat(format));
@@ -136,7 +163,7 @@ export class LevelBase extends XmlComponent {
this.root.push(
new LevelAttributes({
- ilvl: level,
+ ilvl: decimalNumber(level),
tentative: 1,
}),
);
diff --git a/src/file/numbering/multi-level-type.ts b/src/file/numbering/multi-level-type.ts
index c73ebec3cf..c2d53bb8cf 100644
--- a/src/file/numbering/multi-level-type.ts
+++ b/src/file/numbering/multi-level-type.ts
@@ -1,5 +1,19 @@
import { Attributes, XmlComponent } from "file/xml-components";
+//
+// ...
+//
+
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
export class MultiLevelType extends XmlComponent {
constructor(value: string) {
super("w:multiLevelType");
diff --git a/src/file/numbering/num.ts b/src/file/numbering/num.ts
index 526d0f1b9f..87cd399a96 100644
--- a/src/file/numbering/num.ts
+++ b/src/file/numbering/num.ts
@@ -1,3 +1,4 @@
+import { decimalNumber } from "file/values";
import { Attributes, XmlAttributeComponent, XmlComponent } from "file/xml-components";
class AbstractNumId extends XmlComponent {
@@ -28,6 +29,17 @@ export interface IConcreteNumberingOptions {
};
}
+//
+// ...
+//
+
+//
+//
+//
+//
+//
+//
+//
export class ConcreteNumbering extends XmlComponent {
public readonly numId: number;
public readonly reference: string;
@@ -42,11 +54,11 @@ export class ConcreteNumbering extends XmlComponent {
this.root.push(
new NumAttributes({
- numId: options.numId,
+ numId: decimalNumber(options.numId),
}),
);
- this.root.push(new AbstractNumId(options.abstractNumId));
+ this.root.push(new AbstractNumId(decimalNumber(options.abstractNumId)));
if (options.overrideLevel) {
this.root.push(new LevelOverride(options.overrideLevel.num, options.overrideLevel.start));
diff --git a/src/file/numbering/numbering.ts b/src/file/numbering/numbering.ts
index 6b95f0d222..8f37b386c5 100644
--- a/src/file/numbering/numbering.ts
+++ b/src/file/numbering/numbering.ts
@@ -16,6 +16,16 @@ export interface INumberingOptions {
}[];
}
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
export class Numbering extends XmlComponent {
private readonly abstractNumberingMap = new Map();
private readonly concreteNumberingMap = new Map();