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,16 +1,16 @@
1
+ import { parseHandlebarsXml, type XmlElement } from "handlebars-xml";
2
+ import { getFontStyleName } from "../../abstract-document-exporters/pdf/font.js";
1
3
  import { addResources, merge } from "../../abstract-document/abstract-doc.js";
2
4
  import type { AbstractDoc } from "../../abstract-document/index.js";
3
- import * as StyleKey from "../../abstract-document/styles/style-key.js";
5
+ import type { Font } from "../../abstract-document/primitives/font.js";
4
6
  import type { Resources } from "../../abstract-document/resources.js";
7
+ import * as StyleKey from "../../abstract-document/styles/style-key.js";
5
8
  import type { ADCreatorFn } from "./creator.js";
6
9
  import { creators, propsCreators } from "./creator.js";
7
- import { parseHandlebarsXml, type XmlElement } from "handlebars-xml";
8
- import { getFontStyleName } from "../../abstract-document-exporters/pdf/font.js";
9
- import type { Font } from "../../abstract-document/primitives/font.js";
10
10
 
11
11
  export type TemplateInput = {
12
12
  readonly template: string;
13
- readonly data: any;
13
+ readonly data: unknown;
14
14
  readonly partials: Record<string, string>;
15
15
  };
16
16
 
@@ -22,10 +22,7 @@ export type Format = "PDF" | "DOCX";
22
22
 
23
23
  export async function abstractDocsXml(
24
24
  templateInputs: ReadonlyArray<TemplateInput>,
25
- getResources: (
26
- imageUrls: Record<string, true>,
27
- fontFamilies: Record<string, Partial<Record<keyof Font, boolean>>>
28
- ) => Promise<Resources>
25
+ getResources: (imageUrls: Record<string, true>, fontFamilies: Record<string, Partial<Record<keyof Font, boolean>>>) => Promise<Resources>
29
26
  ): Promise<AbstractDoxXmlsResult> {
30
27
  try {
31
28
  const abstractDocs = Array<AbstractDoc.AbstractDoc>();
@@ -35,38 +32,29 @@ export async function abstractDocsXml(
35
32
  const [ad, newImageUrls, newFontFamilies] = abstractDocXml(r.template, r.data, r.partials);
36
33
  abstractDocs.push(ad);
37
34
  imageUrls = { ...imageUrls, ...newImageUrls };
38
- Object.entries(newFontFamilies).forEach(
39
- ([font, types]) => (fontFamilies[font] = { ...fontFamilies[font], ...types })
40
- );
35
+ Object.entries(newFontFamilies).forEach(([font, types]) => (fontFamilies[font] = { ...fontFamilies[font], ...types }));
41
36
  }
42
37
  const resources = await getResources(imageUrls, fontFamilies);
43
38
  const combinedReport = addResources(merge(...abstractDocs), resources);
44
39
  return { type: "Ok", value: combinedReport };
45
40
  } catch (e) {
46
- return { type: "Err", error: typeof e === "string" ? e : (e as any).message };
41
+ return { type: "Err", error: typeof e === "string" ? e : e.message };
47
42
  }
48
43
  }
49
44
 
50
45
  export function abstractDocXml(
51
46
  template: string,
52
- data: any,
47
+ data: unknown,
53
48
  partials: Record<string, string>
54
- ): readonly [
55
- AbstractDoc.AbstractDoc,
56
- imageUrls: Record<string, true>,
57
- fontFamilies: Record<string, Partial<Record<keyof Font, boolean>>>
58
- ] {
49
+ ): readonly [AbstractDoc.AbstractDoc, imageUrls: Record<string, true>, fontFamilies: Record<string, Partial<Record<keyof Font, boolean>>>] {
59
50
  const xml = parseHandlebarsXml(template, data, partials);
60
51
  const [imageUrls, fontFamilies, styleNames] = extractImageFontsStyleNames(xml);
61
- const doc = abstractDocXmlRecursive(creators(styleNames), xml[0]!);
52
+ const doc = abstractDocXmlRecursive(creators(styleNames), xml[0]);
62
53
  return [doc, imageUrls, fontFamilies];
63
54
  }
