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
@@ -1,51 +1,44 @@
1
+ // oxlint-disable-next-line import/no-named-as-default -- standard pdfkit import idiom
2
+ import PDFDocument from "pdfkit";
3
+ import { toBlob, toBytes } from "pdfkit/output";
1
4
  import * as AD from "../../abstract-document/index.js";
2
- import { preProcess } from "./pre-process.js";
5
+ import { registerFonts, getFontNameStyle } from "./font.js";
6
+ import { getHeaderAndFooter } from "./header-footer.js";
3
7
  import { measure, measurePages } from "./measure.js";
4
- import type { Page } from "./paginate.js";
5
- import { paginate, getHeaderAndFooter } from "./paginate.js";
6
- import { updatePageRefs } from "./update-refs.js";
8
+ import type { Page } from "./page.js";
9
+ import { paginate } from "./paginate.js";
10
+ import { preProcess } from "./pre-process.js";
7
11
  import { renderImage } from "./render-image.js";
8
- import { registerFonts, getFontNameStyle } from "./font.js";
9
12
  import { registerDefaultStdFonts } from "./std-fonts.js";
10
- import { toBlob, toBytes } from "pdfkit/output";
11
- import PDFDocument from "pdfkit";
12
13
  import type { PdfKitAlignment } from "./textRunRow.js";
13
14
  import { rowsCombineTextRuns, rowsSplit } from "./textRunRow.js";
15
+ import { updatePageRefs } from "./update-refs.js";
14
16
 
15
17
  export type PdfExportOptions = {
16
18
  compress: boolean;
17
19
  };
18
20
 
