2021-08-03 15:58:26 +02:00
|
|
|
import { SpaceType } from "file/space-type";
|
|
|
|
import { XmlAttributeComponent, XmlComponent } from "file/xml-components";
|
2021-09-08 00:41:40 +01:00
|
|
|
import { IPageReferenceOptions } from "./pageref-properties";
|
2021-08-03 15:58:26 +02:00
|
|
|
|
|
|
|
class TextAttributes extends XmlAttributeComponent<{ readonly space: SpaceType }> {
|
|
|
|
protected readonly xmlKeys = { space: "xml:space" };
|
|
|
|
}
|
|
|
|
|
2021-09-08 00:41:40 +01:00
|
|
|
export class PageReferenceFieldInstruction extends XmlComponent {
|
|
|
|
constructor(bookmarkId: string, options: IPageReferenceOptions = {}) {
|
2021-08-03 15:58:26 +02:00
|
|
|
super("w:instrText");
|
|
|
|
this.root.push(new TextAttributes({ space: SpaceType.PRESERVE }));
|
|
|
|
|
|
|
|
let instruction = `PAGEREF ${bookmarkId}`;
|
|
|
|
|
|
|
|
if (options.hyperlink) {
|
|
|
|
instruction = `${instruction} \\h`;
|
|
|
|
}
|
|
|
|
if (options.useRelativePosition) {
|
|
|
|
instruction = `${instruction} \\p`;
|
|
|
|
}
|
|
|
|
|
|
|
|
this.root.push(instruction);
|
|
|
|
}
|
|
|
|
}
|