abstract-document 20.0.3 → 20.1.0

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 (243) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +3 -3
  3. package/lib/abstract-document/abstract-doc.d.ts.map +1 -1
  4. package/lib/abstract-document/abstract-doc.js +2 -2
  5. package/lib/abstract-document/atoms/atom.d.ts +3 -3
  6. package/lib/abstract-document/atoms/atom.d.ts.map +1 -1
  7. package/lib/abstract-document/atoms/line-break.d.ts +1 -1
  8. package/lib/abstract-document/atoms/line-break.d.ts.map +1 -1
  9. package/lib/abstract-document/atoms/line-break.js +1 -1
  10. package/lib/abstract-document/atoms/line-break.js.map +1 -1
  11. package/lib/abstract-document/atoms/link-target.js +1 -1
  12. package/lib/abstract-document/atoms/text-run.d.ts.map +1 -1
  13. package/lib/abstract-document/atoms/text-run.js +1 -0
  14. package/lib/abstract-document/atoms/text-run.js.map +1 -1
  15. package/lib/abstract-document/default-styles.d.ts.map +1 -1
  16. package/lib/abstract-document/default-styles.js.map +1 -1
  17. package/lib/abstract-document/markdown/markdown.d.ts.map +1 -1
  18. package/lib/abstract-document/markdown/markdown.js +5 -5
  19. package/lib/abstract-document/markdown/markdown.js.map +1 -1
  20. package/lib/abstract-document/numberings/numbering-definition.d.ts +2 -2
  21. package/lib/abstract-document/numberings/numbering-definition.d.ts.map +1 -1
  22. package/lib/abstract-document/numberings/numbering-format.d.ts.map +1 -1
  23. package/lib/abstract-document/numberings/numbering-level-definition.js +2 -2
  24. package/lib/abstract-document/page/master-page.d.ts +1 -1
  25. package/lib/abstract-document/page/master-page.d.ts.map +1 -1
  26. package/lib/abstract-document/page/master-page.js +1 -1
  27. package/lib/abstract-document/page/master-page.js.map +1 -1
  28. package/lib/abstract-document/page/section.d.ts +1 -1
  29. package/lib/abstract-document/page/section.d.ts.map +1 -1
  30. package/lib/abstract-document/page/section.js +2 -2
  31. package/lib/abstract-document/page/section.js.map +1 -1
  32. package/lib/abstract-document/primitives/font.d.ts +1 -1
  33. package/lib/abstract-document/primitives/font.d.ts.map +1 -1
  34. package/lib/abstract-document/primitives/font.js +1 -1
  35. package/lib/abstract-document/primitives/font.js.map +1 -1
  36. package/lib/abstract-document/primitives/layout-foundation-color.d.ts.map +1 -1
  37. package/lib/abstract-document/primitives/layout-foundation-color.js +4 -4
  38. package/lib/abstract-document/primitives/layout-foundation-color.js.map +1 -1
  39. package/lib/abstract-document/primitives/layout-foundation.d.ts.map +1 -1
  40. package/lib/abstract-document/primitives/layout-foundation.js +1 -1
  41. package/lib/abstract-document/primitives/layout-foundation.js.map +1 -1
  42. package/lib/abstract-document/primitives/point.js +1 -1
  43. package/lib/abstract-document/resources.d.ts +4 -3
  44. package/lib/abstract-document/resources.d.ts.map +1 -1
  45. package/lib/abstract-document/resources.js +4 -4
  46. package/lib/abstract-document/resources.js.map +1 -1
  47. package/lib/abstract-document/section-elements/group.d.ts +1 -1
  48. package/lib/abstract-document/section-elements/group.d.ts.map +1 -1
  49. package/lib/abstract-document/section-elements/group.js +2 -2
  50. package/lib/abstract-document/section-elements/group.js.map +1 -1
  51. package/lib/abstract-document/section-elements/page-break.d.ts +2 -2
  52. package/lib/abstract-document/section-elements/page-break.d.ts.map +1 -1
  53. package/lib/abstract-document/section-elements/page-break.js +1 -2
  54. package/lib/abstract-document/section-elements/page-break.js.map +1 -1
  55. package/lib/abstract-document/section-elements/paragraph.d.ts +2 -2
  56. package/lib/abstract-document/section-elements/paragraph.d.ts.map +1 -1
  57. package/lib/abstract-document/section-elements/paragraph.js +2 -2
  58. package/lib/abstract-document/section-elements/paragraph.js.map +1 -1
  59. package/lib/abstract-document/section-elements/section-element.d.ts +1 -1
  60. package/lib/abstract-document/section-elements/section-element.d.ts.map +1 -1
  61. package/lib/abstract-document/section-elements/section-element.js.map +1 -1
  62. package/lib/abstract-document/section-elements/table.d.ts +1 -1
  63. package/lib/abstract-document/section-elements/table.d.ts.map +1 -1
  64. package/lib/abstract-document/section-elements/table.js +2 -2
  65. package/lib/abstract-document/section-elements/table.js.map +1 -1
  66. package/lib/abstract-document/styles/group-style.js +3 -3
  67. package/lib/abstract-document/styles/page-style.d.ts.map +1 -1
  68. package/lib/abstract-document/styles/page-style.js +3 -7
  69. package/lib/abstract-document/styles/page-style.js.map +1 -1
  70. package/lib/abstract-document/styles/paragraph-style.d.ts +1 -1
  71. package/lib/abstract-document/styles/paragraph-style.d.ts.map +1 -1
  72. package/lib/abstract-document/styles/paragraph-style.js +5 -5
  73. package/lib/abstract-document/styles/paragraph-style.js.map +1 -1
  74. package/lib/abstract-document/styles/style.d.ts.map +1 -1
  75. package/lib/abstract-document/styles/style.js.map +1 -1
  76. package/lib/abstract-document/styles/table-cell-style.d.ts +1 -1
  77. package/lib/abstract-document/styles/table-cell-style.d.ts.map +1 -1
  78. package/lib/abstract-document/styles/table-cell-style.js +7 -7
  79. package/lib/abstract-document/styles/table-cell-style.js.map +1 -1
  80. package/lib/abstract-document/styles/table-style.d.ts +1 -1
  81. package/lib/abstract-document/styles/table-style.d.ts.map +1 -1
  82. package/lib/abstract-document/styles/table-style.js +2 -2
  83. package/lib/abstract-document/styles/table-style.js.map +1 -1
  84. package/lib/abstract-document/styles/text-style.d.ts.map +1 -1
  85. package/lib/abstract-document/styles/text-style.js +17 -22
  86. package/lib/abstract-document/styles/text-style.js.map +1 -1
  87. package/lib/abstract-document/table/table-cell.js +2 -2
  88. package/lib/abstract-document/table/table-row.d.ts +2 -3
  89. package/lib/abstract-document/table/table-row.d.ts.map +1 -1
  90. package/lib/abstract-document/table/table-row.js +2 -3
  91. package/lib/abstract-document/table/table-row.js.map +1 -1
  92. package/lib/abstract-document/types.d.ts.map +1 -1
  93. package/lib/abstract-document-exporters/docx/document-container.d.ts +5 -5
  94. package/lib/abstract-document-exporters/docx/document-container.d.ts.map +1 -1
  95. package/lib/abstract-document-exporters/docx/document-container.js +14 -13
  96. package/lib/abstract-document-exporters/docx/document-container.js.map +1 -1
  97. package/lib/abstract-document-exporters/docx/docx-constants.d.ts.map +1 -1
  98. package/lib/abstract-document-exporters/docx/docx-constants.js +1 -4
  99. package/lib/abstract-document-exporters/docx/docx-constants.js.map +1 -1
  100. package/lib/abstract-document-exporters/docx/ref-container.d.ts +8 -10
  101. package/lib/abstract-document-exporters/docx/ref-container.d.ts.map +1 -1
  102. package/lib/abstract-document-exporters/docx/ref-container.js +34 -35
  103. package/lib/abstract-document-exporters/docx/ref-container.js.map +1 -1
  104. package/lib/abstract-document-exporters/docx/string-utils.d.ts +2 -1
  105. package/lib/abstract-document-exporters/docx/string-utils.d.ts.map +1 -1
  106. package/lib/abstract-document-exporters/docx/string-utils.js +6 -6
  107. package/lib/abstract-document-exporters/docx/string-utils.js.map +1 -1
  108. package/lib/abstract-document-exporters/docx/xml-writer.d.ts +12 -33
  109. package/lib/abstract-document-exporters/docx/xml-writer.d.ts.map +1 -1
  110. package/lib/abstract-document-exporters/docx/xml-writer.js +243 -248
  111. package/lib/abstract-document-exporters/docx/xml-writer.js.map +1 -1
  112. package/lib/abstract-document-exporters/docx2/render-image.d.ts +1 -1
  113. package/lib/abstract-document-exporters/docx2/render-image.d.ts.map +1 -1
  114. package/lib/abstract-document-exporters/docx2/render-image.js +5 -17
  115. package/lib/abstract-document-exporters/docx2/render-image.js.map +1 -1
  116. package/lib/abstract-document-exporters/docx2/render.d.ts.map +1 -1
  117. package/lib/abstract-document-exporters/docx2/render.js +37 -43
  118. package/lib/abstract-document-exporters/docx2/render.js.map +1 -1
  119. package/lib/abstract-document-exporters/pdf/font.d.ts.map +1 -1
  120. package/lib/abstract-document-exporters/pdf/font.js +14 -14
  121. package/lib/abstract-document-exporters/pdf/font.js.map +1 -1
  122. package/lib/abstract-document-exporters/pdf/header-footer.d.ts +8 -0
  123. package/lib/abstract-document-exporters/pdf/header-footer.d.ts.map +1 -0
  124. package/lib/abstract-document-exporters/pdf/header-footer.js +31 -0
  125. package/lib/abstract-document-exporters/pdf/header-footer.js.map +1 -0
  126. package/lib/abstract-document-exporters/pdf/measure.d.ts +4 -4
  127. package/lib/abstract-document-exporters/pdf/measure.d.ts.map +1 -1
  128. package/lib/abstract-document-exporters/pdf/measure.js +31 -32
  129. package/lib/abstract-document-exporters/pdf/measure.js.map +1 -1
  130. package/lib/abstract-document-exporters/pdf/page.d.ts +15 -0
  131. package/lib/abstract-document-exporters/pdf/page.d.ts.map +1 -0
  132. package/lib/abstract-document-exporters/pdf/page.js +2 -0
  133. package/lib/abstract-document-exporters/pdf/page.js.map +1 -0
  134. package/lib/abstract-document-exporters/pdf/paginate.d.ts +2 -20
  135. package/lib/abstract-document-exporters/pdf/paginate.d.ts.map +1 -1
  136. package/lib/abstract-document-exporters/pdf/paginate.js +8 -44
  137. package/lib/abstract-document-exporters/pdf/paginate.js.map +1 -1
  138. package/lib/abstract-document-exporters/pdf/pre-process.d.ts.map +1 -1
  139. package/lib/abstract-document-exporters/pdf/pre-process.js +10 -36
  140. package/lib/abstract-document-exporters/pdf/pre-process.js.map +1 -1
  141. package/lib/abstract-document-exporters/pdf/render-image.d.ts.map +1 -1
  142. package/lib/abstract-document-exporters/pdf/render-image.js +25 -35
  143. package/lib/abstract-document-exporters/pdf/render-image.js.map +1 -1
  144. package/lib/abstract-document-exporters/pdf/render.d.ts +4 -3
  145. package/lib/abstract-document-exporters/pdf/render.d.ts.map +1 -1
  146. package/lib/abstract-document-exporters/pdf/render.js +60 -49
  147. package/lib/abstract-document-exporters/pdf/render.js.map +1 -1
  148. package/lib/abstract-document-exporters/pdf/std-fonts.js +2 -2
  149. package/lib/abstract-document-exporters/pdf/std-fonts.js.map +1 -1
  150. package/lib/abstract-document-exporters/pdf/textRunRow.d.ts +3 -3
  151. package/lib/abstract-document-exporters/pdf/textRunRow.d.ts.map +1 -1
  152. package/lib/abstract-document-exporters/pdf/textRunRow.js +26 -20
  153. package/lib/abstract-document-exporters/pdf/textRunRow.js.map +1 -1
  154. package/lib/abstract-document-exporters/pdf/update-refs.d.ts +1 -1
  155. package/lib/abstract-document-exporters/pdf/update-refs.d.ts.map +1 -1
  156. package/lib/abstract-document-exporters/pdf/update-refs.js +3 -2
  157. package/lib/abstract-document-exporters/pdf/update-refs.js.map +1 -1
  158. package/lib/abstract-document-exporters/shared/get_resources.d.ts.map +1 -1
  159. package/lib/abstract-document-exporters/shared/get_resources.js.map +1 -1
  160. package/lib/abstract-document-jsx/index.d.ts +2 -3
  161. package/lib/abstract-document-jsx/index.d.ts.map +1 -1
  162. package/lib/abstract-document-jsx/index.js +10 -6
  163. package/lib/abstract-document-jsx/index.js.map +1 -1
  164. package/lib/abstract-document-xml/abstract-doc-of-xml/abstract-doc-of-xml.d.ts +3 -7
  165. package/lib/abstract-document-xml/abstract-doc-of-xml/abstract-doc-of-xml.d.ts.map +1 -1
  166. package/lib/abstract-document-xml/abstract-doc-of-xml/abstract-doc-of-xml.js +6 -4
  167. package/lib/abstract-document-xml/abstract-doc-of-xml/abstract-doc-of-xml.js.map +1 -1
  168. package/lib/abstract-document-xml/abstract-doc-of-xml/creator.d.ts.map +1 -1
  169. package/lib/abstract-document-xml/abstract-doc-of-xml/creator.js +8 -4
  170. package/lib/abstract-document-xml/abstract-doc-of-xml/creator.js.map +1 -1
  171. package/lib/abstract-document-xml/abstract-doc-of-xml/custom-elements.d.ts.map +1 -1
  172. package/lib/abstract-document-xml/abstract-doc-of-xml/custom-elements.js +4 -8
  173. package/lib/abstract-document-xml/abstract-doc-of-xml/custom-elements.js.map +1 -1
  174. package/lib/abstract-document-xml/xsd-template/xsd-template.js +2 -2
  175. package/lib/abstract-document-xml/xsd-template/xsd-template.js.map +1 -1
  176. package/package.json +21 -21
  177. package/src/abstract-document/abstract-doc.ts +6 -6
  178. package/src/abstract-document/atoms/atom.ts +3 -3
  179. package/src/abstract-document/atoms/line-break.ts +1 -1
  180. package/src/abstract-document/atoms/link-target.ts +1 -1
  181. package/src/abstract-document/atoms/text-run.ts +1 -0
  182. package/src/abstract-document/default-styles.ts +1 -1
  183. package/src/abstract-document/markdown/markdown.ts +7 -7
  184. package/src/abstract-document/numberings/numbering-definition.ts +2 -2
  185. package/src/abstract-document/numberings/numbering-format.ts +1 -7
  186. package/src/abstract-document/numberings/numbering-level-definition.ts +2 -2
  187. package/src/abstract-document/page/master-page.ts +2 -2
  188. package/src/abstract-document/page/section.ts +3 -3
  189. package/src/abstract-document/primitives/font.ts +1 -12
  190. package/src/abstract-document/primitives/layout-foundation-color.ts +5 -8
  191. package/src/abstract-document/primitives/layout-foundation.ts +2 -5
  192. package/src/abstract-document/primitives/point.ts +1 -1
  193. package/src/abstract-document/resources.ts +9 -14
  194. package/src/abstract-document/section-elements/group.ts +3 -3
  195. package/src/abstract-document/section-elements/page-break.ts +2 -3
  196. package/src/abstract-document/section-elements/paragraph.ts +4 -4
  197. package/src/abstract-document/section-elements/section-element.ts +1 -1
  198. package/src/abstract-document/section-elements/table.ts +3 -3
  199. package/src/abstract-document/styles/group-style.ts +3 -3
  200. package/src/abstract-document/styles/page-style.ts +3 -7
  201. package/src/abstract-document/styles/paragraph-style.ts +6 -14
  202. package/src/abstract-document/styles/style.ts +1 -5
  203. package/src/abstract-document/styles/table-cell-style.ts +8 -18
  204. package/src/abstract-document/styles/table-style.ts +3 -8
  205. package/src/abstract-document/styles/text-style.ts +31 -36
  206. package/src/abstract-document/table/table-cell.ts +2 -2
  207. package/src/abstract-document/table/table-row.ts +3 -4
  208. package/src/abstract-document/types.ts +0 -1
  209. package/src/abstract-document-exporters/docx/document-container.ts +24 -13
  210. package/src/abstract-document-exporters/docx/docx-constants.ts +2 -6
  211. package/src/abstract-document-exporters/docx/ref-container.ts +48 -41
  212. package/src/abstract-document-exporters/docx/string-utils.ts +6 -10
  213. package/src/abstract-document-exporters/docx/xml-writer.ts +261 -265
  214. package/src/abstract-document-exporters/docx2/render-image.ts +16 -50
  215. package/src/abstract-document-exporters/docx2/render.ts +68 -121
  216. package/src/abstract-document-exporters/pdf/font.ts +27 -32
  217. package/src/abstract-document-exporters/pdf/header-footer.ts +43 -0
  218. package/src/abstract-document-exporters/pdf/measure.ts +52 -103
  219. package/src/abstract-document-exporters/pdf/page.ts +16 -0
  220. package/src/abstract-document-exporters/pdf/paginate.ts +29 -120
  221. package/src/abstract-document-exporters/pdf/pre-process.ts +13 -48
  222. package/src/abstract-document-exporters/pdf/render-image.ts +30 -47
  223. package/src/abstract-document-exporters/pdf/render.ts +84 -128
  224. package/src/abstract-document-exporters/pdf/std-fonts.ts +2 -2
  225. package/src/abstract-document-exporters/pdf/textRunRow.ts +100 -77
  226. package/src/abstract-document-exporters/pdf/update-refs.ts +10 -33
  227. package/src/abstract-document-exporters/shared/get_resources.ts +4 -4
  228. package/src/abstract-document-jsx/index.ts +38 -26
  229. package/src/abstract-document-xml/abstract-doc-of-xml/abstract-doc-of-xml.ts +23 -35
  230. package/src/abstract-document-xml/abstract-doc-of-xml/creator.ts +17 -29
  231. package/src/abstract-document-xml/abstract-doc-of-xml/custom-elements.tsx +8 -30
  232. package/src/abstract-document-xml/xsd-template/styles.ts +1 -1
  233. package/src/abstract-document-xml/xsd-template/xsd-template.ts +2 -2
  234. package/lib/abstract-document/table/text-row.d.ts +0 -2
  235. package/lib/abstract-document/table/text-row.d.ts.map +0 -1
  236. package/lib/abstract-document/table/text-row.js +0 -2
  237. package/lib/abstract-document/table/text-row.js.map +0 -1
  238. package/lib/abstract-document-exporters/docx/docx-document-renderer.d.ts +0 -2
  239. package/lib/abstract-document-exporters/docx/docx-document-renderer.d.ts.map +0 -1
  240. package/lib/abstract-document-exporters/docx/docx-document-renderer.js +0 -1085
  241. package/lib/abstract-document-exporters/docx/docx-document-renderer.js.map +0 -1
  242. package/src/abstract-document/table/text-row.ts +0 -0
  243. package/src/abstract-document-exporters/docx/docx-document-renderer.ts +0 -1084