19
- export function exportToHTML5Blob(
20
- doc: AD.AbstractDoc.AbstractDoc,
21
- options: PdfExportOptions = { compress: false }
22
- ): Promise<Blob> {
21
+ export function exportToHTML5Blob(doc: AD.AbstractDoc.AbstractDoc, options: PdfExportOptions = { compress: false }): Promise<Blob> {
23
22
  const pdf = createDocument(options, doc);
24
23
  return toBlob(pdf);
25
24
  }
26
25
 
27
- export function exportToBytes(
28
- doc: AD.AbstractDoc.AbstractDoc,
29
- options: PdfExportOptions = { compress: false }
30
- ): Promise<Uint8Array> {
26
+ export function exportToBytes(doc: AD.AbstractDoc.AbstractDoc, options: PdfExportOptions = { compress: false }): Promise<Uint8Array> {
31
27
  const pdf = createDocument(options, doc);
32
28
  return toBytes(pdf);
33
29
  }
34
30
 
35
31
  /**
36
- * On the client side the stream can be a BlobStream from the blob-stream package.
37
- * On the server-side the stream can be a file stream from the fs package.
32
+ * On the client side the stream can be a BlobStream from the blob-stream package. On the server-side the stream can be a file stream from the fs
33
+ * package.
34
+ *
38
35
  * @param blobStream
39
36
  * @param doc
40
37
  * @param options
41
38
  */
42
- export function exportToStream(
43
- blobStream: any,
44
- doc: AD.AbstractDoc.AbstractDoc,
45
- options: PdfExportOptions = { compress: false }
46
- ): void {
47
- let pdf = createDocument(options, doc);
48
- pdf.pipe(blobStream);
39
+ export function exportToStream(blobStream: unknown, doc: AD.AbstractDoc.AbstractDoc, options: PdfExportOptions = { compress: false }): void {
40
+ const pdf = createDocument(options, doc);
41
+ pdf.pipe(blobStream as NodeJS.WritableStream);
49
42
  }
50
43
 
51
44
  function createDocument(options: PdfExportOptions, ad: AD.AbstractDoc.AbstractDoc): PDFKit.PDFDocument {
@@ -59,19 +52,14 @@ function createDocument(options: PdfExportOptions, ad: AD.AbstractDoc.AbstractDo
59
52
  const updatedPages = updatePageRefs(pages);
60
53
  const pageDesiredSizes = measurePages(PDFDocument, document, updatedPages);
61
54
 
62
- for (let page of updatedPages) {
55
+ for (const page of updatedPages) {
63
56
  renderPage(document, pdf, pageDesiredSizes, page);
64
57
  }
65
58
  pdf.end();
66
59
  return pdf;
67
60
  }
68
61
 
69
- function renderPage(
70
- parentResources: AD.Resources.Resources,
71
- pdfKit: PDFKit.PDFDocument,
72
- desiredSizes: Map<{}, AD.Size.Size>,
73
- page: Page
74
- ): void {
62
+ function renderPage(parentResources: AD.Resources.Resources, pdfKit: PDFKit.PDFDocument, desiredSizes: Map<object, AD.Size.Size>, page: Page): void {
75
63
  const section = page.section;
76
64
  const style = section.page.style;
77
65
  const resources = AD.Resources.mergeResources([parentResources, section]);
@@ -79,8 +67,8 @@ function renderPage(
79
67
  const contentRect = addPage(pdfKit, page);
80
68
 
81
69
  page.namedDestionations.forEach((dest) => {
82
- if ((pdfKit as any).addNamedDestination) {
83
- (pdfKit as any).addNamedDestination(dest);
70
+ if (pdfKit.addNamedDestination) {
71
+ pdfKit.addNamedDestination(dest);
84
72
  }
85
73
  });
86
74
 
@@ -88,7 +76,7 @@ function renderPage(
88
76
  const headerX = headerMargins.left;
89
77
  const headerStart = headerMargins.top;
90
78
  let headerY = headerStart;
91
- for (let element of page.header) {
79
+ for (const element of page.header) {
92
80
  const elementSize = getDesiredSize(element, desiredSizes);
93
81
  const isAbsolute = AD.Position.isPositionAbsolute(element);
94
82
  renderSectionElement(
@@ -111,7 +99,7 @@ function renderPage(
111
99
  const footerX = footerMargins.left;
112
100
  const footerStart = pageHeight - (footerHeight - footerMargins.top);
113
101
  let footerY = footerStart;
114
- for (let element of page.footer) {
102
+ for (const element of page.footer) {
115
103
  const elementSize = getDesiredSize(element, desiredSizes);
116
104
  const isAbsolute = AD.Position.isPositionAbsolute(element);
117
105
  renderSectionElement(
@@ -127,8 +115,7 @@ function renderPage(
127
115
  }
128
116
 
129
117
  const elementStart = contentRect.y;
130
- const columnStep =
131
- contentRect.width / section.page.style.columnLayout.columnCount + section.page.style.columnLayout.columnGap;
118
+ const columnStep = contentRect.width / section.page.style.columnLayout.columnCount + section.page.style.columnLayout.columnGap;
132
119
  for (let columnIndex = 0; columnIndex < page.columns.length; columnIndex++) {
133
120
  const x = contentRect.x + columnStep * columnIndex;
134
121
  let y = elementStart;
@@ -169,7 +156,7 @@ function addPage(pdf: PDFKit.PDFDocument, page: Page): AD.Rect.Rect {
169
156
  function renderSectionElement(
170
157
  parentResources: AD.Resources.Resources,
171
158
  pdf: PDFKit.PDFDocument,
172
- desiredSizes: Map<{}, AD.Size.Size>,
159
+ desiredSizes: Map<object, AD.Size.Size>,
173
160
  finalRect: AD.Rect.Rect,
174
161
  element: AD.SectionElement.SectionElement
175
162
  ): void {
@@ -177,20 +164,22 @@ function renderSectionElement(
177
164
  switch (element.type) {
178
165
  case "Paragraph":
179
166
  renderParagraph(resources, pdf, desiredSizes, finalRect, element);
180
- return;
167
+ break;
181
168
  case "Table":
182
169
  renderTable(resources, pdf, desiredSizes, finalRect, element);
183
- return;
170
+ break;
184
171
  case "Group":
185
172
  renderGroup(resources, pdf, desiredSizes, finalRect, element);
186
- return;
173
+ break;
174
+ default:
175
+ break;
187
176
  }
188
177
  }
189
178
 
190
179
  function renderGroup(
191
180
  resources: AD.Resources.Resources,
192
181
  pdfKit: PDFKit.PDFDocument,
193
- desiredSizes: Map<{}, AD.Size.Size>,
182
+ desiredSizes: Map<object, AD.Size.Size>,
194
183
  finalRect: AD.Rect.Rect,
195
184
  group: AD.Group.Group
196
185
  ): void {
@@ -217,7 +206,7 @@ function renderGroup(
217
206
  function renderParagraph(
218
207
  resources: AD.Resources.Resources,
219
208
  pdfKit: PDFKit.PDFDocument,
220
- desiredSizes: Map<{}, AD.Size.Size>,
209
+ desiredSizes: Map<object, AD.Size.Size>,
221
210
  finalRect: AD.Rect.Rect,
222
211
  paragraph: AD.Paragraph.Paragraph
223
212
  ): void {
@@ -231,10 +220,10 @@ function renderParagraph(
231
220
  const styleMargins = AD.LayoutFoundation.orDefault(style.margins);
232
221
  const availableWidth = finalRect.width - (styleMargins.left + styleMargins.right);
233
222
 
234
- let rows: Array<Array<AD.Atom.Atom>> = [];
223
+ const rows: Array<Array<AD.Atom.Atom>> = [];
235
224
  let currentRow: Array<AD.Atom.Atom> = [];
236
225
  let currentWidth = 0;
237
- let previousAtomType: string | undefined;
226
+ let previousAtomType: string | undefined = undefined;
238
227
  for (const atom of paragraph.children) {
239
228
  if (atom.type === "LineBreak") {
240
229
  currentRow.push(atom);
@@ -296,14 +285,7 @@ function renderParagraph(
296
285
  let newHeight = styleMargins.top + styleMargins.bottom;
297
286
  const alignment = parseAlignment(style.alignment);
298
287
  const newRows = rowsSplit(rows, availableWidth, desiredSizes, alignment, pdfKit, resources, style.textStyle);
299
- const { newDesiredSizes, combinedRows } = rowsCombineTextRuns(
300
- resources,
301
- pdfKit,
302
- newRows,
303
- desiredSizes,
304
- alignment,
305
- style.textStyle
306
- );
288
+ const { newDesiredSizes, combinedRows } = rowsCombineTextRuns(resources, pdfKit, newRows, desiredSizes, alignment, style.textStyle);
307
289
  for (let r = 0; r < combinedRows.length; r++) {
308
290
  const row = combinedRows[r];
309
291
  const isLast = r === combinedRows.length - 1;
@@ -397,25 +379,15 @@ function renderAtom(
397
379
  renderImage(resources, pdfKit, finalRect, textStyle, atom);
398
380
  return;
399
381
  case "HyperLink":
400
- renderHyperLink(
401
- resources,
402
- pdfKit,
403
- finalRect,
404
- textStyle,
405
- atom,
406
- alignment,
407
- isFirstAtom,
408
- isLastAtom,
409
- availableWidth
410
- );
382
+ renderHyperLink(resources, pdfKit, finalRect, textStyle, atom, alignment, isFirstAtom, isLastAtom, availableWidth);
411
383
  return;
412
384
  case "TocSeparator":
413
385
  renderTocSeparator(pdfKit, finalRect, textStyle, atom);
414
- return;
386
+ break;
415
387
  case "LinkTarget":
416
- return;
417
388
  case "LineBreak":
418
- return;
389
+ default:
390
+ break;
419
391
  }
420
392
  }
421
393
 
@@ -429,13 +401,7 @@ function renderTextField(
429
401
  isFirstAtom: boolean,
430
402
  isLastAtom: boolean
431
403
  ): void {
432
- const style = AD.Resources.getStyle(
433
- textStyle,
434
- textField.style,
435
- "TextStyle",
436
- textField.styleName,
437
- resources
438
- ) as AD.TextStyle.TextStyle;
404
+ const style = AD.Resources.getStyle(textStyle, textField.style, "TextStyle", textField.styleName, resources) as AD.TextStyle.TextStyle;
439
405
  switch (textField.fieldType) {
440
406
  case "Date":
441
407
  drawText(pdfKit, finalRect, style, new Date(Date.now()).toDateString(), alignment, isFirstAtom, isLastAtom);
@@ -446,7 +412,9 @@ function renderTextField(
446
412
  if (textField.text) {
447
413
  drawText(pdfKit, finalRect, style, textField.text, alignment, isFirstAtom, isLastAtom);
448
414
  }
449
- return;
415
+ break;
416
+ default:
417
+ break;
450
418
  }
451
419
  }
452
420
 
@@ -466,7 +434,7 @@ function renderTextRun(
466
434
  "TextStyle",
467
435
  textRun.styleName,
468
436
  resources,
469
- textRun.nestedStyleNames || []
437
+ textRun.nestedStyleNames ?? []
470
438
  ) as AD.TextStyle.TextStyle;
471
439
  drawText(pdf, finalRect, style, textRun.text, alignment, isFirstAtom, isLastAtom);
472
440
  }
@@ -482,13 +450,7 @@ function renderHyperLink(
482
450
  isLastAtom: boolean,
483
451
  availableWidth: number
484
452
  ): void {
485
- const style = AD.Resources.getStyle(
486
- textStyle,
487
- hyperLink.style,
488
- "TextStyle",
489
- hyperLink.styleName,
490
- resources
491
- ) as AD.TextStyle.TextStyle;
453
+ const style = AD.Resources.getStyle(textStyle, hyperLink.style, "TextStyle", hyperLink.styleName, resources) as AD.TextStyle.TextStyle;
492
454
  drawHyperLink(pdf, finalRect, style, hyperLink, alignment, isFirstAtom, isLastAtom, availableWidth);
493
455
  }
494
456
 
@@ -525,7 +487,7 @@ function drawHyperLink(
525
487
  pdf
526
488
  .font(font)
527
489
  .fontSize(fontSize)
528
- .fillColor(textStyle.color || "blue");
490
+ .fillColor(textStyle.color ?? "blue");
529
491
 
530
492
  applyTextOffset(pdf, textStyle);
531
493
 
@@ -538,25 +500,25 @@ function drawHyperLink(
538
500
  width: availableWidth,
539
501
  align: isSingleAtom ? alignment : "left",
540
502
  goTo: isInternalLink ? hyperLink.target.substr(1) : undefined,
541
- indent: textStyle.indent || 0,
503
+ indent: textStyle.indent ?? 0,
542
504
  continued: alignment !== "left" ? false : !isLastAtom,
543
- baseline: textStyle.baseline || "top",
505
+ baseline: textStyle.baseline ?? "top",
544
506
  ...(textStyle.characterSpacing !== undefined ? { characterSpacing: textStyle.characterSpacing } : {}),
545
507
  ...(textStyle.lineGap !== undefined ? { lineGap: textStyle.lineGap } : {}),
546
508
  });
547
- if (textStyle.underline === undefined ? true : textStyle.underline) {
509
+ if (textStyle.underline ?? true) {
548
510
  pdf.underline(xUnderline, finalRect.y + 2, finalRect.width, finalRect.height, { color: "blue" });
549
511
  }
550
512
  } else {
551
513
  pdf.text(hyperLink.text, {
552
514
  align: "left",
553
515
  goTo: isInternalLink ? hyperLink.target.substr(1) : undefined,
554
- indent: textStyle.indent || 0,
516
+ indent: textStyle.indent ?? 0,
555
517
  continued: !isLastAtom,
556
518
  ...(textStyle.characterSpacing !== undefined ? { characterSpacing: textStyle.characterSpacing } : {}),
557
519
  ...(textStyle.lineGap !== undefined ? { lineGap: textStyle.lineGap } : {}),
558
520
  });
559
- if (textStyle.underline === undefined ? true : textStyle.underline) {
521
+ if (textStyle.underline ?? true) {
560
522
  pdf.underline(xUnderline, finalRect.y + 2, finalRect.width, finalRect.height, {
561
523
  color: "blue",
562
524
  });
@@ -635,17 +597,17 @@ function drawText(
635
597
  pdf
636
598
  .font(font)
637
599
  .fontSize(fontSize)
638
- .fillColor(textStyle.color || "black", textStyle.opacity ?? 1.0);
600
+ .fillColor(textStyle.color ?? "black", textStyle.opacity ?? 1.0);
639
601
  applyTextOffset(pdf, textStyle);
640
602
 
641
603
  switch (alignment) {
642
604
  case "justify": {
643
605
  pdf.text(text, finalRect.x, finalRect.y, {
644
606
  width: Infinity,
645
- underline: textStyle.underline || false,
607
+ underline: textStyle.underline ?? false,
646
608
  continued: false,
647
- indent: textStyle.indent || 0,
648
- baseline: textStyle.baseline || "top",
609
+ indent: textStyle.indent ?? 0,
610
+ baseline: textStyle.baseline ?? "top",
649
611
  strike: textStyle.strike,
650
612
  ...(textStyle.characterSpacing !== undefined ? { characterSpacing: textStyle.characterSpacing } : {}),
651
613
  ...(textStyle.lineGap !== undefined ? { lineGap: textStyle.lineGap } : {}),
@@ -657,10 +619,10 @@ function drawText(
657
619
  if (isFirst) {
658
620
  pdf.text(text, finalRect.x, finalRect.y, {
659
621
  width: Infinity,
660
- underline: textStyle.underline || false,
622
+ underline: textStyle.underline ?? false,
661
623
  continued: !isEnd,
662
- indent: textStyle.indent || 0,
663
- baseline: textStyle.baseline || "top",
624
+ indent: textStyle.indent ?? 0,
625
+ baseline: textStyle.baseline ?? "top",
664
626
  strike: textStyle.strike,
665
627
  ...(textStyle.characterSpacing !== undefined ? { characterSpacing: textStyle.characterSpacing } : {}),
666
628
  ...(textStyle.lineGap !== undefined ? { lineGap: textStyle.lineGap } : {}),
@@ -668,10 +630,10 @@ function drawText(
668
630
  } else {
669
631
  pdf.text(text, {
670
632
  width: Infinity,
671
- underline: textStyle.underline || false,
633
+ underline: textStyle.underline ?? false,
672
634
  continued: !isEnd,
673
- indent: textStyle.indent || 0,
674
- baseline: textStyle.baseline || "top",
635
+ indent: textStyle.indent ?? 0,
636
+ baseline: textStyle.baseline ?? "top",
675
637
  strike: textStyle.strike,
676
638
  ...(textStyle.characterSpacing !== undefined ? { characterSpacing: textStyle.characterSpacing } : {}),
677
639
  ...(textStyle.lineGap !== undefined ? { lineGap: textStyle.lineGap } : {}),
@@ -692,7 +654,7 @@ function drawDottedLine(
692
654
  const font = getFontNameStyle(textStyle);
693
655
  const fontSize = AD.TextStyle.calculateFontSize(textStyle, 10);
694
656
 
695
- const charSpacing = tocSeparator.width ? tocSeparator.width : 5;
657
+ const charSpacing = tocSeparator.width ?? 5;
696
658
 
697
659
  const oneDotW = pdf.widthOfString(".", {
698
660
  width: finalRect.width,
@@ -713,7 +675,7 @@ function drawDottedLine(
713
675
  pdf
714
676
  .font(font)
715
677
  .fontSize(fontSize)
716
- .fillColor(textStyle.color || "black");
678
+ .fillColor(textStyle.color ?? "black");
717
679
 
718
680
  applyTextOffset(pdf, textStyle);
719
681
 
@@ -734,26 +696,23 @@ function drawDottedLine(
734
696
  function renderTable(
735
697
  resources: AD.Resources.Resources,
736
698
  pdf: PDFKit.PDFDocument,
737
- desiredSizes: Map<{}, AD.Size.Size>,
699
+ desiredSizes: Map<object, AD.Size.Size>,
738
700
  finalRect: AD.Rect.Rect,
739
701
  table: AD.Table.Table
740
702
  ): void {
741
- const style = AD.Resources.getStyle(
742
- undefined,
743
- table.style,
744
- "TableStyle",
745
- table.styleName,
746
- resources
747
- ) as AD.TableStyle.TableStyle;
703
+ const style = AD.Resources.getStyle(undefined, table.style, "TableStyle", table.styleName, resources) as AD.TableStyle.TableStyle;
748
704
  const styleMargins = AD.LayoutFoundation.orDefault(style.margins);
749
705
  const availableWidth = finalRect.width;
750
706
  let y = finalRect.y + styleMargins.top;
751
707
  const rows = [...table.headerRows, ...table.children];
752
- for (let [index, row] of rows.entries()) {
708
+ for (const [index, row] of rows.entries()) {
753
709
  const rowSize = getDesiredSize(row, desiredSizes);
754
710
  let x = finalRect.x + styleMargins.left;
755
- if (style.alignment === "Center") x += 0.5 * (availableWidth - rowSize.width);
756
- else if (style.alignment === "Right") x += availableWidth - rowSize.width;
711
+ if (style.alignment === "Center") {
712
+ x += 0.5 * (availableWidth - rowSize.width);
713
+ } else if (style.alignment === "Right") {
714
+ x += availableWidth - rowSize.width;
715
+ }
757
716
  const rowRect = AD.Rect.create(x, y, rowSize.width, rowSize.height);
758
717
  const isTop = index === 0;
759
718
  const isBottom = index === rows.length - 1;
@@ -765,7 +724,7 @@ function renderTable(
765
724
  function renderRow(
766
725
  resources: AD.Resources.Resources,
767
726
  pdf: PDFKit.PDFDocument,
768
- desiredSizes: Map<{}, AD.Size.Size>,
727
+ desiredSizes: Map<object, AD.Size.Size>,
769
728
  finalRect: AD.Rect.Rect,
770
729
  tableCellStyle: AD.TableCellStyle.TableCellStyle,
771
730
  table: AD.Table.Table,
@@ -801,7 +760,7 @@ function renderRow(
801
760
  function renderCell(
802
761
  resources: AD.Resources.Resources,
803
762
  pdf: PDFKit.PDFDocument,
804
- desiredSizes: Map<{}, AD.Size.Size>,
763
+ desiredSizes: Map<object, AD.Size.Size>,
805
764
  finalRect: AD.Rect.Rect,
806
765
  tableCellStyle: AD.TableCellStyle.TableCellStyle,
807
766
  cell: AD.TableCell.TableCell,
@@ -810,13 +769,7 @@ function renderCell(
810
769
  isTop: boolean,
811
770
  isBottom: boolean
812
771
  ): void {
813
- const style = AD.Resources.getStyle(
814
- tableCellStyle,
815
- cell.style,
816
- "TableCellStyle",
817
- cell.styleName,
818
- resources
819
- ) as AD.TableCellStyle.TableCellStyle;
772
+ const style = AD.Resources.getStyle(tableCellStyle, cell.style, "TableCellStyle", cell.styleName, resources) as AD.TableCellStyle.TableCellStyle;
820
773
  if (style.background) {
821
774
  pdf.rect(finalRect.x, finalRect.y, finalRect.width, finalRect.height).fill(style.background);
822
775
  }
@@ -824,15 +777,18 @@ function renderCell(
824
777
  const borders = AD.LayoutFoundation.orDefault(style.borders);
825
778
  const padding = AD.LayoutFoundation.orDefault(style.padding);
826
779
 
827
- let x = finalRect.x + padding.left;
780
+ const x = finalRect.x + padding.left;
828
781
  const availableHeight = finalRect.height;
829
- let contentHeight = cell.children
782
+ const contentHeight = cell.children
830
783
  .map((c) => (AD.Position.isPositionAbsolute(c) ? 0 : getDesiredSize(c, desiredSizes).height))
831
784
  .reduce((a, b) => a + b, 0);
832
785
  const startY = finalRect.y + padding.top;
833
786
  let y = startY;
834
- if (style.verticalAlignment === "Middle") y += 0.5 * (availableHeight - contentHeight - padding.top - padding.bottom);
835
- else if (style.verticalAlignment === "Bottom") y += availableHeight - contentHeight - padding.top - padding.bottom;
787
+ if (style.verticalAlignment === "Middle") {
788
+ y += 0.5 * (availableHeight - contentHeight - padding.top - padding.bottom);
789
+ } else if (style.verticalAlignment === "Bottom") {
790
+ y += availableHeight - contentHeight - padding.top - padding.bottom;
791
+ }
836
792
 
837
793
  for (const element of cell.children) {
838
794
  const elementSize = getDesiredSize(element, desiredSizes);
@@ -888,7 +844,7 @@ function renderCell(
888
844
  }
889
845
 
890
846
  function borderColor(style: AD.TableCellStyle.TableCellStyle, edge: "top" | "bottom" | "left" | "right"): string {
891
- if (style.borderColors && style.borderColors[edge]) {
847
+ if (style.borderColors?.[edge]) {
892
848
  return style.borderColors[edge];
893
849
  }
894
850
  if (style.borderColor) {
@@ -897,7 +853,7 @@ function borderColor(style: AD.TableCellStyle.TableCellStyle, edge: "top" | "bot
897
853
  return "black";
898
854
  }
899
855
 
900
- function getDesiredSize(element: {}, desiredSizes: Map<{}, AD.Size.Size>): AD.Size.Size {
856
+ function getDesiredSize(element: object, desiredSizes: Map<object, AD.Size.Size>): AD.Size.Size {
901
857
  const size = desiredSizes.get(element);
902
858
  if (size) {
903
859
  return size;
@@ -925,6 +881,6 @@ function resetTextOffset(pdf: PDFKit.PDFDocument, textStyle: AD.TextStyle.TextSt
925
881
 
926
882
  function calculateTextOffset(textStyle: AD.TextStyle.TextStyle): number {
927
883
  const defaultPosition = textStyle.superScript ? 0.5 : textStyle.subScript ? -0.5 : 0;
928
- const position = textStyle.verticalPosition !== undefined ? textStyle.verticalPosition : defaultPosition;
884
+ const position = textStyle.verticalPosition ?? defaultPosition;
929
885
  return position;
930
886
  }
@@ -1,8 +1,8 @@
1
1
  import * as PdfkitModule from "pdfkit";
2
2
  import Helvetica from "pdfkit/standard-fonts/Helvetica";
3
3
  import HelveticaBold from "pdfkit/standard-fonts/HelveticaBold";
4
- import HelveticaOblique from "pdfkit/standard-fonts/HelveticaOblique";
5
4
  import HelveticaBoldOblique from "pdfkit/standard-fonts/HelveticaBoldOblique";
5
+ import HelveticaOblique from "pdfkit/standard-fonts/HelveticaOblique";
6
6
 
7
7
  // pdfkit 0.20's browser build stopped bundling standard font data and requires
8
8
  // registering it explicitly via `registerStdFonts` before it's used, or `.font("Helvetica")`
@@ -14,7 +14,7 @@ const pdfkitExports = PdfkitModule as unknown as {
14
14
  registerStdFonts?: (...fonts: ReadonlyArray<unknown>) => void;
15
15
  };
16
16
 
17
- // eslint-disable-next-line functional/no-let
17
+ // oxlint-disable-next-line functional/no-let
18
18
  let registered = false;
19
19
 
20
20
  export function registerDefaultStdFonts(): void {