@reportwright/viewer 0.12.1 → 0.13.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 (101) hide show
  1. package/CHANGELOG.md +93 -0
  2. package/README.md +18 -1
  3. package/THIRD-PARTY-NOTICES.md +52 -0
  4. package/dist/{chunk-DXHLIJEY.js → chunk-47ZAKRVN.js} +6 -6
  5. package/dist/{chunk-NR2G4TMG.js → chunk-B5ZCT3UK.js} +47 -26
  6. package/dist/chunk-B5ZCT3UK.js.map +6 -0
  7. package/dist/chunk-BR5K6SBL.js +324 -0
  8. package/dist/chunk-BR5K6SBL.js.map +6 -0
  9. package/dist/chunk-CCH7CFU5.js +5026 -0
  10. package/dist/chunk-CCH7CFU5.js.map +6 -0
  11. package/dist/{peer/chunk-BQFI3DHK.js → chunk-ES2LYZ6S.js} +292 -25
  12. package/dist/chunk-ES2LYZ6S.js.map +6 -0
  13. package/dist/{chunk-S2IUUI6N.js → chunk-GOCWG6FG.js} +67 -49
  14. package/dist/chunk-GOCWG6FG.js.map +6 -0
  15. package/dist/{chunk-3D2KFKG2.js → chunk-GRYITZPG.js} +11 -9
  16. package/dist/chunk-GRYITZPG.js.map +6 -0
  17. package/dist/{chunk-2BPBQMH2.js → chunk-H422SRD3.js} +8 -8
  18. package/dist/chunk-JD6EJ3LI.js +18 -0
  19. package/dist/{chunk-Z7MKH66Z.js → chunk-MS2LQC2O.js} +236 -12
  20. package/dist/chunk-MS2LQC2O.js.map +6 -0
  21. package/dist/{chunk-Q6MMPKQA.js → chunk-PF4RFKX2.js} +13 -12
  22. package/dist/chunk-PF4RFKX2.js.map +6 -0
  23. package/dist/{chunk-PGP3QA6L.js → chunk-PKXTMC4J.js} +1351 -75
  24. package/dist/chunk-PKXTMC4J.js.map +6 -0
  25. package/dist/{chunk-M6AYND5G.js → chunk-U2ZY2NPQ.js} +16 -7
  26. package/dist/chunk-U2ZY2NPQ.js.map +6 -0
  27. package/dist/{chunk-DPVJEFKP.js → chunk-WOBRKNIA.js} +13 -13
  28. package/dist/{chunk-DPVJEFKP.js.map → chunk-WOBRKNIA.js.map} +1 -1
  29. package/dist/chunk-XXTAPZO4.js +34 -0
  30. package/dist/{chunk-VNOWPSE6.js → chunk-ZGRJJ6OW.js} +1226 -887
  31. package/dist/chunk-ZGRJJ6OW.js.map +6 -0
  32. package/dist/designer.d.ts +11 -3
  33. package/dist/designer.js +598 -390
  34. package/dist/designer.js.map +3 -3
  35. package/dist/engine.worker.bwip.js +51422 -0
  36. package/dist/engine.worker.bwip.js.map +6 -0
  37. package/dist/engine.worker.js +59582 -26
  38. package/dist/engine.worker.js.map +3 -3
  39. package/dist/peer/{chunk-WSNRD2AQ.js → chunk-3EYYRJR4.js} +13 -12
  40. package/dist/{chunk-Q6MMPKQA.js.map → peer/chunk-3EYYRJR4.js.map} +1 -1
  41. package/dist/peer/{chunk-TSC4RAH3.js → chunk-3XZY54LM.js} +1351 -75
  42. package/dist/peer/chunk-3XZY54LM.js.map +6 -0
  43. package/dist/peer/chunk-5RUNOIS7.js +33 -0
  44. package/dist/peer/chunk-5RUNOIS7.js.map +6 -0
  45. package/dist/peer/{chunk-6I2EAAVN.js → chunk-7IP67PA6.js} +47 -26
  46. package/dist/peer/chunk-7IP67PA6.js.map +6 -0
  47. package/dist/peer/{chunk-R4VX5UC7.js → chunk-A6UXBSTP.js} +8 -8
  48. package/dist/peer/{chunk-V42KN7HD.js → chunk-CFTFTV2O.js} +6 -6
  49. package/dist/peer/chunk-JQTRDHQP.js +866 -0
  50. package/dist/peer/chunk-JQTRDHQP.js.map +6 -0
  51. package/dist/peer/chunk-KD6CDYGE.js +5024 -0
  52. package/dist/peer/chunk-KD6CDYGE.js.map +6 -0
  53. package/dist/peer/chunk-MXR6JBMP.js +546 -0
  54. package/dist/peer/chunk-MXR6JBMP.js.map +6 -0
  55. package/dist/peer/chunk-N42DCZZA.js +378 -0
  56. package/dist/peer/chunk-N42DCZZA.js.map +6 -0
  57. package/dist/{chunk-6TPZ7G74.js → peer/chunk-RKFP7SDY.js} +292 -25
  58. package/dist/peer/chunk-RKFP7SDY.js.map +6 -0
  59. package/dist/peer/{chunk-BMAXIBP2.js → chunk-WABYQWMT.js} +13 -13
  60. package/dist/peer/{chunk-BMAXIBP2.js.map → chunk-WABYQWMT.js.map} +1 -1
  61. package/dist/peer/chunk-WVQQCD4M.js +14211 -0
  62. package/dist/peer/chunk-WVQQCD4M.js.map +6 -0
  63. package/dist/peer/chunk-XHCRHVRK.js +17 -0
  64. package/dist/peer/chunk-XHCRHVRK.js.map +6 -0
  65. package/dist/peer/{chunk-WQGENQZO.js → chunk-ZS3J4WBH.js} +11 -9
  66. package/dist/peer/chunk-ZS3J4WBH.js.map +6 -0
  67. package/dist/peer/designer.js +455 -247
  68. package/dist/peer/designer.js.map +3 -3
  69. package/dist/peer/engine.worker.bwip.js +51422 -0
  70. package/dist/peer/engine.worker.bwip.js.map +6 -0
  71. package/dist/peer/engine.worker.js +59582 -25
  72. package/dist/peer/engine.worker.js.map +3 -3
  73. package/dist/peer/viewer.js +16 -12
  74. package/dist/peer/viewer.js.map +1 -1
  75. package/dist/viewer.d.ts +2 -1
  76. package/dist/viewer.js +16 -12
  77. package/dist/viewer.js.map +1 -1
  78. package/package.json +3 -2
  79. package/dist/chunk-3D2KFKG2.js.map +0 -6
  80. package/dist/chunk-6TPZ7G74.js.map +0 -6
  81. package/dist/chunk-BRB34AJ2.js +0 -16
  82. package/dist/chunk-M6AYND5G.js.map +0 -6
  83. package/dist/chunk-NR2G4TMG.js.map +0 -6
  84. package/dist/chunk-PGP3QA6L.js.map +0 -6
  85. package/dist/chunk-S2IUUI6N.js.map +0 -6
  86. package/dist/chunk-ULKEEARQ.js +0 -553
  87. package/dist/chunk-ULKEEARQ.js.map +0 -6
  88. package/dist/chunk-VNOWPSE6.js.map +0 -6
  89. package/dist/chunk-Z7MKH66Z.js.map +0 -6
  90. package/dist/peer/chunk-2FZTYEDE.js +0 -15
  91. package/dist/peer/chunk-6I2EAAVN.js.map +0 -6
  92. package/dist/peer/chunk-BQFI3DHK.js.map +0 -6
  93. package/dist/peer/chunk-TSC4RAH3.js.map +0 -6
  94. package/dist/peer/chunk-WQGENQZO.js.map +0 -6
  95. package/dist/peer/chunk-WSNRD2AQ.js.map +0 -6
  96. /package/dist/{chunk-DXHLIJEY.js.map → chunk-47ZAKRVN.js.map} +0 -0
  97. /package/dist/{chunk-2BPBQMH2.js.map → chunk-H422SRD3.js.map} +0 -0
  98. /package/dist/{chunk-BRB34AJ2.js.map → chunk-JD6EJ3LI.js.map} +0 -0
  99. /package/dist/{peer/chunk-2FZTYEDE.js.map → chunk-XXTAPZO4.js.map} +0 -0
  100. /package/dist/peer/{chunk-R4VX5UC7.js.map → chunk-A6UXBSTP.js.map} +0 -0
  101. /package/dist/peer/{chunk-V42KN7HD.js.map → chunk-CFTFTV2O.js.map} +0 -0
