abstract-document 18.2.5 → 18.2.6
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/lib/abstract-document-xml/abstract-doc-of-xml/abstract-doc-of-xml.d.ts +2 -2
- 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 +21 -9
- package/lib/abstract-document-xml/abstract-doc-of-xml/abstract-doc-of-xml.js.map +1 -1
- package/package.json +2 -2
- package/src/abstract-document-xml/abstract-doc-of-xml/abstract-doc-of-xml.ts +25 -14
|
@@ -14,6 +14,6 @@ export type AbstractDoxXmlsResult = {
|
|
|
14
14
|
readonly error: string;
|
|
15
15
|
};
|
|
16
16
|
export type Format = "PDF" | "DOCX";
|
|
17
|
-
export declare function abstractDocsXml(templateInputs: ReadonlyArray<TemplateInput>, getResources: (imageUrls: Record<string, true>, fontFamilies: Record<string,
|
|
18
|
-
export declare function abstractDocXml(template: string, data: any, partials: Record<string, string>, rendered?: "Mustache" | "Handlebars"): readonly [AbstractDoc.AbstractDoc, imageUrls: Record<string, true>, fontFamilies: Record<string,
|
|
17
|
+
export declare function abstractDocsXml(templateInputs: ReadonlyArray<TemplateInput>, getResources: (imageUrls: Record<string, true>, fontFamilies: Record<string, ReadonlyArray<keyof Font>>) => Promise<Resources>): Promise<AbstractDoxXmlsResult>;
|
|
18
|
+
export declare function abstractDocXml(template: string, data: any, partials: Record<string, string>, rendered?: "Mustache" | "Handlebars"): readonly [AbstractDoc.AbstractDoc, imageUrls: Record<string, true>, fontFamilies: Record<string, ReadonlyArray<keyof Font>>];
|
|
19
19
|
//# sourceMappingURL=abstract-doc-of-xml.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstract-doc-of-xml.d.ts","sourceRoot":"","sources":["../../../src/abstract-document-xml/abstract-doc-of-xml/abstract-doc-of-xml.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAE/D,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAIjE,OAAO,EAAE,IAAI,EAAE,MAAM,4CAA4C,CAAC;AAElE,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC;IACnB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAC7B;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,WAAW,CAAA;CAAE,GAChE;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAErD,MAAM,MAAM,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AAEpC,wBAAsB,eAAe,CACnC,cAAc,EAAE,aAAa,CAAC,aAAa,CAAC,EAC5C,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,OAAO,CAAC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"abstract-doc-of-xml.d.ts","sourceRoot":"","sources":["../../../src/abstract-document-xml/abstract-doc-of-xml/abstract-doc-of-xml.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAE/D,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAIjE,OAAO,EAAE,IAAI,EAAE,MAAM,4CAA4C,CAAC;AAElE,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC;IACnB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAC7B;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,WAAW,CAAA;CAAE,GAChE;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAErD,MAAM,MAAM,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AAEpC,wBAAsB,eAAe,CACnC,cAAc,EAAE,aAAa,CAAC,aAAa,CAAC,EAC5C,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,OAAO,CAAC,SAAS,CAAC,GAC7H,OAAO,CAAC,qBAAqB,CAAC,CA8BhC;AAED,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,GAAG,EACT,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,QAAQ,GAAE,UAAU,GAAG,YAA2B,GACjD,SAAS,CAAC,WAAW,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAM9H"}
|
|
@@ -12,7 +12,20 @@ export async function abstractDocsXml(templateInputs, getResources) {
|
|
|
12
12
|
const [ad, newImageUrls, newFontFamilies] = abstractDocXml(r.template, r.data, r.partials, "Handlebars");
|
|
13
13
|
abstractDocs.push(ad);
|
|
14
14
|
imageUrls = { ...imageUrls, ...newImageUrls };
|
|
15
|
-
|
|
15
|
+
for (const [font, families] of Object.entries(newFontFamilies)) {
|
|
16
|
+
if (font in fontFamilies) {
|
|
17
|
+
const newFamilies = [];
|
|
18
|
+
for (const newFamily of families) {
|
|
19
|
+
if (fontFamilies[font].find((v) => v === newFamily) === undefined) {
|
|
20
|
+
newFamilies.push(newFamily);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
fontFamilies[font] = [...fontFamilies[font], ...newFamilies];
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
fontFamilies[font] = families;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
16
29
|
}
|
|
17
30
|
const resources = await getResources(imageUrls, fontFamilies);
|
|
18
31
|
const combinedReport = addResources(merge(...abstractDocs), resources);
|
|
@@ -24,9 +37,9 @@ export async function abstractDocsXml(templateInputs, getResources) {
|
|
|
24
37
|
}
|
|
25
38
|
export function abstractDocXml(template, data, partials, rendered = "Handlebars") {
|
|
26
39
|
const xml = rendered === "Mustache" ? parseMustacheXml(template, data, partials) : parseHandlebarsXml(template, data, partials);
|
|
27
|
-
const [imageUrls, fontFamilies, styleNames
|
|
40
|
+
const [imageUrls, fontFamilies, styleNames] = extractImageFontsStyleNames(xml);
|
|
28
41
|
const doc = abstractDocXmlRecursive(creators(styleNames), xml[0]);
|
|
29
|
-
return [doc, imageUrls, fontFamilies
|
|
42
|
+
return [doc, imageUrls, fontFamilies];
|
|
30
43
|
}
|
|
31
44
|
function abstractDocXmlRecursive(creators, xmlElement, onlyChildren = false) {
|
|
32
45
|
const children = [];
|
|
@@ -142,17 +155,16 @@ function getSuffixedAttributeBaseName(attributeName) {
|
|
|
142
155
|
};
|
|
143
156
|
return actualLookup[suffixRemoved ?? ""];
|
|
144
157
|
}
|
|
145
|
-
function extractImageFontsStyleNames(xmlElement, styleNames = {}, images = {}, fonts = {}
|
|
158
|
+
function extractImageFontsStyleNames(xmlElement, styleNames = {}, images = {}, fonts = {}) {
|
|
146
159
|
xmlElement.forEach((item) => {
|
|
147
160
|
if (item.tagName.startsWith("Image") && item.attributes?.src) {
|
|
148
161
|
images[item.attributes.src] = true;
|
|
149
162
|
}
|
|
150
163
|
else if (item.attributes?.fontFamily) {
|
|
151
|
-
fonts[item.attributes.fontFamily] = true;
|
|
152
164
|
const styleName = getFontStyleName(item.attributes);
|
|
153
|
-
const currentStyleNames =
|
|
165
|
+
const currentStyleNames = fonts[item.attributes.fontFamily] ?? [];
|
|
154
166
|
if (currentStyleNames.findIndex((v) => v === styleName) === -1) {
|
|
155
|
-
|
|
167
|
+
fonts[item.attributes.fontFamily] = [...currentStyleNames, styleName];
|
|
156
168
|
}
|
|
157
169
|
if (item.tagName === "StyleName" && item.attributes.name && item.attributes.type) {
|
|
158
170
|
styleNames[item.attributes.name] = item.attributes.type;
|
|
@@ -162,9 +174,9 @@ function extractImageFontsStyleNames(xmlElement, styleNames = {}, images = {}, f
|
|
|
162
174
|
styleNames[item.attributes.name] = item.attributes.type;
|
|
163
175
|
}
|
|
164
176
|
else {
|
|
165
|
-
extractImageFontsStyleNames(item.children, styleNames, images, fonts
|
|
177
|
+
extractImageFontsStyleNames(item.children, styleNames, images, fonts);
|
|
166
178
|
}
|
|
167
179
|
});
|
|
168
|
-
return [images, fonts, styleNames
|
|
180
|
+
return [images, fonts, styleNames];
|
|
169
181
|
}
|
|
170
182
|
//# sourceMappingURL=abstract-doc-of-xml.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstract-doc-of-xml.js","sourceRoot":"","sources":["../../../src/abstract-document-xml/abstract-doc-of-xml/abstract-doc-of-xml.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,yCAAyC,CAAC;AAE9E,OAAO,KAAK,QAAQ,MAAM,6CAA6C,CAAC;AAExE,OAAO,EAAe,QAAQ,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAmB,MAAM,gBAAgB,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,+CAA+C,CAAC;AAejF,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,cAA4C,EAC5C,
|
|
1
|
+
{"version":3,"file":"abstract-doc-of-xml.js","sourceRoot":"","sources":["../../../src/abstract-document-xml/abstract-doc-of-xml/abstract-doc-of-xml.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "abstract-document",
|
|
3
|
-
"version": "18.2.
|
|
3
|
+
"version": "18.2.6",
|
|
4
4
|
"description": "Dynamically create documents using code or JSX and render to any format",
|
|
5
5
|
"repository": "https://github.com/dividab/abstract-visuals/tree/master/packages/abstract-document",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -50,5 +50,5 @@
|
|
|
50
50
|
"vite": "^6.0.1",
|
|
51
51
|
"vitest": "^2.1.6"
|
|
52
52
|
},
|
|
53
|
-
"gitHead": "
|
|
53
|
+
"gitHead": "29697212abd8686f3dc3cfbc52e51262f66ac3fb"
|
|
54
54
|
}
|
|
@@ -21,17 +21,30 @@ export type Format = "PDF" | "DOCX";
|
|
|
21
21
|
|
|
22
22
|
export async function abstractDocsXml(
|
|
23
23
|
templateInputs: ReadonlyArray<TemplateInput>,
|
|
24
|
-
getResources: (imageUrls: Record<string, true>, fontFamilies: Record<string,
|
|
24
|
+
getResources: (imageUrls: Record<string, true>, fontFamilies: Record<string, ReadonlyArray<keyof Font>>) => Promise<Resources>
|
|
25
25
|
): Promise<AbstractDoxXmlsResult> {
|
|
26
26
|
try {
|
|
27
27
|
const abstractDocs = Array<AbstractDoc.AbstractDoc>();
|
|
28
28
|
let imageUrls: Record<string, true> = {};
|
|
29
|
-
let fontFamilies: Record<string,
|
|
29
|
+
let fontFamilies: Record<string, ReadonlyArray<keyof Font>> = {};
|
|
30
30
|
for (const r of templateInputs) {
|
|
31
31
|
const [ad, newImageUrls, newFontFamilies] = abstractDocXml(r.template, r.data, r.partials, "Handlebars");
|
|
32
32
|
abstractDocs.push(ad);
|
|
33
33
|
imageUrls = { ...imageUrls, ...newImageUrls };
|
|
34
|
-
|
|
34
|
+
|
|
35
|
+
for(const [font, families] of Object.entries(newFontFamilies)) {
|
|
36
|
+
if(font in fontFamilies) {
|
|
37
|
+
const newFamilies: Array<keyof Font> = [];
|
|
38
|
+
for(const newFamily of families) {
|
|
39
|
+
if(fontFamilies[font].find((v) => v === newFamily) === undefined) {
|
|
40
|
+
newFamilies.push(newFamily);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
fontFamilies[font] = [...fontFamilies[font], ...newFamilies];
|
|
44
|
+
} else {
|
|
45
|
+
fontFamilies[font] = families;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
35
48
|
}
|
|
36
49
|
const resources = await getResources(imageUrls, fontFamilies);
|
|
37
50
|
const combinedReport = addResources(merge(...abstractDocs), resources);
|
|
@@ -46,12 +59,12 @@ export function abstractDocXml(
|
|
|
46
59
|
data: any,
|
|
47
60
|
partials: Record<string, string>,
|
|
48
61
|
rendered: "Mustache" | "Handlebars" = "Handlebars"
|
|
49
|
-
): readonly [AbstractDoc.AbstractDoc, imageUrls: Record<string, true>, fontFamilies: Record<string,
|
|
62
|
+
): readonly [AbstractDoc.AbstractDoc, imageUrls: Record<string, true>, fontFamilies: Record<string, ReadonlyArray<keyof Font>>] {
|
|
50
63
|
const xml =
|
|
51
64
|
rendered === "Mustache" ? parseMustacheXml(template, data, partials) : parseHandlebarsXml(template, data, partials);
|
|
52
|
-
const [imageUrls, fontFamilies, styleNames
|
|
65
|
+
const [imageUrls, fontFamilies, styleNames] = extractImageFontsStyleNames(xml);
|
|
53
66
|
const doc = abstractDocXmlRecursive(creators(styleNames), xml[0]!);
|
|
54
|
-
return [doc, imageUrls, fontFamilies
|
|
67
|
+
return [doc, imageUrls, fontFamilies];
|
|
55
68
|
}
|
|
56
69
|
|
|
57
70
|
function abstractDocXmlRecursive(
|
|
@@ -178,19 +191,17 @@ function extractImageFontsStyleNames(
|
|
|
178
191
|
xmlElement: ReadonlyArray<XmlElement>,
|
|
179
192
|
styleNames: Record<string, string> = {},
|
|
180
193
|
images: Record<string, true> = {},
|
|
181
|
-
fonts: Record<string,
|
|
182
|
-
|
|
183
|
-
): readonly [imageUrls: Record<string, true>, fontFamilies: Record<string, true>, styleNames: Record<string, string>, fontStyles: Record<string, ReadonlyArray<keyof Font>>] {
|
|
194
|
+
fonts: Record<string, ReadonlyArray<keyof Font>> = {},
|
|
195
|
+
): readonly [imageUrls: Record<string, true>, fontFamilies: Record<string, ReadonlyArray<keyof Font>>, styleNames: Record<string, string>] {
|
|
184
196
|
xmlElement.forEach((item) => {
|
|
185
197
|
if (item.tagName.startsWith("Image") && item.attributes?.src) {
|
|
186
198
|
images[item.attributes.src as string] = true;
|
|
187
199
|
} else if (item.attributes?.fontFamily) {
|
|
188
|
-
fonts[item.attributes.fontFamily as string] = true;
|
|
189
200
|
|
|
190
201
|
const styleName = getFontStyleName(item.attributes);
|
|
191
|
-
const currentStyleNames =
|
|
202
|
+
const currentStyleNames = fonts[item.attributes.fontFamily as string] ?? [];
|
|
192
203
|
if(currentStyleNames.findIndex((v) => v === styleName) === -1) {
|
|
193
|
-
|
|
204
|
+
fonts[item.attributes.fontFamily as string] = [...currentStyleNames, styleName];
|
|
194
205
|
}
|
|
195
206
|
|
|
196
207
|
if (item.tagName === "StyleName" && item.attributes.name && item.attributes.type) {
|
|
@@ -199,8 +210,8 @@ function extractImageFontsStyleNames(
|
|
|
199
210
|
} else if (item.tagName === "StyleName" && item.attributes.name && item.attributes.type) {
|
|
200
211
|
styleNames[item.attributes.name as string] = item.attributes.type;
|
|
201
212
|
} else {
|
|
202
|
-
extractImageFontsStyleNames(item.children, styleNames, images, fonts
|
|
213
|
+
extractImageFontsStyleNames(item.children, styleNames, images, fonts);
|
|
203
214
|
}
|
|
204
215
|
});
|
|
205
|
-
return [images, fonts, styleNames
|
|
216
|
+
return [images, fonts, styleNames];
|
|
206
217
|
}
|