abstract-document 20.0.4 → 20.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/lib/abstract-document/abstract-doc.d.ts.map +1 -1
  3. package/lib/abstract-document/abstract-doc.js +2 -2
  4. package/lib/abstract-document/atoms/atom.d.ts +3 -3
  5. package/lib/abstract-document/atoms/atom.d.ts.map +1 -1
  6. package/lib/abstract-document/default-styles.d.ts.map +1 -1
  7. package/lib/abstract-document/default-styles.js.map +1 -1
  8. package/lib/abstract-document/markdown/markdown.d.ts.map +1 -1
  9. package/lib/abstract-document/markdown/markdown.js +4 -4
  10. package/lib/abstract-document/markdown/markdown.js.map +1 -1
  11. package/lib/abstract-document/numberings/numbering-definition.d.ts +2 -2
  12. package/lib/abstract-document/numberings/numbering-definition.d.ts.map +1 -1
  13. package/lib/abstract-document/numberings/numbering-level-definition.js +2 -2
  14. package/lib/abstract-document/page/master-page.d.ts +1 -1
  15. package/lib/abstract-document/page/master-page.d.ts.map +1 -1
  16. package/lib/abstract-document/page/master-page.js +1 -1
  17. package/lib/abstract-document/page/master-page.js.map +1 -1
  18. package/lib/abstract-document/page/section.d.ts +1 -1
  19. package/lib/abstract-document/page/section.d.ts.map +1 -1
  20. package/lib/abstract-document/page/section.js +2 -2
  21. package/lib/abstract-document/page/section.js.map +1 -1
  22. package/lib/abstract-document/primitives/font.d.ts +1 -1
  23. package/lib/abstract-document/primitives/font.d.ts.map +1 -1
  24. package/lib/abstract-document/primitives/font.js +1 -1
  25. package/lib/abstract-document/primitives/font.js.map +1 -1
  26. package/lib/abstract-document/primitives/layout-foundation-color.d.ts.map +1 -1
  27. package/lib/abstract-document/primitives/layout-foundation-color.js.map +1 -1
  28. package/lib/abstract-document/primitives/layout-foundation.d.ts.map +1 -1
  29. package/lib/abstract-document/primitives/layout-foundation.js.map +1 -1
  30. package/lib/abstract-document/resources.d.ts +4 -3
  31. package/lib/abstract-document/resources.d.ts.map +1 -1
  32. package/lib/abstract-document/resources.js +4 -4
  33. package/lib/abstract-document/resources.js.map +1 -1
  34. package/lib/abstract-document/section-elements/group.d.ts +1 -1
  35. package/lib/abstract-document/section-elements/group.d.ts.map +1 -1
  36. package/lib/abstract-document/section-elements/group.js +2 -2
  37. package/lib/abstract-document/section-elements/group.js.map +1 -1
  38. package/lib/abstract-document/section-elements/page-break.d.ts +2 -2
  39. package/lib/abstract-document/section-elements/page-break.d.ts.map +1 -1
  40. package/lib/abstract-document/section-elements/page-break.js +1 -2
  41. package/lib/abstract-document/section-elements/page-break.js.map +1 -1
  42. package/lib/abstract-document/section-elements/paragraph.d.ts +2 -2
  43. package/lib/abstract-document/section-elements/paragraph.d.ts.map +1 -1
  44. package/lib/abstract-document/section-elements/paragraph.js +2 -2
  45. package/lib/abstract-document/section-elements/paragraph.js.map +1 -1
  46. package/lib/abstract-document/section-elements/section-element.d.ts +1 -1
  47. package/lib/abstract-document/section-elements/section-element.d.ts.map +1 -1
  48. package/lib/abstract-document/section-elements/section-element.js.map +1 -1
  49. package/lib/abstract-document/section-elements/table.d.ts +1 -1
  50. package/lib/abstract-document/section-elements/table.d.ts.map +1 -1
  51. package/lib/abstract-document/section-elements/table.js +2 -2
  52. package/lib/abstract-document/section-elements/table.js.map +1 -1
  53. package/lib/abstract-document/styles/group-style.js +3 -3
  54. package/lib/abstract-document/styles/page-style.d.ts.map +1 -1
  55. package/lib/abstract-document/styles/page-style.js +3 -7
  56. package/lib/abstract-document/styles/page-style.js.map +1 -1
  57. package/lib/abstract-document/styles/paragraph-style.d.ts +1 -1
  58. package/lib/abstract-document/styles/paragraph-style.d.ts.map +1 -1
  59. package/lib/abstract-document/styles/paragraph-style.js +5 -5
  60. package/lib/abstract-document/styles/paragraph-style.js.map +1 -1
  61. package/lib/abstract-document/styles/style.d.ts.map +1 -1
  62. package/lib/abstract-document/styles/style.js.map +1 -1
  63. package/lib/abstract-document/styles/table-cell-style.d.ts +1 -1
  64. package/lib/abstract-document/styles/table-cell-style.d.ts.map +1 -1
  65. package/lib/abstract-document/styles/table-cell-style.js +7 -7
  66. package/lib/abstract-document/styles/table-cell-style.js.map +1 -1
  67. package/lib/abstract-document/styles/table-style.d.ts +1 -1
  68. package/lib/abstract-document/styles/table-style.d.ts.map +1 -1
  69. package/lib/abstract-document/styles/table-style.js +2 -2
  70. package/lib/abstract-document/styles/table-style.js.map +1 -1
  71. package/lib/abstract-document/styles/text-style.d.ts.map +1 -1
  72. package/lib/abstract-document/styles/text-style.js +16 -21
  73. package/lib/abstract-document/styles/text-style.js.map +1 -1
  74. package/lib/abstract-document/table/table-cell.js +2 -2
  75. package/lib/abstract-document/table/table-row.d.ts +2 -3
  76. package/lib/abstract-document/table/table-row.d.ts.map +1 -1
  77. package/lib/abstract-document/table/table-row.js +2 -3
  78. package/lib/abstract-document/table/table-row.js.map +1 -1
  79. package/lib/abstract-document/types.d.ts.map +1 -1
  80. package/lib/abstract-document-exporters/docx/document-container.d.ts +5 -5
  81. package/lib/abstract-document-exporters/docx/document-container.d.ts.map +1 -1
  82. package/lib/abstract-document-exporters/docx/document-container.js +14 -13
  83. package/lib/abstract-document-exporters/docx/document-container.js.map +1 -1
  84. package/lib/abstract-document-exporters/docx/docx-constants.d.ts.map +1 -1
  85. package/lib/abstract-document-exporters/docx/docx-constants.js +1 -4
  86. package/lib/abstract-document-exporters/docx/docx-constants.js.map +1 -1
  87. package/lib/abstract-document-exporters/docx/ref-container.d.ts +8 -10
  88. package/lib/abstract-document-exporters/docx/ref-container.d.ts.map +1 -1
  89. package/lib/abstract-document-exporters/docx/ref-container.js +34 -35
  90. package/lib/abstract-document-exporters/docx/ref-container.js.map +1 -1
  91. package/lib/abstract-document-exporters/docx/string-utils.d.ts +2 -1
  92. package/lib/abstract-document-exporters/docx/string-utils.d.ts.map +1 -1
  93. package/lib/abstract-document-exporters/docx/string-utils.js +6 -4
  94. package/lib/abstract-document-exporters/docx/string-utils.js.map +1 -1
  95. package/lib/abstract-document-exporters/docx/xml-writer.d.ts +12 -33
  96. package/lib/abstract-document-exporters/docx/xml-writer.d.ts.map +1 -1
  97. package/lib/abstract-document-exporters/docx/xml-writer.js +243 -249
  98. package/lib/abstract-document-exporters/docx/xml-writer.js.map +1 -1
  99. package/lib/abstract-document-exporters/docx2/render-image.d.ts +1 -1
  100. package/lib/abstract-document-exporters/docx2/render-image.d.ts.map +1 -1
  101. package/lib/abstract-document-exporters/docx2/render-image.js +4 -16
  102. package/lib/abstract-document-exporters/docx2/render-image.js.map +1 -1
  103. package/lib/abstract-document-exporters/docx2/render.d.ts.map +1 -1
  104. package/lib/abstract-document-exporters/docx2/render.js +28 -38
  105. package/lib/abstract-document-exporters/docx2/render.js.map +1 -1
  106. package/lib/abstract-document-exporters/pdf/font.d.ts.map +1 -1
  107. package/lib/abstract-document-exporters/pdf/font.js +13 -14
  108. package/lib/abstract-document-exporters/pdf/font.js.map +1 -1
  109. package/lib/abstract-document-exporters/pdf/header-footer.d.ts +8 -0
  110. package/lib/abstract-document-exporters/pdf/header-footer.d.ts.map +1 -0
  111. package/lib/abstract-document-exporters/pdf/header-footer.js +31 -0
  112. package/lib/abstract-document-exporters/pdf/header-footer.js.map +1 -0
  113. package/lib/abstract-document-exporters/pdf/measure.d.ts +4 -4
  114. package/lib/abstract-document-exporters/pdf/measure.d.ts.map +1 -1
  115. package/lib/abstract-document-exporters/pdf/measure.js +29 -31
  116. package/lib/abstract-document-exporters/pdf/measure.js.map +1 -1
  117. package/lib/abstract-document-exporters/pdf/page.d.ts +15 -0
  118. package/lib/abstract-document-exporters/pdf/page.d.ts.map +1 -0
  119. package/lib/abstract-document-exporters/pdf/page.js +2 -0
  120. package/lib/abstract-document-exporters/pdf/page.js.map +1 -0
  121. package/lib/abstract-document-exporters/pdf/paginate.d.ts +2 -20
  122. package/lib/abstract-document-exporters/pdf/paginate.d.ts.map +1 -1
  123. package/lib/abstract-document-exporters/pdf/paginate.js +8 -45
  124. package/lib/abstract-document-exporters/pdf/paginate.js.map +1 -1
  125. package/lib/abstract-document-exporters/pdf/pre-process.d.ts.map +1 -1
  126. package/lib/abstract-document-exporters/pdf/pre-process.js +8 -35
  127. package/lib/abstract-document-exporters/pdf/pre-process.js.map +1 -1
  128. package/lib/abstract-document-exporters/pdf/render-image.d.ts.map +1 -1
  129. package/lib/abstract-document-exporters/pdf/render-image.js +24 -34
  130. package/lib/abstract-document-exporters/pdf/render-image.js.map +1 -1
  131. package/lib/abstract-document-exporters/pdf/render.d.ts +4 -3
  132. package/lib/abstract-document-exporters/pdf/render.d.ts.map +1 -1
  133. package/lib/abstract-document-exporters/pdf/render.js +60 -50
  134. package/lib/abstract-document-exporters/pdf/render.js.map +1 -1
  135. package/lib/abstract-document-exporters/pdf/std-fonts.js +1 -1
  136. package/lib/abstract-document-exporters/pdf/std-fonts.js.map +1 -1
  137. package/lib/abstract-document-exporters/pdf/textRunRow.d.ts +3 -3
  138. package/lib/abstract-document-exporters/pdf/textRunRow.d.ts.map +1 -1
  139. package/lib/abstract-document-exporters/pdf/textRunRow.js +6 -6
  140. package/lib/abstract-document-exporters/pdf/textRunRow.js.map +1 -1
  141. package/lib/abstract-document-exporters/pdf/update-refs.d.ts +1 -1
  142. package/lib/abstract-document-exporters/pdf/update-refs.d.ts.map +1 -1
  143. package/lib/abstract-document-exporters/pdf/update-refs.js +3 -2
  144. package/lib/abstract-document-exporters/pdf/update-refs.js.map +1 -1
  145. package/lib/abstract-document-exporters/shared/get_resources.d.ts.map +1 -1
  146. package/lib/abstract-document-exporters/shared/get_resources.js.map +1 -1
  147. package/lib/abstract-document-jsx/index.d.ts +2 -3
  148. package/lib/abstract-document-jsx/index.d.ts.map +1 -1
  149. package/lib/abstract-document-jsx/index.js +10 -6
  150. package/lib/abstract-document-jsx/index.js.map +1 -1
  151. package/lib/abstract-document-xml/abstract-doc-of-xml/abstract-doc-of-xml.d.ts +3 -7
  152. package/lib/abstract-document-xml/abstract-doc-of-xml/abstract-doc-of-xml.d.ts.map +1 -1
  153. package/lib/abstract-document-xml/abstract-doc-of-xml/abstract-doc-of-xml.js +5 -3
  154. package/lib/abstract-document-xml/abstract-doc-of-xml/abstract-doc-of-xml.js.map +1 -1
  155. package/lib/abstract-document-xml/abstract-doc-of-xml/creator.d.ts.map +1 -1
  156. package/lib/abstract-document-xml/abstract-doc-of-xml/creator.js +1 -3
  157. package/lib/abstract-document-xml/abstract-doc-of-xml/creator.js.map +1 -1
  158. package/lib/abstract-document-xml/abstract-doc-of-xml/custom-elements.d.ts.map +1 -1
  159. package/lib/abstract-document-xml/abstract-doc-of-xml/custom-elements.js +4 -8
  160. package/lib/abstract-document-xml/abstract-doc-of-xml/custom-elements.js.map +1 -1
  161. package/lib/abstract-document-xml/xsd-template/xsd-template.js +2 -2
  162. package/lib/abstract-document-xml/xsd-template/xsd-template.js.map +1 -1
  163. package/package.json +22 -22
  164. package/src/abstract-document/abstract-doc.ts +6 -6
  165. package/src/abstract-document/atoms/atom.ts +3 -3
  166. package/src/abstract-document/default-styles.ts +1 -1
  167. package/src/abstract-document/markdown/markdown.ts +5 -5
  168. package/src/abstract-document/numberings/numbering-definition.ts +2 -2
  169. package/src/abstract-document/numberings/numbering-level-definition.ts +2 -2
  170. package/src/abstract-document/page/master-page.ts +2 -2
  171. package/src/abstract-document/page/section.ts +3 -3
  172. package/src/abstract-document/primitives/font.ts +1 -12
  173. package/src/abstract-document/primitives/layout-foundation-color.ts +1 -4
  174. package/src/abstract-document/primitives/layout-foundation.ts +1 -4
  175. package/src/abstract-document/resources.ts +9 -14
  176. package/src/abstract-document/section-elements/group.ts +3 -3
  177. package/src/abstract-document/section-elements/page-break.ts +2 -3
  178. package/src/abstract-document/section-elements/paragraph.ts +4 -4
  179. package/src/abstract-document/section-elements/section-element.ts +1 -1
  180. package/src/abstract-document/section-elements/table.ts +3 -3
  181. package/src/abstract-document/styles/group-style.ts +3 -3
  182. package/src/abstract-document/styles/page-style.ts +3 -7
  183. package/src/abstract-document/styles/paragraph-style.ts +6 -14
  184. package/src/abstract-document/styles/style.ts +1 -5
  185. package/src/abstract-document/styles/table-cell-style.ts +8 -11
  186. package/src/abstract-document/styles/table-style.ts +3 -8
  187. package/src/abstract-document/styles/text-style.ts +16 -21
  188. package/src/abstract-document/table/table-cell.ts +2 -2
  189. package/src/abstract-document/table/table-row.ts +3 -4
  190. package/src/abstract-document/types.ts +0 -1
  191. package/src/abstract-document-exporters/docx/document-container.ts +24 -13
  192. package/src/abstract-document-exporters/docx/docx-constants.ts +2 -6
  193. package/src/abstract-document-exporters/docx/ref-container.ts +48 -41
  194. package/src/abstract-document-exporters/docx/string-utils.ts +6 -6
  195. package/src/abstract-document-exporters/docx/xml-writer.ts +261 -266
  196. package/src/abstract-document-exporters/docx2/render-image.ts +15 -49
  197. package/src/abstract-document-exporters/docx2/render.ts +64 -139
  198. package/src/abstract-document-exporters/pdf/font.ts +17 -23
  199. package/src/abstract-document-exporters/pdf/header-footer.ts +43 -0
  200. package/src/abstract-document-exporters/pdf/measure.ts +50 -103
  201. package/src/abstract-document-exporters/pdf/page.ts +16 -0
  202. package/src/abstract-document-exporters/pdf/paginate.ts +29 -125
  203. package/src/abstract-document-exporters/pdf/pre-process.ts +11 -47
  204. package/src/abstract-document-exporters/pdf/render-image.ts +29 -46
  205. package/src/abstract-document-exporters/pdf/render.ts +84 -129
  206. package/src/abstract-document-exporters/pdf/std-fonts.ts +1 -1
  207. package/src/abstract-document-exporters/pdf/textRunRow.ts +12 -23
  208. package/src/abstract-document-exporters/pdf/update-refs.ts +10 -33
  209. package/src/abstract-document-exporters/shared/get_resources.ts +4 -4
  210. package/src/abstract-document-jsx/index.ts +38 -26
  211. package/src/abstract-document-xml/abstract-doc-of-xml/abstract-doc-of-xml.ts +14 -26
  212. package/src/abstract-document-xml/abstract-doc-of-xml/creator.ts +10 -28
  213. package/src/abstract-document-xml/abstract-doc-of-xml/custom-elements.tsx +8 -30
  214. package/src/abstract-document-xml/xsd-template/xsd-template.ts +2 -2