@@ -0,0 +1,43 @@
1
+ import * as AD from "../../abstract-document/index.js";
2
+
3
+ export function getHeaderAndFooter(
4
+ section: AD.Section.Section,
5
+ pageNo: number
6
+ ): {
7
+ readonly header: Array<AD.SectionElement.SectionElement>;
8
+ readonly footer: Array<AD.SectionElement.SectionElement>;
9
+ readonly headerMargins: Required<AD.LayoutFoundation.LayoutFoundation>;
10
+ readonly footerMargins: Required<AD.LayoutFoundation.LayoutFoundation>;
11
+ } {
12
+ const FIRST_PAGE = 1;
13
+ const EVEN_PAGE = 0;
14
+ const ODD_PAGE = 1;
15
+ switch (true) {
16
+ //first page
17
+ case pageNo === FIRST_PAGE: {
18
+ const normalHeader = section.page.frontHeader === undefined || section.page.frontHeader.length === 0;
19
+ const normalFooter = section.page.frontFooter === undefined || section.page.frontFooter.length === 0;
20
+ return {
21
+ footer: normalFooter ? section.page.footer : section.page.frontFooter,
22
+ header: normalHeader ? section.page.header : section.page.frontHeader,
23
+ headerMargins: AD.LayoutFoundation.orDefault(
24
+ normalHeader ? section.page.style.headerMargins : (section.page.style.firstPageHeaderMargins ?? section.page.style.headerMargins)
25
+ ),
26
+ footerMargins: AD.LayoutFoundation.orDefault(
27
+ normalFooter ? section.page.style.footerMargins : (section.page.style.firstPageFooterMargins ?? section.page.style.footerMargins)
28
+ ),
29
+ };
30
+ }
31
+ case pageNo === 0:
32
+ case pageNo % 2 === EVEN_PAGE:
33
+ case pageNo % 2 === ODD_PAGE:
34
+ default: {
35
+ return {
36
+ header: section.page.header,
37
+ footer: section.page.footer,
38
+ headerMargins: AD.LayoutFoundation.orDefault(section.page.style.headerMargins),
39
+ footerMargins: AD.LayoutFoundation.orDefault(section.page.style.footerMargins),
40
+ };
41
+ }
42
+ }
43
+ }
@@ -1,16 +1,14 @@
1
- import * as AD from "../../abstract-document/index.js";
2
1
  import { exhaustiveCheck } from "ts-exhaustive-check";
