@agile-team/mach-report 0.4.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.
Files changed (85) hide show
  1. package/dist/builder/template-builder.d.ts +53 -0
  2. package/dist/builder/template-builder.js +153 -0
  3. package/dist/builder/template-builder.js.map +1 -0
  4. package/dist/compat/jh4j-template.d.ts +12 -0
  5. package/dist/compat/jh4j-template.js +196 -0
  6. package/dist/compat/jh4j-template.js.map +1 -0
  7. package/dist/defaults.d.ts +27 -0
  8. package/dist/defaults.js +28 -0
  9. package/dist/defaults.js.map +1 -0
  10. package/dist/index.d.ts +13 -0
  11. package/dist/index.js +14 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/layout/paginate.d.ts +51 -0
  14. package/dist/layout/paginate.js +197 -0
  15. package/dist/layout/paginate.js.map +1 -0
  16. package/dist/layout/textwrap.d.ts +36 -0
  17. package/dist/layout/textwrap.js +173 -0
  18. package/dist/layout/textwrap.js.map +1 -0
  19. package/dist/manager/api.d.ts +45 -0
  20. package/dist/manager/api.js +101 -0
  21. package/dist/manager/api.js.map +1 -0
  22. package/dist/manager/index.d.ts +2 -0
  23. package/dist/manager/index.js +3 -0
  24. package/dist/manager/index.js.map +1 -0
  25. package/dist/manager/types.d.ts +50 -0
  26. package/dist/manager/types.js +8 -0
  27. package/dist/manager/types.js.map +1 -0
  28. package/dist/manager.d.ts +5 -0
  29. package/dist/manager.js +6 -0
  30. package/dist/manager.js.map +1 -0
  31. package/dist/pdf/font-loader.d.ts +5 -0
  32. package/dist/pdf/font-loader.js +84 -0
  33. package/dist/pdf/font-loader.js.map +1 -0
  34. package/dist/pdf/index.d.ts +2 -0
  35. package/dist/pdf/index.js +3 -0
  36. package/dist/pdf/index.js.map +1 -0
  37. package/dist/pdf/render-pdf.d.ts +19 -0
  38. package/dist/pdf/render-pdf.js +284 -0
  39. package/dist/pdf/render-pdf.js.map +1 -0
  40. package/dist/pdf.d.ts +6 -0
  41. package/dist/pdf.js +7 -0
  42. package/dist/pdf.js.map +1 -0
  43. package/dist/render/canvas.d.ts +61 -0
  44. package/dist/render/canvas.js +402 -0
  45. package/dist/render/canvas.js.map +1 -0
  46. package/dist/render/dom.d.ts +10 -0
  47. package/dist/render/dom.js +311 -0
  48. package/dist/render/dom.js.map +1 -0
  49. package/dist/render/grid-geometry.d.ts +41 -0
  50. package/dist/render/grid-geometry.js +131 -0
  51. package/dist/render/grid-geometry.js.map +1 -0
  52. package/dist/render/style.d.ts +40 -0
  53. package/dist/render/style.js +39 -0
  54. package/dist/render/style.js.map +1 -0
  55. package/dist/render/window.d.ts +23 -0
  56. package/dist/render/window.js +58 -0
  57. package/dist/render/window.js.map +1 -0
  58. package/dist/schema/render-plan.d.ts +96 -0
  59. package/dist/schema/render-plan.js +25 -0
  60. package/dist/schema/render-plan.js.map +1 -0
  61. package/dist/schema/validate.d.ts +15 -0
  62. package/dist/schema/validate.js +129 -0
  63. package/dist/schema/validate.js.map +1 -0
  64. package/dist/sql/ast-check.d.ts +14 -0
  65. package/dist/sql/ast-check.js +44 -0
  66. package/dist/sql/ast-check.js.map +1 -0
  67. package/dist/sql/compile.d.ts +31 -0
  68. package/dist/sql/compile.js +145 -0
  69. package/dist/sql/compile.js.map +1 -0
  70. package/dist/sql/expr.d.ts +21 -0
  71. package/dist/sql/expr.js +123 -0
  72. package/dist/sql/expr.js.map +1 -0
  73. package/dist/sql/index.d.ts +4 -0
  74. package/dist/sql/index.js +5 -0
  75. package/dist/sql/index.js.map +1 -0
  76. package/dist/sql/tokenizer.d.ts +25 -0
  77. package/dist/sql/tokenizer.js +124 -0
  78. package/dist/sql/tokenizer.js.map +1 -0
  79. package/dist/sql.d.ts +5 -0
  80. package/dist/sql.js +6 -0
  81. package/dist/sql.js.map +1 -0
  82. package/dist/units.d.ts +11 -0
  83. package/dist/units.js +26 -0
  84. package/dist/units.js.map +1 -0
  85. package/package.json +42 -0
