@json-to-office/core-docx 0.8.0 → 0.9.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/dist/components/heading.d.ts.map +1 -1
- package/dist/components/paragraph.d.ts.map +1 -1
- package/dist/core/content.d.ts +7 -0
- package/dist/core/content.d.ts.map +1 -1
- package/dist/core/fontResolution.d.ts +15 -0
- package/dist/core/fontResolution.d.ts.map +1 -0
- package/dist/core/generator.d.ts +11 -3
- package/dist/core/generator.d.ts.map +1 -1
- package/dist/index.js +200 -47
- package/dist/index.js.map +1 -1
- package/dist/plugin/createDocumentGenerator.d.ts +3 -1
- package/dist/plugin/createDocumentGenerator.d.ts.map +1 -1
- package/dist/plugin/example/index.js +163 -31
- package/dist/plugin/example/index.js.map +1 -1
- package/dist/templates/themes/index.d.ts +84 -0
- package/dist/templates/themes/index.d.ts.map +1 -1
- package/dist/themes/defaults.d.ts +20 -0
- package/dist/themes/defaults.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heading.d.ts","sourceRoot":"","sources":["../../src/components/heading.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAsB,MAAM,UAAU,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAIxC;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,mBAAmB,EAC9B,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,GAChB,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"heading.d.ts","sourceRoot":"","sources":["../../src/components/heading.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAsB,MAAM,UAAU,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAIxC;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,mBAAmB,EAC9B,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,GAChB,SAAS,EAAE,CAyCb"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paragraph.d.ts","sourceRoot":"","sources":["../../src/components/paragraph.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAwB,MAAM,UAAU,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AA6DxC;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,mBAAmB,EAC9B,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,GAChB,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"paragraph.d.ts","sourceRoot":"","sources":["../../src/components/paragraph.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAwB,MAAM,UAAU,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AA6DxC;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,mBAAmB,EAC9B,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,GAChB,SAAS,EAAE,CAmIb"}
|
package/dist/core/content.d.ts
CHANGED
|
@@ -22,6 +22,12 @@ export interface TextOptions {
|
|
|
22
22
|
fontSize?: number;
|
|
23
23
|
fontColor?: string;
|
|
24
24
|
bold?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Per-run weight (100–900). Renderer picks the closest embedded variant
|
|
27
|
+
* via the font-alias registry and emits the run under a synthetic family
|
|
28
|
+
* (e.g. "Inter Light" for 300). Overrides `bold` when set.
|
|
29
|
+
*/
|
|
30
|
+
fontWeight?: number;
|
|
25
31
|
italic?: boolean;
|
|
26
32
|
underline?: boolean;
|
|
27
33
|
prependChildren?: any[];
|
|
@@ -148,6 +154,7 @@ type TableFontConfig = {
|
|
|
148
154
|
family?: string;
|
|
149
155
|
size?: number;
|
|
150
156
|
bold?: boolean;
|
|
157
|
+
fontWeight?: number;
|
|
151
158
|
italic?: boolean;
|
|
152
159
|
underline?: boolean;
|
|
153
160
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/core/content.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,SAAS,EAET,KAAK,EAQL,MAAM,EACN,MAAM,EAQP,MAAM,MAAM,CAAC;AASd,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/core/content.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared font-resolution helper used by BOTH entry paths into renderDocument:
|
|
3
|
+
*
|
|
4
|
+
* - generator.ts → generateDocumentWithCustomThemes (non-plugin)
|
|
5
|
+
* - plugin/createDocumentGenerator.ts → generate (plugin-aware)
|
|
6
|
+
*
|
|
7
|
+
* Keeping it in one place ensures the two paths behave identically around
|
|
8
|
+
* validation, SAFE_FONTS awareness, Google Fonts materialization, and the
|
|
9
|
+
* `onResolved` side-channel consumed by the LibreOffice preview font stager.
|
|
10
|
+
*/
|
|
11
|
+
import type { FontRuntimeOpts, ResolvedFont, GenerationWarning } from '@json-to-office/shared';
|
|
12
|
+
import type { ThemeConfig } from '../styles';
|
|
13
|
+
import type { ReportComponentDefinition } from '../types';
|
|
14
|
+
export declare function resolveDocumentFonts(document: ReportComponentDefinition, theme: ThemeConfig, fonts?: FontRuntimeOpts, warnings?: GenerationWarning[]): Promise<ResolvedFont[]>;
|
|
15
|
+
//# sourceMappingURL=fontResolution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fontResolution.d.ts","sourceRoot":"","sources":["../../src/core/fontResolution.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,iBAAiB,EAClB,MAAM,wBAAwB,CAAC;AAWhC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAE1D,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,yBAAyB,EACnC,KAAK,EAAE,WAAW,EAClB,KAAK,CAAC,EAAE,eAAe,EACvB,QAAQ,CAAC,EAAE,iBAAiB,EAAE,GAC7B,OAAO,CAAC,YAAY,EAAE,CAAC,CAmEzB"}
|
package/dist/core/generator.d.ts
CHANGED
|
@@ -6,8 +6,9 @@
|
|
|
6
6
|
import { Document } from 'docx';
|
|
7
7
|
import { ComponentDefinition, ReportProps, ReportComponentDefinition } from '../types';
|
|
8
8
|
import { ThemeConfig } from '../styles';
|
|
9
|
-
import type { ServicesConfig } from '@json-to-office/shared';
|
|
9
|
+
import type { ServicesConfig, FontRuntimeOpts } from '@json-to-office/shared';
|
|
10
10
|
import { DocumentValidationResult } from '@json-to-office/shared-docx';
|
|
11
|
+
import type { GenerationWarning } from '@json-to-office/shared';
|
|
11
12
|
export interface JsonGenerationOptions {
|
|
12
13
|
outputPath?: string;
|
|
13
14
|
validation?: {
|
|
@@ -18,6 +19,13 @@ export interface JsonGenerationOptions {
|
|
|
18
19
|
[key: string]: ThemeConfig;
|
|
19
20
|
};
|
|
20
21
|
services?: ServicesConfig;
|
|
22
|
+
fonts?: FontRuntimeOpts;
|
|
23
|
+
/**
|
|
24
|
+
* Optional collector for structured warnings (font resolution, etc.).
|
|
25
|
+
* When provided, mirrors the plugin path's warning semantics; when absent,
|
|
26
|
+
* warnings fall back to `console.warn` as before.
|
|
27
|
+
*/
|
|
28
|
+
warnings?: GenerationWarning[];
|
|
21
29
|
}
|
|
22
30
|
/**
|
|
23
31
|
* Type guard to check if input is a report component definition
|
|
@@ -27,12 +35,12 @@ export declare function isReportComponentDefinition(definition: unknown): defini
|
|
|
27
35
|
* Generate a Word document from a report component definition
|
|
28
36
|
* This is the main entry point for document generation
|
|
29
37
|
*/
|
|
30
|
-
export declare function generateDocument(document: ReportComponentDefinition): Promise<Document>;
|
|
38
|
+
export declare function generateDocument(document: ReportComponentDefinition, options?: JsonGenerationOptions): Promise<Document>;
|
|
31
39
|
/**
|
|
32
40
|
* Generate document from report props and components
|
|
33
41
|
* Convenience function that constructs the report component
|
|
34
42
|
*/
|
|
35
|
-
export declare function generateFromConfig(props: ReportProps, components: ComponentDefinition[]): Promise<Document>;
|
|
43
|
+
export declare function generateFromConfig(props: ReportProps, components: ComponentDefinition[], options?: JsonGenerationOptions): Promise<Document>;
|
|
36
44
|
/**
|
|
37
45
|
* Generate a Word document from JSON report definition
|
|
38
46
|
* Handles parsing, validation, and conversion to internal components
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/core/generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;;AAEH,OAAO,EAAE,QAAQ,EAAU,MAAM,MAAM,CAAC;AAExC,OAAO,EACL,mBAAmB,EACnB,WAAW,EACX,yBAAyB,EAE1B,MAAM,UAAU,CAAC;AAClB,OAAO,EAAwB,WAAW,EAAE,MAAM,WAAW,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/core/generator.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -4107,9 +4107,22 @@ var globalBookmarkRegistry = new BookmarkRegistry();
|
|
|
4107
4107
|
|
|
4108
4108
|
// src/core/content.ts
|
|
4109
4109
|
init_styleHelpers();
|
|
4110
|
+
import { synthesizeFamilyName } from "@json-to-office/shared";
|
|
4110
4111
|
init_colorUtils();
|
|
4111
4112
|
init_styleHelpers();
|
|
4112
4113
|
init_widthUtils();
|
|
4114
|
+
function applyFontWeightAlias(opts) {
|
|
4115
|
+
if (!opts.fontFamily) {
|
|
4116
|
+
return { font: void 0, bold: opts.bold, italics: opts.italic };
|
|
4117
|
+
}
|
|
4118
|
+
const weight = opts.fontWeight ?? (opts.bold === true ? 700 : void 0);
|
|
4119
|
+
const synth = synthesizeFamilyName(
|
|
4120
|
+
opts.fontFamily,
|
|
4121
|
+
weight,
|
|
4122
|
+
opts.italic === true
|
|
4123
|
+
);
|
|
4124
|
+
return { font: synth.family, bold: synth.bold, italics: synth.italic };
|
|
4125
|
+
}
|
|
4113
4126
|
function createText(content, theme, themeName, options = {}) {
|
|
4114
4127
|
const normalizedContent = normalizeUnicodeText(content);
|
|
4115
4128
|
const style = options.style || "Normal";
|
|
@@ -4129,15 +4142,27 @@ function createText(content, theme, themeName, options = {}) {
|
|
|
4129
4142
|
if (options.columnBreak) {
|
|
4130
4143
|
children.push(new ColumnBreak());
|
|
4131
4144
|
}
|
|
4145
|
+
const hasWeightRequest = options.fontWeight != null || options.bold === true;
|
|
4146
|
+
const effectiveFamily = options.fontFamily ?? (hasWeightRequest ? resolveFontFamily(theme, "body") : void 0);
|
|
4147
|
+
const weighted = applyFontWeightAlias({
|
|
4148
|
+
fontFamily: effectiveFamily,
|
|
4149
|
+
bold: options.bold,
|
|
4150
|
+
italic: options.italic,
|
|
4151
|
+
fontWeight: options.fontWeight
|
|
4152
|
+
});
|
|
4132
4153
|
const baseTextStyle = {
|
|
4133
|
-
|
|
4154
|
+
// Only emit `font` when it came from the caller or from an alias —
|
|
4155
|
+
// emitting the theme body family on every run would be a behavior change.
|
|
4156
|
+
...(options.fontFamily || weighted.font && weighted.font !== effectiveFamily) && {
|
|
4157
|
+
font: weighted.font
|
|
4158
|
+
},
|
|
4134
4159
|
...options.fontSize && { size: options.fontSize * 2 },
|
|
4135
4160
|
// Convert points to half-points
|
|
4136
4161
|
...options.fontColor && {
|
|
4137
4162
|
color: resolveColor(options.fontColor, theme)
|
|
4138
4163
|
},
|
|
4139
|
-
...
|
|
4140
|
-
...
|
|
4164
|
+
...weighted.bold !== void 0 && { bold: weighted.bold },
|
|
4165
|
+
...weighted.italics !== void 0 && { italics: weighted.italics },
|
|
4141
4166
|
...options.underline !== void 0 && {
|
|
4142
4167
|
underline: options.underline ? { type: "single" } : void 0
|
|
4143
4168
|
}
|
|
@@ -4257,13 +4282,25 @@ function createHeading(text, level, theme, _themeName, options = {}) {
|
|
|
4257
4282
|
children.push(new ColumnBreak());
|
|
4258
4283
|
}
|
|
4259
4284
|
const hasDecorators = /(\*\*\*|___|(\*\*|__)|(\*|_))/.test(normalizedText);
|
|
4285
|
+
const headingHasWeightRequest = options.fontWeight != null || options.bold === true;
|
|
4286
|
+
const headingEffectiveFamily = options.fontFamily ?? (headingHasWeightRequest ? resolveFontFamily(theme, "heading") : void 0);
|
|
4287
|
+
const headingWeighted = applyFontWeightAlias({
|
|
4288
|
+
fontFamily: headingEffectiveFamily,
|
|
4289
|
+
bold: options.bold,
|
|
4290
|
+
italic: options.italic,
|
|
4291
|
+
fontWeight: options.fontWeight
|
|
4292
|
+
});
|
|
4260
4293
|
const baseTextStyle = {
|
|
4261
|
-
...options.fontFamily
|
|
4294
|
+
...(options.fontFamily || headingWeighted.font && headingWeighted.font !== headingEffectiveFamily) && {
|
|
4295
|
+
font: headingWeighted.font
|
|
4296
|
+
},
|
|
4262
4297
|
...options.fontSize && { size: options.fontSize * 2 },
|
|
4263
4298
|
// points to half-points
|
|
4264
4299
|
...options.fontColor && { color: resolveColor(options.fontColor, theme) },
|
|
4265
|
-
...
|
|
4266
|
-
...
|
|
4300
|
+
...headingWeighted.bold !== void 0 && { bold: headingWeighted.bold },
|
|
4301
|
+
...headingWeighted.italics !== void 0 && {
|
|
4302
|
+
italics: headingWeighted.italics
|
|
4303
|
+
},
|
|
4267
4304
|
...options.underline !== void 0 && {
|
|
4268
4305
|
underline: options.underline ? { type: "single" } : void 0
|
|
4269
4306
|
}
|
|
@@ -4775,12 +4812,18 @@ async function createTable(columns, tableConfig, theme, themeName, _options = {}
|
|
|
4775
4812
|
if (!cell) {
|
|
4776
4813
|
return cellChildren;
|
|
4777
4814
|
}
|
|
4815
|
+
const cellWeighted = applyFontWeightAlias({
|
|
4816
|
+
fontFamily: cellDefaults.font?.family || baseCellStyle.font,
|
|
4817
|
+
bold: cellDefaults.font?.bold ?? false,
|
|
4818
|
+
italic: cellDefaults.font?.italic ?? false,
|
|
4819
|
+
fontWeight: cellDefaults.font?.fontWeight
|
|
4820
|
+
});
|
|
4778
4821
|
const mergedStyle = {
|
|
4779
|
-
font:
|
|
4822
|
+
font: cellWeighted.font,
|
|
4780
4823
|
size: cellDefaults.font?.size ? cellDefaults.font.size * 2 : baseCellStyle.size,
|
|
4781
4824
|
// Convert to half-points
|
|
4782
|
-
bold:
|
|
4783
|
-
italics:
|
|
4825
|
+
bold: cellWeighted.bold ?? false,
|
|
4826
|
+
italics: cellWeighted.italics ?? false,
|
|
4784
4827
|
underline: cellDefaults.font?.underline ? { type: "single" } : void 0,
|
|
4785
4828
|
color: cellDefaults.color || baseCellStyle.color
|
|
4786
4829
|
};
|
|
@@ -4788,15 +4831,21 @@ async function createTable(columns, tableConfig, theme, themeName, _options = {}
|
|
|
4788
4831
|
if (isParagraphComponent(cell)) {
|
|
4789
4832
|
const textComp = cell;
|
|
4790
4833
|
const paragraphFont = textComp.props.font;
|
|
4834
|
+
const paraWeighted = applyFontWeightAlias({
|
|
4835
|
+
fontFamily: paragraphFont?.family ?? mergedStyle.font,
|
|
4836
|
+
bold: paragraphFont?.bold,
|
|
4837
|
+
italic: paragraphFont?.italic,
|
|
4838
|
+
fontWeight: paragraphFont?.fontWeight
|
|
4839
|
+
});
|
|
4791
4840
|
const paragraphStyle = {
|
|
4792
4841
|
...mergedStyle,
|
|
4793
|
-
...
|
|
4842
|
+
...paraWeighted.font && { font: paraWeighted.font },
|
|
4794
4843
|
...paragraphFont?.size && { size: paragraphFont.size * 2 },
|
|
4795
|
-
...
|
|
4796
|
-
bold:
|
|
4844
|
+
...paraWeighted.bold !== void 0 && {
|
|
4845
|
+
bold: paraWeighted.bold
|
|
4797
4846
|
},
|
|
4798
|
-
...
|
|
4799
|
-
italics:
|
|
4847
|
+
...paraWeighted.italics !== void 0 && {
|
|
4848
|
+
italics: paraWeighted.italics
|
|
4800
4849
|
},
|
|
4801
4850
|
...paragraphFont?.underline !== void 0 && {
|
|
4802
4851
|
underline: paragraphFont.underline ? { type: "single" } : void 0
|
|
@@ -5244,6 +5293,7 @@ function renderHeadingComponent(component, theme, themeName) {
|
|
|
5244
5293
|
fontSize: config.font?.size,
|
|
5245
5294
|
fontColor: config.font?.color,
|
|
5246
5295
|
bold: config.font?.bold,
|
|
5296
|
+
fontWeight: config.font?.fontWeight,
|
|
5247
5297
|
italic: config.font?.italic,
|
|
5248
5298
|
underline: config.font?.underline,
|
|
5249
5299
|
// Pagination control
|
|
@@ -5359,6 +5409,7 @@ function renderParagraphComponent(component, theme, themeName) {
|
|
|
5359
5409
|
fontSize: resolvedConfig.font?.size,
|
|
5360
5410
|
fontColor: resolvedConfig.font?.color,
|
|
5361
5411
|
bold: resolvedConfig.font?.bold,
|
|
5412
|
+
fontWeight: resolvedConfig.font?.fontWeight,
|
|
5362
5413
|
italic: resolvedConfig.font?.italic,
|
|
5363
5414
|
underline: resolvedConfig.font?.underline,
|
|
5364
5415
|
// Pass outline level for TOC support
|
|
@@ -6630,6 +6681,69 @@ async function renderComponent(component, theme, themeName, context) {
|
|
|
6630
6681
|
);
|
|
6631
6682
|
}
|
|
6632
6683
|
|
|
6684
|
+
// src/core/fontResolution.ts
|
|
6685
|
+
import {
|
|
6686
|
+
collectFontNamesFromDocx,
|
|
6687
|
+
validateFontReferences,
|
|
6688
|
+
FontRegistry
|
|
6689
|
+
} from "@json-to-office/shared";
|
|
6690
|
+
import {
|
|
6691
|
+
loadFileFontSource,
|
|
6692
|
+
FontDiskCache,
|
|
6693
|
+
fetchVariableFontSource
|
|
6694
|
+
} from "@json-to-office/shared/fonts/node";
|
|
6695
|
+
async function resolveDocumentFonts(document, theme, fonts, warnings) {
|
|
6696
|
+
const emit = (code, message) => {
|
|
6697
|
+
if (warnings) {
|
|
6698
|
+
warnings.push({
|
|
6699
|
+
component: "fontRegistry",
|
|
6700
|
+
message,
|
|
6701
|
+
severity: "warning",
|
|
6702
|
+
context: { code }
|
|
6703
|
+
});
|
|
6704
|
+
} else {
|
|
6705
|
+
console.warn(`[json-to-docx] ${code}: ${message}`);
|
|
6706
|
+
}
|
|
6707
|
+
};
|
|
6708
|
+
const names = /* @__PURE__ */ new Set();
|
|
6709
|
+
for (const n of collectFontNamesFromDocx(document)) names.add(n);
|
|
6710
|
+
for (const n of collectFontNamesFromDocx(theme)) names.add(n);
|
|
6711
|
+
if (names.size === 0) return [];
|
|
6712
|
+
const validation = validateFontReferences({
|
|
6713
|
+
referencedNames: names,
|
|
6714
|
+
registeredEntries: fonts?.extraEntries
|
|
6715
|
+
});
|
|
6716
|
+
if (validation.warnings.length > 0) {
|
|
6717
|
+
if (fonts?.strict) {
|
|
6718
|
+
throw new Error(
|
|
6719
|
+
`Unresolved font references (strict mode):
|
|
6720
|
+
` + validation.warnings.map((w) => ` - ${w.message}`).join("\n")
|
|
6721
|
+
);
|
|
6722
|
+
}
|
|
6723
|
+
for (const w of validation.warnings) {
|
|
6724
|
+
emit(w.code, w.message);
|
|
6725
|
+
}
|
|
6726
|
+
}
|
|
6727
|
+
if (!fonts?.onResolved) return [];
|
|
6728
|
+
const registry = new FontRegistry({
|
|
6729
|
+
opts: fonts,
|
|
6730
|
+
fileLoader: loadFileFontSource,
|
|
6731
|
+
variableLoader: fetchVariableFontSource,
|
|
6732
|
+
diskCache: fonts?.googleFonts?.cacheDir ? new FontDiskCache(fonts.googleFonts.cacheDir) : void 0
|
|
6733
|
+
});
|
|
6734
|
+
const resolved = await registry.resolveMany(names);
|
|
6735
|
+
for (const r of resolved) {
|
|
6736
|
+
for (const msg of r.warnings) {
|
|
6737
|
+
emit("FONT_UNRESOLVED", msg);
|
|
6738
|
+
}
|
|
6739
|
+
}
|
|
6740
|
+
fonts.onResolved(resolved);
|
|
6741
|
+
return resolved;
|
|
6742
|
+
}
|
|
6743
|
+
|
|
6744
|
+
// src/core/generator.ts
|
|
6745
|
+
import { applyExportMode, scopedThemeName } from "@json-to-office/shared";
|
|
6746
|
+
|
|
6633
6747
|
// src/json/parser.ts
|
|
6634
6748
|
import {
|
|
6635
6749
|
JsonDocumentParser,
|
|
@@ -6789,33 +6903,32 @@ function isReportComponentDefinition(definition) {
|
|
|
6789
6903
|
const def = definition;
|
|
6790
6904
|
return def.name === "docx" && "props" in def;
|
|
6791
6905
|
}
|
|
6792
|
-
async function generateDocument(document) {
|
|
6906
|
+
async function generateDocument(document, options) {
|
|
6793
6907
|
if (!document || document.name !== "docx") {
|
|
6794
6908
|
throw new Error("Top-level component must be a docx component");
|
|
6795
6909
|
}
|
|
6796
6910
|
if ("$schema" in document) {
|
|
6797
|
-
return await generateDocumentFromJson(document);
|
|
6911
|
+
return await generateDocumentFromJson(document, options);
|
|
6798
6912
|
}
|
|
6799
|
-
|
|
6800
|
-
|
|
6801
|
-
|
|
6802
|
-
|
|
6803
|
-
|
|
6804
|
-
|
|
6805
|
-
|
|
6806
|
-
});
|
|
6807
|
-
return renderedDocument;
|
|
6913
|
+
return await generateDocumentWithCustomThemes(
|
|
6914
|
+
document,
|
|
6915
|
+
options?.customThemes,
|
|
6916
|
+
options?.services,
|
|
6917
|
+
options?.fonts,
|
|
6918
|
+
options?.warnings
|
|
6919
|
+
);
|
|
6808
6920
|
}
|
|
6809
|
-
async function generateFromConfig(props, components) {
|
|
6921
|
+
async function generateFromConfig(props, components, options) {
|
|
6810
6922
|
const reportComponent = {
|
|
6811
6923
|
name: "docx",
|
|
6812
6924
|
props,
|
|
6813
6925
|
children: components
|
|
6814
6926
|
};
|
|
6815
|
-
return await generateDocument(reportComponent);
|
|
6927
|
+
return await generateDocument(reportComponent, options);
|
|
6816
6928
|
}
|
|
6817
|
-
async function generateDocumentWithCustomThemes(
|
|
6818
|
-
|
|
6929
|
+
async function generateDocumentWithCustomThemes(documentIn, customThemes, services, fonts, warnings) {
|
|
6930
|
+
let document = documentIn;
|
|
6931
|
+
let themeName = document.props.theme || "minimal";
|
|
6819
6932
|
let theme;
|
|
6820
6933
|
if (customThemes) {
|
|
6821
6934
|
if (customThemes[themeName]) {
|
|
@@ -6834,6 +6947,23 @@ async function generateDocumentWithCustomThemes(document, customThemes, services
|
|
|
6834
6947
|
} else {
|
|
6835
6948
|
theme = getThemeWithFallback(themeName);
|
|
6836
6949
|
}
|
|
6950
|
+
const mode = applyExportMode({ doc: document, theme, fonts });
|
|
6951
|
+
document = mode.doc;
|
|
6952
|
+
theme = mode.theme;
|
|
6953
|
+
themeName = scopedThemeName(themeName, fonts?.mode);
|
|
6954
|
+
for (const w of mode.warnings) {
|
|
6955
|
+
if (warnings) {
|
|
6956
|
+
warnings.push({
|
|
6957
|
+
component: "fontRegistry",
|
|
6958
|
+
message: w.message,
|
|
6959
|
+
severity: "warning",
|
|
6960
|
+
context: { code: w.code }
|
|
6961
|
+
});
|
|
6962
|
+
} else {
|
|
6963
|
+
console.warn(`[json-to-docx] [${w.code}] ${w.message}`);
|
|
6964
|
+
}
|
|
6965
|
+
}
|
|
6966
|
+
await resolveDocumentFonts(document, theme, fonts, warnings);
|
|
6837
6967
|
const structure = await processDocument(document, theme, themeName);
|
|
6838
6968
|
const layout = applyLayout(structure.sections, theme, themeName);
|
|
6839
6969
|
const renderedDocument = await renderDocument(structure, layout, {
|
|
@@ -6857,7 +6987,9 @@ async function generateDocumentFromJson(jsonConfig, options) {
|
|
|
6857
6987
|
return await generateDocumentWithCustomThemes(
|
|
6858
6988
|
reportComponent,
|
|
6859
6989
|
options?.customThemes,
|
|
6860
|
-
options?.services
|
|
6990
|
+
options?.services,
|
|
6991
|
+
options?.fonts,
|
|
6992
|
+
options?.warnings
|
|
6861
6993
|
);
|
|
6862
6994
|
}
|
|
6863
6995
|
function validateJsonSchema(jsonConfig) {
|
|
@@ -7120,6 +7252,7 @@ async function runExample(example, options = {}) {
|
|
|
7120
7252
|
// src/plugin/createDocumentGenerator.ts
|
|
7121
7253
|
init_styles();
|
|
7122
7254
|
import { Packer as Packer2 } from "docx";
|
|
7255
|
+
import { applyExportMode as applyExportMode2, scopedThemeName as scopedThemeName2 } from "@json-to-office/shared";
|
|
7123
7256
|
|
|
7124
7257
|
// src/plugin/version-resolver.ts
|
|
7125
7258
|
import { resolveComponentVersion } from "@json-to-office/shared/plugin";
|
|
@@ -7488,7 +7621,8 @@ function createBuilderImpl(state) {
|
|
|
7488
7621
|
customThemes: state.customThemes,
|
|
7489
7622
|
debug: state.debug,
|
|
7490
7623
|
enableCache: state.enableCache,
|
|
7491
|
-
services: state.services
|
|
7624
|
+
services: state.services,
|
|
7625
|
+
fonts: state.fonts
|
|
7492
7626
|
};
|
|
7493
7627
|
return createBuilderImpl(
|
|
7494
7628
|
newState
|
|
@@ -7501,25 +7635,37 @@ function createBuilderImpl(state) {
|
|
|
7501
7635
|
internalDocument,
|
|
7502
7636
|
state.components
|
|
7503
7637
|
);
|
|
7504
|
-
const
|
|
7505
|
-
const docTheme = resolveDocumentTheme(
|
|
7638
|
+
const baseThemeName = internalDocument.props.theme || "minimal";
|
|
7639
|
+
const docTheme = resolveDocumentTheme(baseThemeName);
|
|
7506
7640
|
const warnings = [];
|
|
7641
|
+
const mode = applyExportMode2({
|
|
7642
|
+
doc: internalDocument,
|
|
7643
|
+
theme: docTheme,
|
|
7644
|
+
fonts: state.fonts
|
|
7645
|
+
});
|
|
7646
|
+
const modedTheme = mode.theme;
|
|
7647
|
+
const themeName = scopedThemeName2(baseThemeName, state.fonts?.mode);
|
|
7648
|
+
for (const w of mode.warnings) {
|
|
7649
|
+
warnings.push({
|
|
7650
|
+
component: "fontRegistry",
|
|
7651
|
+
message: w.message,
|
|
7652
|
+
severity: "warning",
|
|
7653
|
+
context: { code: w.code }
|
|
7654
|
+
});
|
|
7655
|
+
}
|
|
7507
7656
|
const processedComponents = await processDocumentComponents(
|
|
7508
|
-
|
|
7657
|
+
mode.doc.children || [],
|
|
7509
7658
|
warnings,
|
|
7510
|
-
|
|
7659
|
+
modedTheme
|
|
7511
7660
|
);
|
|
7512
7661
|
const processedDocument = {
|
|
7513
|
-
...
|
|
7662
|
+
...mode.doc,
|
|
7514
7663
|
children: processedComponents
|
|
7515
7664
|
};
|
|
7516
|
-
const [
|
|
7517
|
-
|
|
7518
|
-
|
|
7519
|
-
|
|
7520
|
-
themeName
|
|
7521
|
-
);
|
|
7522
|
-
const layout = applyLayout(structure.sections, docTheme, themeName);
|
|
7665
|
+
const [modedDoc] = normalizeDocument(processedDocument);
|
|
7666
|
+
await resolveDocumentFonts(modedDoc, modedTheme, state.fonts, warnings);
|
|
7667
|
+
const structure = await processDocument(modedDoc, modedTheme, themeName);
|
|
7668
|
+
const layout = applyLayout(structure.sections, modedTheme, themeName);
|
|
7523
7669
|
const generatedDocument = await renderDocument(structure, layout, {
|
|
7524
7670
|
services: state.services
|
|
7525
7671
|
});
|
|
@@ -7600,13 +7746,19 @@ function createBuilderImpl(state) {
|
|
|
7600
7746
|
const themeName = internalDocument.props.theme || "minimal";
|
|
7601
7747
|
const docTheme = resolveDocumentTheme(themeName);
|
|
7602
7748
|
const warnings = [];
|
|
7749
|
+
const mode = applyExportMode2({
|
|
7750
|
+
doc: internalDocument,
|
|
7751
|
+
theme: docTheme,
|
|
7752
|
+
fonts: state.fonts
|
|
7753
|
+
});
|
|
7754
|
+
const modedTheme = mode.theme;
|
|
7603
7755
|
const processedComponents = await processDocumentComponents(
|
|
7604
|
-
|
|
7756
|
+
mode.doc.children || [],
|
|
7605
7757
|
warnings,
|
|
7606
|
-
|
|
7758
|
+
modedTheme
|
|
7607
7759
|
);
|
|
7608
7760
|
const processedDocument = {
|
|
7609
|
-
...
|
|
7761
|
+
...mode.doc,
|
|
7610
7762
|
children: processedComponents
|
|
7611
7763
|
};
|
|
7612
7764
|
const [finalReportComponent] = normalizeDocument(processedDocument);
|
|
@@ -7638,7 +7790,8 @@ function createDocumentGenerator(options) {
|
|
|
7638
7790
|
customThemes: options.customThemes,
|
|
7639
7791
|
debug: options.debug ?? false,
|
|
7640
7792
|
enableCache: options.enableCache ?? false,
|
|
7641
|
-
services: options.services
|
|
7793
|
+
services: options.services,
|
|
7794
|
+
fonts: options.fonts
|
|
7642
7795
|
};
|
|
7643
7796
|
return createBuilderImpl(initialState);
|
|
7644
7797
|
}
|