64
55
 
65
- function abstractDocXmlRecursive(
66
- creators: Record<string, ADCreatorFn>,
67
- xmlElement: XmlElement,
68
- onlyChildren: boolean = false
69
- ): any {
56
+ // oxlint-disable-next-line typescript/no-explicit-any -- produces whichever AD model type (or a children array) the caller expects at that recursion site; see the single external call site's tuple return, which assigns this straight to AbstractDoc.AbstractDoc
57
+ function abstractDocXmlRecursive(creators: Record<string, ADCreatorFn>, xmlElement: XmlElement, onlyChildren: boolean = false): any {
70
58
  const children = [];
71
59
  const props: Record<string, unknown> = {};
72
60
  for (const childElement of xmlElement.children ?? []) {
@@ -74,7 +62,7 @@ function abstractDocXmlRecursive(
74
62
  if (childName !== undefined) {
75
63
  if (childName === "StyleNames") {
76
64
  props["styles"] = abstractDocXmlRecursive(creators, childElement);
77
- } else if (childName === "StyleName" && childElement.attributes && childElement.attributes["name"]) {
65
+ } else if (childName === "StyleName" && childElement.attributes?.["name"]) {
78
66
  const styleName = StyleKey.create(childElement.attributes["type"], childElement.attributes["name"]);
79
67
  const style = abstractDocXmlRecursive(creators, childElement);
80
68
  props[styleName] = style;
@@ -110,9 +98,9 @@ function abstractDocXmlRecursive(
110
98
  //
111
99
  const obj = creator(allProps, children) as { [k: string]: unknown };
112
100
 
101
+ // oxlint-disable-next-line unicorn/no-array-sort
113
102
  for (const propName of Object.keys(allProps).sort((a, b) => a.length - b.length)) {
114
- const propsCreator =
115
- allProps[propName] !== undefined && propsCreators[propName] ? propsCreators[propName] : undefined;
103
+ const propsCreator = allProps[propName] !== undefined && propsCreators[propName] ? propsCreators[propName] : undefined;
116
104
  if (propsCreator) {
117
105
  const attributeName = getSuffixedAttributeBaseName(propsCreator.name) ?? propsCreator.name;
118
106
  obj[attributeName] = propsCreator(allProps, children);
@@ -189,16 +177,16 @@ function extractImageFontsStyleNames(
189
177
  styleNames: Record<string, string> = {},
190
178
  images: Record<string, true> = {},
191
179
  fonts: Record<string, Partial<Record<keyof Font, boolean>>> = {},
192
- currentFontFamily: string | undefined = undefined
180
+ currentFontFamily?: string
193
181
  ): readonly [
194
182
  imageUrls: Record<string, true>,
195
183
  fontFamilies: Record<string, Partial<Record<keyof Font, boolean>>>,
196
- styleNames: Record<string, string>
184
+ styleNames: Record<string, string>,
197
185
  ] {
198
186
  let crFntFam = currentFontFamily;
199
187
  xmlElement.forEach((item) => {
200
188
  if (item.tagName.startsWith("Image") && item.attributes?.["src"]) {
201
- images[item.attributes["src"] as string] = true;
189
+ images[item.attributes["src"]] = true;
202
190
  } else if (item.tagName === "style") {
203
191
  const fontFamily = crFntFam ?? styleFamilies["Default"];
204
192
  if (fontFamily) {
@@ -217,15 +205,15 @@ function extractImageFontsStyleNames(
217
205
  }
218
206
  } else if (item.attributes?.["fontFamily"]) {
219
207
  const styleName = getFontStyleName(item.attributes);
220
- (fonts[item.attributes["fontFamily"] as string] ??= {})[styleName] = true;
208
+ (fonts[item.attributes["fontFamily"]] ??= {})[styleName] = true;
221
209
  if (item.tagName === "StyleName" && item.attributes["name"] && item.attributes["type"]) {
222
- styleNames[item.attributes["name"] as string] = item.attributes["type"];
210
+ styleNames[item.attributes["name"]] = item.attributes["type"];
223
211
  }
224
212
  } else if (item.tagName === "StyleName" && item.attributes["name"] && item.attributes["type"]) {
225
- styleNames[item.attributes["name"] as string] = item.attributes["type"];
213
+ styleNames[item.attributes["name"]] = item.attributes["type"];
226
214
  if (item.attributes["type"] === "TextStyle" && item.attributes["fontFamily"]) {
227
215
  const styleName = getFontStyleName(item.attributes);
228
- styleFamilies[item.attributes["name"] as string] = item.attributes["fontFamily"];
216
+ styleFamilies[item.attributes["name"]] = item.attributes["fontFamily"];
229
217
  (fonts[item.attributes["fontFamily"]] ??= {})[styleName] = true;
230
218
  }
231
219
  }
@@ -17,14 +17,7 @@ import {
17
17
  TocSeparator,
18
18
  ImageResource,
19
19
  } from "../../abstract-document/index.js";
20
- import type {
21
- TextRowProps,
22
- TextCellProps,
23
- TextParagraphProps,
24
- ImageCellProps,
25
- ImageParagraphProps,
26
- ImageRowProps,
27
- } from "./custom-elements.js";
20
+ import type { TextRowProps, TextCellProps, TextParagraphProps, ImageCellProps, ImageParagraphProps, ImageRowProps } from "./custom-elements.js";
28
21
  import { TextRow, TextCell, TextParagraph, ImageCell, ImageParagraph, ImageRow } from "./custom-elements.js";
29
22
 
30
23
  export type ADCreatorFn = (props?: Record<string, unknown>, children?: ReadonlyArray<unknown>) => unknown;
@@ -39,13 +32,10 @@ export const creators: (styleNames: Record<string, string>) => Record<string, AD
39
32
  TextParagraph: (props: TextParagraphProps) => TextParagraph(props, styleNames),
40
33
  TextRun: (props) => TextRun.create(props as unknown as TextRun.TextRunProps),
41
34
  ImageRow: (props: Record<string, unknown>) => ImageRow(imageProps(props) as unknown as ImageRowProps, styleNames),
42
- ImageCell: (props: Record<string, unknown>) =>
43
- ImageCell(imageProps(props) as unknown as ImageCellProps, styleNames),
44
- ImageParagraph: (props: Record<string, unknown>) =>
45
- ImageParagraph(imageProps(props) as unknown as ImageParagraphProps, styleNames),
35
+ ImageCell: (props: Record<string, unknown>) => ImageCell(imageProps(props) as unknown as ImageCellProps, styleNames),
36
+ ImageParagraph: (props: Record<string, unknown>) => ImageParagraph(imageProps(props) as unknown as ImageParagraphProps, styleNames),
46
37
  Image: (props: Record<string, unknown>) => Image.create(imageProps(props) as unknown as Image.ImageProps),
47
- Table: (props, children: ReadonlyArray<TableRow.TableRow>) =>
48
- Table.create(props as unknown as Table.TableProps, children),
38
+ Table: (props, children: ReadonlyArray<TableRow.TableRow>) => Table.create(props as unknown as Table.TableProps, children),
49
39
  TableRow: (props, children: ReadonlyArray<TableCell.TableCell>) => TableRow.create(props, children),
50
40
  TableCell: (props, children: ReadonlyArray<SectionElement.SectionElement>) => TableCell.create(props, children),
51
41
  TextField: (props) => TextField.create(props as unknown as TextField.TextFieldProps),
@@ -57,9 +47,7 @@ export const creators: (styleNames: Record<string, string>) => Record<string, AD
57
47
  };
58
48
 
59
49
  export const propsCreators: Record<string, ADCreatorFn> = {
60
- styles: (props: {
61
- readonly styles: Record<string, Record<string, string | number> & { readonly type: string }>;
62
- }): unknown => {
50
+ styles: (props: { readonly styles: Record<string, Record<string, string | number> & { readonly type: string }> }): unknown => {
63
51
  const fixedStyles: Record<string, Record<string, string | number>> = {};
64
52
  if (props.styles) {
65
53
  Object.keys(props.styles).forEach((key: string) => {
@@ -71,6 +59,7 @@ export const propsCreators: Record<string, ADCreatorFn> = {
71
59
  },
72
60
  columnWidths: (props: { readonly columnWidths: string; readonly columnMultiplier: string }): unknown => {
73
61
  const columnWidths = (props.columnWidths ?? "")
62
+ // oxlint-disable-next-line typescript/no-unnecessary-type-conversion -- allProps can carry non-strings
74
63
  .toString()
75
64
  .split(",")
76
65
  .map((item: string) => {
@@ -87,10 +76,13 @@ export const propsCreators: Record<string, ADCreatorFn> = {
87
76
  return props.paperSize;
88
77
  }
89
78
  const parts = props.paperSize.split("x");
90
- return { width: Number(parts[0]) ?? 595, height: Number(parts[1]) ?? 842 };
79
+ const width = Number(parts[0] ?? 595);
80
+ const height = Number(parts[1] ?? 842);
81
+ return { width: Number.isNaN(width) ? 595 : width, height: Number.isNaN(height) ? 842 : height };
91
82
  },
92
83
  borders: (props: { readonly borders: string }): unknown => {
93
84
  const borders: { [k: string]: number } = { top: 0, right: 0, bottom: 0, left: 0 };
85
+ // oxlint-disable-next-line typescript/no-unnecessary-type-conversion -- allProps can carry non-strings
94
86
  const propBorders = props.borders.toString().split(" ");
95
87
  if (!propBorders) {
96
88
  return borders;
@@ -157,6 +149,7 @@ export const propsCreators: Record<string, ADCreatorFn> = {
157
149
  padding: (props: { readonly padding: string }): unknown => {
158
150
  const padding: { [k: string]: number } = { top: 0, right: 0, bottom: 0, left: 0 };
159
151
 
152
+ // oxlint-disable-next-line typescript/no-unnecessary-type-conversion -- allProps can carry non-strings
160
153
  const paddings = props.padding.toString().split(" ");
161
154
  if (!paddings) {
162
155
  return padding;
@@ -222,6 +215,7 @@ export const propsCreators: Record<string, ADCreatorFn> = {
222
215
  },
223
216
  margins: (props: { readonly margins: string }): unknown => {
224
217
  const margins: { [k: string]: number } = { top: 0, right: 0, bottom: 0, left: 0 };
218
+ // oxlint-disable-next-line typescript/no-unnecessary-type-conversion -- allProps can carry non-strings
225
219
  const propMargins = props.margins.toString().split(" ");
226
220
  if (!propMargins) {
227
221
  return margins;
@@ -314,22 +308,19 @@ export const propsCreators: Record<string, ADCreatorFn> = {
314
308
  },
315
309
  borderColorBottom: (props: { readonly borderColorBottom: string }): unknown => {
316
310
  const allProps = props as Record<string, unknown>;
317
- const boderColors: { top?: string; bottom?: string; left?: string; right?: string } =
318
- allProps["borderColors"] ?? {};
311
+ const boderColors: { top?: string; bottom?: string; left?: string; right?: string } = allProps["borderColors"] ?? {};
319
312
  boderColors.bottom = props.borderColorBottom;
320
313
  return boderColors;
321
314
  },
322
315
  borderColorLeft: (props: { readonly borderColorLeft: string }): unknown => {
323
316
  const allProps = props as Record<string, unknown>;
324
- const boderColors: { top?: string; bottom?: string; left?: string; right?: string } =
325
- allProps["borderColors"] ?? {};
317
+ const boderColors: { top?: string; bottom?: string; left?: string; right?: string } = allProps["borderColors"] ?? {};
326
318
  boderColors.left = props.borderColorLeft;
327
319
  return boderColors;
328
320
  },
329
321
  borderColorRight: (props: { readonly borderColorRight: string }): unknown => {
330
322
  const allProps = props as Record<string, unknown>;
331
- const boderColors: { top?: string; bottom?: string; left?: string; right?: string } =
332
- allProps["borderColors"] ?? {};
323
+ const boderColors: { top?: string; bottom?: string; left?: string; right?: string } = allProps["borderColors"] ?? {};
333
324
  boderColors.right = props.borderColorRight;
334
325
  return boderColors;
335
326
  },
@@ -361,8 +352,7 @@ export const propsCreators: Record<string, ADCreatorFn> = {
361
352
  lineBreak: (props: { readonly lineBreak: string }): unknown => strToBool(props.lineBreak),
362
353
  mediumBold: (props: { readonly mediumBold: string }): unknown => strToBool(props.mediumBold),
363
354
  noTopBottomMargin: (props: { readonly noTopBottomMargin: string }): unknown => strToBool(props.noTopBottomMargin),
364
- keepTogetherSections: (props: { readonly keepTogetherSections: string }): unknown =>
365
- strToBool(props.keepTogetherSections),
355
+ keepTogetherSections: (props: { readonly keepTogetherSections: string }): unknown => strToBool(props.keepTogetherSections),
366
356
  keepTogether: (props: { readonly keepTogether: string }): unknown => strToBool(props.keepTogether),
367
357
  differentFirstPage: (props: { readonly differentFirstPage: string }): unknown => strToBool(props.differentFirstPage),
368
358
  };
@@ -376,9 +366,7 @@ function imageProps(props: Record<string, unknown>): Record<string, unknown> {
376
366
  height: Number(props["height"]),
377
367
  imageResource: ImageResource.create({
378
368
  id: props["src"] as string,
379
- abstractImage: createAbstractImage(zero, size, white, [
380
- createBinaryImage(zero, zero, "png", { type: "url", url: props["src"] as string }),
381
- ]),
369
+ abstractImage: createAbstractImage(zero, size, white, [createBinaryImage(zero, zero, "png", { type: "url", url: props["src"] as string })]),
382
370
  renderScale: 1,
383
371
  }),
384
372
  };
@@ -20,11 +20,8 @@ const stylePropsKeys: Record<string, boolean> = {
20
20
  GroupStyle: true,
21
21
  };
22
22
 
23
- export function extractStyleNames(
24
- styleNames: string | undefined,
25
- styleNameTypes: Record<string, string>
26
- ): Partial<StyleProps> {
27
- const names = (styleNames || "").split(",");
23
+ export function extractStyleNames(styleNames: string | undefined, styleNameTypes: Record<string, string>): Partial<StyleProps> {
24
+ const names = (styleNames ?? "").split(",");
28
25
 
29
26
  let styleNameProps = {};
30
27
 
@@ -102,27 +99,14 @@ export type ImageCellProps = Omit<ImageParagraphProps, "style"> & {
102
99
  };
103
100
 
104
101
  export function ImageCell(props: ImageCellProps, styleNameTypes: Record<string, string>): TableCell.TableCell {
105
- const {
106
- imageResource,
107
- width,
108
- height,
109
- horizontalAlignment,
110
- verticalAlignment,
111
- paragraphStyle,
112
- style,
113
- columnSpan,
114
- rowSpan,
115
- } = props;
102
+ const { imageResource, width, height, horizontalAlignment, verticalAlignment, paragraphStyle, style, columnSpan, rowSpan } = props;
116
103
  const styleNames = extractStyleNames(props.styleNames, styleNameTypes);
117
- const imageElement =
118
- imageResource && Image.create({ imageResource, width, height, horizontalAlignment, verticalAlignment });
104
+ const imageElement = imageResource && Image.create({ imageResource, width, height, horizontalAlignment, verticalAlignment });
119
105
  const pararaphProps = {
120
106
  style: paragraphStyle ? { ...paragraphStyle, type: "ParagraphStyle" } : undefined,
121
107
  styleName: styleNames.ParagraphStyle,
122
108
  } as ParagraphProps;
123
- const paragraph = imageElement
124
- ? Paragraph.create(pararaphProps, [imageElement])
125
- : Paragraph.create(pararaphProps, [ImageMissing]);
109
+ const paragraph = imageElement ? Paragraph.create(pararaphProps, [imageElement]) : Paragraph.create(pararaphProps, [ImageMissing]);
126
110
  return TableCell.create({ columnSpan, rowSpan, style, styleName: styleNames.TableCellStyle }, [paragraph]);
127
111
  }
128
112
 
@@ -131,18 +115,12 @@ export type ImageParagraphProps = ImageProps & {
131
115
  readonly styleNames?: string;
132
116
  };
133
117
 
134
- export function ImageParagraph(
135
- props: ImageParagraphProps,
136
- styleNameTypes: Record<string, string>
137
- ): Paragraph.Paragraph | undefined {
118
+ export function ImageParagraph(props: ImageParagraphProps, styleNameTypes: Record<string, string>): Paragraph.Paragraph | undefined {
138
119
  const { imageResource, width, height, style, horizontalAlignment, verticalAlignment } = props;
139
120
  const styleNames = extractStyleNames(props.styleNames, styleNameTypes);
140
- const imageElement =
141
- imageResource && Image.create({ imageResource, width, height, horizontalAlignment, verticalAlignment });
121
+ const imageElement = imageResource && Image.create({ imageResource, width, height, horizontalAlignment, verticalAlignment });
142
122
  const pararaphProps = { style, styleName: styleNames.ParagraphStyle };
143
- return imageElement
144
- ? Paragraph.create(pararaphProps, [imageElement])
145
- : Paragraph.create(pararaphProps, [ImageMissing]);
123
+ return imageElement ? Paragraph.create(pararaphProps, [imageElement]) : Paragraph.create(pararaphProps, [ImageMissing]);
146
124
  }
147
125
 
148
126
  const ImageMissing = TextRun.create({ text: "Image missing" });
@@ -319,4 +319,4 @@ export const layoutFoundation = `<xs:complexType name="LayoutFoundation">
319
319
  export const pageColumnLayout = `<xs:complexType name="PageColumnLayout">
320
320
  <xs:attribute name="columnCount" type="xs:decimal" />
321
321
  <xs:attribute name="columnGap" type="xs:decimal" />
322
- </xs:complexType>`;
322
+ </xs:complexType>`;
@@ -1,7 +1,7 @@
1
+ import { parseXsd } from "handlebars-xml";
2
+ import * as CustomElements from "./custom-elements.js";
1
3
  import * as Elements from "./elements.js";
2
4
  import * as Styles from "./styles.js";
3
- import * as CustomElements from "./custom-elements.js";
4
- import { parseXsd } from "handlebars-xml";
5
5
 
6
6
  const commonParts = `${Styles.layoutFoundation}
7
7
  ${Styles.pageColumnLayout}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=text-row.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"text-row.d.ts","sourceRoot":"","sources":["../../../src/abstract-document/table/text-row.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=text-row.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"text-row.js","sourceRoot":"","sources":["../../../src/abstract-document/table/text-row.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=docx-document-renderer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"docx-document-renderer.d.ts","sourceRoot":"","sources":["../../../src/abstract-document-exporters/docx/docx-document-renderer.ts"],"names":[],"mappings":""}