@@ -0,0 +1,402 @@
1
+ import { isRichText } from "../schema/render-plan";
2
+ import { resolveGridLayout } from "./grid-geometry";
3
+ import { wrapText } from "../layout/textwrap";
4
+ import { heuristicMeasurer } from "../layout/textwrap";
5
+ import { ptToPx } from "../units";
6
+ import { DEFAULT_FONT_PT, DEFAULT_TEXT_COLOR, LINE_HEIGHT } from "../defaults";
7
+ import { resolveBoxBorders, resolveFontSize, resolveLineHeight, resolveStroke, resolveTextColor } from "./style";
8
+ import { computePageWindow } from "./window";
9
+ const PX_PER_MM_BASE = 96 / 25.4;
10
+ export function measurePageSizePx(page, dpi = 96) {
11
+ const pxPerMm = (dpi / 96) * PX_PER_MM_BASE;
12
+ return {
13
+ widthPx: Math.max(1, Math.round(page.pageWidthMm * pxPerMm)),
14
+ heightPx: Math.max(1, Math.round(page.pageHeightMm * pxPerMm))
15
+ };
16
+ }
17
+ function createPageCanvas(page, dpr, dpi) {
18
+ const canvas = document.createElement("canvas");
19
+ const { widthPx: w, heightPx: h } = measurePageSizePx(page, dpi);
20
+ canvas.width = Math.round(w * dpr);
21
+ canvas.height = Math.round(h * dpr);
22
+ canvas.style.width = `${w}px`;
23
+ canvas.style.height = `${h}px`;
24
+ const ctx = canvas.getContext("2d");
25
+ if (!ctx) {
26
+ throw new Error("当前环境不支持 Canvas 2D(测试需真浏览器,见 e2e/canvas.spec.ts)");
27
+ }
28
+ ctx.scale(dpr, dpr);
29
+ ctx.fillStyle = "#ffffff";
30
+ ctx.fillRect(0, 0, w, h);
31
+ return { canvas, ctx };
32
+ }
33
+ /** pt→px 换算(与 DOM 后端 units.ptToPx 同一真相源),供单测直接断言 */
34
+ export function planFontSizePx(style, dpi = 96) {
35
+ return resolveFontSize(style, dpi).fontSizePx;
36
+ }
37
+ function drawTextBlock(ctx, spec, x, y, w, h, fontFamily, verticalAlign = "top") {
38
+ ctx.font = `${spec.bold ? "bold " : ""}${spec.fontSizePx}px ${fontFamily}`;
39
+ ctx.fillStyle = spec.color;
40
+ ctx.textBaseline = "alphabetic";
41
+ const lineH = spec.fontSizePx * spec.lineHeight;
42
+ const lines = spec.text === "" ? [""] : spec.text.split("\n");
43
+ const totalH = lines.length * lineH;
44
+ let topY = y;
45
+ if (verticalAlign === "middle")
46
+ topY = y + (h - totalH) / 2;
47
+ else if (verticalAlign === "bottom")
48
+ topY = y + h - totalH;
49
+ lines.forEach((line, i) => {
50
+ ctx.textAlign = spec.align === "center" ? "center" : spec.align === "right" ? "right" : "left";
51
+ const tx = spec.align === "center" ? x + w / 2 : spec.align === "right" ? x + w : x;
52
+ ctx.fillText(line, tx, topY + i * lineH + spec.fontSizePx * 0.8, w);
53
+ });
54
+ ctx.textAlign = "left";
55
+ }
56
+ function drawGrid(ctx, grid, comp, x, y, w, h, pxPerMm, dpi, fontFamily, measurer) {
57
+ const layout = resolveGridLayout(grid, w / pxPerMm, h / pxPerMm);
58
+ const borders = resolveBoxBorders(comp.style);
59
+ const stroke = resolveStroke(comp.style);
60
+ // 单元格底色(独立于边框开关)
61
+ for (const box of layout.cells) {
62
+ const bg = box.cell.style?.backgroundColor;
63
+ if (bg) {
64
+ ctx.fillStyle = bg;
65
+ ctx.fillRect(x + box.xMm * pxPerMm, y + box.yMm * pxPerMm, box.widthMm * pxPerMm, box.heightMm * pxPerMm);
66
+ }
67
+ }
68
+ if (borders.inner) {
69
+ ctx.strokeStyle = stroke.color;
70
+ ctx.lineWidth = ptToPx(stroke.widthPt, dpi);
71
+ // 内部线段(span 感知:合并单元格中间无线)
72
+ for (const e of layout.edges) {
73
+ ctx.beginPath();
74
+ if (e.kind === "v") {
75
+ ctx.moveTo(x + e.pos * pxPerMm, y + e.from * pxPerMm);
76
+ ctx.lineTo(x + e.pos * pxPerMm, y + e.to * pxPerMm);
77
+ }
78
+ else {
79
+ ctx.moveTo(x + e.from * pxPerMm, y + e.pos * pxPerMm);
80
+ ctx.lineTo(x + e.to * pxPerMm, y + e.pos * pxPerMm);
81
+ }
82
+ ctx.stroke();
83
+ }
84
+ // 外框(四边独立开关)
85
+ ctx.beginPath();
86
+ if (borders.top) {
87
+ ctx.moveTo(x, y);
88
+ ctx.lineTo(x + w, y);
89
+ }
90
+ if (borders.right) {
91
+ ctx.moveTo(x + w, y);
92
+ ctx.lineTo(x + w, y + h);
93
+ }
94
+ if (borders.bottom) {
95
+ ctx.moveTo(x + w, y + h);
96
+ ctx.lineTo(x, y + h);
97
+ }
98
+ if (borders.left) {
99
+ ctx.moveTo(x, y + h);
100
+ ctx.lineTo(x, y);
101
+ }
102
+ ctx.stroke();
103
+ }
104
+ for (const box of layout.cells) {
105
+ const text = typeof box.cell.text === "string" ? box.cell.text : "";
106
+ if (!text)
107
+ continue;
108
+ const st = box.cell.style;
109
+ const fontSizePt = st?.fontSize ?? DEFAULT_FONT_PT;
110
+ const lines = wrapText(text, box.widthMm - 1, { fontSizePt }, measurer).join("\n");
111
+ drawTextBlock(ctx, {
112
+ text: lines,
113
+ fontSizePx: resolveFontSize(st, dpi).fontSizePx,
114
+ bold: st?.bold ?? false,
115
+ color: st?.color ?? resolveTextColor(comp.style, DEFAULT_TEXT_COLOR),
116
+ align: st?.align ?? "left",
117
+ lineHeight: LINE_HEIGHT
118
+ }, x + (box.xMm + 0.5) * pxPerMm, y + box.yMm * pxPerMm, Math.max(0, (box.widthMm - 1) * pxPerMm), box.heightMm * pxPerMm, fontFamily, st?.verticalAlign ?? "middle");
119
+ }
120
+ }
121
+ function drawComponent(ctx, comp, pxPerMm, dpi, fontFamily, measurer) {
122
+ const x = comp.leftMm * pxPerMm;
123
+ const y = comp.topMm * pxPerMm;
124
+ const w = comp.widthMm * pxPerMm;
125
+ const h = comp.heightMm * pxPerMm;
126
+ const s = comp.style ?? {};
127
+ if (comp.grid) {
128
+ drawGrid(ctx, comp.grid, comp, x, y, w, h, pxPerMm, dpi, fontFamily, measurer);
129
+ return;
130
+ }
131
+ switch (comp.kind) {
132
+ case "text": {
133
+ const fontSizePt = s.fontSize ?? DEFAULT_FONT_PT;
134
+ const text = isRichText(comp)
135
+ ? comp.richParagraphs
136
+ .map((p) => (p.segments ?? []).map((seg) => seg.text ?? seg.field ?? "").join(""))
137
+ .join("\n")
138
+ : Array.isArray(comp.lines) && comp.lines.length > 0
139
+ ? comp.lines.join("\n")
140
+ : wrapText(comp.text ?? "", comp.widthMm, { fontSizePt }, measurer).join("\n");
141
+ drawTextBlock(ctx, {
142
+ text,
143
+ fontSizePx: resolveFontSize(s, dpi).fontSizePx,
144
+ bold: s.bold ?? false,
145
+ color: resolveTextColor(s),
146
+ align: s.align ?? "left",
147
+ lineHeight: resolveLineHeight(s)
148
+ }, x, y, w, h, fontFamily, s.verticalAlign);
149
+ break;
150
+ }
151
+ case "rect": {
152
+ const stroke = resolveStroke(s);
153
+ const borders = resolveBoxBorders(s);
154
+ if (s.backgroundColor) {
155
+ ctx.fillStyle = s.backgroundColor;
156
+ ctx.fillRect(x, y, w, h);
157
+ }
158
+ if (borders.inner) {
159
+ ctx.strokeStyle = stroke.color;
160
+ ctx.lineWidth = ptToPx(stroke.widthPt, dpi);
161
+ ctx.beginPath();
162
+ if (borders.top) {
163
+ ctx.moveTo(x, y);
164
+ ctx.lineTo(x + w, y);
165
+ }
166
+ if (borders.right) {
167
+ ctx.moveTo(x + w, y);
168
+ ctx.lineTo(x + w, y + h);
169
+ }
170
+ if (borders.bottom) {
171
+ ctx.moveTo(x + w, y + h);
172
+ ctx.lineTo(x, y + h);
173
+ }
174
+ if (borders.left) {
175
+ ctx.moveTo(x, y + h);
176
+ ctx.lineTo(x, y);
177
+ }
178
+ ctx.stroke();
179
+ }
180
+ break;
181
+ }
182
+ case "line": {
183
+ const stroke = resolveStroke({ ...s, borderColor: s.lineColor ?? s.borderColor });
184
+ ctx.strokeStyle = stroke.color;
185
+ ctx.lineWidth = ptToPx(stroke.widthPt, dpi);
186
+ ctx.beginPath();
187
+ ctx.moveTo(x, y + h / 2);
188
+ ctx.lineTo(x + w, y + h / 2);
189
+ ctx.stroke();
190
+ break;
191
+ }
192
+ case "ellipse": {
193
+ const stroke = resolveStroke(s);
194
+ ctx.strokeStyle = stroke.color;
195
+ ctx.lineWidth = ptToPx(stroke.widthPt, dpi);
196
+ if (s.backgroundColor) {
197
+ ctx.fillStyle = s.backgroundColor;
198
+ ctx.beginPath();
199
+ ctx.ellipse(x + w / 2, y + h / 2, w / 2, h / 2, 0, 0, Math.PI * 2);
200
+ ctx.fill();
201
+ }
202
+ ctx.beginPath();
203
+ ctx.ellipse(x + w / 2, y + h / 2, w / 2, h / 2, 0, 0, Math.PI * 2);
204
+ ctx.stroke();
205
+ break;
206
+ }
207
+ default:
208
+ break;
209
+ }
210
+ }
211
+ /**
212
+ * RenderPlan → Canvas 位图页(顶点原点坐标系,与 DOM/PDF 一致)。
213
+ *
214
+ * ⚠️ 内存模型:A4 @dpr2 ≈ 14MB/页,全量渲染 100 页 ≈ 1.4GB。
215
+ * 大报表必须使用 createCanvasPager(窗口化 + 画布池 + 分帧渲染),
216
+ * 本函数适合页数少或已指定 start/end 区间的场景。
217
+ */
218
+ export function renderPlanToCanvas(plan, options = {}) {
219
+ const dpr = options.dpr ?? (typeof devicePixelRatio === "number" ? devicePixelRatio : 1);
220
+ const dpi = options.dpi ?? 96;
221
+ const pxPerMm = (dpi / 96) * PX_PER_MM_BASE;
222
+ const fontFamily = options.fontFamily ?? '"Microsoft YaHei", sans-serif';
223
+ const measurer = options.measurer ?? heuristicMeasurer;
224
+ const start = Math.max(0, options.start ?? 0);
225
+ const end = Math.min(plan.pages.length - 1, options.end ?? plan.pages.length - 1);
226
+ const canvases = [];
227
+ for (let i = start; i <= end; i++) {
228
+ const page = plan.pages[i];
229
+ const { canvas, ctx } = createPageCanvas(page, dpr, dpi);
230
+ for (const comp of page.components) {
231
+ drawComponent(ctx, comp, pxPerMm, dpi, fontFamily, measurer);
232
+ }
233
+ canvases.push(canvas);
234
+ }
235
+ return { canvases };
236
+ }
237
+ /**
238
+ * Canvas 虚拟化分页器(大报表专用):
239
+ * - 视口窗口化:只绘制窗口内页(computePageWindow 与 DOM 后端共用)
240
+ * - 画布池:固定数量 canvas 复用重绘,滚动零新增位图
241
+ * - 分帧:每帧最多 pagesPerFrame 页,滚动期间不产生长任务
242
+ *
243
+ * 内存从 O(总页数) 降到 O(窗口+2×overscan)。
244
+ */
245
+ export function createCanvasPager(plan, options = {}) {
246
+ const dpr = options.dpr ?? (typeof devicePixelRatio === "number" ? devicePixelRatio : 1);
247
+ const dpi = options.dpi ?? 96;
248
+ const pxPerMm = (dpi / 96) * PX_PER_MM_BASE;
249
+ const fontFamily = options.fontFamily ?? '"Microsoft YaHei", sans-serif';
250
+ const measurer = options.measurer ?? heuristicMeasurer;
251
+ const overscan = options.overscan ?? 1;
252
+ const gapPx = options.gapPx ?? 18;
253
+ const pagesPerFrame = options.pagesPerFrame ?? 1;
254
+ const pageHeightsPx = plan.pages.map((p) => p.pageHeightMm * pxPerMm);
255
+ const maxPageWidthPx = Math.max(1, ...plan.pages.map((p) => p.pageWidthMm * pxPerMm));
256
+ const windowState = { start: 0, end: -1 };
257
+ let viewport = null;
258
+ let contentEl = null;
259
+ let topSpacer = null;
260
+ let bottomSpacer = null;
261
+ /** 页槽:固定数量,与窗口内页一一对应(复用 canvas 位图) */
262
+ let slots = [];
263
+ let raf = 0;
264
+ let queued = [];
265
+ function ensureLayout() {
266
+ const vp = viewport;
267
+ vp.innerHTML = "";
268
+ contentEl = document.createElement("div");
269
+ contentEl.style.cssText = `width:${maxPageWidthPx}px;margin:0 auto;`;
270
+ topSpacer = document.createElement("div");
271
+ bottomSpacer = document.createElement("div");
272
+ contentEl.appendChild(topSpacer);
273
+ slots = [];
274
+ const slotCount = Math.min(plan.pages.length, 3 + overscan * 2);
275
+ for (let i = 0; i < slotCount; i++) {
276
+ const slot = document.createElement("div");
277
+ slot.style.cssText = `margin:0 auto ${gapPx}px;box-shadow:0 2px 8px rgba(0,0,0,.35);background:#fff;`;
278
+ contentEl.appendChild(slot);
279
+ slots.push(slot);
280
+ }
281
+ contentEl.appendChild(bottomSpacer);
282
+ vp.appendChild(contentEl);
283
+ }
284
+ function drawPageInto(slot, pageIndex) {
285
+ const page = plan.pages[pageIndex];
286
+ const { widthPx: w, heightPx: h } = measurePageSizePx(page, dpi);
287
+ // 画布池:槽位内已有 canvas 则复用(重设尺寸即清空位图,避免重复分配大块内存)
288
+ let canvas = slot.firstElementChild;
289
+ if (!canvas || canvas.tagName !== "CANVAS") {
290
+ canvas = document.createElement("canvas");
291
+ slot.innerHTML = "";
292
+ slot.appendChild(canvas);
293
+ }
294
+ canvas.width = Math.round(w * dpr);
295
+ canvas.height = Math.round(h * dpr);
296
+ canvas.style.width = `${w}px`;
297
+ canvas.style.height = `${h}px`;
298
+ const ctx = canvas.getContext("2d");
299
+ if (!ctx)
300
+ return;
301
+ ctx.setTransform(1, 0, 0, 1, 0, 0);
302
+ ctx.scale(dpr, dpr);
303
+ ctx.fillStyle = "#ffffff";
304
+ ctx.fillRect(0, 0, w, h);
305
+ for (const comp of page.components) {
306
+ drawComponent(ctx, comp, pxPerMm, dpi, fontFamily, measurer);
307
+ }
308
+ canvas.dataset.canvasPage = String(pageIndex);
309
+ slot.style.height = `${h}px`;
310
+ slot.style.width = `${w}px`;
311
+ }
312
+ function applyWindow(win) {
313
+ windowState.start = win.start;
314
+ windowState.end = win.end;
315
+ topSpacer.style.height = `${win.start * gapPx + pageHeightsPx.slice(0, win.start).reduce((s, h) => s + h, 0)}px`;
316
+ const below = plan.pages.length - 1 - win.end;
317
+ bottomSpacer.style.height = `${below * gapPx + pageHeightsPx.slice(win.end + 1).reduce((s, h) => s + h, 0)}px`;
318
+ // 窗口外槽位隐藏(避免空槽参与布局压矮滚动区),窗口内槽位先按页高占位
319
+ // (画布分帧绘完前布局即稳定,滚动高度不抖动)
320
+ const used = win.end - win.start + 1;
321
+ slots.forEach((slot, i) => {
322
+ if (i < used) {
323
+ slot.style.display = "";
324
+ const pageIndex = win.start + i;
325
+ slot.style.height = `${pageHeightsPx[pageIndex] ?? 0}px`;
326
+ }
327
+ else {
328
+ slot.style.display = "none";
329
+ }
330
+ });
331
+ // 收集待渲染页(跳过已就位的槽位),分帧消费
332
+ queued = [];
333
+ for (let i = win.start; i <= win.end; i++) {
334
+ const slot = slots[i - win.start];
335
+ if (!slot)
336
+ continue;
337
+ const already = slot.firstElementChild;
338
+ if (already?.dataset?.canvasPage !== String(i))
339
+ queued.push(i);
340
+ }
341
+ scheduleFrame();
342
+ }
343
+ function scheduleFrame() {
344
+ if (raf || queued.length === 0)
345
+ return;
346
+ raf = requestAnimationFrame(() => {
347
+ raf = 0;
348
+ let budget = Math.max(1, pagesPerFrame);
349
+ while (queued.length > 0 && budget-- > 0) {
350
+ const pageIndex = queued.shift();
351
+ const slot = slots[pageIndex - windowState.start];
352
+ if (slot)
353
+ drawPageInto(slot, pageIndex);
354
+ }
355
+ if (queued.length > 0)
356
+ scheduleFrame();
357
+ });
358
+ }
359
+ function onScroll() {
360
+ if (raf)
361
+ return;
362
+ raf = requestAnimationFrame(() => {
363
+ raf = 0;
364
+ const vp = viewport;
365
+ const win = computePageWindow({
366
+ pageHeightsPx,
367
+ viewportHeightPx: vp.clientHeight,
368
+ scrollTopPx: vp.scrollTop,
369
+ overscan,
370
+ gapPx
371
+ });
372
+ // 窗口未变(仍在缓冲内)则只继续消费队列
373
+ if (win.start !== windowState.start || win.end !== windowState.end) {
374
+ applyWindow(win);
375
+ }
376
+ else {
377
+ scheduleFrame();
378
+ }
379
+ });
380
+ }
381
+ return {
382
+ attach(vp) {
383
+ viewport = vp;
384
+ ensureLayout();
385
+ vp.addEventListener("scroll", onScroll, { passive: true });
386
+ onScroll();
387
+ },
388
+ destroy() {
389
+ if (raf)
390
+ cancelAnimationFrame(raf);
391
+ raf = 0;
392
+ viewport?.removeEventListener("scroll", onScroll);
393
+ queued = [];
394
+ contentEl?.remove();
395
+ viewport = null;
396
+ },
397
+ window() {
398
+ return { ...windowState };
399
+ }
400
+ };
401
+ }
402
+ //# sourceMappingURL=canvas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvas.js","sourceRoot":"","sources":["../../src/render/canvas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { PlanComponent, PlanPage, RenderPlan } from "../schema/render-plan";
2
+ export interface RenderOptions {
3
+ dpi?: number;
4
+ classNames?: Partial<Record<ClassKey, string>>;
5
+ }
6
+ export type ClassKey = "root" | "page" | "comp" | "text" | "lines" | "line" | "rich" | "paragraph" | "segment" | "image" | "shape" | "grid" | "row" | "cell" | "unknown";
7
+ export declare function classOf(key: ClassKey, options?: RenderOptions): string;
8
+ export declare function renderComponent(comp: PlanComponent, dpi: number, options: RenderOptions, doc: Document): HTMLElement;
9
+ export declare function renderPage(page: PlanPage, dpi: number, options: RenderOptions, doc: Document): HTMLElement;
10
+ export declare function renderPlan(plan: RenderPlan, doc: Document, options?: RenderOptions): HTMLElement;