Use level.start for overrideLevel.start if possible

Implemented via additional reference config map.
This commit is contained in:
Andrey Savin
2021-07-26 09:55:33 +03:00
parent 75587df420
commit 36a18c5af3

View File

@ -29,6 +29,7 @@ export interface INumberingOptions {
export class Numbering extends XmlComponent { export class Numbering extends XmlComponent {
private readonly abstractNumberingMap = new Map<string, AbstractNumbering>(); private readonly abstractNumberingMap = new Map<string, AbstractNumbering>();
private readonly concreteNumberingMap = new Map<string, ConcreteNumbering>(); private readonly concreteNumberingMap = new Map<string, ConcreteNumbering>();
private readonly referenceConfigMap = new Map<string, ILevelsOptions>();
constructor(options: INumberingOptions) { constructor(options: INumberingOptions) {
super("w:numbering"); super("w:numbering");
@ -174,6 +175,7 @@ export class Numbering extends XmlComponent {
for (const con of options.config) { for (const con of options.config) {
this.abstractNumberingMap.set(con.reference, new AbstractNumbering(uniqueNumericId(), con.levels)); this.abstractNumberingMap.set(con.reference, new AbstractNumbering(uniqueNumericId(), con.levels));
this.referenceConfigMap.set(con.reference, con.levels);
} }
} }
@ -201,19 +203,28 @@ export class Numbering extends XmlComponent {
return; return;
} }
this.concreteNumberingMap.set( const concreteNumberingSettings = {
fullReference, numId: uniqueNumericId(),
new ConcreteNumbering({ abstractNumId: abstractNumbering.id,
numId: uniqueNumericId(), reference,
abstractNumId: abstractNumbering.id, instance,
reference, };
instance,
overrideLevel: { const referenceConfigLevels = this.referenceConfigMap.get(reference);
num: 0, const firstLevelStartNumber = referenceConfigLevels?.[0]?.start;
start: 1, if (firstLevelStartNumber) {
}, concreteNumberingSettings.overrideLevel = {
}), num: 0,
); start: firstLevelStartNumber,
};
} else {
concreteNumberingSettings.overrideLevel = {
num: 0,
start: 1,
};
}
this.concreteNumberingMap.set(fullReference, new ConcreteNumbering(concreteNumberingSettings));
} }
public get ConcreteNumbering(): ConcreteNumbering[] { public get ConcreteNumbering(): ConcreteNumbering[] {