@usejunior/docx-core 0.11.0 → 0.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/generation/compile.d.ts +4 -3
  3. package/dist/generation/compile.d.ts.map +1 -1
  4. package/dist/generation/compile.js +17 -5
  5. package/dist/generation/compile.js.map +1 -1
  6. package/dist/generation/emit/emit-context.d.ts +3 -1
  7. package/dist/generation/emit/emit-context.d.ts.map +1 -1
  8. package/dist/generation/emit/font-table-part.d.ts +16 -0
  9. package/dist/generation/emit/font-table-part.d.ts.map +1 -0
  10. package/dist/generation/emit/font-table-part.js +74 -0
  11. package/dist/generation/emit/font-table-part.js.map +1 -0
  12. package/dist/generation/emit/numbering-part.d.ts.map +1 -1
  13. package/dist/generation/emit/numbering-part.js +7 -5
  14. package/dist/generation/emit/numbering-part.js.map +1 -1
  15. package/dist/generation/emit/paragraph.js +1 -1
  16. package/dist/generation/emit/paragraph.js.map +1 -1
  17. package/dist/generation/emit/properties.d.ts +4 -2
  18. package/dist/generation/emit/properties.d.ts.map +1 -1
  19. package/dist/generation/emit/properties.js +19 -3
  20. package/dist/generation/emit/properties.js.map +1 -1
  21. package/dist/generation/emit/run.d.ts +2 -1
  22. package/dist/generation/emit/run.d.ts.map +1 -1
  23. package/dist/generation/emit/run.js +13 -13
  24. package/dist/generation/emit/run.js.map +1 -1
  25. package/dist/generation/emit/settings-part.d.ts +3 -3
  26. package/dist/generation/emit/settings-part.d.ts.map +1 -1
  27. package/dist/generation/emit/settings-part.js +49 -5
  28. package/dist/generation/emit/settings-part.js.map +1 -1
  29. package/dist/generation/emit/styles-part.d.ts.map +1 -1
  30. package/dist/generation/emit/styles-part.js +5 -3
  31. package/dist/generation/emit/styles-part.js.map +1 -1
  32. package/dist/generation/emit/table.d.ts.map +1 -1
  33. package/dist/generation/emit/table.js +15 -2
  34. package/dist/generation/emit/table.js.map +1 -1
  35. package/dist/generation/emit/theme-part.d.ts +21 -0
  36. package/dist/generation/emit/theme-part.d.ts.map +1 -0
  37. package/dist/generation/emit/theme-part.js +151 -0
  38. package/dist/generation/emit/theme-part.js.map +1 -0
  39. package/dist/generation/emit/web-settings-part.d.ts +12 -0
  40. package/dist/generation/emit/web-settings-part.d.ts.map +1 -0
  41. package/dist/generation/emit/web-settings-part.js +19 -0
  42. package/dist/generation/emit/web-settings-part.js.map +1 -0
  43. package/dist/generation/recipes.d.ts +29 -6
  44. package/dist/generation/recipes.d.ts.map +1 -1
  45. package/dist/generation/recipes.js +70 -5
  46. package/dist/generation/recipes.js.map +1 -1
  47. package/dist/generation/theme-colors.d.ts +4 -0
  48. package/dist/generation/theme-colors.d.ts.map +1 -0
  49. package/dist/generation/theme-colors.js +18 -0
  50. package/dist/generation/theme-colors.js.map +1 -0
  51. package/dist/generation/types.d.ts +32 -0
  52. package/dist/generation/types.d.ts.map +1 -1
  53. package/dist/generation/types.js +39 -1
  54. package/dist/generation/types.js.map +1 -1
  55. package/dist/generation/validate-spec.d.ts.map +1 -1
  56. package/dist/generation/validate-spec.js +52 -0
  57. package/dist/generation/validate-spec.js.map +1 -1
  58. package/dist/primitives/namespaces.d.ts +5 -0
  59. package/dist/primitives/namespaces.d.ts.map +1 -1
  60. package/dist/primitives/namespaces.js +6 -0
  61. package/dist/primitives/namespaces.js.map +1 -1
  62. package/package.json +1 -1