@@ -1,18 +1,14 @@
1
- import * as AD from "../../abstract-document/index.js";
2
1
  import { exhaustiveCheck } from "ts-exhaustive-check";
3
- // oxlint-disable-next-line import/no-cycle -- type-only, erased at compile time
4
- import type { Page } from "./paginate.js";
5
- // oxlint-disable-next-line import/no-cycle -- both sides only call each other from function bodies
6
- import { getHeaderAndFooter } from "./paginate.js";
2
+ import * as AD from "../../abstract-document/index.js";
7
3
  import { registerFonts, getFontNameStyle } from "./font.js";
8
-
9
- //tslint:disable:no-any variable-name
4
+ import { getHeaderAndFooter } from "./header-footer.js";
5
+ import type { Page } from "./page.js";
10
6
 
11
7
  const widthOfStringCache = new Map<string, number>();
12
8
  const heightOfStringCache = new Map<string, number>();
13
9
 
14
- export function measure(pdfKit: PDFKit.PDFDocument, document: AD.AbstractDoc.AbstractDoc): Map<any, AD.Size.Size> {
15
- let pdf = new pdfKit();
10
+ export function measure(pdfKit: PDFKit.PDFDocument, document: AD.AbstractDoc.AbstractDoc): Map<object, AD.Size.Size> {
11
+ const pdf = new pdfKit();
16
12
  registerFonts((fontName: string, fontSource: AD.Font.FontSource) => pdf.registerFont(fontName, fontSource), document);
17
13
  const result = mergeMaps(document.children.map((s) => measureSection(pdf, document, s)));
18
14
  widthOfStringCache.clear();
@@ -24,15 +20,11 @@ export function measurePages(
24
20
  pdfKit: PDFKit.PDFDocument,
25
21
  document: AD.AbstractDoc.AbstractDoc,
26
22
  pages: ReadonlyArray<Page>
27
- ): Map<any, AD.Size.Size> {
23
+ ): Map<object, AD.Size.Size> {
28
24
  const pdf = new pdfKit();
29
25
  registerFonts((fontName: string, fontSource: AD.Font.FontSource) => pdf.registerFont(fontName, fontSource), document);
30
26
  return mergeMaps(
31
- pages.flatMap((page) =>
32
- page.columns.map(({ elements }) =>
33
- measureSection(pdf, document, page.section, page.header, page.footer, elements)
34
- )
35
- )
27
+ pages.flatMap((page) => page.columns.map(({ elements }) => measureSection(pdf, document, page.section, page.header, page.footer, elements)))
36
28
  );
37
29
  }
38
30
 
@@ -43,10 +35,10 @@ function measureSection(
43
35
  separateHeader?: ReadonlyArray<AD.SectionElement.SectionElement>,
44
36
  separateFooter?: ReadonlyArray<AD.SectionElement.SectionElement>,
45
37
  separateChildren?: ReadonlyArray<AD.SectionElement.SectionElement>
46
- ): Map<any, AD.Size.Size> {
47
- const header = separateHeader || section.page.header;
48
- const footer = separateFooter || section.page.footer;
49
- const children = separateChildren || section.children;
38
+ ): Map<object, AD.Size.Size> {
39
+ const header = separateHeader ?? section.page.header;
40
+ const footer = separateFooter ?? section.page.footer;
41
+ const children = separateChildren ?? section.children;
50
42
 
51
43
  const pageWidth = AD.PageStyle.getWidth(section.page.style);
52
44
  const pageHeight = AD.PageStyle.getHeight(section.page.style);
@@ -71,9 +63,7 @@ function measureSection(
71
63
 
72
64
  //header and footer sizes for the first page
73
65
  const firstPageHeaderAndFooters = getHeaderAndFooter(section, 1);
74
- const firstPageHeaderAndFootersExtracted: ReadonlyArray<
75
- [ReadonlyArray<AD.SectionElement.SectionElement>, AD.LayoutFoundation.LayoutFoundation]
76
- > = [
66
+ const firstPageHeaderAndFootersExtracted: ReadonlyArray<[ReadonlyArray<AD.SectionElement.SectionElement>, AD.LayoutFoundation.LayoutFoundation]> = [
77
67
  [firstPageHeaderAndFooters.header, firstPageHeaderAndFooters.headerMargins],
78
68
  [firstPageHeaderAndFooters.footer, firstPageHeaderAndFooters.footerMargins],
79
69
  ];
@@ -92,7 +82,7 @@ function measureSectionElement(
92
82
  parentResources: AD.Resources.Resources,
93
83
  availableSize: AD.Size.Size,
94
84
  element: AD.SectionElement.SectionElement
95
- ): Map<any, AD.Size.Size> {
85
+ ): Map<object, AD.Size.Size> {
96
86
  const resources = AD.Resources.mergeResources([parentResources, element]);
97
87
  switch (element.type) {
98
88
  case "Paragraph":
@@ -108,8 +98,8 @@ function measureSectionElement(
108
98
  }
109
99
  }
110
100
 
111
- function measurePageBreak(availableSize: AD.Size.Size, pageBreak: AD.PageBreak.PageBreak): Map<any, AD.Size.Size> {
112
- let desiredSizes = new Map<any, AD.Size.Size>();
101
+ function measurePageBreak(availableSize: AD.Size.Size, pageBreak: AD.PageBreak.PageBreak): Map<object, AD.Size.Size> {
102
+ const desiredSizes = new Map<object, AD.Size.Size>();
113
103
  desiredSizes.set(pageBreak, availableSize);
114
104
  return desiredSizes;
115
105
  }
@@ -119,7 +109,7 @@ function measureParagraph(
119
109
  resources: AD.Resources.Resources,
120
110
  availableSize: AD.Size.Size,
121
111
  paragraph: AD.Paragraph.Paragraph
122
- ): Map<any, AD.Size.Size> {
112
+ ): Map<object, AD.Size.Size> {
123
113
  const style = AD.Resources.getStyle(
124
114
  undefined,
125
115
  paragraph.style,
@@ -133,7 +123,7 @@ function measureParagraph(
133
123
  const contentAvailableSize = AD.Size.create(contentAvailableWidth, contentAvailableHeight);
134
124
 
135
125
  let paragraphHeight = styleMargins.top + styleMargins.bottom;
136
- let desiredSizes = new Map<any, AD.Size.Size>();
126
+ const desiredSizes = new Map<object, AD.Size.Size>();
137
127
 
138
128
  const rows: Array<Array<AD.Atom.Atom>> = [];
139
129
  let currentRow: Array<AD.Atom.Atom> = [];
@@ -154,19 +144,12 @@ function measureParagraph(
154
144
  let currentRowHeight = 0;
155
145
  let concatenatedText = "";
156
146
  let hasAtomImage = false;
157
- let textOptions;
147
+ let textOptions: AD.TextStyle.TextStyle | undefined = undefined;
158
148
  for (const atom of row) {
159
149
  if (atom.type === "Image") {
160
150
  hasAtomImage = true;
161
151
  }
162
- const atomSize = measureAtom(
163
- pdfKit,
164
- resources,
165
- style.textStyle,
166
- contentAvailableSize,
167
- contentAvailableSize.width - currentRowWidth,
168
- atom
169
- );
152
+ const atomSize = measureAtom(pdfKit, resources, style.textStyle, contentAvailableSize, contentAvailableSize.width - currentRowWidth, atom);
170
153
  if (atom.type === "TextRun" || atom.type === "TextField" || atom.type === "HyperLink") {
171
154
  concatenatedText += atom.text;
172
155
  textOptions = getBiggestStyle(atom, style, resources, textOptions);
@@ -197,7 +180,7 @@ function measureParagraph(
197
180
  // );
198
181
 
199
182
  const height = pdfKit.heightOfString(concatenatedText, {
200
- width: textOptions && textOptions.lineBreak === false ? Infinity : availableSize.width,
183
+ width: textOptions?.lineBreak === false ? Infinity : availableSize.width,
201
184
  ...textOptions,
202
185
  });
203
186
  paragraphHeight += height;
@@ -239,25 +222,19 @@ export function measureTable(
239
222
  resources: AD.Resources.Resources,
240
223
  availableSize: AD.Size.Size,
241
224
  table: AD.Table.Table
242
- ): Map<any, AD.Size.Size> {
243
- const style = AD.Resources.getStyle(
244
- undefined,
245
- table.style,
246
- "TableStyle",
247
- table.styleName,
248
- resources
249
- ) as AD.TableStyle.TableStyle;
225
+ ): Map<object, AD.Size.Size> {
226
+ const style = AD.Resources.getStyle(undefined, table.style, "TableStyle", table.styleName, resources) as AD.TableStyle.TableStyle;
250
227
  const styleMargins = AD.LayoutFoundation.orDefault(style.margins);
251
228
  const tableAvailableWidth = availableSize.width - (styleMargins.left + styleMargins.right);
252
- const numInfinityColumns = table.columnWidths.filter((w) => !isFinite(w)).length;
253
- const fixedColumnsWidth = table.columnWidths.filter((w) => isFinite(w)).reduce((a, b) => a + b, 0);
229
+ const numInfinityColumns = table.columnWidths.filter((w) => !Number.isFinite(w)).length;
230
+ const fixedColumnsWidth = table.columnWidths.filter((w) => Number.isFinite(w)).reduce((a, b) => a + b, 0);
254
231
  const infinityWidth = (tableAvailableWidth - fixedColumnsWidth) / numInfinityColumns;
255
- const columnWidths = table.columnWidths.map((w) => (isFinite(w) ? w : infinityWidth));
256
- const desiredSizes = new Map<any, AD.Size.Size>();
232
+ const columnWidths = table.columnWidths.map((w) => (Number.isFinite(w) ? w : infinityWidth));
233
+ const desiredSizes = new Map<object, AD.Size.Size>();
257
234
  const rows = [...table.headerRows, ...table.children];
258
- for (let row of rows) {
235
+ for (const row of rows) {
259
236
  let column = 0;
260
- for (let cell of row.children) {
237
+ for (const cell of row.children) {
261
238
  const cellStyle = AD.Resources.getStyle(
262
239
  style.cellStyle,
263
240
  cell.style,
@@ -278,7 +255,7 @@ export function measureTable(
278
255
  const contentAvailableWidth = cellWidth - (cellStylePadding.left + cellStylePadding.right);
279
256
  let cellDesiredHeight = cellStylePadding.top + cellStylePadding.bottom;
280
257
 
281
- for (let element of cell.children) {
258
+ for (const element of cell.children) {
282
259
  const elementAvailableSize = AD.Size.create(contentAvailableWidth, Infinity);
283
260
  const elementSizes = measureSectionElement(pdfKit, resources, elementAvailableSize, element);
284
261
  elementSizes.forEach((v, k) => desiredSizes.set(k, v));
@@ -321,7 +298,7 @@ export function measureTable(
321
298
  }
322
299
  }
323
300
 
324
- const desiredWidth = table.columnWidths.some((w) => !isFinite(w))
301
+ const desiredWidth = table.columnWidths.some((w) => !Number.isFinite(w))
325
302
  ? availableSize.width
326
303
  : table.columnWidths.reduce((a, b) => a + b, styleMargins.left + styleMargins.right);
327
304
  let desiredHeight = styleMargins.top + styleMargins.bottom;
@@ -330,8 +307,8 @@ export function measureTable(
330
307
  const rowHeight = minRowHeights[i];
331
308
  desiredHeight += rowHeight;
332
309
  desiredSizes.set(row, AD.Size.create(desiredWidth, rowHeight));
333
- for (let cell of row.children) {
334
- const cellSize = desiredSizes.get(cell) || AD.Size.create(0, 0);
310
+ for (const cell of row.children) {
311
+ const cellSize = desiredSizes.get(cell) ?? AD.Size.create(0, 0);
335
312
  desiredSizes.set(cell, AD.Size.create(cellSize.width, rowHeight));
336
313
  }
337
314
  }
@@ -346,11 +323,9 @@ function measureGroup(
346
323
  resources: AD.Resources.Resources,
347
324
  availableSize: AD.Size.Size,
348
325
  keepTogether: AD.Group.Group
349
- ): Map<any, AD.Size.Size> {
350
- let desiredSizes = mergeMaps(
351
- keepTogether.children.map((e) => measureSectionElement(pdfKit, resources, availableSize, e))
352
- );
353
- let desiredHeight = keepTogether.children.reduce(
326
+ ): Map<object, AD.Size.Size> {
327
+ const desiredSizes = mergeMaps(keepTogether.children.map((e) => measureSectionElement(pdfKit, resources, availableSize, e)));
328
+ const desiredHeight = keepTogether.children.reduce(
354
329
  (sum, e) => sum + (AD.Position.isPositionAbsolute(e) ? 0 : getDesiredSize(e, desiredSizes).height),
355
330
  0.0
356
331
  );
@@ -402,7 +377,7 @@ function measureLineBreak(
402
377
  "TextStyle",
403
378
  lineBreak.styleName,
404
379
  resources,
405
- lineBreak.nestedStyleNames || []
380
+ lineBreak.nestedStyleNames ?? []
406
381
  ) as AD.TextStyle.TextStyle;
407
382
  return measureText(pdfKit, "A", style, availableSize);
408
383
  }
@@ -420,7 +395,7 @@ function measureTextRun(
420
395
  "TextStyle",
421
396
  textRun.styleName,
422
397
  resources,
423
- textRun.nestedStyleNames || []
398
+ textRun.nestedStyleNames ?? []
424
399
  ) as AD.TextStyle.TextStyle;
425
400
  return measureText(pdf, textRun.text, style, availableSize, true);
426
401
  }
@@ -432,13 +407,7 @@ function measureHyperLink(
432
407
  hyperLink: AD.HyperLink.HyperLink,
433
408
  availableSize: AD.Size.Size
434
409
  ): AD.Size.Size {
435
- const style = AD.Resources.getStyle(
436
- textStyle,
437
- hyperLink.style,
438
- "TextStyle",
439
- hyperLink.styleName,
440
- resources
441
- ) as AD.TextStyle.TextStyle;
410
+ const style = AD.Resources.getStyle(textStyle, hyperLink.style, "TextStyle", hyperLink.styleName, resources) as AD.TextStyle.TextStyle;
442
411
  return measureText(pdf, hyperLink.text, style, availableSize);
443
412
  }
444
413
 
@@ -449,13 +418,7 @@ function measureTextField(
449
418
  textField: AD.TextField.TextField,
450
419
  availableSize: AD.Size.Size
451
420
  ): AD.Size.Size {
452
- const style = AD.Resources.getStyle(
453
- textStyle,
454
- textField.style,
455
- "TextStyle",
456
- textField.styleName,
457
- resources
458
- ) as AD.TextStyle.TextStyle;
421
+ const style = AD.Resources.getStyle(textStyle, textField.style, "TextStyle", textField.styleName, resources) as AD.TextStyle.TextStyle;
459
422
  switch (textField.fieldType) {
460
423
  case "Date":
461
424
  return measureText(pdf, new Date(Date.now()).toDateString(), style, availableSize);
@@ -481,11 +444,7 @@ function measureTocSeparator(
481
444
  };
482
445
  }
483
446
 
484
- function measureImage(
485
- resources: AD.Resources.Resources,
486
- availableSize: AD.Size.Size,
487
- image: AD.Image.Image
488
- ): AD.Size.Size {
447
+ function measureImage(resources: AD.Resources.Resources, availableSize: AD.Size.Size, image: AD.Image.Image): AD.Size.Size {
489
448
  const ai = image.imageResource.abstractImage;
490
449
  const firstComp = ai.components[0];
491
450
  const resource =
@@ -494,7 +453,7 @@ function measureImage(
494
453
  : image.imageResource;
495
454
 
496
455
  let desiredWidth = availableSize.width;
497
- if (!isFinite(image.width)) {
456
+ if (!Number.isFinite(image.width)) {
498
457
  desiredWidth = availableSize.width;
499
458
  } else if (image.width) {
500
459
  desiredWidth = image.width;
@@ -503,7 +462,7 @@ function measureImage(
503
462
  }
504
463
 
505
464
  let desiredHeight = availableSize.height;
506
- if (!isFinite(image.height)) {
465
+ if (!Number.isFinite(image.height)) {
507
466
  desiredHeight = availableSize.height;
508
467
  } else if (image.height) {
509
468
  desiredHeight = image.height;
@@ -529,11 +488,11 @@ function measureText(
529
488
  pdf
530
489
  .font(font)
531
490
  .fontSize(fontSize)
532
- .fillColor(textStyle.color || "black");
491
+ .fillColor(textStyle.color ?? "black");
533
492
 
534
493
  const textOptions = {
535
- underline: textStyle.underline || false,
536
- indent: textStyle.indent || 0,
494
+ underline: textStyle.underline ?? false,
495
+ indent: textStyle.indent ?? 0,
537
496
  lineBreak: textStyle.lineBreak ?? true,
538
497
  ...(textStyle.characterSpacing !== undefined ? { characterSpacing: textStyle.characterSpacing } : {}),
539
498
  ...(textStyle.lineGap !== undefined ? { lineGap: textStyle.lineGap } : {}),
@@ -559,13 +518,7 @@ function measureText(
559
518
  return AD.Size.create(width, height, availableSize.width);
560
519
  }
561
520
 
562
- function widthOfString(
563
- pdf: PDFKit.PDFDocument,
564
- font: string,
565
- fontSize: number,
566
- text: string,
567
- options: PDFKit.Mixins.TextOptions
568
- ): number {
521
+ function widthOfString(pdf: PDFKit.PDFDocument, font: string, fontSize: number, text: string, options: PDFKit.Mixins.TextOptions): number {
569
522
  const key = JSON.stringify({ font, fontSize, text, options });
570
523
  const cached = widthOfStringCache.get(key);
571
524
  if (cached !== undefined) {
@@ -578,13 +531,7 @@ function widthOfString(
578
531
  return width;
579
532
  }
580
533
 
581
- function heightOfString(
582
- pdf: PDFKit.PDFDocument,
583
- font: string,
584
- fontSize: number,
585
- text: string,
586
- options: PDFKit.Mixins.TextOptions
587
- ): number {
534
+ function heightOfString(pdf: PDFKit.PDFDocument, font: string, fontSize: number, text: string, options: PDFKit.Mixins.TextOptions): number {
588
535
  const key = JSON.stringify({ font, fontSize, text, options });
589
536
  const cached = heightOfStringCache.get(key);
590
537
  if (cached !== undefined) {
@@ -597,13 +544,13 @@ function heightOfString(
597
544
  return height;
598
545
  }
599
546
 
600
- function mergeMaps(maps: Array<Map<any, AD.Size.Size>>): Map<any, AD.Size.Size> {
601
- let newMap = new Map<any, AD.Size.Size>();
547
+ function mergeMaps(maps: Array<Map<object, AD.Size.Size>>): Map<object, AD.Size.Size> {
548
+ const newMap = new Map<object, AD.Size.Size>();
602
549
  maps.forEach((m) => m.forEach((v, k) => newMap.set(k, v)));
603
550
  return newMap;
604
551
  }
605
552
 
606
- function getDesiredSize(element: any, desiredSizes: Map<any, AD.Size.Size>): AD.Size.Size {
553
+ function getDesiredSize(element: object, desiredSizes: Map<object, AD.Size.Size>): AD.Size.Size {
607
554
  const size = desiredSizes.get(element);
608
555
  if (size) {
609
556
  return size;
@@ -0,0 +1,16 @@
1
+ import type * as AD from "../../abstract-document/index.js";
2
+
3
+ export interface PageColumn {
4
+ readonly elements: ReadonlyArray<AD.SectionElement.SectionElement>;
5
+ }
6
+
7
+ export interface Page {
8
+ readonly pageNo: number;
9
+ readonly namedDestionations: ReadonlyArray<string>;
10
+ readonly pageOptions: PDFKit.PDFDocumentOptions;
11
+ readonly section: AD.Section.Section;
12
+ readonly contentRect: AD.Rect.Rect;
13
+ readonly columns: ReadonlyArray<PageColumn>;
14
+ readonly header: ReadonlyArray<AD.SectionElement.SectionElement>;
15
+ readonly footer: ReadonlyArray<AD.SectionElement.SectionElement>;
16
+ }
@@ -1,35 +1,21 @@
1
1
  import * as AD from "../../abstract-document/index.js";
2
2
  import { getResources } from "../shared/get_resources.js";
3
3
  import { registerFonts } from "./font.js";
4
- // oxlint-disable-next-line import/no-cycle -- both sides only call each other from function bodies
4
+ import { getHeaderAndFooter } from "./header-footer.js";
5
5
  import { measureTable } from "./measure.js";
6
-
7
- export interface PageColumn {
8
- readonly elements: ReadonlyArray<AD.SectionElement.SectionElement>;
9
- }
10
-
11
- export interface Page {
12
- readonly pageNo: number;
13
- readonly namedDestionations: ReadonlyArray<string>;
14
- readonly pageOptions: any;
15
- readonly section: AD.Section.Section;
16
- readonly contentRect: AD.Rect.Rect;
17
- readonly columns: ReadonlyArray<PageColumn>;
18
- readonly header: ReadonlyArray<AD.SectionElement.SectionElement>;
19
- readonly footer: ReadonlyArray<AD.SectionElement.SectionElement>;
20
- }
6
+ import type { Page, PageColumn } from "./page.js";
21
7
 
22
8
  export function paginate(
23
9
  pdfKit: PDFKit.PDFDocument,
24
10
  document: AD.AbstractDoc.AbstractDoc,
25
- desiredSizes: Map<any, AD.Size.Size>
11
+ desiredSizes: Map<object, AD.Size.Size>
26
12
  ): ReadonlyArray<Page> {
27
13
  const resources = getResources(document);
28
14
  const pdf = new pdfKit({ compress: false, autoFirstPage: false, bufferPages: true });
29
15
 
30
16
  registerFonts((fontName: string, fontSource: AD.Font.FontSource) => pdf.registerFont(fontName, fontSource), document);
31
17
  const pages = new Array<Page>();
32
- for (let section of document.children) {
18
+ for (const section of document.children) {
33
19
  const previousPage = pages.length > 0 ? pages[pages.length - 1] : undefined;
34
20
  pages.push(...paginateSection(pdfKit, document, resources, desiredSizes, previousPage, section));
35
21
  }
@@ -41,7 +27,7 @@ function paginateSection(
41
27
  pdfKit: PDFKit.PDFDocument,
42
28
  document: AD.AbstractDoc.AbstractDoc,
43
29
  parentResources: AD.Resources.Resources,
44
- desiredSizes: Map<{}, AD.Size.Size>,
30
+ desiredSizes: Map<object, AD.Size.Size>,
45
31
  previousPage: Page | undefined,
46
32
  section: AD.Section.Section
47
33
  ): Array<Page> {
@@ -98,7 +84,7 @@ function paginateSection(
98
84
  elements.length
99
85
  );
100
86
 
101
- const tableSplit: AD.Table.Table[] = [];
87
+ const tableSplit: Array<AD.Table.Table> = [];
102
88
  if (tableHead) {
103
89
  elements.push(tableHead);
104
90
  tableSplit.push(tableHead);
@@ -140,7 +126,7 @@ function splitTable(
140
126
  pdfKit: PDFKit.PDFDocument,
141
127
  document: AD.AbstractDoc.AbstractDoc,
142
128
  resources: AD.Resources.Resources,
143
- desiredSizes: Map<{}, AD.Size.Size>,
129
+ desiredSizes: Map<object, AD.Size.Size>,
144
130
  table: AD.Table.Table,
145
131
  elementsHeight: number,
146
132
  availableHeight: number,
@@ -148,7 +134,7 @@ function splitTable(
148
134
  ): [AD.Table.Table | undefined, AD.Table.Table | undefined] {
149
135
  let tableHead = undefined;
150
136
  let tableRest = undefined;
151
- elementsHeight += table.style.margins.top || 0;
137
+ elementsHeight += table.style.margins.top ?? 0;
152
138
  if (table.headerRows.length > 0) {
153
139
  const headerSize = table.headerRows.reduce((acc, row) => (acc += getDesiredSize(row, desiredSizes).height), 0);
154
140
  elementsHeight += headerSize;
@@ -165,14 +151,7 @@ function splitTable(
165
151
  return [undefined, table];
166
152
  }
167
153
 
168
- const [newTableHead, newTableRest] = splitTableAt(
169
- pdfKit,
170
- document,
171
- resources,
172
- desiredSizes,
173
- table,
174
- Math.max(rowIndex, 1)
175
- );
154
+ const [newTableHead, newTableRest] = splitTableAt(pdfKit, document, resources, desiredSizes, table, Math.max(rowIndex, 1));
176
155
 
177
156
  if (newTableHead.children.length > 0) {
178
157
  tableHead = newTableHead;
@@ -194,7 +173,7 @@ function splitTable(
194
173
 
195
174
  function createPage(
196
175
  resources: AD.Resources.Resources,
197
- desiredSizes: Map<{}, AD.Size.Size>,
176
+ desiredSizes: Map<object, AD.Size.Size>,
198
177
  previousPage: Page | undefined,
199
178
  section: AD.Section.Section,
200
179
  columns: ReadonlyArray<PageColumn>,
@@ -203,7 +182,7 @@ function createPage(
203
182
  const style = section.page.style;
204
183
  const pageWidth = AD.PageStyle.getWidth(style);
205
184
  const pageHeight = AD.PageStyle.getHeight(style);
206
- const layout = style.orientation === "Landscape" ? "landscape" : "portrait";
185
+ const layout: "landscape" | "portrait" = style.orientation === "Landscape" ? "landscape" : "portrait";
207
186
  const pageOptions = {
208
187
  size: [pageWidth, pageHeight],
209
188
  layout: layout,
@@ -236,18 +215,14 @@ function createPage(
236
215
  const [columnLeadingSpace] = getLeadingAndTrailingSpace(resources, section, elements);
237
216
  leadingSpace = Math.min(leadingSpace ?? columnLeadingSpace, columnLeadingSpace);
238
217
  }
239
- leadingSpace ||= 0;
218
+ leadingSpace ??= 0;
240
219
  const contentRect = AD.Rect.create(rect.x, rect.y - leadingSpace, rect.width, rect.height + leadingSpace);
241
220
 
242
221
  const frontHeader =
243
- section.page.frontHeader === undefined || section.page.frontHeader.length === 0
244
- ? section.page.header
245
- : section.page.frontHeader;
222
+ section.page.frontHeader === undefined || section.page.frontHeader.length === 0 ? section.page.header : section.page.frontHeader;
246
223
 
247
224
  const frontFooter =
248
- section.page.frontFooter === undefined || section.page.frontFooter.length === 0
249
- ? section.page.footer
250
- : section.page.frontFooter;
225
+ section.page.frontFooter === undefined || section.page.frontFooter.length === 0 ? section.page.footer : section.page.frontFooter;
251
226
 
252
227
  return {
253
228
  pageNo: pageNo,
@@ -261,74 +236,18 @@ function createPage(
261
236
  };
262
237
  }
263
238
 
264
- export function getHeaderAndFooter(
265
- section: AD.Section.Section,
266
- pageNo: number
267
- ): {
268
- readonly header: Array<AD.SectionElement.SectionElement>;
269
- readonly footer: Array<AD.SectionElement.SectionElement>;
270
- readonly headerMargins: Required<AD.LayoutFoundation.LayoutFoundation>;
271
- readonly footerMargins: Required<AD.LayoutFoundation.LayoutFoundation>;
272
- } {
273
- const FIRST_PAGE = 1;
274
- const EVEN_PAGE = 0;
275
- const ODD_PAGE = 1;
276
- switch (true) {
277
- //first page
278
- case pageNo === FIRST_PAGE: {
279
- const normalHeader = section.page.frontHeader === undefined || section.page.frontHeader.length === 0;
280
- const normalFooter = section.page.frontFooter === undefined || section.page.frontFooter.length === 0;
281
- return {
282
- footer: normalFooter ? section.page.footer : section.page.frontFooter,
283
- header: normalHeader ? section.page.header : section.page.frontHeader,
284
- headerMargins: AD.LayoutFoundation.orDefault(
285
- normalHeader
286
- ? section.page.style.headerMargins
287
- : (section.page.style.firstPageHeaderMargins ?? section.page.style.headerMargins)
288
- ),
289
- footerMargins: AD.LayoutFoundation.orDefault(
290
- normalFooter
291
- ? section.page.style.footerMargins
292
- : (section.page.style.firstPageFooterMargins ?? section.page.style.footerMargins)
293
- ),
294
- };
295
- }
296
- case pageNo === 0:
297
- case pageNo % 2 === EVEN_PAGE:
298
- case pageNo % 2 === ODD_PAGE:
299
- default: {
300
- return {
301
- header: section.page.header,
302
- footer: section.page.footer,
303
- headerMargins: AD.LayoutFoundation.orDefault(section.page.style.headerMargins),
304
- footerMargins: AD.LayoutFoundation.orDefault(section.page.style.footerMargins),
305
- };
306
- }
307
- }
308
- }
309
-
310
- function getPageContentRect(
311
- desiredSizes: Map<{}, AD.Size.Size>,
312
- section: AD.Section.Section,
313
- pageNo: number
314
- ): AD.Rect.Rect {
239
+ function getPageContentRect(desiredSizes: Map<object, AD.Size.Size>, section: AD.Section.Section, pageNo: number): AD.Rect.Rect {
315
240
  const style = section.page.style;
316
241
  const styleContentMargins = AD.LayoutFoundation.orDefault(style.contentMargins);
317
242
  const pageWidth = AD.PageStyle.getWidth(style);
318
243
  const pageHeight = AD.PageStyle.getHeight(style);
319
244
 
320
245
  const { header, footer, headerMargins, footerMargins } = getHeaderAndFooter(section, pageNo);
321
- const headerHeight = header.reduce(
322
- (prev, curr) => prev + getDesiredSize(curr, desiredSizes).height,
323
- headerMargins.top + headerMargins.bottom
324
- );
325
- const footerHeight = footer.reduce(
326
- (prev, curr) => prev + getDesiredSize(curr, desiredSizes).height,
327
- footerMargins.top + footerMargins.bottom
328
- );
246
+ const headerHeight = header.reduce((prev, curr) => prev + getDesiredSize(curr, desiredSizes).height, headerMargins.top + headerMargins.bottom);
247
+ const footerHeight = footer.reduce((prev, curr) => prev + getDesiredSize(curr, desiredSizes).height, footerMargins.top + footerMargins.bottom);
329
248
 
330
249
  let headerY = headerMargins.top;
331
- for (let element of header) {
250
+ for (const element of header) {
332
251
  const elementSize = getDesiredSize(element, desiredSizes);
333
252
  headerY += elementSize.height;
334
253
  }
@@ -381,10 +300,7 @@ function getSectionElementMargin(
381
300
  }
382
301
  }
383
302
 
384
- function getParagraphMargins(
385
- resources: AD.Resources.Resources,
386
- paragraph: AD.Paragraph.Paragraph
387
- ): AD.LayoutFoundation.LayoutFoundation {
303
+ function getParagraphMargins(resources: AD.Resources.Resources, paragraph: AD.Paragraph.Paragraph): AD.LayoutFoundation.LayoutFoundation {
388
304
  const style = AD.Resources.getStyle(
389
305
  undefined,
390
306
  paragraph.style,
@@ -395,10 +311,7 @@ function getParagraphMargins(
395
311
  return style.margins;
396
312
  }
397
313
 
398
- function getGroupMargins(
399
- resources: AD.Resources.Resources,
400
- group: AD.Group.Group
401
- ): AD.LayoutFoundation.LayoutFoundation {
314
+ function getGroupMargins(resources: AD.Resources.Resources, group: AD.Group.Group): AD.LayoutFoundation.LayoutFoundation {
402
315
  const first = group.children.length > 0 ? group.children[0] : undefined;
403
316
  const last = group.children.length > 0 ? group.children[group.children.length - 1] : undefined;
404
317
  const firstMargin = first && getSectionElementMargin(resources, first);
@@ -418,21 +331,12 @@ function getGroupMargins(
418
331
  }
419
332
  }
420
333
 
421
- function getTableMargins(
422
- resources: AD.Resources.Resources,
423
- table: AD.Table.Table
424
- ): AD.LayoutFoundation.LayoutFoundation {
425
- const style = AD.Resources.getStyle(
426
- undefined,
427
- table.style,
428
- "TableStyle",
429
- table.styleName,
430
- resources
431
- ) as AD.TableStyle.TableStyle;
334
+ function getTableMargins(resources: AD.Resources.Resources, table: AD.Table.Table): AD.LayoutFoundation.LayoutFoundation {
335
+ const style = AD.Resources.getStyle(undefined, table.style, "TableStyle", table.styleName, resources) as AD.TableStyle.TableStyle;
432
336
  return style.margins;
433
337
  }
434
338
 
435
- function getDesiredSize(element: {}, desiredSizes: Map<{}, AD.Size.Size>): AD.Size.Size {
339
+ function getDesiredSize(element: object, desiredSizes: Map<object, AD.Size.Size>): AD.Size.Size {
436
340
  const size = desiredSizes.get(element);
437
341
  if (size) {
438
342
  return size;
@@ -444,14 +348,14 @@ function splitTableAt(
444
348
  pdfKit: PDFKit.PDFDocument,
445
349
  document: AD.AbstractDoc.AbstractDoc,
446
350
  resources: AD.Resources.Resources,
447
- desiredSizes: Map<{}, AD.Size.Size>,
351
+ desiredSizes: Map<object, AD.Size.Size>,
448
352
  table: AD.Table.Table,
449
353
  splitIndex: number
450
354
  ): [AD.Table.Table, AD.Table.Table] {
451
355
  //Push row/cells to head table while splitting rowspan
452
- const headRows: AD.TableRow.TableRow[] = [];
356
+ const headRows: Array<AD.TableRow.TableRow> = [];
453
357
  for (const [rowIndex, row] of table.children.slice(0, splitIndex).entries()) {
454
- const newRow: AD.TableCell.TableCell[] = [];
358
+ const newRow: Array<AD.TableCell.TableCell> = [];
455
359
  for (const cell of row.children) {
456
360
  //If this cell would span over the split index
457
361
  if (rowIndex + (cell.rowSpan || 1) - 1 >= splitIndex) {
@@ -468,13 +372,13 @@ function splitTableAt(
468
372
  //while keeping the remaining rowspan which was calculated
469
373
  //in the pre-process step
470
374
  const splitRow = table.children[splitIndex];
471
- const firstTailRow: AD.TableCell.TableCell[] = [];
375
+ const firstTailRow: Array<AD.TableCell.TableCell> = [];
472
376
  for (const cell of splitRow.children) {
473
377
  firstTailRow.push({ ...cell, dummy: false });
474
378
  }
475
379
 
476
380
  // Push the rest of the rows to tail table
477
- const tailRows: AD.TableRow.TableRow[] = [{ ...splitRow, children: firstTailRow }];
381
+ const tailRows: Array<AD.TableRow.TableRow> = [{ ...splitRow, children: firstTailRow }];
478
382
  tailRows.push(...table.children.slice(splitIndex + 1));
479
383
 
480
384
  //Create tables and remeasure them
@@ -490,7 +394,7 @@ function splitTableAt(
490
394
  };
491
395
 
492
396
  const availableSize = getDesiredSize(table, desiredSizes);
493
- let pdf = new pdfKit();
397
+ const pdf = new pdfKit();
494
398
  registerFonts((fontName: string, fontSource: AD.Font.FontSource) => pdf.registerFont(fontName, fontSource), document);
495
399
  const headSizes = measureTable(pdf, resources, availableSize, tableHead);
496
400
  const tailSizes = measureTable(pdf, resources, availableSize, tableTail);