@@ -0,0 +1,378 @@
1
+ import {
2
+ withDeadline
3
+ } from "../chunk-D2NTLAKL.js";
4
+ import {
5
+ isJustified,
6
+ needsTableData,
7
+ visualLines
8
+ } from "../chunk-F6RMRXIN.js";
9
+ import {
10
+ altOf,
11
+ boxDecor,
12
+ cellVisuals,
13
+ figurePicture,
14
+ figureSvg,
15
+ figures,
16
+ hexOrNull,
17
+ rasterize
18
+ } from "./chunk-MXR6JBMP.js";
19
+ import {
20
+ officeFamily
21
+ } from "./chunk-JQTRDHQP.js";
22
+
23
+ // src/exporters/docx.js
24
+ import { Zip, ZipDeflate, strToU8 } from "fflate";
25
+ var TW = 20;
26
+ var EMU = 12700;
27
+ var CONTENT_TYPES = `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
28
+ <Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/><Default Extension="xml" ContentType="application/xml"/><Default Extension="png" ContentType="image/png"/><Default Extension="jpeg" ContentType="image/jpeg"/><Default Extension="svg" ContentType="image/svg+xml"/><Override Part\
29
+ Name="/word/document.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"/><Override PartName="/word/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml"/><Override PartName="/docProps/core.xml" ContentType="application/vnd.openxmlformats-package.core-properties+xml"/></Types>`;
30
+ var RELS = `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
31
+ <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="word/document.xml"/><Relationship Id="rId2" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Target="docProps/core.xml"/></Relationships>`;
32
+ var XML_CHUNK = 4 * 1024 * 1024;
33
+ function slices(s, max) {
34
+ const out = [];
35
+ let i = 0;
36
+ while (s.length - i > max) {
37
+ const j = s.indexOf(">", i + max);
38
+ if (j < 0) break;
39
+ out.push(s.slice(i, j + 1));
40
+ i = j + 1;
41
+ }
42
+ out.push(s.slice(i));
43
+ return out;
44
+ }
45
+ var esc = (s) => String(s).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
46
+ var hex = (c) => {
47
+ const m = /^#?([0-9a-f]{6})$/i.exec(String(c || "").trim());
48
+ return m ? m[1].toUpperCase() : "000000";
49
+ };
50
+ function rPr(it) {
51
+ const f = String(it.font || "");
52
+ const family = officeFamily(f);
53
+ const deco = String(it.deco || "");
54
+ const script = it.rich?.s ? `<w:vertAlign w:val="${it.rich.s === "sup" ? "superscript" : "subscript"}"/>` : "";
55
+ const size = it.rich?.s ? it.rich.z : it.size;
56
+ return `<w:rPr><w:rFonts w:ascii="${esc(family)}" w:hAnsi="${esc(family)}" w:cs="${esc(family)}"/>${/bold/i.test(f) ? "<w:b/>" : ""}${/italic|oblique/i.test(f) ? "<w:i/>" : ""}${deco.includes("line-through") ? "<w:strike/>" : ""}<w:color w:val="${hex(it.color)}"/><w:sz w:val="${Math.round((size || 9) * 2)}"/>${deco.includes("underline") ? '<w:u w:val="single"/>' : ""}${script}</w:rPr>`;
57
+ }
58
+ function alignOf(it) {
59
+ if (isJustified(it)) return "both";
60
+ const c = it.clip;
61
+ if (!c || !it.lines.length) return "left";
62
+ const l = it.lines[0];
63
+ const left = l.x - c.x, right = c.x + c.w - (l.x + (l.w || 0));
64
+ if (Math.abs(left - right) < 2 && left > 4) return "center";
65
+ return right < left - 2 ? "right" : "left";
66
+ }
67
+ var edge = (tag, o, space = 0) => {
68
+ const color = hexOrNull(o.stroke);
69
+ if (!color) return "";
70
+ const val = !o.dash ? "single" : o.dash[0] <= 1.5 ? "dotted" : "dashed";
71
+ return `<w:${tag} w:val="${val}" w:sz="${Math.max(2, Math.min(96, Math.round((o.strokeWidth || 1) * 8)))}" w:space="${space}" w:color="${color}"/>`;
72
+ };
73
+ var pBorders = (d) => {
74
+ if (!d || !Object.keys(d.sides).length) return "";
75
+ const s = d.sides;
76
+ return `<w:pBdr>${s.top ? edge("top", s.top, 1) : ""}${s.left ? edge("left", s.left, 4) : ""}${s.bottom ? edge("bottom", s.bottom, 1) : ""}${s.right ? edge("right", s.right, 4) : ""}</w:pBdr>`;
77
+ };
78
+ var shading = (fill) => fill ? `<w:shd w:val="clear" w:color="auto" w:fill="${fill}"/>` : "";
79
+ var textOf = (it) => visualLines(it).join(" ");
80
+ var headingStyle = (it) => it.tag?.h >= 1 ? `<w:pStyle w:val="Heading${Math.min(6, Math.round(it.tag.h))}"/>` : "";
81
+ var para = (it, indentPt, decor) => `<w:p><w:pPr>${headingStyle(it)}${pBorders(decor)}${shading(decor?.fill)}<w:spacing w:before="0" w:after="${Math.round((it.size || 9) * 4)}"/>${indentPt > 0 ? `<w:ind w:left="${Math.round(indentPt * TW)}"/>` : ""}<w:jc w:val="${alignOf(it)}"/></w:pPr><w:r>${rPr(it)}<w:t xml:space="preserve">${esc(textOf(it))}</w:t></w:r></w:p>`;
82
+ function richPara(items, indentPt) {
83
+ items.sort((a, b) => a.rich.l - b.rich.l || a.lines[0].x - b.lines[0].x);
84
+ let runs = "", line = items[0].rich.l, prev = "";
85
+ for (const it of items) {
86
+ if (it.rich.l !== line) {
87
+ if (it.rich.br) runs += "<w:r><w:br/></w:r>";
88
+ else if (prev && !prev.endsWith(" ")) runs += `<w:r>${rPr(it)}<w:t xml:space="preserve"> </w:t></w:r>`;
89
+ line = it.rich.l;
90
+ }
91
+ prev = it.lines[0].text;
92
+ runs += `<w:r>${rPr(it)}<w:t xml:space="preserve">${esc(prev)}</w:t></w:r>`;
93
+ }
94
+ const jc = { center: "center", right: "right" }[items[0].rich.a] || "left";
95
+ return `<w:p><w:pPr>${headingStyle(items[0])}<w:spacing w:before="0" w:after="${Math.round((items[0].size || 9) * 4)}"/>${indentPt > 0 ? `<w:ind w:left="${Math.round(indentPt * TW)}"/>` : ""}<w:jc w:val="${jc}"/></w:pPr>${runs}</w:p>`;
96
+ }
97
+ function commonEdge(decors) {
98
+ const count = /* @__PURE__ */ new Map();
99
+ let sides = 0;
100
+ for (const d of decors) for (const s of ["top", "right", "bottom", "left"]) {
101
+ sides++;
102
+ const o = d?.sides[s];
103
+ if (!o) continue;
104
+ const k = edge("x", o);
105
+ const e = count.get(k) || { n: 0, o };
106
+ e.n++;
107
+ count.set(k, e);
108
+ }
109
+ const best = [...count.values()].sort((a, b) => b.n - a.n)[0];
110
+ return best && best.n * 2.5 >= sides ? best.o : null;
111
+ }
112
+ function table(cells, indentPt, pics) {
113
+ const cols = cells[0].cell.cols;
114
+ const rows = /* @__PURE__ */ new Map();
115
+ for (const it of cells) {
116
+ const r = rows.get(it.cell.row) || rows.set(it.cell.row, { id: it.cell.row, kind: it.cell.kind, y: it.lines[0]?.y ?? 0, byCol: /* @__PURE__ */ new Map() }).get(it.cell.row);
117
+ r.byCol.set(it.cell.col, it);
118
+ }
119
+ const common = commonEdge(cells.map((c) => c.decor));
120
+ const tblB = common ? ["top", "left", "bottom", "right", "insideH", "insideV"].map((s) => edge(s, common)).join("") : '<w:top w:val="nil"/><w:left w:val="nil"/><w:bottom w:val="nil"/><w:right w:val="nil"/><w:insideH w:val="nil"/><w:insideV w:val="nil"/>';
121
+ const cellB = (d) => {
122
+ if (!d) return "";
123
+ const s = d.sides;
124
+ const x = (s.top ? edge("top", s.top) : "") + (s.left ? edge("left", s.left) : "") + (s.bottom ? edge("bottom", s.bottom) : "") + (s.right ? edge("right", s.right) : "");
125
+ return x ? `<w:tcBorders>${x}</w:tcBorders>` : "";
126
+ };
127
+ const grid = cols.map((w) => `<w:gridCol w:w="${Math.round(w * TW)}"/>`).join("");
128
+ const vm = /* @__PURE__ */ new Map();
129
+ const out = [...rows.values()].sort((a, b) => a.y - b.y).map((r) => {
130
+ const tcs = [];
131
+ for (let c = 0; c < cols.length; ) {
132
+ const down = vm.get(c);
133
+ if (down && !r.byCol.has(c)) {
134
+ const w2 = cols.slice(c, c + down.span).reduce((s, x) => s + x, 0);
135
+ tcs.push(`<w:tc><w:tcPr><w:tcW w:w="${Math.round(w2 * TW)}" w:type="dxa"/>${down.span > 1 ? `<w:gridSpan w:val="${down.span}"/>` : ""}<w:vMerge/></w:tcPr><w:p/></w:tc>`);
136
+ if (--down.left <= 0) vm.delete(c);
137
+ c += down.span;
138
+ continue;
139
+ }
140
+ const it = r.byCol.get(c);
141
+ const rs = Math.max(1, it?.cell.rowSpan || 1);
142
+ if (rs > 1) vm.set(c, { left: rs - 1, span: Math.max(1, it.cell.span || 1) });
143
+ const span = Math.max(1, it?.cell.span || 1);
144
+ const w = cols.slice(c, c + span).reduce((s, x) => s + x, 0);
145
+ const bg = it?.cell.bg && /^#?[0-9a-f]{6}$/i.test(it.cell.bg) ? hex(it.cell.bg) : it?.decor?.fill || null;
146
+ const pic = pics.get(`${r.id}|${c}`) || "";
147
+ const text = it ? `<w:r>${rPr(it)}<w:t xml:space="preserve">${esc(textOf(it))}</w:t></w:r>` : "";
148
+ const p = it || pic ? `<w:p><w:pPr><w:spacing w:before="0" w:after="0"/><w:jc w:val="${it ? alignOf(it) : "left"}"/></w:pPr>${pic}${text}</w:p>` : "<w:p/>";
149
+ tcs.push(`<w:tc><w:tcPr><w:tcW w:w="${Math.round(w * TW)}" w:type="dxa"/>${span > 1 ? `<w:gridSpan w:val="${span}"/>` : ""}${rs > 1 ? '<w:vMerge w:val="restart"/>' : ""}${cellB(it?.decor)}${shading(bg)}</w:tcPr>${p}</w:tc>`);
150
+ c += span;
151
+ }
152
+ return `<w:tr>${r.kind === "header" ? "<w:trPr><w:tblHeader/></w:trPr>" : ""}${tcs.join("")}</w:tr>`;
153
+ }).join("");
154
+ return `<w:tbl><w:tblPr><w:tblW w:w="0" w:type="auto"/>${indentPt > 0 ? `<w:tblInd w:w="${Math.round(indentPt * TW)}" w:type="dxa"/>` : ""}<w:tblBorders>${tblB}</w:tblBorders><w:tblLayout w:type="fixed"/><w:tblCellMar><w:left w:w="60" w:type="dxa"/><w:right w:w="60" w:type="dxa"/></w:tblCellMar></w:tblPr><w:tblGrid>${grid}</w:tblGrid>${out}</w:tbl><w:p><w:pPr><w:spacing w:before="0" w:after="0"/\
155
+ ></w:pPr></w:p>`;
156
+ }
157
+ function layoutRow(row, margin) {
158
+ const cols = [], cells = [];
159
+ let x = row[0].it.clip.x;
160
+ for (const r of row) {
161
+ const c = r.it.clip;
162
+ if (c.x - x > 0.5) {
163
+ cols.push(c.x - x);
164
+ cells.push('<w:tc><w:tcPr><w:tcW w:w="' + Math.round((c.x - x) * TW) + '" w:type="dxa"/></w:tcPr><w:p/></w:tc>');
165
+ }
166
+ cols.push(c.w);
167
+ const d = r.decor;
168
+ const bdr = d && Object.keys(d.sides).length ? `<w:tcBorders>${["top", "left", "bottom", "right"].map((sd) => d.sides[sd] ? edge(sd, d.sides[sd]) : "").join("")}</w:tcBorders>` : "";
169
+ cells.push(`<w:tc><w:tcPr><w:tcW w:w="${Math.round(c.w * TW)}" w:type="dxa"/>${bdr}${shading(d?.fill)}</w:tcPr><w:p><w:pPr><w:spacing w:before="0" w:after="0"/><w:jc w:val="${alignOf(r.it)}"/></w:pPr><w:r>${rPr(r.it)}<w:t xml:space="preserve">${esc(textOf(r.it))}</w:t></w:r></w:p></w:tc>`);
170
+ x = c.x + c.w;
171
+ }
172
+ const ind = row[0].it.clip.x - margin;
173
+ return `<w:tbl><w:tblPr><w:tblW w:w="0" w:type="auto"/>${Math.abs(ind) > 0.5 ? `<w:tblInd w:w="${Math.round(ind * TW)}" w:type="dxa"/>` : ""}<w:tblBorders><w:top w:val="nil"/><w:left w:val="nil"/><w:bottom w:val="nil"/><w:right w:val="nil"/><w:insideH w:val="nil"/><w:insideV w:val="nil"/></w:tblBorders><w:tblLayout w:type="fixed"/><w:tblCellMar><w:left w:w="0" w:type="dxa"/><w:right w:w="0" w:ty\
174
+ pe="dxa"/></w:tblCellMar><w:tblLook w:val="0000"/></w:tblPr><w:tblGrid>${cols.map((w) => `<w:gridCol w:w="${Math.round(w * TW)}"/>`).join("")}</w:tblGrid><w:tr>${cells.join("")}</w:tr></w:tbl><w:p><w:pPr><w:spacing w:before="0" w:after="40"/><w:rPr><w:sz w:val="4"/></w:rPr></w:pPr></w:p>`;
175
+ }
176
+ function exportDocx(model, opt = {}) {
177
+ return withDeadline(
178
+ docxOf(model, opt),
179
+ /** @type {any} */
180
+ opt.timeoutMs
181
+ );
182
+ }
183
+ async function docxOf(model, opt) {
184
+ needsTableData(model, "Word");
185
+ const chunks = [];
186
+ await writeDocx(model.pages, model, opt, (u8) => {
187
+ chunks.push(u8);
188
+ });
189
+ const bytes = new Uint8Array(chunks.reduce((n, c) => n + c.length, 0));
190
+ let at = 0;
191
+ for (const c of chunks) {
192
+ bytes.set(c, at);
193
+ at += c.length;
194
+ }
195
+ return bytes;
196
+ }
197
+ async function writeDocx(pages, model, opt, put) {
198
+ const margin = 18;
199
+ const media = [];
200
+ let docPr = 0;
201
+ const addMedia = (bytes, ext) => {
202
+ const rid = `rIdm${media.length + 1}`;
203
+ media.push({ name: `image${media.length + 1}.${ext}`, bytes, rid });
204
+ return rid;
205
+ };
206
+ const pictureRun = (pic, alt) => {
207
+ const main = pic.png ? addMedia(pic.png, "png") : pic.jpeg ? addMedia(pic.jpeg, "jpeg") : pic.svg ? addMedia(strToU8(pic.svg), "svg") : null;
208
+ if (!main) return "";
209
+ const svg = pic.png && pic.svg ? addMedia(strToU8(pic.svg), "svg") : null;
210
+ const id = ++docPr, cx = Math.max(1, Math.round(pic.w * EMU)), cy = Math.max(1, Math.round(pic.h * EMU));
211
+ const name = `Picture ${id}`, descr = alt ? ` descr="${esc(alt)}"` : "";
212
+ const ext = svg ? `<a:extLst><a:ext uri="{96DAC541-7B7A-43D3-8B79-37D633B846F1}"><asvg:svgBlip xmlns:asvg="http://schemas.microsoft.com/office/drawing/2016/SVG/main" r:embed="${svg}"/></a:ext></a:extLst>` : "";
213
+ return `<w:r><w:drawing><wp:inline distT="0" distB="0" distL="0" distR="0"><wp:extent cx="${cx}" cy="${cy}"/><wp:docPr id="${id}" name="${name}"${descr}/><wp:cNvGraphicFramePr><a:graphicFrameLocks noChangeAspect="1"/></wp:cNvGraphicFramePr><a:graphic><a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/picture"><pic:pic><pic:nvPicPr><pic:cNvPr id="${id}" name="${name}"${descr}/\
214
+ ><pic:cNvPicPr/></pic:nvPicPr><pic:blipFill><a:blip r:embed="${main}">${ext}</a:blip><a:stretch><a:fillRect/></a:stretch></pic:blipFill><pic:spPr><a:xfrm><a:off x="0" y="0"/><a:ext cx="${cx}" cy="${cy}"/></a:xfrm><a:prstGeom prst="rect"><a:avLst/></a:prstGeom></pic:spPr></pic:pic></a:graphicData></a:graphic></wp:inline></w:drawing></w:r>`;
215
+ };
216
+ const picOpt = { fontStore: opt.fontStore, fetchImage: opt.fetchImage, rasterize: opt.rasterize };
217
+ const pageXml = async (pg) => {
218
+ const all = pg.items.flatMap((i) => i.t === "field" ? i.draw : [i]);
219
+ const figs = opt.figures === false ? [] : figures(all);
220
+ const used = /* @__PURE__ */ new Set();
221
+ for (const f of figs) for (let k = f.at; k <= f.last; k++) used.add(k);
222
+ const blocks = [];
223
+ const tables = /* @__PURE__ */ new Map();
224
+ const paras = /* @__PURE__ */ new Map();
225
+ all.forEach((it, i) => {
226
+ if (used.has(i) || it.t !== "text" || !it.lines?.length) return;
227
+ if (it.rich) {
228
+ const key = `${it.rich.id}${it.rich.p}`;
229
+ let b = paras.get(key);
230
+ if (!b) {
231
+ b = { kind: "rich", y: it.lines[0].y, x: it.lines[0].x, items: [] };
232
+ paras.set(key, b);
233
+ blocks.push(b);
234
+ }
235
+ b.items.push(it);
236
+ b.y = Math.min(b.y, it.lines[0].y);
237
+ b.x = Math.min(b.x, it.lines[0].x);
238
+ } else if (it.cell) {
239
+ const key = it.cell.table;
240
+ if (!tables.has(key)) {
241
+ const b2 = { kind: "table", key, y: it.lines[0].y, x: it.clip?.x ?? it.lines[0].x, cells: [] };
242
+ tables.set(key, b2);
243
+ blocks.push(b2);
244
+ }
245
+ const b = tables.get(key);
246
+ b.cells.push({ ...it, decor: boxDecor(all, i) });
247
+ b.y = Math.min(b.y, it.lines[0].y);
248
+ b.x = Math.min(b.x, it.clip?.x ?? it.lines[0].x);
249
+ } else blocks.push({ kind: "text", y: it.lines[0].y, x: it.lines[0].x, it, decor: boxDecor(all, i) });
250
+ });
251
+ const visuals = opt.figures === false ? /* @__PURE__ */ new Map() : cellVisuals(all, used, tables);
252
+ const frames = figs.filter((f) => f.tag.k === "shape" && f.items.length === 1 && f.items[0].t === "rect");
253
+ for (const b of blocks) {
254
+ const c = b.kind === "text" && b.it.clip;
255
+ const fr = c && frames.find((f) => {
256
+ const r2 = f.items[0];
257
+ return c.x >= r2.x - 0.5 && c.y >= r2.y - 0.5 && c.x + c.w <= r2.x + r2.w + 0.5 && c.y + c.h <= r2.y + r2.h + 0.5;
258
+ });
259
+ if (!fr) continue;
260
+ const r = fr.items[0];
261
+ fr.used = true;
262
+ b.decor = { fill: b.decor?.fill || hexOrNull(r.fill), sides: Object.keys(b.decor?.sides || {}).length ? b.decor.sides : {} };
263
+ }
264
+ for (const f of figs) if (!f.used) blocks.push({ kind: "fig", y: f.box.y, x: f.box.x, fig: f });
265
+ blocks.sort((a, b) => a.y - b.y || a.x - b.x);
266
+ let xml = "";
267
+ for (let bi = 0; bi < blocks.length; bi++) {
268
+ const b = blocks[bi];
269
+ if (b.kind === "fig") {
270
+ const row = [b];
271
+ while (blocks[bi + 1]?.kind === "fig" && Math.abs(blocks[bi + 1].y - b.y) < 4) row.push(blocks[++bi]);
272
+ row.sort((p, q) => p.x - q.x);
273
+ let runs = "", right = null;
274
+ for (const r of row) {
275
+ const pic = await figurePicture(r.fig, picOpt);
276
+ if (right != null && pic.x > right) runs += `<w:r><w:rPr><w:spacing w:val="${Math.min(31680, Math.max(0, Math.round((pic.x - right - 3) * TW)))}"/></w:rPr><w:t xml:space="preserve"> </w:t></w:r>`;
277
+ runs += pictureRun(pic, altOf(r.fig.tag));
278
+ right = pic.x + pic.w;
279
+ }
280
+ const first = row[0];
281
+ xml += `<w:p><w:pPr><w:spacing w:before="0" w:after="80"/>${Math.abs(first.x - margin) > 0.5 ? `<w:ind w:left="${Math.round(Math.max(-margin, first.x - margin) * TW)}"/>` : ""}</w:pPr>${runs}</w:p>`;
282
+ } else if (b.kind === "table") {
283
+ const pics = /* @__PURE__ */ new Map();
284
+ for (const [k, v] of visuals.get(b.key) || []) {
285
+ if (!v.box) continue;
286
+ const svg = figureSvg({ items: v.items, box: v.box }, opt.fontStore);
287
+ pics.set(k, pictureRun({ svg, png: await rasterize(svg, v.box.w, v.box.h, picOpt), w: v.box.w, h: v.box.h }, "Chart in a table cell"));
288
+ }
289
+ xml += table(b.cells, b.x - margin, pics);
290
+ } else if (b.kind === "rich") xml += richPara(b.items, b.x - margin);
291
+ else {
292
+ const row = [b];
293
+ const top = (t) => t.it.clip?.y ?? t.y - t.it.size;
294
+ while (blocks[bi + 1]?.kind === "text" && Math.abs(top(blocks[bi + 1]) - top(b)) < 3 && blocks[bi + 1].it.clip && b.it.clip) row.push(blocks[++bi]);
295
+ row.sort((p, q) => p.it.clip.x - q.it.clip.x);
296
+ const apart = row.every((r, k) => k === 0 || r.it.clip.x >= row[k - 1].it.clip.x + row[k - 1].it.clip.w - 0.5);
297
+ if (row.length > 1 && apart) xml += layoutRow(row, margin);
298
+ else for (const r of row) xml += para(r.it, (r.it.clip?.x ?? r.x) - margin, r.decor);
299
+ }
300
+ }
301
+ return xml;
302
+ };
303
+ const M = margin * TW, V = 36 * TW;
304
+ const sectPr = (pg) => {
305
+ const W = Math.round((pg.width ?? model.width) * TW), H = Math.round((pg.height ?? model.height) * TW);
306
+ return `<w:sectPr><w:pgSz w:w="${W}" w:h="${H}"${W > H ? ' w:orient="landscape"' : ""}/><w:pgMar w:top="${V}" w:right="${M}" w:bottom="${V}" w:left="${M}" w:header="0" w:footer="0" w:gutter="0"/></w:sectPr>`;
307
+ };
308
+ const sizeOf = (pg) => `${pg.width ?? model.width}x${pg.height ?? model.height}`;
309
+ let zipOut = [], zerr = null;
310
+ const zip = new Zip((err, data) => {
311
+ if (err) zerr = err;
312
+ else zipOut.push(data);
313
+ });
314
+ const drain = async () => {
315
+ if (zerr) throw zerr;
316
+ const o = zipOut;
317
+ zipOut = [];
318
+ for (const c of o) await put(c);
319
+ };
320
+ const file = async (name, bytes) => {
321
+ const e = new ZipDeflate(name, { level: 6 });
322
+ zip.add(e);
323
+ e.push(bytes, true);
324
+ await drain();
325
+ };
326
+ const doc = new ZipDeflate("word/document.xml", { level: 6 });
327
+ const max = opt.xmlChunk || XML_CHUNK;
328
+ let buf = "";
329
+ const write = async (str) => {
330
+ for (const p of slices(str, max)) {
331
+ if (buf.length + p.length > max) {
332
+ doc.push(strToU8(buf), false);
333
+ buf = "";
334
+ await drain();
335
+ }
336
+ buf += p;
337
+ }
338
+ };
339
+ await file("[Content_Types].xml", strToU8(CONTENT_TYPES));
340
+ await file("_rels/.rels", strToU8(RELS));
341
+ zip.add(doc);
342
+ await write(`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
343
+ <w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:pic="http://schemas.openxmlformats.org/drawingml/2006/picture"><w:body>`);
344
+ let prev = null;
345
+ for await (const pg of pages) {
346
+ if (prev) await write(sizeOf(pg) !== sizeOf(prev) ? `<w:p><w:pPr>${sectPr(prev)}</w:pPr></w:p>` : '<w:p><w:pPr><w:pageBreakBefore/><w:spacing w:before="0" w:after="0" w:line="20" w:lineRule="exact"/><w:rPr><w:sz w:val="2"/></w:rPr></w:pPr></w:p>');
347
+ await write(await pageXml(pg));
348
+ prev = pg;
349
+ }
350
+ await write(`${sectPr(prev || {})}</w:body></w:document>`);
351
+ doc.push(strToU8(buf), true);
352
+ buf = "";
353
+ await drain();
354
+ const lang = `<w:lang w:val="${esc(opt.lang || model.locale || "en-US")}"/>`;
355
+ const headings = [28, 24, 22, 20, 18, 18].map((sz, i) => `<w:style w:type="paragraph" w:styleId="Heading${i + 1}"><w:name w:val="heading ${i + 1}"/><w:basedOn w:val="Normal"/><w:next w:val="Normal"/><w:qFormat/><w:pPr><w:keepNext/><w:outlineLvl w:val="${i}"/></w:pPr><w:rPr><w:b/><w:sz w:val="${sz}"/></w:rPr></w:style>`).join("");
356
+ const styles = `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
357
+ <w:styles xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"><w:docDefaults><w:rPrDefault><w:rPr><w:rFonts w:ascii="Inter" w:hAnsi="Inter" w:cs="Inter"/><w:sz w:val="18"/>${lang}</w:rPr></w:rPrDefault><w:pPrDefault><w:pPr><w:spacing w:after="0" w:line="240" w:lineRule="auto"/></w:pPr></w:pPrDefault></w:docDefaults><w:style w:type="paragraph" w:default="1" w:styleId="Normal"><w:\
358
+ name w:val="Normal"/></w:style>${headings}</w:styles>`;
359
+ const now = (/* @__PURE__ */ new Date()).toISOString().replace(/\.\d{3}Z$/, "Z");
360
+ const core = `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
361
+ <cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><dc:title>${esc(opt.title || model.name || "Report")}</dc:title>${opt.author ? `<dc:creator>${esc(opt.author)}</dc:creator>` : ""}<dcterms:created xsi:type="d\
362
+ cterms:W3CDTF">${now}</dcterms:created></cp:coreProperties>`;
363
+ await file("word/_rels/document.xml.rels", strToU8(`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
364
+ <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/>${media.map((m) => `<Relationship Id="${m.rid}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="media/${m.name}"/>`).join("")}</Relationships>`));
365
+ await file("word/styles.xml", strToU8(styles));
366
+ await file("docProps/core.xml", strToU8(core));
367
+ for (const m of media) await file(`word/media/${m.name}`, m.bytes);
368
+ zip.end();
369
+ await drain();
370
+ }
371
+
372
+ export {
373
+ slices,
374
+ alignOf,
375
+ exportDocx,
376
+ writeDocx
377
+ };
378
+ //# sourceMappingURL=chunk-N42DCZZA.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/exporters/docx.js"],
4
+ "mappings": "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",
5
+ "names": ["w", "b", "r"]
6
+ }