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.
- package/CHANGELOG.md +4 -0
- package/README.md +3 -3
- package/lib/abstract-document/abstract-doc.d.ts.map +1 -1
- package/lib/abstract-document/abstract-doc.js +2 -2
- package/lib/abstract-document/atoms/atom.d.ts +3 -3
- package/lib/abstract-document/atoms/atom.d.ts.map +1 -1
- package/lib/abstract-document/atoms/line-break.d.ts +1 -1
- package/lib/abstract-document/atoms/line-break.d.ts.map +1 -1
- package/lib/abstract-document/atoms/line-break.js +1 -1
- package/lib/abstract-document/atoms/line-break.js.map +1 -1
- package/lib/abstract-document/atoms/link-target.js +1 -1
- package/lib/abstract-document/atoms/text-run.d.ts.map +1 -1
- package/lib/abstract-document/atoms/text-run.js +1 -0
- package/lib/abstract-document/atoms/text-run.js.map +1 -1
- package/lib/abstract-document/default-styles.d.ts.map +1 -1
- package/lib/abstract-document/default-styles.js.map +1 -1
- package/lib/abstract-document/markdown/markdown.d.ts.map +1 -1
- package/lib/abstract-document/markdown/markdown.js +5 -5
- package/lib/abstract-document/markdown/markdown.js.map +1 -1
- package/lib/abstract-document/numberings/numbering-definition.d.ts +2 -2
- package/lib/abstract-document/numberings/numbering-definition.d.ts.map +1 -1
- package/lib/abstract-document/numberings/numbering-format.d.ts.map +1 -1
- package/lib/abstract-document/numberings/numbering-level-definition.js +2 -2
- package/lib/abstract-document/page/master-page.d.ts +1 -1
- package/lib/abstract-document/page/master-page.d.ts.map +1 -1
- package/lib/abstract-document/page/master-page.js +1 -1
- package/lib/abstract-document/page/master-page.js.map +1 -1
- package/lib/abstract-document/page/section.d.ts +1 -1
- package/lib/abstract-document/page/section.d.ts.map +1 -1
- package/lib/abstract-document/page/section.js +2 -2
- package/lib/abstract-document/page/section.js.map +1 -1
- package/lib/abstract-document/primitives/font.d.ts +1 -1
- package/lib/abstract-document/primitives/font.d.ts.map +1 -1
- package/lib/abstract-document/primitives/font.js +1 -1
- package/lib/abstract-document/primitives/font.js.map +1 -1
- package/lib/abstract-document/primitives/layout-foundation-color.d.ts.map +1 -1
- package/lib/abstract-document/primitives/layout-foundation-color.js +4 -4
- package/lib/abstract-document/primitives/layout-foundation-color.js.map +1 -1
- package/lib/abstract-document/primitives/layout-foundation.d.ts.map +1 -1
- package/lib/abstract-document/primitives/layout-foundation.js +1 -1
- package/lib/abstract-document/primitives/layout-foundation.js.map +1 -1
- package/lib/abstract-document/primitives/point.js +1 -1
- package/lib/abstract-document/resources.d.ts +4 -3
- package/lib/abstract-document/resources.d.ts.map +1 -1
- package/lib/abstract-document/resources.js +4 -4
- package/lib/abstract-document/resources.js.map +1 -1
- package/lib/abstract-document/section-elements/group.d.ts +1 -1
- package/lib/abstract-document/section-elements/group.d.ts.map +1 -1
- package/lib/abstract-document/section-elements/group.js +2 -2
- package/lib/abstract-document/section-elements/group.js.map +1 -1
- package/lib/abstract-document/section-elements/page-break.d.ts +2 -2
- package/lib/abstract-document/section-elements/page-break.d.ts.map +1 -1
- package/lib/abstract-document/section-elements/page-break.js +1 -2
- package/lib/abstract-document/section-elements/page-break.js.map +1 -1
- package/lib/abstract-document/section-elements/paragraph.d.ts +2 -2
- package/lib/abstract-document/section-elements/paragraph.d.ts.map +1 -1
- package/lib/abstract-document/section-elements/paragraph.js +2 -2
- package/lib/abstract-document/section-elements/paragraph.js.map +1 -1
- package/lib/abstract-document/section-elements/section-element.d.ts +1 -1
- package/lib/abstract-document/section-elements/section-element.d.ts.map +1 -1
- package/lib/abstract-document/section-elements/section-element.js.map +1 -1
- package/lib/abstract-document/section-elements/table.d.ts +1 -1
- package/lib/abstract-document/section-elements/table.d.ts.map +1 -1
- package/lib/abstract-document/section-elements/table.js +2 -2
- package/lib/abstract-document/section-elements/table.js.map +1 -1
- package/lib/abstract-document/styles/group-style.js +3 -3
- package/lib/abstract-document/styles/page-style.d.ts.map +1 -1
- package/lib/abstract-document/styles/page-style.js +3 -7
- package/lib/abstract-document/styles/page-style.js.map +1 -1
- package/lib/abstract-document/styles/paragraph-style.d.ts +1 -1
- package/lib/abstract-document/styles/paragraph-style.d.ts.map +1 -1
- package/lib/abstract-document/styles/paragraph-style.js +5 -5
- package/lib/abstract-document/styles/paragraph-style.js.map +1 -1
- package/lib/abstract-document/styles/style.d.ts.map +1 -1
- package/lib/abstract-document/styles/style.js.map +1 -1
- package/lib/abstract-document/styles/table-cell-style.d.ts +1 -1
- package/lib/abstract-document/styles/table-cell-style.d.ts.map +1 -1
- package/lib/abstract-document/styles/table-cell-style.js +7 -7
- package/lib/abstract-document/styles/table-cell-style.js.map +1 -1
- package/lib/abstract-document/styles/table-style.d.ts +1 -1
- package/lib/abstract-document/styles/table-style.d.ts.map +1 -1
- package/lib/abstract-document/styles/table-style.js +2 -2
- package/lib/abstract-document/styles/table-style.js.map +1 -1
- package/lib/abstract-document/styles/text-style.d.ts.map +1 -1
- package/lib/abstract-document/styles/text-style.js +17 -22
- package/lib/abstract-document/styles/text-style.js.map +1 -1
- package/lib/abstract-document/table/table-cell.js +2 -2
- package/lib/abstract-document/table/table-row.d.ts +2 -3
- package/lib/abstract-document/table/table-row.d.ts.map +1 -1
- package/lib/abstract-document/table/table-row.js +2 -3
- package/lib/abstract-document/table/table-row.js.map +1 -1
- package/lib/abstract-document/types.d.ts.map +1 -1
- package/lib/abstract-document-exporters/docx/document-container.d.ts +5 -5
- package/lib/abstract-document-exporters/docx/document-container.d.ts.map +1 -1
- package/lib/abstract-document-exporters/docx/document-container.js +14 -13
- package/lib/abstract-document-exporters/docx/document-container.js.map +1 -1
- package/lib/abstract-document-exporters/docx/docx-constants.d.ts.map +1 -1
- package/lib/abstract-document-exporters/docx/docx-constants.js +1 -4
- package/lib/abstract-document-exporters/docx/docx-constants.js.map +1 -1
- package/lib/abstract-document-exporters/docx/ref-container.d.ts +8 -10
- package/lib/abstract-document-exporters/docx/ref-container.d.ts.map +1 -1
- package/lib/abstract-document-exporters/docx/ref-container.js +34 -35
- package/lib/abstract-document-exporters/docx/ref-container.js.map +1 -1
- package/lib/abstract-document-exporters/docx/string-utils.d.ts +2 -1
- package/lib/abstract-document-exporters/docx/string-utils.d.ts.map +1 -1
- package/lib/abstract-document-exporters/docx/string-utils.js +6 -6
- package/lib/abstract-document-exporters/docx/string-utils.js.map +1 -1
- package/lib/abstract-document-exporters/docx/xml-writer.d.ts +12 -33
- package/lib/abstract-document-exporters/docx/xml-writer.d.ts.map +1 -1
- package/lib/abstract-document-exporters/docx/xml-writer.js +243 -248
- package/lib/abstract-document-exporters/docx/xml-writer.js.map +1 -1
- package/lib/abstract-document-exporters/docx2/render-image.d.ts +1 -1
- package/lib/abstract-document-exporters/docx2/render-image.d.ts.map +1 -1
- package/lib/abstract-document-exporters/docx2/render-image.js +5 -17
- package/lib/abstract-document-exporters/docx2/render-image.js.map +1 -1
- package/lib/abstract-document-exporters/docx2/render.d.ts.map +1 -1
- package/lib/abstract-document-exporters/docx2/render.js +37 -43
- package/lib/abstract-document-exporters/docx2/render.js.map +1 -1
- package/lib/abstract-document-exporters/pdf/font.d.ts.map +1 -1
- package/lib/abstract-document-exporters/pdf/font.js +14 -14
- package/lib/abstract-document-exporters/pdf/font.js.map +1 -1
- package/lib/abstract-document-exporters/pdf/header-footer.d.ts +8 -0
- package/lib/abstract-document-exporters/pdf/header-footer.d.ts.map +1 -0
- package/lib/abstract-document-exporters/pdf/header-footer.js +31 -0
- package/lib/abstract-document-exporters/pdf/header-footer.js.map +1 -0
- package/lib/abstract-document-exporters/pdf/measure.d.ts +4 -4
- package/lib/abstract-document-exporters/pdf/measure.d.ts.map +1 -1
- package/lib/abstract-document-exporters/pdf/measure.js +31 -32
- package/lib/abstract-document-exporters/pdf/measure.js.map +1 -1
- package/lib/abstract-document-exporters/pdf/page.d.ts +15 -0
- package/lib/abstract-document-exporters/pdf/page.d.ts.map +1 -0
- package/lib/abstract-document-exporters/pdf/page.js +2 -0
- package/lib/abstract-document-exporters/pdf/page.js.map +1 -0
- package/lib/abstract-document-exporters/pdf/paginate.d.ts +2 -20
- package/lib/abstract-document-exporters/pdf/paginate.d.ts.map +1 -1
- package/lib/abstract-document-exporters/pdf/paginate.js +8 -44
- package/lib/abstract-document-exporters/pdf/paginate.js.map +1 -1
- package/lib/abstract-document-exporters/pdf/pre-process.d.ts.map +1 -1
- package/lib/abstract-document-exporters/pdf/pre-process.js +10 -36
- package/lib/abstract-document-exporters/pdf/pre-process.js.map +1 -1
- package/lib/abstract-document-exporters/pdf/render-image.d.ts.map +1 -1
- package/lib/abstract-document-exporters/pdf/render-image.js +25 -35
- package/lib/abstract-document-exporters/pdf/render-image.js.map +1 -1
- package/lib/abstract-document-exporters/pdf/render.d.ts +4 -3
- package/lib/abstract-document-exporters/pdf/render.d.ts.map +1 -1
- package/lib/abstract-document-exporters/pdf/render.js +60 -49
- package/lib/abstract-document-exporters/pdf/render.js.map +1 -1
- package/lib/abstract-document-exporters/pdf/std-fonts.js +2 -2
- package/lib/abstract-document-exporters/pdf/std-fonts.js.map +1 -1
- package/lib/abstract-document-exporters/pdf/textRunRow.d.ts +3 -3
- package/lib/abstract-document-exporters/pdf/textRunRow.d.ts.map +1 -1
- package/lib/abstract-document-exporters/pdf/textRunRow.js +26 -20
- package/lib/abstract-document-exporters/pdf/textRunRow.js.map +1 -1
- package/lib/abstract-document-exporters/pdf/update-refs.d.ts +1 -1
- package/lib/abstract-document-exporters/pdf/update-refs.d.ts.map +1 -1
- package/lib/abstract-document-exporters/pdf/update-refs.js +3 -2
- package/lib/abstract-document-exporters/pdf/update-refs.js.map +1 -1
- package/lib/abstract-document-exporters/shared/get_resources.d.ts.map +1 -1
- package/lib/abstract-document-exporters/shared/get_resources.js.map +1 -1
- package/lib/abstract-document-jsx/index.d.ts +2 -3
- package/lib/abstract-document-jsx/index.d.ts.map +1 -1
- package/lib/abstract-document-jsx/index.js +10 -6
- package/lib/abstract-document-jsx/index.js.map +1 -1
- package/lib/abstract-document-xml/abstract-doc-of-xml/abstract-doc-of-xml.d.ts +3 -7
- package/lib/abstract-document-xml/abstract-doc-of-xml/abstract-doc-of-xml.d.ts.map +1 -1
- package/lib/abstract-document-xml/abstract-doc-of-xml/abstract-doc-of-xml.js +6 -4
- package/lib/abstract-document-xml/abstract-doc-of-xml/abstract-doc-of-xml.js.map +1 -1
- package/lib/abstract-document-xml/abstract-doc-of-xml/creator.d.ts.map +1 -1
- package/lib/abstract-document-xml/abstract-doc-of-xml/creator.js +8 -4
- package/lib/abstract-document-xml/abstract-doc-of-xml/creator.js.map +1 -1
- package/lib/abstract-document-xml/abstract-doc-of-xml/custom-elements.d.ts.map +1 -1
- package/lib/abstract-document-xml/abstract-doc-of-xml/custom-elements.js +4 -8
- package/lib/abstract-document-xml/abstract-doc-of-xml/custom-elements.js.map +1 -1
- package/lib/abstract-document-xml/xsd-template/xsd-template.js +2 -2
- package/lib/abstract-document-xml/xsd-template/xsd-template.js.map +1 -1
- package/package.json +21 -21
- package/src/abstract-document/abstract-doc.ts +6 -6
- package/src/abstract-document/atoms/atom.ts +3 -3
- package/src/abstract-document/atoms/line-break.ts +1 -1
- package/src/abstract-document/atoms/link-target.ts +1 -1
- package/src/abstract-document/atoms/text-run.ts +1 -0
- package/src/abstract-document/default-styles.ts +1 -1
- package/src/abstract-document/markdown/markdown.ts +7 -7
- package/src/abstract-document/numberings/numbering-definition.ts +2 -2
- package/src/abstract-document/numberings/numbering-format.ts +1 -7
- package/src/abstract-document/numberings/numbering-level-definition.ts +2 -2
- package/src/abstract-document/page/master-page.ts +2 -2
- package/src/abstract-document/page/section.ts +3 -3
- package/src/abstract-document/primitives/font.ts +1 -12
- package/src/abstract-document/primitives/layout-foundation-color.ts +5 -8
- package/src/abstract-document/primitives/layout-foundation.ts +2 -5
- package/src/abstract-document/primitives/point.ts +1 -1
- package/src/abstract-document/resources.ts +9 -14
- package/src/abstract-document/section-elements/group.ts +3 -3
- package/src/abstract-document/section-elements/page-break.ts +2 -3
- package/src/abstract-document/section-elements/paragraph.ts +4 -4
- package/src/abstract-document/section-elements/section-element.ts +1 -1
- package/src/abstract-document/section-elements/table.ts +3 -3
- package/src/abstract-document/styles/group-style.ts +3 -3
- package/src/abstract-document/styles/page-style.ts +3 -7
- package/src/abstract-document/styles/paragraph-style.ts +6 -14
- package/src/abstract-document/styles/style.ts +1 -5
- package/src/abstract-document/styles/table-cell-style.ts +8 -18
- package/src/abstract-document/styles/table-style.ts +3 -8
- package/src/abstract-document/styles/text-style.ts +31 -36
- package/src/abstract-document/table/table-cell.ts +2 -2
- package/src/abstract-document/table/table-row.ts +3 -4
- package/src/abstract-document/types.ts +0 -1
- package/src/abstract-document-exporters/docx/document-container.ts +24 -13
- package/src/abstract-document-exporters/docx/docx-constants.ts +2 -6
- package/src/abstract-document-exporters/docx/ref-container.ts +48 -41
- package/src/abstract-document-exporters/docx/string-utils.ts +6 -10
- package/src/abstract-document-exporters/docx/xml-writer.ts +261 -265
- package/src/abstract-document-exporters/docx2/render-image.ts +16 -50
- package/src/abstract-document-exporters/docx2/render.ts +68 -121
- package/src/abstract-document-exporters/pdf/font.ts +27 -32
- package/src/abstract-document-exporters/pdf/header-footer.ts +43 -0
- package/src/abstract-document-exporters/pdf/measure.ts +52 -103
- package/src/abstract-document-exporters/pdf/page.ts +16 -0
- package/src/abstract-document-exporters/pdf/paginate.ts +29 -120
- package/src/abstract-document-exporters/pdf/pre-process.ts +13 -48
- package/src/abstract-document-exporters/pdf/render-image.ts +30 -47
- package/src/abstract-document-exporters/pdf/render.ts +84 -128
- package/src/abstract-document-exporters/pdf/std-fonts.ts +2 -2
- package/src/abstract-document-exporters/pdf/textRunRow.ts +100 -77
- package/src/abstract-document-exporters/pdf/update-refs.ts +10 -33
- package/src/abstract-document-exporters/shared/get_resources.ts +4 -4
- package/src/abstract-document-jsx/index.ts +38 -26
- package/src/abstract-document-xml/abstract-doc-of-xml/abstract-doc-of-xml.ts +23 -35
- package/src/abstract-document-xml/abstract-doc-of-xml/creator.ts +17 -29
- package/src/abstract-document-xml/abstract-doc-of-xml/custom-elements.tsx +8 -30
- package/src/abstract-document-xml/xsd-template/styles.ts +1 -1
- package/src/abstract-document-xml/xsd-template/xsd-template.ts +2 -2
- package/lib/abstract-document/table/text-row.d.ts +0 -2
- package/lib/abstract-document/table/text-row.d.ts.map +0 -1
- package/lib/abstract-document/table/text-row.js +0 -2
- package/lib/abstract-document/table/text-row.js.map +0 -1
- package/lib/abstract-document-exporters/docx/docx-document-renderer.d.ts +0 -2
- package/lib/abstract-document-exporters/docx/docx-document-renderer.d.ts.map +0 -1
- package/lib/abstract-document-exporters/docx/docx-document-renderer.js +0 -1085
- package/lib/abstract-document-exporters/docx/docx-document-renderer.js.map +0 -1
- package/src/abstract-document/table/text-row.ts +0 -0
- 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
|
|
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:
|
|
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 :
|
|
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:
|
|
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
|
-
|
|
66
|
-
|
|
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
|
|
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
|
|
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"]
|
|
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"]
|
|
208
|
+
(fonts[item.attributes["fontFamily"]] ??= {})[styleName] = true;
|
|
221
209
|
if (item.tagName === "StyleName" && item.attributes["name"] && item.attributes["type"]) {
|
|
222
|
-
styleNames[item.attributes["name"]
|
|
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"]
|
|
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"]
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"text-row.d.ts","sourceRoot":"","sources":["../../../src/abstract-document/table/text-row.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"text-row.js","sourceRoot":"","sources":["../../../src/abstract-document/table/text-row.ts"],"names":[],"mappings":""}
|
|
@@ -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":""}
|