@@ -0,0 +1,151 @@
1
+ /**
2
+ * word/theme/theme1.xml emitter.
3
+ *
4
+ * Emitted on every package. Word-authored documents always reference a theme
5
+ * (default fonts/colors resolve through it); shipping the canonical Office theme
6
+ * keeps generated output part-for-part comparable to genuine Word output and
7
+ * removes a suspected Word-for-Mac repair trigger (issue #482). The body is the
8
+ * complete, static Office default theme — a truncated fmtScheme is itself a repair
9
+ * trigger, so the full color/font/format scheme is emitted verbatim. Static body →
10
+ * determinism holds.
11
+ *
12
+ * The root is the DrawingML `a:theme` element carrying themeElements
13
+ * (clrScheme + fontScheme + fmtScheme). Optional generation theme input applies
14
+ * partial color/font overrides to that canonical template before serialization.
15
+ */
16
+ import { parseXml, serializeXml, XML_DECL } from '../../primitives/xml.js';
17
+ const THEME_CONTENT_TYPE = 'application/vnd.openxmlformats-officedocument.theme+xml';
18
+ const THEME_REL_TYPE = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme';
19
+ const A_NS = 'http://schemas.openxmlformats.org/drawingml/2006/main';
20
+ /** Maps each authoring slot to its `clrScheme` child element name in theme1.xml. */
21
+ export const THEME_SLOT_TO_CLR_SCHEME = {
22
+ text1: 'dk1',
23
+ background1: 'lt1',
24
+ text2: 'dk2',
25
+ background2: 'lt2',
26
+ accent1: 'accent1',
27
+ accent2: 'accent2',
28
+ accent3: 'accent3',
29
+ accent4: 'accent4',
30
+ accent5: 'accent5',
31
+ accent6: 'accent6',
32
+ hyperlink: 'hlink',
33
+ followedHyperlink: 'folHlink',
34
+ };
35
+ /** The canonical Office default theme (clrScheme + fontScheme + full fmtScheme). */
36
+ const THEME1_XML = `<a:theme xmlns:a="${A_NS}" name="Office Theme">` +
37
+ '<a:themeElements>' +
38
+ '<a:clrScheme name="Office">' +
39
+ '<a:dk1><a:sysClr val="windowText" lastClr="000000"/></a:dk1>' +
40
+ '<a:lt1><a:sysClr val="window" lastClr="FFFFFF"/></a:lt1>' +
41
+ '<a:dk2><a:srgbClr val="44546A"/></a:dk2>' +
42
+ '<a:lt2><a:srgbClr val="E7E6E6"/></a:lt2>' +
43
+ '<a:accent1><a:srgbClr val="4472C4"/></a:accent1>' +
44
+ '<a:accent2><a:srgbClr val="ED7D31"/></a:accent2>' +
45
+ '<a:accent3><a:srgbClr val="A5A5A5"/></a:accent3>' +
46
+ '<a:accent4><a:srgbClr val="FFC000"/></a:accent4>' +
47
+ '<a:accent5><a:srgbClr val="5B9BD5"/></a:accent5>' +
48
+ '<a:accent6><a:srgbClr val="70AD47"/></a:accent6>' +
49
+ '<a:hlink><a:srgbClr val="0563C1"/></a:hlink>' +
50
+ '<a:folHlink><a:srgbClr val="954F72"/></a:folHlink>' +
51
+ '</a:clrScheme>' +
52
+ '<a:fontScheme name="Office">' +
53
+ '<a:majorFont>' +
54
+ '<a:latin typeface="Calibri Light" panose="020F0302020204030204"/>' +
55
+ '<a:ea typeface=""/>' +
56
+ '<a:cs typeface=""/>' +
57
+ '</a:majorFont>' +
58
+ '<a:minorFont>' +
59
+ '<a:latin typeface="Calibri" panose="020F0502020204030204"/>' +
60
+ '<a:ea typeface=""/>' +
61
+ '<a:cs typeface=""/>' +
62
+ '</a:minorFont>' +
63
+ '</a:fontScheme>' +
64
+ '<a:fmtScheme name="Office">' +
65
+ '<a:fillStyleLst>' +
66
+ '<a:solidFill><a:schemeClr val="phClr"/></a:solidFill>' +
67
+ '<a:gradFill rotWithShape="1">' +
68
+ '<a:gsLst>' +
69
+ '<a:gs pos="0"><a:schemeClr val="phClr"><a:lumMod val="110000"/><a:satMod val="105000"/><a:tint val="67000"/></a:schemeClr></a:gs>' +
70
+ '<a:gs pos="50000"><a:schemeClr val="phClr"><a:lumMod val="105000"/><a:satMod val="103000"/><a:tint val="73000"/></a:schemeClr></a:gs>' +
71
+ '<a:gs pos="100000"><a:schemeClr val="phClr"><a:lumMod val="105000"/><a:satMod val="109000"/><a:tint val="81000"/></a:schemeClr></a:gs>' +
72
+ '</a:gsLst>' +
73
+ '<a:lin ang="5400000" scaled="0"/>' +
74
+ '</a:gradFill>' +
75
+ '<a:gradFill rotWithShape="1">' +
76
+ '<a:gsLst>' +
77
+ '<a:gs pos="0"><a:schemeClr val="phClr"><a:satMod val="103000"/><a:lumMod val="102000"/><a:tint val="94000"/></a:schemeClr></a:gs>' +
78
+ '<a:gs pos="50000"><a:schemeClr val="phClr"><a:satMod val="110000"/><a:lumMod val="100000"/><a:shade val="100000"/></a:schemeClr></a:gs>' +
79
+ '<a:gs pos="100000"><a:schemeClr val="phClr"><a:lumMod val="99000"/><a:satMod val="120000"/><a:shade val="78000"/></a:schemeClr></a:gs>' +
80
+ '</a:gsLst>' +
81
+ '<a:lin ang="5400000" scaled="0"/>' +
82
+ '</a:gradFill>' +
83
+ '</a:fillStyleLst>' +
84
+ '<a:lnStyleLst>' +
85
+ '<a:ln w="6350" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/><a:miter lim="800000"/></a:ln>' +
86
+ '<a:ln w="12700" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/><a:miter lim="800000"/></a:ln>' +
87
+ '<a:ln w="19050" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/><a:miter lim="800000"/></a:ln>' +
88
+ '</a:lnStyleLst>' +
89
+ '<a:effectStyleLst>' +
90
+ '<a:effectStyle><a:effectLst/></a:effectStyle>' +
91
+ '<a:effectStyle><a:effectLst/></a:effectStyle>' +
92
+ '<a:effectStyle><a:effectLst><a:outerShdw blurRad="57150" dist="19050" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="63000"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle>' +
93
+ '</a:effectStyleLst>' +
94
+ '<a:bgFillStyleLst>' +
95
+ '<a:solidFill><a:schemeClr val="phClr"/></a:solidFill>' +
96
+ '<a:solidFill><a:schemeClr val="phClr"><a:tint val="95000"/><a:satMod val="170000"/></a:schemeClr></a:solidFill>' +
97
+ '<a:gradFill rotWithShape="1">' +
98
+ '<a:gsLst>' +
99
+ '<a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="93000"/><a:satMod val="150000"/><a:shade val="98000"/><a:lumMod val="102000"/></a:schemeClr></a:gs>' +
100
+ '<a:gs pos="50000"><a:schemeClr val="phClr"><a:tint val="98000"/><a:satMod val="130000"/><a:shade val="90000"/><a:lumMod val="103000"/></a:schemeClr></a:gs>' +
101
+ '<a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="63000"/><a:satMod val="120000"/></a:schemeClr></a:gs>' +
102
+ '</a:gsLst>' +
103
+ '<a:lin ang="5400000" scaled="0"/>' +
104
+ '</a:gradFill>' +
105
+ '</a:bgFillStyleLst>' +
106
+ '</a:fmtScheme>' +
107
+ '</a:themeElements>' +
108
+ '<a:objectDefaults/>' +
109
+ '<a:extraClrSchemeLst/>' +
110
+ '</a:theme>';
111
+ export function emitThemePart(ctx, theme) {
112
+ ctx.registerPart('word/theme/theme1.xml', THEME_CONTENT_TYPE, THEME_REL_TYPE);
113
+ // Parse + reserialize: normalizes output and fails loudly if the static body is
114
+ // ever edited into malformed XML. Theme overrides mutate that parsed template
115
+ // so callers get the complete Office fmtScheme with only requested changes.
116
+ const doc = parseXml(THEME1_XML);
117
+ applyThemeOverrides(doc, theme);
118
+ ctx.setFileContent('word/theme/theme1.xml', XML_DECL + serializeXml(doc));
119
+ }
120
+ function applyThemeOverrides(doc, theme) {
121
+ if (!theme)
122
+ return;
123
+ for (const [slot, hex] of Object.entries(theme.colors ?? {})) {
124
+ replaceSchemeColor(doc, slot, hex);
125
+ }
126
+ if (theme.fonts?.major !== undefined) {
127
+ setLatinTypeface(doc, 'a:majorFont', theme.fonts.major);
128
+ }
129
+ if (theme.fonts?.minor !== undefined) {
130
+ setLatinTypeface(doc, 'a:minorFont', theme.fonts.minor);
131
+ }
132
+ }
133
+ function replaceSchemeColor(doc, slot, hex) {
134
+ const elementName = THEME_SLOT_TO_CLR_SCHEME[slot];
135
+ const schemeEl = doc.getElementsByTagName(`a:${elementName}`).item(0);
136
+ if (!schemeEl)
137
+ throw new Error(`theme clrScheme is missing a:${elementName}`);
138
+ while (schemeEl.firstChild)
139
+ schemeEl.removeChild(schemeEl.firstChild);
140
+ const srgb = doc.createElementNS(A_NS, 'a:srgbClr');
141
+ srgb.setAttribute('val', hex);
142
+ schemeEl.appendChild(srgb);
143
+ }
144
+ function setLatinTypeface(doc, fontElementName, typeface) {
145
+ const fontEl = doc.getElementsByTagName(fontElementName).item(0);
146
+ const latin = fontEl?.getElementsByTagName('a:latin').item(0);
147
+ if (!latin)
148
+ throw new Error(`theme fontScheme is missing ${fontElementName}/a:latin`);
149
+ latin.setAttribute('typeface', typeface);
150
+ }
151
+ //# sourceMappingURL=theme-part.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-part.js","sourceRoot":"","sources":["../../../src/generation/emit/theme-part.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * word/webSettings.xml emitter.
3
+ *
4
+ * Emitted on every package. Word-authored documents always carry a web-settings
5
+ * part; shipping a minimal one keeps generated output part-for-part comparable to
6
+ * genuine Word output (see issue #482). The body is static, so determinism holds.
7
+ *
8
+ * The root is the WordprocessingML `w:webSettings` element.
9
+ */
10
+ import type { CompileContext } from '../context.js';
11
+ export declare function emitWebSettingsPart(ctx: CompileContext): void;
12
+ //# sourceMappingURL=web-settings-part.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-settings-part.d.ts","sourceRoot":"","sources":["../../../src/generation/emit/web-settings-part.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAQpD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI,CAM7D"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * word/webSettings.xml emitter.
3
+ *
4
+ * Emitted on every package. Word-authored documents always carry a web-settings
5
+ * part; shipping a minimal one keeps generated output part-for-part comparable to
6
+ * genuine Word output (see issue #482). The body is static, so determinism holds.
7
+ *
8
+ * The root is the WordprocessingML `w:webSettings` element.
9
+ */
10
+ import { parseXml, serializeXml, XML_DECL } from '../../primitives/xml.js';
11
+ import { OOXML } from '../../primitives/namespaces.js';
12
+ const WEB_SETTINGS_CONTENT_TYPE = 'application/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml';
13
+ const WEB_SETTINGS_REL_TYPE = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/webSettings';
14
+ export function emitWebSettingsPart(ctx) {
15
+ ctx.registerPart('word/webSettings.xml', WEB_SETTINGS_CONTENT_TYPE, WEB_SETTINGS_REL_TYPE);
16
+ const doc = parseXml(`<w:webSettings xmlns:w="${OOXML.W_NS}"><w:optimizeForBrowser/><w:allowPNG/></w:webSettings>`);
17
+ ctx.setFileContent('word/webSettings.xml', XML_DECL + serializeXml(doc));
18
+ }
19
+ //# sourceMappingURL=web-settings-part.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-settings-part.js","sourceRoot":"","sources":["../../../src/generation/emit/web-settings-part.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAE3E,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAEvD,MAAM,yBAAyB,GAC7B,gFAAgF,CAAC;AACnF,MAAM,qBAAqB,GACzB,iFAAiF,CAAC;AAEpF,MAAM,UAAU,mBAAmB,CAAC,GAAmB;IACrD,GAAG,CAAC,YAAY,CAAC,sBAAsB,EAAE,yBAAyB,EAAE,qBAAqB,CAAC,CAAC;IAC3F,MAAM,GAAG,GAAG,QAAQ,CAClB,2BAA2B,KAAK,CAAC,IAAI,wDAAwD,CAC9F,CAAC;IACF,GAAG,CAAC,cAAc,CAAC,sBAAsB,EAAE,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3E,CAAC"}
@@ -9,20 +9,43 @@
9
9
  * VML shapes: Pages and Google Docs mangle VML, borders survive everywhere.
10
10
  */
11
11
  import type { BlockSpec, TableSpec } from './types.js';
12
+ export type CoverTermRow = {
13
+ label: string;
14
+ value: string;
15
+ };
16
+ export type CoverTermGroupRow = {
17
+ group: string;
18
+ };
19
+ export type CoverTermSubrow = {
20
+ label: string;
21
+ value: string;
22
+ subrow: true;
23
+ };
24
+ export type CoverTermEntry = CoverTermRow | CoverTermGroupRow | CoverTermSubrow;
12
25
  export type CoverTermsOptions = {
13
- /** Label/value pairs, rendered one row each in declaration order. */
14
- terms: Array<{
15
- label: string;
16
- value: string;
17
- }>;
26
+ /** Plain rows, group headers, and subrows rendered in declaration order. */
27
+ terms: CoverTermEntry[];
18
28
  /** Two-column widths in twips; defaults to a 2880/6480 split of a 6.5" body. */
19
29
  columnWidthsTwips?: [number, number];
20
30
  /** Heading text for a shaded full-width header row; omitted when absent. */
21
31
  title?: string;
32
+ /** Table border style; defaults to the historical full grid. */
33
+ borderMode?: 'grid' | 'horizontal-rules';
34
+ /** Optional minimum row height applied to term/group/sub rows, not the title row. */
35
+ rowHeightTwips?: number;
36
+ /** Optional uniform cell padding applied to every cover-terms cell. */
37
+ cellPaddingTwips?: number;
38
+ /** Text color for subrow labels and values; defaults to mid-gray. */
39
+ subrowColorHex?: string;
40
+ /**
41
+ * Extra left indent on subrow label cells, added on top of `cellPaddingTwips`
42
+ * (so the label sits further right than a normal row). Defaults to 240 twips.
43
+ */
44
+ subrowLabelIndentTwips?: number;
22
45
  };
23
46
  /**
24
47
  * A fixed-layout two-column label/value table for cover-terms blocks
25
- * (scenario SDX-GEN-070).
48
+ * (scenario SDX-GEN-070), with optional house-style grouped/sub rows.
26
49
  */
27
50
  export declare function coverTermsTable(options: CoverTermsOptions): TableSpec;
28
51
  export type SignatureBlockOptions = {
@@ -1 +1 @@
1
- {"version":3,"file":"recipes.d.ts","sourceRoot":"","sources":["../../src/generation/recipes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAA6B,SAAS,EAAE,MAAM,YAAY,CAAC;AAIlF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,qEAAqE;IACrE,KAAK,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,gFAAgF;IAChF,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,SAAS,CA+BrE;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,KAAK,CAAC;QACb,qEAAqE;QACrE,KAAK,EAAE,MAAM,CAAC;QACd,6CAA6C;QAC7C,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,mDAAmD;QACnD,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;IACH,mEAAmE;IACnE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,SAAS,EAAE,CAsB1E"}
1
+ {"version":3,"file":"recipes.d.ts","sourceRoot":"","sources":["../../src/generation/recipes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAA6B,SAAS,EAAE,MAAM,YAAY,CAAC;AAOlF,MAAM,MAAM,YAAY,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAC5D,MAAM,MAAM,iBAAiB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAClD,MAAM,MAAM,eAAe,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,IAAI,CAAA;CAAE,CAAC;AAC7E,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,iBAAiB,GAAG,eAAe,CAAC;AAEhF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,4EAA4E;IAC5E,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,gFAAgF;IAChF,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAAC;IACzC,qFAAqF;IACrF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qEAAqE;IACrE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,SAAS,CA4ErE;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,KAAK,CAAC;QACb,qEAAqE;QACrE,KAAK,EAAE,MAAM,CAAC;QACd,6CAA6C;QAC7C,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,mDAAmD;QACnD,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;IACH,mEAAmE;IACnE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,SAAS,EAAE,CAsB1E"}
@@ -9,12 +9,19 @@
9
9
  * VML shapes: Pages and Google Docs mangle VML, borders survive everywhere.
10
10
  */
11
11
  const SINGLE = { style: 'single' };
12
+ const NONE = { style: 'none' };
13
+ const DEFAULT_SUBROW_COLOR_HEX = '595959';
14
+ const DEFAULT_SUBROW_LABEL_INDENT_TWIPS = 240;
12
15
  /**
13
16
  * A fixed-layout two-column label/value table for cover-terms blocks
14
- * (scenario SDX-GEN-070).
17
+ * (scenario SDX-GEN-070), with optional house-style grouped/sub rows.
15
18
  */
16
19
  export function coverTermsTable(options) {
17
20
  const [labelWidth, valueWidth] = options.columnWidthsTwips ?? [2880, 6480];
21
+ const borders = options.borderMode === 'horizontal-rules'
22
+ ? { top: SINGLE, bottom: SINGLE, left: NONE, right: NONE, insideH: SINGLE, insideV: NONE }
23
+ : { top: SINGLE, bottom: SINGLE, left: SINGLE, right: SINGLE, insideH: SINGLE, insideV: SINGLE };
24
+ const rowRhythm = rowRhythmProps(options);
18
25
  const rows = [];
19
26
  if (options.title !== undefined) {
20
27
  rows.push({
@@ -24,16 +31,52 @@ export function coverTermsTable(options) {
24
31
  gridSpan: 2,
25
32
  shadingHex: 'D9D9D9',
26
33
  vAlign: 'center',
34
+ ...cellPaddingProps(options),
27
35
  blocks: [paragraph(options.title, { bold: true, alignment: 'center' })],
28
36
  },
29
37
  ],
30
38
  });
31
39
  }
32
40
  for (const term of options.terms) {
41
+ if ('group' in term) {
42
+ rows.push({
43
+ ...rowRhythm,
44
+ cells: [
45
+ {
46
+ gridSpan: 2,
47
+ vAlign: 'center',
48
+ ...cellPaddingProps(options),
49
+ blocks: [paragraph(term.group, { bold: true })],
50
+ },
51
+ ],
52
+ });
53
+ continue;
54
+ }
55
+ const subrow = 'subrow' in term && term.subrow === true;
33
56
  rows.push({
57
+ ...rowRhythm,
34
58
  cells: [
35
- { blocks: [paragraph(term.label, { bold: true })] },
36
- { blocks: [paragraph(term.value)] },
59
+ {
60
+ ...cellPaddingProps(options, subrow
61
+ ? { left: (options.cellPaddingTwips ?? 0) + (options.subrowLabelIndentTwips ?? DEFAULT_SUBROW_LABEL_INDENT_TWIPS) }
62
+ : undefined),
63
+ blocks: [
64
+ paragraph(term.label, {
65
+ bold: !subrow,
66
+ italic: subrow,
67
+ colorHex: subrow ? (options.subrowColorHex ?? DEFAULT_SUBROW_COLOR_HEX) : undefined,
68
+ }),
69
+ ],
70
+ },
71
+ {
72
+ ...cellPaddingProps(options),
73
+ blocks: [
74
+ paragraph(term.value, {
75
+ italic: subrow,
76
+ colorHex: subrow ? (options.subrowColorHex ?? DEFAULT_SUBROW_COLOR_HEX) : undefined,
77
+ }),
78
+ ],
79
+ },
37
80
  ],
38
81
  });
39
82
  }
@@ -41,7 +84,7 @@ export function coverTermsTable(options) {
41
84
  kind: 'table',
42
85
  layout: 'fixed',
43
86
  columnWidthsTwips: [labelWidth, valueWidth],
44
- borders: { top: SINGLE, bottom: SINGLE, left: SINGLE, right: SINGLE, insideH: SINGLE, insideV: SINGLE },
87
+ borders,
45
88
  rows,
46
89
  };
47
90
  }
@@ -78,7 +121,29 @@ function paragraph(text, opts) {
78
121
  return {
79
122
  kind: 'paragraph',
80
123
  ...(opts?.alignment !== undefined ? { alignment: opts.alignment } : {}),
81
- runs: [{ kind: 'text', text, ...(opts?.bold ? { bold: true } : {}) }],
124
+ runs: [
125
+ {
126
+ kind: 'text',
127
+ text,
128
+ ...(opts?.bold ? { bold: true } : {}),
129
+ ...(opts?.italic ? { italic: true } : {}),
130
+ ...(opts?.colorHex !== undefined ? { colorHex: opts.colorHex } : {}),
131
+ },
132
+ ],
133
+ };
134
+ }
135
+ function rowRhythmProps(options) {
136
+ return options.rowHeightTwips === undefined ? {} : { heightTwips: options.rowHeightTwips, heightRule: 'atLeast' };
137
+ }
138
+ function cellPaddingProps(options, overrides) {
139
+ if (options.cellPaddingTwips === undefined && overrides === undefined)
140
+ return {};
141
+ const uniform = options.cellPaddingTwips;
142
+ return {
143
+ marginsTwips: {
144
+ ...(uniform === undefined ? {} : { top: uniform, right: uniform, bottom: uniform, left: uniform }),
145
+ ...overrides,
146
+ },
82
147
  };
83
148
  }
84
149
  //# sourceMappingURL=recipes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"recipes.js","sourceRoot":"","sources":["../../src/generation/recipes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recipes.js","sourceRoot":"","sources":["../../src/generation/recipes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { DocumentThemeSpec, ThemeColorSlot } from './types.js';
2
+ export declare const CANONICAL_THEME_COLORS: Record<ThemeColorSlot, string>;
3
+ export declare function resolveThemeColorValues(theme?: DocumentThemeSpec): ReadonlyMap<ThemeColorSlot, string>;
4
+ //# sourceMappingURL=theme-colors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-colors.d.ts","sourceRoot":"","sources":["../../src/generation/theme-colors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEpE,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAajE,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,KAAK,CAAC,EAAE,iBAAiB,GAAG,WAAW,CAAC,cAAc,EAAE,MAAM,CAAC,CAEtG"}
@@ -0,0 +1,18 @@
1
+ export const CANONICAL_THEME_COLORS = {
2
+ text1: '000000',
3
+ background1: 'FFFFFF',
4
+ text2: '44546A',
5
+ background2: 'E7E6E6',
6
+ accent1: '4472C4',
7
+ accent2: 'ED7D31',
8
+ accent3: 'A5A5A5',
9
+ accent4: 'FFC000',
10
+ accent5: '5B9BD5',
11
+ accent6: '70AD47',
12
+ hyperlink: '0563C1',
13
+ followedHyperlink: '954F72',
14
+ };
15
+ export function resolveThemeColorValues(theme) {
16
+ return new Map(Object.entries({ ...CANONICAL_THEME_COLORS, ...(theme?.colors ?? {}) }));
17
+ }
18
+ //# sourceMappingURL=theme-colors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-colors.js","sourceRoot":"","sources":["../../src/generation/theme-colors.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,sBAAsB,GAAmC;IACpE,KAAK,EAAE,QAAQ;IACf,WAAW,EAAE,QAAQ;IACrB,KAAK,EAAE,QAAQ;IACf,WAAW,EAAE,QAAQ;IACrB,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,QAAQ;IACjB,SAAS,EAAE,QAAQ;IACnB,iBAAiB,EAAE,QAAQ;CAC5B,CAAC;AAEF,MAAM,UAAU,uBAAuB,CAAC,KAAyB;IAC/D,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,sBAAsB,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC,EAAE,CAAoC,CAAC,CAAC;AAC7H,CAAC"}
@@ -14,6 +14,8 @@
14
14
  */
15
15
  export type DocumentSpec = {
16
16
  meta?: DocumentMetaSpec;
17
+ /** Optional partial override for the emitted package theme. */
18
+ theme?: DocumentThemeSpec;
17
19
  /** Emitted to word/styles.xml. Document defaults + Normal are always emitted. */
18
20
  styles?: StyleSpec[];
19
21
  /** Emitted to word/numbering.xml when non-empty. */
@@ -31,6 +33,17 @@ export type DocumentMetaSpec = {
31
33
  /** ISO-8601 timestamp used for docProps dates. Generation never reads the clock. */
32
34
  createdIso?: string;
33
35
  };
36
+ export declare const THEME_COLOR_SLOTS: readonly ["text1", "background1", "text2", "background2", "accent1", "accent2", "accent3", "accent4", "accent5", "accent6", "hyperlink", "followedHyperlink"];
37
+ export type ThemeColorSlot = (typeof THEME_COLOR_SLOTS)[number];
38
+ export type DocumentThemeSpec = {
39
+ /** Partial slot overrides; values are six-digit hex without '#'. */
40
+ colors?: Partial<Record<ThemeColorSlot, string>>;
41
+ /** Optional major (headings) and minor (body) latin typefaces. */
42
+ fonts?: {
43
+ major?: string;
44
+ minor?: string;
45
+ };
46
+ };
34
47
  export type SectionSpec = {
35
48
  page?: {
36
49
  /** Defaults to US Letter (12240 × 15840). */
@@ -104,6 +117,14 @@ export type ParagraphSpec = {
104
117
  note?: DraftingNoteSpec;
105
118
  };
106
119
  export type InlineSpec = RunSpec | FieldSpec | TabSpec | BreakSpec;
120
+ /**
121
+ * The fixed set of text-highlight values (CT_HighlightColor). Single source of
122
+ * truth: the {@link HighlightColor} union is derived from this array, and
123
+ * validation reuses it as a runtime whitelist so JSON/JS callers cannot author
124
+ * an out-of-enum `w:highlight`.
125
+ */
126
+ export declare const HIGHLIGHT_COLORS: readonly ["yellow", "green", "cyan", "magenta", "blue", "red", "darkBlue", "darkCyan", "darkGreen", "darkMagenta", "darkRed", "darkYellow", "darkGray", "lightGray", "black", "white", "none"];
127
+ export type HighlightColor = (typeof HIGHLIGHT_COLORS)[number];
107
128
  /** Run-level formatting shared by text runs, fields, and style definitions. */
108
129
  export type RunProps = {
109
130
  bold?: boolean;
@@ -111,6 +132,14 @@ export type RunProps = {
111
132
  underline?: 'single' | 'double' | 'none';
112
133
  /** Six-digit hex without '#', e.g. 'FF0000'. */
113
134
  colorHex?: string;
135
+ /** Theme color slot emitted as w:color/@w:themeColor. */
136
+ themeColor?: ThemeColorSlot;
137
+ /** Two-digit hex tint emitted as w:color/@w:themeTint. */
138
+ themeTint?: string;
139
+ /** Two-digit hex shade emitted as w:color/@w:themeShade. */
140
+ themeShade?: string;
141
+ /** Fixed text highlight color; arbitrary run fill belongs to run shading. */
142
+ highlight?: HighlightColor;
114
143
  /** Applied to ascii + hAnsi + cs so all script ranges agree. */
115
144
  font?: string;
116
145
  sizePt?: number;
@@ -173,6 +202,9 @@ export type TableCellSpec = {
173
202
  vMerge?: 'restart' | 'continue';
174
203
  borders?: TableBorders;
175
204
  shadingHex?: string;
205
+ themeFill?: ThemeColorSlot;
206
+ themeFillTint?: string;
207
+ themeFillShade?: string;
176
208
  vAlign?: 'top' | 'center' | 'bottom';
177
209
  marginsTwips?: {
178
210
  top?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/generation/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/generation/types.ts"],"names":[],"mappings":"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"}
@@ -12,5 +12,43 @@
12
12
  * compiler rejects any spec feature whose emitter has not shipped yet
13
13
  * (see validate-spec.ts) rather than silently ignoring it.
14
14
  */
15
- export {};
15
+ export const THEME_COLOR_SLOTS = [
16
+ 'text1',
17
+ 'background1',
18
+ 'text2',
19
+ 'background2',
20
+ 'accent1',
21
+ 'accent2',
22
+ 'accent3',
23
+ 'accent4',
24
+ 'accent5',
25
+ 'accent6',
26
+ 'hyperlink',
27
+ 'followedHyperlink',
28
+ ];
29
+ /**
30
+ * The fixed set of text-highlight values (CT_HighlightColor). Single source of
31
+ * truth: the {@link HighlightColor} union is derived from this array, and
32
+ * validation reuses it as a runtime whitelist so JSON/JS callers cannot author
33
+ * an out-of-enum `w:highlight`.
34
+ */
35
+ export const HIGHLIGHT_COLORS = [
36
+ 'yellow',
37
+ 'green',
38
+ 'cyan',
39
+ 'magenta',
40
+ 'blue',
41
+ 'red',
42
+ 'darkBlue',
43
+ 'darkCyan',
44
+ 'darkGreen',
45
+ 'darkMagenta',
46
+ 'darkRed',
47
+ 'darkYellow',
48
+ 'darkGray',
49
+ 'lightGray',
50
+ 'black',
51
+ 'white',
52
+ 'none',
53
+ ];
16
54
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/generation/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/generation/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAyBH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,OAAO;IACP,aAAa;IACb,OAAO;IACP,aAAa;IACb,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,WAAW;IACX,mBAAmB;CACX,CAAC;AAkFX;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,QAAQ;IACR,OAAO;IACP,MAAM;IACN,SAAS;IACT,MAAM;IACN,KAAK;IACL,UAAU;IACV,UAAU;IACV,WAAW;IACX,aAAa;IACb,SAAS;IACT,YAAY;IACZ,UAAU;IACV,WAAW;IACX,OAAO;IACP,OAAO;IACP,MAAM;CACE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"validate-spec.d.ts","sourceRoot":"","sources":["../../src/generation/validate-spec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,KAAK,EAGV,YAAY,EASb,MAAM,YAAY,CAAC;AAapB,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAWrD"}
1
+ {"version":3,"file":"validate-spec.d.ts","sourceRoot":"","sources":["../../src/generation/validate-spec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,KAAK,EAGV,YAAY,EASb,MAAM,YAAY,CAAC;AAiBpB,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAYrD"}