3
- import type { Page } from "./paginate.js";
4
- import { getHeaderAndFooter } from "./paginate.js";
2
+ import * as AD from "../../abstract-document/index.js";
5
3
  import { registerFonts, getFontNameStyle } from "./font.js";
6
-
7
- //tslint:disable:no-any variable-name
4
+ import { getHeaderAndFooter } from "./header-footer.js";
5
+ import type { Page } from "./page.js";
8
6
 
9
7
  const widthOfStringCache = new Map<string, number>();
10
8
  const heightOfStringCache = new Map<string, number>();
11
9
 
12
- export function measure(pdfKit: PDFKit.PDFDocument, document: AD.AbstractDoc.AbstractDoc): Map<any, AD.Size.Size> {
13
- 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();
14
12
  registerFonts((fontName: string, fontSource: AD.Font.FontSource) => pdf.registerFont(fontName, fontSource), document);
15
13
  const result = mergeMaps(document.children.map((s) => measureSection(pdf, document, s)));
16
14
  widthOfStringCache.clear();
@@ -22,15 +20,11 @@ export function measurePages(
22
20
  pdfKit: PDFKit.PDFDocument,
23
21
  document: AD.AbstractDoc.AbstractDoc,
24
22
  pages: ReadonlyArray<Page>
25
- ): Map<any, AD.Size.Size> {
23
+ ): Map<object, AD.Size.Size> {
26
24
  const pdf = new pdfKit();
27
25
  registerFonts((fontName: string, fontSource: AD.Font.FontSource) => pdf.registerFont(fontName, fontSource), document);
28
26
  return mergeMaps(
29
- pages.flatMap((page) =>
30
- page.columns.map(({ elements }) =>
31
- measureSection(pdf, document, page.section, page.header, page.footer, elements)
32
- )
33
- )
27
+ pages.flatMap((page) => page.columns.map(({ elements }) => measureSection(pdf, document, page.section, page.header, page.footer, elements)))
34
28
  );
35
29
  }
36
30
 
@@ -41,10 +35,10 @@ function measureSection(
41
35
  separateHeader?: ReadonlyArray<AD.SectionElement.SectionElement>,
42
36
  separateFooter?: ReadonlyArray<AD.SectionElement.SectionElement>,
43
37
  separateChildren?: ReadonlyArray<AD.SectionElement.SectionElement>
44
- ): Map<any, AD.Size.Size> {
45
- const header = separateHeader || section.page.header;
46
- const footer = separateFooter || section.page.footer;
47
- 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;
48
42
 
49
43
  const pageWidth = AD.PageStyle.getWidth(section.page.style);
50
44
  const pageHeight = AD.PageStyle.getHeight(section.page.style);
@@ -69,9 +63,7 @@ function measureSection(
69
63
 
70
64
  //header and footer sizes for the first page
71
65
  const firstPageHeaderAndFooters = getHeaderAndFooter(section, 1);
72
- const firstPageHeaderAndFootersExtracted: ReadonlyArray<
73
- [ReadonlyArray<AD.SectionElement.SectionElement>, AD.LayoutFoundation.LayoutFoundation]
74
- > = [
66
+ const firstPageHeaderAndFootersExtracted: ReadonlyArray<[ReadonlyArray<AD.SectionElement.SectionElement>, AD.LayoutFoundation.LayoutFoundation]> = [
75
67
  [firstPageHeaderAndFooters.header, firstPageHeaderAndFooters.headerMargins],
76
68
  [firstPageHeaderAndFooters.footer, firstPageHeaderAndFooters.footerMargins],
77
69
  ];
@@ -90,7 +82,7 @@ function measureSectionElement(
90
82
  parentResources: AD.Resources.Resources,
91
83
  availableSize: AD.Size.Size,
92
84
  element: AD.SectionElement.SectionElement
93
- ): Map<any, AD.Size.Size> {
85
+ ): Map<object, AD.Size.Size> {
94
86
  const resources = AD.Resources.mergeResources([parentResources, element]);
95
87
  switch (element.type) {
96
88
  case "Paragraph":
@@ -106,8 +98,8 @@ function measureSectionElement(
106
98
  }
107
99
  }
108
100
 
109
- function measurePageBreak(availableSize: AD.Size.Size, pageBreak: AD.PageBreak.PageBreak): Map<any, AD.Size.Size> {
110
- 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>();
111
103
  desiredSizes.set(pageBreak, availableSize);
112
104
  return desiredSizes;
113
105
  }
@@ -117,7 +109,7 @@ function measureParagraph(
117
109
  resources: AD.Resources.Resources,
118
110
  availableSize: AD.Size.Size,
119
111
  paragraph: AD.Paragraph.Paragraph
120
- ): Map<any, AD.Size.Size> {
112
+ ): Map<object, AD.Size.Size> {
121
113
  const style = AD.Resources.getStyle(
122
114
  undefined,
123
115
  paragraph.style,
@@ -131,7 +123,7 @@ function measureParagraph(
131
123
  const contentAvailableSize = AD.Size.create(contentAvailableWidth, contentAvailableHeight);
132
124
 
133
125
  let paragraphHeight = styleMargins.top + styleMargins.bottom;
134
- let desiredSizes = new Map<any, AD.Size.Size>();
126
+ const desiredSizes = new Map<object, AD.Size.Size>();
135
127
 
136
128
  const rows: Array<Array<AD.Atom.Atom>> = [];
137
129
  let currentRow: Array<AD.Atom.Atom> = [];
@@ -152,19 +144,12 @@ function measureParagraph(
152
144
  let currentRowHeight = 0;
153
145
  let concatenatedText = "";
154
146
  let hasAtomImage = false;
155
- let textOptions;
147
+ let textOptions: AD.TextStyle.TextStyle | undefined = undefined;
156
148
  for (const atom of row) {
157
149
  if (atom.type === "Image") {
158
150
  hasAtomImage = true;
159
151
  }
160
- const atomSize = measureAtom(
161
- pdfKit,
162
- resources,
163
- style.textStyle,
164
- contentAvailableSize,
165
- contentAvailableSize.width - currentRowWidth,
166
- atom
167
- );
152
+ const atomSize = measureAtom(pdfKit, resources, style.textStyle, contentAvailableSize, contentAvailableSize.width - currentRowWidth, atom);
168
153
  if (atom.type === "TextRun" || atom.type === "TextField" || atom.type === "HyperLink") {
169
154
  concatenatedText += atom.text;
170
155
  textOptions = getBiggestStyle(atom, style, resources, textOptions);
@@ -195,7 +180,7 @@ function measureParagraph(
195
180
  // );
196
181
 
197
182
  const height = pdfKit.heightOfString(concatenatedText, {
198
- width: textOptions && textOptions.lineBreak === false ? Infinity : availableSize.width,
183
+ width: textOptions?.lineBreak === false ? Infinity : availableSize.width,
199
184
  ...textOptions,
200
185
  });
201
186
  paragraphHeight += height;
@@ -237,25 +222,19 @@ export function measureTable(
237
222
  resources: AD.Resources.Resources,
238
223
  availableSize: AD.Size.Size,
239
224
  table: AD.Table.Table
240
- ): Map<any, AD.Size.Size> {
241
- const style = AD.Resources.getStyle(
242
- undefined,
243
- table.style,
244
- "TableStyle",
245
- table.styleName,
246
- resources
247
- ) 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;
248
227
  const styleMargins = AD.LayoutFoundation.orDefault(style.margins);
249
228
  const tableAvailableWidth = availableSize.width - (styleMargins.left + styleMargins.right);
250
- const numInfinityColumns = table.columnWidths.filter((w) => !isFinite(w)).length;
251
- 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);
252
231
  const infinityWidth = (tableAvailableWidth - fixedColumnsWidth) / numInfinityColumns;
253
- const columnWidths = table.columnWidths.map((w) => (isFinite(w) ? w : infinityWidth));
254
- 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>();
255
234
  const rows = [...table.headerRows, ...table.children];
256
- for (let row of rows) {
235
+ for (const row of rows) {
257
236
  let column = 0;
258
- for (let cell of row.children) {
237
+ for (const cell of row.children) {
259
238
  const cellStyle = AD.Resources.getStyle(
260
239
  style.cellStyle,
261
240
  cell.style,
@@ -276,7 +255,7 @@ export function measureTable(
276
255
  const contentAvailableWidth = cellWidth - (cellStylePadding.left + cellStylePadding.right);
277
256
  let cellDesiredHeight = cellStylePadding.top + cellStylePadding.bottom;
278
257
 
279
- for (let element of cell.children) {
258
+ for (const element of cell.children) {
280
259
  const elementAvailableSize = AD.Size.create(contentAvailableWidth, Infinity);
281
260
  const elementSizes = measureSectionElement(pdfKit, resources, elementAvailableSize, element);
282
261
  elementSizes.forEach((v, k) => desiredSizes.set(k, v));
@@ -303,7 +282,7 @@ export function measureTable(
303
282
  return a.child.rowSpan - b.child.rowSpan;
304
283
  }
305
284
  });
306
- const minRowHeights = new Array(rows.length).fill(0);
285
+ const minRowHeights = Array.from({ length: rows.length }, () => 0);
307
286
  for (const { child, rowIndex } of cells) {
308
287
  const rowSpan = child.rowSpan || 1;
309
288
  let currentHeight = 0;
@@ -319,7 +298,7 @@ export function measureTable(
319
298
  }
320
299
  }
321
300
 
322
- const desiredWidth = table.columnWidths.some((w) => !isFinite(w))
301
+ const desiredWidth = table.columnWidths.some((w) => !Number.isFinite(w))
323
302
  ? availableSize.width
324
303
  : table.columnWidths.reduce((a, b) => a + b, styleMargins.left + styleMargins.right);
325
304
  let desiredHeight = styleMargins.top + styleMargins.bottom;
@@ -328,8 +307,8 @@ export function measureTable(
328
307
  const rowHeight = minRowHeights[i];
329
308
  desiredHeight += rowHeight;
330
309
  desiredSizes.set(row, AD.Size.create(desiredWidth, rowHeight));
331
- for (let cell of row.children) {
332
- 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);
333
312
  desiredSizes.set(cell, AD.Size.create(cellSize.width, rowHeight));
334
313
  }
335
314
  }
@@ -344,11 +323,9 @@ function measureGroup(
344
323
  resources: AD.Resources.Resources,
345
324
  availableSize: AD.Size.Size,
346
325
  keepTogether: AD.Group.Group
347
- ): Map<any, AD.Size.Size> {
348
- let desiredSizes = mergeMaps(
349
- keepTogether.children.map((e) => measureSectionElement(pdfKit, resources, availableSize, e))
350
- );
351
- 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(
352
329
  (sum, e) => sum + (AD.Position.isPositionAbsolute(e) ? 0 : getDesiredSize(e, desiredSizes).height),
353
330
  0.0
354
331
  );
@@ -400,7 +377,7 @@ function measureLineBreak(
400
377
  "TextStyle",
401
378
  lineBreak.styleName,
402
379
  resources,
403
- lineBreak.nestedStyleNames || []
380
+ lineBreak.nestedStyleNames ?? []
404
381
  ) as AD.TextStyle.TextStyle;
405
382
  return measureText(pdfKit, "A", style, availableSize);
406
383
  }
@@ -418,7 +395,7 @@ function measureTextRun(
418
395
  "TextStyle",
419
396
  textRun.styleName,
420
397
  resources,
421
- textRun.nestedStyleNames || []
398
+ textRun.nestedStyleNames ?? []
422
399
  ) as AD.TextStyle.TextStyle;
423
400
  return measureText(pdf, textRun.text, style, availableSize, true);
424
401
  }
@@ -430,13 +407,7 @@ function measureHyperLink(
430
407
  hyperLink: AD.HyperLink.HyperLink,
431
408
  availableSize: AD.Size.Size
432
409
  ): AD.Size.Size {
433
- const style = AD.Resources.getStyle(
434
- textStyle,
435
- hyperLink.style,
436
- "TextStyle",
437
- hyperLink.styleName,
438
- resources
439
- ) as AD.TextStyle.TextStyle;
410
+ const style = AD.Resources.getStyle(textStyle, hyperLink.style, "TextStyle", hyperLink.styleName, resources) as AD.TextStyle.TextStyle;
440
411
  return measureText(pdf, hyperLink.text, style, availableSize);
441
412
  }
442
413
 
@@ -447,13 +418,7 @@ function measureTextField(
447
418
  textField: AD.TextField.TextField,
448
419
  availableSize: AD.Size.Size
449
420
  ): AD.Size.Size {
450
- const style = AD.Resources.getStyle(
451
- textStyle,
452
- textField.style,
453
- "TextStyle",
454
- textField.styleName,
455
- resources
456
- ) as AD.TextStyle.TextStyle;
421
+ const style = AD.Resources.getStyle(textStyle, textField.style, "TextStyle", textField.styleName, resources) as AD.TextStyle.TextStyle;
457
422
  switch (textField.fieldType) {
458
423
  case "Date":
459
424
  return measureText(pdf, new Date(Date.now()).toDateString(), style, availableSize);
@@ -479,20 +444,16 @@ function measureTocSeparator(
479
444
  };
480
445
  }
481
446
 
482
- function measureImage(
483
- resources: AD.Resources.Resources,
484
- availableSize: AD.Size.Size,
485
- image: AD.Image.Image
486
- ): AD.Size.Size {
447
+ function measureImage(resources: AD.Resources.Resources, availableSize: AD.Size.Size, image: AD.Image.Image): AD.Size.Size {
487
448
  const ai = image.imageResource.abstractImage;
488
449
  const firstComp = ai.components[0];
489
450
  const resource =
490
451
  !ai.size.width && !ai.size.height && firstComp?.type === "binaryimage" && firstComp.data.type === "url"
491
- ? resources.imageResources?.[firstComp.data.url] ?? image.imageResource
452
+ ? (resources.imageResources?.[firstComp.data.url] ?? image.imageResource)
492
453
  : image.imageResource;
493
454
 
494
455
  let desiredWidth = availableSize.width;
495
- if (!isFinite(image.width)) {
456
+ if (!Number.isFinite(image.width)) {
496
457
  desiredWidth = availableSize.width;
497
458
  } else if (image.width) {
498
459
  desiredWidth = image.width;
@@ -501,7 +462,7 @@ function measureImage(
501
462
  }
502
463
 
503
464
  let desiredHeight = availableSize.height;
504
- if (!isFinite(image.height)) {
465
+ if (!Number.isFinite(image.height)) {
505
466
  desiredHeight = availableSize.height;
506
467
  } else if (image.height) {
507
468
  desiredHeight = image.height;
@@ -527,11 +488,11 @@ function measureText(
527
488
  pdf
528
489
  .font(font)
529
490
  .fontSize(fontSize)
530
- .fillColor(textStyle.color || "black");
491
+ .fillColor(textStyle.color ?? "black");
531
492
 
532
493
  const textOptions = {
533
- underline: textStyle.underline || false,
534
- indent: textStyle.indent || 0,
494
+ underline: textStyle.underline ?? false,
495
+ indent: textStyle.indent ?? 0,
535
496
  lineBreak: textStyle.lineBreak ?? true,
536
497
  ...(textStyle.characterSpacing !== undefined ? { characterSpacing: textStyle.characterSpacing } : {}),
537
498
  ...(textStyle.lineGap !== undefined ? { lineGap: textStyle.lineGap } : {}),
@@ -557,13 +518,7 @@ function measureText(
557
518
  return AD.Size.create(width, height, availableSize.width);
558
519
  }
559
520
 
560
- function widthOfString(
561
- pdf: PDFKit.PDFDocument,
562
- font: string,
563
- fontSize: number,
564
- text: string,
565
- options: PDFKit.Mixins.TextOptions
566
- ): number {
521
+ function widthOfString(pdf: PDFKit.PDFDocument, font: string, fontSize: number, text: string, options: PDFKit.Mixins.TextOptions): number {
567
522
  const key = JSON.stringify({ font, fontSize, text, options });
568
523
  const cached = widthOfStringCache.get(key);
569
524
  if (cached !== undefined) {
@@ -576,13 +531,7 @@ function widthOfString(
576
531
  return width;
577
532
  }
578
533
 
579
- function heightOfString(
580
- pdf: PDFKit.PDFDocument,
581
- font: string,
582
- fontSize: number,
583
- text: string,
584
- options: PDFKit.Mixins.TextOptions
585
- ): number {
534
+ function heightOfString(pdf: PDFKit.PDFDocument, font: string, fontSize: number, text: string, options: PDFKit.Mixins.TextOptions): number {
586
535
  const key = JSON.stringify({ font, fontSize, text, options });
587
536
  const cached = heightOfStringCache.get(key);
588
537
  if (cached !== undefined) {
@@ -595,13 +544,13 @@ function heightOfString(
595
544
  return height;
596
545
  }
597
546
 
598
- function mergeMaps(maps: Array<Map<any, AD.Size.Size>>): Map<any, AD.Size.Size> {
599
- 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>();
600
549
  maps.forEach((m) => m.forEach((v, k) => newMap.set(k, v)));
601
550
  return newMap;
602
551
  }
603
552
 
604
- 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 {
605
554
  const size = desiredSizes.get(element);
606
555
  if (size) {
607
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
+ }