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